metis-edf-4.1/0000755000372500037370000000000011307217731013530 5ustar courtoisastergrpmetis-edf-4.1/Doc/0000755000372500037370000000000011115455203014230 5ustar courtoisastergrpmetis-edf-4.1/Doc/manual.ps0000644000372500037370000221604511115455203016063 0ustar courtoisastergrp%!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: manual.dvi %%Pages: 44 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: Helvetica-Bold MTSYN AvantGarde-Demi Helvetica %%+ Times-Roman Times-Italic Times-Bold Helvetica-Narrow-Bold %%+ Helvetica-Narrow ZapfDingbats RMTMI Courier Times-BoldItalic %%+ Helvetica-Narrow-Oblique Courier-Oblique MTEX %%DocumentPaperSizes: Letter %%EndComments %DVIPSCommandLine: dvips -o manual.ps manual %DVIPSParameters: dpi=600, comments removed %DVIPSSource: TeX output 1998.09.20:1257 %%BeginProcSet: tex.pro << /Duplex true >> setpagedevice % GK /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: psfrag.pro userdict begin /PSfragLib 90 dict def /PSfragDict 6 dict def /PSfrag { PSfragLib begin load exec end } bind def end PSfragLib begin /RO /readonly load def /CP /currentpoint load def /CM /currentmatrix load def /B { bind RO def } bind def /X { exch def } B /MD { { X } forall } B /OE { end exec PSfragLib begin } B /tstr 8 string def /islev2 { languagelevel } stopped { false } { 2 ge } ifelse def [ /tM /srcM /dstM /dM /idM /srcFM /dstFM ] { matrix def } forall dM defaultmatrix RO idM invertmatrix RO pop srcFM identmatrix pop /Hide { gsave { CP } stopped not newpath clip { moveto } if } B /Unhide { { CP } stopped not grestore { moveto } if } B /setrepl islev2 {{ /glob currentglobal def true setglobal array astore globaldict exch /PSfrags exch put glob setglobal }} {{ array astore /PSfrags X }} ifelse B /getrepl islev2 {{ globaldict /PSfrags get aload length }} {{ PSfrags aload length }} ifelse B /convert { /src X src length string /c 0 def src length { dup c src c get dup 32 lt { pop 32 } if put /c c 1 add def } repeat } B /Begin { /saver save def srcFM exch 3 exch put 0 ne /debugMode X 0 setrepl dup /S exch dict def { S 3 1 roll exch convert exch put } repeat srcM CM dup invertmatrix pop mark { currentdict { end } stopped { pop exit } if } loop PSfragDict counttomark { begin } repeat pop } B /End { mark { currentdict end dup PSfragDict eq { pop exit } if } loop counttomark { begin } repeat pop getrepl saver restore 7 idiv dup /S exch dict def { 6 array astore /mtrx X tstr cvs /K X S K [ S K known { S K get aload pop } if mtrx ] put } repeat } B /Place { tstr cvs /K X S K known { bind /proc X tM CM pop CP /cY X /cX X 0 0 transform idtransform neg /aY X neg /aX X S K get dup length /maxiter X /iter 1 def { iter maxiter ne { /saver save def } if tM setmatrix aX aY translate [ exch aload pop idtransform ] concat cX neg cY neg translate cX cY moveto /proc load OE iter maxiter ne { saver restore /iter iter 1 add def } if } forall /noXY { CP /cY X /cX X } stopped def tM setmatrix noXY { newpath } { cX cY moveto } ifelse } { Hide OE Unhide } ifelse } B /normalize { 2 index dup mul 2 index dup mul add sqrt div dup 4 -1 roll exch mul 3 1 roll mul } B /replace { aload pop MD CP /bY X /lX X gsave initmatrix str stringwidth abs exch abs add dup 0 eq { pop } { 360 exch div dup scale } ifelse lX neg bY neg translate newpath lX bY moveto str { /ch X ( ) dup 0 ch put false charpath ch Kproc } forall flattenpath pathbbox [ /uY /uX /lY /lX ] MD CP grestore moveto currentfont /FontMatrix get dstFM copy dup 0 get 0 lt { uX lX /uX X /lX X } if 3 get 0 lt { uY lY /uY X /lY X } if /cX uX lX add 0.5 mul def /cY uY lY add 0.5 mul def debugMode { gsave 0 setgray 1 setlinewidth lX lY moveto lX uY lineto uX uY lineto uX lY lineto closepath lX bY moveto uX bY lineto lX cY moveto uX cY lineto cX lY moveto cX uY lineto stroke grestore } if dstFM dup invertmatrix dstM CM srcM 2 { dstM concatmatrix } repeat pop getrepl /temp X S str convert get { aload pop [ /rot /scl /loc /K ] MD /aX cX def /aY cY def loc { dup 66 eq { /aY bY def } { % B dup 98 eq { /aY lY def } { % b dup 108 eq { /aX lX def } { % l dup 114 eq { /aX uX def } { % r dup 116 eq { /aY uY def } % t if } ifelse } ifelse } ifelse } ifelse pop } forall K srcFM rot tM rotate dstM 2 { tM concatmatrix } repeat aload pop pop pop 2 { scl normalize 4 2 roll } repeat aX aY transform /temp temp 7 add def } forall temp setrepl } B /Rif { S 3 index convert known { pop replace } { exch pop OE } ifelse } B /XA { bind [ /Kproc /str } B /XC { ] 2 array astore def } B /xs { pop } XA XC /xks { /kern load OE } XA /kern XC /xas { pop ax ay rmoveto } XA /ay /ax XC /xws { c eq { cx cy rmoveto } if } XA /c /cy /cx XC /xaws { ax ay rmoveto c eq { cx cy rmoveto } if } XA /ay /ax /c /cy /cx XC /raws { xaws { awidthshow } Rif } B /rws { xws { widthshow } Rif } B /rks { xks { kshow } Rif } B /ras { xas { ashow } Rif } B /rs { xs { show } Rif } B /rrs { getrepl dup 2 add -1 roll restore setrepl } B PSfragDict begin islev2 not { /restore { /rrs PSfrag } B } if /show { /rs PSfrag } B /kshow { /rks PSfrag } B /ashow { /ras PSfrag } B /widthshow { /rws PSfrag } B /awidthshow { /raws PSfrag } B end PSfragDict RO pop end %%EndProcSet %%BeginFont: Helvetica-Bold % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "22 June 1996", % filename = "8r.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "119 662 4424", % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndFont %%BeginFont: MTSYN % MathTime fonts were designed by Michael Spivak. % Copyright (c) 1996 Publish or Perish, Inc. % Hinting Copyright (c) 1996 Y&Y, Inc. % MathTime is a registered trademark of Publish or Perish, Inc. 11 dict begin /FontInfo 9 dict dup begin /version (1.000) readonly def /Notice (Copyright (c) 1992-1996 Publish or Perish and Y&Y, Inc.) readonly def /FullName (MTSYN) readonly def /FamilyName (MathTime) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /MTSYN def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /minus put dup 162 /periodcentered put dup 163 /multiply put dup 164 /asteriskmath put dup 165 /divide put dup 166 /diamondmath put dup 167 /plusminus put dup 168 /minusplus put dup 169 /circleplus put dup 170 /circleminus put dup 173 /circlemultiply put dup 174 /circledivide put dup 175 /circledot put dup 176 /circlecopyrt put dup 177 /openbullet put dup 178 /bullet put dup 179 /equivasymptotic put dup 180 /equivalence put dup 181 /reflexsubset put dup 182 /reflexsuperset put dup 183 /lessequal put dup 184 /greaterequal put dup 185 /precedesequal put dup 186 /followsequal put dup 187 /similar put dup 188 /approxequal put dup 189 /propersubset put dup 190 /propersuperset put dup 191 /lessmuch put dup 192 /greatermuch put dup 193 /precedes put dup 194 /follows put dup 195 /arrowleft put dup 196 /spade put dup 128 /arrowleft put dup 0 /minus put dup 1 /periodcentered put dup 2 /multiply put dup 3 /asteriskmath put dup 4 /divide put dup 5 /diamondmath put dup 6 /plusminus put dup 7 /minusplus put dup 8 /circleplus put dup 9 /circleminus put dup 10 /circlemultiply put dup 11 /circledivide put dup 12 /circledot put dup 13 /circlecopyrt put dup 14 /openbullet put dup 15 /bullet put dup 16 /equivasymptotic put dup 17 /equivalence put dup 18 /reflexsubset put dup 19 /reflexsuperset put dup 20 /lessequal put dup 21 /greaterequal put dup 22 /precedesequal put dup 23 /followsequal put dup 24 /similar put dup 25 /approxequal put dup 26 /propersubset put dup 27 /propersuperset put dup 28 /lessmuch put dup 29 /greatermuch put dup 30 /precedes put dup 31 /follows put dup 32 /arrowleft put dup 33 /arrowright put dup 34 /arrowup put dup 35 /arrowdown put dup 36 /arrowboth put dup 37 /arrownortheast put dup 38 /arrowsoutheast put dup 39 /similarequal put dup 40 /arrowdblleft put dup 41 /arrowdblright put dup 42 /arrowdblup put dup 43 /arrowdbldown put dup 44 /arrowdblboth put dup 45 /arrownorthwest put dup 46 /arrowsouthwest put dup 47 /proportional put dup 48 /prime put dup 49 /infinity put dup 50 /element put dup 51 /owner put dup 52 /triangle put dup 53 /triangleinv put dup 54 /negationslash put dup 55 /mapsto put dup 56 /universal put dup 57 /existential put dup 58 /logicalnot put dup 59 /emptyset put dup 60 /Rfractur put dup 61 /Ifractur put dup 62 /latticetop put dup 63 /perpendicular put dup 64 /aleph put dup 65 /tie put dup 66 /openbullet1 put dup 67 /plus put dup 68 /equal put dup 69 /vector put dup 70 /triangleright put dup 71 /triangleleft put dup 72 /equal1 put dup 73 /semicolon put dup 74 /grave put dup 75 /acute put dup 76 /caron put dup 77 /breve put dup 78 /macron put dup 79 /circumflex put dup 80 /dotaccent put dup 81 /tilde put dup 82 /dieresis put dup 83 /overbar put dup 84 /bracketleft put dup 85 /bracketright put dup 86 /colon put dup 87 /exclam put dup 88 /setminus put dup 89 /cupproduct put dup 90 /capproduct put dup 91 /union put dup 92 /intersection put dup 93 /unionmulti put dup 94 /logicaland put dup 95 /logicalor put dup 96 /turnstileleft put dup 97 /turnstileright put dup 98 /floorleft put dup 99 /floorright put dup 100 /ceilingleft put dup 101 /ceilingright put dup 102 /braceleft put dup 103 /braceright put dup 104 /angbracketleft put dup 105 /angbracketright put dup 106 /bar put dup 107 /bardbl put dup 108 /arrowbothv put dup 109 /arrowdblbothv put dup 110 /backslash put dup 111 /wreathproduct put dup 112 /radical put dup 113 /coproduct put dup 114 /nabla put dup 115 /integral put dup 116 /unionsq put dup 117 /intersectionsq put dup 118 /subsetsqequal put dup 119 /supersetsqequal put dup 120 /club1 put dup 121 /club2 put dup 122 /spade1 put dup 123 /spade2 put dup 124 /club put dup 125 /diamond put dup 126 /heart put dup 127 /spade put dup 132 /radical1 put dup 160 /space put readonly def /FontBBox{0 -954 1043 900}readonly def /UniqueID 5087393 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311E252234D51741E18DB3A68E8AD1024229E5817A10E796 A78D2C7F7C1F50961B9A57AA604C9F821DBF5A9295197BC66631678D7D2C7E1F8F2151CE0C29EF CE46270570F4301C5DAD1B38884732E53DAD05DFC36B020E726CA575F71F04ABF2B49E1F1D6D2A 08A477658CA9A48F1C8CCE14382F0A42201DE56E2821EE2B0E91A818B1B753D810EC2428DAE515 3B66AF66A6CBCBA4DB2BF926E909644DB41326E327493B2750168D128A100FE56C76B17C16F9CE 939588D19C6E9CDA7CB062196E66E38E537670953934FFC63663C7146A12277D8F7C13B563981D 696E0ABE4478EABEBA753024EBDF3EE17F2613DF08C9228159906A48DDEED6212332EF96023E5C 73EA55AAC6A2B938138EC26B4732C11E8FED889257E9D4F2002935585D9AA2265929948E37BAB7 ADF12F1A22B3C68D09A6B6C4E14B1470ECF0874D92D964CFBB8E2A0E4CBD1A114CC05BBDEE4699 A576AB8C0BD8499B166E9E60B21F45561279F6474BB497E3D55DD09A26264FFA6E8D9F228E894C 456756D321BB5D5932C5BBCD39EB95F5B7D4DC2DA25D6773EA6BF8B758972BEF890ED520777E90 B017BB4F0F1A7076DA33C972773E8ECFDF76B347FE529109A1EA0D91B80161C32E4DFB08EF07F2 3680182631BAF1BEA4A5B9E505311402D9263290E3CF4409B44EDFE28038A0F2101424A9AA4CE8 3A902FAAA4EE6DA88833898CD9EFB74A321458332CC9A62C93501CD1EB799C6DA44F94C61ADA58 024D0CED31CD07BA36A70D986AAAD1D3B9C04D6ACBA7ECAE982A8712BA24B26BC4BF9B042C6FCC 9BF7D3404804E72D2B93FD4F56771495070AA0FD181C35CC11CF251BE8DEA12600643F2B79D09A A1BCF2636F70EDF1F7E0E434DF83B888598ECE0100492A48645305B4BB8BF16CC994ABDAF88EE7 CA62FA459E421580531F5BDFD3BD83467260F184AFA17ABFF39208581863ACD6632867C05EC9C1 1A910E396F09359713C5B37AE855D3A2FF8657FB89CAD579EB1BAA0979EB227202E44306B7C89D 6B32C41795F994B293A6BAF7DF640C3F68CBA7674E695121892C8DF86D2C12158D6628BA8643AF 6C51D4241FE528EEAC4653FE8A99CC319F7B1351325AA04461810D536E61F220D309E0BF6A55EB EB2D1605B65B5550F6DF814FC3E80ADD43E595DFD4C947C4126521D740199C6F98826DE413EDA3 0F7D91CAF64987B9519B8329E91644DB1EABD71A9BFF215C4691D38024D081D4F769B5CD39ECA1 67E006B69D797D17D6B9623B7A86AFE5C6E7528FD6D2338146CFA3F34D31A526CA389AC1AF9D72 83931EA406E45980A3A56107885A74F2FFC195F0A44AA3747B7A4F2B35E7ABE1C949ABEC591E58 50B654494A5081D0752358A7D90814CE9531D9857C3B127EDD77C3ED727BD0BE7A8143701624AD DF7C7D84D37CDC05E3E97357D51E3CA329EC76C1924D84091FD864C03D6681136DBC5A81B93FC5 81BCB2AE6BC9EAAF56BD9A4B7EBFC9A87B6828856BF2A0FD3D744755C02404518AA492077EDF15 27A71C3A07A751EA11D80E1CA421EAC1F10E29DC40327C0E0F1F6E171E2CBCA87CEE30BA697735 1361E221A57879D8E1AA7A59F69714389D2C861DF37439BC8713D1771269DA938C8712BB8D868F D89084A7A8D843AA906C85D1F7EAFEC4DCCE5A8AB542C082B6DCD262C4CA3DA711CA55F28FFEA8 48E8CCF3BB482CE7ED0D0F1476DBC00704E58207E89AFF346B09DA6000AEA0E6DF562AEC72B822 6F1C0A9FD7D2378B0CDB7B9A6D51CD54E90051D47F382449D5D23CF6D176913E82474C08F6E4E3 4577374CE08643CC099DB37FAF73F9D768C3AD7FB7E632FB2EBC0DDDFE6233B00AB0B3E17E0C81 6093F5D0BCD6A575E587A677670BF7D7250689C7BCDEC50559B82AC0B3B0633638EC5D98AD125D A00409EEF477825168094F02D3898DCF2C2EC2BBBD4E1BA25E5A4B8E15A6DEDE6005EB2B36EC46 5B2FEF9532ADF7D35CA2EAEB5F8780AE3D7C09AF01A444FC709E3B2954D504F53D52050F17CAFC 9F57E64535C8FE2213E72DF4A9E8A38F4D4AABAC1FFD1145F5AE667C8A01CFD78DC45DDACB09F2 7BBD5D23201AC648891138787900E880D512875E6CA58CC884933B164B53B4D288FF85B9B94B03 EDD9D577670F4842870603BD0F6DA5C01613B9A8D43CD874D4FC67DA17BD49320FED903E5B5787 9FC5795689C812D74BAE79B680544E8C6482BA00FD3581A366F61345B6936493B2BC8450AFB363 3FD514D71ED865B791F73CE883AA7A86368EBDC60FE713081D2C0AB4057260AF002E5D298EE067 1F04C33B7BA068B476BAE2DA48C383663A4921C02FFABFD5915125BAF1CBA2E26014CB589D6710 A4E722B2C642786DD2B783A4347FC66E0158F699BDB8BD2D037FDBBC89580597C87EDC84C9412F 6BB07FF97A9EAE3DA693BB8E576D3849D244FF89F24A9A5809120A76037A6085BBCC89D096EF93 DDF6B33D3969A28A0E33777774499D00595B4C4FB6BEB5DB1CB20AC0628CE23BD0211708801129 42830CC65438739442C1101F09EA0FBF2686B6317CF0269278B451B03090E9604503A6B9D3798C 5F1C925BFBFCEB527C1262B8CD9C0F18A4A254171BB0BF44FA6BF978DE049096B8B39670EF6AE5 790F6435F0C5509E1FF24334085429E3B64B48F3F91077F8CA3C21B0877ABE2EA0779736ABB492 D050CD016D127FA3EDD0FC7413E7E4439A122C37E009B8EC4F958921F0D8501F6AFBA85A2FD614 F9FF40AE81D821AAF6208C1CAD31ACE6EF57F7BB10F21D81BE5C2EC55730425770C35DE27F6630 641AF6D39FE9B2610C965C867C001ABEF1AD4D4C7D262D602719E5DBBC327E609FF1F4982006B7 C45681AE3EBAFE8AA4EF1DCCA0F37D3FF2CD55B1609B5A654B6A2890A53A9CE022BF9965720959 0D14EB79D6E380ED246B1A632D8FA7795D22184917B063B58E9E2D87DE7655EFDC207DBAA36A2B FF92BA88C5919FF06D085FB9FD0AB19F01F4C3181D9D82B88344C63A75401862F92282E49241CA CC5C0AC86C72A5D75BE7D819940F21C8F6477BA35C5EB5DE7E244CB12C25ADE420823E8933FCB2 407AAB99AD7A7B56DE0A21A3D7FBBD04C90C58A3504A9B5ECEAD94043A16EE8E766E550F6D0947 30699B58FF84366C47BC2D2A99AEE14499E86A236A2344DAD2263C09C6F982AA252A4180880D9F D7E90C16FFAA55A36EBED8A1E23E4792B3C7EB8EA63F60A08075F0E4BFB0379CE0DC4B7FB5C113 CBD837F25C0B6F2CD5FE795E300F1245C99C842EE44DE3B8A352841DFA72B9CD6BECDBB51E7A95 6470E5F081105AB88CC28DFFB66A85D0C75D86F3D7F34C6AA8B0DFFC8B9FC516602116FDD4858E 7DE3AC948F05877B83B7ED7FFDB0B69DE973127B626973AF1CAB5DB213AAFD9C6CA273D5485DC3 90225252E0DA375406D26011CAC71A7B0C6B3372D2F1C9DABAA5A31C7F8D040B2E099FD7429824 36C64D34E053C3DAE86B94E16EDCA81ECA39395F8BB552CB2DB50C7F2A9ABD3710C87017248D6A 1EB7416CE5EDAE99EC4270FEFF0DF173A7C18C13A75BE389A4A5412F69C4EE52E411CFE3716425 DEAF057C40E0F9B2008E69BED121CC9EC4471A210D71823E8EBA1FAF6D88C1F8B2DB2375FF469B E556CC6208EDF9AF791AC411E80D74BC6F395AD859BE71805E908A0047A12F958A4022FD1EBD48 37087F283BA1F1B623A584A390663DA5548E43C314D2486E3831F8494C789AB4C636B78482E830 662A15FC0CA3030C25A481740DB53C4200EF8206F0E097740F3D031544530FA10558CDABEADA04 6EB00F7C807C73AAD1E3C60D9057A03CD8DC22946E637BB60A776A65164D24BF91A0C9FBC19DBF BF3B8A0FFA91F438F3422595161200360D3321892D0192AC05BC7A74E52506A620A810AC0C7A5A C13FE0BBB2A4B2090D1778595191FE755C48148BAEA2AB58DD6CA75F6E4028C9C836E6216C9090 3ED51C1C33F7B5C8FFFE3E2DE23B0B25AB93FD935C408C678BDA7D623B1861B230BC8F5D21B8EB AF6A2DC806FDFB21D662993F4DE3A85284BDE964FE7899B541BB17F4C4808BCFABC3A746A2F330 77AEC41DB37637F4B5105EF1D58C64AC52CC86BF963F875919B3FD33F12A7147B3437B6894CF91 6D6D3972830B4F849DC2E06CA9444D0EAC059C3B20705B77810C916554C94C7BB36070783A3757 4CC482215D03C436D2AB7A1B705BC5C2939172839973E4D89D5F57D71A5D1297EBCA20A2947B15 90907D172FCC7BB1488B1C663A06B91C139DA00AB40B16D933172C3EA66601AA0CA05828B35FF2 5326184555BE5D36956F04A1BCE10F90D2DF77263E1AA8D79859BEE17780C64187224E1739FA8A 4AC464D07EF68101480E0925E7EE98FD8C0CF5AAF30F771383366BAEBC03D5636C1A1A81D92921 05B67FDC74576EF3C2D4089BC68657B15733898A0B26B54D9BE19CB9990CB054E9BBB5BCD4BE87 ADD1629A0D436884CB3E5CAF84C55093278393568251B4450EA719A857379E027FD259028CA68D 313F997616D51FA918B91DBCE6213FC3ECACD4585BAD71068F27243CDF7708F46EAE16A7F67913 D201387A98776EA8B0C5E459E52B13754C191E27B3BBF8CED1D54A72DFC6D7EB1578AE9826441C B476E54856E2F9BAC9F10E0B5FACEFBD3250F232F611666F5212CBA21862BA9060523BB0B44002 F2FB29B038332C893EE3313C62AAEB1FF0DADC860AD1F179489C06C9BB96D843CEABF5196E7C1A 57DFF4502BA71B2B711653BE32A7003D6EE97209B2FB6C4F22B8DB8094166A28B993B6246B792E D65DD84000F0D4A547B134E46BD4E495B2763C48E93BB7008EA14C2FC7C3461460711572C70699 03BF49F11F3CE4556FCE122A015D54BD188BF6FDE4889DDF7A92CA1FD50E6604D11DE3B3380ECE 1987E9A446BF220E0C93230AB2A7C6084DD955C3ECC1CDCE0187A0E564CBCF68F6133C0F261320 8179CABDE9FC93685DBF8B845C25B7249F11EE48DD48504759C765D17D387E0CF0B20C70B57377 AD90EEB2793FC47ECFF08645BC4F47A702EA24FD69001CE5283266B371DD80882C9886F231E2F9 838D9E765093B77E19247365F559B075CE1AFF75671E60152047D44BD0B69B168B39582210A09D 224F5226715581F43A9A6BA2D46968227D071CBF3EE13801CDD7F823F3141BBDB8EBEA60B48B26 7898D5E27D431BBF528A5EF830E26E880734F6E1375ADDF92739347E128551D7E126ACC2A82FB7 C57336E5653BF97A69027C90DC7179E65F76A7C43598F000A723A7EBB299E5B2EC549859FFED96 28198C2C02A4FF2A58C0EAC12497B16A06F67CEE100BCF8AB48BA229F930C3D80752D05EE821A0 C226AB62858FDBC6CF53E9B225456FD4F8ADC62B582CE583054547E14D0EC426E1B00B5A8E3421 41C52E36C05FF715953F1BEF7AD3A36C92205198A2EE73144D89ECDE4E5B760BF5E64D09858B8A DEA9C12FF4BE89B345F2032B7D40F1F94832BBF21E7B6FDF42A7602688D0545E1AEF166B8F78DA BA20110D765981BCD22C6560B769B52A4B5B7A14A329BBF34E5395F218EDCA121500E3D698A705 B524A3A448C2EED6E5F17FABDC7ACC3182959C7D969A5E37E9C39C1ECFE85DC9154C84301DCFC5 8337ED83103EB593D165CF7F5339D748662AFDD55060BF1E33A0D73DCCEFAB95EBC614E23E5B0B F9B900E92FE25E6AD98692A39B164EA46B88368F9AB8DE07953B3A9F0D889EB2B9BD06CD6FB265 15699BFDE76CADE3A9ADF56CCD694408A776682CABD4CFB8D3CA37FE900B46F4D153CC3C58C36A D79C692B71B36FF152CF92FD8898D193D3053A16067EC47FB0A5EF1BB806C5BBD5D75B613667A8 5D1E73D8B72BA47ECD1702B524B9DDACE9ECFF9B10FB9C83E12D7C9D7220EB8C74759FB0C45F68 92E5C6B3A502F06F45608DDEDAE2D178344D938CB36B6EE82D7321106D2C948201B3D7A95DFCC7 BD3A1086A584718E3E62962E613E380CD99EFDA0DC033EB33E316BC8E9363B67EE5E04119EA06B EFAC94C4C44448812B1A7F7FCDD0824783FFCD97707304D8275AD1746A6990C3C2D5607C72F775 4F150A3B5F6175F453EAE89CF9E3A53BADF80115B7858E113DEBD4ADC2918F3BB2454C35C3F107 7C2D97E067C98B0205613B145F340A37FD60F7176D265BF6451256269CAA16A48D998D80581F48 CBED667D690E855E235B4266E8F3461933D9645CC35214AF73C4FC5A42B978A54BAFC561FAEF93 BE0316B2E4B9927C100CEA3016DC42B8EDC939AC6AD5DA1B6FC86F21D92A5B9841B21412607402 7559CC1C3DA05536033F2A0AE7F10F8A064AA145DD79DECBE6FCEEAB4C91DB9DFAC173AD124DFF 0BBA9097A84E8D351780382F7713E15F73C5CFD3C5BB48726C45D383FC2BE2732C8FFED42C8766 6E0AAC7BF6AECC01E98A701526D642B90ADEFF9C48D5B70728EB378E93267E1ADFB7444BFEAF47 25FB5CE72D8EE7DDCD03D3165CC32429D87565E7DCEC9E21FB34C1099E4AFA0D1993D4EA3B2AD6 8D2796A5FD2CB2000DF2D8C730C7426854554D5D2D42041BE13AC3731860774B540D88806493CC E8188C2F8BEB189A484D9F639E3D350A6776B56C2E51A56BC96E2773BDDA339098928E095207B8 B485BD0652F107B8E5ECAEB68B7136F12AE4630EC2D9BD452283C4F5499BDC4A20073E37CF77F8 68A417708EA7DEA3E7915AF3D4B3F1EBDABB60E37C3CA374D96B31BA0031D53DE839CCE388FE55 3C073C1BE5CAE06DCE8012B1A91942068BF1EC74EC261F28EC5DEE7953DFE6C4C346F5E44EC312 7610389D265A7530E18EBA2D3BEB6D0FC64F32DD4D288DE6FCED7086A0FBFC506F736279F97F05 2E4CEADA7AA92A5F23EE5120FD2DFC954E5C8DA037E52D63C723C55DBF0CCFDDEB20741D16F5DF 0C2A5A0D1275BF9D3F37B6086429FEF89F59A970D44581BA0B66213F51C4CE33F104AE08A32017 06E285C69151968DA35B2A78082E587028B405806CDF366C5D4C6E04A6F39D49C0BC23A36A4BF7 681A3BC69E93FC3063F81F277400D2B45B931BEC7D087F31BD3B47B3F17AE6A6E4B49EC5A44234 E55193D981033EEE43B79ABAD0752ED28F01BF12051B4511A43C2E8ED484D9D363FDE0129A311F A62E3D2BCA70577AF1179DEE5137D50C011F74EEEC1230651E071BA0CC9DD9D7D4FDFD21F190A4 25E8988DD779AF006009435AABA80EA233B9A68823DAB1580742CD026EE9EE874723BE5AD6BABC FD9DAE0CC9A3E4567E1BAB53A5774550768EB4344062525D0836827569EF9A9BD2CE53CF85D7B9 14C8AB0BF01A9743B86EDD1764BE91F100CDC9270C813D8B3895A55B46528B0B90CA2820034395 8C566F25ECAB193C2C126E594A38EC6548BD47CECBF94550CC9DDA5DA4AACBA2AFD4CA53970935 7FF3E4BA59BBCBAFAE3086F4D45C02B8592ABF94200CB8BB560645794014B384A5AB8C34478222 BB942AFF1C95477C997B0FDEE302F01F7A52E461D10B0241737574BE4545889FB58642A3672A63 CA19E8357396D54E18B6054BC91278159C22B391134A997007B04E98B8B036D8CBFCC457959A98 858B734485736A5D1C932BCE464BDC7CFFA86FF1A7DABF37959D23C9E436FF6DF665E147EFFB5F 7CC0794B01F3B87CB74020A272A798697D12B88BE43BB192BF8AB33B474AF17AA13C3CA3190C10 F6AB16C589D121738CD71EC64A610E73A2111220C2804D3C602CBD9047DDBEAEC51296203F4DDD 130D6748C819305196501904A00E0A52DC656A463DA07805852235ADD5BCD6953F07C700000DF1 FFB52C5EBE6373747117DF5587D35BE15B4854054B0CB08AB96D07FA4355E038ED868841A3B4A1 FA58FCA715CBD29D4D34FF42DAFB7F65A3990B974AF26D1BE701AE5E696EABDC7A997C4288C4C8 CF6C10028C49E763DA39F26AA17F7BE65AA155D49B7594D702AEEDDA87891CD3D32D198F0CB233 5369EBCB171287550EBC0394DBBAE9A637A789D052C7C51BC9FF6ED08791005BC6C0D730A49016 AEDDD6563730AB510EC2BFBB8890D289DFF714DD074848DB372B453844EAB8396536AA5B93B6C2 9516218F50622EA5B44B15066AC27026C40224FAE3C0A0A7B26E7271251E2CE70EFDA448B83665 29B147BE0C81E4FA0A67D40D440CD80A0D5649D4EA919FDB09D20E4FD7AF7A8BE4168045097931 7EDD65B6F16012995935C27F7318CAFE60494B2DE7B81D6B3813CD0075B5C93A3E4C907F277347 32B553689DD7E1BD92033FECD1425DEE94E68DDB2983555FABBEFC10B3EE02D5836DB9632FA5E0 6E3D18335BD999F4F2AF2222997392B905A262E87D379F3828E4225082DBD1F805FACFF2B6EB2D A85C06DC8BC7A1B6D7FB7E33F30E57E75133246946D05A16A6D5F2BB73F46B1AAC466005BC64A7 0C4ED52EE20E31DC101B1053FAB7D4D8CD2159CB260421B3261D18AAF221A0E17DF1B84035F573 83D3FBBB1509D7744BEDDC79A21FC6E4E2CCF6EE21F7C1AA792823C4813A812A903402D36EC76A B3840BB45D31277811B0CAFE17A7909B39B8B139A6AF831D928F751539625CF88E56353E2559B1 E8BF899677561617726941B20A123D6EE3C6EA8F5FDFCE7EDB24C47FDF560127E219C7B70E359A 2F8BF5ED5696C589BC3DC55B8067609C69022CEAACA887F4D42F5ACDCB1B7A20730739D9F64A35 9D76372939492FD3054DCD0543D608401A557058DA16E13041135E9E7A6A0DACCF3E4050E01E4A F27531777C2EFA12F82281B7CED3A3B49FDBD0FD218CFB3407858EA0CB5401769E5583CAA61ABE 0351F66424144EC51F4C969C160FF37477F887139BFDFEE290FE77F0BE527103A6A30DE6C3494D 269386B8525B30CBEDF4D6C2BA04B5C843F76B07A11935954F48C55B9BA63F2B1DC3231B5FF9F8 75D2DD2A071B63DFA057CF9988A8646035F625F63E892C449CE2A90A2324FC7474B53ADF072F5F 6B389DE6D4243B13DEA6D5DEEBC9EA428FD35B13B3648B8084AD3034C40E683FA6AB99B322DC91 A946911A63B70B0B0A604ECE8F5E74DDE98261781218DF73B6666ED2C2E5F4E317BB6CEB2555CD 82A6A1DCCA0564AE1C7111BBEFA789880448DF720129F80F856439F261172671801EE0A690C2AD B81434FF0A56F008A6B35CE08C8832EC2393DC62578CBA2EA45C07E61FDB658B31E80EF9EEF1F7 1C776ABD17A17EDCF9E852386C0698A55F384F4342547CB07C038CC38426457C67C1E8FEE0D424 33B7FB9E68DD533550F1E321E0221BB47658C784E1F2D81E40205F919590B71658F02DAA29CE3E DD19A2AE8191CAB3430F61D4899DC44E7B8883A3E6384B63180F500891BF54C75A7E0B679C6CFE 9C71DCB785404DE3279F228B9389953BE4330497B00D90E0D164433FD693B3AFDD4639A669CDBF F930558CD2A9C54031FF23EAC02FA2FC878FD29894FC2A3C181BE30D7C80FD5026B0E933B1875A EC4A1C3B09F0AB78B686FDBC60C7CE7998EC2A610DD543C70D1E7000F3C4BA6EF15C0A0CD618FD 08A0646D582003E1BB8C4C28CDB11FFB0B764023F023C1BB8486BDBC341D865E04839820CEE2B8 F0FE22513A8AD2DFACDE078504648010888BAB29011996575E1869D1F8CA4784B8488511080E98 3EDA926D56FF4ECA3BC6A6B16B0D0C720A62F363CE48E83AB5FD243121F08AD6B47E326BDBD5D5 FFC684307F3C40BADACDCC8049118E49EFAF4F9570823A9EDBF3FE8121C94CCEEB2600347CBCDB C08FBCA3A972B4411F7A5EA4E8F1D890779AC095FAF29103242B8C090F645AD8CBABB555D50B29 69019113712C6F058408F1080BC71302C2B9B79647FCB1CF9DBD9ABA4C5D6AD2FFB010E8C734BE 14E618AD1B735B099F0FB59B084C11CCD5579071E8655430474F7306CA9F49C46DC0BB548E5A8F 0D608E85881BD83A1EB98B4E92FE12B39E9C7ED86C46627B6CD527C4D3D92894835F47A80F1F4D B0C73387E31A429002C4045AE770576E543B63B2A1EE2DD7F4EF11A1223E9514C9D75141101170 F2774E52201AD076FF942ED6C97FB6D1D15E7D7C8391C3D25A0A08422202F93B33F38E58F8AC97 5A41B2549E95C5268D79208143E420DDD94B97EF2ADF9E7C77A2F38BA50E03B6BF43972FC9B19C 22D071CD79F26BC6A2AE9442E57A3E0DC49F30B1A3F9A30D8985900DEB6CA9090B90656EE40CD4 4F483415C71D4BF140E3D9A1617CE38320955680F74E120F40503C712E4438EED9354969E3217C 2F297BD277D1B0C120A8DA45E2BCD0DDBCE00EE2A5553AB493918AD82EAA20AA736DC5B93BD0E8 094BEAFE5E3181D39028C1A2E30CD6B2816150A81BC3DC69C9A3B732600C45FCC2F0B485FC9B69 23338458A054C570AB6F8E3B284E07F223B843BF38122A2E816A458D6A062E2E0E1B76060082D2 DF3B4A5FF911C089698FBDA697CF2A3FA47C17A734FDBB33EE87A5AA068D21745CC4661C19AA1A E05A8C6030739EB01685E839793CD5BD566353436380622A0D597517B684C04965DC1F13B5C611 6C549DBDB42AFA964789A223EDEFD10C57EE4B1BB1B06B6942B64EE66E1D67E82D4CEADFE47ACC 35080AFE3657BBE687E353F4C94A3788A260436FA1C114B9003DF5DA81A3A471624D73472D61E9 A616FDAB3ABABC225C845FD8F12103B8F67474D7414833074E47222BC00E86ABEB6D8630DF3A9D 84E981EFD99C9FAB64494894F6BF88045FFCE054C50945B75D2A00BBFF2F68EEEA5FA19D5F863E 128CF160182CA8B38EB1560F07F4DDB97E0E759077E70BC4C2B309020840C288951B56803394D1 D57B46DF96DDC9777224BCE81E9797549F18CCC16CA7C25202C4569EECCA6E48EC9C0D911C7D9D A2FD831635D913E54A181E56F8808E9A8D27BCA1C4DF10CC927794F64018A4B14E003B885F0C18 DE9DB23401ED18890021623ACF1AB9C9DE1FDD33D4F6903E4CA4C668534F99F05CDE08647B3FA1 A8DE467C565D9BA0F6E1D09595B886353C8C67E5095BE53F1A841E258BF2B8FBCDBA798CE77B7D 20D39940E6F6C8DD9A004778BFDB57BCB735DB413236F0A7B864CB6CC3BBFB1B33A23EDC484920 E5582F8248933D9EEEFC1E5E5386567B576D0362FD750EA3FC631B31E61EE1C5D3D6A0AF9F4E8A 436212D359F7BBC9C69DCF4169EE4A5DB65A990AE63E4773607DE4A7DBB85CDDDEE4FA65018C23 0900CB9F868885CF80AE58907134616D78B7179130F76557557BEA8F19B62EF87F9F8AA93A5F0B DD78C6CEB352ED458806DCE1DF7DF2E2CC34B724C61364D707EFC4EAD4A8E3DB732E8FD1B5DFCF 8C3C46D531D266113B63B7D01FA053EC28347FD23A35CF986F5C73378C8ABD12D1A02B98EA98B4 0F4ADD4F4226D773BE1ADC9841082A9C9E7A5F99534FD6846127054B2437D220A04BF83D16EEFA 7BDB4799DFDBD2DADB1276FFC40C6C24F2253245F21E230C822E323CAC694FC0B7903574CE5175 94F6C22557E231C26768C5DA5572F3D473712C85225BFBDA924766D9544ADFC177ACF94798AB07 985FBBB8A9F230702F3302B1511665B81E33EC69A61F6EE5AF160A034784C83D0BC0039E04AF3D C8EBDE4DC0EEED8F1FA37D462EE55E63A3526E8278AF663BF5BA1902CA695E8AA7C4EE020FCA14 BA93AB5A0DEFF681E7602135A13DE7567192764DD5D26B1B5862238FF3ACF20711FE0C24DA756A E629E477DDABF428FE4E10AF898CBB8606BAF96D29627E68A78A483D47DB135DE7FC53ECD46A12 9D64D17C3FB16BC53CEF1F1581976BEE603964EC3CFB28EC4DCABD6DAFE9FC854C69341DBCD4AA 1CBEB29789AAAE56A5C411437ACE39B035C26F77ABAAB2524B7EA71BB664815BBA7F1BD857BC69 281071E74CDDB91C28E59C3007EB2280BEE16E14110AE00324B0A72C65547E3A0509B769608FF7 4073E2BE295BB71ADAFF01E81EC86561C7095A2E5840F54C3030A83045593C43216B8B53269CF3 BFA5A16BC7F258B34F46B5B505BCA9B5349F181D9DAB84372994660A77742AEC03AB32A3A95253 7782C7F489219B19393A0C1A5D9EEAEE305A1BED8376E534163B3303AE930E816F818AC3C5314A 5E23460D8E6B08DEEF8FCCEB7F89E83A8805708CF5A6B2961455693109059C09182B7E08AA1C32 61863F6F546CBAB64E249BA5ECD7AC030973CA1C69E3A37FD5474594181F53528300070F404F5D 4C2B9D43AD4445A7CA703F67B46B2735F7EC1D01B3A2D023B11AED0891AC2BDE28F32ED40DA342 0B6F94EE07E269F4A8D07E29F13DCA62E59E14F3C84FB1836073DD34E29BAE513F9888BBBAE7FD 0F0EE251534E4D7FA6F27C64992A134E8ED6910B29FCE7AA2DA8A58113422E4798DEEEAA323035 170A1D20F6A4BD68C5F495F42648210BB8F056F5DE8420240651AEB4B03A43D18589E2F8CA7380 3864002F2709D60BC735C6CD5692DAA22D8BAD66144ECA52DB3F0910680EF1376CDD3886A37579 A1AC30E349F9EC89AC8F5D7BB880D459BDD538FD516E9780B09A907E1C047F2D5EA6D385CA7B11 32BB7FF7E81539D4D7EBD5C59C32DC82B44BC5DD698048789CD16C51B072F73E5A6E68546BDC32 306E7D197E6D4288D715C1902E58B6E93CA321D45F7E82E379D569D040BC64352060E138CA4494 61CF8E51BEA1CC4A9ADB6B5C26A72E6EE8C089E5198615A621323FC9620FA12770C36A22AF2277 823090F7D058D3434A894FFCCCE04022686AB11670DBB6E68FB6E2336D6C18569675D219E7B6F9 FCD6866FF8AD749B6CDC7EBFB573757AF230A1E9BA4F2F53E8F0F20660E105F5733B3553DC17B0 580317BF4B87376B53D6C668F169723EEDDDD1776DE62B7E0E0E966C5F2F43DAE61339596C436C 64A2369EDED778D98A65B3222148921E381BB46FC0BA1DC3DDCAC224D0B9F0816C00BE91C50376 9D969FE0BA42B89452E84B4F794B7D9688B66030C7734F63FCBDAE262E6B4FFC1AC235BA67E0E5 1331118FC59B325B630E6E22CB55321928B7D153759A11A47DF9D679CB9D10714C5FBDADDFA765 60CBE22A4D25943AA856B0B0E190FF911980914072C697C556A91B894D3B1A096E0AE9A74D2610 5CDD88630F89A00EE9BD92BDE8B806A2D1D4AF265C796D1EE519D25CF196BFAE5CD837A0BD2F76 A76B4EE2241B2CF9D89810807AC10B3BBE67179F216FC44920E28F1FEBD64C2750E1FDAABDF1AC 1DEC065CD4AC4239B3DD6A93CAEBC22BB7097FBB4122ED104DF6A7D1F4C76A1C8132FF188B2438 67B38708F8CF59563E72D5F82B302F2B0FA4EF4D877138C14E250D36032E9D53B48F6906D73DF3 A682439B8AFC64FBFA324C56D825315C8F3FEC5FB3D8F73F6292D617D29F427FE5DFC85C3F2DB0 882BEBBBB704102B3A53918441A507F6F468E4EA1B8C46A4E2DFFC654107FAF494C035C0A03359 1B83E8BF142162C7530A1BE5618206B97EC7E92B1B80EAB0061746AB3717ED65EC0ED719F2A1C7 3F105D88687FC5B00617CC7CD288CE7A938C9F9C4522B7B43ECCF67EC5F342B62085938BA3C1D6 0255A9DFFAF237D6CF752A52B252BB6C5AE4D6EC39F7DA8427D6BC715D7ADA63743E813AFCFFE0 A07F8229FE2074A82E315EB7DA0448BBFD41D06C4CBDAB1DC014A259CCE764AE969B1C6322A1BF CB703816FABA522713B50878897A91870943B20869D52A01DD76695BFC30C39595409EB8F2FD69 97D7A3820E2DA1BB4F7555EAB7422CC31783E2A20F54D9B8759CE29F0461DD43885545FAB24357 C1013C1FF6D778A01853AD30356382830F7653BAF57E2F6C3AD79CDDB2BD9376EB94616F975D83 D85214593FF76FEB63297FA6F9A2566A1CE29811D81A03FF5C5493686DE4C5AFAB19283ED36241 BBD6BAF5573CB6EBBF8DF5EDCAD5F69E8B65580AD4D6A4FF6C02D73BD52D21B73A6E69D4857E99 BBD2AE2714A953DEA568878E338166311B45CD51A8FE1E0B6E6CF1A03193F82A8E428D9C3D2BB5 1D26E0AF099F2464E235DCA9899BB75FD54C37AC15098E1AC9F33E49FB89E0F106FE9BE1F152E4 E33DC4050C3517B5EF7BA154F0B267A7C35115F6EB6BFA3D061831BE470F5478A664DFC4E0AEE1 1300B30526F50AB8274F3D56BABFB9623B0C7D7030C67EA7088E4B1C767F8A00A01EDAE880EB13 D2E57C909556D6AF8E067AD42A1250E61D50ECCC72F67B50BEE2302AD6E670E0C940C6D3FCFD8F 426FC6B8EC86DD4461545742E2C1952AE52EBEB78FE286B72B75A3D7C0F0FB97876A85421BC38C CAB03A436E42A09835569D741679103A52ECBE764C4E1B6FFC50738E98C154CA75C51925C5744E A5299C85331D7BA5DFBB67E8AA8DB9C4EA559C4F6404D760EC9FCFC572B691E747FB7D6BC47D9A 43DF3F8B6873E929058A30D37087CCD0A7A7C2593E219B19B2095EE0542FC49E7B7EBC8FA6208B 96E891014B4BE49BA7510784271E2E8B4D2E4F6520BCC4EE5C7633B79150CAB9807A1B01B50E81 BFC2B7B190A3A848B3DFC15E8B47AFBBAD5C7497A564D927B680B0976C5DA2693C87F18356931D 8CF9AC134A4A496FE850E6A5091956B89776BE6D893981E0279F5D01E605CCA08F6B4C32A6D01F 1FD9E2B243EC60D5781F4B2D6FCA13CFFDAC188F4F39A155B0F64E1BAD587E8C1953723C6C59D4 7321289D9A086DC57FC08F7F2DA512C57A3B9CE4461D711F25E495C5E50740A364798E6B5B732D 6F17EAEA63ED222DEAF39D2E813601F3B2F416465776CE7154242C5CEB14F6CCBF23EEE181EB1F 92DC7C580610902C6CDA5FD15E096317549184CCD14F1AE54CD5688D5FC329114DD48AF6DB7524 414DEE65B3528674768F9DA68CA2552A770E111D3327943CEC52A7B23DC55A98CBF2C0D3A6E2EC F15A1F093E391AC11CAA0922696275B87137473FF0EA59A1ADAD12C529D76568DF36713DC914D5 7DD5E298A6034F6D918DB3BEDAF88E74907F4B03C41B5ECB0773FEF89237C9C611F0DB6F3BF1A3 1EB60AF8343680184FBBC3136257D2777802039F57F2BCA2B1515742C64026848B669F8D0DF5A6 871858230EA9A9DBA628CD40269F33D9B8AF5DBA58D4BCA52F8A7A2A38E817B7039D6C4B40DA09 B4F2DAF8CC12E14D96BFF75D61B4166121E56DC3D0B2D89E31BABC8E1308A86D0F6E3F28B4E873 28CC47BBFA115500E22416BC153A68AC0299BD50C833E3C1AEE97EEF711449DCB33B20763E2E65 1D429B9D3EBC3429E942429A00641715E268F9E226C0FCDA7A2193C42FDBC3F6A6E668F27DA5AF D2539C04D7CE3DC030880DB21B7958F625ABC5E6DC94FAF9B8469790DBFDE65C89955F83CA117F 8E43D8AB9E5D8664F08A7CBBDAF4C86D786F4F0FF19D9947D08317BB5E184346EA5A164D9A558C EE77581AA92DAC056584ED36663EB708D1114D73A00A001D440C8C338E7CC7710DFFAC6E93696C FD245663F457C5BC29B9029BF91566E8B147016F0B3104BD8863F104A6F0E431CD33BEC307FDA8 17BC5571D98C3DD1AC57A899787F2903D410941CFC818BB56C19DDEDC91295ACAC20931525182C 091AF85AC3E161FEA22F8E65B44E746F8FD40754226439FD9A660E2D02E1AEC9D9BC214F5F16A4 D5BA4E1364D8E8C80A8E57096B510B5A8FBA5FE6715046BFC52EAC796F23B4CF996F8CA9ECD236 1AF5D627A4076F02BBF615556801BC06D014A020C7A4D7BF87CDAB9EECFB90B4C8F6438E28EF59 9C08E1646D023449FE2563F481B23C5765CE24ECBFC6EDFD5E69294E7910313DA056CD9C75DCD4 722371BCF97AC6DD6D2DF99B35BC98C05932BAD200E1F5CE5F1A39BF2F14AE9BCE79157ACBDF8A E4193C18FBA2271AAE398BB618DACE59C98424D17B4A9F152912B5AC21345C1E0C94631CAF2B51 1DCAB35876A204F0BDE78BDB5F82148131DAD9C0BA3D98EA870BDFD86DFB920006DBA5B4037B83 1255A44112C3C04BA51E3EE35B72E271640F37E6D1929615D75B8574BA58A2CF22264E1EBE3AE4 74C0CC9EF06F251D9A702469CC838F7DA8EE2FFC1EB92368E839D658DA04AD3FD83325A439043E 6489945004F7383B5B77F9D799F3CB07D8E4446A00A8C1DE81D01F48AE998A898785609A498CE2 FB0526FA2485F06F4F17E54141455D0C6E1D8D337BCE938A70FA1F9EA9B2C1FBF1166E26A0512D E4C347254DF67369F91B82A1743F1F26794DC06C7DABA10079FAD6FD2B559DACC704EAFC12C204 CB0A6BF8C97971D1094F307953947B309DA4823059A83AFA23ECDA8FCA4870E5949DE858F036E5 0D3F193A705537E7A131256E72FC4F4949C49FB40C470480464629F987D6E4058A70D28ED1FAF4 82C3E8E402BA5D2E9A8ED50177C356160F2D38A5D18775E2F204D9767953F3FA4C0A0F05EAFA33 AA5788CEC8E64948D6DEFEC409901F7C2611110827B401F3A7A309DE2311FE4A27BC9ADEFD3B29 7E86C696C57C2C70066438FA37876F8C0275458F82E6FC15D6B55DE4CBB8646452A26FC3D8248B CADE704766582D20946FB5EAC8739837DCFF5A1E84EEA8D9C21D137CB93DB74925250A0336839D 32C115A5FEF9ED71D4E5A505230F6AC17AD3773A5E5A094BB3900FA0BF3055897966A0BD052AD2 1E5CB6F327300D77CCD2A0283B5868023E86E50E064E850E45DFB3278799854C055CF83FE98AEF 8A5ED9059EA6C1EA5B4916F4673782335EAC2836507A3A2AB61917E24140454924863F30E5C7ED 786B5379227D4BF411FF8FFDD037FC30522BC8CBB887E860D871F59628E1FFA0BFD7FF2DC25700 8E5DF7FDE2F02DCA442646EE35238075CAFB8ED068E50EB4D6B82EA5F7EB3DEC3C9132A8ED6F15 59F530A04A4550E83A87A09CE39F699CE8B42D17EBC0EBAA6B916CD36C766160357404B227FC43 1E1AA8E34B68864C18BE49995C92581AAA084D6FC95599770D84E567C3A45745D84A9DDCC9ED17 9582B3F4BD021A28E9913D8BC40FF6178C7D0233BB2D876F91B3DB7F9B74A6EEDB70D2C363E8BA D3D69B1C028752D95086EDC8CFCDB2DAD247ECDF88A28F245BCE710B796C554914CE83E4D967AF C305D6BC70A004ADCAF4D354BDA1427DD0CCFFDCA32D9E5E8EAA67A37E145252D468ECED627F20 38BB4533B00475AE81BAD8A49B9C8031E3AFE5AAE493E4864D5B9AFEF5331E4AA436BD6B6FAFE4 3073C9DEDA76821B787C8C4CDD42F14DC97383648AFAC72F50E40671ABEC730DC100D4E442B762 42726C8E569AACF6E43ECF9E5376F0BF839E7EE78689EA1DFFF44E97F93D0A98D19520DAE6F4D8 8A6159B19FD2897878C26B816FA99DF3C99A5DD18A702A0E285B0256326636259700ADB9D79608 F0341F6753120DCD82D4D80DB3F3AFC0A84BECE5C6AD87F7E0BF915ABE08E7F39D92A58894AE7C 3753A68CAEB56529E899D29EFCA137553DE0CEC1E27FE7D09198237B25B33EE059424E032BFAB5 E8AE55336A9A22BD84B267B8141EEA7A0660C75C32CC9040C91694DE84E975BC52797CC4983A44 044E9EC79183C985AA9994A8547A9AD5FD9BA515A79671B7E912974B4BFB58F3C1F4218987DEF2 5753839C5A335C4EF125596A19DE6D28C10D648FFABE683D55957737AAF73E85593F5173E70A8F 9136943175FC0A1CBA166FAD4857AB9405F3CB1C96A824EE045D579436967ED9295FDD3C7D931D 9A77539F886F768FAB2D8EF6A987BC0452AE7DFC2BFB25620EC056246B7DDCD11E68BB3A2D055D F0714AAEC08E88067B6C4DB719E49F1C310BC367B67AAC68CB72588D9A11E22DDD65215EEDB812 78813D9C09A97E219CB5E968A8882C79EC2BF4A0B55761384D585A7E48981FE624117FA09AC46D 5B6E538609292D9C63874A192C1CD25FD5EB5BF30E1602213CCC5708AA7A28775AB1D669EED45B 8AD5BB8AE72CF4C827F34228BE33A0CD40DD3C1FA757DE434485E36D09800F1C2D28323B4E7E73 C8F5F79346D87C617C5BFBF6E908322FAA26ED50BC66CBF71E0C026705E162A370822AEF8AA022 860164E7FD1E7FB81C5E14DB0A81659DA7BCFA650B72112994922D416E98D30E3169F696E843B7 B34C554DBCF8029FF5910539A66F55B7666B861BD7E2BE7A9B00D44CE2EAF55A98AAD03319380A 8F8378EBAD79823A27057276F9FE454C119C03E20241674F5896B67AD005130498711BCC8CADD0 265157093D22A1F7CBDBF2A3381AE5A4BC07F316872418AB2F6588BA21DB31D7B0CC304CC2E23D 0F810DBC488F91954F5F28A82D3D53782F399113460B0DFDEF872FA825C94262A70B1FE72933BF 40FD4BECB14BC70B3F43911BC04948231139FC4D86B2F0854F782AE4B9CE7AC33EF50275AFB769 C73435800D212094117D0DA5B694819DDA8600BBB6A098091C888E32CE9F8B3BC4E67757719B13 420F989143F2E0B85B2DA6A695AA91DCB5B69186A59CC232F2F434F2D3FC1657DE90D3698230FB D39C19B3B62F18ED9258D1D7CC8CBD1CBF58592BDBCCDD164C8A483AB70127F4C9E660BBC673C6 3EED28CE5822C2BF20A785C0D2AEABA3F4061A585F5F48270A36F11B6C5077310BD00FA21475A4 E2E60D99C8A1DD5D74B74CA470D964157C7D4D4992566D36558E58B7E07D091D7F9AA07CABF586 F248D120917AADEFCFA4F689636185D53AE061401AEF4A3A19F8E0D9CB30B54979525D47AC3ACD E79FE768CBB1AE7B0A2BF509D102CF924D0D859F89CD39BB99E2883C30A4E148D1918F1EDEA095 149B37774ADCB4B3FD6C0345EA23F0213DB4F29A8F167324C2A1E8CD9BEE21AE8CA621BAF73145 1AA582E9FD1EB460899A8C38B08ED183929A81ED396448BDF527F409644D17B4A005B9862F5F7F B95F2155BB93063FDB7E545886477B5B710CD2BAE103A9CE1DEAD4F15F63F41C892CA84C62680D D511324931D4E51831C25CB2C119DEF8E5D75A9A585B0E4C89FBF74B21A1A8E2206E6EBECB7304 CB1DAFB7D0C4000DCE1A244A29525B3872B14F29CA1C9BC17CCE10B135E0C3F530F77AC7AA7C0B 059D07AD74EA9A7C55E9FA75B381CA902F13846C90A2F7C48383D1BEFC94BBD0103B991B79C1F4 DB3EA8B83CAAE65FFF6B077ED2471AA551BAC92FFBD6100210C1CEB57225697BFDCC5C414B8EC7 59A4C3AFE8034A9EEDA112D991D078CE7522CF3990462CA35F03CC7509BA2E30F7B5BE75F0352D 6F96D914A53F9AF8975DCBF3688201102A3162F68E4EA8E249B94D0781011FD9E0CEFF944455DB 2F6517FF96E2958EA69B86D96F267251044AE073089373B7822513E0FB589769391BCF2DB62ACA DF995F020A2BAB02E0C972BC4A7F6B5F7410CAA369022F2D1B5F861C5C5276FCF4EFC65449DCBE 10E069725ADFA61DB972476EC495B544A174ADB5177C080C5EAE6B44E6E044DF660C748A935F0E 7AD665C390C73CB698B1FD187F9085F58AA14BFEBDA9BB1730B2BA5907CE8C790438D4EB02280B B2B611BEEF36F75B636177E6096C0E1E31F8240B38318DEA7626688B8A0CA5817D8F281AA804EF 2B41A8CD7605F02D032498D51FE3368A00336084D38B29372931C2CCF738731F9EC569E3B2D54B 24411425B6D39C891393D00FAD30A4939848B4B1D5BB9FF68B345D5901CFC4DF9DEFE9B522C000 086469D59A6BF467840C9EB5C491FE50ADFC769535E452878A8CF06968FA0E8B9DD30F35BBE61B 4C548344379489E5DC966E09588FE4F269DF0409713211C7299327BB0294D45FBA35EC304B7B07 F5A67D46A786C8247807067086142816F3ACF77F03D5EE6FF5F8A2B8369C0F1CC922B59FA31564 3271CFD550D6927E21CCE4E8FB93F7A920339D721CB2EF9F4848AE3D96F85BCEA64B4AE93F5254 D9D4B18991CD8C5BD76871B9EBC855663EF043A8230B344539D2EC6906F58372B1DDAC014C189F E9E3F73E25790CF11DB0ACB93A64D3ED9A57E11826825926629F23F332CDEF103DB74634DDBB3E 444BF96DBE0898E440587D86F5EE18C01CA829E5D1E30D1A06F1E42CCDE92ED96A1B5AD7362F36 F0A3E12A98CC4A9E450AB2909475814D5CD4E06C6EC137D49B31716BD1CF579B668C189A49E9A0 CD2DD4224388F1457FD508DF001BF9F1F7DBF9251589282F55EFEC08995A305605AFDB7A611212 B8602A817B2B5A632888886921BC94BBF3BFB1C25A518741C8477C3E445485BE65BB0C90CEC0F4 148734EBCE7E096314163C57F1F72E083253BCF06B45580086BBD0F3A3C6626708CA8E11D9C4E5 28B6FF99B7C5FB64060C4B7C2AE76AE9C98E5A5071688AC1010FB0A81669E63745A26E027D6A21 505594325EDECABEAB4CE8C6DCB221AC9789676F23B2B05EDDDD215539604BF3F82880F505D282 F824C853442E8E39FB9C71BC55E793118BA5BC398F476930AAA980CCF7DC12D24B41D2E7589381 8405E76FA5AE74586DD032C5C8540223BD218D5622DC8A6B0587D133D0FE9F31A636C07913C27F 20BE650D79B35F1616A6846B573B0D4B6BD560B50028C02390BB52ED835984B8F6630BB7C1967F DFD2DC734068516352AF4B0F207E0143B24B22530EA7F058FA80487D7C1DAA8E6E049CE8F5E0BE E2BD29DB095A48DD4242EF9B7388FC24EF655A2184965166E569C4D0F1DEDDD3B6B14D1E92D400 8F8911D54E60822F4679AEA8F739E22BB7B03A5B04ECBD75A95DF15AD365068B7883264C139C4B 4BB9D7D65CB95D2D69008696443D3EA461E1543ACBDC42BF7CB9E3AE13D5EAA317F90414A3BB1B 94AF1A419845A8DD13E392F4359B4D145DE20BDC83B9559FE0A9FFAFFD71079A6F7FCE6F825085 CC3577AE98BBDDDF39BB10C19541B2D65F230CC807B71D7EE35C35250775F8FC255FFF201D681E CF7184D3551DAF6632374E2C0066B90B3F2FBA38DEBEC7E1AAFB9E75C25E1690EF1FB008BE0827 38C42606443B9072A0C2EF27BCDCC51CC63B751D40EB50C8138680C07F213AE287E902E8E86DCD FF44CDEA064F4F6DFE1E619165EF8CF42922A25A4716A110B92A83B4D2C439485893541FDAD9E5 638BF0578FA0497F5E7D3C666B1183B830AC1925C267C1B4FFC87469A522BBC2E07D8270FEF5BD A7C02846F5DF4216083CB0D110809A8BD08E3BD01F3E19C096D692E481ED952D8AF6870C1FBEAB 011BF3604A950871ABB2B3489EC07CB79102C15CFAAFAEB098D0B34040CC4D3FFC34CDAB240A40 C26AA74C22C90B58B90AEDF1A4291C84B5E3AB0EF1D41EF30AF5E760518786C347B4AF86FBB861 EF38C8ECAC757E2495F358E9B71C8BFC4A5F0604CADB5689F17993523FFFA64B39E9685AC9D503 9224FCDB0EDEC24655E97530C827A587D375C9A40685CCFB532F9BC01F27B26553D8656DC07B53 6AF6690434FF8F5BFEAE26460BEF05D4CC0358102FCE94223C048C96E004CC086D440D88799A47 72C20DF93B83052131CD455A5498716EC46119EAD40F30FC1AE46019531490B4EB0919D54BDE0A 1D65304A9D9DDC4684E2E0AE546F9E54AA498403FD978D029CFA934D5D4C021C97C995A43179E9 60255181BCA8860670A701939C0B2EFF33788ED38760D6DE2B19161AC68EACC2E9EE06E8147F16 9E17F3849F9A8459439E4CE00D9FFBA40B01D0C92C5C5CC805BB825D9D03C4E8A299AAC9122E04 0A234B4F973E00A1B2524E0278A04EA00D5F7AB15347B967DC5A8226E57577761ED08EC081DDD9 E1BA28FE92A9520A9E86C14B7C40C9DD49EE603EBDA359F2C39F1E399949353FBA12E1EA1A0316 E56D615C4F6C5A481D161EA6E225994FF7419E4408C7A0778CED1FB84090BF6F774E26E2264BD8 E55CDFC33D0F970A992F683F0272ABE717F98F46AB271E68117E6339BC0AECB9E45F230FF57742 D4CA51C9D0E3EF7CC82A7FD880C3EB4A24BADDA4EA12C1B7DD77E002EF91AEF22038DC0EFEAE71 D7B86B32ABC84A6983C613EC3A5C40F180FD5E68F1CE8E6AAC0E880B35DB366408237ADE529FE2 C497CA863B61955815B9E4438087605B952CC6B2AC37F2DA0FF60B8C208DCC873ABED2E02B65D1 F107102BD0D8459A5AE4B23950A0796B610B3EA310B25709922C0537C88CB2F4770224A3A17F35 F48BA498AAB10F423B9958EB9025D5F041F31A312B32A264B07067B8D27EB167056E9CA67462B3 31AF4B55ECFE51D794493A508C09BC244B700380C01AFEC1F340149AE6544437EEE9C1222861AA 17B647D700CD75D95A51827226B1FA55D0BD6A780F31828580EB192E2E9072AD88E9A4D9C50752 11583ED95AA662D563744CC8831F92D72A72EC2CB7FC7CFB76C89119810345026F15B4E5B9FE0B 09C83EA32147D38FB50D003E8897CE50A77AAB784700F3892A399EDC3CB5F5A95ABE85617C2983 DBA02690B3789BCEAC789247547C3A39BE33AE871FF808D70B3D6D12BD51E1030A23C8356BBC76 C901868694896882C90E40C1C1940BEAFF8BFEAEC1D426A1C44B6308EF4ADAF38D88766D6FE1DE A163B9203E33E2807AB582AC0763BFB7E730CEE12F374108C84DF65966DCF77953C2793552E7EC 526C553B2B66348888BE30DF7DCAA1F4EB4BFC852C231358ABC89A3630D794D7B7B5581041050D 093998A61446FC8651C83C36986197AEA67C8F85EFCBA6A2E90249F15974598D11461012B2044B 0C730E6525C37D1196214394EC7A6D2A92F00F9DBCF62FDB8C1D41E70C1C655A4A25D30BD009A3 FCAAE8DE1574E5359936E6680A3081D2C1648D1A5853D8EEB72E63DDE6885578D8DFBF7E90C5EE A7D6F9F6CCED6C22C72177D58B8E05BCE2AB63D353D1C7DDB9AEC88E5E709CD645EC956CD1AF54 34007DA54B7B0590AB5013E50758AA9D3AA1486DF2B7A368070DAE49C9C83C5FF98F33012DA73C E02827F8209AE8182282EE67E936BF65B137D85F9458DF930E668FCC2CE7B1BC157223372A425A E92B16556CEC07891AF58192EBF36340CA66D275D26AB19F5EB2A5031040D9A2472A0D1547FE42 C302E23127C9BF7080B718192A4611888E1431B79C19BD95E8A0D1134E115D60F5CED1064D2B19 59C21A9645673653752B0CFBEB9097F7747E6D45AF059338649875C5167BC91600250A8067F8AA 9652FA4CA4F08A42B95C6279A6A5BAF6320C3FF1AB33C6D7BEDB602AA4C81E4D53C2662D9A220A CED6982B2F6F4D14C552248185D61D07E2A585CB87A93E38870F1C1F4D007A994126B4B6D37110 5122A8C99FCDF07E4E05938EF82644DFEC40525F01BB06B958F787B3F94B4467EDC4F0515C9D69 896A442EF69E9123012121EEE3B9CB2CA3F1AD1D07AA0E45 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: RMTMI %!PS-AdobeFont-1.1: RMTMI 1.1 %%CreationDate: 1993 May 10 16:52:31 % Copyright (c) 1992, 1993 The TeXplorators Corporation % Hinting Copyright (c) 1992, 1993 Y&Y, Inc. 11 dict begin /FontInfo 9 dict dup begin /version (1.1) readonly def /Notice (Copyright (C) 1992, 1993 The TeXplorators Corporation) readonly def /FullName (RMTMI) readonly def /FamilyName (MathTime) readonly def /Weight (Medium) readonly def /ItalicAngle -14.036 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /RMTMI def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /alpha put dup 175 /beta put dup 176 /gamma put dup 177 /delta put dup 178 /epsilon1 put dup 179 /zeta put dup 180 /eta put dup 181 /theta put dup 182 /iota put dup 183 /kappa put dup 184 /lambda put dup 185 /mu put dup 186 /nu put dup 187 /xi put dup 188 /pi put dup 189 /rho put dup 190 /sigma put dup 191 /tau put dup 192 /upsilon put dup 193 /phi put dup 194 /chi put dup 195 /psi put dup 196 /Omega1 put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /alpha put dup 12 /beta put dup 13 /gamma put dup 14 /delta put dup 15 /epsilon1 put dup 16 /zeta put dup 17 /eta put dup 18 /theta put dup 19 /iota put dup 20 /kappa put dup 21 /lambda put dup 22 /mu put dup 23 /nu put dup 24 /xi put dup 25 /pi put dup 26 /rho put dup 27 /sigma put dup 28 /tau put dup 29 /upsilon put dup 30 /phi put dup 31 /chi put dup 32 /psi put dup 33 /omega put dup 34 /epsilon put dup 35 /theta1 put dup 36 /pi1 put dup 37 /rho1 put dup 38 /sigma1 put dup 39 /phi1 put dup 40 /arrowlefttophalf put dup 41 /arrowleftbothalf put dup 42 /arrowrighttophalf put dup 43 /arrowrightbothalf put dup 44 /arrowhookleft put dup 45 /arrowhookright put dup 46 /parenleft put dup 47 /parenright put dup 48 /Gamma1 put dup 49 /Delta1 put dup 50 /Theta1 put dup 51 /Lambda1 put dup 52 /Xi1 put dup 53 /Pi1 put dup 54 /Sigma1 put dup 55 /Upsilon1 put dup 56 /Phi1 put dup 57 /Psi1 put dup 58 /period put dup 59 /comma put dup 60 /less put dup 61 /slash put dup 62 /greater put dup 63 /star put dup 64 /partialdiff put dup 91 /flat put dup 92 /natural put dup 93 /sharp put dup 94 /slurbelow put dup 95 /slurabove put dup 96 /lscript put dup 118 /v put dup 119 /w put dup 124 /dotlessj put dup 125 /weierstrass put dup 126 /kappa1 put dup 127 /Omega1 put dup 160 /space put dup 128 /psi put readonly def /FontBBox{0 -213 987 680}readonly def /UniqueID 5018946 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311D70C1E2528F01045F8CAEC9829F31D648C8D0A29EA8 51AF41C327A0D569ABAAFE5AFE94DAD818C312D3CEE72F1ACEA0B701B6A5608521A2866790BD D5776D6CD0C7D971B9A48B96AA970DCBB8B76EDCB90DA356DC2529B665EB4BB80AC4F5B0F4C0 ED76861E399638AD3DB1BE4759C78D4F2E81A2FF688D366B91D729D63AB5FC9556FE10A07B81 904D879A7446DA82DC107FF41B0E3B7C2245D57B2EE9BAB31ECCFE9B79E3EC32CB1F10C622F4 BCE18DF0E5C4B98EC714593D6F127C5CF6D719A79B83C627433D3AA39CB88EF85D274184C4B4 C46CA5B496F20460ED75CCFB3D66073B710CC1AD2F2BEC4AC64065ED5E03930ED9EC97810F36 845DD5048D90D724A88FD3C814CE17C417C84BA45C43F5569A4D73739F71544ED91C657705E1 31F4D0C61752509FBE0212BDE9C02A833910DFF28F7C53F64B032C8E3CD2BA95C22177C3E053 2F8699D106F119B80549C45726D793B9AEC38FF4C3120C259083FD13C644DEA026E1E7C75DEA 2EC2341983AFF4D712C27C024393022797DB1500C6543D620F20C9CE973EF7D917E7FB3E6CFE E0999E06C9DFFF2D01BAC5B3BE0C47B2D5ABC02E1F0F383588F430FA64BFD5250E56DA323C91 F033C8F0F4E0F9CBB36EB8D4D25B127FDA1BB032A7088CF6FB34B617290DE038198297F2AF32 3602E5E96D475E4678E129D88AA15D5AD9CB58E244028CD8D9A8210FB1AECFC3F29299986C1D F1CB3FFA0FC203626E8E2F6F3A6AB198963ACB2B528D6BC06687D59EFDDB9C88535C1C69DA5D 81812B911C5EF9985179796D2B2E4E92BEEC47A4075E306C8D26431D8E0732768DFF70EF2270 D1FDDDDD4CCA0F209AD05C9AF2F26DA7CA0ACCCDAC0EA4F479B548C741193594D515F614BDA3 F394C77BD7296981AC947CA0D6D6CCAFD9A05547B28F0CE449FFBDE2744249AF134A1D3629ED FEC122C615E4A74067A7F8358519BFAC0F31D1A46D260A3DB271750D02CD6A12D019AB6C1C2F 9955CA205F12D8A03DE3203BB5EB869ED8B66B53D1C29EAA26B4D20F9460891B018031BF81EB A788B77CCCCC5FF99ACB5B025A4DCBAFAFC1B34BB2ADBD17CDD741DA586AF1B784CF74CF8860 3B20D68AFAB47D21C1A0C6BEE297777DB1A8231237A40EC89AA97CE1C848C9DA6804D3B98C11 590B239616E0E6D668FC5B987075D77769EAF4877F1A359217B40731293574EAE905BD7A5C46 719EC7F8A97FAC1C46DCD76B0344E8378FD61D02C9905B194613DF280648E2F86EF15A2DD8E6 BEC1CAC0D90B8302B2846127B2D50D8FFB7D210C7826FDE88F2D165FA6AFD755DB04910140E0 70126A663F3D57EA417ED6D2128BF21A7CC2911F8BF0F2668EADBE8E042A1CDCEA38C5C9A712 26F6F4EDBC85DDF8C25D80933A42F5F303E5495C247E973DF20E2195B07B60657205DE149D86 DBD56BB2594FEA81688F21573A8210F6FBF48C82425BF58215B3D91D3255012F7B2BC17357BF B35CD40B0C1D5536CDE7BD0B29DEA7674B32BC83CB453BBF76807CF4A5AEECE57FAE3D291AE5 0098B85E357E9606694FCFE15CC48406012BF12EFCEA89892D1811B5EF93ABAD0E929160090F AD55766535E605ECB8381777DF5A2AC4A3E332A7E1B7AB9713A37619293BC7C8A69652EAEEA2 9721F81FDEA87C0F323FA843325904149416D36CAD4BF4FF795DFE8F5F9073474A5CB2A662E8 47B438BE9CF54058F1AE7F41CB8F298ADD3159AF95A1CFCE85FD603ED88F301B04D4E8BB4024 D354FA4B27711651101B499AC32D80E83E0BC11535DDD465D0C061CC7E03513CAD0C2943CE6A A5B6F9AB3133108A0F41C3AB724D46E10838205287C2EFE6AB5354A24CC5B7677BFC15E067A0 FFBDE26300A5962A8E9609F4EA1E06811CE576D04DEB46C49CBE1412C01CDEF6DC45FE015123 E1CAF9F40FE635F580687BB54E1D90C4F19A3B0F94E78D2820A4FA2D29E40D53C86025AB7B83 43ACED39A4456E73347CC33843F7B1C7B6286BD315C88E891E5600E9140DB753BF076226CC23 2786E952176F8767BA9F124FD73991B3D280B017AB0064C5EF5BF63267D054C69C9F08B50259 6475D8B5083A23488867DAD890E37658D1407E6DD0E225280D43B36EE8FA7C6AF944A9A92BA4 55F3452D2781965DF4A67FFD9EB6F2C7DAC8DA44B2655D8AF179C50DDA090970D9A15F7A742A FA84435C72DF5C6627633B7ED52EBD8C4D5C835C93BE5FA7CB58F43A930D22513C88FA7DE196 E7CF4AD21F59E85E4D5A1E45DC0807572D81C9A863EFFD54BE878B4223DD885187233D71B713 A4A4D49606AAD372CAEF27DB943CE13592AE7B60B8355C4D4A4F65BF1A7292CC4566D8DE3148 6FBF77E4C357D7F9D152AD67106F4E73C5D718583D7329CB086189B069F8AB1D372015A8A37C 753CE0701EE56F35BFCB78C3337DE4889AB74EEE983A3C6F6987790FF1B3FF67F4C95D32B524 3A6557171F1C4A8E7D7113056E051964883404E5F748E060A4F2C83E0B909AD58E90E55C8201 548BBF6BA31C7861B79995181E0723255A769DEE58BB098091A80505C59E671936CD2550B38F F4AC0D4C8A2199EC15311FD5A7A659C8028742CF72A318AB3AD7171D8C8DB3115D49290B63B3 C49330B9CD1F0DFBF5D41DEB9F5AD6FFA10DA0478239E0EB837D8A18FBB6C95FC36478B7BA9D F0767283514A2317D0C868788D9A77FD6B341C71B9A3F56CD796727877DD4052CB9D00EA8E6F B4D7344830366860D0FF5E42238C0E7C800DB4DC9ED75FC3104B60EDE11C7D51EFB2D54039A3 56F6FC3362142F921068B5894FAF946F0391C009EC59392B7E3FD20FD42EDDAB0E92E0232701 04D80365D513007A85B65A08ECAB836BB70D538221C6167E73E9B60B22FB122FF5F15E77B398 43762CC2D11F166FAA06F7FB61DAF0A05A370FC47602E019A4656F585B913248070FF2C8EC8D 25AEE6FA7062471A562AAA8EB026260A67221E77F05D3EF6F79C2440F0ACD4AB03DA13405FD3 39E3BC047412D0F503063F98B8FA0E6BD5E52EE9E2C2BBD3DDF5D07122869BA8F08F8F127DE4 EA963E21B2DD27E050FDDCD751008BD32B731480FB0CB7E81D25B78F3A85B26EBDCD12062435 47D82E7AE4AB9D573BB01EF4E6482CE8612EB67A1237B87D7515B51E1A218CBB724E745DA73C 72DCC1ED013E80D4D95C303642D0DB099158D108637EBA62A28A5E7AFF8DF1AFCF12E29455A7 4EAA4C8FF91A9AC69E20FB107D6A4192743026FF10F2A48E3C83A06F3D8BD3127E3B9BC63324 DB4C7840B91079D76A3163FCD35B13911A7703876B57331C6E67AD3A8177BE5D0F0519B5B7F5 A9342FDE21FCED195C67BEF73C786C86F6E8E9E612A1467C3E1B1BBA763C882549017016918F 0AB2DCB6A3FAA0A25AEB632B2E5F5A01964D08E86FC8AC0E219AFF0802E8C561743CD4BC2558 39707BDA8D0E318E257FABC2AAB156344DE064CF7D02F03956B02DEAD4607975EACAA0199AE6 71FF07042879C5E604231E5700E13BFCF142361851CFAD31F6B90BF4C9677BCC985E2A6BA4BE B0D492894F41D089EE969E7F59104AADCF79764BB5BEB1D4677A6D445C53AC9F9608183784C0 33B991668671B222BF3DB336268DEAE34A12F8C4B27C5C38BAD94CCFF3C298D34F56CB3F53A5 DF8A0FC9EE29B8A55B18843B9E53F5EECE43531B5B09DD483D831425648F27DBFD112C768176 96C6A59AF58B35525FD6211D839FC4934D935CAFED49D86A0BB6885C0C2744BF6F59C3A84F09 E1939B7ABA98844A9FD1B65E061EDD24ED129FC1E6E680549024594215FD43ABE89A3A2BBB91 2D8831A6A571345897D49C6980EB77EBD00417EA3FE223F51155FEB010ED274F27DA8CF2FD8A A2E2BA0BF8DE662B7A5A7051B4D4CC35F0AC975B9ED28609644F4BEDDB11017DBC8A29C86B4B 20328A9D76664F48C939BB0BD68170DFB6302F690570D02ECE0E08BAD62CA854F97D0E1B1351 53EBE36C7FD037EE8F6004F535696DEC5D6F857038774E4A0F706CF419C4BE0FBC39F572DB79 39D223065275454F26738DDABA3698E3CDAF49A2E932CA91BBF8270970F6CC22E313F40EF677 71E3EBF14CBDCEADEC46D026D8746AE0AC3CD0EFCB874906DD3A861B04550131DE1E7852B76C 5FC8408A4038E239012491B1517A86CF14CB7E1A81B5C34F9C22ECE6C1C7DAE7363F0D200FB0 3DD93D80DE49107E89D14B91CFF6CDC741C6BED3790FB03E484BE455A4218E9AAC7497C7B691 4E0F108CC2995400F53E88D9650A0080E00E17AB94B4A0DD0F0BD227F85F8673986F8E2272B3 C724F204565FE2A81A5B2C33FAD93821943A280BC4305108B0DCC7340C65957FC146CBA4B95A E9A4415FC38B87493816AF1C4602DABEB64555B225B9FD1001156D6C94A1331258227CF8C043 2C1EA27DC647EA7F2127A2FDB4AAB8203D85CDB25D2B057EAC6AF8D198D0CA763056C278C2F3 A06513175ADBB14B33DBE438F9D7706C241CFF6626D750D2239C814E61BF1C6B278B3A2CF8E1 5B2F93E2F2339A5F3FC17EC74FA00B2B4EA34379DA24058F4CED29453E59082E11DCA4C109DC 020C7574FDEBA6E6A5280DAAF1C8330AD5EB604AE9DB28920D86CB4018244C2BEC0B817651BD 65C7E5FB42BC4478FB72E15CA9EFCCC083CBD1122BBCD7D168FE296C86DEF11858F50ACB2C97 5DFBC19EA4420429503B110B738C44E779D79BF2E0783A8EEB14C507ABBB7ADFC369959A2291 904F03FC9E8A4D8AB895AF131D1879E33BBF68FC8FDFE22F0C801363CEE4C95286317E6A9055 9456C766BFC5B4B08B765722E728EF7970E83AA83A67481098C7C2353BBDF25CED5C9AF6E3E7 DBA81D4E95D52E2009EA9CC386322154CCD55B7AED8D1128028E8C31BBA7A73642A3FDAC7BC2 2861A9B2A057F0E283B8AEB8F0CAA25439FF63BCA1B1EE1DA65D9D92D2EA2BF7AFE23F2B7D7B A5B30104A2DAAC28651AEA8A603A2787FDC6AD72560B64F8A2BC8075ECC00030BDB8796E1CCF EB6D6D95122F5C5A5080233F0533A92A93197432130625E00C75947326A72F9457F0883560FB 465F5DCEFDF279E5BDC645A0ADFA6E7C810526D4834D34317175BCF8F9E96D92BEEF971507FB 193E027F3AF309E5004CEEEC6434E1E5416B6BE2EE39658F31572514104E22FA6465A76EF978 2CF7F94E9AE9AD133FE793B3CA411CB8DC4FDD0824567811B4A131046C7B2F70D28422428F57 31D15AE5DCEE894EF5E8F882CEAB923470F67EDF67BEA6E72645E66D2406A9F3CBF7F4DC7E9D 71F22827A233C74D5781D528AB240E81B8F3C6162B7EB8D7A68FA6BA3EBC23EEF184B3FAC790 1A38DCC662A18344F33C7349CE7BD8224A00EB7B039AB8F316D28020A6CAE42FA2DEE8798F34 131A928B52511C1253683BDD9273862D02A693B50EF7FE7CCA8898278064620B3D460328FBB8 75B4B2BAFADE2D784FD517F2678610E2C7E90C35DC082787537DC1DF0367F26992E03A3D3FA5 5BD62B6B4D61E92E3CB9130D22C2A7C67A56050C43FADF7EF1962C61A70E98B6FBB5ADC5F014 A5D42DD7B5C920A43C4E9E6ABD2F0F893E82E6BB4938D197F3FBAF120E79E105BB002BB9F981 224763EA0FCD4018191497851C1323A85AF4E2022FDCD7173D3B590D7035FB65AEF28451B132 24A79576D088823F6FE06152AE0F96E05A42532E425DBFCD9C4494C0E912B93AEB4829DC6E34 ADDFDE3AAD7CF31E4CA44DE6D9D67CBA2516243F26DB4C9AFDB34A0A67F91CC689585E03A250 5132B9A05285862574D7D3BAAEB1CF9A3571C147660F5E84FE69CD5C1FF8908D29415EA7707F C04D0FB46425BEB9A1E3289FB938F11BA8808072F88E2EB5996CAAF6D1B90A5861E0962F3809 706659BA963123221C2E7546417CF3D9BD4EA07FC6F3C212860CC0E9A5ABF469426655981A2C 0B54268DCC635B2883E2786FC5DBB46E09A5FE329FC32680250B744AA0D80E51C3524A8FBA6E 31C8B0899065ED33192C796383AB20FC7D9A9964EAEE7F9D7467B57787DD06C212028F08C538 1EAEA92AE48A38BC67B9AA3C54009BFBCAA6027A13915EABEBBD3EECFA8F26132EF5F72C3491 5A4857BE9B1457BDD1E04FD1E963BDDAE7BBA8C16AA459BBEE2ED112D7D7F63EDC21082BFD7B 702E3E7EC8241907E4176AA0CC537EA5C2DE58157F8221C7528E26B356188EAA7D7B35F7D721 081C4406C96399A94798A6E47C443F8303B807BC8335061EFF884B59FCCF814B973600658E1A 092E5F0B9A16B964CDB55D1AF2D85B7534F85A46759668E472231EBD0B71B3595D5E13CA65E9 2B97F882AD6375B0E8133C00CA86585A1DFE5482302B012D5EA2526F1A100BECEEAF4CE9D5A7 C12FA5D9C951A2DC27B0D8CF87A1FE8767BC48594403F8E1A39D32D4AEA89D666471130A500B 2A0674D531FBB95F28C974FF9E76A2EE9D384373691772CECDE7CDA6C201CD6C4C29D5E15874 F91193220133C0CDBE8B201B854D568FCF73B3964DF7D0EC3D43DA92D0578947D2B8276C1A0C 50DF18572A5B96A6EB90CB26EB6A11618D6BE38DCEAF72D19DE63942108BC32415B006258C9A 5AC732112E7EAE2CB6C8DDEF064CC23E2FF05916C6B79B17DF6FBBAC607E056EBAB1058D96F2 A3472651FA35C4FC8299847C22480084885AE4E60763246A7763B05FB45CC2C8197C3C69E573 E7150CC2AE980A165A159E7D4082D10DF64FC4269E7A71784161B3F21FAF7DAC3F1F74532591 9C5029264AA34F7D2CE425D2C2B664D8AC10B220ACB4BECD94A935CCB220785DF617F156E310 926D73B87B34F9FB33975EC74278D0B2FF7B8D9A0A93CE6FA9F7D722F894A9294F34CE8242B7 20F6E438CACB7DBA554E29A319E3B54A7B6B6FE13FEB357D42FCB140F21BADD8BFB0690F086A 3E4931BF0EA1089BB7460744A36E33DAA66CCD029F30F0E7607D8554D9A9C7405EF8DB9A7EC1 3C5517BE5094C2365F237CF5A28BBB49F29221A28EF95032C8EB4D4283C233E87D30C12254FB 084AB93D970C7245FE4673284367A9FBDC86EFC2EEE2998CFB9E9B60DDCA3EA54259701CA4BF C7AB830268065C19A64F3661D4DE3968C8AE46D321426A1970F76568548DBA717059AA6B3D46 49322B7F5231745FC65F73F383F711655383449AF2E0E99982CC796CBDCD8BF628783C3DA0F1 509DC884EA0639C8FF8F7CDDE18820586D251166AF758D43D2DB9870449F1676B66CDC0C87B4 F92EA1A6BBFCF0639AD7BDC990ECEA0A0F893D8E862488F28D35F1C83C2FC2DD164C8A1CE27C 8F0BB27F50776F2F30479C644618AA4A2E9F7F32BB7AD6A7454EAE1EFF844727A8189848EDAE 28BBADA3803148C563AC4769E8F7C3E109BA1BF2E8D1FD27F3ABB9A9A332C0A8D3980CCE846B C64F6F598B1C048D2C29DF51E48AE2DD478B5132ED5C28DFC08F350834CD2CD7031F11EFCB37 F8D8A26451A6578C10E4192CCE42230B0BD398AB2E38D45CD4F5FDB3EC6AA7A244EA0AE43BA0 ED9B2E8712B41188FD037093BC9E16534C61211E36F21B2B69938197FBDBC459B02F950847C8 941F7246177F2F6705BFA5A454BC8A3947C7FD9F70F41D2F3A15F6BA14340C4B1F1D97BAD850 90AEAFEC1C1D79D2CFAA9915BD79FC3554F37CCAF7C89E496B6A8A0E641BE345B1F51D4EE651 B9A85F56AE0515A25915B3F53EEA2DF8B78E79268595CCA76760D9509541F8641B9C455D23B8 44206901DEE2F78DE37943FDE09A02B41A05BDE3AACECCB1CE6AE2E57C2F418785AE69556273 F27D6089B5D1F5F3C41F9AA0280479885523B9614981FB6C0FA35AE488402DD9666F2F500992 DE9DB83C1474D2A80F04FA78440674BA1F6A0561F2320716245CE4D4D34E3600FF4B880B02B2 59B4F1672D714A8180C63DF5AA7A6811144CF3F21D1DA2F23D9ECB249FE4E76E87C759CAD386 6701BF658919A9DD28ADCFA5E0CEA43E75BBC1C4CE94189FD435F8098BFB3D39E7736C45282E B1575CA1FF186B9279BE2C61582FFC713A77DF22569C456722A3DF4B21DEEB398662144291A8 74A104DDC60A521C723E89555DD66703CD79F4A7A07295097CEDE9F33B16C0BEB690B5BD379B 9225C099B048568A4589FD07570CF90FC6E8F0EFA16C566FE736D05A0E104AF10D2DF778057B 207F328EEFD63CDDF755F71CC5BC39B6778943178B172CF1F596EB17C89B9272E99B0069294D D6C29278F3D2C097069A51F03E22B81596FE5A77931E436E0B06FAF45D2C383146C56746773B 63BA9AB3E49AB94F1600D4C0B15C82FDC17A2A869ABDE1FD79AFE9ECF07DD4241CB49DE6812E DDCFD46F6E05C7FA95D1D1FF0CFED15FE25E4613C623E4B17D041179E943C2ADF392411B3B70 1868942C6790089193058ECE47AC2B29BD55AE0A401677D1BE3F4214B0896065991F5D8595DB 9AE3EA4813F35B377C6E95A6156702BC1F675E7A88AFBCBA6E9D0ADE968374928418149B52C2 05C306DA737D78FCCBFA2FEA01F09A2F19AC9AEA0D8878D5D2FD4F622A5DD64635E3B2E17779 EF3BCD3C47466078222AFE4498194294CD1CB4D7DEA3F522867FF34F3A294B2FC69AB54CCE03 54BB3AAE536E884A908B0EC384A0CA7DEA0BEB5423C08F7C5DC186E42410DEFC4DB8D51F02A6 82C529439C3E3EA35552F0B459F0060361A9E695002BD293DA7D2C02E1B0DAEE6901CA644BF6 141290A33B8682E03BD0DB0F5138F86868FB2A0549743AF7EE962F9DF241FE3A98A2377F158D EE435C64E13DFF529D36DA039DDF7B5F3ACE1253F3EAC1549273704907EDF51576CA85D4A728 F0C3E5381D06C5F7E052C08B75F64072DC77BD9C42CA097227A44C3F7A61002C5E89D1159784 00F3A736E013019309C841A6896A885F307D1D7215F39D088B8E37BC61F08D7661B6EC99F956 D65BAC784CBDB8B80F0C67AADED9E9E5E4D8C6E755764AFF57BF01EDDFEB8E6922B70EE999FD A1F8B8309162E0885CCF0977400FF81F5B17DADF1953E39061EC7460FB06059E42BED7A2573F 1162152BBBC61375ED90F0779DB59B287C8EBB701A5799694D591B809E3EFCFD4BBD7254822F 4CC6C627D70F22414D1974EDF46B65BB1096288DF0D9EBB03E3821207E3C330F968678FD1BCD 697815CB606A7B596B030E15FA11BBE9B75BA02E0A70204E14C339C3F17EE4B6801402AF29CC A09E6ED34F3AE9B46C78C54D92EC5B26619E721E55CBFAA4EC6085B4622F004D29914E0E7516 10548F3AD23AB0570A8EC4F3F6A4CF0CBF89500C751EE8ED1E2222B447CFEB96A555256A3666 659A11323F957AD376EC8FED66B381405EF270C7E888DFFBD36EA2EED15E8AE9F56EE6AA5736 CD179C71F015625AD20F48A2CA9787FE4723CF9342909450D9920C0733A5FBEFBC408D3878CE 8355D805EFE4EBC0A6FFE6DDFBA64ADD9ED57411D98A9C94E5B76D465B8753FD409E748D7254 2EE4B48CA6C2F0F21F0356CD41C64B0050B02DF20603FB71B8441D08C0B7BBDEA4B7D77D5390 296E8410184B9529A698D028CFAD9FB9A476E9E22E93761CB2A00598430AF7FC18B2574C4551 7465B6892AACF6E5E7B7D49C0FE801EB0D5E91A3ADA03C997B8D106D0FF348B1C028BD333B2C AFE17304FAD94CD34F29F890E59FEC18A7474152596EE9971087C05C6E3AC02B66BF10E7A8E0 37296B4F3B15F7312B81EE170FCF46ED6F6CF323CA8132CAD6C5694C52383BE49AFEDEE87D41 E9770BAC679C9FFCF6337313AFCF77749BA31CDA260AADF7E8D901ADEDB5C5E9D107F2812F09 2C552A4BBCF2C19AB9861751A69A05B5E846EE90CDBFBD17CCAD9CDE772470A1EC546C2A2B85 0319C0EE72E0FA0C0ED628DB2402F755DCCBA80415CDDF0963AD7F61CB18C9EF41A53A1ED0D1 B4596A6C2F0C790DEB3141C572A9ACCDF80A621A3F7D32051E94DD0E76053F9466AC6207B2C4 A2182AB0CF0914F5431C73CABD9DCC87EE2AE54E888BF9ACE0D3CE786824069A70A69CC18B9A 14B458C4A7BB0DE1092C70ED33D294D16EDB8467DEA27B31BBD06049B511A6B6A81FDC9975EF 949C07A1B97993E0153C310BF7B9103350437183DB224EB19193FFA6518D97ACEAE1FD9B0557 90B101A0A75DB04053CB4C4DB282A7342E1A57C2F97A9EC04EF07A4DE01300CBC51C2BE078CF 6097AC313E97F816CC9AA854A4E691D97B894EB9AE630B6BB676277E01BE16149E5E66B82850 4584290F86C50CD4C3C115955DD6FEA544C8672D8FFC6DFC9AB940EDC3A37D58D1627FD3B100 1D3FC2A67C0129FE64FD8ACD1395F555E8120E6AD855FED3F8DA57F850C6506B4BA17C9984AE 505F026F25B61C0CD9C6BDF3C83A11446E11BD3C60CF67C45144C7457D4C0A51667315C48004 CEFA327E35B3593B568C722DF9A67DF323DFC13FD665CD56DEDAE2EED49567C128F2D1E7E485 C1658B36441AA5CE8774FB11EDCC4994E15834C59397F84A4295EE44F8B8F71CDF5773AFED6D 74A42461C66C3CED2497F4527C28FC763067F082DC5E8A89242645A37A9A946247BB821E8527 99B3D3AC1216A7B311DE1B7819D9A89D79878D877015D5ECC1410E380012FD570D8A20FC64D7 FEE86025FBBBB5D6E9FD293226BB406570C32C2A6741474E0F001A5C0180DD32644B61ED4411 5A018EADC5A832E1DFC7A5F8F255FF9871F4C959F23A1262F254855A44B49CC888395AFF5717 AEE21A2DA5457D419A04780C2609DDFE2424D9B96C6B2B52FBDCBEB9CC99D1A9E224992F71B8 51D694D99B306766E6C1BABFF7A11A3771321066FC5F73C334091972E0558392ECDF9C099B73 8CF53BE2A04FAB67BE46C651C1FF3A6D19ACEE84DA8970E8C79CAD04A11A474B7FA560C11844 82584A334B0217C22AA75C2FAB7C470CAE49C58265AD543A09C9FD1ED4ED40546F3138826637 5DAC12975D10C8A4D65DE6A4166943ABCDF0E9A72CFECB9F2E5F8FE923108150201A812C9A8C 33FD567CF1B65978AAAC11D6CBD208F08758C1F5D9962282296A84B3052D924F25553D58D9F1 14B88FDE7AA71593B0B7D01ACF64864D8A321ECEDD1A1AC4E0C381552E581B116452EF86173C AE8F26C68B3B11EF710BCF432AAD4669CED707AAB0886E18694B0CCF1110D877D6CDD06A7B75 0A4B7FDDC3EAFEA3F8C6A5E74A75D8DD8E4BD2F8033BC913468318D799C95D8F980F450C6C7B CF178BF622989873D83270872C4C4004F00830B720EF4FD25A0A9C2D709B34EDBD8071036F3F B8CCE42124C309009C01167FFDD0CD902772AE83A601904EAFA3684464DB245515D6AF6A1A2E 5AFD0B90F6D2C121B4B86CAF7D801C4FDE6A2CE664772F092120EEE81A93D9E3070F750E4809 1AA0DFCD366592E12D17B627514C9F00F5F1858537DF0DDB2CA4E3BDEC9CFB76FB1F5A638E3C 7D399B369F7A003A55599EA3C1225246BB164A7EFA2DBBCDECDB3A662ED554B41B63E16A3501 98F19B7B5BAB796915685B88108C713277B6733733E56EDFD8DB620781262ECED9875A756D77 4230969057B06E2C33D3C7854F1ADBA2EB15B8A9DD3ABF30D7BD953DA804B83125D76BEA7C1E 0EBC885E07B4F03F1DCF33ADC5FA6592DB3B0E2B7100BCAB89F14D997D6E9169F581129DEDCB 6276E161AD6B80BA0ED346708EC2E73B018F923A6A2EE7282545C7B929A977007F0CE8BBE450 940198D3404CDB88972BAD4296E62266672A0AC99D38C68DB786E3872A4E1B19C17C3E1901BC B8D87785FB5EDA9DB640B1124D430A6C90F3EBBEFD70CA6C46792CB54037BDCC4C99430E4488 EC64EBDDABA17B58098674ED45E0FBDFA2E7E8E99E9BF853FB2A4C12C5988552091832374459 28FCE34910336AA490FDC251CFEBF2A95B38E649F050736208BD2DEAF23348B416C9765500D3 678EA5649A2F8498A0B8E3888A168AD93CE3E3B1C4238A149A7FF1DCD8C2C0100034B94FD42C 1C33EE40BFB7C5B1EF47B021704E9A1839186432AD1A65AE0B2F2B899DE7484F5AA106804DD8 1F0CE6F89A92720E4C38C7DB42817F0FAE2E7675B3B166A81B91F91E84A62B3969BE8A82A5BB 80A4CC87BDD4C3AD0E55EBDCE59BC9C84F049B68D9E4069B06A6FC4C7C89189EEEB70BA99CA9 0D003FA72C8A17722015C2E47C36F649896C0F7C19C0DB88EBCD0352CFA77FE21F6A4B949DF0 64847E1CD39C9D00E047AF4F5733955F71BCC7FB34D22D3C0CD5EF7011A97258B07569C68CE1 536BD1C8E0864D8F5329BEBAEBFBE44599C3BA7680FE07FD3413C5A86893DAA16F77E167A8F6 CDAE51C18E01F1A15C622BDE3C52DA37FC70102533031F914FC70540292EA1EE75C22BA10F6C 3C6501BA9F04F46B8F15FC457D931105CBB354828F7891C41DDF1ABD192FF5A912D8E5E9B0E4 FC9D7B729BD63D0E7398A8E3EE729137D53C8E716563990F9D7A745574597777AC286ED35AB0 F6571449E7D5FE6B251123D54D968F4136FFB04AFC97CCB5BC6C5AF8694982ECF269DADC8426 9465AFA8247C099BF6D8B76F09003FC9450F12BAD9535686CA32CC36F0E5FA4E3C809BD4681E D91214DC9A30796C3C854C051E2022DEFEB689D6BC100266D0D268FEA73A461B56228477AD34 66DC50ED731F7146FDAB4EFDA869F3A28AB9D380AE308843CE4EFC29304DF9F9AEFF085335A4 803BF0A8D69FB9FD0C2C3988CB136BCDFA47E99BEDAA6EB73EA3E996CFCD1F0B244AC604C280 BBD6EBDD6270F3A64FCD0A18C90FAB3EA578CB79465BB6253FD7A45729429A936F58CAC73F47 FE96920A21E1DB23BA1E200CC47890899817573A5C4D059194DDFEA14FDD8BEAA62ED7D7FCBD CBAAA75E5A225A74EC2799AAA1E5E27127FF2D668B13DDD330817D292F650FD0747B3E403A1D C15BA8BA9A86271A049C8CDC5C8CA2C231EE4287B8B6AD1D1A46BACB4DF6069A577E8FBE54A8 0947425996DA313C2BD0FD12049BC24397AFD1C0E5BE145432DE54729D09B2B340F6AE470F86 836B42EB0E46B0C1FBC033C0A9956681B243F7D6039F0F9EEE6D44130400228C48A7A5AA0A10 22C7E141A6E9B618F6EF01DFC0E00D8219BB749352D2F6DFBE8B9018A5622216AD49C2894600 654F6A34090AFA712C2A343A0FE43748A0F04044D5AB485FC474BEC3E2F9392AA8490ACD52D1 255FD8E239D4415BB2C3DA4C38D68BCB36ED6E84B292EB09347D063FA852DDB16174EF574CBE 31BBEC0CBB5C121A949E0C191F86F29A81EA0C9252AD1C8E6E1C3FD7F8D114EBCD9501251758 4C802CB3C98947C1F661D39DF1A1A4D327D293A088F03A683702C80E2303AC5E78E1CB295704 AEC4326C0100495A79CB9007EB715A8CEF5A1CBA69F8C22AE7F60027C39C507B06E2A1D85B76 087BCCAAF3AD091250D4976A0AABE280EED51F065D388BAEF2C4717673221B7D2C529771644F 05728DB0E647D3A9654ABE37E90B27B8B1F64CC7CC44AE5215491A54B16A4D4D2FCECEBF8812 76633CD36ADD5A39CC58E395095B338A42B30E960A7AAE507AB018474EBD4D31DE34FD580912 059DAA8D653D72BE8C00B29629F67FD820E7DDCD27A834B13482D9BD3CC73ECF907386E58DA6 9E3405BBDA49CF5D289CAB230D1F12A885C76D9ED5E6F664537AC268F04096F405192F734DE5 18E3EE750C0A4A59D570254DAEE61B1FF42CCC72DB585677351B0BF64F66940E1AD956768E84 E38C85A89F647BA5B2C585E9F999E3D2CE5EE8D2C952E429DC7F055DEF3A814886CF49AD6BA1 C891B7A3E3BFD464BD9F8E78B8F6E89E4FBC94CF284644788ABBC6C7412C2B4FA744C0EFB31D 93B8B1070766F2E7DA2912A075507622D04BEE1853BC9512BEA9F8F1921FC730ADAF63C8E34A 9877AA60DECAE43DCC128941F7F1372F164651073435A2F1F41BB598277F7BACAEF46382FD34 C4E12E29DEDC340DDF9043926C00A5063993AC3918F4F3F459EEBE9D47EF868AF77F3B8D841E 0F65F8A3A31A65AB20DB5B6D48A96B2E50038C35484DB0B6724D29562F78312E184ECE38AE5B 631F0816C2C8261B06B6E654434FF4D42122F225FC0B199C6AB1943AF9E2B25151D64537DBC8 CBEBAA55EE7A28DD0F194C512F28D3BD9042B095736E306446821E8F485B7401D9FC86C39A06 1289B17F36EB173EC2772B469662E5F0F91301C15735F092D436DFB259F2D7EBA9D0A70CE7C6 6D120A503D62CD6CA034FDD4D788ABD214BE1F48F78AD669AB5414E7BF99922D9A25404232EA A88E7E154EA686F27146353ADE207AC6681EDEE54C78DFF47FB22C751236DF01774D20D692BC 218B8B2254F3FED353B9FD0D8670E19448F527CB8D1929A86052BB51EF3EC7CFB53863F2C5A9 EF802DFBC4B1854251796B564EB7476B2FF6B6AB0CE99BD25E3844F4196653D0E11AE7404CEB 7E5994B78B1DB6E3AB153B47EE62DD5E4B384A511C71C79077BB0329E9A41E2D89913517A216 DA292797B86951CC8FA43FFA64C7D7C48C1A00DE6710EC7D8D17439074ED3CD7CD3DA79B54E4 247EDBE6087D8F71A1F5215DC2D35496CF3656B7A1D28BEB7F023781F1A68BB16356B1CAB4E0 DA51B5C436F3D603D8198808461063EABC2F7D9764442595B850BE047EABD819B75D6ADF1A3F 9E4591777382742521ED08FD8A3D36594D288F2DE8363E893BAC702DAB04F0E5505FA54EB416 3508ED09A61D284736D91683CB9688A3CD16637F71672B35A757A3C921BBC9E700EE41872B1B 8679ABAB584C72C7EC17C870CE0D8FA5B13DAB0E5B573E6E84E8F6613DB208615FE69E0EB951 2032EDBDF33BA8FEA1EEFB0DB8FDB418A89B9C5221D25D9BAA0EE357E246C45F21FF73741F72 A29A8F5EE9C139FEF8357641C900F79D648B201995D50D6694EAB86CF5B53141AC7F1FF45277 67654BE31EE45773E48D791A162B2DE625B0A3AE12B3ABDB1B4BA72F49CCCE822E402E174C67 B74874DD1923810FF1C641CEDCCBF00089F2C5D9D4BD6F2917ACEB0CACFAB51DE810A00715C7 2414105CDEA8931BBCE2E2BDF218E91532E3CECD704E00ECAB6BD9327BB994C60A9D05532890 F5C30F6099418289285FC9794D78F02D5032F91FFD96055E6AF3A1879DAF140EE73BC128FE6C D084593D925F79732F23CF234A79028F916A1DFCE5F28D142FEBC8448780D14B7769A55BA217 79DE070A6E9B4C17AD66AF7B7291A4F10AF69A82D541737E1C14801C6D724DADE22C399975B5 3EC0604FA2F5260042BF9021B2AA68EAE6C7F505BBC213A8F87C249DC89A10EDA8702FA603CF 4C14F40FD09E9CD55D6DEC1DF20F3EAD890FE2EDD6972DDC06CBDCC09F6967D615E73F3F0452 8BFD00C9C4926575F6037F858B28F48F2121A4955CE2A1C84EC8C3FBA59949DAC7117CBB037B 60C2B08FF325F74B8D6D9735BBAD7008B6AE79E8420523A899C6B796EFFC2828129F9674F6A9 EE55B2CAB086439A731B9898EAC8D7C23B43FAFCD045E69E6C886617C9E999721531E5C78A91 AD8B322C319A083673F429DCF09CAAA37CDCD31BA3B259AA4CBF5E9A6C70E5450226EF07D7C7 C297D9541244E6ABDE1E2858EABB131C4E4E20EE1C2B143B9E24B7678DFF7C90481E0AF5451C 1B87DBB81CEE6AF6219CDB8CF93139B58C39314F530A4A8992D2C6EAC3115EE77F7363D81DAA B0359C6118FB78BBF21589B3D7D75834733F8CF23D3E6BB17F6C31F56E5BEE74BCC7C4FF9AE3 1CB9BCD5BA8BD82D2C3AA80D1E8BC391EEFEE1C00E04CC44134D0F29F1CBE237894AE72BAF49 061B171F3DD077E5B4F64B3DCD3183797AE3938AB7E84695A9CF153419238ADEDBFDFF7D1676 C4BA02EB00F19FC1E682B727201C1E20B75EB284BCE2756ED63974ADB2F4FE7FA3FBC117BF28 14AEA5F78450A69B09BF39CE3D308863636AA4F4DA59115681866C5B225480BBA8FC219DC8BB D8A89A891197D7B5773C9D2BFF4088143003EF10B8A3B29C7596D4C160BA4C1D87D3828CB1AD A463B35211B11BAD337301B29463CCE7ED6F5C0CA763ACDD2CD4FCCEC6CF0387E0620C7662B4 3DF04778F0DFEABE49F06B0B2E344D5C9BF59E898771DA82A1D8BFB33E67F0AB0FCA4B3E2771 3BEB2ACFD2D4EFE88A6E93BDD52EF9BE9E5E93B4B88F3D8C961D3E9E8202D77B9FBFDCFF139A 00365DB1A7741E9E70FA62803DE7ACDBBE559B968E1290BFEA47816E15C8D2B419A66EACEF52 A6C71173F5CE6B99C1343C9CDD6A11A729BBC54BF4B14574F7AF4B33DBE529521D9EFC471EDD 26DBA914DBAE2DE73EAA36CEC82EDE487F709A1A56B32EDD5AE039026D2B57B85A0189079BD1 D6B1BE32CD05706832A55AECF57E946C4A0DCD4D976B7583A9FF609EA291AC03BB5AD0466ED5 5C22B2ECF7A573E6120F2478F357E7B7B7476E2B8F00F82F4FE170F3D5D71041359DC21BA93F 338727386327638FDEDB37A4F10FDF9C4F548D971194CD4109482EBF2ED92CDD3D21B15646DD 46EA6E010B6B0CFE064D387E9EFBF6236FD618FFFC979D69B8BC50BEB143370E5061B2E65DB0 4423CE2A8F0C9C880207E78C320241E311CE42C077AA89DD228BF28F0153836DA150332B050C 82ADB32FEE6DBFDAB3ED18680A0AB9BDFEDCFC2203C588AFFB481AFF930F26A1F7A0326BD1D6 E786AFE43553280AB61D1B24FE33E7019C045A3EA01E4E8D125ABCD2F09B4F54771D1E94A206 C5742DB08B79DC50BB5E44549A5C8BA98DA6AF2C2CE3A5E40FB0C94E4039EAC994F6E11AC94D E42AC5A57217C1D37BF132765D6775D5D5A959ECDA55B081908D9AE8907CBEC2265FF56DD8C8 E10732118883596567390E42471A8145098FE08253182C0969209B553ECB0098E4C9F3133A41 10B15E13FC2AC00F9A247642AE2FF04D096378FE8C32F36BF5F0435D2B70AE96BD9DDC376C2B DDFE12AD43F92FF4DD3C060AFE90F9ED2F3F579A54F72F8F8A1246254DC2F879D34AE11C0CB4 37AFF31E320CC46B2F7B614D3ABE06FC42AE3A2FB03DB3E592F2CD0273AEA93EE12C60C7E371 2FEDED8E9217E67EB18BD6688B83B75474475EE3A3963117F58E4A8F78129338D59EFC9E0898 8F35BA35E04B4C15F2384CD74AC955776D883A34B8409F2FDE5335F259B60AB2DDC64629A10C 67A15FED67DD579C6A1442ACBC0D43F4BD371553E1A16AB01B030274C61D3013A6582EFC2BC7 5E4E0454A7452A8E22A6159DF3A7EF74DF19DCD3F764B9C11CB9A6BAD0BF2B7C9BA5BB3F574E 3A9C0CB690E3D49E3ECEEBA3D04827BD87FC3546EF3C7E8155CE4991F501030EA2C89AE5F883 B1AD24041308517D68066B9B4B40C91E74491A5E772BB452563AF50F190E6EB705180C674E25 F897930928F29BC68C250170D5B54C1930A1D496B210CE54DBD1FCF8095FDA8B65C63EB0DC3B C519602ED48139A09C3291B421AB403C95AA19E3F384108C54C83F3592F1D73D469054E239BA 011EC3024C02872C2F5F4D6E5B1CE3BCCB92F633D11235E3F8CEF92B9B5DAB50A4CB88A1C872 7D1DB2B0776E162BCAC66AB3399721E2BD3B58993C386798E58A4FD0E370771EC6B0E0130221 AF9842295C3AF9C2B6BAC8AF8FDB127D34C0F6BBBB24A9515C79A6695D78E14BCE78FC3E2143 738BA7E0DF2904498E0214522EE3D8233D5166C6F35D14319FEA345213EC86E89EA473E35AAF 94BC5C2FFFE94377929661CB1171748DF2F56C889B62EC9FB1AFD06769CC7072CD356D3912FB EAFAD4FD13A3D7E33010693C26527F33C27AC8B1DEDC441A75367D1378CD6F3D76B88A0F5B4C 1354C0456F99193A35EB6BA9B21270ADBD2769EBF66A9E6A023E873F3B9167B292FD95DB3796 9C9B8A4E33E7E7FEF0D0F0E752E14F0B38B2C6320BD823135969798F4A127A8B7553A04526A0 EBBCD4FD2D4B01C3438D167EBA0D4DCC11D271B3C48B796B616C9D4F5AACA25BA8CC2DD35038 95CA8AE322FAE131F8A5E0CD911FE2E77A942D52F35DFA567E9044D9C1B73F8112ADEE7E1DE0 8834D5DA281E9DFBB6B9C6B71252066584B0D38B40D8AD4369F7AB779A5B7191E56D30DF619B 00BB9B261E867185E078291D6206B114CE7C63B25D3DEFA60C9883E6BC8C98E3BD0E42EEC829 C9313E55BB3D702FB1D7B66C8A226B62E8B1DC69C176409E52D85025AB01683C04370AA2CE06 DBD286C3E1BD833C7FBC75FB26B9B8676B6A554C0AE8870E6921D50A2FAD1EB75C8418653843 A02990F342CDAABC87E68717A872CB18EE805CF6D093C02E1893F588F8A6DC7894C39C45E1A8 390F6B76E9D2292F06DA5A3AEF9F0E553F09715A7357A6B6D801518EAE2528D02DEB22982B04 4D13503EFE857B1BC3D62449440421A04720AABC615A8815817D2D3D8EF337B8D8C0FB7D89B7 D973CA876F595209E7D41464176C5B3796C41A1CBADD1BA3B5D928819788B395DF9E50C16D85 8DB9E86E972AEE3B94FC822D91176A8F3B13ACC097BF8712F222C23369D2CE4855C5201C92E4 60661DEACC951ED9D2C114E06967BB091C5451476403279760E3AC917187FC8189DFBE4BD204 0774725E8B140CB4F8B4EC17BEA93A8AB22FDD4A0B21A1EBC43C7E5D481451EABC02CE3A48B1 7F822FDECE44694EC09B0866D2ABA5B5BFF8BD17E261C58A48956C476FD979C40346C1D6145D B7F5201BFD9733D1DB645E1565D9ABCC2F03CE5316BB44102C07E12880AC4E9565FB716815D8 9FC47F553F85CEBA858C57EC7C7A6C1DF4CA3AC7BA4E7E71A0378E3DD7816F3043A78A380C10 C5C5CDAC4EB0AA36B6ACC95989A5266C16C362F7F17CC3439D0E1943719E9EB52D582E271E88 DC31F5790D6CA84AC3406B8CBED0E3705CA2616F43A7616D7056B500C7F9FCABF3A5E0CEB41F 8F9F3879DB6315269E52273C9358ED7D7E72EB21DE208788F43AD9F404B02869BB6B5C73D313 40C29D4B5DE5229C168A7074B4DD97E5E2BCF468E97FC29AFB055049CD365B273D5DC7F0926B 7DF4882ACE772FD63A151AF5A0CB9E70EF5F416EE3D17B2D06315CEC1A6B0D96DE9D26839DC9 E7BA7B392AA4E7197F20FA681FC5478B750A7C6E04214E257AB15B1C7C1DDE9E6D44D604C61C 5E47E2C7851E4C1C0CA2575FAD71710C35C85B87FC55080D5F08B6640BEFCDF88B427589E940 442681FCC09E3FAE3A77E4113F29E7F54A8878CF49AA28FA2A1138A521A0658EB07DD2BF6419 3C0E996EB89711026FC687897F3F7FAE6F540D9537B5088E5C0C16EB9819911CC8AEBE36B36D B254E304ECE01D2F3B1277D11A8E2F5ADF183054E8516A0FC40CB03316C0F538EA6B1199C3D5 6F9C6FA65D22B125B83571A326A915C6B3200DC798F50FECCDFBB826B8A6388CEE22BB526AD8 834D3633DC50211E933C979D37B11F2ADCBBD6331FEF4F3B9992F7748086E52DDA3F3B47B027 38DFA6124B9E14449128FD7747BB2E16C25CC8606993A593570742511977847C0126A1218742 FFCA4AB7A08CED8BB1266E8018710DF2A7312A21608CF2C545340F62BF1A40063E03076713D9 5130CF04D76FFB1BBAA7EA2EEEA5D9FC691686E4F6338A477E2AC59A108C8F4BC2DAA4456FC6 0D91734637DAC47B65FD74B9B619B94774D1B58B0A14DD423202706C332133E49284268685C0 ECDED7F63C0B9D1E16B77CB558892E59031590EB933C2A8B603A1F8B656358322EDC7308146D 082833D49AE7CBE009419F78623E73FEAFBD092A438F4861B8C07B78DD962CA0C34F82491F98 14F1925344447712A921B1D26ABC6C89E8DD00F69775E6C0A8C580CFAF9743BD0149A31798C4 50B97528723DDDDD1C10E79C2F79ECDF1A1479063C6D17B0568B767CCAB08AF0CFDF68BB46B1 8F61780021A1008B6E7CF21B93347849102AA673B8107D0C34DD29C59878549E6A098E4EB5D8 E1D532F0DF9B058CD32847171C7617F696BECE34A7B90DEB9AE28C866EB172F876F6A2A80728 624E027CF5664203E27D34C2E8558BB67E43F241A457A37C21E8E9C55DE5DBADA35CB5D805EF 5ABB4F422E62BC4FF9EA332C616F2F881C6A6CAB91BD5066CF8E938F5AB5F6365B17D8D02FBD 957AEEEDAAF21EFD4F94973EF1C00A86CEFFE5E3C27CE6CCE082D0776850AEE702D2336A8A26 74AFE34E4BBAB7C92B0D512C51734C629845119E636278874501510B0DC3F6E14E0E02326708 9F66F37433E57E7CA920F574916EDAE9FF42738B14888487D87E744FA29543E1269978D9C6FB 71BD7D9D6D4646F6C2F702354B6442E1627AB0711B528F67CA90AB398169D8840DFF6CB09D30 BF3CE8822FC14099C9CE2A1F8F5BB873F11B71BD5DD09CEE0E5F6E14B6FAC5DA098793A5356E 0C0CEBDC52F890CB295DD54E63040A801DD51A3ABEF3F2226F6D27A5C71612C156A0CECEDABF D956F35A5EA4AD07225866EC415211A81957C32771D3DEF24104F0BBEA854AFD309EFB79B05D C32A27D5E36A1402772FC5CFA29664BA3BDD1E0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: MTEX %!PS-AdobeFont-1.1: MTEX 1.1 %%CreationDate: 1993 Jun 26 10:30:36 % Copyright (c) 1992, 1993 The TeXplorators Corporation % Hinting Copyright (c) 1992, 1993 Y&Y, Inc. 11 dict begin /FontInfo 9 dict dup begin /version (1.1) readonly def /Notice (Copyright (C) 1992, 1993 The TeXplorators Corporation) readonly def /FullName (MTEX) readonly def /FamilyName (MathTime) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /MTEX def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /parenleftbig put dup 162 /parenrightbig put dup 163 /bracketleftbig put dup 164 /bracketrightbig put dup 165 /floorleftbig put dup 166 /floorrightbig put dup 167 /ceilingleftbig put dup 168 /ceilingrightbig put dup 169 /braceleftbig put dup 170 /bracerightbig put dup 173 /angbracketleftbig put dup 174 /angbracketrightbig put dup 175 /vextendsingle put dup 176 /vextenddouble put dup 177 /slashbig put dup 178 /backslashbig put dup 179 /parenleftBig put dup 180 /parenrightBig put dup 181 /parenleftbigg put dup 182 /parenrightbigg put dup 183 /bracketleftbigg put dup 184 /bracketrightbigg put dup 185 /floorleftbigg put dup 186 /floorrightbigg put dup 187 /ceilingleftbigg put dup 188 /ceilingrightbigg put dup 189 /braceleftbigg put dup 190 /bracerightbigg put dup 191 /angbracketleftbigg put dup 192 /angbracketrightbigg put dup 193 /slashbigg put dup 194 /backslashbigg put dup 195 /parenleftBigg put dup 196 /arrowdblbt put dup 128 /parenleftBigg put dup 0 /parenleftbig put dup 1 /parenrightbig put dup 2 /bracketleftbig put dup 3 /bracketrightbig put dup 4 /floorleftbig put dup 5 /floorrightbig put dup 6 /ceilingleftbig put dup 7 /ceilingrightbig put dup 8 /braceleftbig put dup 9 /bracerightbig put dup 10 /angbracketleftbig put dup 11 /angbracketrightbig put dup 12 /vextendsingle put dup 13 /vextenddouble put dup 14 /slashbig put dup 15 /backslashbig put dup 16 /parenleftBig put dup 17 /parenrightBig put dup 18 /parenleftbigg put dup 19 /parenrightbigg put dup 20 /bracketleftbigg put dup 21 /bracketrightbigg put dup 22 /floorleftbigg put dup 23 /floorrightbigg put dup 24 /ceilingleftbigg put dup 25 /ceilingrightbigg put dup 26 /braceleftbigg put dup 27 /bracerightbigg put dup 28 /angbracketleftbigg put dup 29 /angbracketrightbigg put dup 30 /slashbigg put dup 31 /backslashbigg put dup 32 /parenleftBigg put dup 33 /parenrightBigg put dup 34 /bracketleftBigg put dup 35 /bracketrightBigg put dup 36 /floorleftBigg put dup 37 /floorrightBigg put dup 38 /ceilingleftBigg put dup 39 /ceilingrightBigg put dup 40 /braceleftBigg put dup 41 /bracerightBigg put dup 42 /angbracketleftBigg put dup 43 /angbracketrightBigg put dup 44 /slashBigg put dup 45 /backslashBigg put dup 46 /slashBig put dup 47 /backslashBig put dup 48 /parenlefttp put dup 49 /parenrighttp put dup 50 /bracketlefttp put dup 51 /bracketrighttp put dup 52 /bracketleftbt put dup 53 /bracketrightbt put dup 54 /bracketleftex put dup 55 /bracketrightex put dup 56 /bracelefttp put dup 57 /bracerighttp put dup 58 /braceleftbt put dup 59 /bracerightbt put dup 60 /braceleftmid put dup 61 /bracerightmid put dup 62 /braceex put dup 63 /arrowvertex put dup 64 /parenleftbt put dup 65 /parenrightbt put dup 66 /parenleftex put dup 67 /parenrightex put dup 68 /angbracketleftBig put dup 69 /angbracketrightBig put dup 70 /unionsqtext put dup 71 /unionsqdisplay put dup 72 /contintegraltext put dup 73 /contintegraldisplay put dup 74 /circledottext put dup 75 /circledotdisplay put dup 76 /circleplustext put dup 77 /circleplusdisplay put dup 78 /circlemultiplytext put dup 79 /circlemultiplydisplay put dup 80 /summationtext put dup 81 /producttext put dup 82 /integraltext put dup 83 /uniontext put dup 84 /intersectiontext put dup 85 /unionmultitext put dup 86 /logicalandtext put dup 87 /logicalortext put dup 88 /summationdisplay put dup 89 /productdisplay put dup 90 /integraldisplay put dup 91 /uniondisplay put dup 92 /intersectiondisplay put dup 93 /unionmultidisplay put dup 94 /logicalanddisplay put dup 95 /logicalordisplay put dup 96 /coproducttext put dup 97 /coproductdisplay put dup 98 /hatwide put dup 99 /hatwider put dup 100 /hatwidest put dup 101 /tildewide put dup 102 /tildewider put dup 103 /tildewidest put dup 104 /bracketleftBig put dup 105 /bracketrightBig put dup 106 /floorleftBig put dup 107 /floorrightBig put dup 108 /ceilingleftBig put dup 109 /ceilingrightBig put dup 110 /braceleftBig put dup 111 /bracerightBig put dup 112 /radicalbig put dup 113 /radicalBig put dup 114 /radicalbigg put dup 115 /radicalBigg put dup 116 /radicalbt put dup 117 /radicalvertex put dup 118 /radicaltp put dup 119 /arrowvertexdbl put dup 120 /arrowtp put dup 121 /arrowbt put dup 122 /bracehtipdownleft put dup 123 /bracehtipdownright put dup 124 /bracehtipupleft put dup 125 /bracehtipupright put dup 126 /arrowdbltp put dup 127 /arrowdblbt put dup 159 /radical put dup 160 /space put readonly def /FontBBox{-23 -2958 1456 766}readonly def /UniqueID 5018948 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311D70C1E2528F01045F8CAEC9829F31D648C8D0A29EA8 51AF41C327A0D569ABAAFE5AFE94DAD818C312D3CEE72F1ACEA0B701B6A5608521A2866790BD D5776D6CD0C7D971B9A48B96AA970DCBB8B76EDCB90DA356DC2529B665EB4BB80AC4F5B0F4C0 ED76861E399638AD3DB1BE4759C78D4F2E81A2FF688D366B91D729D63AB5FC9556FE10A07B81 904D879A7446DA82DC107FF41B0E3B7C2245D57B2EE9BAB31ECCFE9B79E3EC32CB1F10C622F4 BCE18DF0E5C4B98EC714593D6F127C5CF6D719A79B83C627433D3AA39CB88EF85D274184C4B4 C46CA5B496F20460ED75CCFB3D66073B710CC1AD2F2BEC4AC64065ED5E03930ED9EC97810F36 845DD5048D90D724A88FD3C814CE17C417C84BA45C43F5569A4D73739F71544ED91C657705E1 31F4D0C61752509FBE0212BDE9C02A833910DFF28F7C53F64B032C8E3CD2BA95C22177C3E053 2F8699D106F119B80549C45726D793B9AEC38FF4C3120C259083FD13C644DEA026E1E7C75DEA 2EC2341983AFF4D712C27C024393022797DB1500C6543D620F20C9CE973EF7D917E7FB3E6CFE E0999E06C9DFFF2D01BAC5B3BE0C47B2D5ABC02E1F0F383588F430FA64BFD5250E56DA323C91 F033C8F0F4E0F9CBB36EB8D4D25B127FDA1BB032A7088CF6FB34B617290DE038198297F2AF32 3602E5E96D475E4678E129D88AA15D5AD9CB58E244028CD8D9A8210FB1AECFC3F29299986C1D F1CB3FFA0FC203626E8E2F6F3A6AB198963ACB2B528D6BC06687D59EFDDB9C88535C1C69DA5D 81812B911C5EF9985179796D2B2E4E92BEEC47A4075E306C8D26431D8E0732768DFF70EF2270 D1FDDDDD4CCA0F209AD05C9AF2F26DA7CA0ACCC0349D554800072FE70FE3F12F846085405A3E 13764F457E887846DB5ECA49493FB685ACAC9E0D4C5CA63C7B16408CB7EB5DECB4429557ACBE 97A89D9360F0D29566678E6C2E3569923451905D8951F729D6E4E166C0150CFADE571C25F928 20FC6FB202F2D010BDB81E8BAA6232CD15F94AF4804B08CDDBC782C1295ED9D18025F1C453A6 78F58A7E1B7BCFBA4400DDA52BD25CCAEF380AF4B5003DCC06F75960AC763EC42A6EF95EAF46 F77B3AA68BBC3C182D192D602A713F8082AF7E531B1282E701D3A39904E4802C94B6DF379CC5 FAF66B0FBC4E279EBE2154C755887098745EA0303640D9ECD80AD923DEDA40CCA8136F760A6E 4EAA342751FEF587651A7C6394ED4FE12A07E33FCDC615954AB2599F9A75CCF54E560B978ADD 203D169AD883C855F40EC67C410BF468E7AD9A8FE58C601BF464797F492CB9354C0A21DEB7E6 E0B951770086D598FBD0138393A017903AC875192D5DA1D671E70F91C6CD9722D168EEBB3CFF B58E56373712AE6823A0B39FE863CE84E8A867C5D1F5611AEFDF25D31C9896DCF5E320B0875D D95C3A3F8BA7A6331558180E833AF7C1625D0A0EFD6266B95BA0A2DC769E694D43AB27088F81 E8A7F25A9207EFD5AB98F0390B28D219AC289FA217FA1E67D801778DA34B6CA048034A044E83 294061D64A98E7B5989EA55D9E4B046545C841452C7E8F23ED381387E1EA4E2912922C12ECF8 C2822605C9934C37FDE6571C287AE7D66B15AFCACC0063F3EBD6FC91F5483928FFC85FDC712E C46352ED74FD90778B8EA75A41AB0CF6A619FBB4187C77274565241CDACB46D3A96A66DE00BC 129825D7210A09757E2EAA6F6399E49A2FA7CAC9A2EB475EE8DECC5785DD1AD632A308872F86 B8789E949DE16E8DC5B9BFF155EBCFBCE24CB82077EA65F147D6D2070BBC33C7B2AFB4A55369 0CBFCE3FE274EFE7CCDD768B257FABC2EF28CCC3C361799EB6365F41927A1859EC2CE5A07EB9 FDC066040ABBB17E98C5287CF3DDB94E5EB10375B52239AF35B012882A8F3D338801490D3F3F FA3160C62D9E5E82EA6A456005BFA2279CC7E72397B09419D539EF1864ADC733AE203B2D8F72 15B1A449228AF2666A8E5CE4C03C09E85AFE5B179C139027E0249D75A2EB070463CDCEEC2CBD 5D113829A137081D755ED274ED76D511C332222FCCFEC4E75FA82960F8D544A384D7A3760675 E76312EABE9CBDA8B23716F835E358859A7A6468A890A0E5726F161F6D9FC73C83B27325E9E1 8CC902D1CB601CDC9C66CD1ECE834FA07A0FA67AB883E1A415429E238093EBFEFD0911283CD9 698B571A023B18E1BF83878518DF8F783E42202CF653BE501F77AB4074A5A2D10C569177DA76 0FEE25D893676DE5025DF26685782D2EC98BD168DF71B5041F9F1E502513235B3A0198AA12A3 91F664BCE4148D328685938AD62A83D215FA65AF0A2242FF495C97C08708BE977F3A0F635DA6 85FA0224E9A3106AFD6606C580DF1EFDAB02F51B8D1409688A2FE0937DC74503D713BD217815 8C6E89304F691C05DDC18B9501A0EC292B6900DB8DC47AF1D118336C459327E4E9134485AB76 4D7E150A1204B61FA48D6C64F70704118DDFC63F7FB133FFDE65F278E2C61A5913DFBF4C6C77 C019A13933B9C84DC671FA376BDBCF684EEBEF270C7C9BE054DD27DA19CB46C8AE6770A8C375 3F44D645C626E640A1328B864A6038310AC575AA8D563040E7979F5B7128841F208C1DEAB059 F4A125F72E3F508540C6D2338730B5AC7375E158CF49BAA7A095845ADB6BCCB32ADAF8163BE8 4FA8B8652FEB9D9E4C3A8660233CD8BCEABBE97F90DABE0D18B04018C129C7A5F5FA0C7D4188 68904E005BE329EC6A9B977FEF88806F0FFF2F285DFCAEBAA69E1780EE9BFD643EB41E380E16 B87BDAB8C7622BBE4F26C356929692E3269715482FBA49A1C638A01BC95D764AB297DFE358C5 0DC4384C443CE04BD2D5CC334870981F4F66F46388415CAE55F3CCCD74B189495505D75F945F 6F1BD6B7954FDC5A49BF2DDF4A32EA9437E1540BA8389C5197AF1D84091244AB411AC98AA6DE D62AF3C2A8D7027A055A23F486A62CB8C9B727ABA8D05638E4CE62735A66AE83DE1191C9D32F 5BAEC262235F051F6EA5F9AC9618B3DAC8C805085CE8D6C03C94E63C96052C776BAC710C4BD1 D34587B13356203A8B603F1095A582350E8EE92DC0F17037CC1C7A93ECBFF488AEECECE7AF19 CA0ADF364C275BFD819067BD6557EC7B726E28111B3F3A137CFEF5F9EEAD77DA5C079A67A0F9 EAF10656091E274CB52CB8196A3CC157720DA741E833758FF502507191B876D588AEF7E53B98 1F87015B3A597A93E1B26AD08892956A4055AA05EA2273E84F288B004027DDEAA151BD24F504 127206FED840BF1634F21A8C0E63BACBFABD1632E951D10912EAC843D2B956F12364C6B03C8E 0AE65C8FDDCBB882A5D6C99D79BEEA1BF8C76DB4AB6497B532FDE33C2CCFAF6CDD6B04B630F7 3365E16F9212D3F75C1D655663FA2F9FAE6A872B8F4DFD4FBF357D7B22700A26BFC882A33AB2 327E92A3070C72DC798687D2F01178971189BDB62A83936E0C0319073B037E96B6D125D401A5 325725ECA5E701A51B3B6AED5FDCAE2B5B6284F671E855BEF502EED95E9CDFF7184F09754B72 0292C91383363102EE9D37E6A8033631A0F4C11E197780D23486E647113B222E6547B115A899 A46FE587AE36FE3C6AA75DD596227975FD55213EDA6DA9AFC0B39BE1D81C4932E4AE224954BE F7E8FDB0FF8813F5F8D75E68F06B36F0796CE1E43F5B9D93627B630D2094269493161CADD19C 075CE39D381277496215F8B64AACB40BF623E2D68767DD05781909A1242156FEF405C0ADA5C3 6F50ABC723F4BE18CBCCC097DB5FB48E30E18B657D54F4C1154ED50B342B4A00F1A4C0CB45AA 61F4483B0691DD6D52F310451F68C58DE913DE1FAB27849D9B9AAD9DB3C7C4D25B797306F2C1 39CC43DCFEED1D0866ECA6F0321E6F49FE12965592F82DDB775EBA4E9C63A484BA1B36E636A8 420B80D044C3CA74E7D02F3DD99833F979B2BEDB78D9E95B060B4D8EEE1B9CA4D3DA02FAAA9F 37680338851C6DC9E2DA0C1A17DF83190E9FD53DAEBF360E0777C7282DBCF02CBE01C7183E9B BBB66649F3A4E1F30652D7A3D2D718CF9C44978E614025A9EA26A8F10F23EDDC9D7C563C2A9C D406563C9202F35E760ABD0BDA1B3B7AAF882094C8524F1D0F5F7EC20FF38BAA21C8D47B1C50 3EB79C31CD2A8133799EE820F71F04D1F71586D11C369AE5F131100B0D9538FE37786AEC273A 45223CF10AADE8D0E55F27916C4A6A3DC45F8FB0BFEC06F54DED4FA2F280191002E804E4558D F64015EAD87DA779CAA0AD5F30EFF42738901A1E9F067ADBF578755C4CBD14455A7658E468DF 3C3D37CE976809259716459BB849E94FA803C1D7CC9BB6EE349E12A0E64676161434CA1AF6FB 72F6F3D28776F147AB78B522B76625C0567E945BCA6A04502B17F5F876E6828F59852F3294D3 C7F4451A7A561E0CB4F19616E55C01257E2B673DCD05F939FFE995A8821D159324337BB2534C 1B9B07E1B9132C53AADC91AF43698D52ECAAC6B45AE7813AE95FE9B3C09A6676DB5E248C3CED 2D34D3162C6B7B121EE0B641473F8264836390FD68787D13EF6754AAD7478C4706D17E9E2FED 78491084131C407BFAF7281E8C64B65A11FE07EB111372FFA056FCBACA81D412080F53D2D837 0252A767C4D67FB55D9133D7FCC1256C0258942FC094F1DCF076ACD3DB978C00968B021D802B D11DBE9B4C0C0FD89468C05AC183606DA96A56A14C9851317DD75052A86E30B7EC13AD0E6474 8354F40A5F38DD025F581EE1B813B5BCB4DF38240DFA342A39321DD3AA32D1D206CD5681E3F4 B5C638C14BDBBA48381D18A4765C04525A43AED29F47BC2F41F09E98F9942462137BDD76EBE8 AE60C03970CAB12B113B0F15D931F848AC1201DBA25F4E81B7F158E033CF2A4DA3856CF6A74A EC130376A132AF3E763826B26BE54117AA646BED395228062EFCDFE78AF46ECF686871A570F2 B20CC2AD65D09F868189128F7D41AAE20DFBE729870552C0F56F8C4005D9161CA4A5498AE2FB F3E1FF9E02C050D3634D0B88A32EB75B3D225633B85085252F5939CEEB540D8B5F60A090B4BD F2BFA14E1CB911BF23E7C3DA05BB28AA3BFE0676A3DAAF56CE804D425DDAE061281B248506F3 88D9F7C4C95E2F0971316BC3E9BC783A30CE88A80BB247B6319721CFF31603EB1D1670F522C1 46FED5F0B12ACA993397C06BD37FB7D439D003007853719A9FE2FB3B67D27D546FA8F762BA53 18417F0D2CBA448345CC86A2338300D429A16B3453969EBC5D41BFCCE59F0EB5E443C6C706E2 ACBDD250F74936E53F443019F97D86536913756995AFF9A5A91D93E093EB18EEB08F88C9F8B3 354E6EF643E93937C2BE255C876272098538F181E68E686860DA6D6792D1FB2B2E1FE30F0662 ECEEA87B37C436584B153C615CA7703738F708224C0D6B58BE2C3AE36C0E892A563F68AE1B11 67C84B6527E34B98AFA281E4D03BB1BF6DD356D31DC794F92384A3BDA7EC3FE9FAA036575951 0EA74B8937E0E38A04A58C623F0AA1787BC826DAA2364EE4CFA8B01B81EE5DD843DCB4048998 E0CF8D18B10CA883233DE06779C332D29C87A7EA33F057ADD9F4C29A6970C56E170A80AF2A1F 56DDE778FC149469C5399F3E2C4EE34E3DDE95EB0CBD2A332B91679AAB4042DFF4CA9F2AB97D 06973892401B0F45A6E9FB9E7AD6C9B451DDE4072D7B68FA8C54A40276CA033E22783DF35753 C60AB951A49CDD141DD12330D13CB7A205941D2A9B303BB5AF4A7E14A0FCE57192BFFFDB7414 F4DC3262BE1E60DE8E4B5BBA84661DEC9B6C570E857F5905AC639E19DD553D57C2FF30F563C9 1C4CFC74A8B08A961C3892633F988DD2C43BDB34A0F6C1ACA3700C1EAA12EA6FB3424F693A7A CDCBA056556D7CD8E7AE6A966896A83E3AA73583A4196615ADA7082E964508EC5B20793A93C1 ED113A816EB7CF05C2177F127958AAE01E23A3E11D81C4A0718CA2897E1DEB6B911F70A0DDDC 1EDAFCFCCB9030BF887F859B2B9D471EEE0BA651D858B196A19CF76F3F896649CD0ABE276D3A C48EE62636C457F55E7C2621FB81EB168B861FD588FBC53EE99936E31AF2174A93F37C856421 CF04098EE6E737030C47CEA6465A967D3B15038507DDE2D3AB2ECB82F5601D04CD74E38D8C17 7CCB0E4209A5F83A5273FD99167B8ABB8DA1B3C661E8280D5A3552E1DFD6A53C6BA68118F6BB 86FC0205B1DCD030D4C20769A5BA10CDDAC3180CDAEAA8D689051D517B10E505EE47D2E75898 B66A8B12046EF9DC2857B96B15DF161B7EC0E2A6B32E11DFDAFE47031338CDF0263E80B3EC9F 488A00C564784C0F5C5C62F6587C6FED0FBEABE0D5AEA15703000D0616E74FD52A80A6BEB318 D7CBD787F16EB8BA66CB3AFF1D663DF6EFC7B2FD3497A9C5C7B4CA39001C65AC18D5E9F9E0C9 899D972CE5E6AC875CBEFFEC6E5342A3F213DA1AD0EDB5204F2708327DAE47EFD3BACC26EDCB 44E553CF419A6CDD855A0661D409B06EBC76C9E5393797E33C5C9A1D3F40F85AADDF78C4D48B DEDDBF3852AB90BB2212C9A479547E7137AB49E96AAA1EB6511A25F8A39FF0502AE15FB3B198 79573F54EA6C822945F4BC9585C23C6A7712830A89ECC8E03001EB382358E186492971698748 431E65800A19D6099650763E5399800A598D8794B042CBC59F5939716E2F33B5133DF9F60F7E 5AD538AAC1C67BC4C4888D4A966961BB879A4B1F6461F1868FFC4CC38C67471D7F5228E9511F ADDADB25216E255CE86F25C74B682435DC57FEFC0DDF09012D401060356AA17EA9A72FD6E485 4FB46EC0D4C5BE714979280F4C5472E746489B97D11B97D736F74604F4B61D907FD41DC25736 CD9A3962245BB7B889613EB3209A064C8DA94260C0BD5D3489DFFAFD3CFC6B897E144DDF5075 897CC74778692C369324580948CC0536033BDF403E7AD308C79A71FDC89ED669888E9DC7C9E8 4D094AECFD4136CC3225CACF9EED5BB84BF0B5B865C015010F1D23AB7AA2A9B1AE50801FCA0F BB9B37DFDF942F49884F2A1D988FC17A3665C00817272566907DAB9BC3FDD0C457542E91CCEF 013D2CB09464589552DCB8C0C9C1F9E43BE6238D12F2AD0B0FD5F91CA43BE45C92A6622B36A2 162CC138AAA8371F75F3EE74290951C3F560662A5BF77E37145593AAB1AE4F5BDA574A176C34 868F351C39997D7A725137EEA7A46096E0766EA71BA1E5DA00E33440EFA6BAF2346896EBDDEB C3C87CCE018920B1D0BEBB660A81EB233EA9923199963FFBC0B30E6AF15704CCBA48CCED2167 899B66CC3534EE33406F44D8E2C0ABED37E07217DA2F8C4516D98EF10BED1A355E8E8DBD593A 7724979770DD4E67B977829DB9F89F22AC31D7FF6637E02ED68E377600A438880A19FD377933 0BEC227FBA1631D1EA18730F5FD88A9E7B66DE04327921A52F52EA62D33F338FDDCA44951983 5FDB98FC4690EEA8EF5C90A9073352983540CDB356B91DEA0BE868F5EA905B2DB36FEAE31387 4274442BD6A3C7709EAE9A3637504E1686453D4E7D41B8F6CE63AFE7F8C4F3F70F8BC03D4DA0 B43A3A61106C6C757996FEE8450BE9D1D4E4B7A302E610F6E9E34762248A42A14F1AB4415387 4DEE34FC1F0805008D6105BE49F30DE3228E6F56BFB1AA7638E691DDB1F9A5F8B2B70B6F4365 9CF2133100306C9897131F0604930CB664B922790831C3F50E43D568B9916F47BD4A2F583184 A86684C8E44C23648A1CAAF49602004907C06E466AB016390233180E7E9D2C1B4353288A7366 F07A5D60B435068D3E0FB35351FF72A4A06C31E710E820B5874ABFB98CCF6B0FC2F1DC25F353 00C01E54A07EDD2AFF15194DD710F77BDDA55F7ACE05210362D3D29CE1AA7C338538B2595B52 3216B6F724F314A5968072C47C0A36198B7A0DA3BF2350281B8A635A83AD7B9F055383E8D675 3537187EAC6B24F21CB4F840BCA22E1A7417D730C9CCD0A97DB533723253F92A2B00BB5DC945 2485D1E0B0905DF2C6CAB95C9C4D501E9D45FE306FAB2CD8379669D56EDDB75D0F67E1C05C3B 47934CAFD125943FDB781C7393B2C426EB609C951A9D1E9222D16527C20C8DE9F6CFA0DEABA6 9E31F28A7253EC6EC44CF054AF4DF1B7E3C655A91FB8FD88D79ED755B45C39C02A7D73A3F888 F99AAE2586ED69F775384FB89B695358344BC3110BCEB38867A8CD54E8BA5687A552A30454A4 4C8D089E67A19A15E65849DB7B39576FBB2CB4074AD8B4ED440CCF3EC2E932AEA4AF06D87997 A1967737006392D6AF327387556A5CD54A991E5C23D862E9A6BD378E54BBD63FAAA3C18A133E B47227C3F87A3F70324E24D7E975873815F6140969942F53D36917C7DC8012509973022CE814 57FB43989D9F158810C3995C1D24A884853B9D6C250BBD49CDBA3080B3D59BB2F01812D59DD7 C1823325DF1609A51E4CAD16E75669DC416590B526402DFDC0A966A284E950B96A489DF5EA1F C52CC43738ABF53BEEFF55840C3894019C23AC6319F2DAE587BBD9119E64869E087C221E9EA8 AE59CC5F7945E133F18575D39F00B920BCAE3105332DD77E876A4CE7A71E278F63DEEA7408AB B4B110D52981C057B881CD06DD3091A8645231AF350126B7C7CADB6B89D2BCB1F3778F7F9C34 623C2CB1537923D336DC75F2B3F06FD16DFA756B5C37F7EDCD0999583ABE6FB56FDEA2A64B7E D3DFEC1D064166E57B821BDE93CEBEE3F41266927EFE03E646824BA6332B5D2A8B24A469D453 508DAB6EF30E56FB17467416039E877CA59088FCF3D76682605698D61837448F272A9EEEE609 E4E44B72B16031480A7ACCE56C042253B2761E8ACFFE13D09BAA39991AC83F7A7BFA671960E4 BB054C66A544FE3D7CEC4732A77BDB619E0410E61B93BB45463FABAE0E8D44A5CD77E58AB55C 6E3A9F076AFE892FA9E43BC038380B5D1EB9EEEB5BB5CF0C96E91730BF186AC6D9D337C989F9 4611C06666627266D0D304524CE7A87907D9C022E23000BAD7AB7743F2FCDA576D745B7D3346 827966287BB484DA9873C7F491F02401A864ED4836E5920E3AC084B2D47098FBCE36EA223195 6347B9CFF7942D60315119D3DD428B097AC82E009209A4CED3C5CD3B30F12457022D7E841959 CAC6AEBC2DFD9287ECC7AC2D5B3A1DA280BD4E1CFAF1D17CE1FE5C3451949A8ECEE3368DF1BD A3E5515C5C0F80B6273375BDEC432BDF1B78FE55F92B4B362DBD8C129C949DEB07715C8794D3 5C3F49107430C4A604CA833093BCE1B95163A0D1345406FF054EB3B54FD5BCDCED531E01D252 E6DB7162CFEF34AED6453BB7C61B7BD034B46703AE80309B4F5DDF1B15A40088BBA0FC55EB0A 174B97BB1D934C0BA8E5E6ADC41617CEBE9F18047663C635EC18B9FD1C0FAE76CC9038933BE8 8C704A95D2F0D67F57FD061CA9757F46DF057D57D5826E2B49FE4454AD2671C7A4AE5F24F83D F0A6A878F4F3A00720067DCD7B05E55564DE4D8AAC16A8C30DEF7155855D68DBC9453D5AEA88 4D332E150A2AD5537E481D74DF2AE87FD227C08993741E9ABD9543D98767B4FF873969BD40CA F3D153352A9B3430B46B88A4BEA305D955B277116090A3DFC81F56384E2666CC1F36E102C546 4D09870A2EEB97FECED0B99C2862943C6DF1877E178141CF7361F74399268F4B77453E0731F4 BB8DF0011E6328346253E12D881124534C9A64BA85D272A4FDAFB1DA8FF50C4F149D37C251D8 3B5B4135C805D90F33E1AAD01914156A98A6AC178639D10387460A56D0C0B50E331131BA5522 AF79ED5347EC80164A111D7C2286C88B851C43E893580DE162FFF77C0887DDEBFC82218434C2 9B33A86140E4E1C9E46E8B49A83F656F0B46C917F603CD7CDF15CE8B0D49165E569B3BF18BCF 9BFCEC7DFD8B2010DB8D863C5C5AEDB36C0193392D565C24AD764497AB5331E7DF468ACF96D9 8707CF755765D22C8876B2F15FF1C4AC403285BC2F21737675153288EDB766C6ED80588A503C 2291960EACAB24838E0F300C36D0E2050AB6C8D39022DA292FECDE19A62D5D539D3C66DBBAB1 7AB4E9DDD0F3A4DE5A49D513786FEA2F0DACA2F3D52196FAEEF953F7C20386783323946EB1DB BC774740333C5F3E6AB79D59D2C712D7AA90D8E96C5573925879D922E1807DE2039E381D1E6E 07D373D4C30F09253F4DEB3C8EE7ECDFF7A141F7450D0B63749256D96FFE8D8BE744786B4C28 A762FD6A6403D8AEA0D4FDE81DF3986C7FCF3AEF0823176E1D7B234E4FD9C97CC3CDF7308E76 BEFE9F11828AE7038C3C0D6E7ECAC8220FB9D05D99DA6B263A316A552E5070DBDB9582242492 62706696970665B510F39182A7B79AF809B018353DE9E33FF4A745F777AB78E35BF901BF74E0 45973BA70C96F2CE2F102AA4B5B5C997DF01FDF12A278247577D70275A2EB629D613898899EE B39DFE950A7CB1B9F99F6EDFC378CE0B1490BDCA4F7E5614D369DA821C105D8D52C7FFB12F9A B8DC180F59B137BB128BBC6C3764E3B8A44FE7152535D1DDFD152E2B9C2411EA530937F11EE6 379D027AB5EBDE8BAC03BB9697836D2981749A4634A772063F04C81D54FA0CB61899788562C9 AE5BBD0E3ACAF3E4607986851F7DC7F46C48B89BDB9A18E25A053BB3E84740760E91D2342225 6109FB8F64F26F5E1E2EC47A09CF9392FD00FD61B422D597FF9C3FB325D4E8FD6FB892D24E28 CC2FDEBB9E004D10A5AFB10D4467032075BF0B44DB26FB866E1730A60F87A3FE2E940E982A6E 4633B744D5E5CA36D6F6BD6714ED3478D64F8CD7F5A764E4EA4EB60639DA4E3B5DD0B6532381 5820A6C70EF2D53A47B5085F9C74BE5E5E42E8BC5DADD35EBFD9E41C44A3B04651C5D62EA746 B77182A81207D83D855F981CF2D1A23979D485A93658DBE1C69A003FE86AA64C6E7C382C83DE F48927EB05BEC2C78466FBE79CBD59E73FC933485689D410A078C59A70B2B5496D1622AF30E7 888EA2D3C0706045584AB89BB2A5ECA93A686D7BAD8F2DF0BBEC73F4B011EA252FA4987922E0 A1E9CB93B9F3AC9273F78233BF8E3C9B9CA538D170E01785846EC6CBA18234C2027659D0252F AC7E392C40CA3BAD479B154DDC418708731E1A70446D67F69E73957922114413A1C8921B91C5 B542C2C646744128FB255A6CB3485F1CF409EF9776F200053BC89A499DACDCBA22613FE30654 08DDA78A9741D102CD5EC74F7B6E80DE740E45D4A64DD13B70B2DCA6CA65442B12F922119471 CD610408731735DAB12FF45494BD15D990EA4D6EE33AC20C00BB528C91CB7A5F049B187B9D7C 502DD7DA643FB5CED04AEB894ACB2CCF3D56D656E0551E5757104BDC29DAFB6C80A10B609494 1EC1041FABDC2AAF1559E032AAA1B79575C4FA9D4A8917FEF7FA6C349A389E1F0D36D5FCCAF6 A6CF66ADECE06D92592EE8867F2B142A8FC2FB772DA6C814FC6F6F66373329F2CCF69289085B 8AD7AA5B88C6F7A19CFA5E37BDC61561A82DDF0939844D8ED64BF11084F32C55E09852C6FA41 A1D9115D0C68DABA31E4FB77D04E5A2B7EB79B521669C629BC9A7CCF129A2A67C92826A435AF 47F0243E14F1F976EA5B58DA6D79499332E85BF2DB5A7E95230979B6C567614E6370A9B341A0 7D7813C42E8A1251D77AC6A59B6F5B6082F249879D2122B19E7E5AC42026B1EFA799BAAFE866 B4A6DA7444C903FC0B45122857BD20B602883FE1E2705C0A27BAA636D0356A102093CED97308 1BC38EE530B62CAE35C5847EAC973F02BBB7461895C526AC25674C972C4E61BDD86F4A852E15 AB6D94403A030F32C8F3263113A2D1413E624A8143EA7A9613A2DED2C243266932359120A083 673020E4134CE6483987A1C77E140E6FF5DCD2B3ECF571A52D3411CD5DB601EF4147C4F1DBD1 EB16C4B838CB9A6640D8AD1A526C312E5CC7BD5AAA9442A6B38AC29FBA0994C91FE575840038 13F9B8FEB92B20AF8B890BEC220BF995E3680AD69833D08B0357B6606FD60EAE95F497FFF1A8 02BBE1D3BB3BF6905FBBC1F97A20F78A1B106DB9C158ECF1CCD16E55048CFB4C50E40EA9B9E6 0768D440A4507F3E76123616FF79745C76F9135BC1104A9F98D6B8A9D299C0E8D3C0BA2FF429 47CF866B5487F10194A1A8E672A330C0B9CC2202636A5360E10E53FAD86A2D3C88DFF64D4840 681B6F96E9E797C459A07D0812550908F2AC36E684B1DBF3DEC6074B922E091277493485153C 93ABA41FD097D94F4BBB95581670A1EFF27A0D267B9DF689E2BF6FA657F87B390EF731538E34 E776DCC1D14F8959A99AF11EB15FC59376BD1A136E6947B9076DCF62AAEFB50C8D6F9E10E090 FCC17B6D90A0B05726F9BBF4FD92E08E5CF4CE66C426959A9F2E185B6B395B0DD4C80BB283E6 16E6001DCA44A820C18F62521F1F1117263401E30F84C5974461E6E270B72E50E81CFE305D92 4D26924E5B7675B52EDED59B87AB5606EE5ED95EDBCCE5DF07A0D41492A366C35DE50A4BF365 5E6E0F24AA7DE91A16EEC22A9EC0F9667C831759C688928E217DFC6C7E33516D46A225E44A6F AF58C72236D9FB9F2C13F05FA5F92AE1DD970420B7887E6DFA6C01D9C95DD674863AD81AF472 3413C430CC912FD0FCEFF72EE9119C4A496C888C0562548F0792897DAC12479411BD39D5C969 75B9140107D14C8BE1EAA5C482455352C2C5ED15172B9DAC379BDF76FC2E8F11AE24057F851B 0F41A7325994B1B20802F0CD520D439770029EB53E5E989E549F3C055CDA4E37F78E01E9D2E6 A3D2DAA41232F7CFE9B7E74D87F4B75FB38F72D541D5EAC0D64567AFD28D6D3F07A4E649A853 2288416A5A51242077DE5138F6BCC2EBF7524D43A6445BBAD2C4E934FD7BB827FD564209347A C988F9DD9DA8C73A4CBCCACA945CA135FE83DBDFF85E2622728199FC975EB14B425AD1299F3E 69BA41D466CD8E6E9146C0ADB8E93ABE70D43A06CCB205313FEFF9B0F22F7CE37E0F132B8474 5708C1BB0CE575D972524FA551F2E9F8A06C0B2312137578553D9D6C98838F06FA690278E7EB A4A3344665C7E7F79C7096238D5CD9FBB12BAF120D1A287B831255A457532BE861B5A8D78972 2AF86F49EE59915E456E27A3283EF8939AF44119DA2F508B0F0E6DF46B124DB8EC8454B048FB 6D29261E5819785EAEB7740EBAB7049A5641942407861D6B31E06AF206E51F62DBD88057FD58 A1E41DDC6FAC15D6ABBF4A50ED13A464ADC608BAC45A230955B5E827CC57C2260387CAE9DB47 D0E35812414D2CDD6C643ADF736AD15E1759BCC714C45CF38CA8E4C617EA8E6453EE4A908267 8C3F90B8416AB1F4BCB0D0B3E50198F36346F778F7B572FECC635AC8429C17E2CCB4D8424C01 69FCD29D4F8BD4364AAA30202D285DB593005D826B29F0AC6AB3A226B394E80580B2D7DE2DDA C4C34D35668D3EC1B34199FFFD25D8DDAB1EC7CEC39BB76614E4BA8B30E75253B529C27823BE 8FDBD9C7103414836F2F955B40B174890B625F54C723E728D0AAB99CE7D73C2AC582ACCEDF5B 0671C07A97D0A9ED3AB5A4B163C83EA4C1C05F4D6DB2609D1E785D42229D59EC182C0C02719D 4420F72C6A9224B62FEA5C885EAA2D61DB6E56D29EA8C091803A2222B6683577A1867796F2C9 F5175615F6D5FBF9E620AAFA4E60C20CF733EEE1D51F5696AF482AC4AD11278E56EDDFA7E0AD 533FF3ECD2D379C573FBF8E16E3CE11D8EF293967D76408C9C8A3B6A884A5DE9B1D4D40F8086 48A7BDDE93624BDBED92CE790151E0081B9530DB07E8E982353CB80B50D8B63BCA09A6C42A33 991C1A305F36857BDC4D18C5679D5716C1B82039C9C9E303B79378B012340DE204495D66A06A 4415980D023C07148785F6A2DCCAF9E86FF0C9835B47524F9A5ACFE9EBC53F7AA3299D595B3E A3867D71AE686FF0FC9F194279746358C72B2B5AA73E6E92B41AB468964567CA14DC213338B6 4079965E53EFB8E7EB5474E32D67916A66B896D5A88DBF605CFB36E2224E748FE4259844E6F8 A20C1E0FB06F24772E06EC3C0E53075AF7072AFB2BA562A691B8D98418F38E4A7C7CD0CF7F45 0C15BFFA0A267FAA6CFA0E82D49D1AB398442119493CC2A2E15689C7B01992CB73AD2EA3DC8E 4939739AFFF6C7F1D715DA77488F2B5E87E1FE3FF2477B5079705DF17BE7C6ECC949F0904C2E 89DB22A6890AE6B915896C47A74C3ADD1F8FA3FB08CD8C0FE48D380871B84E0E2E418CC81629 3DA3F3425B19A66C05C24C7B5F2336EB7D3F57EB972EEE70A6CE9D8A8286025B1DA5130B9465 AB5A097CF05F99F2F5265BF748D9573EA0CEEBC1F2FD5033141264DEDFD7746B65D207FF6CDF E8124AFF6593C6443F8411DC9F5039D02324B14AD8EA9B1A361AAA6168BFA7C813C39CD0E6B3 2EE696F8C67E5D15C273C12415C40C1B0F2736BFA6731FF10391DC0E23983905BF3235100413 7986EDE64D0C3345417C1186AB1AE9E09A98C116DF8B0715FF2B1E99A2FE5FEE1B89F3468DEB AF2DDDA899B9C1ABA9B2A762B5EA826727E30E158877E646D3CBACF83FD7691BD69E39C448FF 0339101CF7D47622F295A26A884B236B7E9E4BAE6A8DC38A9BEC2E986552DEA9355C1DF792F0 3DDC318582918C8BAFBCD567638C99398AF9AC3940F3E3A37D5FB6B2129BB3620742B278A0AA 044C096B674CD2F6CB4526552FDCB51BD1E7832CF1F57D95D92CB43F409EFA47C0DAD18FA479 F72F8657970287AF54C70B695ED1F157A3D171D7A16C30DF4F9530D8489A9A4720F5749659AF 864F1FCCF90B870A3EDBEAE4242893C425F5F0189DB04E3738209737979E12214482DE3E42C8 9D9E2E8413AF5DE8E2BCF48862E35CDBC822B75CE3475799DB6E1C50071A91C9E0B8B2A23B4C 78F63DBE558CF5F8D026E1150A0A5A56EAC99C7B3BD7201B86ABA3A24845CC22630B2927CBEF 55CE3931698AA96AC1B7B17D9DA16983B3DC05C428184A0F86C818DDF1AC539BEA71ACAC2FC5 4FA6B0B63E3B8FA4647B972815677003482A8851BF2DD7757698A85E892753ADCA249E607FD9 7724FD34D5B978B683B7478A1F7C931DD1696B7049C8E4A949C28C540FADC908674E517CCF69 FFECA21FA70C6034F2C1DFDAB530A6C0DC6F8F9963147F7F393BE5AEC11F95674712FAC4083E 4729A74D31B88516C169B62385D34423047A3A5AC7CF4EC1B3C0755498A06EBEEF941844066F 140F69FB48D6E0CF4FB678196E13A991BE17A8C9681A535EB0E379DB700C3703BC7C948B84FC 2E983B77AE2E926005FDA1DABC948CFB557EBBA947F0395FC7866685499C22E3812206F16DA4 0776AFC8AC141FDA9A1E3C06FFABD1F1471E1D7149ECED3A9F318932EE192A85D04C26697381 F4C9E5B3FA36BC2C071C08D4C2EE9D51BDAA5D91419CC54F6327353825BF4D983307A7371CDC 9F8736C6A79DE8FC34182262F5D8F58AFC30254DF5E9B6346BCFB6AE5739E9A5257596AB8D60 FE0B539A5F8CCF794AB021762104EE69FB1305665D2AD8A04D1C872ED9F45803EAB198402647 FE98E189FCAE485E55A5198745851D39330456DA286731440167C05ED527A3A3592736FD58EF A01209F5D5BD52C873E31DBE8913ED626C61D8F759B31A49A0464CC8CCA713CD8C9796C28EF4 4F6EDCFD2158C8753F04175175DFA7D174F2261B1D531D3DA4B683FCCD094BE75D58C533CDCE AB481E9E72650164F34C32689B9E5B3E15FA75451CD0412CBCDCDEE1C55202F63018E2479E12 66B31DFCD8EB29EAB003CDE8F9B00708871829E9E482F9F84DABF50E04A005758FB6F79A4B04 BB349944962E38958F188FA33DA2D33032517B33A7BC638567C2C09BE64996495ED9DDCE44B4 2C015F39FE9DFE6A486C1D3EE47FCC92241A54272966B90F9168136BD5E4B9902247BD370827 4247EBB014FE046B87477898AD03893824065CC8D7D7E269158CE72321B28597BEC407EB9DA6 E06F7A5079080273BB51BACFE3C2A233C6A5CC3F7009A981D593911C8074C8497A097D7F368C FBEFC87293DACED1B267D8029C9341235FA531E9B9CD99A47BD939067EC1035778E9F90C4BBD 42C11F99FC4E2DEF0C65DD628717F794FE3AE20508D39A88F300D5FB033223A295507A212F85 5344571D2A09E4644AEDA2414359CED6977507B64A4ACA4106584CDE9766482E61B8B21E2F9F 365670308D51E73E805137B7EC6E0CC773B0B71EF2B216A8FD98709723AE86757E29C5C47495 57C682614C9E6B9BAC63388312C2CC5DFE9A63E7C8E1D30D02D5F787142385DDE69E3EF14C2C F7A1C30389ED2C63B1D19C1530150BC1DCEA91AE06280B9D1C0CAF0AB2C48025D164B37A1983 0DBE39932823E0B9978FF7D401636AC47300F86148290E0DF001B22B62483740CEAAD2A98F82 54DBA38D848A15B3EE2C80604624E26B5A45127F58BDB3F1E021C8E0BCF4258F33AFBE778AAD 8390B6E7E82EA8114169E2775AE75EFCB67FC4F104AD327701A3F81807FCFE47C6060061AB35 DCD77BF335D806B26C45648F5EE0B5AE053389310D80AE22F9EA2EEF1D068EAF4C776C0D3B2C 70C8D533F6B6C869B2CB9BE1104C638AB9057764353011728C2EF17E19DEB436B0D4FD544DE8 0C0D5570FE9250FB028FE5C4F12A6353B65F87E28B2DDDCCA0936BD847E3498B0E05E53553E1 49B0A2DE1E57E4D84FD6516259C91ACED13FB6EA70FFC03362E35146369FC6D2F943C4881A9E 68FAD45AAE9361B0EA34749817B3F98DAE65BBE2260F5A8B06F6CA003D16416717B7C740732F E19663240670C04C558033793F21BDE8107F8655C7365D7C2EB1A6495F5FDE6D185A85A68C09 4A96303FACEFE684CB75B2AACCEF45AD68C46B817BFDB41553FF360D07DDEBA08F5441E098E4 E4A70704C4A6A3E07F6E0E28A582F19942FD7F53ECA391F40865EFA5AE9D6EA2359F8EC74C23 D92585C206FD8AE87264A06DDDCF36720A8026525A84D0D68AC93171EE2E87571567F300D2DE 3CFB7DF541128107227D4949F4D2E6BC7FCFB1909DAFBCA11414C31F9A9C6DE380CE616B9143 5C212C7F52F705BD46620EC2CE434BF73760D3F574894CEAE00E82DFDEF94B74E1A54117B4AA B523186ED86DB61A8B842E3869BC2BBB3CB0B587E80963CF1C01D385F20F762CBCEECB1F5E12 B551447AA9B8A8FCFE74E29C3AE2FD8F651553F80C1AD8D32EA25890D1B3D7BC9EE3571ED872 BFC14AA5E14B1E24572CF6DEE0A37F30CC26AC91E405957E09EC263DDFEB7870CC24962505FD B586FE0D2D9148E7DEC517034D87A3D59AB534362BE565A0B0E83C7036D25F912ECFF4C87BCA 1CCDED9037E2B51F1411455F1767974B52C9C040ED0F340DF403C70BB2AEDE49D0411037F27D E9723419734B3B62613A6AD0D7FFB6B4AD60A927E7A0F6D0770734D886D9CFEFB3D38B701DF0 88A05738AABDF63CBA03E97CC40943CABD85AE31F3AC3F741945067636CB58B705CF2B6EDE2D 26E721E0DB36F4355F2493E01347869F8452E7CF368B78A163711524FEB83A87F032BE27C9A8 D0EEFBD78680F8196640D575A360D916E0C3C4BCF0BAF6209CCE3AB17ABBF315BA689BACDB46 4C8E64F989B3491D8644C937DF9FBD9BDF4A46F377673575215D5951A67DDD00FFC27F4AF099 B69A0E42B06A1D012D81C03E7A90893F4E7A9E979EA66C1BE4008443AE66D2237D61E1D51981 D7E98E2BEB93425C27A9C5A2111B4806A9C55DD63E02B8E519E3B4DEFBAFA1D97C0CD09D5548 89E67A37FE6E7843DB388AD4B211990DCA56CFAE1A1421E137E340DD93A13F82300F3BAC6C14 801160D7A486E4D6D86612A34C3CDD889D310A4FF1DDFE9E086C93DCDDC7C9C855E57B2FF11E EEB1602AB284A3C16C90471E355EEADFE60D7A4605471A2CF73F6E8C618BC3EDB50022194C23 F6843929A63DDC83166B7804D5692BB462C2D9D536630BA9E7D09607F5F3D234C39EBF4514E4 A66525D654D3F85CD8671B8FC7EAED36FAEAB0EBE66B435286C4F1BC9A7260A249FA6AA4534D 905333700E8575207D7CF4572CAF801E341438866624BF5DB014FA1D54E078241BE2796DFD0C 41A33A665C77302D6789152BEE35AB214762250491A8F6E2E5163DECAB37F324A6B24E4FC60B 4E8D09A98E8CA001AC6005742C697F2AEBE6DD2D6A315EB1C2130C62F0BA71A7E623979845CA 61CAFDE6CD3DC0E3862364E0326BB4505BA76C2E1ABA60F605C5CF16FFB22CD2D473B814B6C7 1F274218E489C1DA40FDDD1275069D5A3FB8898B3D886B235ED23520CD36D888C484FC952F13 E7A9A184B4892B88236319881EB0375F631D87C49C5881FB5F9BE508B2CF479496AF4B0A7816 CA21921563296D2537DBA7A6A5E3C2EE64D14FCD53973AB4C8623CD3E0574BB76D50145AAAB9 C01EE99218BDCA2250AD2773900B3FE46FB429F636F8A03AA3F85B15A65DB103C3DEA7A70ADC 8367C3F20425F614C09D7EDF1141E4200B22B0F0ABF246C4B1F3FB4534B0AA0193B35C6C9282 3BD246C28A8FA1FB8CDD16C35E08577D7CB9D54EA4ED905ACBB4068933A0F0D8BE557A8CAC5B 9974E12FBC08ED8B3046ECB8F02F618E1AB086BCD379433EF63A578B05A4C0046C083808E858 1B93B2F0ABF4A2A6416617C8C167BFEB25DD348729DF48BD207D8649234B5AD4DB4387B53015 BC48ED1305D24AF73F02C649427FAF78003B5CE8952199763A7638133EF3D3B0AA5B84E44146 73963276A76A6B8953A023D3643E4B860C4847978F5995FEB031C904466DAB7219BC833903E9 90E24467D0797B8780238ED5B1AB05FAC6F2D8168CF727E0E688020D72D68ACA98B62FC686A8 1AE8B9F9AFBA4DA0CFC118D04A81DE89ABB0FECC2EFAC05B98724E55FB884A83DE2A0543B235 466CA665ADFB740D962D89F5D9E0A4BAD4FC8301371AEBBBB28AC5B6636C8892B997FDFEA2E1 3FD233E46F988F95559290A7C61A93EDF933533D804BA77DE5CFF35B4BE7B4DA25E7A5ACFE76 F9BE34CECB3F02C706CB40E260CCA8EE8F68E005F87608AF65A7296C0B4C2F90A3802B11FE3E 6663B5A046CA1EEDB52C50A2849B2996525A5176358B3C91286885B67469EED54AD644F4452C 9175871355ABAD45682F3DE3FA693B76B6F1B71DA5BEBDE7F7B4AD091FCAC8A7029F7EB3DA1E 88794777B6213A9C78F6218F025F81BCB0A79CACCBA5872485272508B8D9D17995E11E8B02B2 95EFFEC42C0CD4A8299011A31D6354859E96343334B32D5F7E14A1AAE407077FE249C5182BA3 39AE08750A3EA81206AC36E3BAD944E4795F2D5BE769245D83C76311BECEF343192A611C940D 679D1C2E5A9E7CDE3018A11800C6EE7902B628FB365ED37E115F4C96629CA4C7936EC37437C2 B6F02A7F5AE65C1E88A6F382BBACE20015403ABB85B52FD484684A2C850C907AAB14B8AAA0B6 0EDF2314B64ED3F1950A058D0D9D8D6AEB6CFDEA33EEAB955A70953B430EB9ED9E553D594297 FB154F799A5B4A0FD82B067D8F234003B0023643CBC4FB636D3FF6B7F318F9C64DED734ADA11 8AB8F138CD94C1564E43B92CBADCFA54FF3BFE5B647A5179CC92FABCB3638063DF444F17C18F 19DB63066D4B2FD7CF2B3DE63D1CF486DE54991B73D27E6DF0B63A54D45946CEB5C4BDCC9515 E97A435349D7035155A42C280B075B59BC89845C6E294641D8BA2B49629C9DCEC496EFB8C323 692347122D0BCEB8E793EE381647B5C922BF838A8568C2CBF709DD6EB70D38923AF564F04242 EEFE46752AA083AD0F19B0A3492F5721A85A377A9C160A604446C2887E3123BF14D0CEDD2CFE 179C11DC231F9B3F06EC99C1C6D18671DD57204FF482E1E4D93639246EA912D6CD1005E10225 F8C8DC2F2E540C93D9DB908AA8B1EA4140B152277A8AA3D3452ABD078741B546012FC73FEB4E B882AB0C15D125B6B3DEC6E82A4EC1E11C837C28326E27D17879D9F3688DB1F38191426AA4C5 0C42113E3A7005F92254B7A338E19C4A06CB706D903FC5359D408261F75F9E9C63D9307BB8DF 8C9F1FEB572D2BB11470CBE05E9C45B7C17D8A34DE703FF63355599448EA18BD15D7E8FDCF6B EBBB2A89C27278A64A154E2C777E1502499D9A51C1E9236F70567DE5B748AF1949BED1C5409C 151F510424C00EBE7AF3A82D9FB8E898900C787ED304D05159B118B52C8826DA36049B70D6A1 7BB445711402F8D6217A349B134CFF7C9852515EAAA496CCFDBC768970D464542F1076340507 DC62041D7F32E25BA02EC9D78F737BD0ECFC7E2B725A050214DFEF8FD72EE67C0624A54B2C00 B15768B0165F006764B85385426915CA8A3D8782DC05C9F516D85E5ECB5C594A4AC4E42365BB 4477AFC353E5F248142A3D5A22632DEB3DAC54A79CE890C7EF134703CE3B1C1949858B17F18B BCB1FF377C562D6281C3C08A053B50CCD07CDB20C8D002CABEB082BBF179B9A081C16C3F7772 6C44F8A3D5270BB63B34E8CFEFACD347F448ED5E690129D33812DC4BA7853B24735BD23149B9 9D73654B4A22EAC87D19FDCAEDDD519EC97C6024B22BA98162DB5B0769327AE6B9D6F7ABE791 3BBE25CB9156492D57F4F32E47661851DC82BDBEF74F3FDB433ABA59D6799F9B5FB956950656 9FA852949ED182BD50D4DE2FF1BAD9EB9BB4D617A127ABB7070278A2AB2FB5E518C03B0E4E3E 15D7531C6B929C74AEE4B275D4AFB0000A309C7AEC9A10C9473FDF77A50F9AFB139ED61E0919 944E72A0ADB6CC74B9609DFC9CD923C3C5C1BFB3546628E26FD5338005FE9389A493A27594B5 8469454C2E2530C711F3F02951081DD33BF7A3DB773EA7E446912A18D75841C5B1239D752D48 48FB8AD79B4B79504A41AB82BB6B43F425909C44853A8A3159BB75B7342F3CB7281AFC25FA76 93B409FF5DCCD59DAA16E5FDEB1DC19CD1D303BD00D2154F0EC08E04B5FC441010349998C2C6 EFA036734540532E588FA2A3FF65367997896DFC6A4AC97A31CF6434AEAD822890AA62621F8A 3E93785EA32CFC4EACF582AE356EBFD7134160519F91A50753898F505AE6BC39BF63F3599C07 9AFCB6812D2D9B159BDC9017152F4A050B08014AC846F970F2DAD485EF15AAF397898584BBEF 2FCDD970786C41AF8B2D3728D3D4C5053EAA1FFBBB2C85752F4E8C0D6F6BF783ABB49796D75C 0F95A0DA58239580180B033816608D8B3C2D5D52A3D50A82D88C0EA92FDE25C314B1F7FB5D22 0439E685975D29750A878EC4332BC74A67CBC345095DEF613CBD058AAD37EAAF7FF039673D4B ECCA0E38398CF8B9CA775AF365AD16572FD1899342BB76C248886190C9B7540324CF7AB6E076 8BA6CE39B012882AD64B08AAD4C1C40BF75FCB05F85C8CDE44C523D42B47B4C906BDF6CF27D0 6689352A2004728F724FC37601BFE0C7FFEB527E7070F435D0453C0F996055F80B2AF2A36309 46ECD88DD8E864DE048C09D0BD90C4F970A005FD1AB27DC2F374C4DB8D6E690CA525E313ECE3 F8F8AB88E50000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginProcSet: texps.pro TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont /setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin @defspecial TeXDict begin /box{newpath 2 copy moveto 3 copy pop exch lineto 4 copy pop pop lineto 4 copy exch pop exch pop lineto closepath } bind def /min{ 2 copy gt { exch } if pop } bind def/max{ 2 copy lt { exch } if pop } bind def/roundedbox{/radius exch store 3 2 roll 2 copy min radius sub /miny exch store max radius add /maxy exch store 2 copy min radius sub /minx exch store max radius add /maxx exch store newpath minx radius add miny moveto maxx miny maxx maxy radius arcto maxx maxy minx maxy radius arcto minx maxy minx miny radius arcto minx miny maxx miny radius arcto 16 {pop} repeat closepath }bind def /rectcartouche{box gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def /cartouche{roundedbox gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def end @fedspecial end TeXDict begin 40258431 52099146 1000 600 600 (manual.dvi) @start /Fa 157[25 98[{}1 50.000001 /Times-Italic rf /Fb 256[{}0 50.000001 /RMTMI rf /Fc 167[117 88[{}1 83.333337 /MTEX rf /Fd 144[50 50 10[50 99[{TeXBase1Encoding ReEncodeFont}3 83.333337 /Courier-Oblique rf /Fe 205[40 1[17 48[{}2 63.333383 /MTSYN rf /Ff 144[32 32 2[28 7[28 32 11[39 86[{}6 63.333383 /Times-Italic rf /Fg 137[31 118[{}1 63.333383 /RMTMI rf /Fh 139[19 34 23 1[38 2[57 1[34 2[38 38 19 38 1[34 38 38 44[38 38 38 38 2[19 46[{ TeXBase1Encoding ReEncodeFont }18 83.333337 /Helvetica-Narrow-Oblique rf /Fi 4 40 df[<3FFF80000000000000000000000000000000000000007FFFFFE00000 00000000000000000000000000000000FFFFFFFF80000000000000000000000000000000 0000FFFFFFFFFC0000000000000000000000000000000000FFFFFFFFFFE0000000000000 000000000000000000007FFFFFFFFFFE000000000000000000000000000000003FFFFFFF FFFFE00000000000000000000000000000000000FFFFFFFFFC0000000000000000000000 000000000000003FFFFFFF80000000000000000000000000000000000000FFFFFFF00000 0000000000000000000000000000000007FFFFFE00000000000000000000000000000000 0000003FFFFFC000000000000000000000000000000000000003FFFFF000000000000000 0000000000000000000000003FFFFE0000000000000000000000000000000000000007FF FF8000000000000000000000000000000000000000FFFFE0000000000000000000000000 000000000000001FFFF80000000000000000000000000000000000000003FFFE00000000 00000000000000000000000000000000FFFF800000000000000000000000000000000000 00001FFFE00000000000000000000000000000000000000007FFF8000000000000000000 0000000000000000000001FFFE00000000000000000000000000000000000000007FFF80 000000000000000000000000000000000000001FFFE00000000000000000000000000000 000000000007FFF00000000000000000000000000000000000000001FFFC000000000000 00000000000000000000000000007FFE0000000000000000000000000000000000000000 1FFF800000000000000000000000000000000000000007FFE00000000000000000000000 000000000000000001FFF00000000000000000000000000000000000000000FFF8000000 00000000000000000000000000000000003FFE0000000000000000000000000000000000 0000001FFF000000000000000000000000000000000000000007FFC00000000000000000 000000000000000000000001FFE00000000000000000000000000000000000000000FFF0 00000000000000000000000000000000000000007FFC0000000000000000000000000000 0000000000001FFE00000000000000000000000000000000000000000FFF000000000000 000000000000000000000000000003FF8000000000000000000000000000000000000000 01FFC00000000000000000000000000000000000000000FFF00000000000000000000000 0000000000000000003FF800000000000000000000000000000000000000001FFC000000 00000000000000000000000000000000000FFE0000000000000000000000000000000000 00000007FF000000000000000000000000000000000000000003FF800000000000000000 000000000000000000000000FFC000000000000000000000000000000000000000007FE0 00000000000000000000000000000000000000003FF00000000000000000000000000000 0000000000001FF800000000000000000000000000000000000000000FFC000000000000 000000000000000000000000000007FE0000000000000000000000000000000000000000 03FF000000000000000000000000000000000000000001FF800000000000000000000000 000000000000000000FFC000000000000000000000000000000000000000007FE0000000 00000000000000000000000000000000003FE00000000000000000000000000000000000 0000001FF000000000000000000000000000000000000000000FF8000000000000000000 000000000000000000000007FC000000000000000000000000000000000000000003FE00 0000000000000000000000000000000000000003FF000000000000000000000000000000 000000000001FF000000000000000000000000000000000000000000FF80000000000000 00000000000000000000000000007FC00000000000000000000000000000000000000000 3FE000000000000000000000000000000000000000001FE0000000000000000000000000 00000000000000001FF000000000000000000000000000000000000000000FF800000000 0000000000000000000000000000000007FC000000000000000000000000000000000000 000003FC000000000000000000000000000000000000000003FE00000000000000000000 0000000000000000000001FF000000000000000000000000000000000000000000FF0000 000000000000000000000000000000000000007F80000000000000000000000000000000 00000000007FC000000000000000000000000000000000000000003FC000000000000000 000000000000000000000000001FE000000000000000000000000000000000000000001F F000000000000000000000000000000000000000000FF000000000000000000000000000 0000000000000007F8000000000000000000000000000000000000000007F80000000000 00000000000000000000000000000003FC00000000000000000000000000000000000000 0003FE000000000000000000000000000000000000000001FE0000000000000000000000 00000000000000000000FF000000000000000000000000000000000000000000FF000000 0000000000000000000000000000000000007F8000000000000000000000000000000000 000000007F8000000000000000000000000000000000000000003FC00000000000000000 0000000000000000000000003FC000000000000000000000000000000000000000001FE0 00000000000000000000000000000000000000001FE00000000000000000000000000000 0000000000000FF000000000000000000000000000000000000000000FF0000000000000 000000000000000000000000000007F80000000000000000000000000000000000000000 07F8000000000000000000000000000000000000000003FC000000000000000000000000 000000000000000003FC000000000000000000000000000000000000000001FE00000000 0000000000000000000000000000000001FE000000000000000000000000000000000000 000000FF000000000000000000000000000000000000000000FF00000000000000000000 00000000000000000000007F0000000000000000000000000000000000000000007F8000 000000000000000000000000000000000000007F80000000000000000000000000000000 00000000003FC000000000000000000000000000000000000000003FC000000000000000 000000000000000000000000001FC000000000000000000000000000000000000000001F E000000000000000000000000000000000000000001FE000000000000000000000000000 000000000000000FE000000000000000000000000000000000000000000FF00000000000 0000000000000000000000000000000FF000000000000000000000000000000000000000 0007F0000000000000000000000000000000000000000007F80000000000000000000000 00000000000000000007F8000000000000000000000000000000000000000003F8000000 000000000000000000000000000000000003FC0000000000000000000000000000000000 00000003FC000000000000000000000000000000000000000001FC000000000000000000 000000000000000000000001FE000000000000000000000000000000000000000001FE00 0000000000000000000000000000000000000000FE000000000000000000000000000000 000000000000FE000000000000000000000000000000000000000000FF00000000000000 0000000000000000000000000000FF000000000000000000000000000000000000000000 7F0000000000000000000000000000000000000000007F00000000000000000000000000 00000000000000007F8000000000000000000000000000000000000000007F8000000000 000000000000000000000000000000003F80000000000000000000000000000000000000 00003F8000000000000000000000000000000000000000003FC000000000000000000000 000000000000000000003FC000000000000000000000000000000000000000001FC00000 0000000000000000000000000000000000001FC000000000000000000000000000000000 000000001FC000000000000000000000000000000000000000001FE00000000000000000 0000000000000000000000001FE000000000000000000000000000000000000000000FE0 00000000000000000000000000000000000000000FE00000000000000000000000000000 0000000000000FE000000000000000000000000000000000000000000FE0000000000000 00000000000000000000000000000FE00000000000000000000000000000000000000000 0FF000000000000000000000000000000000000000000FF0000000000000000000000000 000000000000000007F0000000000000000000000000000000000000000007F000000000 0000000000000000000000000000000007F0000000000000000000000000000000000000 000007F0000000000000000000000000000000000000000007F000000000000000000000 0000000000000000000007F0000000000000000000000000000000000000000007F00000 00000000000000000000000000000000000007F800000000000000000000000000000000 0000000007F8000000000000000000000000000000000000000003F80000000000000000 00000000000000000000000003F8000000000000000000000000000000000000000003F8 000000000000000000000000000000000000000003F80000000000000000000000000000 00000000000003F8000000000000000000000000000000000000000003F8000000000000 000000000000000000000000000003F80000000000000000000000000000000000000000 03F8000000000000000000000000000000000000000003F8000000000000000000000000 000000000000000003F8000000000000000000000000000000000000000003F800000000 0000000000000000000000000000000003F8000000000000000000000000000000000000 000003F8000000000000000000000000000000000000000003F800000000000000000000 0000000000000000000001F0000000000000000000000000000000000000000000F0> 173 173 294 134 332 36 D[<000000000000000000000000000000000000000000F000 0000000000000000000000000000000000000001F0000000000000000000000000000000 000000000003F8000000000000000000000000000000000000000003F800000000000000 0000000000000000000000000003F8000000000000000000000000000000000000000003 F8000000000000000000000000000000000000000003F800000000000000000000000000 0000000000000003F8000000000000000000000000000000000000000003F80000000000 00000000000000000000000000000003F800000000000000000000000000000000000000 0003F8000000000000000000000000000000000000000003F80000000000000000000000 00000000000000000003F8000000000000000000000000000000000000000003F8000000 000000000000000000000000000000000003F80000000000000000000000000000000000 00000003F8000000000000000000000000000000000000000007F8000000000000000000 000000000000000000000007F8000000000000000000000000000000000000000007F000 0000000000000000000000000000000000000007F0000000000000000000000000000000 000000000007F0000000000000000000000000000000000000000007F000000000000000 0000000000000000000000000007F0000000000000000000000000000000000000000007 F0000000000000000000000000000000000000000007F000000000000000000000000000 000000000000000FF000000000000000000000000000000000000000000FF00000000000 0000000000000000000000000000000FE000000000000000000000000000000000000000 000FE000000000000000000000000000000000000000000FE00000000000000000000000 0000000000000000000FE000000000000000000000000000000000000000000FE0000000 00000000000000000000000000000000001FE00000000000000000000000000000000000 0000001FE000000000000000000000000000000000000000001FC0000000000000000000 00000000000000000000001FC000000000000000000000000000000000000000001FC000 000000000000000000000000000000000000003FC0000000000000000000000000000000 00000000003FC000000000000000000000000000000000000000003F8000000000000000 000000000000000000000000003F8000000000000000000000000000000000000000007F 8000000000000000000000000000000000000000007F8000000000000000000000000000 000000000000007F0000000000000000000000000000000000000000007F000000000000 000000000000000000000000000000FF0000000000000000000000000000000000000000 00FF000000000000000000000000000000000000000000FE000000000000000000000000 000000000000000000FE000000000000000000000000000000000000000001FE00000000 0000000000000000000000000000000001FE000000000000000000000000000000000000 000001FC000000000000000000000000000000000000000003FC00000000000000000000 0000000000000000000003FC000000000000000000000000000000000000000003F80000 00000000000000000000000000000000000007F800000000000000000000000000000000 0000000007F8000000000000000000000000000000000000000007F00000000000000000 0000000000000000000000000FF000000000000000000000000000000000000000000FF0 00000000000000000000000000000000000000000FE00000000000000000000000000000 0000000000001FE000000000000000000000000000000000000000001FE0000000000000 00000000000000000000000000001FC00000000000000000000000000000000000000000 3FC000000000000000000000000000000000000000003FC0000000000000000000000000 00000000000000007F8000000000000000000000000000000000000000007F8000000000 000000000000000000000000000000007F00000000000000000000000000000000000000 0000FF000000000000000000000000000000000000000000FF0000000000000000000000 00000000000000000001FE000000000000000000000000000000000000000001FE000000 000000000000000000000000000000000003FC0000000000000000000000000000000000 00000003FC000000000000000000000000000000000000000007F8000000000000000000 000000000000000000000007F800000000000000000000000000000000000000000FF000 000000000000000000000000000000000000000FF0000000000000000000000000000000 00000000001FE000000000000000000000000000000000000000001FE000000000000000 000000000000000000000000003FC000000000000000000000000000000000000000003F C000000000000000000000000000000000000000007F8000000000000000000000000000 000000000000007F800000000000000000000000000000000000000000FF000000000000 000000000000000000000000000000FF0000000000000000000000000000000000000000 01FE000000000000000000000000000000000000000003FE000000000000000000000000 000000000000000003FC000000000000000000000000000000000000000007F800000000 0000000000000000000000000000000007F8000000000000000000000000000000000000 00000FF000000000000000000000000000000000000000001FF000000000000000000000 000000000000000000001FE000000000000000000000000000000000000000003FC00000 0000000000000000000000000000000000007FC000000000000000000000000000000000 000000007F800000000000000000000000000000000000000000FF000000000000000000 000000000000000000000001FF000000000000000000000000000000000000000003FE00 0000000000000000000000000000000000000003FC000000000000000000000000000000 000000000007FC00000000000000000000000000000000000000000FF800000000000000 000000000000000000000000001FF000000000000000000000000000000000000000001F E000000000000000000000000000000000000000003FE000000000000000000000000000 000000000000007FC00000000000000000000000000000000000000000FF800000000000 000000000000000000000000000001FF0000000000000000000000000000000000000000 03FF000000000000000000000000000000000000000003FE000000000000000000000000 000000000000000007FC00000000000000000000000000000000000000000FF800000000 000000000000000000000000000000001FF0000000000000000000000000000000000000 00003FE000000000000000000000000000000000000000007FE000000000000000000000 00000000000000000000FFC00000000000000000000000000000000000000001FF800000 000000000000000000000000000000000003FF0000000000000000000000000000000000 00000007FE00000000000000000000000000000000000000000FFC000000000000000000 00000000000000000000001FF800000000000000000000000000000000000000003FF000 000000000000000000000000000000000000007FE0000000000000000000000000000000 0000000000FFC00000000000000000000000000000000000000003FF8000000000000000 00000000000000000000000007FF00000000000000000000000000000000000000000FFE 00000000000000000000000000000000000000001FFC0000000000000000000000000000 0000000000003FF80000000000000000000000000000000000000000FFF0000000000000 0000000000000000000000000001FFC00000000000000000000000000000000000000003 FF80000000000000000000000000000000000000000FFF00000000000000000000000000 000000000000001FFE00000000000000000000000000000000000000007FFC0000000000 000000000000000000000000000000FFF000000000000000000000000000000000000000 01FFE00000000000000000000000000000000000000007FFC00000000000000000000000 00000000000000001FFF00000000000000000000000000000000000000003FFE00000000 00000000000000000000000000000000FFF8000000000000000000000000000000000000 0001FFF00000000000000000000000000000000000000007FFE000000000000000000000 0000000000000000001FFF80000000000000000000000000000000000000007FFE000000 0000000000000000000000000000000001FFFC0000000000000000000000000000000000 000007FFF0000000000000000000000000000000000000001FFFE0000000000000000000 000000000000000000007FFF8000000000000000000000000000000000000001FFFE0000 000000000000000000000000000000000007FFF800000000000000000000000000000000 0000001FFFE000000000000000000000000000000000000000FFFF800000000000000000 0000000000000000000003FFFE000000000000000000000000000000000000001FFFF800 000000000000000000000000000000000000FFFFE0000000000000000000000000000000 00000007FFFF800000000000000000000000000000000000003FFFFE0000000000000000 0000000000000000000003FFFFF00000000000000000000000000000000000003FFFFFC0 000000000000000000000000000000000007FFFFFE000000000000000000000000000000 000000FFFFFFF000000000000000000000000000000000003FFFFFFF8000000000000000 000000000000000000FFFFFFFFFC0000000000000000000000000000003FFFFFFFFFFFE0 0000000000000000000000000000007FFFFFFFFFFE000000000000000000000000000000 00FFFFFFFFFFE000000000000000000000000000000000FFFFFFFFFC0000000000000000 000000000000000000FFFFFFFF8000000000000000000000000000000000007FFFFFE000 00000000000000000000000000000000003FFF8000000000000000000000000000000000 000000>173 173 294 300 332 I[<3C0000000000000000000000000000000000000000 007C000000000000000000000000000000000000000000FE000000000000000000000000 000000000000000000FE000000000000000000000000000000000000000000FE00000000 0000000000000000000000000000000000FE000000000000000000000000000000000000 000000FE000000000000000000000000000000000000000000FE00000000000000000000 0000000000000000000000FE000000000000000000000000000000000000000000FE0000 00000000000000000000000000000000000000FE00000000000000000000000000000000 0000000000FE000000000000000000000000000000000000000000FE0000000000000000 00000000000000000000000000FE000000000000000000000000000000000000000000FE 000000000000000000000000000000000000000000FF0000000000000000000000000000 00000000000000FF0000000000000000000000000000000000000000007F000000000000 0000000000000000000000000000007F0000000000000000000000000000000000000000 007F0000000000000000000000000000000000000000007F000000000000000000000000 0000000000000000007F0000000000000000000000000000000000000000007F00000000 00000000000000000000000000000000007F000000000000000000000000000000000000 0000007F0000000000000000000000000000000000000000007F80000000000000000000 00000000000000000000007F8000000000000000000000000000000000000000003F8000 000000000000000000000000000000000000003F80000000000000000000000000000000 00000000003F8000000000000000000000000000000000000000003F8000000000000000 000000000000000000000000003FC000000000000000000000000000000000000000003F C000000000000000000000000000000000000000001FC000000000000000000000000000 000000000000001FC000000000000000000000000000000000000000001FC00000000000 0000000000000000000000000000001FE000000000000000000000000000000000000000 001FE000000000000000000000000000000000000000000FE00000000000000000000000 0000000000000000000FE000000000000000000000000000000000000000000FE0000000 00000000000000000000000000000000000FF00000000000000000000000000000000000 0000000FF0000000000000000000000000000000000000000007F0000000000000000000 000000000000000000000007F0000000000000000000000000000000000000000007F800 0000000000000000000000000000000000000007F8000000000000000000000000000000 000000000003F8000000000000000000000000000000000000000003FC00000000000000 0000000000000000000000000003FC000000000000000000000000000000000000000001 FC000000000000000000000000000000000000000001FC00000000000000000000000000 0000000000000001FE000000000000000000000000000000000000000001FE0000000000 00000000000000000000000000000000FE00000000000000000000000000000000000000 0000FF000000000000000000000000000000000000000000FF0000000000000000000000 000000000000000000007F0000000000000000000000000000000000000000007F800000 0000000000000000000000000000000000007F8000000000000000000000000000000000 000000003FC000000000000000000000000000000000000000003FC00000000000000000 0000000000000000000000001FC000000000000000000000000000000000000000001FE0 00000000000000000000000000000000000000001FE00000000000000000000000000000 0000000000000FF000000000000000000000000000000000000000000FF0000000000000 000000000000000000000000000007F00000000000000000000000000000000000000000 07F8000000000000000000000000000000000000000007F8000000000000000000000000 000000000000000003FC000000000000000000000000000000000000000003FC00000000 0000000000000000000000000000000001FE000000000000000000000000000000000000 000001FE000000000000000000000000000000000000000000FF00000000000000000000 0000000000000000000000FF0000000000000000000000000000000000000000007F8000 000000000000000000000000000000000000007F80000000000000000000000000000000 00000000003FC000000000000000000000000000000000000000003FC000000000000000 000000000000000000000000001FE000000000000000000000000000000000000000001F E000000000000000000000000000000000000000000FF000000000000000000000000000 000000000000000FF0000000000000000000000000000000000000000007F80000000000 00000000000000000000000000000007F800000000000000000000000000000000000000 0003FC000000000000000000000000000000000000000003FE0000000000000000000000 00000000000000000001FE000000000000000000000000000000000000000000FF000000 000000000000000000000000000000000000FF0000000000000000000000000000000000 000000007F8000000000000000000000000000000000000000007FC00000000000000000 0000000000000000000000003FC000000000000000000000000000000000000000001FE0 00000000000000000000000000000000000000001FF00000000000000000000000000000 0000000000000FF0000000000000000000000000000000000000000007F8000000000000 000000000000000000000000000007FC0000000000000000000000000000000000000000 03FE000000000000000000000000000000000000000001FE000000000000000000000000 000000000000000001FF000000000000000000000000000000000000000000FF80000000 00000000000000000000000000000000007FC00000000000000000000000000000000000 0000003FC000000000000000000000000000000000000000003FE0000000000000000000 00000000000000000000001FF000000000000000000000000000000000000000000FF800 0000000000000000000000000000000000000007FC000000000000000000000000000000 000000000007FE000000000000000000000000000000000000000003FE00000000000000 0000000000000000000000000001FF000000000000000000000000000000000000000000 FF8000000000000000000000000000000000000000007FC0000000000000000000000000 00000000000000003FE000000000000000000000000000000000000000003FF000000000 000000000000000000000000000000001FF8000000000000000000000000000000000000 00000FFC000000000000000000000000000000000000000007FE00000000000000000000 0000000000000000000003FF000000000000000000000000000000000000000001FF8000 00000000000000000000000000000000000000FFC0000000000000000000000000000000 00000000007FE000000000000000000000000000000000000000003FF000000000000000 000000000000000000000000001FF800000000000000000000000000000000000000000F FE000000000000000000000000000000000000000007FF00000000000000000000000000 0000000000000003FF800000000000000000000000000000000000000001FFC000000000 00000000000000000000000000000000FFE0000000000000000000000000000000000000 00007FF800000000000000000000000000000000000000001FFC00000000000000000000 000000000000000000000FFE000000000000000000000000000000000000000007FF0000 00000000000000000000000000000000000003FFC0000000000000000000000000000000 0000000001FFE000000000000000000000000000000000000000007FF800000000000000 000000000000000000000000003FFC00000000000000000000000000000000000000001F FF00000000000000000000000000000000000000000FFF80000000000000000000000000 0000000000000003FFE00000000000000000000000000000000000000001FFF000000000 000000000000000000000000000000007FFC000000000000000000000000000000000000 00003FFE00000000000000000000000000000000000000000FFF80000000000000000000 0000000000000000000007FFE00000000000000000000000000000000000000001FFF800 00000000000000000000000000000000000000FFFE000000000000000000000000000000 00000000003FFF80000000000000000000000000000000000000001FFFE0000000000000 0000000000000000000000000007FFF80000000000000000000000000000000000000001 FFFE00000000000000000000000000000000000000007FFF800000000000000000000000 00000000000000001FFFE00000000000000000000000000000000000000007FFFC000000 0000000000000000000000000000000001FFFF0000000000000000000000000000000000 0000007FFFE0000000000000000000000000000000000000001FFFFC0000000000000000 000000000000000000000007FFFF8000000000000000000000000000000000000001FFFF F0000000000000000000000000000000000000003FFFFF00000000000000000000000000 0000000000000FFFFFF000000000000000000000000000000000000001FFFFFF00000000 0000000000000000000000000000003FFFFFF80000000000000000000000000000000000 0007FFFFFFF0000000000000000000000000000000000000FFFFFFFFF800000000000000 000000000000000000001FFFFFFFFFFFF000000000000000000000000000000001FFFFFF FFFFF0000000000000000000000000000000001FFFFFFFFFF80000000000000000000000 000000000001FFFFFFFFF800000000000000000000000000000000000FFFFFFFF8000000 0000000000000000000000000000001FFFFFF00000000000000000000000000000000000 00000FFFF0>173 173 128 300 332 I[<00000000000000000000000000000000000000 0FFFF00000000000000000000000000000000000001FFFFFF00000000000000000000000 0000000000000FFFFFFFF80000000000000000000000000000000001FFFFFFFFF8000000 000000000000000000000000001FFFFFFFFFF800000000000000000000000000000001FF FFFFFFFFF00000000000000000000000000000001FFFFFFFFFFFF0000000000000000000 000000000000FFFFFFFFF80000000000000000000000000000000007FFFFFFF000000000 000000000000000000000000003FFFFFF8000000000000000000000000000000000001FF FFFF0000000000000000000000000000000000000FFFFFF0000000000000000000000000 0000000000003FFFFF00000000000000000000000000000000000001FFFFF00000000000 0000000000000000000000000007FFFF800000000000000000000000000000000000001F FFFC000000000000000000000000000000000000007FFFE0000000000000000000000000 00000000000001FFFF0000000000000000000000000000000000000007FFFC0000000000 00000000000000000000000000001FFFE000000000000000000000000000000000000000 7FFF8000000000000000000000000000000000000001FFFE000000000000000000000000 0000000000000007FFF8000000000000000000000000000000000000001FFFE000000000 0000000000000000000000000000003FFF80000000000000000000000000000000000000 00FFFE0000000000000000000000000000000000000001FFF80000000000000000000000 000000000000000007FFE0000000000000000000000000000000000000000FFF80000000 000000000000000000000000000000003FFE000000000000000000000000000000000000 00007FFC0000000000000000000000000000000000000001FFF000000000000000000000 00000000000000000003FFE0000000000000000000000000000000000000000FFF800000 00000000000000000000000000000000001FFF0000000000000000000000000000000000 0000003FFC00000000000000000000000000000000000000007FF8000000000000000000 0000000000000000000001FFE00000000000000000000000000000000000000003FFC000 00000000000000000000000000000000000007FF00000000000000000000000000000000 000000000FFE00000000000000000000000000000000000000001FFC0000000000000000 0000000000000000000000007FF80000000000000000000000000000000000000000FFE0 0000000000000000000000000000000000000001FFC00000000000000000000000000000 000000000003FF800000000000000000000000000000000000000007FF00000000000000 000000000000000000000000000FFE00000000000000000000000000000000000000001F F800000000000000000000000000000000000000003FF000000000000000000000000000 000000000000007FE00000000000000000000000000000000000000000FFC00000000000 000000000000000000000000000001FF8000000000000000000000000000000000000000 03FF000000000000000000000000000000000000000007FE000000000000000000000000 00000000000000000FFC00000000000000000000000000000000000000001FF800000000 000000000000000000000000000000003FF0000000000000000000000000000000000000 00003FE000000000000000000000000000000000000000007FC000000000000000000000 00000000000000000000FF800000000000000000000000000000000000000001FF000000 000000000000000000000000000000000003FE0000000000000000000000000000000000 00000007FE000000000000000000000000000000000000000007FC000000000000000000 00000000000000000000000FF800000000000000000000000000000000000000001FF000 000000000000000000000000000000000000003FE0000000000000000000000000000000 00000000003FC000000000000000000000000000000000000000007FC000000000000000 00000000000000000000000000FF800000000000000000000000000000000000000001FF 000000000000000000000000000000000000000001FE0000000000000000000000000000 00000000000003FE000000000000000000000000000000000000000007FC000000000000 000000000000000000000000000007F80000000000000000000000000000000000000000 0FF000000000000000000000000000000000000000001FF0000000000000000000000000 00000000000000001FE000000000000000000000000000000000000000003FC000000000 000000000000000000000000000000007FC0000000000000000000000000000000000000 00007F800000000000000000000000000000000000000000FF0000000000000000000000 00000000000000000000FF000000000000000000000000000000000000000001FE000000 000000000000000000000000000000000003FE0000000000000000000000000000000000 00000003FC000000000000000000000000000000000000000007F8000000000000000000 000000000000000000000007F800000000000000000000000000000000000000000FF000 000000000000000000000000000000000000000FF0000000000000000000000000000000 00000000001FE000000000000000000000000000000000000000001FE000000000000000 000000000000000000000000003FC000000000000000000000000000000000000000003F C000000000000000000000000000000000000000007F8000000000000000000000000000 000000000000007F800000000000000000000000000000000000000000FF000000000000 000000000000000000000000000000FF0000000000000000000000000000000000000000 01FE000000000000000000000000000000000000000001FE000000000000000000000000 000000000000000003FC000000000000000000000000000000000000000003FC00000000 0000000000000000000000000000000007F8000000000000000000000000000000000000 000007F8000000000000000000000000000000000000000007F000000000000000000000 000000000000000000000FF000000000000000000000000000000000000000000FF00000 0000000000000000000000000000000000001FE000000000000000000000000000000000 000000001FE000000000000000000000000000000000000000001FC00000000000000000 0000000000000000000000003FC000000000000000000000000000000000000000003FC0 00000000000000000000000000000000000000007F800000000000000000000000000000 0000000000007F8000000000000000000000000000000000000000007F00000000000000 0000000000000000000000000000FF000000000000000000000000000000000000000000 FF000000000000000000000000000000000000000000FE00000000000000000000000000 0000000000000001FE000000000000000000000000000000000000000001FE0000000000 00000000000000000000000000000001FC00000000000000000000000000000000000000 0001FC000000000000000000000000000000000000000003FC0000000000000000000000 00000000000000000003FC000000000000000000000000000000000000000003F8000000 000000000000000000000000000000000007F80000000000000000000000000000000000 00000007F8000000000000000000000000000000000000000007F0000000000000000000 000000000000000000000007F000000000000000000000000000000000000000000FF000 000000000000000000000000000000000000000FF0000000000000000000000000000000 00000000000FE000000000000000000000000000000000000000000FE000000000000000 000000000000000000000000000FE000000000000000000000000000000000000000001F E000000000000000000000000000000000000000001FE000000000000000000000000000 000000000000001FC000000000000000000000000000000000000000001FC00000000000 0000000000000000000000000000001FC000000000000000000000000000000000000000 003FC000000000000000000000000000000000000000003FC00000000000000000000000 0000000000000000003F8000000000000000000000000000000000000000003F80000000 00000000000000000000000000000000003F800000000000000000000000000000000000 0000003F8000000000000000000000000000000000000000007F80000000000000000000 00000000000000000000007F8000000000000000000000000000000000000000007F0000 000000000000000000000000000000000000007F00000000000000000000000000000000 00000000007F0000000000000000000000000000000000000000007F0000000000000000 000000000000000000000000007F0000000000000000000000000000000000000000007F 0000000000000000000000000000000000000000007F0000000000000000000000000000 000000000000007F000000000000000000000000000000000000000000FF000000000000 000000000000000000000000000000FF0000000000000000000000000000000000000000 00FE000000000000000000000000000000000000000000FE000000000000000000000000 000000000000000000FE000000000000000000000000000000000000000000FE00000000 0000000000000000000000000000000000FE000000000000000000000000000000000000 000000FE000000000000000000000000000000000000000000FE00000000000000000000 0000000000000000000000FE000000000000000000000000000000000000000000FE0000 00000000000000000000000000000000000000FE00000000000000000000000000000000 0000000000FE000000000000000000000000000000000000000000FE0000000000000000 00000000000000000000000000FE0000000000000000000000000000000000000000007C 0000000000000000000000000000000000000000003C0000000000000000000000000000 00000000000000>173 173 128 134 332 I E /Fj 133[40 40 1[40 40 40 40 40 40 1[40 40 40 40 40 40 1[40 40 40 40 40 40 40 40 40 10[40 40 40 40 40 1[40 40 40 40 1[40 1[40 1[40 40 40 40 40 40 7[40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 2[40 1[40 35[{TeXBase1Encoding ReEncodeFont}61 66.666667 /Courier rf /Fk 145[33 48 1[29 107[{}3 66.666667 /Times-Italic rf /Fl 194[31 61[{}1 66.666667 /RMTMI rf /Fm 205[28 28 49[{TeXBase1Encoding ReEncodeFont}2 56.666690 /Times-Roman rf /Fn 205[32 32 49[{TeXBase1Encoding ReEncodeFont}2 63.333383 /Times-Roman rf /Fo 139[23 32 32 1[42 1[46 65 23 2[23 46 42 1[37 42 2[42 18[60 74 5[60 55 23[21 46[{TeXBase1Encoding ReEncodeFont}18 83.333337 /Times-BoldItalic rf /Fp 133[50 50 50 50 50 50 50 50 50 1[50 50 50 50 50 50 50 50 50 50 1[50 50 50 50 50 3[50 1[50 6[50 50 4[50 1[50 2[50 7[50 14[50 50 1[50 50 50 45[{TeXBase1Encoding ReEncodeFont}37 83.333337 /Courier rf /Fq 182[22 3[53 69[{TeXBase1Encoding ReEncodeFont} 2 79.999924 /Helvetica-Bold rf /Fr 134[55 55 1[55 61 33 55 39 1[61 61 61 89 28 1[28 28 61 61 1[55 61 55 61 55 12[61 66 72 1[66 78 1[83 3[28 1[78 61 1[72 72 1[72 8[55 55 55 55 55 55 55 55 2[28 33 5[28 39[{ TeXBase1Encoding ReEncodeFont}44 100.000003 /Helvetica-Bold rf /Fs 103[28 30[37 37 55 37 42 23 32 32 1[42 42 42 60 23 1[23 23 42 42 23 37 42 37 42 42 3[32 1[32 4[51 1[46 3[51 60 55 69 5[60 51 51 1[55 2[76 2[56 2[28 5[42 1[42 42 42 23 21 28 1[56 7[42 31[42 3[{TeXBase1Encoding ReEncodeFont}49 83.333337 /Times-Italic rf /Ft 135[37 2[42 6[42 60 1[37 23 23 3[37 42 2[42 10[51 5[51 1[55 6[60 1[51 3[51 65[{}16 83.333337 /Times-Italic rf /Fu 136[61 40 55[65 2[27 23 10[31 31 46[{}7 83.333337 /RMTMI rf /Fv 182[15 3[36 69[{ TeXBase1Encoding ReEncodeFont }2 66.666667 /Helvetica-Narrow rf /Fw 212[78 43[{}1 83.333337 /ZapfDingbats rf /Fx 134[34 34 49 34 38 19 34 23 38 38 38 38 57 15 2[15 38 38 19 38 38 34 38 38 12[42 45 49 2[53 1[57 9[49 1[45 10[38 38 2[38 38 38 1[19 23 3[23 23 37[34 2[{ TeXBase1Encoding ReEncodeFont } 40 83.333337 /Helvetica-Narrow rf /Fy 138[42 2[26 5[19 2[19 1[42 1[38 2[42 38 12[42 13[42 12[38 38 38 38 38 38 38 38 38 38 48[{ TeXBase1Encoding ReEncodeFont }20 83.333337 /Helvetica-Narrow-Bold rf /Fz 134[42 1[60 42 46 23 42 28 1[46 46 46 69 18 42 1[18 46 46 1[46 46 42 46 46 7[55 1[78 55 1[51 55 60 1[55 1[60 69 1[55 1[23 60 65 1[55 60 60 1[55 22[32 42[{TeXBase1Encoding ReEncodeFont}39 83.333337 /Helvetica rf /FA 182[26 3[62 69[{ TeXBase1Encoding ReEncodeFont}2 93.333301 /Helvetica-Bold rf /FB 133[42 46 46 65 46 51 28 46 32 1[51 51 51 74 23 46 1[23 51 51 28 46 51 46 51 46 9[78 55 1[51 55 60 1[55 65 60 69 1[60 1[23 1[65 51 55 60 60 60 2[51 8[46 46 46 1[46 46 2[23 28 45[{TeXBase1Encoding ReEncodeFont}49 83.333337 /Helvetica-Bold rf /FC 133[37 42 42 60 42 46 28 32 37 46 46 42 46 69 23 1[28 23 46 42 28 37 46 37 46 42 9[83 60 1[55 46 60 1[51 1[60 1[55 2[32 5[60 1[60 8[42 1[42 42 42 42 42 42 3[28 21 4[28 5[28 29[46 46 2[{ TeXBase1Encoding ReEncodeFont}49 83.333337 /Times-Bold rf /FD 134[65 1[90 1[71 39 65 45 71 1[71 71 103 32 2[32 71 71 39 65 71 65 71 65 9[110 78 1[71 78 84 1[78 1[84 97 71 2[32 5[84 1[84 10[65 65 65 65 65 65 3[39 5[32 39[{ TeXBase1Encoding ReEncodeFont}40 116.666669 /Helvetica-Bold rf /FE 103[22 30[37 1[52 1[41 22 37 26 1[41 1[41 59 1[37 1[18 41 2[37 41 37 1[37 23[18 3[44 10[22 10[18 18 46[{ TeXBase1Encoding ReEncodeFont}22 66.666667 /Helvetica-Bold rf /FF 133[29 33 1[48 33 33 18 26 22 33 33 33 33 52 18 33 1[18 33 33 22 29 33 29 33 29 9[63 1[48 41 37 44 1[37 48 1[59 41 2[22 48 48 37 1[48 44 44 48 6[18 33 33 2[33 33 33 33 33 33 18 17 22 17 6[55 33[37 37 2[{ TeXBase1Encoding ReEncodeFont}57 66.666667 /Times-Roman rf /FG 171[41 44 5[55 3[18 3[44 69[{TeXBase1Encoding ReEncodeFont}5 66.666667 /Helvetica rf /FH 182[15 3[35 69[{ TeXBase1Encoding ReEncodeFont}2 53.333281 /Helvetica rf /FI 252[29 3[{}1 56.666690 /MTSYN rf /FJ 134[33 33 50 33 37 21 29 29 1[37 37 37 54 21 33 1[21 37 37 21 33 37 33 37 37 25 5[42 5[42 37 2[46 2[62 42 1[33 25 1[54 1[46 54 50 1[46 6[25 11[19 6[25 36[37 2[{TeXBase1Encoding ReEncodeFont} 41 75.000000 /Times-Italic rf /FK 103[25 1[37 27[33 37 37 54 37 37 21 29 25 37 37 37 37 58 21 37 21 21 37 37 25 33 37 33 37 33 3[25 1[25 3[71 54 54 46 42 50 1[42 1[54 66 46 54 29 25 54 54 1[46 54 50 50 54 6[21 37 37 37 37 37 37 37 37 37 37 21 19 25 19 2[25 25 25 39[{ TeXBase1Encoding ReEncodeFont}68 75.000000 /Times-Roman rf /FL 104[83 28[37 42 42 60 42 42 23 32 28 42 42 42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 28 2[28 1[28 2[60 78 60 60 51 46 55 1[46 60 60 74 51 60 1[28 60 60 46 51 60 55 55 60 76 2[47 1[23 23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 1[42 28 28 28 65 69 33[46 46 2[{ TeXBase1Encoding ReEncodeFont}78 83.333337 /Times-Roman rf /FM 149[24 2[31 31 16[28 28 15[65 65 12[0 3[52 85 22[65 22[43 3[{}12 83.333337 /MTSYN rf /FN 134[50 2[50 50 28 39 33 1[50 50 50 78 28 2[28 50 1[33 44 1[44 50 44 11[72 1[55 66 1[55 1[72 89 4[72 3[72 66 1[72 7[50 50 2[50 50 1[50 50 50 28 2[25 44[{TeXBase1Encoding ReEncodeFont}37 100.000003 /Times-Roman rf /FO 134[60 3[66 1[60 40 1[66 66 66 100 3[27 1[66 1[66 66 2[66 10[80 10[80 3[93 71[{ TeXBase1Encoding ReEncodeFont}16 119.999948 /Helvetica rf /FP 140[53 38 2[77 72 4[29 3[77 14[84 33[67 3[67 1[33 46[{TeXBase1Encoding ReEncodeFont}10 119.999948 /AvantGarde-Demi rf /FQ 136[115 1[86 43 63 46 1[95 92 86 135 34 83 1[34 86 95 40 92 95 92 1[95 11[92 1[75 83 1[80 121 1[129 5[121 69 2[112 1[106 19[60 40 44[{TeXBase1Encoding ReEncodeFont}31 143.999997 /AvantGarde-Demi rf /FR 252[66 3[{}1 126.665747 /MTSYN rf /FS 171[126 138 5[172 77[{TeXBase1Encoding ReEncodeFont}3 207.333362 /Helvetica-Bold rf /FT 182[46 3[110 69[{ TeXBase1Encoding ReEncodeFont}2 165.866715 /Helvetica-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: Letter %%EndSetup %%Page: 1 1 1 0 bop 1700 560 a FS(M)-11 b FT(E)-42 b FS(T)g FT(I)p FS(S)2202 499 y FR(\003)280 760 y FQ(A)40 b(Softw)l(ar)o(e)f(P)m(ac)n (kage)g(f)m(or)i(P)m(ar)s(titioning)g(Unstr)s(uctur)o(ed)399 961 y(Gra)s(phs)s(,)e(P)m(ar)s(titioning)i(Meshes)s(,)g(and)e (Computing)484 1162 y(Fill-Reducing)i(Or)o(der)s(ings)f(of)g(Spar)s(se) f(Ma)q(tr)s(ices)1640 1363 y FP(V)-12 b(er)r(sion)32 b(4.0)1076 1749 y FO(George)j(Kar)t(ypis)e(and)h(Vipin)f(K)l(umar)167 1929 y FN(Uni)n(v)o(ersity)23 b(of)i(Minnesota,)e(Department)h(of)h (Computer)g(Science)g(/)g(Army)f(HPC)i(Research)g(Center)1459 2057 y(Minneapolis,)d(MN)h(55455)1443 2214 y FM(f)p FL(karypis,)19 b(kumar)p FM(g)p FL(@cs.umn.edu)1550 2406 y FN(September)25 b(20,)g(1998)208 2756 y FK(Metis)16 b([MEE)g(tis]:)21 b FJ(`Metis')16 b(is)g(the)h(Gr)m(eek)g(wor)m(d)g(for)g(wisdom.)22 b(Metis)16 b(was)h(a)f(titaness)h(in)f(Gr)m(eek)i(mytholo)o(gy)l(.)23 b(She)17 b(was)g(the)f(consort)208 2856 y(of)i(Zeus)h(and)h(the)f (mother)g(of)g(Athena.)24 b(She)19 b(pr)m(esided)h(o)o(ver)g(all)f (wisdom)g(and)h(knowledg)o(e)o(.)p 0 4929 1560 4 v 86 4981 a FI(\003)122 5005 y FG(M)m FH(E)-13 b FG(T)g FH(I)q FG(S)18 b FF(is)h(cop)o(yrighted)j(by)d(the)h(re)o(gents)g(of)f(the)h (Uni)n(v)o(ersity)h(of)e(Minnesota.)28 b(This)19 b(w)o(ork)g(w)o(as)h (supported)g(by)f(IST/BMDO)g(through)h(Army)f(Research)i(Of)n(\002ce)0 5084 y(contract)d(D)m(A/D)m(AAH04-93-G-0080,)g(and)d(by)h(Army)f(High)g (Performance)i(Computing)g(Research)h(Center)f(under)f(the)g(auspices)h (of)e(the)h(Department)h(of)f(the)g(Army)l(,)0 5163 y(Army)i(Research)i (Laboratory)g(cooperati)n(v)o(e)i(agreement)e(number)f(D)m (AAH04-95-2-0003/contract)24 b(number)18 b(D)m(AAH04-95-C-0008,)j(the)e (content)h(of)e(which)h(does)0 5242 y(not)g(necessarily)i(re\003ect)f (the)f(position)h(or)e(the)h(polic)o(y)h(of)e(the)h(go)o(v)o(ernment,)h (and)f(no)f(of)n(\002cial)i(endorsement)h(should)e(be)f(inferred.)26 b(Access)19 b(to)g(computing)h(f)o(acilities)0 5321 y(were)14 b(pro)o(vided)h(by)e(Minnesota)i(Supercomputer)h(Institute,)f(Cray)f (Research)h(Inc,)f(and)g(by)f(the)h(Pittsb)o(ur)o(gh)g(Supercomputing)i (Center)l(.)22 b(Related)15 b(papers)f(are)g(a)o(v)n(ailable)0 5400 y(via)k(WWW)d(at)j(URL:)f FE(http://www)m(.cs.umn.edu/\230kar)q (ypis)1929 5649 y FL(1)p eop %%Page: 2 2 2 1 bop 0 85 a FD(Contents)0 277 y FC(1)83 b(Intr)o(oduction)3281 b(3)0 470 y(2)83 b(What)20 b(is)j FB(M)l FE(E)-17 b FB(T)g FE(I)p FB(S)3237 b FC(4)0 663 y(3)83 b(What)20 b(is)h(New)f(in)h(This)h (V)-8 b(ersion)2724 b(6)0 855 y(4)85 b FB(M)l FE(E)-17 b FB(T)g FE(I)p FB(S)r FC(')m(s)22 b(Stand-Alone)d(Pr)o(ograms)2637 b(8)125 965 y FL(4.1)85 b(Graph)20 b(P)o(artitioning)e(Programs)53 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)143 b(8)125 1074 y(4.2)85 b(Mesh)21 b(P)o(artitioning)d(Programs)76 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)143 b(9)125 1184 y(4.3)85 b(Sparse)21 b(Matrix)e(Reordering)g(Programs)58 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g (.)102 b(11)125 1294 y(4.4)85 b(Auxiliary)19 b(Programs)43 b(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(13)315 1403 y(4.4.1)c(Mesh)20 b(T)-7 b(o)21 b(Graph)e(Con)m(v)o(ersion)75 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g (.)102 b(13)315 1513 y(4.4.2)c(Graph)19 b(Check)o(er)56 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(14)125 1622 y(4.5)85 b(Input)19 b(File)i(F)o(ormats)h(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g (.)102 b(15)315 1732 y(4.5.1)c(Graph)19 b(File)79 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(15)315 1842 y(4.5.2)c(Mesh)20 b(File)40 b(.)h(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(16)125 1951 y(4.6)85 b(Output)20 b(File)h(F)o(ormats)28 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(17)315 2061 y(4.6.1)c(P)o (artition)20 b(File)63 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(17)315 2170 y(4.6.2)c(Ordering)19 b(File)48 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(17)0 2363 y FC(5)85 b FB(M)l FE(E)-17 b FB(T)g FE(I)p FB(S)r FC(')m(s)22 b(Library)e(Interface)2784 b(18)125 2473 y FL(5.1)85 b(Graph)20 b(Data)g(Structure)52 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(18)125 2582 y(5.2)85 b(Mesh)21 b(Data)f(Structure)75 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(19)125 2692 y(5.3)85 b(P)o(artitioning)19 b(Objecti)n(v)o(es)62 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)g(.)102 b(19)125 2801 y(5.4)85 b(Graph)20 b(P)o(artitioning)e(Routines)77 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(21)504 2911 y(METIS)p 759 2911 25 4 v 29 w(P)o(artGraphRecursi)n(v)o (e)60 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)102 b(21)504 3020 y(METIS)p 759 3020 V 29 w(P)o(artGraphKw)o(ay)68 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(22)504 3130 y(METIS)p 759 3130 V 29 w(P)o(artGraphVKw)o(ay)70 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)g(.)102 b(23)504 3240 y(METIS)p 759 3240 V 29 w(mCP)o(artGraphRecursi)n(v)o(e)65 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(24)504 3349 y(METIS)p 759 3349 V 29 w(mCP)o(artGraphKw)o(ay)72 b(.)41 b(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(26)504 3459 y(METIS)p 759 3459 V 29 w(WP)o(artGraphRecursi)n(v)o(e)44 b(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) 102 b(28)504 3568 y(METIS)p 759 3568 V 29 w(WP)o(artGraphKw)o(ay)52 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)g(.)102 b(30)504 3678 y(METIS)p 759 3678 V 29 w(WP)o(artGraphVKw)o(ay)54 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(32)125 3788 y(5.5)85 b(Mesh)21 b(P)o(artitioning)d(Routines)38 b(.)j(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(34)504 3897 y(METIS)p 759 3897 V 29 w(P)o(artMeshNodal)23 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)102 b(34)504 4007 y(METIS)p 759 4007 V 29 w(P)o(artMeshDual)65 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(35)125 4116 y(5.6)85 b(Sparse)21 b(Matrix)e(Reordering)g(Routines)h(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) 102 b(36)504 4226 y(METIS)p 759 4226 V 29 w(EdgeND)67 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(36)504 4336 y(METIS)p 759 4336 V 29 w(NodeND)58 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(37)504 4445 y(METIS)p 759 4445 V 29 w(NodeWND)42 b(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)102 b(39)125 4555 y(5.7)85 b(Auxiliary)19 b(Routines)67 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(40)504 4664 y(METIS)p 759 4664 V 29 w(MeshT)-7 b(oNodal)70 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)102 b(40)504 4774 y(METIS)p 759 4774 V 29 w(MeshT)-7 b(oDaul)50 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(41)504 4883 y(METIS)p 759 4883 V 29 w(EstimateMemory)29 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)102 b(42)125 4993 y(5.8)85 b(C)22 b(and)d(F)o(ortran)g(Support) 81 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)102 b(43)0 5186 y FC(6)83 b(System)20 b(Requir)o(ements)g(and)h(Contact)e(Inf)n(ormation)2011 b(44)1929 5649 y FL(2)p eop %%Page: 3 3 3 2 bop 0 85 a FD(1)116 b(Intr)n(oduction)0 261 y FL(Algorithms)17 b(that)h(\002nd)g(a)h(good)d(partitioning)g(of)i(highly)f(unstructured) f(graphs)h(are)h(critical)g(for)g(de)n(v)o(eloping)d(ef)n(\002cient)j (solutions)f(for)0 370 y(a)25 b(wide)f(range)f(of)g(problems)g(in)h (man)o(y)f(application)g(areas)h(on)g(both)f(serial)i(and)e(parallel)h (computers.)35 b(F)o(or)24 b(e)o(xample,)f(lar)o(ge-scale)0 480 y(numerical)f(simulations)h(on)g(parallel)h(computers,)e(such)i(as) g(those)f(based)h(on)f(\002nite)h(element)f(methods,)g(require)f(the)i (distrib)n(ution)0 590 y(of)e(the)h(\002nite)g(element)f(mesh)g(to)h (the)g(processors.)31 b(This)22 b(distrib)n(ution)g(must)g(be)h(done)e (so)i(that)g(the)g(number)d(of)j(elements)f(assigned)0 699 y(to)28 b(each)g(processor)e(is)j(the)f(same,)h(and)f(the)g(number) e(of)h(adjacent)g(elements)h(assigned)f(to)h(dif)n(ferent)e(processors) h(is)i(minimized.)0 809 y(The)20 b(goal)g(of)h(the)f(\002rst)h (condition)e(is)j(to)e(balance)g(the)g(computations)f(among)g(the)i (processors.)k(The)20 b(goal)g(of)g(the)h(second)e(condition)0 918 y(is)25 b(to)g(minimize)e(the)h(communication)e(resulting)h(from)g (the)i(placement)e(of)h(adjacent)f(elements)h(to)h(dif)n(ferent)d (processors.)37 b(Graph)0 1028 y(partitioning)20 b(can)h(be)g(used)h (to)f(successfully)g(satisfy)h(these)g(conditions)e(by)h(\002rst)h (modeling)e(the)h(\002nite)h(element)f(mesh)g(by)g(a)h(graph,)0 1138 y(and)e(then)f(partitioning)g(it)h(into)g(equal)g(parts.)100 1247 y(Graph)31 b(partitioning)g(algorithms)g(are)h(also)h(used)f(to)h (compute)e(\002ll-reducing)f(orderings)h(of)h(sparse)g(matrices.)62 b(These)32 b(\002ll-)0 1357 y(reducing)d(orderings)f(are)j(useful)f (when)g(direct)g(methods)g(are)g(used)h(to)f(solv)o(e)h(sparse)f (systems)h(of)g(linear)f(equations.)55 b(A)31 b(good)0 1466 y(ordering)25 b(of)i(a)h(sparse)f(matrix)g(dramatically)f(reduces) g(both)h(the)g(amount)f(of)h(memory)f(as)i(well)g(as)g(the)f(time)h (required)d(to)j(solv)o(e)0 1576 y(the)23 b(system)g(of)g(equations.)32 b(Furthermore,)21 b(the)i(\002ll-reducing)e(orderings)h(produced)e(by)j (graph)e(partitioning)g(algorithms)h(are)h(par)n(-)0 1685 y(ticularly)28 b(suited)h(for)g(parallel)g(direct)f(f)o (actorization)g(as)i(the)o(y)e(lead)h(to)g(high)f(de)o(gree)g(of)h (concurrenc)o(y)d(during)h(the)i(f)o(actorization)0 1795 y(phase.)100 1905 y(Graph)19 b(partitioning)f(is)j(also)g(used)e(for)h (solving)f(optimization)g(problems)f(arising)i(in)g(numerous)e(areas)j (such)f(as)g(design)g(of)g(v)o(ery)0 2014 y(lar)o(ge)25 b(scale)i(inte)o(grated)e(circuits)h(\(VLSI\),)f(storing)g(and)h (accessing)g(spatial)h(databases)e(on)h(disks,)i(transportation)c (management,)0 2124 y(and)c(data)g(mining.)1929 5649 y(3)p eop %%Page: 4 4 4 3 bop 0 85 a FD(2)116 b(What)31 b(is)k(M)-6 b FA(E)-23 b FD(T)g FA(I)p FD(S)2 259 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)34 b FL(is)d(a)f(softw)o(are)f(package)f(for)h (partitioning)f(lar)o(ge)h(irre)o(gular)f(graphs,)i(partitioning)e(lar) o(ge)h(meshes,)i(and)f(computing)d(\002ll-)0 369 y(reducing)21 b(orderings)g(of)i(sparse)g(matrices.)32 b(The)23 b(algorithms)f(in)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(are)c(based)f(on)h (multile)n(v)o(el)e(graph)h(partitioning)f(described)0 478 y(in)30 b([8)o(,)f(7,)h(6)o(].)53 b(T)m(raditional)28 b(graph)g(partitioning)f(algorithms)h(compute)g(a)i(partition)e(of)h(a) h(graph)e(by)h(operating)e(directly)i(on)g(the)0 588 y(original)17 b(graph)h(as)h(illustrated)f(in)h(Figure)f(1\(a\).)24 b(These)18 b(algorithms)g(are)g(often)g(too)g(slo)n(w)h(and/or)f (produce)e(poor)i(quality)g(partitions.)100 698 y(Multile)n(v)o(el)23 b(partitioning)g(algorithms,)h(on)g(the)g(other)g(hand,)g(tak)o(e)g(a)h (completely)e(dif)n(ferent)g(approach)f([5)o(,)j(8)o(,)g(7)o(].)38 b(These)24 b(algo-)0 807 y(rithms,)19 b(as)h(illustrated)f(in)g(Figure) f(1\(b\),)g(reduce)g(the)i(size)g(of)e(the)i(graph)d(by)i(collapsing)f (v)o(ertices)h(and)g(edges,)f(partition)g(the)i(smaller)0 917 y(graph,)25 b(and)f(then)h(uncoarsen)e(it)j(to)g(construct)e(a)h (partition)f(for)h(the)g(original)f(graph.)40 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)30 b FL(uses)c(no)o(v)o(el)d(approaches)g (to)j(succes-)0 1026 y(si)n(v)o(ely)h(reduce)f(the)h(size)g(of)g(the)g (graph)f(as)i(well)f(as)h(to)f(further)f(re\002ne)h(the)g(partition)f (during)f(the)i(uncoarsening)e(phase.)45 b(During)0 1136 y(coarsening,)19 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)24 b FL(emplo)o(ys)19 b(algorithms)f(that)h(mak)o(e)g(it)h(easier)g(to)f (\002nd)g(a)h(high-quality)d(partition)h(at)i(the)f(coarsest)h(graph.)j (During)0 1246 y(re\002nement,)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)28 b FL(focuses)23 b(primarily)e(on)i(the)h(portion)d(of)i (the)g(graph)f(that)i(is)g(close)f(to)h(the)f(partition)f(boundary)-5 b(.)31 b(These)23 b(highly)0 1355 y(tuned)c(algorithms)g(allo)n(w)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(to)20 b(quickly)f(produce) f(high-quality)g(partitions)h(for)h(a)g(lar)o(ge)g(v)n(ariety)f(of)h (graphs.)450 2607 y @beginspecial 0 @llx 0 @lly 1129 @urx 433 @ury 3600 @rwi @setspecial %%BeginDocument: ./figures/slide78.eps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {} def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -48.0 455.0 translate 1 -1 scale /clp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /l {lineto} bind def /m {moveto} bind def /n {newpath} bind def /s {stroke} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % Polyline % % Begin Imported EPS File: slide7.eps % n gs 825 1606 tr 15.284974 -15.278970 sc 0 -233 tr -35 -330 tr save /showpage {} def % EPS file follows: /defineresource where{pop}{userdict begin/defineresource{userdict/Resources 2 copy known{get begin}{15 dict dup begin put}ifelse exch readonly exch currentdict 1 index known not{dup 30 dict def}if load 3 -1 roll 2 index put end}bind readonly def/findresource{userdict/Resources get exch get exch get} bind readonly def/resourceforall{pop pop pop pop}bind readonly def /resourcestatus{userdict/Resources 2 copy known{get exch 2 copy known{get exch known{0 -1 true}{pop pop false}ifelse}{pop pop pop false}ifelse}{pop pop false }ifelse}bind readonly def end}ifelse /Pscript_Win_Driver 200 dict dup begin /FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def /VM? {vmstatus exch sub exch pop gt { [ (This job requires more memory than is available in this printer.) 100 500 (Try one or more of the following, and then print again:) 100 485 (In the PostScript dialog box, click Optimize For Portability.) 115 470 (In the Device Options dialog box, make sure the Available Printer Memory is accurate.) 115 455 (Reduce the number of fonts in the document.) 115 440 (Print the document in parts.) 115 425 12 /Times-Roman showpage (%%[ PrinterError: Low Printer VM ]%%) = true FatalErrorIf}if} bind def /|/def load def/,/load load |/~/exch , |/?/ifelse , |/!/pop , |/`/begin , |/^ /index , |/@/dup , |/+/translate , |/$/roll , |/U/userdict , |/M/moveto , |/- /rlineto , |/&/currentdict , |/:/gsave , |/;/grestore , |/F/false , |/T/true , |/N/newpath , |/E/end , |/Ac/arc , |/An/arcn , |/A/ashow , |/D/awidthshow , | /C/closepath , |/V/div , |/O/eofill , |/L/fill , |/I/lineto , |/-C/rcurveto , |/-M/rmoveto , |/+S/scale , |/Ji/setfont , |/Lc/setlinecap , |/Lj/setlinejoin , |/Lw/setlinewidth , |/S/show , |/LH/showpage , |/K/stroke , |/W/widthshow , |/R/rotate , |/b{bind |}bind |/bd{bind |}bind |/xd{~ |}bd/ld{, |}bd/lw/Lw ld /lc/Lc ld/lj/Lj ld/sg/setgray ld/L2? F/languagelevel where{! languagelevel 2 ge{! T}if}if |/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b /DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El ! }b/self & |/reinitialize{[/TextInit/GraphInit/UtilsInit counttomark{@ where{ self eq}{F}?{cvx exec}{!}?}repeat cleartomark}b/initialize{`{/ADO_mxRot ~ | /TextInitialised? F | reinitialize E}{U/Pscript_Win_Data 200 dict @ ` put /ADO_mxRot ~ |/TextInitialised? F | reinitialize}?}b/terminate{!{& self eq{ exit}{E}?}loop E}b/suspend/terminate , |/resume{` Pscript_Win_Data `}b/snap{ transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ itransform}b /dsnap{dtransform round ~ round ~ idtransform}b<04>cvn{}|/setjn{{statusdict /jobname known{statusdict/jobname 3 -1 $ put}if}stopped cleartomark}b/solid{[] 0 setdash}b/setdsh{0 setdash}b/colspRefresh{}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rr{1 ^ 0 - 0 ~ - neg 0 - C}b L2? not g{/rf{N rp L}b/fx{1 1 dtransform @ 0 ge{1 sub 1}{1 add -0.25}? 3 -1 $ @ 0 ge{1 sub 1}{1 add -0.25}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{ 4 -2 $ snap + +S fx rf}b/rs{N rp C K}b/rc{N rp clip N}b/sg{setgray}b/sco{ setrgbcolor}b/sgco{{sg}{sco}?}b}e L2? g{/colspA/DeviceGray |/colspABC/DeviceRGB |/setAorABC{{colspA}{colspABC}? setcolorspace}b/rf/rectfill , |/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5 }? 3 -1 $ @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ snap + +S fx rf}b/rs/rectstroke , |/rc/rectclip , |/sg {@ @ setcolor}b/sco{setcolor}b/colspRefresh{colspABC setcolorspace}b/sgco{{sg }{sco}?}b/UtilsInit{F setglobal}b/definecolorrendering{/ColorRendering defineresource !}b/findcolorrendering{@/ColorRendering resourcestatus{! ! /ColorRendering findresource T}{! F}?}b/selectcolorrendering{@/ColorRendering resourcestatus{! !/ColorRendering}{!/DefaultColorRendering/ColorRendering}? findresource setcolorrendering}b}e /bullets{{/bullet}repeat}b/ANSIEncoding[/grave/acute/circumflex/tilde/macron /breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload ! 3 bullets/quotesinglbase /florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE 4 bullets/quoteleft/quoteright/quotedblleft/quotedblright /bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 2 bullets /Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]| ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy | ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176/ring put /TextInit{TextInitialised? not{/Pscript_Windows_Font & |/TextInitialised? T | /fM[1 0 0 -1 0 0]|/mFM matrix |/iMat[1 0 0.212557 neg 1 0 0]|}if}b/xUP null | /yUP null |/uW null |/xSP null |/ySP null |/sW null |/copyfont{1 ^ length add dict `{1 ^/FID ne{|}{! !}?}forall & E}b/rF{3 copyfont @ `/Encoding ANSIEncoding &/CharStrings known{CharStrings/Eth known not{! ANSIEncodingOld} if}if | E}b/mF{findfont ~{@/Encoding get @ StandardEncoding eq{! T}{{ ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{rF}{3 copyfont}? ` /OrigFontType ~ |/OrigFontName ~ | & E 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/xF{scalefont Pscript_Windows_Font 3 1 $ put}b/xMF{mFM astore makefont Pscript_Windows_Font 3 1 $ put}b/xF2/scalefont , |/xMF2{mFM astore makefont}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/sSU{N/uW ~ |/yUP ~ |/xUP ~ |}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ |/ySP ~ |/xSP ~ |}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b /sRxy{: matrix astore concat 0 0 M}b/eR/; , | /mBF{@ 4 copyfont `/FontName ~ |/OrigFontType ~ |/OrigFontName ~ | 0 FontMatrix idtransform ! &/PaintType known{PaintType 0 eq{/PaintType 2 | /StrokeWidth ~ |}{PaintType 1 eq PaintType 2 eq or PaintType 3 eq or & /StrokeWidth known and{StrokeWidth add/StrokeWidth ~ |}{!}?}?}{!}? @ & E definefont Pscript_Windows_Font 3 1 $ put}b/xBF{Pscript_Windows_Font ` 1 ^ /FontName get 1 ^ scalefont 3 1 $ scalefont 2 copy ~ | ~ ! | E}b/xMBF{mFM astore Pscript_Windows_Font ` 1 ^/FontName get 1 ^ makefont 3 1 $ makefont 2 copy ~ | ~ ! | E}b/xBF2{/sB0 ~ mBF/sB1 sB0 3 -1 $ xBF sB1}b/xMBF2{/sB0 ~ mBF mFM astore/sB1 sB0 3 -1 $ xMBF sB1}b/sB{: Pscript_Windows_Font currentfont get Ji @ S ; S}b/asB{: Pscript_Windows_Font currentfont get Ji 3 copy A ; A}b/wsB{ : Pscript_Windows_Font currentfont get Ji 4 copy W ; W}b/awsB{: Pscript_Windows_Font currentfont get Ji 6 copy D ; D}b/sBT3{: @ S ; 1 1 -M S}b /asBT3{: 3 copy A ; 1 1 -M A}b/wsBT3{: 4 copy W ; 1 1 -M W}b/awsBT3{: 6 copy D ; 1 1 -M D}b/mIF{iMat 4 3 -1 $ put 2 copyfont `/OrigFontType ~ |/OrigFontName ~ | @ & E definefont iMat makefont Pscript_Windows_Font 3 1 $ put}b /SavedCTM null |/CTMsave{/SavedCTM SavedCTM currentmatrix |}b/CTMrestore{ SavedCTM setmatrix}b/mp null |/ADO_mxRot null |/GDIHMatrix null | /GDIHPatternDict 22 dict | GDIHPatternDict `/PatternType 1 |/PaintType 2 | /Reps L2?{1}{5}? |/XStep 8 Reps mul |/YStep XStep |/BBox[0 0 XStep YStep]| /TilingType 1 |/PaintProc{` 1 Lw[]0 setdash PaintData , exec E}b/FGnd null | /BGnd null |/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b /HS_BDiagonal{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? |/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag {Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E /makehatch{GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{ /h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5/HS_DiagCross makehatch}b/GDIBWPatternDict 17 dict @ `/PatternType 1 |/PaintType L2?{1}{2}? |/RepsV L2?{1}{6}? |/RepsH L2?{1}{5}? |/BBox[0 0 RepsH 1]|/TilingType 1 | /XStep 1 |/YStep 1 |/Height 8 RepsV mul |/Width 8 |/mx[Width 0 0 Height neg 0 Height]|/FGnd null |/BGnd null |/SetBGndFGnd L2?{{BGnd null ne{BGnd aload ! sgco BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! sgco}if} }{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E |/GDIBWPatternMx null |/pfprep{save 4 1 $ /PatternOfTheDay 4 1 $ GDIBWPatternDict `/PaintData ~ |/BGnd ~ |/FGnd ~ | E CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict matrix mp CTMrestore ~ !}b /hrf null |/prf{pfprep ~ 6 1 $ 5 hrf restore}b/GraphInit{GDIHMatrix null eq{ /SavedCTM matrix | : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly | ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix currentmatrix readonly | ; ;}if}b/cirp{360 0 An C}b/ellp{CTMsave + +S 0.5 0 M 0 0 0.5 360 0 An C CTMrestore}b/rrp{/rad ~ |/y2 ~ |/x2 ~ |/y1 ~ |/x1 ~ | x2 x1 add 2 V y1 M x1 y1 x1 y2 rad arct x1 y2 x2 y2 rad arct x2 y2 x2 y1 rad arct x2 y1 x1 y1 rad arct C}b/RRp{CTMsave + +S/dyS ~ |/dxS ~ | dxS 2 V 0 M 0 0 0 dyS 0.5 arct 0 dyS dxS dyS 0.5 arct dxS dyS dxS 0 0.5 arct dxS 0 0 0 0.5 arct C CTMrestore}b L2? not g{/arct{arcto ! ! ! !}b/GDIpattfill{@ ` BGnd null ne PaintType 2 eq and{: BGnd aload ! sgco fEOFill{O}{L}? ; FGnd aload ! U/fGray 2 ^ put{2}{4}? -1 $}if E @ patterncalc : 4 ^/PaintType get 2 eq{fGray{6 -1 $ sg}{8 -3 $ sco}? }if fEOFill{eoclip}{clip}? N patternfill ; N}b/hrf{/fGray 1 ^ 6 eq | -4 $ N rp C/fEOFill F | GDIpattfill}b/hfMain{/fEOFill ~ |/fGray ~ | GDIpattfill}b/hf{T hfMain}b/hfW{F hfMain}b/hs{currentpoint strokepath M hfW}b/pfMain{/fEOFill ~ | pfprep GDIpattfill restore N}b/pf{T pfMain}b/pfW{F pfMain}b/ps{currentpoint strokepath M pfW}b/mpstr 1 string |/mp{~ @ length 12 add dict copy ` /PatternCTM matrix currentmatrix |/PatternMatrix ~ |/PatWidth XStep mpstr length mul |/PatHeight YStep |/FontType 3 |/Encoding 256 array | 3 string 0 1 255{Encoding ~ @ 3 ^ cvs cvn put}for !/FontMatrix matrix |/FontBBox BBox | /BuildChar{! @ ` XStep 0 FontBBox aload ! setcachedevice/PaintProc , E : exec ;}b & E ~ @ 3 -1 $ definefont}b/patterncalc{` : PatternCTM setmatrix PatternMatrix concat BBox aload ! ! ! + pathbbox ; PatHeight V ceiling 4 1 $ PatWidth V ceiling 4 1 $ PatHeight V floor 4 1 $ PatWidth V floor 4 1 $ 2 ^ sub cvi abs ~ 3 ^ sub cvi abs ~ 4 2 $ PatHeight mul ~ PatWidth mul ~ E}b /patternfill{5 -1 $ @ ` Ji PatternCTM setmatrix PatternMatrix concat 0 2 ^ 2 ^ M 0 1 mpstr length 1 sub{1 ^ mpstr 3 1 $ put}for ! 2 ^{currentpoint 5 ^{mpstr S}repeat YStep add M}repeat ! ! ! ! E}b}e L2? g{/mp/makepattern , |/hrf{6 eq setAorABC setpattern rectfill}b/hf{ setAorABC setpattern O}b/hfW{setAorABC setpattern L}b/hs{setAorABC setpattern K}b/pf{pfprep setpattern O restore N}b/pfW{pfprep setpattern L restore N}b/ps{ pfprep setpattern K restore N}b}e /iw 0 |/ih 0 |/im_save 0 |/s 0 |/polarity 0 |/smoothflag 0 |/mystring 0 |/bpc 0 |/setup1asciiproc{[currentfile mystring/readhexstring cvx/! cvx]cvx bind}b /setup1binaryproc{[currentfile mystring/readstring cvx/! cvx]cvx bind}b /setup2asciiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}b /setup2binaryproc{currentfile/RunLengthDecode filter}b/mycolorspace{colspABC}| /myimagedict{/myimagedict 10 dict | myimagedict @ `/ImageType 1 | /MultipleDataSource F | E}b/imageprocarray[/setup1binaryproc/setup1asciiproc /setup2binaryproc/setup2asciiproc/setup1binarydecodeproc/setup1asciidecodeproc ]|/L2Polarity{{[1 0]}{[0 1]}?}b/Q{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/X{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/Z{im_save restore}b/Y{sgco myimagedict @ ` /Width iw |/Height ih |/Decode polarity |/ImageMatrix[iw 0 0 ih 0 0]| /DataSource s |/BitsPerComponent 1 |/Interpolate smoothflag | E imagemask}b L2? not g{/setup2asciiproc{[/Level2ImagesError , aload ! T FatalErrorIf}b /setup2binaryproc/setup2asciiproc , |/L2Polarity{}|/Y{sgco iw ih polarity[iw 0 0 ih 0 0]s imagemask}b}e L2? not g{/testsystemdict{where{systemdict eq{T}{F}?}{F}?}b/c 1 |/colorimage where{! T}{F}?{/c 0 statusdict `/processcolors where{! ! processcolors}{ /deviceinfo where{! deviceinfo/Colors known{!{deviceinfo/Colors get}}if}if}? E | c 0 ne{/colorimage testsystemdict/setcolortransfer testsystemdict /currentcolortransfer testsystemdict/currentcmykcolor testsystemdict and and and not{/c 0 |}if}if}if c @ 1 ne ~ @ 3 ne ~ 4 ne and and{/c 0 |}if c 1 eq g{ /expandbw{expandfactor mul round cvi bwclut ~ get 255 V}b/doclutimage{!/bwclut ~ | bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/expandfactor ~ |[/expandbw ,/exec , @ currenttransfer ~]cvx bind settransfer iw ih bpc[iw 0 0 ih 0 0]s image}b}e c @ 3 eq ~ 4 eq or g{/nullproc{{}}|/concatutil{/exec , 7 -1 $/exec ,}b/defsubclut{ 1 add getinterval |}b/spconcattransfer{/Dclut ~ |/Cclut ~ |/Bclut ~ |/Aclut ~ |/ncompute ~ , | currentcolortransfer[{Aclut ncompute}concatutil]cvx[{Bclut ncompute}concatutil]cvx[{Cclut ncompute}concatutil]cvx[{Dclut ncompute} concatutil]cvx setcolortransfer}b/setuprgbcluts{/bit3x rgbclut length 3 sub | /bit1x bit3x 3 idiv |/rclut rgbclut |/gclut rclut 1 bit3x defsubclut/bclut rclut 2 bit3x defsubclut}b}e c 3 eq g{/3compute{~ bit3x mul round cvi get 255 V}b/doclutimage{/rgbclut ~ | ! setuprgbcluts/3compute rclut gclut bclut @ spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @]cvx nullproc nullproc T 3 colorimage}b}e c 4 eq g{/ftoint{1 ~ sub 255 mul round cvi}b/stuffclut{ cmykindex 3 -1 $ put}b/4compute{~ bit4x mul round cvi get 255 V}b /invalidcolortable? T |/computecmykclut{setuprgbcluts/bit4x rgbclut length 3 idiv 4 mul 4 sub |/cmykclut bit4x 4 add string |/cclut cmykclut |/mclut cclut 1 bit4x defsubclut/yclut cclut 2 bit4x defsubclut/kclut cclut 3 bit4x defsubclut/cmykindex 0 | 0 1 bit1x{@/cmykindex ~ bit1x ~ sub 4 mul | 3 mul @ rclut ~ get 255 V ~ @ gclut ~ get 255 V ~ bclut ~ get 255 V setrgbcolor currentcmykcolor ftoint kclut stuffclut ftoint yclut stuffclut ftoint mclut stuffclut ftoint cclut stuffclut}for}b/doclutimage{/rgbclut ~ | ! invalidcolortable?{computecmykclut}if/4compute cclut mclut yclut kclut spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @ @]cvx nullproc nullproc nullproc T 4 colorimage}b}e c 0 eq g{/a{3 mul 3 getinterval putinterval ~ 3 add ~ 3 copy}b/8lookup/a , |/4lookup{/byte 1 ^ | -4 bitshift a byte 15 and a}b/2lookup{/byte 1 ^ | -6 bitshift a byte -4 bitshift 3 and a byte -2 bitshift 3 and a byte 3 and a}b/colorexpand{mystringexp 0 rgbclut 3 copy 7 -1 $/mylookup , forall ! ! ! ! !}b/createexpandstr{/mystringexp ~ mystring length mul string |}b/doclutimage{/rgbclut ~ | !/mylookup bpc 8 eq{3 createexpandstr/8lookup}{bpc 4 eq{6 createexpandstr/4lookup}{12 createexpandstr/2lookup}?}? , | iw ih bpc[iw 0 0 ih 0 0][s/exec ,/colorexpand ,/exec ,]cvx F 3 colorimage}b}e/colorimage where{! T}{F}? g{/do24image{iw ih 8 [iw 0 0 ih 0 0]s F 3 colorimage}b}DefIf_El{/rgbtogray{/str ~ |/len str length |/smlen len 3 idiv |/rstr str |/gstr str 1 len 1 sub getinterval |/bstr str 2 len 2 sub getinterval | str @ 0 1 smlen 1 sub{@ 3 mul rstr 1 ^ get 0.3 mul gstr 2 ^ get 0.59 mul add bstr 3 -1 $ get 0.11 mul add round cvi put @}for ! 0 smlen getinterval}b/do24image{iw ih 8[iw 0 0 ih 0 0][s/exec ,/rgbtogray ,/exec ,]cvx bind image}b}e/doNimage{bpc 24 eq{do24image}{iw ih bpc[iw 0 0 ih 0 0]s image}?}b}e L2? g{/doclutimage{/rgbclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[ /Indexed colspABC hival rgbclut]setcolorspace myimagedict @ `/Width iw | /Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s | /BitsPerComponent bpc |/Interpolate smoothflag | E image}b/doCMYKclutimage{ /CMYKclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[/Indexed/DeviceCMYK hival CMYKclut]setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc | /Interpolate smoothflag | E image}b/doNimage{bpc 24 eq{colspABC}{colspA}? setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode bpc 24 eq{[0 1 0 1 0 1]}{[0 1]}? |/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc 24 eq{8}{bpc}? |/Interpolate smoothflag | E image}b/doCMYKimage{ /DeviceCMYK setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 1 0 1 0 1 0 1]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent 8 | /Interpolate smoothflag | E image}b}e /GreNewFont{10 dict @ 3 1 $ | @ ` 4 1 $/FontType 3 |/FontMatrix ~ |/FontBBox ~ |/Encoding 256 array | 0 1 255{Encoding ~/.notdef put}for/CharProcs 257 dict | CharProcs/.notdef{}put/Metrics 257 dict | Metrics/.notdef 3 -1 $ put/BuildChar {/char ~ |/fontdict ~ |/charname fontdict/Encoding get char get | fontdict /Metrics get charname get aload ! setcachedevice fontdict ` Encoding char get CharProcs ~ get E exec}| E definefont !}|/AddChar{` Encoding 3 1 $ put CharProcs 3 1 $ put Metrics 3 1 $ put E}| /FEbuf 2 string |/FEglyph 3 string |/FE{(G00)FEglyph copy ! 1 ~{@ 16 lt{ /offset 2 store}{/offset 1 store}? @ 16 FEbuf cvrs FEglyph ~ offset ~ putinterval 1 ^ ~ FEglyph cvn put}for}bind |/Type1Hdr{11 dict `/FontName ~ | /PaintType ~ |/FontType 1 |/FontMatrix[1 3 ^ V 0 0 1 6 ^ V 0 0]| !/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for 3 ^ 3 ^ FE | ! !/FontBBox{0 0 0 0}| & E currentfile eexec}bind | /pp 1 string |/ss 1 string |/rledecodebinary{/DC 0 |/BC 0 |{DC mystring length ge{exit}if currentfile ss readstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{ mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/rledecodeascii{/DC 0 | /BC 0 |{DC mystring length ge{exit}if currentfile ss readhexstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readhexstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readhexstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/setup1asciidecodeproc{[/rledecodeascii cvx]cvx bind}b /setup1binarydecodeproc{[/rledecodebinary cvx]cvx bind}b userdict/Pscript_Win_Compat 13 dict dup begin/bd{bind def}bind def/ld{load def }bd/CB{pop pop pop pop}bind def/B{pop pop pop pop}bind def/$x matrix def/SS{ /pagesave save def}bind def/RS{/pagesave where{pop pagesave restore}{$x matrix invertmatrix concat}ifelse}bind def/ANSIVec[0/grave 1/acute 2/circumflex 3 /tilde 4/macron 5/breve 6/dotaccent 7/dieresis 8/ring 9/cedilla 10 /hungarumlaut 11/ogonek 12/caron 13/dotlessi 39/quotesingle 96/grave 124/bar 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135 /daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150 /endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156 /oe 159/Ydieresis 160/space 161/exclamdown 164/currency 165/yen 166/brokenbar 167/section 168/dieresis 169/copyright 170/ordfeminine 171/guillemotleft 172 /logicalnot 173/hyphen 174/registered 175/macron 176/degree 177/plusminus 178 /twosuperior 179/threesuperior 180/acute 181/mu 182/paragraph 183 /periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 187 /guillemotright 188/onequarter 189/onehalf 190/threequarters 191/questiondown 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198 /AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204 /Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223 /germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229 /aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242 /ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248 /oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254 /thorn 255/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{ pop pop}ifelse}forall/initialize{currentdict exch begin begin}bind def /terminate{/@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def/resume/initialize load def/M/moveto load def end put/Courier findfont 10 scalefont setfont end /ProcSet defineresource pop Pscript_Win_Compat dup /initialize get exec [ 0 1.000 -1.000 0 0 0 ] false /Pscript_Win_Driver /ProcSet findresource dup /initialize get exec /mysetup [ 0.240 0 0 -0.240 8.880 592.800 ] | userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; 114 70 N M 1 1 rr 114 70 N M 3000 2250 rr : 1.000 1.000 1.000 sco O ; 114 70 N M 1 1 rr 114 70 N M 1 1 rr 114 70 N M 2401 1026 rr : 0.800 1.000 0.800 sco O ; 1 Lw 0 Lc 0 Lj solid 0.800 1.000 0.800 sco K 234 176 N M 2131 295 rr : 114 70 3000 2250 rc 0.647 0 0.129 sco %%IncludeFont: Helvetica-Bold (F0) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F0_100) cvn F0 100 xF F0_100 Ji 264 193 M -0.100 0 (T)A 0.100 0 (r)A 0.400 0 (a)A -0.100 0 (d)A -0.800 0 (i)A 0.700 0 (t)A -0.800 0 (i)A -0.100 0 (on)A 0.400 0 (a)A 1.000 0 32 -0.800 0 (l )D -0.100 0 (p)A 0.400 0 (a)A 0.100 0 (r)A -0.300 0 (t)A 0.200 0 (i)A -0.300 0 (t)A 0.200 0 (i)A -0.100 0 (o)A -1.100 0 (n)A 0.200 0 (i)A 0.300 0 32 -0.100 0 (ng )D -0.600 0 (a)A 0.200 0 (l)A -0.100 0 (go)A 0.100 0 (r)A -0.800 0 (i)A 0.700 0 (t)A -0.100 0 (h)A 0.100 0 (m)A 0.800 0 32 -0.600 0 (s )D 0.400 0 (c)A -0.100 0 (o)A 0.100 0 (m)A -0.100 0 (pu)A -0.300 0 (t)A 0.400 0 (e)A ; : 114 70 3000 2250 rc 0.647 0 0.129 sco F0_100 Ji 339 336 M -1.200 0 32 0.400 0 (a )D -0.100 0 (p)A 0.400 0 (a)A 0.100 0 (r)A -0.300 0 (t)A 0.200 0 (i)A -0.300 0 (t)A 0.200 0 (i)A -0.700 0 32 -0.100 0 (on d)D 0.200 0 (i)A 0.100 0 (r)A 0.400 0 (e)A -0.600 0 (c)A 0.700 0 (t)A -0.800 0 (l)A -0.200 0 32 0.400 0 (y )D -0.700 0 32 -0.100 0 (on )D -0.300 0 (t)A -0.100 0 (h)A -0.200 0 32 0.400 0 (e )D -0.100 0 (o)A 0.100 0 (r)A -0.800 0 (i)A -0.100 0 (g)A 0.200 0 (i)A -0.100 0 (n)A 0.400 0 (a)A 1.000 0 32 -0.800 0 (l )D -0.100 0 (g)A 0.100 0 (r)A -0.600 0 (a)A -0.100 0 (ph)A 0.700 0 (!)A ; 428 664 N M -7 1 - -9 0 - -20 1 - -22 1 - -23 1 - -23 3 - -21 5 - -9 3 - -8 5 - -7 5 - -6 6 - -4 8 - -4 8 - -3 11 - -2 11 - -2 25 - 0 26 - 2 27 - 3 27 - 5 23 - 2 11 - 3 9 - 7 17 - 9 15 - 11 14 - 12 13 - 13 10 - 14 10 - 13 8 - 14 6 - 14 5 - 16 4 - 17 2 - 17 1 - 17 -1 - 16 -2 - 14 -4 - 13 -5 - 6 -3 - 5 -5 - 9 -11 - 8 -13 - 7 -14 - 6 -14 - 7 -14 - 7 -11 - 3 -4 - 4 -4 - 7 -4 - 7 -2 - 5 -1 - 6 1 - 7 2 - 8 2 - 10 1 - 12 1 - 15 0 - 18 -1 - 20 -2 - 21 -1 - 21 0 - 21 0 - 21 1 - 18 3 - 9 3 - 9 4 - 17 10 - 17 12 - 16 12 - 16 11 - 7 5 - 7 4 - 7 2 - 7 1 - 6 0 - 6 -2 - 6 -4 - 6 -5 - 5 -7 - 6 -9 - 5 -9 - 5 -11 - 10 -22 - 8 -24 - 6 -24 - 4 -22 - 1 -9 - 0 -9 - -1 -14 - -4 -13 - -5 -12 - -7 -11 - -10 -11 - -10 -10 - -12 -11 - -13 -11 - -14 -12 - -17 -14 - -17 -14 - -20 -14 - -20 -13 - -22 -11 - -22 -9 - -23 -6 - -12 -1 - -13 -1 - -29 1 - -31 4 - -31 5 - -31 6 - -27 7 - -13 3 - -11 2 - -10 3 - -9 2 - -7 2 - -5 2 - -5 3 - -3 2 - -4 4 - -1 5 - 0 4 - 0 4 - -2 3 - -4 2 - -5 1 - -6 0 - -12 -1 - -7 -1 - -9 0 - -11 0 - -12 1 - C : 0.502 0.502 0.502 sco O ; 420 656 N M -7 1 - -9 0 - -20 1 - -22 1 - -23 1 - -23 3 - -21 5 - -9 3 - -8 5 - -7 5 - -6 6 - -4 8 - -4 8 - -3 11 - -2 11 - -3 24 - 0 27 - 2 27 - 4 26 - 4 24 - 3 11 - 3 9 - 7 17 - 9 15 - 11 13 - 12 13 - 13 11 - 13 9 - 14 8 - 14 7 - 14 5 - 16 3 - 17 3 - 17 0 - 17 0 - 16 -3 - 14 -3 - 13 -5 - 6 -3 - 5 -5 - 9 -11 - 8 -13 - 7 -15 - 6 -14 - 7 -13 - 7 -11 - 3 -5 - 4 -3 - 7 -5 - 6 -2 - 6 0 - 6 1 - 7 2 - 8 2 - 10 1 - 12 1 - 15 0 - 18 -1 - 20 -2 - 20 -1 - 22 0 - 21 0 - 20 1 - 19 3 - 9 3 - 8 3 - 17 10 - 17 12 - 17 12 - 15 12 - 8 4 - 7 4 - 7 3 - 7 1 - 6 0 - 6 -2 - 6 -4 - 6 -6 - 5 -7 - 6 -8 - 5 -10 - 5 -10 - 10 -23 - 8 -24 - 6 -24 - 4 -21 - 1 -10 - 0 -8 - -1 -14 - -4 -13 - -5 -12 - -7 -11 - -10 -11 - -10 -10 - -12 -11 - -13 -11 - -14 -12 - -17 -14 - -17 -14 - -20 -14 - -20 -13 - -22 -12 - -22 -8 - -23 -6 - -12 -1 - -13 -1 - -29 1 - -31 4 - -31 5 - -31 6 - -27 7 - -13 3 - -11 2 - -10 3 - -9 2 - -7 2 - -6 2 - -4 2 - -3 2 - -4 5 - -2 4 - 0 5 - 0 3 - -1 4 - -4 2 - -6 1 - -5 0 - -12 -1 - -8 -1 - -8 0 - -11 0 - -12 1 - C : 0.200 0.200 0.800 sco O ; 1820 653 N M -7 1 - -9 0 - -20 1 - -22 1 - -23 1 - -23 3 - -21 5 - -9 4 - -8 4 - -7 6 - -6 6 - -4 8 - -4 9 - -3 11 - -2 11 - -2 26 - 0 27 - 2 28 - 3 28 - 5 24 - 2 11 - 3 10 - 7 17 - 9 16 - 11 14 - 12 13 - 13 11 - 14 10 - 13 8 - 14 7 - 15 5 - 16 4 - 16 2 - 17 1 - 17 -1 - 16 -2 - 14 -4 - 13 -5 - 6 -4 - 5 -4 - 9 -11 - 8 -14 - 7 -15 - 7 -15 - 6 -13 - 7 -12 - 3 -4 - 4 -4 - 7 -5 - 7 -2 - 5 0 - 6 1 - 7 2 - 8 2 - 10 1 - 12 1 - 15 0 - 18 -2 - 20 -1 - 21 -1 - 22 -1 - 21 0 - 20 2 - 18 3 - 9 3 - 9 3 - 17 11 - 17 12 - 16 13 - 16 11 - 7 5 - 7 4 - 7 3 - 7 1 - 6 0 - 6 -2 - 6 -4 - 6 -6 - 5 -7 - 6 -9 - 5 -10 - 5 -11 - 10 -23 - 8 -25 - 6 -25 - 4 -22 - 1 -10 - 0 -9 - -1 -15 - -3 -13 - -6 -12 - -7 -12 - -9 -11 - -11 -10 - -12 -11 - -13 -12 - -14 -13 - -17 -14 - -17 -15 - -20 -14 - -20 -13 - -22 -12 - -22 -9 - -23 -6 - -12 -2 - -13 0 - -29 1 - -31 3 - -31 6 - -30 6 - -28 7 - -13 3 - -11 3 - -10 3 - -9 2 - -7 2 - -5 2 - -5 3 - -3 2 - -4 5 - -1 4 - 0 5 - 0 3 - -2 4 - -4 2 - -5 1 - -6 0 - -5 0 - -7 -1 - -7 -1 - -9 0 - -10 0 - -13 1 - C : 0.502 0.502 0.502 sco O ; 1812 645 N M -7 1 - -9 0 - -20 1 - -22 0 - -23 2 - -23 3 - -21 5 - -9 3 - -8 5 - -7 5 - -6 7 - -4 8 - -4 9 - -3 10 - -2 12 - -2 25 - 0 28 - 2 28 - 3 27 - 2 13 - 3 12 - 2 10 - 3 10 - 7 17 - 9 16 - 11 14 - 12 13 - 13 11 - 14 10 - 13 8 - 14 7 - 14 5 - 16 4 - 17 2 - 17 1 - 17 -1 - 16 -2 - 14 -4 - 13 -5 - 6 -4 - 5 -4 - 9 -11 - 8 -14 - 7 -15 - 6 -15 - 7 -13 - 7 -12 - 3 -4 - 4 -4 - 7 -5 - 7 -2 - 5 0 - 6 1 - 7 2 - 8 2 - 10 1 - 12 1 - 15 0 - 18 -1 - 20 -2 - 21 -1 - 21 0 - 21 0 - 21 1 - 18 3 - 9 3 - 9 4 - 17 10 - 17 12 - 16 13 - 16 12 - 7 4 - 7 4 - 7 3 - 7 1 - 6 0 - 6 -2 - 6 -4 - 6 -6 - 5 -7 - 6 -9 - 5 -10 - 5 -10 - 10 -24 - 8 -25 - 6 -24 - 4 -22 - 1 -10 - 0 -9 - -1 -15 - -4 -14 - -5 -12 - -7 -11 - -10 -11 - -10 -11 - -12 -10 - -13 -12 - -14 -13 - -17 -14 - -17 -15 - -20 -14 - -20 -14 - -22 -11 - -22 -9 - -11 -4 - -12 -2 - -12 -2 - -13 0 - -29 1 - -31 3 - -31 6 - -31 6 - -27 7 - -13 3 - -11 3 - -10 3 - -9 2 - -7 2 - -5 2 - -5 2 - -3 2 - -4 5 - -1 5 - 0 4 - 0 4 - -2 3 - -4 3 - -5 1 - -6 0 - -12 -1 - -7 -1 - -9 -1 - -11 1 - -12 1 - C : 0.200 0.200 0.800 sco O ; N 1929 615.500 M 2 1 rr : 0 0 0 sco O ; N 1928 616.500 M 4 1 rr : 0 0 0 sco O ; N 1927 617.500 M 6 1 rr : 0 0 0 sco O ; N 1926 618.500 M 8 1 rr : 0 0 0 sco O ; N 1927 619.500 M 8 1 rr : 0 0 0 sco O ; N 1928 620.500 M 8 1 rr : 0 0 0 sco O ; N 1929 621.500 M 7 1 rr : 0 0 0 sco O ; N 1930 622.500 M 7 1 rr : 0 0 0 sco O ; N 1931 623.500 M 7 1 rr : 0 0 0 sco O ; N 1931 624.500 M 8 1 rr : 0 0 0 sco O ; N 1932 625.500 M 8 1 rr : 0 0 0 sco O ; N 1933 626.500 M 8 1 rr : 0 0 0 sco O ; N 1934 627.500 M 8 1 rr : 0 0 0 sco O ; N 1935 628.500 M 8 1 rr : 0 0 0 sco O ; N 1936 629.500 M 9 1 rr : 0 0 0 sco O ; N 1937 630.500 M 9 1 rr : 0 0 0 sco O ; N 1938 631.500 M 9 1 rr : 0 0 0 sco O ; N 1940 632.500 M 8 1 rr : 0 0 0 sco O ; N 1941 633.500 M 8 1 rr : 0 0 0 sco O ; N 1942 634.500 M 8 1 rr : 0 0 0 sco O ; N 1943 635.500 M 8 1 rr : 0 0 0 sco O ; N 1944 636.500 M 8 1 rr : 0 0 0 sco O ; N 1945 637.500 M 8 1 rr : 0 0 0 sco O ; N 1946 638.500 M 7 1 rr : 0 0 0 sco O ; N 1947 639.500 M 7 1 rr : 0 0 0 sco O ; N 1948 640.500 M 7 1 rr : 0 0 0 sco O ; N 1948 641.500 M 8 1 rr : 0 0 0 sco O ; N 1949 642.500 M 8 1 rr : 0 0 0 sco O ; N 1950 643.500 M 8 1 rr : 0 0 0 sco O ; N 1951 644.500 M 8 1 rr : 0 0 0 sco O ; N 1952 645.500 M 8 1 rr : 0 0 0 sco O ; N 1953 646.500 M 7 1 rr : 0 0 0 sco O ; N 1954 647.500 M 7 1 rr : 0 0 0 sco O ; N 1955 648.500 M 7 1 rr : 0 0 0 sco O ; N 1955 649.500 M 8 1 rr : 0 0 0 sco O ; N 1956 650.500 M 8 1 rr : 0 0 0 sco O ; N 1957 651.500 M 8 1 rr : 0 0 0 sco O ; N 1958 652.500 M 7 1 rr : 0 0 0 sco O ; N 1959 653.500 M 7 1 rr : 0 0 0 sco O ; N 1960 654.500 M 7 1 rr : 0 0 0 sco O ; N 1960 655.500 M 8 1 rr : 0 0 0 sco O ; N 1961 656.500 M 7 1 rr : 0 0 0 sco O ; N 1962 657.500 M 7 1 rr : 0 0 0 sco O ; N 1963 658.500 M 7 1 rr : 0 0 0 sco O ; N 1963 659.500 M 8 1 rr : 0 0 0 sco O ; N 1964 660.500 M 7 1 rr : 0 0 0 sco O ; N 1965 661.500 M 7 1 rr : 0 0 0 sco O ; N 1966 662.500 M 7 1 rr : 0 0 0 sco O ; N 1966 663.500 M 8 1 rr : 0 0 0 sco O ; N 1967 664.500 M 7 1 rr : 0 0 0 sco O ; N 1968 665.500 M 7 1 rr : 0 0 0 sco O ; N 1969 666.500 M 7 1 rr : 0 0 0 sco O ; N 1969 667.500 M 7 1 rr : 0 0 0 sco O ; N 1971 668.500 M 6 1 rr : 0 0 0 sco O ; N 1971 669.500 M 6 1 rr : 0 0 0 sco O ; N 1972 670.500 M 6 1 rr : 0 0 0 sco O ; N 1972 671.500 M 6 1 rr : 0 0 0 sco O ; N 1973 672.500 M 6 1 rr : 0 0 0 sco O ; N 1973 673.500 M 6 1 rr : 0 0 0 sco O ; N 1974 674.500 M 6 1 rr : 0 0 0 sco O ; N 1974 675.500 M 6 1 rr : 0 0 0 sco O ; N 1974 676.500 M 7 1 rr : 0 0 0 sco O ; N 1975 677.500 M 6 1 rr : 0 0 0 sco O ; N 1975 678.500 M 7 1 rr : 0 0 0 sco O ; N 1976 679.500 M 6 1 rr : 0 0 0 sco O ; N 1976 680.500 M 7 1 rr : 0 0 0 sco O ; N 1977 681.500 M 6 1 rr : 0 0 0 sco O ; N 1977 682.500 M 7 1 rr : 0 0 0 sco O ; N 1978 683.500 M 6 1 rr : 0 0 0 sco O ; N 1978 684.500 M 7 1 rr : 0 0 0 sco O ; N 1979 685.500 M 6 1 rr : 0 0 0 sco O ; N 1979 686.500 M 7 1 rr : 0 0 0 sco O ; N 1980 687.500 M 6 1 rr : 0 0 0 sco O ; N 1980 688.500 M 7 1 rr : 0 0 0 sco O ; N 1981 689.500 M 6 1 rr : 0 0 0 sco O ; N 1981 690.500 M 7 1 rr : 0 0 0 sco O ; N 1982 691.500 M 6 1 rr : 0 0 0 sco O ; N 1982 692.500 M 7 1 rr : 0 0 0 sco O ; N 1983 693.500 M 6 1 rr : 0 0 0 sco O ; N 1983 694.500 M 6 1 rr : 0 0 0 sco O ; N 1983 695.500 M 7 1 rr : 0 0 0 sco O ; N 1984 696.500 M 6 1 rr : 0 0 0 sco O ; N 1984 697.500 M 7 1 rr : 0 0 0 sco O ; N 1985 698.500 M 6 1 rr : 0 0 0 sco O ; N 1985 699.500 M 7 1 rr : 0 0 0 sco O ; N 1986 700.500 M 6 1 rr : 0 0 0 sco O ; N 1986 701.500 M 7 1 rr : 0 0 0 sco O ; N 1987 702.500 M 6 1 rr : 0 0 0 sco O ; N 1987 703.500 M 6 1 rr : 0 0 0 sco O ; N 1987 704.500 M 7 1 rr : 0 0 0 sco O ; N 1988 705.500 M 6 1 rr : 0 0 0 sco O ; N 1988 706.500 M 7 1 rr : 0 0 0 sco O ; N 1989 707.500 M 6 1 rr : 0 0 0 sco O ; N 1989 708.500 M 7 1 rr : 0 0 0 sco O ; N 1990 709.500 M 6 1 rr : 0 0 0 sco O ; N 1990 710.500 M 6 1 rr : 0 0 0 sco O ; N 1990 711.500 M 7 1 rr : 0 0 0 sco O ; N 1991 712.500 M 6 1 rr : 0 0 0 sco O ; N 1991 713.500 M 7 1 rr : 0 0 0 sco O ; N 1992 714.500 M 6 1 rr : 0 0 0 sco O ; N 1992 715.500 M 7 1 rr : 0 0 0 sco O ; N 1993 716.500 M 6 1 rr : 0 0 0 sco O ; N 1993 717.500 M 7 1 rr : 0 0 0 sco O ; N 1994 718.500 M 6 1 rr : 0 0 0 sco O ; N 1994 719.500 M 7 1 rr : 0 0 0 sco O ; N 1995 720.500 M 6 1 rr : 0 0 0 sco O ; N 1995 721.500 M 7 1 rr : 0 0 0 sco O ; N 1996 722.500 M 6 1 rr : 0 0 0 sco O ; N 1996 723.500 M 7 1 rr : 0 0 0 sco O ; N 1997 724.500 M 6 1 rr : 0 0 0 sco O ; N 1997 725.500 M 7 1 rr : 0 0 0 sco O ; N 1998 726.500 M 6 1 rr : 0 0 0 sco O ; N 1998 727.500 M 7 1 rr : 0 0 0 sco O ; N 1999 728.500 M 6 1 rr : 0 0 0 sco O ; N 1999 729.500 M 7 1 rr : 0 0 0 sco O ; N 2000 730.500 M 6 1 rr : 0 0 0 sco O ; N 2000 731.500 M 7 1 rr : 0 0 0 sco O ; N 2001 732.500 M 6 1 rr : 0 0 0 sco O ; N 2001 733.500 M 6 1 rr : 0 0 0 sco O ; N 2001 734.500 M 7 1 rr : 0 0 0 sco O ; N 2002 735.500 M 6 1 rr : 0 0 0 sco O ; N 2002 736.500 M 7 1 rr : 0 0 0 sco O ; N 2003 737.500 M 6 1 rr : 0 0 0 sco O ; N 2003 738.500 M 7 1 rr : 0 0 0 sco O ; N 2004 739.500 M 6 1 rr : 0 0 0 sco O ; N 2004 740.500 M 7 1 rr : 0 0 0 sco O ; N 2005 741.500 M 6 1 rr : 0 0 0 sco O ; N 2005 742.500 M 7 1 rr : 0 0 0 sco O ; N 2006 743.500 M 6 1 rr : 0 0 0 sco O ; N 2006 744.500 M 7 1 rr : 0 0 0 sco O ; N 2007 745.500 M 6 1 rr : 0 0 0 sco O ; N 2007 746.500 M 7 1 rr : 0 0 0 sco O ; N 2008 747.500 M 7 1 rr : 0 0 0 sco O ; N 2008 748.500 M 7 1 rr : 0 0 0 sco O ; N 2009 749.500 M 7 1 rr : 0 0 0 sco O ; N 2010 750.500 M 6 1 rr : 0 0 0 sco O ; N 2010 751.500 M 7 1 rr : 0 0 0 sco O ; N 2011 752.500 M 7 1 rr : 0 0 0 sco O ; N 2011 753.500 M 7 1 rr : 0 0 0 sco O ; N 2012 754.500 M 7 1 rr : 0 0 0 sco O ; N 2013 755.500 M 7 1 rr : 0 0 0 sco O ; N 2013 756.500 M 8 1 rr : 0 0 0 sco O ; N 2014 757.500 M 7 1 rr : 0 0 0 sco O ; N 2015 758.500 M 7 1 rr : 0 0 0 sco O ; N 2016 759.500 M 7 1 rr : 0 0 0 sco O ; N 2016 760.500 M 9 1 rr : 0 0 0 sco O ; N 2017 761.500 M 9 1 rr : 0 0 0 sco O ; N 2018 762.500 M 9 1 rr : 0 0 0 sco O ; N 2019 763.500 M 9 1 rr : 0 0 0 sco O ; N 2020 764.500 M 10 1 rr : 0 0 0 sco O ; N 2022 765.500 M 9 1 rr : 0 0 0 sco O ; N 2023 766.500 M 9 1 rr : 0 0 0 sco O ; N 2024 767.500 M 10 1 rr : 0 0 0 sco O ; N 2025 768.500 M 10 1 rr : 0 0 0 sco O ; N 2027 769.500 M 9 1 rr : 0 0 0 sco O ; N 2028 770.500 M 10 1 rr : 0 0 0 sco O ; N 2029 771.500 M 10 1 rr : 0 0 0 sco O ; N 2031 772.500 M 10 1 rr : 0 0 0 sco O ; N 2032 773.500 M 10 1 rr : 0 0 0 sco O ; N 2033 774.500 M 10 1 rr : 0 0 0 sco O ; N 2035 775.500 M 10 1 rr : 0 0 0 sco O ; N 2036 776.500 M 10 1 rr : 0 0 0 sco O ; N 2038 777.500 M 9 1 rr : 0 0 0 sco O ; N 2039 778.500 M 10 1 rr : 0 0 0 sco O ; N 2040 779.500 M 10 1 rr : 0 0 0 sco O ; N 2042 780.500 M 9 1 rr : 0 0 0 sco O ; N 2043 781.500 M 9 1 rr : 0 0 0 sco O ; N 2044 782.500 M 8 1 rr : 0 0 0 sco O ; N 2046 783.500 M 7 1 rr : 0 0 0 sco O ; N 2047 784.500 M 7 1 rr : 0 0 0 sco O ; N 2047 785.500 M 7 1 rr : 0 0 0 sco O ; N 2048 786.500 M 7 1 rr : 0 0 0 sco O ; N 2049 787.500 M 7 1 rr : 0 0 0 sco O ; N 2049 788.500 M 7 1 rr : 0 0 0 sco O ; N 2050 789.500 M 7 1 rr : 0 0 0 sco O ; N 2051 790.500 M 6 1 rr : 0 0 0 sco O ; N 2051 791.500 M 7 1 rr : 0 0 0 sco O ; N 2052 792.500 M 6 1 rr : 0 0 0 sco O ; N 2052 793.500 M 7 1 rr : 0 0 0 sco O ; N 2053 794.500 M 6 1 rr : 0 0 0 sco O ; N 2053 795.500 M 6 1 rr : 0 0 0 sco O ; N 2053 796.500 M 6 1 rr : 0 0 0 sco O ; N 2053 797.500 M 7 1 rr : 0 0 0 sco O ; N 2054 798.500 M 6 1 rr : 0 0 0 sco O ; N 2054 799.500 M 6 1 rr : 0 0 0 sco O ; N 2054 800.500 M 6 1 rr : 0 0 0 sco O ; N 2054 801.500 M 7 1 rr : 0 0 0 sco O ; N 2055 802.500 M 6 1 rr : 0 0 0 sco O ; N 2055 803.500 M 6 1 rr : 0 0 0 sco O ; N 2055 804.500 M 6 1 rr : 0 0 0 sco O ; N 2055 805.500 M 6 1 rr : 0 0 0 sco O ; N 2055 806.500 M 6 1 rr : 0 0 0 sco O ; N 2055 807.500 M 6 1 rr : 0 0 0 sco O ; N 2055 808.500 M 6 1 rr : 0 0 0 sco O ; N 2055 809.500 M 7 1 rr : 0 0 0 sco O ; N 2056 810.500 M 6 1 rr : 0 0 0 sco O ; N 2056 811.500 M 6 1 rr : 0 0 0 sco O ; N 2056 812.500 M 6 1 rr : 0 0 0 sco O ; N 2056 813.500 M 6 1 rr : 0 0 0 sco O ; N 2056 814.500 M 6 1 rr : 0 0 0 sco O ; N 2056 815.500 M 6 1 rr : 0 0 0 sco O ; N 2056 816.500 M 6 1 rr : 0 0 0 sco O ; N 2056 817.500 M 6 1 rr : 0 0 0 sco O ; N 2056 818.500 M 6 1 rr : 0 0 0 sco O ; N 2056 819.500 M 6 1 rr : 0 0 0 sco O ; N 2056 820.500 M 6 1 rr : 0 0 0 sco O ; N 2056 821.500 M 6 1 rr : 0 0 0 sco O ; N 2056 822.500 M 6 1 rr : 0 0 0 sco O ; N 2056 823.500 M 6 1 rr : 0 0 0 sco O ; N 2056 824.500 M 6 1 rr : 0 0 0 sco O ; N 2056 825.500 M 6 1 rr : 0 0 0 sco O ; N 2056 826.500 M 6 1 rr : 0 0 0 sco O ; N 2056 827.500 M 6 1 rr : 0 0 0 sco O ; N 2056 828.500 M 6 1 rr : 0 0 0 sco O ; N 2056 829.500 M 6 1 rr : 0 0 0 sco O ; N 2056 830.500 M 6 1 rr : 0 0 0 sco O ; N 2056 831.500 M 6 1 rr : 0 0 0 sco O ; N 2056 832.500 M 6 1 rr : 0 0 0 sco O ; N 2055 833.500 M 7 1 rr : 0 0 0 sco O ; N 2055 834.500 M 6 1 rr : 0 0 0 sco O ; N 2055 835.500 M 6 1 rr : 0 0 0 sco O ; N 2055 836.500 M 6 1 rr : 0 0 0 sco O ; N 2055 837.500 M 6 1 rr : 0 0 0 sco O ; N 2055 838.500 M 6 1 rr : 0 0 0 sco O ; N 2055 839.500 M 6 1 rr : 0 0 0 sco O ; N 2055 840.500 M 6 1 rr : 0 0 0 sco O ; N 2055 841.500 M 6 1 rr : 0 0 0 sco O ; N 2055 842.500 M 6 1 rr : 0 0 0 sco O ; N 2055 843.500 M 6 1 rr : 0 0 0 sco O ; N 2055 844.500 M 6 1 rr : 0 0 0 sco O ; N 2055 845.500 M 6 1 rr : 0 0 0 sco O ; N 2055 846.500 M 6 1 rr : 0 0 0 sco O ; N 2055 847.500 M 6 1 rr : 0 0 0 sco O ; N 2055 848.500 M 6 1 rr : 0 0 0 sco O ; N 2055 849.500 M 6 1 rr : 0 0 0 sco O ; N 2055 850.500 M 6 1 rr : 0 0 0 sco O ; N 2055 851.500 M 6 1 rr : 0 0 0 sco O ; N 2055 852.500 M 6 1 rr : 0 0 0 sco O ; N 2055 853.500 M 6 1 rr : 0 0 0 sco O ; N 2055 854.500 M 6 1 rr : 0 0 0 sco O ; N 2055 855.500 M 6 1 rr : 0 0 0 sco O ; N 2055 856.500 M 6 1 rr : 0 0 0 sco O ; N 2054 857.500 M 7 1 rr : 0 0 0 sco O ; N 2054 858.500 M 6 1 rr : 0 0 0 sco O ; N 2054 859.500 M 6 1 rr : 0 0 0 sco O ; N 2054 860.500 M 6 1 rr : 0 0 0 sco O ; N 2054 861.500 M 6 1 rr : 0 0 0 sco O ; N 2054 862.500 M 6 1 rr : 0 0 0 sco O ; N 2054 863.500 M 6 1 rr : 0 0 0 sco O ; N 2054 864.500 M 6 1 rr : 0 0 0 sco O ; N 2054 865.500 M 6 1 rr : 0 0 0 sco O ; N 2054 866.500 M 6 1 rr : 0 0 0 sco O ; N 2054 867.500 M 6 1 rr : 0 0 0 sco O ; N 2053 868.500 M 7 1 rr : 0 0 0 sco O ; N 2053 869.500 M 6 1 rr : 0 0 0 sco O ; N 2053 870.500 M 6 1 rr : 0 0 0 sco O ; N 2053 871.500 M 6 1 rr : 0 0 0 sco O ; N 2053 872.500 M 6 1 rr : 0 0 0 sco O ; N 2053 873.500 M 6 1 rr : 0 0 0 sco O ; N 2053 874.500 M 6 1 rr : 0 0 0 sco O ; N 2053 875.500 M 6 1 rr : 0 0 0 sco O ; N 2053 876.500 M 6 1 rr : 0 0 0 sco O ; N 2053 877.500 M 6 1 rr : 0 0 0 sco O ; N 2053 878.500 M 6 1 rr : 0 0 0 sco O ; 1394 762 N M 0 22 - -257 0 - 0 46 - 257 0 - 0 23 - 86 -46 - -86 -45 - C : 0.502 0.502 0.502 sco O ; 1386 753 N M 0 23 - -257 0 - 0 46 - 257 0 - 0 22 - 85 -45 - -85 -46 - C : 0 0.800 0.600 sco O ; LH pagesave restore /Pscript_Win_Driver /ProcSet findresource dup /terminate get exec Pscript_Win_Compat dup /terminate get exec restore gr % % End Imported PIC File: slide7.eps % % Polyline % % Begin Imported EPS File: slide8.eps % n gs 9900 389 tr 15.269291 -15.269767 sc 0 -430 tr -35 -150 tr save /showpage {} def % EPS file follows: /defineresource where{pop}{userdict begin/defineresource{userdict/Resources 2 copy known{get begin}{15 dict dup begin put}ifelse exch readonly exch currentdict 1 index known not{dup 30 dict def}if load 3 -1 roll 2 index put end}bind readonly def/findresource{userdict/Resources get exch get exch get} bind readonly def/resourceforall{pop pop pop pop}bind readonly def /resourcestatus{userdict/Resources 2 copy known{get exch 2 copy known{get exch known{0 -1 true}{pop pop false}ifelse}{pop pop pop false}ifelse}{pop pop false }ifelse}bind readonly def end}ifelse /Pscript_Win_Driver 200 dict dup begin /FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def /VM? {vmstatus exch sub exch pop gt { [ (This job requires more memory than is available in this printer.) 100 500 (Try one or more of the following, and then print again:) 100 485 (In the PostScript dialog box, click Optimize For Portability.) 115 470 (In the Device Options dialog box, make sure the Available Printer Memory is accurate.) 115 455 (Reduce the number of fonts in the document.) 115 440 (Print the document in parts.) 115 425 12 /Times-Roman showpage (%%[ PrinterError: Low Printer VM ]%%) = true FatalErrorIf}if} bind def /|/def load def/,/load load |/~/exch , |/?/ifelse , |/!/pop , |/`/begin , |/^ /index , |/@/dup , |/+/translate , |/$/roll , |/U/userdict , |/M/moveto , |/- /rlineto , |/&/currentdict , |/:/gsave , |/;/grestore , |/F/false , |/T/true , |/N/newpath , |/E/end , |/Ac/arc , |/An/arcn , |/A/ashow , |/D/awidthshow , | /C/closepath , |/V/div , |/O/eofill , |/L/fill , |/I/lineto , |/-C/rcurveto , |/-M/rmoveto , |/+S/scale , |/Ji/setfont , |/Lc/setlinecap , |/Lj/setlinejoin , |/Lw/setlinewidth , |/S/show , |/LH/showpage , |/K/stroke , |/W/widthshow , |/R/rotate , |/b{bind |}bind |/bd{bind |}bind |/xd{~ |}bd/ld{, |}bd/lw/Lw ld /lc/Lc ld/lj/Lj ld/sg/setgray ld/L2? F/languagelevel where{! languagelevel 2 ge{! T}if}if |/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b /DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El ! }b/self & |/reinitialize{[/TextInit/GraphInit/UtilsInit counttomark{@ where{ self eq}{F}?{cvx exec}{!}?}repeat cleartomark}b/initialize{`{/ADO_mxRot ~ | /TextInitialised? F | reinitialize E}{U/Pscript_Win_Data 200 dict @ ` put /ADO_mxRot ~ |/TextInitialised? F | reinitialize}?}b/terminate{!{& self eq{ exit}{E}?}loop E}b/suspend/terminate , |/resume{` Pscript_Win_Data `}b/snap{ transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ itransform}b /dsnap{dtransform round ~ round ~ idtransform}b<04>cvn{}|/setjn{{statusdict /jobname known{statusdict/jobname 3 -1 $ put}if}stopped cleartomark}b/solid{[] 0 setdash}b/setdsh{0 setdash}b/colspRefresh{}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rr{1 ^ 0 - 0 ~ - neg 0 - C}b L2? not g{/rf{N rp L}b/fx{1 1 dtransform @ 0 ge{1 sub 1}{1 add -0.25}? 3 -1 $ @ 0 ge{1 sub 1}{1 add -0.25}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{ 4 -2 $ snap + +S fx rf}b/rs{N rp C K}b/rc{N rp clip N}b/sg{setgray}b/sco{ setrgbcolor}b/sgco{{sg}{sco}?}b}e L2? g{/colspA/DeviceGray |/colspABC/DeviceRGB |/setAorABC{{colspA}{colspABC}? setcolorspace}b/rf/rectfill , |/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5 }? 3 -1 $ @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ snap + +S fx rf}b/rs/rectstroke , |/rc/rectclip , |/sg {@ @ setcolor}b/sco{setcolor}b/colspRefresh{colspABC setcolorspace}b/sgco{{sg }{sco}?}b/UtilsInit{F setglobal}b/definecolorrendering{/ColorRendering defineresource !}b/findcolorrendering{@/ColorRendering resourcestatus{! ! /ColorRendering findresource T}{! F}?}b/selectcolorrendering{@/ColorRendering resourcestatus{! !/ColorRendering}{!/DefaultColorRendering/ColorRendering}? findresource setcolorrendering}b}e /bullets{{/bullet}repeat}b/ANSIEncoding[/grave/acute/circumflex/tilde/macron /breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload ! 3 bullets/quotesinglbase /florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE 4 bullets/quoteleft/quoteright/quotedblleft/quotedblright /bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 2 bullets /Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]| ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy | ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176/ring put /TextInit{TextInitialised? not{/Pscript_Windows_Font & |/TextInitialised? T | /fM[1 0 0 -1 0 0]|/mFM matrix |/iMat[1 0 0.212557 neg 1 0 0]|}if}b/xUP null | /yUP null |/uW null |/xSP null |/ySP null |/sW null |/copyfont{1 ^ length add dict `{1 ^/FID ne{|}{! !}?}forall & E}b/rF{3 copyfont @ `/Encoding ANSIEncoding &/CharStrings known{CharStrings/Eth known not{! ANSIEncodingOld} if}if | E}b/mF{findfont ~{@/Encoding get @ StandardEncoding eq{! T}{{ ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{rF}{3 copyfont}? ` /OrigFontType ~ |/OrigFontName ~ | & E 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/xF{scalefont Pscript_Windows_Font 3 1 $ put}b/xMF{mFM astore makefont Pscript_Windows_Font 3 1 $ put}b/xF2/scalefont , |/xMF2{mFM astore makefont}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/sSU{N/uW ~ |/yUP ~ |/xUP ~ |}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ |/ySP ~ |/xSP ~ |}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b /sRxy{: matrix astore concat 0 0 M}b/eR/; , | /mBF{@ 4 copyfont `/FontName ~ |/OrigFontType ~ |/OrigFontName ~ | 0 FontMatrix idtransform ! &/PaintType known{PaintType 0 eq{/PaintType 2 | /StrokeWidth ~ |}{PaintType 1 eq PaintType 2 eq or PaintType 3 eq or & /StrokeWidth known and{StrokeWidth add/StrokeWidth ~ |}{!}?}?}{!}? @ & E definefont Pscript_Windows_Font 3 1 $ put}b/xBF{Pscript_Windows_Font ` 1 ^ /FontName get 1 ^ scalefont 3 1 $ scalefont 2 copy ~ | ~ ! | E}b/xMBF{mFM astore Pscript_Windows_Font ` 1 ^/FontName get 1 ^ makefont 3 1 $ makefont 2 copy ~ | ~ ! | E}b/xBF2{/sB0 ~ mBF/sB1 sB0 3 -1 $ xBF sB1}b/xMBF2{/sB0 ~ mBF mFM astore/sB1 sB0 3 -1 $ xMBF sB1}b/sB{: Pscript_Windows_Font currentfont get Ji @ S ; S}b/asB{: Pscript_Windows_Font currentfont get Ji 3 copy A ; A}b/wsB{ : Pscript_Windows_Font currentfont get Ji 4 copy W ; W}b/awsB{: Pscript_Windows_Font currentfont get Ji 6 copy D ; D}b/sBT3{: @ S ; 1 1 -M S}b /asBT3{: 3 copy A ; 1 1 -M A}b/wsBT3{: 4 copy W ; 1 1 -M W}b/awsBT3{: 6 copy D ; 1 1 -M D}b/mIF{iMat 4 3 -1 $ put 2 copyfont `/OrigFontType ~ |/OrigFontName ~ | @ & E definefont iMat makefont Pscript_Windows_Font 3 1 $ put}b /SavedCTM null |/CTMsave{/SavedCTM SavedCTM currentmatrix |}b/CTMrestore{ SavedCTM setmatrix}b/mp null |/ADO_mxRot null |/GDIHMatrix null | /GDIHPatternDict 22 dict | GDIHPatternDict `/PatternType 1 |/PaintType 2 | /Reps L2?{1}{5}? |/XStep 8 Reps mul |/YStep XStep |/BBox[0 0 XStep YStep]| /TilingType 1 |/PaintProc{` 1 Lw[]0 setdash PaintData , exec E}b/FGnd null | /BGnd null |/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b /HS_BDiagonal{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? |/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag {Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E /makehatch{GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{ /h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5/HS_DiagCross makehatch}b/GDIBWPatternDict 17 dict @ `/PatternType 1 |/PaintType L2?{1}{2}? |/RepsV L2?{1}{6}? |/RepsH L2?{1}{5}? |/BBox[0 0 RepsH 1]|/TilingType 1 | /XStep 1 |/YStep 1 |/Height 8 RepsV mul |/Width 8 |/mx[Width 0 0 Height neg 0 Height]|/FGnd null |/BGnd null |/SetBGndFGnd L2?{{BGnd null ne{BGnd aload ! sgco BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! sgco}if} }{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E |/GDIBWPatternMx null |/pfprep{save 4 1 $ /PatternOfTheDay 4 1 $ GDIBWPatternDict `/PaintData ~ |/BGnd ~ |/FGnd ~ | E CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict matrix mp CTMrestore ~ !}b /hrf null |/prf{pfprep ~ 6 1 $ 5 hrf restore}b/GraphInit{GDIHMatrix null eq{ /SavedCTM matrix | : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly | ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix currentmatrix readonly | ; ;}if}b/cirp{360 0 An C}b/ellp{CTMsave + +S 0.5 0 M 0 0 0.5 360 0 An C CTMrestore}b/rrp{/rad ~ |/y2 ~ |/x2 ~ |/y1 ~ |/x1 ~ | x2 x1 add 2 V y1 M x1 y1 x1 y2 rad arct x1 y2 x2 y2 rad arct x2 y2 x2 y1 rad arct x2 y1 x1 y1 rad arct C}b/RRp{CTMsave + +S/dyS ~ |/dxS ~ | dxS 2 V 0 M 0 0 0 dyS 0.5 arct 0 dyS dxS dyS 0.5 arct dxS dyS dxS 0 0.5 arct dxS 0 0 0 0.5 arct C CTMrestore}b L2? not g{/arct{arcto ! ! ! !}b/GDIpattfill{@ ` BGnd null ne PaintType 2 eq and{: BGnd aload ! sgco fEOFill{O}{L}? ; FGnd aload ! U/fGray 2 ^ put{2}{4}? -1 $}if E @ patterncalc : 4 ^/PaintType get 2 eq{fGray{6 -1 $ sg}{8 -3 $ sco}? }if fEOFill{eoclip}{clip}? N patternfill ; N}b/hrf{/fGray 1 ^ 6 eq | -4 $ N rp C/fEOFill F | GDIpattfill}b/hfMain{/fEOFill ~ |/fGray ~ | GDIpattfill}b/hf{T hfMain}b/hfW{F hfMain}b/hs{currentpoint strokepath M hfW}b/pfMain{/fEOFill ~ | pfprep GDIpattfill restore N}b/pf{T pfMain}b/pfW{F pfMain}b/ps{currentpoint strokepath M pfW}b/mpstr 1 string |/mp{~ @ length 12 add dict copy ` /PatternCTM matrix currentmatrix |/PatternMatrix ~ |/PatWidth XStep mpstr length mul |/PatHeight YStep |/FontType 3 |/Encoding 256 array | 3 string 0 1 255{Encoding ~ @ 3 ^ cvs cvn put}for !/FontMatrix matrix |/FontBBox BBox | /BuildChar{! @ ` XStep 0 FontBBox aload ! setcachedevice/PaintProc , E : exec ;}b & E ~ @ 3 -1 $ definefont}b/patterncalc{` : PatternCTM setmatrix PatternMatrix concat BBox aload ! ! ! + pathbbox ; PatHeight V ceiling 4 1 $ PatWidth V ceiling 4 1 $ PatHeight V floor 4 1 $ PatWidth V floor 4 1 $ 2 ^ sub cvi abs ~ 3 ^ sub cvi abs ~ 4 2 $ PatHeight mul ~ PatWidth mul ~ E}b /patternfill{5 -1 $ @ ` Ji PatternCTM setmatrix PatternMatrix concat 0 2 ^ 2 ^ M 0 1 mpstr length 1 sub{1 ^ mpstr 3 1 $ put}for ! 2 ^{currentpoint 5 ^{mpstr S}repeat YStep add M}repeat ! ! ! ! E}b}e L2? g{/mp/makepattern , |/hrf{6 eq setAorABC setpattern rectfill}b/hf{ setAorABC setpattern O}b/hfW{setAorABC setpattern L}b/hs{setAorABC setpattern K}b/pf{pfprep setpattern O restore N}b/pfW{pfprep setpattern L restore N}b/ps{ pfprep setpattern K restore N}b}e /iw 0 |/ih 0 |/im_save 0 |/s 0 |/polarity 0 |/smoothflag 0 |/mystring 0 |/bpc 0 |/setup1asciiproc{[currentfile mystring/readhexstring cvx/! cvx]cvx bind}b /setup1binaryproc{[currentfile mystring/readstring cvx/! cvx]cvx bind}b /setup2asciiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}b /setup2binaryproc{currentfile/RunLengthDecode filter}b/mycolorspace{colspABC}| /myimagedict{/myimagedict 10 dict | myimagedict @ `/ImageType 1 | /MultipleDataSource F | E}b/imageprocarray[/setup1binaryproc/setup1asciiproc /setup2binaryproc/setup2asciiproc/setup1binarydecodeproc/setup1asciidecodeproc ]|/L2Polarity{{[1 0]}{[0 1]}?}b/Q{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/X{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/Z{im_save restore}b/Y{sgco myimagedict @ ` /Width iw |/Height ih |/Decode polarity |/ImageMatrix[iw 0 0 ih 0 0]| /DataSource s |/BitsPerComponent 1 |/Interpolate smoothflag | E imagemask}b L2? not g{/setup2asciiproc{[/Level2ImagesError , aload ! T FatalErrorIf}b /setup2binaryproc/setup2asciiproc , |/L2Polarity{}|/Y{sgco iw ih polarity[iw 0 0 ih 0 0]s imagemask}b}e L2? not g{/testsystemdict{where{systemdict eq{T}{F}?}{F}?}b/c 1 |/colorimage where{! T}{F}?{/c 0 statusdict `/processcolors where{! ! processcolors}{ /deviceinfo where{! deviceinfo/Colors known{!{deviceinfo/Colors get}}if}if}? E | c 0 ne{/colorimage testsystemdict/setcolortransfer testsystemdict /currentcolortransfer testsystemdict/currentcmykcolor testsystemdict and and and not{/c 0 |}if}if}if c @ 1 ne ~ @ 3 ne ~ 4 ne and and{/c 0 |}if c 1 eq g{ /expandbw{expandfactor mul round cvi bwclut ~ get 255 V}b/doclutimage{!/bwclut ~ | bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/expandfactor ~ |[/expandbw ,/exec , @ currenttransfer ~]cvx bind settransfer iw ih bpc[iw 0 0 ih 0 0]s image}b}e c @ 3 eq ~ 4 eq or g{/nullproc{{}}|/concatutil{/exec , 7 -1 $/exec ,}b/defsubclut{ 1 add getinterval |}b/spconcattransfer{/Dclut ~ |/Cclut ~ |/Bclut ~ |/Aclut ~ |/ncompute ~ , | currentcolortransfer[{Aclut ncompute}concatutil]cvx[{Bclut ncompute}concatutil]cvx[{Cclut ncompute}concatutil]cvx[{Dclut ncompute} concatutil]cvx setcolortransfer}b/setuprgbcluts{/bit3x rgbclut length 3 sub | /bit1x bit3x 3 idiv |/rclut rgbclut |/gclut rclut 1 bit3x defsubclut/bclut rclut 2 bit3x defsubclut}b}e c 3 eq g{/3compute{~ bit3x mul round cvi get 255 V}b/doclutimage{/rgbclut ~ | ! setuprgbcluts/3compute rclut gclut bclut @ spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @]cvx nullproc nullproc T 3 colorimage}b}e c 4 eq g{/ftoint{1 ~ sub 255 mul round cvi}b/stuffclut{ cmykindex 3 -1 $ put}b/4compute{~ bit4x mul round cvi get 255 V}b /invalidcolortable? T |/computecmykclut{setuprgbcluts/bit4x rgbclut length 3 idiv 4 mul 4 sub |/cmykclut bit4x 4 add string |/cclut cmykclut |/mclut cclut 1 bit4x defsubclut/yclut cclut 2 bit4x defsubclut/kclut cclut 3 bit4x defsubclut/cmykindex 0 | 0 1 bit1x{@/cmykindex ~ bit1x ~ sub 4 mul | 3 mul @ rclut ~ get 255 V ~ @ gclut ~ get 255 V ~ bclut ~ get 255 V setrgbcolor currentcmykcolor ftoint kclut stuffclut ftoint yclut stuffclut ftoint mclut stuffclut ftoint cclut stuffclut}for}b/doclutimage{/rgbclut ~ | ! invalidcolortable?{computecmykclut}if/4compute cclut mclut yclut kclut spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @ @]cvx nullproc nullproc nullproc T 4 colorimage}b}e c 0 eq g{/a{3 mul 3 getinterval putinterval ~ 3 add ~ 3 copy}b/8lookup/a , |/4lookup{/byte 1 ^ | -4 bitshift a byte 15 and a}b/2lookup{/byte 1 ^ | -6 bitshift a byte -4 bitshift 3 and a byte -2 bitshift 3 and a byte 3 and a}b/colorexpand{mystringexp 0 rgbclut 3 copy 7 -1 $/mylookup , forall ! ! ! ! !}b/createexpandstr{/mystringexp ~ mystring length mul string |}b/doclutimage{/rgbclut ~ | !/mylookup bpc 8 eq{3 createexpandstr/8lookup}{bpc 4 eq{6 createexpandstr/4lookup}{12 createexpandstr/2lookup}?}? , | iw ih bpc[iw 0 0 ih 0 0][s/exec ,/colorexpand ,/exec ,]cvx F 3 colorimage}b}e/colorimage where{! T}{F}? g{/do24image{iw ih 8 [iw 0 0 ih 0 0]s F 3 colorimage}b}DefIf_El{/rgbtogray{/str ~ |/len str length |/smlen len 3 idiv |/rstr str |/gstr str 1 len 1 sub getinterval |/bstr str 2 len 2 sub getinterval | str @ 0 1 smlen 1 sub{@ 3 mul rstr 1 ^ get 0.3 mul gstr 2 ^ get 0.59 mul add bstr 3 -1 $ get 0.11 mul add round cvi put @}for ! 0 smlen getinterval}b/do24image{iw ih 8[iw 0 0 ih 0 0][s/exec ,/rgbtogray ,/exec ,]cvx bind image}b}e/doNimage{bpc 24 eq{do24image}{iw ih bpc[iw 0 0 ih 0 0]s image}?}b}e L2? g{/doclutimage{/rgbclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[ /Indexed colspABC hival rgbclut]setcolorspace myimagedict @ `/Width iw | /Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s | /BitsPerComponent bpc |/Interpolate smoothflag | E image}b/doCMYKclutimage{ /CMYKclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[/Indexed/DeviceCMYK hival CMYKclut]setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc | /Interpolate smoothflag | E image}b/doNimage{bpc 24 eq{colspABC}{colspA}? setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode bpc 24 eq{[0 1 0 1 0 1]}{[0 1]}? |/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc 24 eq{8}{bpc}? |/Interpolate smoothflag | E image}b/doCMYKimage{ /DeviceCMYK setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 1 0 1 0 1 0 1]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent 8 | /Interpolate smoothflag | E image}b}e /GreNewFont{10 dict @ 3 1 $ | @ ` 4 1 $/FontType 3 |/FontMatrix ~ |/FontBBox ~ |/Encoding 256 array | 0 1 255{Encoding ~/.notdef put}for/CharProcs 257 dict | CharProcs/.notdef{}put/Metrics 257 dict | Metrics/.notdef 3 -1 $ put/BuildChar {/char ~ |/fontdict ~ |/charname fontdict/Encoding get char get | fontdict /Metrics get charname get aload ! setcachedevice fontdict ` Encoding char get CharProcs ~ get E exec}| E definefont !}|/AddChar{` Encoding 3 1 $ put CharProcs 3 1 $ put Metrics 3 1 $ put E}| /FEbuf 2 string |/FEglyph 3 string |/FE{(G00)FEglyph copy ! 1 ~{@ 16 lt{ /offset 2 store}{/offset 1 store}? @ 16 FEbuf cvrs FEglyph ~ offset ~ putinterval 1 ^ ~ FEglyph cvn put}for}bind |/Type1Hdr{11 dict `/FontName ~ | /PaintType ~ |/FontType 1 |/FontMatrix[1 3 ^ V 0 0 1 6 ^ V 0 0]| !/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for 3 ^ 3 ^ FE | ! !/FontBBox{0 0 0 0}| & E currentfile eexec}bind | /pp 1 string |/ss 1 string |/rledecodebinary{/DC 0 |/BC 0 |{DC mystring length ge{exit}if currentfile ss readstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{ mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/rledecodeascii{/DC 0 | /BC 0 |{DC mystring length ge{exit}if currentfile ss readhexstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readhexstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readhexstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/setup1asciidecodeproc{[/rledecodeascii cvx]cvx bind}b /setup1binarydecodeproc{[/rledecodebinary cvx]cvx bind}b userdict/Pscript_Win_Compat 13 dict dup begin/bd{bind def}bind def/ld{load def }bd/CB{pop pop pop pop}bind def/B{pop pop pop pop}bind def/$x matrix def/SS{ /pagesave save def}bind def/RS{/pagesave where{pop pagesave restore}{$x matrix invertmatrix concat}ifelse}bind def/ANSIVec[0/grave 1/acute 2/circumflex 3 /tilde 4/macron 5/breve 6/dotaccent 7/dieresis 8/ring 9/cedilla 10 /hungarumlaut 11/ogonek 12/caron 13/dotlessi 39/quotesingle 96/grave 124/bar 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135 /daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150 /endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156 /oe 159/Ydieresis 160/space 161/exclamdown 164/currency 165/yen 166/brokenbar 167/section 168/dieresis 169/copyright 170/ordfeminine 171/guillemotleft 172 /logicalnot 173/hyphen 174/registered 175/macron 176/degree 177/plusminus 178 /twosuperior 179/threesuperior 180/acute 181/mu 182/paragraph 183 /periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 187 /guillemotright 188/onequarter 189/onehalf 190/threequarters 191/questiondown 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198 /AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204 /Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223 /germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229 /aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242 /ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248 /oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254 /thorn 255/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{ pop pop}ifelse}forall/initialize{currentdict exch begin begin}bind def /terminate{/@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def/resume/initialize load def/M/moveto load def end put/Courier findfont 10 scalefont setfont end /ProcSet defineresource pop Pscript_Win_Compat dup /initialize get exec [ 0 1.000 -1.000 0 0 0 ] false /Pscript_Win_Driver /ProcSet findresource dup /initialize get exec /mysetup [ 0.240 0 0 -0.240 8.880 592.800 ] | userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; 114 70 N M 1 1 rr 114 70 N M 3000 2250 rr : 1.000 1.000 1.000 sco O ; 114 70 N M 1 1 rr 114 70 N M 1 1 rr : 114 70 3000 2250 rc 114 70 N M 2726 1801 rr : 0.800 1.000 0.800 sco O ; 3 Lw 0 Lc 0 Lj solid 0.800 1.000 0.800 sco K ; 1901 491 N M -7 1 - -7 0 - -18 0 - -19 1 - -21 1 - -20 2 - -18 4 - -9 3 - -7 4 - -6 5 - -5 5 - -4 6 - -3 8 - -2 9 - -2 9 - -2 22 - 0 23 - 2 23 - 2 23 - 4 20 - 3 9 - 2 8 - 6 14 - 8 14 - 10 11 - 10 11 - 12 10 - 12 8 - 12 7 - 12 5 - 13 5 - 14 3 - 15 2 - 15 1 - 14 -1 - 15 -2 - 13 -3 - 11 -5 - 9 -7 - 8 -9 - 7 -11 - 6 -13 - 6 -12 - 6 -11 - 6 -10 - 6 -7 - 7 -4 - 5 -1 - 5 -1 - 6 1 - 6 2 - 7 1 - 8 1 - 11 1 - 13 0 - 16 -1 - 18 -1 - 18 -1 - 19 -1 - 19 0 - 18 1 - 16 3 - 8 2 - 7 3 - 16 9 - 14 11 - 15 10 - 13 10 - 13 7 - 6 3 - 6 1 - 6 0 - 5 -2 - 5 -3 - 5 -5 - 5 -6 - 5 -8 - 9 -17 - 9 -20 - 7 -20 - 5 -21 - 4 -18 - 1 -9 - 0 -7 - -1 -12 - -3 -11 - -5 -11 - -6 -9 - -9 -9 - -9 -9 - -10 -9 - -12 -10 - -13 -11 - -14 -11 - -16 -12 - -17 -12 - -18 -12 - -19 -9 - -20 -8 - -20 -5 - -11 -1 - -11 -1 - -26 1 - -27 3 - -27 5 - -27 5 - -25 6 - -11 2 - -10 3 - -8 2 - -8 2 - -6 2 - -5 2 - -4 1 - -3 2 - -3 4 - -1 4 - 0 4 - 0 3 - -2 3 - -3 2 - -5 1 - -5 0 - -11 -1 - -6 -1 - -8 -1 - -9 1 - -11 1 - C : 0.502 0.502 0.502 sco O ; 1893 482 N M -7 1 - -7 0 - -18 1 - -19 1 - -21 1 - -20 2 - -18 4 - -9 3 - -7 4 - -6 5 - -5 5 - -4 6 - -3 8 - -3 9 - -2 9 - -2 22 - 0 23 - 2 23 - 3 23 - 4 20 - 2 9 - 3 8 - 6 14 - 8 14 - 10 11 - 10 11 - 12 10 - 12 8 - 12 7 - 12 5 - 13 4 - 14 3 - 14 2 - 15 1 - 15 -1 - 14 -2 - 13 -3 - 11 -4 - 10 -7 - 8 -9 - 7 -12 - 6 -12 - 6 -12 - 6 -12 - 6 -9 - 6 -7 - 6 -4 - 6 -1 - 5 -1 - 5 1 - 6 2 - 7 1 - 9 1 - 11 1 - 13 0 - 16 -1 - 17 -1 - 19 -1 - 18 -1 - 19 0 - 18 1 - 16 3 - 8 2 - 7 3 - 16 9 - 14 10 - 15 11 - 14 10 - 13 7 - 6 2 - 6 1 - 6 0 - 5 -2 - 5 -3 - 5 -5 - 5 -6 - 5 -7 - 9 -18 - 8 -19 - 7 -21 - 5 -20 - 4 -19 - 1 -8 - 0 -7 - -1 -13 - -3 -11 - -5 -10 - -6 -9 - -8 -9 - -9 -9 - -11 -9 - -11 -10 - -13 -11 - -14 -12 - -16 -12 - -17 -12 - -18 -11 - -19 -9 - -20 -8 - -20 -5 - -11 -1 - -11 -1 - -26 1 - -27 3 - -28 5 - -26 5 - -25 6 - -11 2 - -10 3 - -8 2 - -8 2 - -6 2 - -5 1 - -4 2 - -3 2 - -3 4 - -2 4 - 0 3 - 0 3 - -1 3 - -4 2 - -5 1 - -4 1 - -11 -2 - -6 0 - -8 -1 - -9 0 - -11 1 - C : 0.200 0.200 0.800 sco O ; 2010 855 N M 62 -99 - 12 Lw 0 Lc 1 Lj solid 0 0.800 0.600 sco K 2095 773 N M 5 -63 - -53 33 - 48 30 - C : 0 0.800 0.600 sco O ; 1805 921 N M -11 1 - -14 1 - -15 0 - -16 1 - -16 2 - -14 4 - -12 5 - -4 4 - -4 4 - -3 5 - -3 6 - -3 15 - -2 17 - 0 18 - 1 19 - 3 18 - 3 16 - 4 14 - 5 12 - 6 10 - 7 9 - 8 9 - 18 14 - 19 10 - 10 4 - 11 2 - 11 2 - 12 0 - 12 0 - 10 -2 - 10 -2 - 9 -4 - 7 -5 - 6 -8 - 6 -9 - 5 -10 - 4 -10 - 5 -9 - 4 -8 - 5 -5 - 5 -3 - 4 -2 - 4 0 - 4 1 - 5 1 - 6 1 - 7 2 - 8 0 - 10 0 - 12 -1 - 14 -1 - 14 -1 - 29 0 - 14 1 - 13 2 - 12 4 - 11 7 - 12 8 - 11 9 - 10 7 - 10 6 - 5 2 - 5 1 - 4 -1 - 4 -1 - 4 -2 - 4 -4 - 4 -5 - 4 -6 - 7 -14 - 6 -15 - 6 -17 - 4 -16 - 3 -15 - 1 -12 - -1 -10 - -2 -9 - -4 -8 - -5 -8 - -6 -7 - -8 -7 - -17 -15 - -10 -9 - -11 -9 - -12 -10 - -13 -10 - -14 -8 - -15 -8 - -15 -6 - -16 -4 - -17 -1 - -20 0 - -21 3 - -21 3 - -21 4 - -19 5 - -16 4 - -7 2 - -6 1 - -5 1 - -3 2 - -6 3 - -2 3 - -1 3 - 0 5 - -1 3 - -3 1 - -4 1 - -4 0 - -8 -1 - -5 0 - -6 -1 - -7 0 - -8 1 - C : 0.502 0.502 0.502 sco O ; 1796 913 N M -11 1 - -13 0 - -15 1 - -16 1 - -16 1 - -14 4 - -12 5 - -5 4 - -4 4 - -3 5 - -2 6 - -4 15 - -1 17 - 0 18 - 1 19 - 2 18 - 3 16 - 4 14 - 5 12 - 6 10 - 8 10 - 8 8 - 9 8 - 9 7 - 10 5 - 9 5 - 10 3 - 11 3 - 23 2 - 22 -2 - 10 -3 - 9 -3 - 7 -5 - 6 -8 - 6 -9 - 5 -10 - 4 -10 - 5 -10 - 4 -7 - 5 -6 - 5 -3 - 4 -1 - 4 0 - 4 0 - 5 1 - 5 2 - 7 1 - 8 0 - 10 0 - 13 -1 - 13 -1 - 14 -1 - 29 0 - 14 1 - 13 2 - 12 5 - 12 7 - 11 8 - 12 9 - 10 7 - 10 6 - 5 2 - 5 1 - 4 -1 - 4 -1 - 4 -3 - 4 -4 - 4 -4 - 3 -6 - 8 -14 - 6 -16 - 5 -16 - 4 -17 - 3 -14 - 1 -13 - -1 -10 - -2 -9 - -4 -8 - -5 -7 - -6 -7 - -7 -8 - -17 -15 - -10 -8 - -11 -10 - -12 -10 - -14 -9 - -14 -9 - -14 -8 - -15 -6 - -16 -4 - -17 -1 - -20 1 - -21 2 - -21 4 - -21 4 - -19 5 - -16 4 - -7 2 - -6 1 - -5 1 - -3 2 - -6 3 - -2 3 - -1 3 - 0 5 - -1 2 - -3 2 - -4 1 - -4 0 - -8 -1 - -5 -1 - -6 0 - -7 0 - -9 1 - C : 0.200 0.200 0.800 sco O ; 1826 1255 N M 67 -96 - 0 0.800 0.600 sco K 1915 1178 N M 8 -63 - -55 30 - 47 33 - C : 0 0.800 0.600 sco O ; 1663 1307 N M -7 1 - -10 0 - -10 1 - -10 0 - -11 2 - -9 2 - -8 4 - -6 5 - -3 7 - -3 10 - -1 11 - 0 13 - 1 12 - 2 12 - 2 11 - 2 9 - 3 8 - 4 7 - 11 12 - 12 9 - 13 7 - 14 4 - 15 1 - 15 -1 - 6 -2 - 6 -2 - 5 -4 - 4 -5 - 4 -6 - 3 -6 - 3 -7 - 3 -6 - 3 -5 - 3 -4 - 3 -2 - 3 -1 - 6 0 - 6 2 - 5 1 - 5 0 - 7 0 - 8 -1 - 19 -1 - 19 0 - 10 1 - 8 1 - 8 3 - 8 5 - 15 11 - 7 5 - 6 4 - 6 2 - 6 -1 - 5 -5 - 5 -7 - 5 -9 - 5 -11 - 4 -11 - 2 -11 - 2 -10 - 1 -8 - -1 -7 - -1 -6 - -6 -10 - -9 -9 - -12 -10 - -14 -12 - -16 -13 - -10 -6 - -9 -5 - -11 -4 - -10 -3 - -11 -1 - -14 0 - -14 2 - -14 2 - -14 3 - -12 3 - -11 3 - -9 2 - -6 2 - -3 2 - -2 2 - 0 2 - 0 4 - -1 1 - -2 1 - -5 1 - -6 -1 - -7 0 - -4 0 - -6 0 - C : 0.502 0.502 0.502 sco O ; 1655 1299 N M -7 1 - -10 0 - -10 0 - -10 1 - -11 1 - -9 2 - -8 4 - -6 5 - -4 8 - -2 10 - -1 11 - 0 12 - 1 13 - 1 12 - 3 11 - 2 9 - 3 8 - 4 6 - 11 12 - 12 10 - 12 7 - 14 4 - 16 1 - 15 -1 - 6 -2 - 6 -2 - 5 -4 - 4 -5 - 7 -13 - 3 -6 - 3 -6 - 3 -5 - 3 -4 - 3 -2 - 3 -1 - 5 0 - 7 2 - 5 1 - 5 0 - 7 0 - 8 -1 - 19 -1 - 19 0 - 18 2 - 8 3 - 8 5 - 15 11 - 7 5 - 6 3 - 6 2 - 6 -1 - 5 -4 - 5 -7 - 5 -9 - 4 -11 - 7 -22 - 1 -10 - 1 -8 - -1 -7 - -1 -6 - -6 -10 - -9 -10 - -11 -10 - -14 -12 - -16 -13 - -10 -6 - -9 -5 - -11 -4 - -10 -2 - -12 -1 - -13 0 - -14 2 - -14 2 - -14 3 - -13 3 - -10 3 - -9 2 - -6 2 - -3 2 - -2 2 - 0 2 - 0 4 - -1 1 - -2 1 - -5 1 - -6 -1 - -7 -1 - -4 1 - -6 0 - C : 0.200 0.200 0.800 sco O ; 1611 1566 N M 85 -81 - 0 0.800 0.600 sco K 1714 1508 N M 21 -59 - -60 18 - 39 41 - C : 0 0.800 0.600 sco O ; 1410 1556 N M -4 1 - -6 0 - -13 1 - -12 2 - -5 2 - -4 3 - -2 5 - -1 6 - -1 15 - 1 15 - 2 7 - 1 6 - 5 9 - 6 7 - 8 6 - 8 4 - 8 3 - 10 1 - 9 -1 - 8 -3 - 3 -2 - 3 -3 - 4 -8 - 4 -8 - 2 -3 - 2 -2 - 3 -2 - 4 0 - 4 1 - 6 1 - 10 0 - 11 -1 - 12 0 - 11 1 - 5 2 - 5 3 - 10 7 - 4 3 - 5 2 - 3 1 - 4 -1 - 3 -3 - 3 -4 - 3 -5 - 3 -7 - 4 -14 - 1 -6 - 0 -5 - -1 -8 - -4 -7 - -5 -6 - -7 -6 - -9 -7 - -11 -8 - -11 -7 - -7 -2 - -6 -2 - -7 -1 - -9 1 - -17 2 - -9 2 - -8 2 - -7 1 - -5 1 - -4 1 - -2 2 - -1 1 - 0 1 - -1 3 - -1 1 - -3 1 - -3 -1 - -5 0 - -7 0 - C : 0.502 0.502 0.502 sco O ; 1402 1548 N M -4 1 - -6 0 - -13 1 - -7 0 - -6 2 - -4 2 - -4 3 - -2 5 - -2 6 - -1 7 - 0 7 - 2 16 - 1 6 - 2 6 - 4 9 - 7 8 - 7 6 - 8 4 - 9 2 - 10 1 - 9 -1 - 8 -2 - 3 -2 - 2 -4 - 4 -7 - 4 -8 - 2 -4 - 2 -2 - 4 -2 - 4 1 - 4 0 - 6 1 - 4 0 - 5 0 - 12 -1 - 12 0 - 11 1 - 5 2 - 5 3 - 9 7 - 5 3 - 4 2 - 4 2 - 3 -1 - 3 -3 - 4 -4 - 3 -6 - 2 -6 - 4 -14 - 2 -6 - 0 -5 - -1 -8 - -4 -7 - -6 -6 - -7 -6 - -9 -8 - -10 -8 - -12 -7 - -6 -2 - -7 -2 - -7 -1 - -8 1 - -18 2 - -9 2 - -8 2 - -7 2 - -5 1 - -3 1 - -2 2 - -1 1 - -1 1 - 0 3 - -1 1 - -3 1 - -4 -1 - -5 0 - -6 0 - C : 0.200 0.200 0.800 sco O ; 1190 1427 N M 83 83 - 0 0.800 0.600 sco K 1250 1528 N M 60 20 - -19 -60 - -41 40 - C : 0 0.800 0.600 sco O ; 693 492 N M -7 1 - -7 0 - -18 1 - -19 1 - -21 1 - -20 2 - -18 4 - -8 3 - -7 4 - -6 5 - -5 5 - -4 7 - -3 8 - -3 9 - -2 9 - -2 22 - 0 24 - 2 24 - 3 23 - 4 21 - 2 9 - 3 8 - 6 15 - 8 13 - 9 13 - 11 11 - 11 9 - 13 9 - 12 6 - 12 6 - 13 5 - 13 3 - 15 2 - 15 1 - 15 -1 - 14 -2 - 13 -3 - 11 -5 - 9 -7 - 8 -9 - 7 -12 - 7 -13 - 5 -12 - 6 -12 - 6 -10 - 7 -7 - 6 -4 - 6 -1 - 5 -1 - 5 1 - 6 2 - 7 1 - 8 1 - 11 1 - 13 0 - 16 -1 - 18 -1 - 18 -1 - 19 -1 - 19 0 - 18 1 - 16 3 - 8 2 - 7 4 - 16 8 - 14 11 - 15 11 - 13 10 - 7 4 - 6 4 - 6 2 - 6 1 - 6 0 - 5 -2 - 5 -3 - 5 -5 - 5 -7 - 5 -7 - 9 -18 - 9 -20 - 7 -21 - 5 -21 - 4 -19 - 1 -8 - 0 -8 - -1 -13 - -3 -11 - -5 -10 - -6 -10 - -9 -9 - -9 -9 - -10 -10 - -12 -10 - -13 -11 - -14 -12 - -16 -12 - -17 -12 - -18 -12 - -19 -10 - -20 -8 - -20 -5 - -11 -1 - -11 -1 - -25 1 - -27 4 - -28 4 - -27 6 - -24 6 - -11 2 - -10 3 - -9 2 - -8 2 - -6 2 - -5 2 - -4 2 - -2 1 - -4 4 - -1 4 - 0 4 - 0 3 - -1 3 - -4 2 - -5 1 - -5 1 - -11 -2 - -6 0 - -8 -1 - -9 0 - -11 1 - C : 0.502 0.502 0.502 sco O ; 685 484 N M -7 1 - -7 0 - -18 0 - -19 1 - -21 1 - -20 2 - -18 5 - -9 3 - -7 4 - -6 4 - -5 6 - -4 7 - -3 8 - -3 9 - -1 9 - -3 22 - 1 24 - 1 24 - 3 23 - 4 21 - 3 9 - 2 8 - 6 15 - 8 13 - 10 12 - 10 11 - 12 10 - 12 8 - 12 7 - 12 6 - 13 5 - 14 3 - 15 2 - 15 1 - 14 -1 - 15 -2 - 13 -3 - 11 -5 - 9 -7 - 8 -10 - 7 -11 - 6 -13 - 6 -13 - 6 -11 - 6 -10 - 6 -7 - 6 -4 - 6 -2 - 5 0 - 5 1 - 6 1 - 7 2 - 9 1 - 11 1 - 13 0 - 16 -1 - 17 -1 - 19 -1 - 18 -1 - 19 0 - 18 1 - 16 3 - 8 2 - 7 4 - 16 8 - 14 11 - 15 11 - 14 10 - 13 7 - 6 3 - 6 1 - 6 0 - 5 -2 - 5 -3 - 5 -5 - 5 -7 - 5 -7 - 9 -18 - 8 -20 - 7 -21 - 5 -21 - 4 -19 - 1 -9 - 0 -7 - -1 -13 - -3 -11 - -5 -11 - -6 -9 - -8 -10 - -9 -9 - -10 -9 - -12 -10 - -13 -11 - -14 -12 - -16 -12 - -17 -13 - -18 -11 - -19 -10 - -20 -8 - -20 -5 - -11 -1 - -11 -1 - -26 1 - -27 3 - -28 5 - -26 5 - -25 6 - -11 2 - -10 3 - -8 2 - -8 2 - -6 2 - -5 2 - -4 2 - -3 2 - -3 4 - -1 4 - 0 4 - 0 3 - -2 3 - -3 2 - -5 1 - -5 0 - -11 -1 - -6 -1 - -8 -1 - -9 1 - -11 1 - C : 0.200 0.200 0.800 sco O ; 873 919 N M -10 1 - -13 0 - -15 0 - -15 1 - -15 2 - -13 3 - -12 5 - -4 4 - -4 4 - -3 5 - -2 6 - -4 14 - -1 16 - 0 17 - 1 18 - 2 17 - 3 16 - 4 13 - 5 11 - 5 10 - 7 9 - 8 8 - 18 13 - 18 9 - 10 3 - 10 3 - 22 2 - 21 -2 - 10 -3 - 8 -3 - 7 -5 - 6 -7 - 5 -9 - 5 -9 - 4 -9 - 5 -9 - 4 -7 - 5 -5 - 4 -3 - 4 -2 - 4 0 - 4 1 - 4 1 - 5 1 - 7 2 - 8 0 - 10 0 - 12 -1 - 13 -1 - 13 -1 - 28 0 - 13 1 - 12 2 - 12 4 - 11 6 - 11 8 - 11 8 - 10 7 - 10 6 - 9 2 - 4 0 - 4 -1 - 4 -2 - 3 -4 - 8 -10 - 6 -13 - 7 -15 - 5 -16 - 4 -15 - 2 -14 - 1 -12 - -1 -10 - -2 -8 - -4 -8 - -4 -7 - -6 -7 - -7 -7 - -16 -14 - -10 -8 - -10 -9 - -12 -9 - -13 -9 - -13 -9 - -14 -7 - -15 -6 - -15 -4 - -16 -1 - -19 1 - -20 2 - -21 4 - -20 4 - -18 4 - -16 4 - -6 2 - -6 1 - -5 1 - -3 1 - -5 3 - -3 3 - 0 3 - 0 5 - -1 2 - -3 2 - -7 1 - -8 -1 - -5 -1 - -6 0 - -7 0 - -8 1 - C : 0.502 0.502 0.502 sco O ; 865 910 N M -11 1 - -12 1 - -15 0 - -15 1 - -15 2 - -13 3 - -12 5 - -4 4 - -4 4 - -3 5 - -2 6 - -4 13 - -1 17 - 0 17 - 1 18 - 2 17 - 3 15 - 4 13 - 5 11 - 5 10 - 7 9 - 8 8 - 18 14 - 18 9 - 9 3 - 10 3 - 22 2 - 22 -2 - 9 -3 - 9 -3 - 7 -5 - 6 -7 - 5 -9 - 5 -9 - 4 -10 - 4 -9 - 4 -7 - 5 -5 - 5 -3 - 4 -1 - 4 0 - 4 0 - 4 1 - 5 2 - 7 1 - 8 0 - 10 0 - 11 -1 - 13 -1 - 14 -1 - 28 0 - 13 1 - 12 2 - 12 4 - 11 7 - 11 8 - 11 8 - 10 7 - 9 6 - 9 2 - 4 0 - 4 -1 - 4 -2 - 4 -4 - 4 -5 - 3 -5 - 7 -14 - 6 -15 - 6 -15 - 4 -16 - 2 -14 - 1 -12 - -1 -9 - -2 -9 - -4 -8 - -4 -7 - -6 -6 - -7 -7 - -17 -14 - -9 -8 - -11 -9 - -11 -10 - -13 -9 - -13 -8 - -15 -7 - -14 -6 - -15 -4 - -17 -1 - -19 0 - -20 2 - -20 4 - -20 4 - -18 4 - -16 4 - -6 2 - -6 1 - -5 1 - -3 2 - -5 3 - -3 3 - 0 3 - 0 5 - -1 2 - -3 1 - -4 1 - -3 0 - -8 -1 - -5 0 - -6 -1 - -7 0 - -8 1 - C : 0.200 0.200 0.800 sco O ; 828 722 N M 72 115 - 0 0.800 0.600 sco K 874 851 N M 54 32 - -6 -62 - -48 30 - C : 0 0.800 0.600 sco O ; 1099 1307 N M -7 1 - -9 0 - -10 0 - -10 1 - -11 1 - -9 2 - -8 4 - -6 5 - -4 8 - -2 9 - -1 12 - 0 12 - 1 12 - 1 12 - 3 11 - 2 9 - 3 8 - 4 6 - 11 12 - 12 9 - 12 7 - 14 4 - 15 1 - 15 -1 - 13 -4 - 5 -3 - 4 -5 - 7 -13 - 5 -12 - 4 -5 - 3 -4 - 3 -2 - 3 -1 - 5 0 - 7 2 - 4 1 - 6 0 - 7 0 - 8 -1 - 18 -1 - 19 0 - 10 1 - 8 1 - 8 3 - 8 4 - 8 5 - 8 6 - 7 5 - 6 4 - 6 2 - 6 -1 - 5 -4 - 5 -7 - 5 -9 - 4 -11 - 7 -22 - 1 -10 - 1 -8 - -1 -6 - -1 -6 - -6 -10 - -9 -10 - -11 -10 - -14 -12 - -17 -12 - -9 -6 - -10 -5 - -10 -4 - -11 -3 - -11 -1 - -14 0 - -14 2 - -14 2 - -13 3 - -13 3 - -11 3 - -8 2 - -6 2 - -3 2 - -2 2 - 0 2 - 0 4 - -1 1 - -2 1 - -5 1 - -6 -1 - -7 -1 - -5 1 - -6 0 - C : 0.502 0.502 0.502 sco O ; 1091 1299 N M -7 1 - -9 0 - -10 0 - -11 0 - -10 2 - -10 2 - -7 4 - -6 5 - -4 7 - -2 10 - -1 11 - 0 12 - 0 12 - 2 12 - 2 11 - 3 9 - 3 8 - 4 6 - 10 12 - 12 10 - 13 7 - 14 4 - 15 1 - 15 -1 - 6 -2 - 6 -2 - 5 -4 - 4 -5 - 7 -13 - 3 -6 - 3 -6 - 3 -5 - 3 -4 - 3 -2 - 3 -1 - 6 0 - 7 2 - 4 1 - 6 0 - 7 0 - 8 -1 - 18 0 - 19 -1 - 10 1 - 8 1 - 8 3 - 8 5 - 15 11 - 7 5 - 6 3 - 6 2 - 6 -1 - 6 -4 - 5 -7 - 5 -9 - 4 -10 - 4 -11 - 3 -11 - 1 -10 - 1 -8 - -1 -7 - -1 -6 - -6 -10 - -9 -9 - -12 -10 - -14 -12 - -16 -13 - -10 -6 - -9 -5 - -11 -4 - -10 -2 - -11 -1 - -14 0 - -14 2 - -14 2 - -14 3 - -12 3 - -11 3 - -9 2 - -5 2 - -4 1 - -1 2 - -1 2 - 0 4 - -1 2 - -2 1 - -5 0 - -6 0 - -7 -1 - -4 0 - -6 1 - C : 0.200 0.200 0.800 sco O ; 988 1085 N M 73 116 - 0 0.800 0.600 sco K 1034 1214 N M 55 32 - -7 -62 - -48 30 - C : 0 0.800 0.600 sco O ; : 114 70 3000 2250 rc 0 0.400 0 sco %%IncludeFont: Helvetica-Bold (F0) cvn 0.964 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F0_83) cvn F0 83 xF F0_83 Ji -302.300 545 825 sR 0.074 0 (C)A 0.287 0 (o)A 0.852 0 (a)A -0.287 0 (r)A -0.148 0 (s)A 0.852 0 (e)A 0.287 0 (n)A -0.074 0 (i)A -0.361 0 32 0.287 0 (ng )D -0.361 0 (P)A 1.287 0 (h)A -0.148 0 (as)A 0.852 0 (e)A eR ; 948 1648 N M 1227 151 rr : 114 70 3000 2250 rc 0 0.400 0 sco (F0_100) cvn F0 100 xF F0_100 Ji 979 1664 M 0.200 0 (I)A -0.100 0 (n)A -0.800 0 (i)A -0.300 0 (t)A 0.200 0 (i)A 0.400 0 (a)A 1.000 0 32 -0.800 0 (l )D 0.300 0 (P)A -0.600 0 (a)A 0.100 0 (r)A 0.700 0 (t)A -0.800 0 (i)A 0.700 0 (t)A -0.800 0 (i)A -0.100 0 (on)A 0.200 0 (i)A -0.700 0 32 -0.100 0 (ng )D 0.300 0 (P)A -0.100 0 (h)A 0.400 0 (a)A -0.600 0 (s)A 0.400 0 (e)A ; : 114 70 3000 2250 rc 0 0.400 0 sco F0_100 Ji -60.400 2049 1326 sR -0.200 0 (R)A 0.400 0 (e)A -0.300 0 (f)A 0.200 0 (i)A -0.100 0 (n)A 0.400 0 (e)A 0.100 0 (m)A -0.600 0 (e)A -0.100 0 (n)A -1.500 0 32 0.700 0 (t )D 0.300 0 (P)A -0.100 0 (h)A 0.400 0 (a)A -0.600 0 (s)A 0.400 0 (e)A eR ; N 1425 1541.500 M 3 1 rr : 1.000 0 0 sco O ; N 1423 1542.500 M 6 1 rr : 1.000 0 0 sco O ; N 1422 1543.500 M 8 1 rr : 1.000 0 0 sco O ; N 1423 1544.500 M 8 1 rr : 1.000 0 0 sco O ; N 1424 1545.500 M 8 1 rr : 1.000 0 0 sco O ; N 1425 1546.500 M 8 1 rr : 1.000 0 0 sco O ; N 1426 1547.500 M 8 1 rr : 1.000 0 0 sco O ; N 1427 1548.500 M 9 1 rr : 1.000 0 0 sco O ; N 1428 1549.500 M 9 1 rr : 1.000 0 0 sco O ; N 1429 1550.500 M 9 1 rr : 1.000 0 0 sco O ; N 1430 1551.500 M 9 1 rr : 1.000 0 0 sco O ; N 1431 1552.500 M 9 1 rr : 1.000 0 0 sco O ; N 1433 1553.500 M 8 1 rr : 1.000 0 0 sco O ; N 1434 1554.500 M 8 1 rr : 1.000 0 0 sco O ; N 1435 1555.500 M 9 1 rr : 1.000 0 0 sco O ; N 1436 1556.500 M 9 1 rr : 1.000 0 0 sco O ; N 1437 1557.500 M 9 1 rr : 1.000 0 0 sco O ; N 1438 1558.500 M 9 1 rr : 1.000 0 0 sco O ; N 1439 1559.500 M 9 1 rr : 1.000 0 0 sco O ; N 1441 1560.500 M 8 1 rr : 1.000 0 0 sco O ; N 1442 1561.500 M 8 1 rr : 1.000 0 0 sco O ; N 1443 1562.500 M 8 1 rr : 1.000 0 0 sco O ; N 1444 1563.500 M 8 1 rr : 1.000 0 0 sco O ; N 1445 1564.500 M 8 1 rr : 1.000 0 0 sco O ; N 1446 1565.500 M 8 1 rr : 1.000 0 0 sco O ; N 1447 1566.500 M 7 1 rr : 1.000 0 0 sco O ; N 1448 1567.500 M 7 1 rr : 1.000 0 0 sco O ; N 1449 1568.500 M 6 1 rr : 1.000 0 0 sco O ; N 1449 1569.500 M 7 1 rr : 1.000 0 0 sco O ; N 1450 1570.500 M 6 1 rr : 1.000 0 0 sco O ; N 1450 1571.500 M 6 1 rr : 1.000 0 0 sco O ; N 1450 1572.500 M 6 1 rr : 1.000 0 0 sco O ; N 1450 1573.500 M 6 1 rr : 1.000 0 0 sco O ; N 1450 1574.500 M 6 1 rr : 1.000 0 0 sco O ; N 1450 1575.500 M 6 1 rr : 1.000 0 0 sco O ; N 1449 1576.500 M 7 1 rr : 1.000 0 0 sco O ; N 1449 1577.500 M 6 1 rr : 1.000 0 0 sco O ; N 1449 1578.500 M 6 1 rr : 1.000 0 0 sco O ; N 1449 1579.500 M 6 1 rr : 1.000 0 0 sco O ; N 1449 1580.500 M 6 1 rr : 1.000 0 0 sco O ; N 1448 1581.500 M 7 1 rr : 1.000 0 0 sco O ; N 1448 1582.500 M 6 1 rr : 1.000 0 0 sco O ; N 1448 1583.500 M 6 1 rr : 1.000 0 0 sco O ; N 1448 1584.500 M 6 1 rr : 1.000 0 0 sco O ; N 1448 1585.500 M 6 1 rr : 1.000 0 0 sco O ; N 1448 1586.500 M 7 1 rr : 1.000 0 0 sco O ; N 1449 1587.500 M 6 1 rr : 1.000 0 0 sco O ; N 1450 1588.500 M 6 1 rr : 1.000 0 0 sco O ; N 1449 1589.500 M 7 1 rr : 1.000 0 0 sco O ; N 1450 1590.500 M 7 1 rr : 1.000 0 0 sco O ; N 1451 1591.500 M 7 1 rr : 1.000 0 0 sco O ; N 1451 1592.500 M 7 1 rr : 1.000 0 0 sco O ; N 1452 1593.500 M 7 1 rr : 1.000 0 0 sco O ; N 1453 1594.500 M 7 1 rr : 1.000 0 0 sco O ; N 1453 1595.500 M 8 1 rr : 1.000 0 0 sco O ; N 1454 1596.500 M 8 1 rr : 1.000 0 0 sco O ; N 1455 1597.500 M 8 1 rr : 1.000 0 0 sco O ; N 1456 1598.500 M 8 1 rr : 1.000 0 0 sco O ; N 1457 1599.500 M 8 1 rr : 1.000 0 0 sco O ; N 1458 1600.500 M 9 1 rr : 1.000 0 0 sco O ; N 1459 1601.500 M 9 1 rr : 1.000 0 0 sco O ; N 1460 1602.500 M 9 1 rr : 1.000 0 0 sco O ; N 1461 1603.500 M 9 1 rr : 1.000 0 0 sco O ; N 1462 1604.500 M 10 1 rr : 1.000 0 0 sco O ; N 1464 1605.500 M 9 1 rr : 1.000 0 0 sco O ; N 1465 1606.500 M 9 1 rr : 1.000 0 0 sco O ; N 1466 1607.500 M 7 1 rr : 1.000 0 0 sco O ; N 1467 1608.500 M 6 1 rr : 1.000 0 0 sco O ; N 1469 1609.500 M 3 1 rr : 1.000 0 0 sco O ; N 1470 1610.500 M 2 1 rr : 1.000 0 0 sco O ; N 1690 1287.500 M 2 1 rr : 0 0 0 sco O ; N 1690 1288.500 M 3 1 rr : 0 0 0 sco O ; N 1689 1289.500 M 5 1 rr : 0 0 0 sco O ; N 1689 1290.500 M 6 1 rr : 0 0 0 sco O ; N 1688 1291.500 M 9 1 rr : 0 0 0 sco O ; N 1689 1292.500 M 9 1 rr : 0 0 0 sco O ; N 1690 1293.500 M 9 1 rr : 0 0 0 sco O ; N 1691 1294.500 M 10 1 rr : 0 0 0 sco O ; N 1692 1295.500 M 10 1 rr : 0 0 0 sco O ; N 1694 1296.500 M 9 1 rr : 0 0 0 sco O ; N 1695 1297.500 M 10 1 rr : 0 0 0 sco O ; N 1696 1298.500 M 10 1 rr : 0 0 0 sco O ; N 1698 1299.500 M 9 1 rr : 0 0 0 sco O ; N 1699 1300.500 M 9 1 rr : 0 0 0 sco O ; N 1700 1301.500 M 10 1 rr : 0 0 0 sco O ; N 1702 1302.500 M 9 1 rr : 0 0 0 sco O ; N 1703 1303.500 M 9 1 rr : 0 0 0 sco O ; N 1704 1304.500 M 9 1 rr : 0 0 0 sco O ; N 1705 1305.500 M 9 1 rr : 0 0 0 sco O ; N 1707 1306.500 M 8 1 rr : 0 0 0 sco O ; N 1708 1307.500 M 8 1 rr : 0 0 0 sco O ; N 1709 1308.500 M 8 1 rr : 0 0 0 sco O ; N 1710 1309.500 M 8 1 rr : 0 0 0 sco O ; N 1711 1310.500 M 8 1 rr : 0 0 0 sco O ; N 1712 1311.500 M 8 1 rr : 0 0 0 sco O ; N 1713 1312.500 M 8 1 rr : 0 0 0 sco O ; N 1714 1313.500 M 9 1 rr : 0 0 0 sco O ; N 1715 1314.500 M 9 1 rr : 0 0 0 sco O ; N 1716 1315.500 M 9 1 rr : 0 0 0 sco O ; N 1717 1316.500 M 9 1 rr : 0 0 0 sco O ; N 1718 1317.500 M 9 1 rr : 0 0 0 sco O ; N 1720 1318.500 M 8 1 rr : 0 0 0 sco O ; N 1721 1319.500 M 8 1 rr : 0 0 0 sco O ; N 1722 1320.500 M 8 1 rr : 0 0 0 sco O ; N 1723 1321.500 M 7 1 rr : 0 0 0 sco O ; N 1724 1322.500 M 7 1 rr : 0 0 0 sco O ; N 1725 1323.500 M 7 1 rr : 0 0 0 sco O ; N 1725 1324.500 M 8 1 rr : 0 0 0 sco O ; N 1726 1325.500 M 7 1 rr : 0 0 0 sco O ; N 1727 1326.500 M 7 1 rr : 0 0 0 sco O ; N 1728 1327.500 M 7 1 rr : 0 0 0 sco O ; N 1729 1328.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1329.500 M 7 1 rr : 0 0 0 sco O ; N 1730 1330.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1331.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1332.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1333.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1334.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1335.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1336.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1337.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1338.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1339.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1340.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1341.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1342.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1343.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1344.500 M 7 1 rr : 0 0 0 sco O ; N 1731 1345.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1346.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1347.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1348.500 M 6 1 rr : 0 0 0 sco O ; N 1731 1349.500 M 6 1 rr : 0 0 0 sco O ; N 1730 1350.500 M 7 1 rr : 0 0 0 sco O ; N 1730 1351.500 M 6 1 rr : 0 0 0 sco O ; N 1730 1352.500 M 6 1 rr : 0 0 0 sco O ; N 1730 1353.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1354.500 M 7 1 rr : 0 0 0 sco O ; N 1729 1355.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1356.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1357.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1358.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1359.500 M 6 1 rr : 0 0 0 sco O ; N 1729 1360.500 M 7 1 rr : 0 0 0 sco O ; N 1729 1361.500 M 7 1 rr : 0 0 0 sco O ; N 1730 1362.500 M 6 1 rr : 0 0 0 sco O ; N 1730 1363.500 M 7 1 rr : 0 0 0 sco O ; N 1731 1364.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1365.500 M 6 1 rr : 0 0 0 sco O ; N 1732 1366.500 M 6 1 rr : 0 0 0 sco O ; N 1733 1367.500 M 6 1 rr : 0 0 0 sco O ; N 1733 1368.500 M 7 1 rr : 0 0 0 sco O ; N 1733 1369.500 M 8 1 rr : 0 0 0 sco O ; N 1734 1370.500 M 8 1 rr : 0 0 0 sco O ; N 1735 1371.500 M 8 1 rr : 0 0 0 sco O ; N 1736 1372.500 M 8 1 rr : 0 0 0 sco O ; N 1737 1373.500 M 8 1 rr : 0 0 0 sco O ; N 1738 1374.500 M 9 1 rr : 0 0 0 sco O ; N 1739 1375.500 M 9 1 rr : 0 0 0 sco O ; N 1740 1376.500 M 9 1 rr : 0 0 0 sco O ; N 1741 1377.500 M 9 1 rr : 0 0 0 sco O ; N 1742 1378.500 M 9 1 rr : 0 0 0 sco O ; N 1744 1379.500 M 8 1 rr : 0 0 0 sco O ; N 1745 1380.500 M 8 1 rr : 0 0 0 sco O ; N 1746 1381.500 M 8 1 rr : 0 0 0 sco O ; N 1747 1382.500 M 8 1 rr : 0 0 0 sco O ; N 1748 1383.500 M 8 1 rr : 0 0 0 sco O ; N 1749 1384.500 M 8 1 rr : 0 0 0 sco O ; N 1750 1385.500 M 8 1 rr : 0 0 0 sco O ; N 1751 1386.500 M 8 1 rr : 0 0 0 sco O ; N 1752 1387.500 M 8 1 rr : 0 0 0 sco O ; N 1753 1388.500 M 8 1 rr : 0 0 0 sco O ; N 1754 1389.500 M 9 1 rr : 0 0 0 sco O ; N 1755 1390.500 M 9 1 rr : 0 0 0 sco O ; N 1756 1391.500 M 9 1 rr : 0 0 0 sco O ; N 1757 1392.500 M 9 1 rr : 0 0 0 sco O ; N 1758 1393.500 M 9 1 rr : 0 0 0 sco O ; N 1760 1394.500 M 6 1 rr : 0 0 0 sco O ; N 1761 1395.500 M 4 1 rr : 0 0 0 sco O ; N 1762 1396.500 M 2 1 rr : 0 0 0 sco O ; N 1726 1278.500 M 5 1 rr : 1.000 0 0 sco O ; N 1724 1279.500 M 7 1 rr : 1.000 0 0 sco O ; N 1725 1280.500 M 7 1 rr : 1.000 0 0 sco O ; N 1725 1281.500 M 7 1 rr : 1.000 0 0 sco O ; N 1726 1282.500 M 7 1 rr : 1.000 0 0 sco O ; N 1726 1283.500 M 8 1 rr : 1.000 0 0 sco O ; N 1727 1284.500 M 8 1 rr : 1.000 0 0 sco O ; N 1728 1285.500 M 7 1 rr : 1.000 0 0 sco O ; N 1729 1286.500 M 7 1 rr : 1.000 0 0 sco O ; N 1730 1287.500 M 7 1 rr : 1.000 0 0 sco O ; N 1730 1288.500 M 8 1 rr : 1.000 0 0 sco O ; N 1731 1289.500 M 7 1 rr : 1.000 0 0 sco O ; N 1732 1290.500 M 7 1 rr : 1.000 0 0 sco O ; N 1733 1291.500 M 7 1 rr : 1.000 0 0 sco O ; N 1733 1292.500 M 7 1 rr : 1.000 0 0 sco O ; N 1734 1293.500 M 7 1 rr : 1.000 0 0 sco O ; N 1735 1294.500 M 7 1 rr : 1.000 0 0 sco O ; N 1735 1295.500 M 7 1 rr : 1.000 0 0 sco O ; N 1736 1296.500 M 7 1 rr : 1.000 0 0 sco O ; N 1737 1297.500 M 6 1 rr : 1.000 0 0 sco O ; N 1737 1298.500 M 7 1 rr : 1.000 0 0 sco O ; N 1738 1299.500 M 6 1 rr : 1.000 0 0 sco O ; N 1738 1300.500 M 7 1 rr : 1.000 0 0 sco O ; N 1739 1301.500 M 6 1 rr : 1.000 0 0 sco O ; N 1739 1302.500 M 7 1 rr : 1.000 0 0 sco O ; N 1740 1303.500 M 6 1 rr : 1.000 0 0 sco O ; N 1740 1304.500 M 7 1 rr : 1.000 0 0 sco O ; N 1741 1305.500 M 6 1 rr : 1.000 0 0 sco O ; N 1741 1306.500 M 7 1 rr : 1.000 0 0 sco O ; N 1742 1307.500 M 6 1 rr : 1.000 0 0 sco O ; N 1742 1308.500 M 6 1 rr : 1.000 0 0 sco O ; N 1742 1309.500 M 7 1 rr : 1.000 0 0 sco O ; N 1743 1310.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1311.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1312.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1313.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1314.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1315.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1316.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1317.500 M 6 1 rr : 1.000 0 0 sco O ; N 1743 1318.500 M 6 1 rr : 1.000 0 0 sco O ; N 1742 1319.500 M 7 1 rr : 1.000 0 0 sco O ; N 1742 1320.500 M 6 1 rr : 1.000 0 0 sco O ; N 1742 1321.500 M 6 1 rr : 1.000 0 0 sco O ; N 1742 1322.500 M 6 1 rr : 1.000 0 0 sco O ; N 1741 1323.500 M 7 1 rr : 1.000 0 0 sco O ; N 1741 1324.500 M 6 1 rr : 1.000 0 0 sco O ; N 1740 1325.500 M 7 1 rr : 1.000 0 0 sco O ; N 1740 1326.500 M 6 1 rr : 1.000 0 0 sco O ; N 1738 1327.500 M 8 1 rr : 1.000 0 0 sco O ; N 1738 1328.500 M 7 1 rr : 1.000 0 0 sco O ; N 1737 1329.500 M 7 1 rr : 1.000 0 0 sco O ; N 1736 1330.500 M 7 1 rr : 1.000 0 0 sco O ; N 1736 1331.500 M 7 1 rr : 1.000 0 0 sco O ; N 1735 1332.500 M 7 1 rr : 1.000 0 0 sco O ; N 1734 1333.500 M 7 1 rr : 1.000 0 0 sco O ; N 1734 1334.500 M 7 1 rr : 1.000 0 0 sco O ; N 1733 1335.500 M 7 1 rr : 1.000 0 0 sco O ; N 1733 1336.500 M 6 1 rr : 1.000 0 0 sco O ; N 1732 1337.500 M 7 1 rr : 1.000 0 0 sco O ; N 1732 1338.500 M 6 1 rr : 1.000 0 0 sco O ; N 1731 1339.500 M 7 1 rr : 1.000 0 0 sco O ; N 1730 1340.500 M 7 1 rr : 1.000 0 0 sco O ; N 1730 1341.500 M 7 1 rr : 1.000 0 0 sco O ; N 1729 1342.500 M 7 1 rr : 1.000 0 0 sco O ; N 1729 1343.500 M 6 1 rr : 1.000 0 0 sco O ; N 1728 1344.500 M 7 1 rr : 1.000 0 0 sco O ; N 1728 1345.500 M 6 1 rr : 1.000 0 0 sco O ; N 1727 1346.500 M 7 1 rr : 1.000 0 0 sco O ; N 1726 1347.500 M 7 1 rr : 1.000 0 0 sco O ; N 1726 1348.500 M 7 1 rr : 1.000 0 0 sco O ; N 1725 1349.500 M 7 1 rr : 1.000 0 0 sco O ; N 1724 1350.500 M 7 1 rr : 1.000 0 0 sco O ; N 1724 1351.500 M 7 1 rr : 1.000 0 0 sco O ; N 1723 1352.500 M 7 1 rr : 1.000 0 0 sco O ; N 1722 1353.500 M 7 1 rr : 1.000 0 0 sco O ; N 1722 1354.500 M 7 1 rr : 1.000 0 0 sco O ; N 1721 1355.500 M 7 1 rr : 1.000 0 0 sco O ; N 1721 1356.500 M 6 1 rr : 1.000 0 0 sco O ; N 1720 1357.500 M 7 1 rr : 1.000 0 0 sco O ; N 1720 1358.500 M 6 1 rr : 1.000 0 0 sco O ; N 1719 1359.500 M 7 1 rr : 1.000 0 0 sco O ; N 1719 1360.500 M 6 1 rr : 1.000 0 0 sco O ; N 1719 1361.500 M 6 1 rr : 1.000 0 0 sco O ; N 1719 1362.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1363.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1364.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1365.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1366.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1367.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1368.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1369.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1370.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1371.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1372.500 M 6 1 rr : 1.000 0 0 sco O ; N 1718 1373.500 M 7 1 rr : 1.000 0 0 sco O ; N 1719 1374.500 M 6 1 rr : 1.000 0 0 sco O ; N 1719 1375.500 M 6 1 rr : 1.000 0 0 sco O ; N 1719 1376.500 M 7 1 rr : 1.000 0 0 sco O ; N 1720 1377.500 M 6 1 rr : 1.000 0 0 sco O ; N 1720 1378.500 M 7 1 rr : 1.000 0 0 sco O ; N 1721 1379.500 M 6 1 rr : 1.000 0 0 sco O ; N 1721 1380.500 M 7 1 rr : 1.000 0 0 sco O ; N 1722 1381.500 M 6 1 rr : 1.000 0 0 sco O ; N 1722 1382.500 M 7 1 rr : 1.000 0 0 sco O ; N 1723 1383.500 M 6 1 rr : 1.000 0 0 sco O ; N 1723 1384.500 M 7 1 rr : 1.000 0 0 sco O ; N 1724 1385.500 M 7 1 rr : 1.000 0 0 sco O ; N 1724 1386.500 M 7 1 rr : 1.000 0 0 sco O ; N 1725 1387.500 M 7 1 rr : 1.000 0 0 sco O ; N 1726 1388.500 M 7 1 rr : 1.000 0 0 sco O ; N 1726 1389.500 M 8 1 rr : 1.000 0 0 sco O ; N 1727 1390.500 M 7 1 rr : 1.000 0 0 sco O ; N 1728 1391.500 M 7 1 rr : 1.000 0 0 sco O ; N 1729 1392.500 M 7 1 rr : 1.000 0 0 sco O ; N 1729 1393.500 M 7 1 rr : 1.000 0 0 sco O ; N 1730 1394.500 M 7 1 rr : 1.000 0 0 sco O ; N 1731 1395.500 M 6 1 rr : 1.000 0 0 sco O ; N 1731 1396.500 M 6 1 rr : 1.000 0 0 sco O ; N 1731 1397.500 M 7 1 rr : 1.000 0 0 sco O ; N 1732 1398.500 M 7 1 rr : 1.000 0 0 sco O ; N 1732 1399.500 M 3 1 rr : 1.000 0 0 sco O ; N 1905 881.500 M 4 1 rr : 0 0 0 sco O ; N 1903 882.500 M 6 1 rr : 0 0 0 sco O ; N 1904 883.500 M 6 1 rr : 0 0 0 sco O ; N 1904 884.500 M 6 1 rr : 0 0 0 sco O ; N 1905 885.500 M 6 1 rr : 0 0 0 sco O ; N 1905 886.500 M 7 1 rr : 0 0 0 sco O ; N 1905 887.500 M 7 1 rr : 0 0 0 sco O ; N 1906 888.500 M 7 1 rr : 0 0 0 sco O ; N 1907 889.500 M 7 1 rr : 0 0 0 sco O ; N 1907 890.500 M 8 1 rr : 0 0 0 sco O ; N 1908 891.500 M 7 1 rr : 0 0 0 sco O ; N 1909 892.500 M 7 1 rr : 0 0 0 sco O ; N 1910 893.500 M 7 1 rr : 0 0 0 sco O ; N 1910 894.500 M 8 1 rr : 0 0 0 sco O ; N 1911 895.500 M 7 1 rr : 0 0 0 sco O ; N 1912 896.500 M 7 1 rr : 0 0 0 sco O ; N 1913 897.500 M 7 1 rr : 0 0 0 sco O ; N 1913 898.500 M 7 1 rr : 0 0 0 sco O ; N 1914 899.500 M 7 1 rr : 0 0 0 sco O ; N 1915 900.500 M 7 1 rr : 0 0 0 sco O ; N 1915 901.500 M 8 1 rr : 0 0 0 sco O ; N 1916 902.500 M 7 1 rr : 0 0 0 sco O ; N 1917 903.500 M 7 1 rr : 0 0 0 sco O ; N 1918 904.500 M 7 1 rr : 0 0 0 sco O ; N 1918 905.500 M 7 1 rr : 0 0 0 sco O ; N 1919 906.500 M 7 1 rr : 0 0 0 sco O ; N 1920 907.500 M 7 1 rr : 0 0 0 sco O ; N 1920 908.500 M 7 1 rr : 0 0 0 sco O ; N 1921 909.500 M 7 1 rr : 0 0 0 sco O ; N 1922 910.500 M 6 1 rr : 0 0 0 sco O ; N 1922 911.500 M 7 1 rr : 0 0 0 sco O ; N 1923 912.500 M 6 1 rr : 0 0 0 sco O ; N 1923 913.500 M 7 1 rr : 0 0 0 sco O ; N 1924 914.500 M 6 1 rr : 0 0 0 sco O ; N 1924 915.500 M 7 1 rr : 0 0 0 sco O ; N 1925 916.500 M 6 1 rr : 0 0 0 sco O ; N 1925 917.500 M 7 1 rr : 0 0 0 sco O ; N 1926 918.500 M 6 1 rr : 0 0 0 sco O ; N 1926 919.500 M 7 1 rr : 0 0 0 sco O ; N 1927 920.500 M 6 1 rr : 0 0 0 sco O ; N 1927 921.500 M 6 1 rr : 0 0 0 sco O ; N 1927 922.500 M 7 1 rr : 0 0 0 sco O ; N 1928 923.500 M 6 1 rr : 0 0 0 sco O ; N 1928 924.500 M 7 1 rr : 0 0 0 sco O ; N 1929 925.500 M 6 1 rr : 0 0 0 sco O ; N 1929 926.500 M 6 1 rr : 0 0 0 sco O ; N 1929 927.500 M 7 1 rr : 0 0 0 sco O ; N 1930 928.500 M 6 1 rr : 0 0 0 sco O ; N 1930 929.500 M 6 1 rr : 0 0 0 sco O ; N 1930 930.500 M 6 1 rr : 0 0 0 sco O ; N 1930 931.500 M 6 1 rr : 0 0 0 sco O ; N 1930 932.500 M 6 1 rr : 0 0 0 sco O ; N 1930 933.500 M 6 1 rr : 0 0 0 sco O ; N 1930 934.500 M 6 1 rr : 0 0 0 sco O ; N 1930 935.500 M 6 1 rr : 0 0 0 sco O ; N 1930 936.500 M 6 1 rr : 0 0 0 sco O ; N 1930 937.500 M 6 1 rr : 0 0 0 sco O ; N 1930 938.500 M 6 1 rr : 0 0 0 sco O ; N 1930 939.500 M 6 1 rr : 0 0 0 sco O ; N 1929 940.500 M 6 1 rr : 0 0 0 sco O ; N 1929 941.500 M 6 1 rr : 0 0 0 sco O ; N 1929 942.500 M 6 1 rr : 0 0 0 sco O ; N 1929 943.500 M 6 1 rr : 0 0 0 sco O ; N 1928 944.500 M 6 1 rr : 0 0 0 sco O ; N 1928 945.500 M 6 1 rr : 0 0 0 sco O ; N 1928 946.500 M 6 1 rr : 0 0 0 sco O ; N 1927 947.500 M 7 1 rr : 0 0 0 sco O ; N 1927 948.500 M 6 1 rr : 0 0 0 sco O ; N 1926 949.500 M 7 1 rr : 0 0 0 sco O ; N 1926 950.500 M 6 1 rr : 0 0 0 sco O ; N 1925 951.500 M 7 1 rr : 0 0 0 sco O ; N 1925 952.500 M 6 1 rr : 0 0 0 sco O ; N 1924 953.500 M 7 1 rr : 0 0 0 sco O ; N 1924 954.500 M 6 1 rr : 0 0 0 sco O ; N 1924 955.500 M 6 1 rr : 0 0 0 sco O ; N 1923 956.500 M 7 1 rr : 0 0 0 sco O ; N 1923 957.500 M 6 1 rr : 0 0 0 sco O ; N 1922 958.500 M 7 1 rr : 0 0 0 sco O ; N 1921 959.500 M 7 1 rr : 0 0 0 sco O ; N 1921 960.500 M 7 1 rr : 0 0 0 sco O ; N 1920 961.500 M 7 1 rr : 0 0 0 sco O ; N 1920 962.500 M 6 1 rr : 0 0 0 sco O ; N 1919 963.500 M 7 1 rr : 0 0 0 sco O ; N 1918 964.500 M 7 1 rr : 0 0 0 sco O ; N 1918 965.500 M 7 1 rr : 0 0 0 sco O ; N 1917 966.500 M 7 1 rr : 0 0 0 sco O ; N 1916 967.500 M 7 1 rr : 0 0 0 sco O ; N 1916 968.500 M 7 1 rr : 0 0 0 sco O ; N 1915 969.500 M 7 1 rr : 0 0 0 sco O ; N 1914 970.500 M 7 1 rr : 0 0 0 sco O ; N 1913 971.500 M 8 1 rr : 0 0 0 sco O ; N 1913 972.500 M 7 1 rr : 0 0 0 sco O ; N 1912 973.500 M 7 1 rr : 0 0 0 sco O ; N 1911 974.500 M 7 1 rr : 0 0 0 sco O ; N 1911 975.500 M 7 1 rr : 0 0 0 sco O ; N 1910 976.500 M 7 1 rr : 0 0 0 sco O ; N 1910 977.500 M 6 1 rr : 0 0 0 sco O ; N 1909 978.500 M 7 1 rr : 0 0 0 sco O ; N 1908 979.500 M 7 1 rr : 0 0 0 sco O ; N 1908 980.500 M 7 1 rr : 0 0 0 sco O ; N 1907 981.500 M 7 1 rr : 0 0 0 sco O ; N 1907 982.500 M 6 1 rr : 0 0 0 sco O ; N 1906 983.500 M 7 1 rr : 0 0 0 sco O ; N 1905 984.500 M 7 1 rr : 0 0 0 sco O ; N 1905 985.500 M 7 1 rr : 0 0 0 sco O ; N 1904 986.500 M 7 1 rr : 0 0 0 sco O ; N 1903 987.500 M 7 1 rr : 0 0 0 sco O ; N 1903 988.500 M 7 1 rr : 0 0 0 sco O ; N 1902 989.500 M 7 1 rr : 0 0 0 sco O ; N 1901 990.500 M 7 1 rr : 0 0 0 sco O ; N 1901 991.500 M 7 1 rr : 0 0 0 sco O ; N 1900 992.500 M 7 1 rr : 0 0 0 sco O ; N 1900 993.500 M 6 1 rr : 0 0 0 sco O ; N 1899 994.500 M 7 1 rr : 0 0 0 sco O ; N 1899 995.500 M 6 1 rr : 0 0 0 sco O ; N 1898 996.500 M 7 1 rr : 0 0 0 sco O ; N 1898 997.500 M 6 1 rr : 0 0 0 sco O ; N 1897 998.500 M 7 1 rr : 0 0 0 sco O ; N 1897 999.500 M 6 1 rr : 0 0 0 sco O ; N 1896 1000.500 M 7 1 rr : 0 0 0 sco O ; N 1896 1001.500 M 6 1 rr : 0 0 0 sco O ; N 1895 1002.500 M 7 1 rr : 0 0 0 sco O ; N 1895 1003.500 M 6 1 rr : 0 0 0 sco O ; N 1895 1004.500 M 6 1 rr : 0 0 0 sco O ; N 1894 1005.500 M 7 1 rr : 0 0 0 sco O ; N 1894 1006.500 M 6 1 rr : 0 0 0 sco O ; N 1894 1007.500 M 6 1 rr : 0 0 0 sco O ; N 1894 1008.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1009.500 M 7 1 rr : 0 0 0 sco O ; N 1893 1010.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1011.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1012.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1013.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1014.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1015.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1016.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1017.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1018.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1019.500 M 6 1 rr : 0 0 0 sco O ; N 1893 1020.500 M 7 1 rr : 0 0 0 sco O ; N 1894 1021.500 M 6 1 rr : 0 0 0 sco O ; N 1894 1022.500 M 6 1 rr : 0 0 0 sco O ; N 1894 1023.500 M 6 1 rr : 0 0 0 sco O ; N 1894 1024.500 M 7 1 rr : 0 0 0 sco O ; N 1895 1025.500 M 6 1 rr : 0 0 0 sco O ; N 1895 1026.500 M 6 1 rr : 0 0 0 sco O ; N 1895 1027.500 M 6 1 rr : 0 0 0 sco O ; N 1895 1028.500 M 7 1 rr : 0 0 0 sco O ; N 1896 1029.500 M 6 1 rr : 0 0 0 sco O ; N 1896 1030.500 M 7 1 rr : 0 0 0 sco O ; N 1897 1031.500 M 6 1 rr : 0 0 0 sco O ; N 1897 1032.500 M 7 1 rr : 0 0 0 sco O ; N 1898 1033.500 M 7 1 rr : 0 0 0 sco O ; N 1898 1034.500 M 7 1 rr : 0 0 0 sco O ; N 1899 1035.500 M 7 1 rr : 0 0 0 sco O ; N 1900 1036.500 M 6 1 rr : 0 0 0 sco O ; N 1900 1037.500 M 7 1 rr : 0 0 0 sco O ; N 1901 1038.500 M 6 1 rr : 0 0 0 sco O ; N 1901 1039.500 M 7 1 rr : 0 0 0 sco O ; N 1902 1040.500 M 7 1 rr : 0 0 0 sco O ; N 1902 1041.500 M 7 1 rr : 0 0 0 sco O ; N 1903 1042.500 M 7 1 rr : 0 0 0 sco O ; N 1904 1043.500 M 7 1 rr : 0 0 0 sco O ; N 1904 1044.500 M 7 1 rr : 0 0 0 sco O ; N 1905 1045.500 M 7 1 rr : 0 0 0 sco O ; N 1906 1046.500 M 7 1 rr : 0 0 0 sco O ; N 1906 1047.500 M 7 1 rr : 0 0 0 sco O ; N 1907 1048.500 M 7 1 rr : 0 0 0 sco O ; N 1908 1049.500 M 7 1 rr : 0 0 0 sco O ; N 1908 1050.500 M 7 1 rr : 0 0 0 sco O ; N 1909 1051.500 M 7 1 rr : 0 0 0 sco O ; N 1910 1052.500 M 7 1 rr : 0 0 0 sco O ; N 1910 1053.500 M 7 1 rr : 0 0 0 sco O ; N 1911 1054.500 M 7 1 rr : 0 0 0 sco O ; N 1912 1055.500 M 6 1 rr : 0 0 0 sco O ; N 1912 1056.500 M 7 1 rr : 0 0 0 sco O ; N 1913 1057.500 M 7 1 rr : 0 0 0 sco O ; N 1913 1058.500 M 8 1 rr : 0 0 0 sco O ; N 1914 1059.500 M 7 1 rr : 0 0 0 sco O ; N 1915 1060.500 M 7 1 rr : 0 0 0 sco O ; N 1915 1061.500 M 7 1 rr : 0 0 0 sco O ; N 1916 1062.500 M 2 1 rr : 0 0 0 sco O ; N 1871 885.500 M 2 1 rr : 1.000 0 0 sco O ; N 1870 886.500 M 4 1 rr : 1.000 0 0 sco O ; N 1869 887.500 M 6 1 rr : 1.000 0 0 sco O ; N 1868 888.500 M 8 1 rr : 1.000 0 0 sco O ; N 1869 889.500 M 8 1 rr : 1.000 0 0 sco O ; N 1870 890.500 M 8 1 rr : 1.000 0 0 sco O ; N 1871 891.500 M 8 1 rr : 1.000 0 0 sco O ; N 1872 892.500 M 8 1 rr : 1.000 0 0 sco O ; N 1873 893.500 M 8 1 rr : 1.000 0 0 sco O ; N 1874 894.500 M 8 1 rr : 1.000 0 0 sco O ; N 1875 895.500 M 8 1 rr : 1.000 0 0 sco O ; N 1876 896.500 M 8 1 rr : 1.000 0 0 sco O ; N 1877 897.500 M 8 1 rr : 1.000 0 0 sco O ; N 1878 898.500 M 8 1 rr : 1.000 0 0 sco O ; N 1879 899.500 M 8 1 rr : 1.000 0 0 sco O ; N 1880 900.500 M 8 1 rr : 1.000 0 0 sco O ; N 1881 901.500 M 8 1 rr : 1.000 0 0 sco O ; N 1882 902.500 M 8 1 rr : 1.000 0 0 sco O ; N 1883 903.500 M 8 1 rr : 1.000 0 0 sco O ; N 1884 904.500 M 7 1 rr : 1.000 0 0 sco O ; N 1885 905.500 M 7 1 rr : 1.000 0 0 sco O ; N 1886 906.500 M 7 1 rr : 1.000 0 0 sco O ; N 1886 907.500 M 8 1 rr : 1.000 0 0 sco O ; N 1887 908.500 M 8 1 rr : 1.000 0 0 sco O ; N 1888 909.500 M 8 1 rr : 1.000 0 0 sco O ; N 1889 910.500 M 7 1 rr : 1.000 0 0 sco O ; N 1890 911.500 M 7 1 rr : 1.000 0 0 sco O ; N 1891 912.500 M 7 1 rr : 1.000 0 0 sco O ; N 1892 913.500 M 7 1 rr : 1.000 0 0 sco O ; N 1892 914.500 M 7 1 rr : 1.000 0 0 sco O ; N 1893 915.500 M 7 1 rr : 1.000 0 0 sco O ; N 1894 916.500 M 7 1 rr : 1.000 0 0 sco O ; N 1895 917.500 M 7 1 rr : 1.000 0 0 sco O ; N 1896 918.500 M 6 1 rr : 1.000 0 0 sco O ; N 1896 919.500 M 7 1 rr : 1.000 0 0 sco O ; N 1897 920.500 M 7 1 rr : 1.000 0 0 sco O ; N 1898 921.500 M 6 1 rr : 1.000 0 0 sco O ; N 1898 922.500 M 7 1 rr : 1.000 0 0 sco O ; N 1899 923.500 M 6 1 rr : 1.000 0 0 sco O ; N 1899 924.500 M 7 1 rr : 1.000 0 0 sco O ; N 1900 925.500 M 6 1 rr : 1.000 0 0 sco O ; N 1900 926.500 M 7 1 rr : 1.000 0 0 sco O ; N 1901 927.500 M 6 1 rr : 1.000 0 0 sco O ; N 1901 928.500 M 7 1 rr : 1.000 0 0 sco O ; N 1902 929.500 M 6 1 rr : 1.000 0 0 sco O ; N 1902 930.500 M 7 1 rr : 1.000 0 0 sco O ; N 1903 931.500 M 6 1 rr : 1.000 0 0 sco O ; N 1903 932.500 M 7 1 rr : 1.000 0 0 sco O ; N 1904 933.500 M 6 1 rr : 1.000 0 0 sco O ; N 1904 934.500 M 7 1 rr : 1.000 0 0 sco O ; N 1905 935.500 M 6 1 rr : 1.000 0 0 sco O ; N 1905 936.500 M 7 1 rr : 1.000 0 0 sco O ; N 1906 937.500 M 6 1 rr : 1.000 0 0 sco O ; N 1906 938.500 M 7 1 rr : 1.000 0 0 sco O ; N 1907 939.500 M 6 1 rr : 1.000 0 0 sco O ; N 1907 940.500 M 7 1 rr : 1.000 0 0 sco O ; N 1908 941.500 M 6 1 rr : 1.000 0 0 sco O ; N 1908 942.500 M 7 1 rr : 1.000 0 0 sco O ; N 1909 943.500 M 6 1 rr : 1.000 0 0 sco O ; N 1909 944.500 M 7 1 rr : 1.000 0 0 sco O ; N 1910 945.500 M 6 1 rr : 1.000 0 0 sco O ; N 1910 946.500 M 7 1 rr : 1.000 0 0 sco O ; N 1911 947.500 M 6 1 rr : 1.000 0 0 sco O ; N 1911 948.500 M 7 1 rr : 1.000 0 0 sco O ; N 1912 949.500 M 6 1 rr : 1.000 0 0 sco O ; N 1912 950.500 M 7 1 rr : 1.000 0 0 sco O ; N 1913 951.500 M 6 1 rr : 1.000 0 0 sco O ; N 1913 952.500 M 7 1 rr : 1.000 0 0 sco O ; N 1914 953.500 M 6 1 rr : 1.000 0 0 sco O ; N 1914 954.500 M 7 1 rr : 1.000 0 0 sco O ; N 1915 955.500 M 6 1 rr : 1.000 0 0 sco O ; N 1915 956.500 M 7 1 rr : 1.000 0 0 sco O ; N 1916 957.500 M 6 1 rr : 1.000 0 0 sco O ; N 1916 958.500 M 7 1 rr : 1.000 0 0 sco O ; N 1917 959.500 M 6 1 rr : 1.000 0 0 sco O ; N 1917 960.500 M 7 1 rr : 1.000 0 0 sco O ; N 1918 961.500 M 6 1 rr : 1.000 0 0 sco O ; N 1918 962.500 M 7 1 rr : 1.000 0 0 sco O ; N 1919 963.500 M 6 1 rr : 1.000 0 0 sco O ; N 1919 964.500 M 6 1 rr : 1.000 0 0 sco O ; N 1919 965.500 M 7 1 rr : 1.000 0 0 sco O ; N 1920 966.500 M 6 1 rr : 1.000 0 0 sco O ; N 1920 967.500 M 7 1 rr : 1.000 0 0 sco O ; N 1921 968.500 M 6 1 rr : 1.000 0 0 sco O ; N 1921 969.500 M 7 1 rr : 1.000 0 0 sco O ; N 1922 970.500 M 7 1 rr : 1.000 0 0 sco O ; N 1922 971.500 M 7 1 rr : 1.000 0 0 sco O ; N 1923 972.500 M 7 1 rr : 1.000 0 0 sco O ; N 1924 973.500 M 6 1 rr : 1.000 0 0 sco O ; N 1924 974.500 M 7 1 rr : 1.000 0 0 sco O ; N 1925 975.500 M 6 1 rr : 1.000 0 0 sco O ; N 1925 976.500 M 7 1 rr : 1.000 0 0 sco O ; N 1926 977.500 M 7 1 rr : 1.000 0 0 sco O ; N 1926 978.500 M 8 1 rr : 1.000 0 0 sco O ; N 1927 979.500 M 7 1 rr : 1.000 0 0 sco O ; N 1928 980.500 M 7 1 rr : 1.000 0 0 sco O ; N 1929 981.500 M 7 1 rr : 1.000 0 0 sco O ; N 1929 982.500 M 8 1 rr : 1.000 0 0 sco O ; N 1930 983.500 M 8 1 rr : 1.000 0 0 sco O ; N 1931 984.500 M 8 1 rr : 1.000 0 0 sco O ; N 1932 985.500 M 9 1 rr : 1.000 0 0 sco O ; N 1933 986.500 M 9 1 rr : 1.000 0 0 sco O ; N 1934 987.500 M 9 1 rr : 1.000 0 0 sco O ; N 1935 988.500 M 10 1 rr : 1.000 0 0 sco O ; N 1936 989.500 M 10 1 rr : 1.000 0 0 sco O ; N 1938 990.500 M 10 1 rr : 1.000 0 0 sco O ; N 1939 991.500 M 10 1 rr : 1.000 0 0 sco O ; N 1940 992.500 M 10 1 rr : 1.000 0 0 sco O ; N 1942 993.500 M 10 1 rr : 1.000 0 0 sco O ; N 1943 994.500 M 10 1 rr : 1.000 0 0 sco O ; N 1945 995.500 M 9 1 rr : 1.000 0 0 sco O ; N 1946 996.500 M 9 1 rr : 1.000 0 0 sco O ; N 1947 997.500 M 9 1 rr : 1.000 0 0 sco O ; N 1949 998.500 M 7 1 rr : 1.000 0 0 sco O ; N 1950 999.500 M 7 1 rr : 1.000 0 0 sco O ; N 1951 1000.500 M 7 1 rr : 1.000 0 0 sco O ; N 1951 1001.500 M 7 1 rr : 1.000 0 0 sco O ; N 1952 1002.500 M 7 1 rr : 1.000 0 0 sco O ; N 1953 1003.500 M 6 1 rr : 1.000 0 0 sco O ; N 1953 1004.500 M 7 1 rr : 1.000 0 0 sco O ; N 1954 1005.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1006.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1007.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1008.500 M 7 1 rr : 1.000 0 0 sco O ; N 1955 1009.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1010.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1011.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1012.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1013.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1014.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1015.500 M 7 1 rr : 1.000 0 0 sco O ; N 1956 1016.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1017.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1018.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1019.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1020.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1021.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1022.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1023.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1024.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1025.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1026.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1027.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1028.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1029.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1030.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1031.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1032.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1033.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1034.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1035.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1036.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1037.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1038.500 M 6 1 rr : 1.000 0 0 sco O ; N 1956 1039.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1040.500 M 7 1 rr : 1.000 0 0 sco O ; N 1955 1041.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1042.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1043.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1044.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1045.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1046.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1047.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1048.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1049.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1050.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1051.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1052.500 M 6 1 rr : 1.000 0 0 sco O ; N 1955 1053.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1054.500 M 7 1 rr : 1.000 0 0 sco O ; N 1954 1055.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1056.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1057.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1058.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1059.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1060.500 M 6 1 rr : 1.000 0 0 sco O ; N 1954 1061.500 M 6 1 rr : 1.000 0 0 sco O ; N 1996 458.500 M 3 1 rr : 0 0 0 sco O ; N 1994 459.500 M 5 1 rr : 0 0 0 sco O ; N 1993 460.500 M 7 1 rr : 0 0 0 sco O ; N 1994 461.500 M 7 1 rr : 0 0 0 sco O ; N 1994 462.500 M 8 1 rr : 0 0 0 sco O ; N 1995 463.500 M 8 1 rr : 0 0 0 sco O ; N 1996 464.500 M 8 1 rr : 0 0 0 sco O ; N 1997 465.500 M 9 1 rr : 0 0 0 sco O ; N 1998 466.500 M 9 1 rr : 0 0 0 sco O ; N 1999 467.500 M 9 1 rr : 0 0 0 sco O ; N 2000 468.500 M 9 1 rr : 0 0 0 sco O ; N 2001 469.500 M 9 1 rr : 0 0 0 sco O ; N 2003 470.500 M 9 1 rr : 0 0 0 sco O ; N 2004 471.500 M 9 1 rr : 0 0 0 sco O ; N 2005 472.500 M 9 1 rr : 0 0 0 sco O ; N 2006 473.500 M 9 1 rr : 0 0 0 sco O ; N 2007 474.500 M 9 1 rr : 0 0 0 sco O ; N 2009 475.500 M 8 1 rr : 0 0 0 sco O ; N 2010 476.500 M 8 1 rr : 0 0 0 sco O ; N 2011 477.500 M 8 1 rr : 0 0 0 sco O ; N 2012 478.500 M 8 1 rr : 0 0 0 sco O ; N 2013 479.500 M 8 1 rr : 0 0 0 sco O ; N 2014 480.500 M 7 1 rr : 0 0 0 sco O ; N 2015 481.500 M 7 1 rr : 0 0 0 sco O ; N 2016 482.500 M 7 1 rr : 0 0 0 sco O ; N 2016 483.500 M 8 1 rr : 0 0 0 sco O ; N 2017 484.500 M 8 1 rr : 0 0 0 sco O ; N 2018 485.500 M 8 1 rr : 0 0 0 sco O ; N 2019 486.500 M 8 1 rr : 0 0 0 sco O ; N 2020 487.500 M 8 1 rr : 0 0 0 sco O ; N 2021 488.500 M 7 1 rr : 0 0 0 sco O ; N 2022 489.500 M 7 1 rr : 0 0 0 sco O ; N 2023 490.500 M 7 1 rr : 0 0 0 sco O ; N 2023 491.500 M 8 1 rr : 0 0 0 sco O ; N 2024 492.500 M 8 1 rr : 0 0 0 sco O ; N 2025 493.500 M 7 1 rr : 0 0 0 sco O ; N 2026 494.500 M 7 1 rr : 0 0 0 sco O ; N 2027 495.500 M 7 1 rr : 0 0 0 sco O ; N 2027 496.500 M 8 1 rr : 0 0 0 sco O ; N 2028 497.500 M 7 1 rr : 0 0 0 sco O ; N 2029 498.500 M 7 1 rr : 0 0 0 sco O ; N 2030 499.500 M 7 1 rr : 0 0 0 sco O ; N 2030 500.500 M 8 1 rr : 0 0 0 sco O ; N 2031 501.500 M 7 1 rr : 0 0 0 sco O ; N 2032 502.500 M 7 1 rr : 0 0 0 sco O ; N 2033 503.500 M 6 1 rr : 0 0 0 sco O ; N 2033 504.500 M 7 1 rr : 0 0 0 sco O ; N 2034 505.500 M 6 1 rr : 0 0 0 sco O ; N 2034 506.500 M 7 1 rr : 0 0 0 sco O ; N 2035 507.500 M 7 1 rr : 0 0 0 sco O ; N 2035 508.500 M 7 1 rr : 0 0 0 sco O ; N 2036 509.500 M 7 1 rr : 0 0 0 sco O ; N 2037 510.500 M 6 1 rr : 0 0 0 sco O ; N 2037 511.500 M 7 1 rr : 0 0 0 sco O ; N 2038 512.500 M 6 1 rr : 0 0 0 sco O ; N 2038 513.500 M 7 1 rr : 0 0 0 sco O ; N 2039 514.500 M 6 1 rr : 0 0 0 sco O ; N 2039 515.500 M 7 1 rr : 0 0 0 sco O ; N 2040 516.500 M 6 1 rr : 0 0 0 sco O ; N 2040 517.500 M 7 1 rr : 0 0 0 sco O ; N 2041 518.500 M 6 1 rr : 0 0 0 sco O ; N 2041 519.500 M 7 1 rr : 0 0 0 sco O ; N 2042 520.500 M 6 1 rr : 0 0 0 sco O ; N 2042 521.500 M 7 1 rr : 0 0 0 sco O ; N 2043 522.500 M 6 1 rr : 0 0 0 sco O ; N 2043 523.500 M 7 1 rr : 0 0 0 sco O ; N 2044 524.500 M 6 1 rr : 0 0 0 sco O ; N 2044 525.500 M 7 1 rr : 0 0 0 sco O ; N 2045 526.500 M 6 1 rr : 0 0 0 sco O ; N 2045 527.500 M 7 1 rr : 0 0 0 sco O ; N 2046 528.500 M 6 1 rr : 0 0 0 sco O ; N 2046 529.500 M 7 1 rr : 0 0 0 sco O ; N 2047 530.500 M 6 1 rr : 0 0 0 sco O ; N 2047 531.500 M 7 1 rr : 0 0 0 sco O ; N 2048 532.500 M 6 1 rr : 0 0 0 sco O ; N 2048 533.500 M 7 1 rr : 0 0 0 sco O ; N 2049 534.500 M 6 1 rr : 0 0 0 sco O ; N 2049 535.500 M 7 1 rr : 0 0 0 sco O ; N 2050 536.500 M 6 1 rr : 0 0 0 sco O ; N 2050 537.500 M 7 1 rr : 0 0 0 sco O ; N 2051 538.500 M 6 1 rr : 0 0 0 sco O ; N 2051 539.500 M 7 1 rr : 0 0 0 sco O ; N 2052 540.500 M 6 1 rr : 0 0 0 sco O ; N 2052 541.500 M 7 1 rr : 0 0 0 sco O ; N 2053 542.500 M 6 1 rr : 0 0 0 sco O ; N 2053 543.500 M 7 1 rr : 0 0 0 sco O ; N 2054 544.500 M 6 1 rr : 0 0 0 sco O ; N 2054 545.500 M 7 1 rr : 0 0 0 sco O ; N 2055 546.500 M 6 1 rr : 0 0 0 sco O ; N 2055 547.500 M 6 1 rr : 0 0 0 sco O ; N 2055 548.500 M 7 1 rr : 0 0 0 sco O ; N 2056 549.500 M 6 1 rr : 0 0 0 sco O ; N 2056 550.500 M 7 1 rr : 0 0 0 sco O ; N 2057 551.500 M 6 1 rr : 0 0 0 sco O ; N 2057 552.500 M 7 1 rr : 0 0 0 sco O ; N 2058 553.500 M 6 1 rr : 0 0 0 sco O ; N 2058 554.500 M 7 1 rr : 0 0 0 sco O ; N 2059 555.500 M 6 1 rr : 0 0 0 sco O ; N 2059 556.500 M 6 1 rr : 0 0 0 sco O ; N 2059 557.500 M 7 1 rr : 0 0 0 sco O ; N 2060 558.500 M 7 1 rr : 0 0 0 sco O ; N 2060 559.500 M 7 1 rr : 0 0 0 sco O ; N 2061 560.500 M 7 1 rr : 0 0 0 sco O ; N 2062 561.500 M 6 1 rr : 0 0 0 sco O ; N 2062 562.500 M 7 1 rr : 0 0 0 sco O ; N 2063 563.500 M 7 1 rr : 0 0 0 sco O ; N 2063 564.500 M 7 1 rr : 0 0 0 sco O ; N 2064 565.500 M 7 1 rr : 0 0 0 sco O ; N 2065 566.500 M 7 1 rr : 0 0 0 sco O ; N 2065 567.500 M 7 1 rr : 0 0 0 sco O ; N 2066 568.500 M 7 1 rr : 0 0 0 sco O ; N 2067 569.500 M 6 1 rr : 0 0 0 sco O ; N 2067 570.500 M 7 1 rr : 0 0 0 sco O ; N 2068 571.500 M 7 1 rr : 0 0 0 sco O ; N 2068 572.500 M 7 1 rr : 0 0 0 sco O ; N 2069 573.500 M 7 1 rr : 0 0 0 sco O ; N 2070 574.500 M 7 1 rr : 0 0 0 sco O ; N 2070 575.500 M 7 1 rr : 0 0 0 sco O ; N 2071 576.500 M 7 1 rr : 0 0 0 sco O ; N 2072 577.500 M 8 1 rr : 0 0 0 sco O ; N 2072 578.500 M 9 1 rr : 0 0 0 sco O ; N 2073 579.500 M 9 1 rr : 0 0 0 sco O ; N 2074 580.500 M 10 1 rr : 0 0 0 sco O ; N 2075 581.500 M 10 1 rr : 0 0 0 sco O ; N 2077 582.500 M 10 1 rr : 0 0 0 sco O ; N 2078 583.500 M 11 1 rr : 0 0 0 sco O ; N 2079 584.500 M 11 1 rr : 0 0 0 sco O ; N 2081 585.500 M 11 1 rr : 0 0 0 sco O ; N 2082 586.500 M 11 1 rr : 0 0 0 sco O ; N 2084 587.500 M 10 1 rr : 0 0 0 sco O ; N 2086 588.500 M 10 1 rr : 0 0 0 sco O ; N 2087 589.500 M 10 1 rr : 0 0 0 sco O ; N 2089 590.500 M 9 1 rr : 0 0 0 sco O ; N 2090 591.500 M 10 1 rr : 0 0 0 sco O ; N 2091 592.500 M 10 1 rr : 0 0 0 sco O ; N 2093 593.500 M 9 1 rr : 0 0 0 sco O ; N 2094 594.500 M 9 1 rr : 0 0 0 sco O ; N 2095 595.500 M 9 1 rr : 0 0 0 sco O ; N 2097 596.500 M 8 1 rr : 0 0 0 sco O ; N 2098 597.500 M 7 1 rr : 0 0 0 sco O ; N 2099 598.500 M 7 1 rr : 0 0 0 sco O ; N 2100 599.500 M 7 1 rr : 0 0 0 sco O ; N 2100 600.500 M 7 1 rr : 0 0 0 sco O ; N 2101 601.500 M 7 1 rr : 0 0 0 sco O ; N 2102 602.500 M 6 1 rr : 0 0 0 sco O ; N 2102 603.500 M 7 1 rr : 0 0 0 sco O ; N 2103 604.500 M 6 1 rr : 0 0 0 sco O ; N 2103 605.500 M 7 1 rr : 0 0 0 sco O ; N 2104 606.500 M 6 1 rr : 0 0 0 sco O ; N 2104 607.500 M 6 1 rr : 0 0 0 sco O ; N 2104 608.500 M 7 1 rr : 0 0 0 sco O ; N 2105 609.500 M 6 1 rr : 0 0 0 sco O ; N 2105 610.500 M 6 1 rr : 0 0 0 sco O ; N 2105 611.500 M 6 1 rr : 0 0 0 sco O ; N 2105 612.500 M 7 1 rr : 0 0 0 sco O ; N 2106 613.500 M 6 1 rr : 0 0 0 sco O ; N 2106 614.500 M 6 1 rr : 0 0 0 sco O ; N 2106 615.500 M 6 1 rr : 0 0 0 sco O ; N 2106 616.500 M 6 1 rr : 0 0 0 sco O ; N 2106 617.500 M 6 1 rr : 0 0 0 sco O ; N 2106 618.500 M 7 1 rr : 0 0 0 sco O ; N 2107 619.500 M 6 1 rr : 0 0 0 sco O ; N 2107 620.500 M 6 1 rr : 0 0 0 sco O ; N 2107 621.500 M 6 1 rr : 0 0 0 sco O ; N 2107 622.500 M 6 1 rr : 0 0 0 sco O ; N 2107 623.500 M 6 1 rr : 0 0 0 sco O ; N 2107 624.500 M 6 1 rr : 0 0 0 sco O ; N 2107 625.500 M 6 1 rr : 0 0 0 sco O ; N 2107 626.500 M 6 1 rr : 0 0 0 sco O ; N 2107 627.500 M 6 1 rr : 0 0 0 sco O ; N 2107 628.500 M 6 1 rr : 0 0 0 sco O ; N 2107 629.500 M 6 1 rr : 0 0 0 sco O ; N 2107 630.500 M 6 1 rr : 0 0 0 sco O ; N 2107 631.500 M 6 1 rr : 0 0 0 sco O ; N 2107 632.500 M 6 1 rr : 0 0 0 sco O ; N 2107 633.500 M 6 1 rr : 0 0 0 sco O ; N 2106 634.500 M 7 1 rr : 0 0 0 sco O ; N 2106 635.500 M 6 1 rr : 0 0 0 sco O ; N 2106 636.500 M 6 1 rr : 0 0 0 sco O ; N 2106 637.500 M 6 1 rr : 0 0 0 sco O ; N 2106 638.500 M 6 1 rr : 0 0 0 sco O ; N 2106 639.500 M 6 1 rr : 0 0 0 sco O ; N 2106 640.500 M 6 1 rr : 0 0 0 sco O ; N 2106 641.500 M 6 1 rr : 0 0 0 sco O ; N 2106 642.500 M 6 1 rr : 0 0 0 sco O ; N 2106 643.500 M 6 1 rr : 0 0 0 sco O ; N 2106 644.500 M 6 1 rr : 0 0 0 sco O ; N 2106 645.500 M 6 1 rr : 0 0 0 sco O ; N 2106 646.500 M 6 1 rr : 0 0 0 sco O ; N 2106 647.500 M 6 1 rr : 0 0 0 sco O ; N 2106 648.500 M 6 1 rr : 0 0 0 sco O ; N 2106 649.500 M 6 1 rr : 0 0 0 sco O ; N 2106 650.500 M 6 1 rr : 0 0 0 sco O ; N 2106 651.500 M 6 1 rr : 0 0 0 sco O ; N 2106 652.500 M 6 1 rr : 0 0 0 sco O ; N 2106 653.500 M 6 1 rr : 0 0 0 sco O ; N 2106 654.500 M 6 1 rr : 0 0 0 sco O ; N 2106 655.500 M 6 1 rr : 0 0 0 sco O ; N 2106 656.500 M 6 1 rr : 0 0 0 sco O ; N 2106 657.500 M 6 1 rr : 0 0 0 sco O ; N 2106 658.500 M 6 1 rr : 0 0 0 sco O ; N 2105 659.500 M 7 1 rr : 0 0 0 sco O ; N 2105 660.500 M 6 1 rr : 0 0 0 sco O ; N 2105 661.500 M 6 1 rr : 0 0 0 sco O ; N 2105 662.500 M 6 1 rr : 0 0 0 sco O ; N 2105 663.500 M 6 1 rr : 0 0 0 sco O ; N 2105 664.500 M 6 1 rr : 0 0 0 sco O ; N 2105 665.500 M 6 1 rr : 0 0 0 sco O ; N 2105 666.500 M 6 1 rr : 0 0 0 sco O ; N 2105 667.500 M 6 1 rr : 0 0 0 sco O ; N 2104 668.500 M 7 1 rr : 0 0 0 sco O ; N 2104 669.500 M 6 1 rr : 0 0 0 sco O ; N 2104 670.500 M 6 1 rr : 0 0 0 sco O ; N 2104 671.500 M 6 1 rr : 0 0 0 sco O ; N 2104 672.500 M 6 1 rr : 0 0 0 sco O ; N 2104 673.500 M 6 1 rr : 0 0 0 sco O ; N 2104 674.500 M 6 1 rr : 0 0 0 sco O ; N 2104 675.500 M 6 1 rr : 0 0 0 sco O ; N 2104 676.500 M 6 1 rr : 0 0 0 sco O ; N 2046 440.500 M 3 1 rr : 1.000 0 0 sco O ; N 2044 441.500 M 6 1 rr : 1.000 0 0 sco O ; N 2043 442.500 M 7 1 rr : 1.000 0 0 sco O ; N 2044 443.500 M 7 1 rr : 1.000 0 0 sco O ; N 2045 444.500 M 7 1 rr : 1.000 0 0 sco O ; N 2045 445.500 M 8 1 rr : 1.000 0 0 sco O ; N 2046 446.500 M 8 1 rr : 1.000 0 0 sco O ; N 2047 447.500 M 7 1 rr : 1.000 0 0 sco O ; N 2048 448.500 M 7 1 rr : 1.000 0 0 sco O ; N 2049 449.500 M 7 1 rr : 1.000 0 0 sco O ; N 2049 450.500 M 8 1 rr : 1.000 0 0 sco O ; N 2050 451.500 M 8 1 rr : 1.000 0 0 sco O ; N 2051 452.500 M 7 1 rr : 1.000 0 0 sco O ; N 2052 453.500 M 7 1 rr : 1.000 0 0 sco O ; N 2053 454.500 M 7 1 rr : 1.000 0 0 sco O ; N 2053 455.500 M 8 1 rr : 1.000 0 0 sco O ; N 2054 456.500 M 7 1 rr : 1.000 0 0 sco O ; N 2055 457.500 M 7 1 rr : 1.000 0 0 sco O ; N 2056 458.500 M 7 1 rr : 1.000 0 0 sco O ; N 2056 459.500 M 8 1 rr : 1.000 0 0 sco O ; N 2057 460.500 M 7 1 rr : 1.000 0 0 sco O ; N 2058 461.500 M 7 1 rr : 1.000 0 0 sco O ; N 2059 462.500 M 7 1 rr : 1.000 0 0 sco O ; N 2059 463.500 M 8 1 rr : 1.000 0 0 sco O ; N 2060 464.500 M 7 1 rr : 1.000 0 0 sco O ; N 2061 465.500 M 7 1 rr : 1.000 0 0 sco O ; N 2062 466.500 M 7 1 rr : 1.000 0 0 sco O ; N 2062 467.500 M 7 1 rr : 1.000 0 0 sco O ; N 2063 468.500 M 7 1 rr : 1.000 0 0 sco O ; N 2064 469.500 M 7 1 rr : 1.000 0 0 sco O ; N 2064 470.500 M 8 1 rr : 1.000 0 0 sco O ; N 2065 471.500 M 7 1 rr : 1.000 0 0 sco O ; N 2066 472.500 M 7 1 rr : 1.000 0 0 sco O ; N 2067 473.500 M 7 1 rr : 1.000 0 0 sco O ; N 2067 474.500 M 7 1 rr : 1.000 0 0 sco O ; N 2068 475.500 M 7 1 rr : 1.000 0 0 sco O ; N 2069 476.500 M 7 1 rr : 1.000 0 0 sco O ; N 2069 477.500 M 7 1 rr : 1.000 0 0 sco O ; N 2070 478.500 M 7 1 rr : 1.000 0 0 sco O ; N 2071 479.500 M 7 1 rr : 1.000 0 0 sco O ; N 2071 480.500 M 8 1 rr : 1.000 0 0 sco O ; N 2072 481.500 M 7 1 rr : 1.000 0 0 sco O ; N 2073 482.500 M 7 1 rr : 1.000 0 0 sco O ; N 2074 483.500 M 7 1 rr : 1.000 0 0 sco O ; N 2074 484.500 M 7 1 rr : 1.000 0 0 sco O ; N 2075 485.500 M 7 1 rr : 1.000 0 0 sco O ; N 2076 486.500 M 7 1 rr : 1.000 0 0 sco O ; N 2076 487.500 M 7 1 rr : 1.000 0 0 sco O ; N 2077 488.500 M 7 1 rr : 1.000 0 0 sco O ; N 2078 489.500 M 6 1 rr : 1.000 0 0 sco O ; N 2078 490.500 M 7 1 rr : 1.000 0 0 sco O ; N 2079 491.500 M 7 1 rr : 1.000 0 0 sco O ; N 2079 492.500 M 7 1 rr : 1.000 0 0 sco O ; N 2080 493.500 M 7 1 rr : 1.000 0 0 sco O ; N 2081 494.500 M 6 1 rr : 1.000 0 0 sco O ; N 2081 495.500 M 7 1 rr : 1.000 0 0 sco O ; N 2082 496.500 M 6 1 rr : 1.000 0 0 sco O ; N 2082 497.500 M 7 1 rr : 1.000 0 0 sco O ; N 2082 498.500 M 7 1 rr : 1.000 0 0 sco O ; N 2083 499.500 M 6 1 rr : 1.000 0 0 sco O ; N 2083 500.500 M 7 1 rr : 1.000 0 0 sco O ; N 2083 501.500 M 7 1 rr : 1.000 0 0 sco O ; N 2084 502.500 M 6 1 rr : 1.000 0 0 sco O ; N 2084 503.500 M 6 1 rr : 1.000 0 0 sco O ; N 2084 504.500 M 7 1 rr : 1.000 0 0 sco O ; N 2084 505.500 M 7 1 rr : 1.000 0 0 sco O ; N 2085 506.500 M 6 1 rr : 1.000 0 0 sco O ; N 2085 507.500 M 6 1 rr : 1.000 0 0 sco O ; N 2085 508.500 M 7 1 rr : 1.000 0 0 sco O ; N 2086 509.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 510.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 511.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 512.500 M 7 1 rr : 1.000 0 0 sco O ; N 2087 513.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 514.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 515.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 516.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 517.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 518.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 519.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 520.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 521.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 522.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 523.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 524.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 525.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 526.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 527.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 528.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 529.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 530.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 531.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 532.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 533.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 534.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 535.500 M 6 1 rr : 1.000 0 0 sco O ; N 2087 536.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 537.500 M 7 1 rr : 1.000 0 0 sco O ; N 2086 538.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 539.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 540.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 541.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 542.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 543.500 M 6 1 rr : 1.000 0 0 sco O ; N 2086 544.500 M 6 1 rr : 1.000 0 0 sco O ; N 2085 545.500 M 7 1 rr : 1.000 0 0 sco O ; N 2085 546.500 M 6 1 rr : 1.000 0 0 sco O ; N 2085 547.500 M 6 1 rr : 1.000 0 0 sco O ; N 2084 548.500 M 7 1 rr : 1.000 0 0 sco O ; N 2084 549.500 M 6 1 rr : 1.000 0 0 sco O ; N 2084 550.500 M 6 1 rr : 1.000 0 0 sco O ; N 2084 551.500 M 6 1 rr : 1.000 0 0 sco O ; N 2084 552.500 M 6 1 rr : 1.000 0 0 sco O ; N 2083 553.500 M 7 1 rr : 1.000 0 0 sco O ; N 2083 554.500 M 6 1 rr : 1.000 0 0 sco O ; N 2083 555.500 M 6 1 rr : 1.000 0 0 sco O ; N 2082 556.500 M 7 1 rr : 1.000 0 0 sco O ; N 2082 557.500 M 7 1 rr : 1.000 0 0 sco O ; N 2081 558.500 M 7 1 rr : 1.000 0 0 sco O ; N 2080 559.500 M 8 1 rr : 1.000 0 0 sco O ; N 2080 560.500 M 7 1 rr : 1.000 0 0 sco O ; N 2079 561.500 M 7 1 rr : 1.000 0 0 sco O ; N 2077 562.500 M 8 1 rr : 1.000 0 0 sco O ; N 2076 563.500 M 9 1 rr : 1.000 0 0 sco O ; N 2074 564.500 M 10 1 rr : 1.000 0 0 sco O ; N 2072 565.500 M 11 1 rr : 1.000 0 0 sco O ; N 2071 566.500 M 11 1 rr : 1.000 0 0 sco O ; N 2069 567.500 M 11 1 rr : 1.000 0 0 sco O ; N 2068 568.500 M 11 1 rr : 1.000 0 0 sco O ; N 2066 569.500 M 11 1 rr : 1.000 0 0 sco O ; N 2064 570.500 M 11 1 rr : 1.000 0 0 sco O ; N 2063 571.500 M 11 1 rr : 1.000 0 0 sco O ; N 2061 572.500 M 11 1 rr : 1.000 0 0 sco O ; N 2060 573.500 M 11 1 rr : 1.000 0 0 sco O ; N 2059 574.500 M 10 1 rr : 1.000 0 0 sco O ; N 2058 575.500 M 9 1 rr : 1.000 0 0 sco O ; N 2058 576.500 M 8 1 rr : 1.000 0 0 sco O ; N 2057 577.500 M 7 1 rr : 1.000 0 0 sco O ; N 2056 578.500 M 7 1 rr : 1.000 0 0 sco O ; N 2055 579.500 M 8 1 rr : 1.000 0 0 sco O ; N 2054 580.500 M 8 1 rr : 1.000 0 0 sco O ; N 2053 581.500 M 8 1 rr : 1.000 0 0 sco O ; N 2052 582.500 M 8 1 rr : 1.000 0 0 sco O ; N 2052 583.500 M 7 1 rr : 1.000 0 0 sco O ; N 2051 584.500 M 7 1 rr : 1.000 0 0 sco O ; N 2051 585.500 M 6 1 rr : 1.000 0 0 sco O ; N 2050 586.500 M 7 1 rr : 1.000 0 0 sco O ; N 2049 587.500 M 7 1 rr : 1.000 0 0 sco O ; N 2049 588.500 M 7 1 rr : 1.000 0 0 sco O ; N 2049 589.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 590.500 M 7 1 rr : 1.000 0 0 sco O ; N 2048 591.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 592.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 593.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 594.500 M 6 1 rr : 1.000 0 0 sco O ; N 2047 595.500 M 6 1 rr : 1.000 0 0 sco O ; N 2047 596.500 M 6 1 rr : 1.000 0 0 sco O ; N 2047 597.500 M 6 1 rr : 1.000 0 0 sco O ; N 2047 598.500 M 6 1 rr : 1.000 0 0 sco O ; N 2047 599.500 M 6 1 rr : 1.000 0 0 sco O ; N 2047 600.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 601.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 602.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 603.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 604.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 605.500 M 6 1 rr : 1.000 0 0 sco O ; N 2048 606.500 M 7 1 rr : 1.000 0 0 sco O ; N 2049 607.500 M 6 1 rr : 1.000 0 0 sco O ; N 2049 608.500 M 6 1 rr : 1.000 0 0 sco O ; N 2049 609.500 M 6 1 rr : 1.000 0 0 sco O ; N 2049 610.500 M 7 1 rr : 1.000 0 0 sco O ; N 2050 611.500 M 6 1 rr : 1.000 0 0 sco O ; N 2050 612.500 M 6 1 rr : 1.000 0 0 sco O ; N 2050 613.500 M 6 1 rr : 1.000 0 0 sco O ; N 2050 614.500 M 7 1 rr : 1.000 0 0 sco O ; N 2051 615.500 M 6 1 rr : 1.000 0 0 sco O ; N 2051 616.500 M 6 1 rr : 1.000 0 0 sco O ; N 2051 617.500 M 7 1 rr : 1.000 0 0 sco O ; N 2052 618.500 M 6 1 rr : 1.000 0 0 sco O ; N 2052 619.500 M 6 1 rr : 1.000 0 0 sco O ; N 2052 620.500 M 7 1 rr : 1.000 0 0 sco O ; N 2053 621.500 M 6 1 rr : 1.000 0 0 sco O ; N 2053 622.500 M 7 1 rr : 1.000 0 0 sco O ; N 2053 623.500 M 7 1 rr : 1.000 0 0 sco O ; N 2054 624.500 M 6 1 rr : 1.000 0 0 sco O ; N 2054 625.500 M 7 1 rr : 1.000 0 0 sco O ; N 2054 626.500 M 7 1 rr : 1.000 0 0 sco O ; N 2055 627.500 M 6 1 rr : 1.000 0 0 sco O ; N 2055 628.500 M 7 1 rr : 1.000 0 0 sco O ; N 2055 629.500 M 7 1 rr : 1.000 0 0 sco O ; N 2056 630.500 M 6 1 rr : 1.000 0 0 sco O ; N 2056 631.500 M 6 1 rr : 1.000 0 0 sco O ; N 2056 632.500 M 7 1 rr : 1.000 0 0 sco O ; N 2057 633.500 M 6 1 rr : 1.000 0 0 sco O ; N 2057 634.500 M 7 1 rr : 1.000 0 0 sco O ; N 2058 635.500 M 6 1 rr : 1.000 0 0 sco O ; N 2058 636.500 M 7 1 rr : 1.000 0 0 sco O ; N 2059 637.500 M 6 1 rr : 1.000 0 0 sco O ; N 2059 638.500 M 7 1 rr : 1.000 0 0 sco O ; N 2060 639.500 M 6 1 rr : 1.000 0 0 sco O ; N 2060 640.500 M 6 1 rr : 1.000 0 0 sco O ; N 2060 641.500 M 7 1 rr : 1.000 0 0 sco O ; N 2061 642.500 M 6 1 rr : 1.000 0 0 sco O ; N 2061 643.500 M 7 1 rr : 1.000 0 0 sco O ; N 2062 644.500 M 6 1 rr : 1.000 0 0 sco O ; N 2062 645.500 M 6 1 rr : 1.000 0 0 sco O ; N 2062 646.500 M 7 1 rr : 1.000 0 0 sco O ; N 2063 647.500 M 6 1 rr : 1.000 0 0 sco O ; N 2063 648.500 M 7 1 rr : 1.000 0 0 sco O ; N 2064 649.500 M 6 1 rr : 1.000 0 0 sco O ; N 2064 650.500 M 6 1 rr : 1.000 0 0 sco O ; N 2064 651.500 M 7 1 rr : 1.000 0 0 sco O ; N 2065 652.500 M 6 1 rr : 1.000 0 0 sco O ; N 2065 653.500 M 7 1 rr : 1.000 0 0 sco O ; N 2066 654.500 M 6 1 rr : 1.000 0 0 sco O ; N 2066 655.500 M 6 1 rr : 1.000 0 0 sco O ; N 2066 656.500 M 7 1 rr : 1.000 0 0 sco O ; N 2067 657.500 M 6 1 rr : 1.000 0 0 sco O ; N 2067 658.500 M 7 1 rr : 1.000 0 0 sco O ; N 2068 659.500 M 6 1 rr : 1.000 0 0 sco O ; N 2068 660.500 M 7 1 rr : 1.000 0 0 sco O ; N 2068 661.500 M 7 1 rr : 1.000 0 0 sco O ; N 2069 662.500 M 7 1 rr : 1.000 0 0 sco O ; N 2069 663.500 M 7 1 rr : 1.000 0 0 sco O ; N 2070 664.500 M 7 1 rr : 1.000 0 0 sco O ; N 2070 665.500 M 7 1 rr : 1.000 0 0 sco O ; N 2071 666.500 M 2 1 rr : 1.000 0 0 sco O ; 164 95 N M 2601 271 rr : 114 70 3000 2250 rc 0.647 0 0.129 sco F0_100 Ji 201 111 M -0.300 0 (M)A -0.100 0 (u)A 0.200 0 (l)A -0.300 0 (t)A 0.200 0 (i)A -0.800 0 (l)A 0.400 0 (eve)A 1.000 0 32 -0.800 0 (l )D -0.100 0 (p)A -0.600 0 (a)A 0.100 0 (r)A 0.700 0 (t)A -0.800 0 (i)A 0.700 0 (t)A -0.800 0 (i)A -0.100 0 (on)A 0.200 0 (i)A -0.700 0 32 -0.100 0 (ng )D 0.400 0 (a)A 0.200 0 (l)A -0.100 0 (g)A -1.100 0 (o)A 1.100 0 (r)A -0.800 0 (i)A -0.300 0 (t)A -0.100 0 (h)A 0.100 0 (m)A -0.200 0 32 0.400 0 (s c)D -1.100 0 (o)A 1.100 0 (m)A -1.100 0 (p)A -0.100 0 (u)A 0.700 0 (t)A 0.800 0 32 -0.600 0 (e )D -1.200 0 32 0.400 0 (a )D -0.100 0 (p)A 0.400 0 (a)A 0.100 0 (r)A -0.300 0 (t)A 0.200 0 (i)A -0.300 0 (t)A 0.200 0 (i)A -0.100 0 (on)A ; : 114 70 3000 2250 rc 0.647 0 0.129 sco F0_100 Ji 273 231 M 0.400 0 (a)A 0.500 0 32 -0.300 0 (t t)D -0.100 0 (h)A -1.200 0 32 0.400 0 (e c)D -0.100 0 (o)A 0.400 0 (a)A 0.100 0 (r)A -0.600 0 (s)A 0.400 0 (es)A 0.500 0 32 -0.300 0 (t )D -0.100 0 (g)A 0.100 0 (r)A 0.400 0 (a)A -1.100 0 (p)A 0.300 0 32 -0.100 0 (h )D 0.400 0 (a)A -0.700 0 32 -0.100 0 (nd )D 0.700 0 (t)A -1.100 0 (h)A 0.400 0 (e)A 0.300 0 32 -0.100 0 (n )D 0.100 0 (r)A -0.600 0 (e)A 0.700 0 (f)A -0.800 0 (i)A -0.100 0 (n)A -0.200 0 32 0.400 0 (e )D -0.300 0 (t)A -0.100 0 (h)A -1.200 0 32 0.400 0 (e s)D -0.100 0 (o)A 0.200 0 (l)A -1.100 0 (u)A 0.700 0 (t)A -0.800 0 (i)A -0.100 0 (on)A 0.700 0 (!)A ; LH pagesave restore /Pscript_Win_Driver /ProcSet findresource dup /terminate get exec Pscript_Win_Compat dup /terminate get exec restore gr % % End Imported PIC File: slide8.eps % /Helvetica-Bold findfont 300.00 scalefont setfont 14550 7514 m gs 1 -1 sc (\(b\)) col-1 show gr /Helvetica-Bold findfont 300.00 scalefont setfont 5100 5864 m gs 1 -1 sc (\(a\)) col-1 show gr $F2psEnd restore %%EndDocument @endspecial 678 2789 a Fy(Figure)e(1)p FL(:)26 b Fx(\(a\))18 b(T)-8 b(r)o(aditional)18 b(par)s(titioning)g(algor)q(ithms)o(.)k (\(b\))c(Multile)n(v)n(el)h(par)s(titioning)f(algor)q(ithms)o(.)100 2982 y FL(The)h(adv)n(antages)g(of)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)24 b FL(compared)19 b(to)h(other)f(similar)i (packages)e(are)h(the)g(follo)n(wing:)88 3167 y Fw(+)42 b FC(Pr)o(o)o(vides)19 b(high)i(quality)f(partitions!)208 3277 y FL(Experiments)j(on)i(a)h(lar)o(ge)f(number)e(of)j(graphs)e (arising)h(in)g(v)n(arious)g(domains)f(including)g(\002nite)i(element)f (methods,)g(linear)208 3386 y(programming,)g(VLSI,)i(and)g (transportation)e(sho)n(w)h(that)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)31 b FL(produces)26 b(partitions)g(that)i(are)f (consistently)f(better)h(than)208 3496 y(those)g(produced)f(by)h(other) g(widely)g(used)h(algorithms.)47 b(The)27 b(partitions)g(produced)e(by) 30 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)32 b FL(are)c(consistently)f (10\045)g(to)208 3606 y(50\045)19 b(better)h(than)g(those)g(produced)e (by)h(spectral)h(partitioning)f(algorithms)g([1)o(,)h(4].)88 3790 y Fw(+)42 b FC(It)20 b(is)h(extr)o(emely)e(fast!)208 3900 y FL(Experiments)d(on)i(a)g(wide)g(range)f(of)h(graphs)f(has)i (sho)n(wn)e(that)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)23 b FL(is)c(one)e(to)i(tw)o(o)f(orders)f(of)h(magnitude)e(f)o(aster)j (than)e(other)208 4010 y(widely)h(used)h(partitioning)e(algorithms.)24 b(Figure)18 b(2)i(sho)n(ws)f(the)g(amount)f(of)h(time)g(required)e(to)j (partition)e(a)i(v)n(ariety)e(of)h(graphs)208 4119 y(in)h(256)g(parts)h (for)f(tw)o(o)g(dif)n(ferent)f(architectures,)g(an)i(R10000-based)d (SGI)j(Challenge)f(and)g(a)h(Pentium)f(Pro-based)f(personal)208 4229 y(computer)-5 b(.)30 b(Graphs)21 b(containing)g(up)h(to)g(four)f (million)h(v)o(ertices)g(can)g(be)g(partitioned)f(in)i(256)e(parts)h (in)h(well)g(under)e(a)h(minute)208 4338 y(on)g(today')-5 b(s)22 b(scienti\002c)h(w)o(orkstations.)33 b(The)22 b(run)g(time)h(of)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(is)d(comparable)c(to)j(\(or)g(e)n(v)o(en)f(smaller)g(than\))g(the) h(run)f(time)208 4448 y(of)d(some)h(geometric)f(partitioning)f (algorithms)h(that)i(often)e(produce)f(much)h(w)o(orse)i(partitions.)88 4633 y Fw(+)42 b FC(Pr)o(o)o(vides)19 b(lo)o(w)h(\002ll)i(orderings!) 208 4742 y FL(The)29 b(\002ll-reducing)f(orderings)g(produced)f(by)32 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)34 b FL(are)c(substantially)f (better)g(than)h(those)f(produced)f(by)h(other)g(widely)208 4852 y(used)18 b(algorithms)g(including)g(multiple)g(minimum)g(de)o (gree.)23 b(F)o(or)18 b(man)o(y)g(classes)j(of)d(problems)g(arising)h (in)g(scienti\002c)g(compu-)208 4962 y(tations)k(and)g(linear)g (programming,)f Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(is)e(able)e(to)g(reduce)g(the)g(storage)f(and)h(computational)e (requirements)g(of)j(sparse)208 5071 y(matrix)e(f)o(actorization)f (methods)g(by)h(up)h(to)g(an)f(order)g(of)g(magnitude.)31 b(Moreo)o(v)o(er)m(,)20 b(unlik)o(e)i(multiple)g(minimum)f(de)o(gree,)h (the)208 5181 y(elimination)f(trees)h(produced)e(by)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(are)22 b(suited)g(for)g (parallel)g(direct)f(f)o(actorization.)30 b(Furthermore,)20 b(as)j(Figure)f(2)g(illus-)208 5290 y(trates,)g Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)24 b FL(is)d(able)e(to)h(compute)f(these) h(ordering)e(v)o(ery)g(f)o(ast.)26 b(Matrices)20 b(with)g(o)o(v)o(er)e (tw)o(o)i(hundred)e(thousand)g(ro)n(ws)i(can)g(be)208 5400 y(reordered)d(in)k(just)f(a)h(fe)n(w)f(seconds)g(on)g(current)e (generation)h(w)o(orkstations)g(and)g(PCs.)1929 5649 y(4)p eop %%Page: 5 5 5 4 bop 690 3717 a @beginspecial 0 @llx 0 @lly 716 @urx 1056 @ury 3024 @rwi @setspecial %%BeginDocument: ./figures/slides.eps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -30.0 1113.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n -1000 19537 m -1000 -1000 l 13423 -1000 l 13423 19537 l cp clip 0.06000 0.06000 sc % Polyline % % Begin Imported EPS File: slide1.eps % n gs 525 973 tr 16.646067 -16.638623 sc 0 -523 tr -40 -50 tr sa n 40 50 m 752 50 l 752 573 l 40 573 l cp clip countdictstack mark /showpage {} def % EPS file follows: /defineresource where{pop}{userdict begin/defineresource{userdict/Resources 2 copy known{get begin}{15 dict dup begin put}ifelse exch readonly exch currentdict 1 index known not{dup 30 dict def}if load 3 -1 roll 2 index put end}bind readonly def/findresource{userdict/Resources get exch get exch get} bind readonly def/resourceforall{pop pop pop pop}bind readonly def /resourcestatus{userdict/Resources 2 copy known{get exch 2 copy known{get exch known{0 -1 true}{pop pop false}ifelse}{pop pop pop false}ifelse}{pop pop false }ifelse}bind readonly def end}ifelse /Pscript_Win_Driver 200 dict dup begin /FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def /VM? {vmstatus exch sub exch pop gt { [ (This job requires more memory than is available in this printer.) 100 500 (Try one or more of the following, and then print again:) 100 485 (In the PostScript dialog box, click Optimize For Portability.) 115 470 (In the Device Options dialog box, make sure the Available Printer Memory is accurate.) 115 455 (Reduce the number of fonts in the document.) 115 440 (Print the document in parts.) 115 425 12 /Times-Roman showpage (%%[ PrinterError: Low Printer VM ]%%) = true FatalErrorIf}if} bind def /|/def load def/,/load load |/~/exch , |/?/ifelse , |/!/pop , |/`/begin , |/^ /index , |/@/dup , |/+/translate , |/$/roll , |/U/userdict , |/M/moveto , |/- /rlineto , |/&/currentdict , |/:/gsave , |/;/grestore , |/F/false , |/T/true , |/N/newpath , |/E/end , |/Ac/arc , |/An/arcn , |/A/ashow , |/D/awidthshow , | /C/closepath , |/V/div , |/O/eofill , |/L/fill , |/I/lineto , |/-C/rcurveto , |/-M/rmoveto , |/+S/scale , |/Ji/setfont , |/Lc/setlinecap , |/Lj/setlinejoin , |/Lw/setlinewidth , |/S/show , |/LH/showpage , |/K/stroke , |/W/widthshow , |/R/rotate , |/b{bind |}bind |/bd{bind |}bind |/xd{~ |}bd/ld{, |}bd/lw/Lw ld /lc/Lc ld/lj/Lj ld/sg/setgray ld/L2? F/languagelevel where{! languagelevel 2 ge{! T}if}if |/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b /DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El ! }b/self & |/reinitialize{[/TextInit/GraphInit/UtilsInit counttomark{@ where{ self eq}{F}?{cvx exec}{!}?}repeat cleartomark}b/initialize{`{/ADO_mxRot ~ | /TextInitialised? F | reinitialize E}{U/Pscript_Win_Data 200 dict @ ` put /ADO_mxRot ~ |/TextInitialised? F | reinitialize}?}b/terminate{!{& self eq{ exit}{E}?}loop E}b/suspend/terminate , |/resume{` Pscript_Win_Data `}b/snap{ transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ itransform}b /dsnap{dtransform round ~ round ~ idtransform}b<04>cvn{}|/setjn{{statusdict /jobname known{statusdict/jobname 3 -1 $ put}if}stopped cleartomark}b/solid{[] 0 setdash}b/setdsh{0 setdash}b/colspRefresh{}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rr{1 ^ 0 - 0 ~ - neg 0 - C}b L2? not g{/rf{N rp L}b/fx{1 1 dtransform @ 0 ge{1 sub 1}{1 add -0.25}? 3 -1 $ @ 0 ge{1 sub 1}{1 add -0.25}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{ 4 -2 $ snap + +S fx rf}b/rs{N rp C K}b/rc{N rp clip N}b/sg{setgray}b/sco{ setrgbcolor}b/sgco{{sg}{sco}?}b}e L2? g{/colspA/DeviceGray |/colspABC/DeviceRGB |/setAorABC{{colspA}{colspABC}? setcolorspace}b/rf/rectfill , |/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5 }? 3 -1 $ @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ snap + +S fx rf}b/rs/rectstroke , |/rc/rectclip , |/sg {@ @ setcolor}b/sco{setcolor}b/colspRefresh{colspABC setcolorspace}b/sgco{{sg }{sco}?}b/UtilsInit{F setglobal}b/definecolorrendering{/ColorRendering defineresource !}b/findcolorrendering{@/ColorRendering resourcestatus{! ! /ColorRendering findresource T}{! F}?}b/selectcolorrendering{@/ColorRendering resourcestatus{! !/ColorRendering}{!/DefaultColorRendering/ColorRendering}? findresource setcolorrendering}b}e /bullets{{/bullet}repeat}b/ANSIEncoding[/grave/acute/circumflex/tilde/macron /breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload ! 3 bullets/quotesinglbase /florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE 4 bullets/quoteleft/quoteright/quotedblleft/quotedblright /bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 2 bullets /Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]| ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy | ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176/ring put /TextInit{TextInitialised? not{/Pscript_Windows_Font & |/TextInitialised? T | /fM[1 0 0 -1 0 0]|/mFM matrix |/iMat[1 0 0.212557 neg 1 0 0]|}if}b/xUP null | /yUP null |/uW null |/xSP null |/ySP null |/sW null |/copyfont{1 ^ length add dict `{1 ^/FID ne{|}{! !}?}forall & E}b/rF{3 copyfont @ `/Encoding ANSIEncoding &/CharStrings known{CharStrings/Eth known not{! ANSIEncodingOld} if}if | E}b/mF{findfont ~{@/Encoding get @ StandardEncoding eq{! T}{{ ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{rF}{3 copyfont}? ` /OrigFontType ~ |/OrigFontName ~ | & E 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/xF{scalefont Pscript_Windows_Font 3 1 $ put}b/xMF{mFM astore makefont Pscript_Windows_Font 3 1 $ put}b/xF2/scalefont , |/xMF2{mFM astore makefont}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/sSU{N/uW ~ |/yUP ~ |/xUP ~ |}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ |/ySP ~ |/xSP ~ |}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b /sRxy{: matrix astore concat 0 0 M}b/eR/; , | /mBF{@ 4 copyfont `/FontName ~ |/OrigFontType ~ |/OrigFontName ~ | 0 FontMatrix idtransform ! &/PaintType known{PaintType 0 eq{/PaintType 2 | /StrokeWidth ~ |}{PaintType 1 eq PaintType 2 eq or PaintType 3 eq or & /StrokeWidth known and{StrokeWidth add/StrokeWidth ~ |}{!}?}?}{!}? @ & E definefont Pscript_Windows_Font 3 1 $ put}b/xBF{Pscript_Windows_Font ` 1 ^ /FontName get 1 ^ scalefont 3 1 $ scalefont 2 copy ~ | ~ ! | E}b/xMBF{mFM astore Pscript_Windows_Font ` 1 ^/FontName get 1 ^ makefont 3 1 $ makefont 2 copy ~ | ~ ! | E}b/xBF2{/sB0 ~ mBF/sB1 sB0 3 -1 $ xBF sB1}b/xMBF2{/sB0 ~ mBF mFM astore/sB1 sB0 3 -1 $ xMBF sB1}b/sB{: Pscript_Windows_Font currentfont get Ji @ S ; S}b/asB{: Pscript_Windows_Font currentfont get Ji 3 copy A ; A}b/wsB{ : Pscript_Windows_Font currentfont get Ji 4 copy W ; W}b/awsB{: Pscript_Windows_Font currentfont get Ji 6 copy D ; D}b/sBT3{: @ S ; 1 1 -M S}b /asBT3{: 3 copy A ; 1 1 -M A}b/wsBT3{: 4 copy W ; 1 1 -M W}b/awsBT3{: 6 copy D ; 1 1 -M D}b/mIF{iMat 4 3 -1 $ put 2 copyfont `/OrigFontType ~ |/OrigFontName ~ | @ & E definefont iMat makefont Pscript_Windows_Font 3 1 $ put}b /SavedCTM null |/CTMsave{/SavedCTM SavedCTM currentmatrix |}b/CTMrestore{ SavedCTM setmatrix}b/mp null |/ADO_mxRot null |/GDIHMatrix null | /GDIHPatternDict 22 dict | GDIHPatternDict `/PatternType 1 |/PaintType 2 | /Reps L2?{1}{5}? |/XStep 8 Reps mul |/YStep XStep |/BBox[0 0 XStep YStep]| /TilingType 1 |/PaintProc{` 1 Lw[]0 setdash PaintData , exec E}b/FGnd null | /BGnd null |/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b /HS_BDiagonal{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? |/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag {Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E /makehatch{GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{ /h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5/HS_DiagCross makehatch}b/GDIBWPatternDict 17 dict @ `/PatternType 1 |/PaintType L2?{1}{2}? |/RepsV L2?{1}{6}? |/RepsH L2?{1}{5}? |/BBox[0 0 RepsH 1]|/TilingType 1 | /XStep 1 |/YStep 1 |/Height 8 RepsV mul |/Width 8 |/mx[Width 0 0 Height neg 0 Height]|/FGnd null |/BGnd null |/SetBGndFGnd L2?{{BGnd null ne{BGnd aload ! sgco BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! sgco}if} }{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E |/GDIBWPatternMx null |/pfprep{save 4 1 $ /PatternOfTheDay 4 1 $ GDIBWPatternDict `/PaintData ~ |/BGnd ~ |/FGnd ~ | E CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict matrix mp CTMrestore ~ !}b /hrf null |/prf{pfprep ~ 6 1 $ 5 hrf restore}b/GraphInit{GDIHMatrix null eq{ /SavedCTM matrix | : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly | ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix currentmatrix readonly | ; ;}if}b/cirp{360 0 An C}b/ellp{CTMsave + +S 0.5 0 M 0 0 0.5 360 0 An C CTMrestore}b/rrp{/rad ~ |/y2 ~ |/x2 ~ |/y1 ~ |/x1 ~ | x2 x1 add 2 V y1 M x1 y1 x1 y2 rad arct x1 y2 x2 y2 rad arct x2 y2 x2 y1 rad arct x2 y1 x1 y1 rad arct C}b/RRp{CTMsave + +S/dyS ~ |/dxS ~ | dxS 2 V 0 M 0 0 0 dyS 0.5 arct 0 dyS dxS dyS 0.5 arct dxS dyS dxS 0 0.5 arct dxS 0 0 0 0.5 arct C CTMrestore}b L2? not g{/arct{arcto ! ! ! !}b/GDIpattfill{@ ` BGnd null ne PaintType 2 eq and{: BGnd aload ! sgco fEOFill{O}{L}? ; FGnd aload ! U/fGray 2 ^ put{2}{4}? -1 $}if E @ patterncalc : 4 ^/PaintType get 2 eq{fGray{6 -1 $ sg}{8 -3 $ sco}? }if fEOFill{eoclip}{clip}? N patternfill ; N}b/hrf{/fGray 1 ^ 6 eq | -4 $ N rp C/fEOFill F | GDIpattfill}b/hfMain{/fEOFill ~ |/fGray ~ | GDIpattfill}b/hf{T hfMain}b/hfW{F hfMain}b/hs{currentpoint strokepath M hfW}b/pfMain{/fEOFill ~ | pfprep GDIpattfill restore N}b/pf{T pfMain}b/pfW{F pfMain}b/ps{currentpoint strokepath M pfW}b/mpstr 1 string |/mp{~ @ length 12 add dict copy ` /PatternCTM matrix currentmatrix |/PatternMatrix ~ |/PatWidth XStep mpstr length mul |/PatHeight YStep |/FontType 3 |/Encoding 256 array | 3 string 0 1 255{Encoding ~ @ 3 ^ cvs cvn put}for !/FontMatrix matrix |/FontBBox BBox | /BuildChar{! @ ` XStep 0 FontBBox aload ! setcachedevice/PaintProc , E : exec ;}b & E ~ @ 3 -1 $ definefont}b/patterncalc{` : PatternCTM setmatrix PatternMatrix concat BBox aload ! ! ! + pathbbox ; PatHeight V ceiling 4 1 $ PatWidth V ceiling 4 1 $ PatHeight V floor 4 1 $ PatWidth V floor 4 1 $ 2 ^ sub cvi abs ~ 3 ^ sub cvi abs ~ 4 2 $ PatHeight mul ~ PatWidth mul ~ E}b /patternfill{5 -1 $ @ ` Ji PatternCTM setmatrix PatternMatrix concat 0 2 ^ 2 ^ M 0 1 mpstr length 1 sub{1 ^ mpstr 3 1 $ put}for ! 2 ^{currentpoint 5 ^{mpstr S}repeat YStep add M}repeat ! ! ! ! E}b}e L2? g{/mp/makepattern , |/hrf{6 eq setAorABC setpattern rectfill}b/hf{ setAorABC setpattern O}b/hfW{setAorABC setpattern L}b/hs{setAorABC setpattern K}b/pf{pfprep setpattern O restore N}b/pfW{pfprep setpattern L restore N}b/ps{ pfprep setpattern K restore N}b}e /iw 0 |/ih 0 |/im_save 0 |/s 0 |/polarity 0 |/smoothflag 0 |/mystring 0 |/bpc 0 |/setup1asciiproc{[currentfile mystring/readhexstring cvx/! cvx]cvx bind}b /setup1binaryproc{[currentfile mystring/readstring cvx/! cvx]cvx bind}b /setup2asciiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}b /setup2binaryproc{currentfile/RunLengthDecode filter}b/mycolorspace{colspABC}| /myimagedict{/myimagedict 10 dict | myimagedict @ `/ImageType 1 | /MultipleDataSource F | E}b/imageprocarray[/setup1binaryproc/setup1asciiproc /setup2binaryproc/setup2asciiproc/setup1binarydecodeproc/setup1asciidecodeproc ]|/L2Polarity{{[1 0]}{[0 1]}?}b/Q{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/X{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/Z{im_save restore}b/Y{sgco myimagedict @ ` /Width iw |/Height ih |/Decode polarity |/ImageMatrix[iw 0 0 ih 0 0]| /DataSource s |/BitsPerComponent 1 |/Interpolate smoothflag | E imagemask}b L2? not g{/setup2asciiproc{[/Level2ImagesError , aload ! T FatalErrorIf}b /setup2binaryproc/setup2asciiproc , |/L2Polarity{}|/Y{sgco iw ih polarity[iw 0 0 ih 0 0]s imagemask}b}e L2? not g{/testsystemdict{where{systemdict eq{T}{F}?}{F}?}b/c 1 |/colorimage where{! T}{F}?{/c 0 statusdict `/processcolors where{! ! processcolors}{ /deviceinfo where{! deviceinfo/Colors known{!{deviceinfo/Colors get}}if}if}? E | c 0 ne{/colorimage testsystemdict/setcolortransfer testsystemdict /currentcolortransfer testsystemdict/currentcmykcolor testsystemdict and and and not{/c 0 |}if}if}if c @ 1 ne ~ @ 3 ne ~ 4 ne and and{/c 0 |}if c 1 eq g{ /expandbw{expandfactor mul round cvi bwclut ~ get 255 V}b/doclutimage{!/bwclut ~ | bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/expandfactor ~ |[/expandbw ,/exec , @ currenttransfer ~]cvx bind settransfer iw ih bpc[iw 0 0 ih 0 0]s image}b}e c @ 3 eq ~ 4 eq or g{/nullproc{{}}|/concatutil{/exec , 7 -1 $/exec ,}b/defsubclut{ 1 add getinterval |}b/spconcattransfer{/Dclut ~ |/Cclut ~ |/Bclut ~ |/Aclut ~ |/ncompute ~ , | currentcolortransfer[{Aclut ncompute}concatutil]cvx[{Bclut ncompute}concatutil]cvx[{Cclut ncompute}concatutil]cvx[{Dclut ncompute} concatutil]cvx setcolortransfer}b/setuprgbcluts{/bit3x rgbclut length 3 sub | /bit1x bit3x 3 idiv |/rclut rgbclut |/gclut rclut 1 bit3x defsubclut/bclut rclut 2 bit3x defsubclut}b}e c 3 eq g{/3compute{~ bit3x mul round cvi get 255 V}b/doclutimage{/rgbclut ~ | ! setuprgbcluts/3compute rclut gclut bclut @ spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @]cvx nullproc nullproc T 3 colorimage}b}e c 4 eq g{/ftoint{1 ~ sub 255 mul round cvi}b/stuffclut{ cmykindex 3 -1 $ put}b/4compute{~ bit4x mul round cvi get 255 V}b /invalidcolortable? T |/computecmykclut{setuprgbcluts/bit4x rgbclut length 3 idiv 4 mul 4 sub |/cmykclut bit4x 4 add string |/cclut cmykclut |/mclut cclut 1 bit4x defsubclut/yclut cclut 2 bit4x defsubclut/kclut cclut 3 bit4x defsubclut/cmykindex 0 | 0 1 bit1x{@/cmykindex ~ bit1x ~ sub 4 mul | 3 mul @ rclut ~ get 255 V ~ @ gclut ~ get 255 V ~ bclut ~ get 255 V setrgbcolor currentcmykcolor ftoint kclut stuffclut ftoint yclut stuffclut ftoint mclut stuffclut ftoint cclut stuffclut}for}b/doclutimage{/rgbclut ~ | ! invalidcolortable?{computecmykclut}if/4compute cclut mclut yclut kclut spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @ @]cvx nullproc nullproc nullproc T 4 colorimage}b}e c 0 eq g{/a{3 mul 3 getinterval putinterval ~ 3 add ~ 3 copy}b/8lookup/a , |/4lookup{/byte 1 ^ | -4 bitshift a byte 15 and a}b/2lookup{/byte 1 ^ | -6 bitshift a byte -4 bitshift 3 and a byte -2 bitshift 3 and a byte 3 and a}b/colorexpand{mystringexp 0 rgbclut 3 copy 7 -1 $/mylookup , forall ! ! ! ! !}b/createexpandstr{/mystringexp ~ mystring length mul string |}b/doclutimage{/rgbclut ~ | !/mylookup bpc 8 eq{3 createexpandstr/8lookup}{bpc 4 eq{6 createexpandstr/4lookup}{12 createexpandstr/2lookup}?}? , | iw ih bpc[iw 0 0 ih 0 0][s/exec ,/colorexpand ,/exec ,]cvx F 3 colorimage}b}e/colorimage where{! T}{F}? g{/do24image{iw ih 8 [iw 0 0 ih 0 0]s F 3 colorimage}b}DefIf_El{/rgbtogray{/str ~ |/len str length |/smlen len 3 idiv |/rstr str |/gstr str 1 len 1 sub getinterval |/bstr str 2 len 2 sub getinterval | str @ 0 1 smlen 1 sub{@ 3 mul rstr 1 ^ get 0.3 mul gstr 2 ^ get 0.59 mul add bstr 3 -1 $ get 0.11 mul add round cvi put @}for ! 0 smlen getinterval}b/do24image{iw ih 8[iw 0 0 ih 0 0][s/exec ,/rgbtogray ,/exec ,]cvx bind image}b}e/doNimage{bpc 24 eq{do24image}{iw ih bpc[iw 0 0 ih 0 0]s image}?}b}e L2? g{/doclutimage{/rgbclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[ /Indexed colspABC hival rgbclut]setcolorspace myimagedict @ `/Width iw | /Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s | /BitsPerComponent bpc |/Interpolate smoothflag | E image}b/doCMYKclutimage{ /CMYKclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[/Indexed/DeviceCMYK hival CMYKclut]setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc | /Interpolate smoothflag | E image}b/doNimage{bpc 24 eq{colspABC}{colspA}? setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode bpc 24 eq{[0 1 0 1 0 1]}{[0 1]}? |/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc 24 eq{8}{bpc}? |/Interpolate smoothflag | E image}b/doCMYKimage{ /DeviceCMYK setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 1 0 1 0 1 0 1]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent 8 | /Interpolate smoothflag | E image}b}e /GreNewFont{10 dict @ 3 1 $ | @ ` 4 1 $/FontType 3 |/FontMatrix ~ |/FontBBox ~ |/Encoding 256 array | 0 1 255{Encoding ~/.notdef put}for/CharProcs 257 dict | CharProcs/.notdef{}put/Metrics 257 dict | Metrics/.notdef 3 -1 $ put/BuildChar {/char ~ |/fontdict ~ |/charname fontdict/Encoding get char get | fontdict /Metrics get charname get aload ! setcachedevice fontdict ` Encoding char get CharProcs ~ get E exec}| E definefont !}|/AddChar{` Encoding 3 1 $ put CharProcs 3 1 $ put Metrics 3 1 $ put E}| /FEbuf 2 string |/FEglyph 3 string |/FE{(G00)FEglyph copy ! 1 ~{@ 16 lt{ /offset 2 store}{/offset 1 store}? @ 16 FEbuf cvrs FEglyph ~ offset ~ putinterval 1 ^ ~ FEglyph cvn put}for}bind |/Type1Hdr{11 dict `/FontName ~ | /PaintType ~ |/FontType 1 |/FontMatrix[1 3 ^ V 0 0 1 6 ^ V 0 0]| !/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for 3 ^ 3 ^ FE | ! !/FontBBox{0 0 0 0}| & E currentfile eexec}bind | /pp 1 string |/ss 1 string |/rledecodebinary{/DC 0 |/BC 0 |{DC mystring length ge{exit}if currentfile ss readstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{ mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/rledecodeascii{/DC 0 | /BC 0 |{DC mystring length ge{exit}if currentfile ss readhexstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readhexstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readhexstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/setup1asciidecodeproc{[/rledecodeascii cvx]cvx bind}b /setup1binarydecodeproc{[/rledecodebinary cvx]cvx bind}b userdict/Pscript_Win_Compat 13 dict dup begin/bd{bind def}bind def/ld{load def }bd/CB{pop pop pop pop}bind def/B{pop pop pop pop}bind def/$x matrix def/SS{ /pagesave save def}bind def/RS{/pagesave where{pop pagesave restore}{$x matrix invertmatrix concat}ifelse}bind def/ANSIVec[0/grave 1/acute 2/circumflex 3 /tilde 4/macron 5/breve 6/dotaccent 7/dieresis 8/ring 9/cedilla 10 /hungarumlaut 11/ogonek 12/caron 13/dotlessi 39/quotesingle 96/grave 124/bar 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135 /daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150 /endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156 /oe 159/Ydieresis 160/space 161/exclamdown 164/currency 165/yen 166/brokenbar 167/section 168/dieresis 169/copyright 170/ordfeminine 171/guillemotleft 172 /logicalnot 173/hyphen 174/registered 175/macron 176/degree 177/plusminus 178 /twosuperior 179/threesuperior 180/acute 181/mu 182/paragraph 183 /periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 187 /guillemotright 188/onequarter 189/onehalf 190/threequarters 191/questiondown 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198 /AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204 /Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223 /germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229 /aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242 /ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248 /oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254 /thorn 255/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{ pop pop}ifelse}forall/initialize{currentdict exch begin begin}bind def /terminate{/@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def/resume/initialize load def/M/moveto load def end put/Courier findfont 10 scalefont setfont end /ProcSet defineresource pop Pscript_Win_Compat dup /initialize get exec [ 0 1.000 -1.000 0 0 0 ] false /Pscript_Win_Driver /ProcSet findresource dup /initialize get exec /mysetup [ 0.240 0 0 -0.240 7.920 592.800 ] | userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; 116 70 N M 1 1 rr 116 70 N M 3000 2250 rr : 1.000 1.000 1.000 sco O ; 116 70 N M 1 1 rr 116 70 N M 1 1 rr 134 87 N M 2960 2172 rr 11 Lw 0 Lc 0 Lj solid 0 0 0 sco K 455 462 N M 2600 1570 rr : 1.000 0.800 0.600 sco O ; 455 462 N M 2600 0 - 4 Lw 1 Lc 1 Lj solid 0 0 0 sco K 3055 462 N M 0 1570 - 0 0 0 sco K 3055 2032 N M -2600 0 - 0 0 0 sco K 455 2032 N M 0 -1570 - 0 0 0 sco K 455 1963 N M 40 54 rr : 1.000 1.000 0 sco O ; 0 Lc 0 Lj 0 0 0 sco K 455 1790 N M 54 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 1613 N M 105 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 1440 N M 115 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 1267 N M 202 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 1090 N M 296 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 917 N M 411 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 744 N M 461 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 567 N M 1229 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 455 1877 N M 65 57 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 1703 N M 97 54 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 1527 N M 151 57 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 1353 N M 155 58 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 1180 N M 393 54 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 1003 N M 440 58 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 830 N M 505 58 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 657 N M 808 54 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 480 N M 2351 58 rr : 0 0 1.000 sco O ; 0 0 0 sco K 455 462 N M 0 1570 - 1 Lc 1 Lj 0 0 0 sco K 433 2032 N M 22 0 - 0 0 0 sco K 433 1858 N M 22 0 - 0 0 0 sco K 433 1682 N M 22 0 - 0 0 0 sco K 433 1509 N M 22 0 - 0 0 0 sco K 433 1335 N M 22 0 - 0 0 0 sco K 433 1159 N M 22 0 - 0 0 0 sco K 433 985 N M 22 0 - 0 0 0 sco K 433 812 N M 22 0 - 0 0 0 sco K 433 635 N M 22 0 - 0 0 0 sco K 433 462 N M 22 0 - 0 0 0 sco K : 560 170 2116 150 rc 0.502 0 0 sco %%IncludeFont: Helvetica-Bold (F0) cvn 0.931 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F0_130) cvn F0 130 xF F0_130 Ji 581 170 M -3.290 0 (M)A -0.710 0 (E)A 3.570 0 (T)A -4.140 0 (I)A 0.290 0 (S)A 1.060 0 (')A 3.140 0 32 -3.280 0 (s )D 0.290 0 (P)A 2.720 0 (a)A 0.430 0 (r)A -0.290 0 (t)A -4.140 0 (i)A 0.710 0 (t)A -4.140 0 (i)A 0.570 0 (o)A -4.430 0 (n)A -3.140 0 (i)A -4.430 0 (n)A -0.710 0 32 0.570 0 (g )D -0.710 0 (P)A -0.280 0 (e)A 0.430 0 (r)A 3.710 0 (f)A -0.430 0 (o)A 0.430 0 (r)A 3.430 0 (m)A 2.720 0 (a)A -3.430 0 (n)A 0.140 0 32 -0.280 0 (ce )D ; : 498 1959 188 55 rc 0 0 0 sco (F0_47) cvn F0 47 xF F0_47 Ji 509 1959 M -1.132 0 (1)A 1.934 0 (.)A -1.132 0 (57)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 513 1786 187 55 rc 0 0 0 sco F0_47 Ji 523 1786 M -1.132 0 (2)A 1.934 0 (.)A -1.132 0 (10)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 563 1610 188 55 rc 0 0 0 sco F0_47 Ji 574 1610 M -1.132 0 (4)A 1.934 0 (.)A -1.132 0 (00)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 574 1436 187 55 rc 0 0 0 sco F0_47 Ji 585 1436 M -1.132 0 (4)A 1.934 0 (.)A -1.132 0 (42)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 660 1263 188 55 rc 0 0 0 sco F0_47 Ji 671 1263 M -1.132 0 (7)A 1.934 0 (.)A -1.132 0 (79)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 754 1086 213 55 rc 0 0 0 sco F0_47 Ji 765 1086 M -1.132 0 (11)A 1.934 0 (.)A -1.132 0 (32)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 870 913 212 55 rc 0 0 0 sco F0_47 Ji 880 913 M -1.132 0 (15)A 1.934 0 (.)A -1.132 0 (76)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 920 740 213 55 rc 0 0 0 sco F0_47 Ji 931 740 M -1.132 0 (17)A 1.934 0 (.)A -1.132 0 (81)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 1688 563 213 55 rc 0 0 0 sco F0_47 Ji 1699 563 M -1.132 0 (47)A 1.934 0 (.)A -1.132 0 (34)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 523 1873 188 55 rc 0 0 0 sco F0_47 Ji 534 1873 M -1.132 0 (2)A 1.934 0 (.)A -1.132 0 (55)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 556 1700 187 55 rc 0 0 0 sco F0_47 Ji 567 1700 M -1.132 0 (3)A 1.934 0 (.)A -1.132 0 (79)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 610 1527 187 55 rc 0 0 0 sco F0_47 Ji 621 1527 M -1.132 0 (5)A 1.934 0 (.)A -1.132 0 (87)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 614 1353 187 55 rc 0 0 0 sco F0_47 Ji 624 1353 M -1.132 0 (5)A 1.934 0 (.)A -1.132 0 (96)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 852 1177 212 55 rc 0 0 0 sco F0_47 Ji 862 1177 M -1.132 0 (15)A 1.934 0 (.)A -1.132 0 (12)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 898 1000 213 55 rc 0 0 0 sco F0_47 Ji 909 1000 M -1.132 0 (16)A 1.934 0 (.)A -1.132 0 (95)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 963 827 213 55 rc 0 0 0 sco F0_47 Ji 974 827 M -1.132 0 (19)A 1.934 0 (.)A -1.132 0 (40)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 1266 653 213 55 rc 0 0 0 sco F0_47 Ji 1277 653 M -1.132 0 (31)A 1.934 0 (.)A -1.132 0 (11)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 2809 480 213 55 rc 0 0 0 sco F0_47 Ji 2820 480 M -1.132 0 (90)A 1.934 0 (.)A -1.132 0 (45)A -4.132 0 (s)A 2.868 0 (e)A -1.132 0 (c)A ; : 116 1905 3000 77 rc 0 0 0 sco %%IncludeFont: Helvetica (F3) cvn 0.899 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F3_69) cvn F3 69 xF F3_69 Ji 188 1905 M 0.977 0 (B)A -0.977 0 (r)A -2.364 0 (a)A 1.500 0 (c)A -2.500 0 (k)A 1.636 0 (2)A ; : 116 1729 3000 77 rc 0 0 0 sco F3_69 Ji 199 1729 M 0.318 0 (O)A 1.500 0 (c)A 1.636 0 (e)A -2.364 0 (an)A ; : 159 1555 2957 77 rc 0 0 0 sco F3_69 Ji 282 1555 M 1.636 0 (1)A 0.636 0 (4)A 1.636 0 (4)A ; : 116 1382 3000 77 rc 0 0 0 sco F3_69 Ji 181 1382 M -3.477 0 (M)A 1.636 0 (d)A -2.364 0 (ua)A -1.318 0 (l)A 1.636 0 (1)A ; : 144 1205 2972 77 rc 0 0 0 sco F3_69 Ji 267 1205 M 0.841 0 (T)A -0.977 0 (r)A 1.636 0 (o)A -1.318 0 (ll)A ; : 137 1032 2979 77 rc 0 0 0 sco F3_69 Ji 260 1032 M 0.977 0 (A)A -2.364 0 (u)A -1.182 0 (t)A 1.636 0 (o)A ; : 116 859 3000 77 rc 0 0 0 sco F3_69 Ji 181 859 M -3.477 0 (M)A 1.636 0 (d)A -2.364 0 (ua)A -1.318 0 (l)A 1.636 0 (2)A ; : 177 682 2939 77 rc 0 0 0 sco F3_69 Ji 300 682 M 0.977 0 (B)A -1.318 0 (i)A 1.636 0 (g)A ; : 116 509 3000 77 rc 0 0 0 sco F3_69 Ji 181 509 M -3.477 0 (M)A 1.636 0 (d)A -2.364 0 (ua)A -1.318 0 (l)A 1.636 0 (3)A ; 729 2075 N M 2044 133 rr : 1.000 1.000 1.000 sco O ; 0 Lc 0 Lj 0 0 0 sco K 758 2118 N M 54 54 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K : 729 2097 2048 100 rc 0 0 0 sco (F0_87) cvn F0 87 xF F0_87 Ji 837 2097 M 3.529 0 (M)A 0.814 0 (I)A -0.029 0 (P)A 2.843 0 32 -1.029 0 (S )D -1.814 0 (R)A -1.372 0 (100)A -2.372 0 (0)A -1.372 0 (0)A -1.825 0 (@)A -1.372 0 (200)A 3.529 0 (M)A -1.814 0 (H)A -0.500 0 (z)A ; 1818 2118 N M 54 54 rr : 0 0 1.000 sco O ; 0 0 0 sco K : 1789 2097 988 100 rc 0 0 0 sco F0_87 Ji 1897 2097 M 0.814 0 (I)A 0.843 0 (n)A 0.029 0 (t)A -1.372 0 (e)A 1.000 0 32 0.814 0 (l )D -1.029 0 (P)A -0.029 0 (P)A -1.814 0 (R)A -2.686 0 (O)A -1.825 0 (@)A -1.372 0 (200)A 2.529 0 (M)A -0.814 0 (H)A -0.500 0 (z)A ; 1721 889 N M 350 42 rr : 0.502 0 0 sco O ; 1721 931 N M 350 69 rr : 0.502 0 0 sco O ; 1721 1000 N M 350 43 rr : 0.502 0 0 sco O ; 2071 889 N M 430 77 rr : 0.502 0 0 sco O ; : 1697 889 1319 1131 rc 1.000 1.000 1.000 sco %%IncludeFont: Helvetica-BoldOblique (F6) cvn 0.909 (Helvetica-BoldOblique) cvn /Type1 T (Helvetica-BoldOblique) cvn mF (F6_66) cvn F6 66 xF F6_66 Ji 2121 891 M 0.348 0 (N)A -0.326 0 (u)A -0.674 0 (m)A 0.674 0 (b)A -0.696 0 (e)A -0.674 0 32 0.326 0 (r )D -0.326 0 (o)A 0.022 0 (f)A ; 2071 966 N M 430 77 rr : 0.502 0 0 sco O ; : 1697 889 1319 1131 rc 1.000 1.000 1.000 sco F6_66 Ji 2159 967 M -0.022 0 (V)A -0.696 0 (e)A -0.674 0 (r)A 0.022 0 (t)A 0.652 0 (i)A 0.304 0 (c)A -0.696 0 (e)A 0.304 0 (s)A ; 2501 889 N M 431 77 rr : 0.502 0 0 sco O ; : 1697 889 1319 1131 rc 1.000 1.000 1.000 sco F6_66 Ji 2551 891 M 0.348 0 (N)A -0.326 0 (u)A -0.674 0 (m)A 0.674 0 (b)A -0.696 0 (e)A -0.674 0 32 0.326 0 (r )D -0.326 0 (o)A 0.022 0 (f)A ; 2501 966 N M 431 77 rr : 0.502 0 0 sco O ; : 1697 889 1319 1131 rc 1.000 1.000 1.000 sco F6_66 Ji 2618 967 M -0.022 0 (E)A -0.326 0 (dg)A 0.304 0 (e)A -0.696 0 (s)A ; 1721 1047 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 1721 1063 N M 350 68 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco (F0_60) cvn F0 60 xF F0_60 Ji 1738 1061 M 0.020 0 (M)A -0.660 0 (d)A 0.340 0 (u)A -0.360 0 (a)A -0.680 0 (l)A -0.360 0 (3)A ; 1721 1131 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1047 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2071 1063 N M 430 68 rr : 1.000 1.000 0.800 sco O ; : 2071 1043 430 88 rc 0.004 0 0 sco (F3_60) cvn F3 60 xF F3_60 Ji 2219 1065 M -0.360 0 (4)A 0.320 0 (,)A -0.360 0 (039)A -0.680 0 (,)A 0.640 0 (1)A -0.360 0 (60)A ; 2071 1131 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1047 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 2501 1063 N M 431 68 rr : 1.000 1.000 0.800 sco O ; : 2501 1043 431 88 rc 0.004 0 0 sco F3_60 Ji 2649 1065 M -0.360 0 (8)A 0.320 0 (,)A -0.360 0 (016)A -0.680 0 (,)A 0.640 0 (8)A -0.360 0 (48)A ; 2501 1131 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1043 N M 350 4 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 1721 1043 N M 350 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2071 1043 N M 4 4 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2071 1043 N M 4 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1697 889 1319 1131 rc 2071 1043 N M 0 4 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2075 1043 N M 426 4 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2075 1043 N M 426 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2501 1043 N M 5 4 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2501 1043 N M 5 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1697 889 1319 1131 rc 2501 1043 N M 0 4 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2506 1043 N M 426 4 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2506 1043 N M 426 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 1721 1147 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 1721 1163 N M 350 68 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1161 M -0.320 0 (B)A -0.680 0 (i)A 0.340 0 (g)A ; 1721 1231 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1147 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2071 1163 N M 430 68 rr : 1.000 1.000 0.800 sco O ; : 2071 1147 430 84 rc 0.004 0 0 sco F3_60 Ji 2269 1165 M -0.360 0 (2)A 0.640 0 (9)A -0.360 0 (5)A -0.680 0 (,)A -0.360 0 (433)A ; 2071 1231 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1147 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 2501 1163 N M 431 68 rr : 1.000 1.000 0.800 sco O ; : 2501 1147 431 84 rc 0.004 0 0 sco F3_60 Ji 2649 1165 M -0.360 0 (7)A 0.320 0 (,)A -0.360 0 (953)A -0.680 0 (,)A 0.640 0 (4)A -0.360 0 (53)A ; 2501 1231 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1247 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 1721 1263 N M 350 68 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1261 M 0.020 0 (M)A -0.660 0 (d)A 0.340 0 (u)A -0.360 0 (a)A -0.680 0 (l)A -0.360 0 (2)A ; 1721 1331 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1247 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2071 1263 N M 430 68 rr : 1.000 1.000 0.800 sco O ; : 2071 1247 430 84 rc 0.004 0 0 sco F3_60 Ji 2219 1265 M -0.360 0 (1)A 0.320 0 (,)A -0.360 0 (017)A -0.680 0 (,)A 0.640 0 (2)A -0.360 0 (53)A ; 2071 1331 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1247 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 2501 1263 N M 431 68 rr : 1.000 1.000 0.800 sco O ; : 2501 1247 431 84 rc 0.004 0 0 sco F3_60 Ji 2649 1265 M -0.360 0 (2)A 0.320 0 (,)A -0.360 0 (015)A -0.680 0 (,)A 0.640 0 (7)A -0.360 0 (14)A ; 2501 1331 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1347 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 1721 1363 N M 350 68 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1361 M -1.320 0 (A)A -0.660 0 (u)A 0.020 0 (t)A 0.340 0 (o)A ; 1721 1431 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1347 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2071 1363 N M 430 68 rr : 1.000 1.000 0.800 sco O ; : 2071 1347 430 84 rc 0.004 0 0 sco F3_60 Ji 2269 1365 M -0.360 0 (4)A 0.640 0 (4)A -0.360 0 (8)A -0.680 0 (,)A -0.360 0 (695)A ; 2071 1431 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1347 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 2501 1363 N M 431 68 rr : 1.000 1.000 0.800 sco O ; : 2501 1347 431 84 rc 0.004 0 0 sco F3_60 Ji 2649 1365 M -0.360 0 (3)A 0.320 0 (,)A -0.360 0 (314)A -0.680 0 (,)A 0.640 0 (6)A -0.360 0 (11)A ; 2501 1431 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1447 N M 350 15 rr : 1.000 1.000 0.800 sco O ; 1721 1462 N M 350 69 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1461 M -0.660 0 (T)A -0.340 0 (r)A 0.340 0 (o)A -0.680 0 (l)A 0.320 0 (l)A ; 1721 1531 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1447 N M 430 15 rr : 1.000 1.000 0.800 sco O ; 2071 1462 N M 430 69 rr : 1.000 1.000 0.800 sco O ; : 2071 1447 430 84 rc 0.004 0 0 sco F3_60 Ji 2269 1465 M -0.360 0 (2)A 0.640 0 (1)A -0.360 0 (3)A -0.680 0 (,)A -0.360 0 (453)A ; 2071 1531 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1447 N M 431 15 rr : 1.000 1.000 0.800 sco O ; 2501 1462 N M 431 69 rr : 1.000 1.000 0.800 sco O ; : 2501 1447 431 84 rc 0.004 0 0 sco F3_60 Ji 2649 1465 M -0.360 0 (5)A 0.320 0 (,)A -0.360 0 (885)A -0.680 0 (,)A 0.640 0 (8)A -0.360 0 (29)A ; 2501 1531 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1547 N M 350 15 rr : 1.000 1.000 0.800 sco O ; 1721 1562 N M 350 69 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1561 M 0.020 0 (M)A -0.660 0 (d)A 0.340 0 (u)A -0.360 0 (a)A -0.680 0 (l)A -0.360 0 (1)A ; 1721 1631 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1547 N M 430 15 rr : 1.000 1.000 0.800 sco O ; 2071 1562 N M 430 69 rr : 1.000 1.000 0.800 sco O ; : 2071 1547 430 84 rc 0.004 0 0 sco F3_60 Ji 2269 1565 M -0.360 0 (2)A 0.640 0 (5)A -0.360 0 (7)A -0.680 0 (,)A -0.360 0 (000)A ; 2071 1631 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1547 N M 431 15 rr : 1.000 1.000 0.800 sco O ; 2501 1562 N M 431 69 rr : 1.000 1.000 0.800 sco O ; : 2501 1547 431 84 rc 0.004 0 0 sco F3_60 Ji 2699 1565 M -0.360 0 (5)A 0.640 0 (0)A -0.360 0 (5)A -0.680 0 (,)A -0.360 0 (048)A ; 2501 1631 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1647 N M 350 15 rr : 1.000 1.000 0.800 sco O ; 1721 1662 N M 350 69 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1661 M -0.360 0 (1)A 0.640 0 (4)A -0.360 0 (4)A ; 1721 1731 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1647 N M 430 15 rr : 1.000 1.000 0.800 sco O ; 2071 1662 N M 430 69 rr : 1.000 1.000 0.800 sco O ; : 2071 1647 430 84 rc 0.004 0 0 sco F3_60 Ji 2269 1665 M -0.360 0 (1)A 0.640 0 (4)A -0.360 0 (4)A -0.680 0 (,)A -0.360 0 (649)A ; 2071 1731 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1647 N M 431 15 rr : 1.000 1.000 0.800 sco O ; 2501 1662 N M 431 69 rr : 1.000 1.000 0.800 sco O ; : 2501 1647 431 84 rc 0.004 0 0 sco F3_60 Ji 2649 1665 M -0.360 0 (1)A 0.320 0 (,)A -0.360 0 (074)A -0.680 0 (,)A 0.640 0 (3)A -0.360 0 (93)A ; 2501 1731 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1747 N M 350 15 rr : 1.000 1.000 0.800 sco O ; 1721 1762 N M 350 69 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1761 M -0.680 0 (O)A -0.360 0 (ce)A 0.640 0 (a)A -0.660 0 (n)A ; 1721 1831 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1747 N M 430 15 rr : 1.000 1.000 0.800 sco O ; 2071 1762 N M 430 69 rr : 1.000 1.000 0.800 sco O ; : 2071 1747 430 84 rc 0.004 0 0 sco F3_60 Ji 2269 1765 M -0.360 0 (1)A 0.640 0 (4)A -0.360 0 (3)A -0.680 0 (,)A -0.360 0 (437)A ; 2071 1831 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1747 N M 431 15 rr : 1.000 1.000 0.800 sco O ; 2501 1762 N M 431 69 rr : 1.000 1.000 0.800 sco O ; : 2501 1747 431 84 rc 0.004 0 0 sco F3_60 Ji 2699 1765 M -0.360 0 (4)A 0.640 0 (0)A -0.360 0 (9)A -0.680 0 (,)A -0.360 0 (593)A ; 2501 1831 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1847 N M 350 15 rr : 1.000 1.000 0.800 sco O ; 1721 1862 N M 350 69 rr : 1.000 1.000 0.800 sco O ; : 1697 889 1319 1131 rc 0.004 0 0 sco F0_60 Ji 1738 1861 M -0.320 0 (B)A -0.340 0 (r)A -0.360 0 (ack)A 0.640 0 (2)A ; 1721 1931 N M 350 16 rr : 1.000 1.000 0.800 sco O ; 2071 1847 N M 430 15 rr : 1.000 1.000 0.800 sco O ; 2071 1862 N M 430 69 rr : 1.000 1.000 0.800 sco O ; : 2071 1847 430 84 rc 0.004 0 0 sco F3_60 Ji 2302 1865 M -0.360 0 (6)A 0.640 0 (2)A -0.680 0 (,)A -0.360 0 (631)A ; 2071 1931 N M 430 16 rr : 1.000 1.000 0.800 sco O ; 2501 1847 N M 431 15 rr : 1.000 1.000 0.800 sco O ; 2501 1862 N M 431 69 rr : 1.000 1.000 0.800 sco O ; : 2501 1847 431 84 rc 0.004 0 0 sco F3_60 Ji 2699 1865 M -0.360 0 (3)A 0.640 0 (6)A -0.360 0 (6)A -0.680 0 (,)A -0.360 0 (559)A ; 2501 1931 N M 431 16 rr : 1.000 1.000 0.800 sco O ; 1721 1947 N M 350 5 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 1721 1947 N M 350 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2071 1947 N M 4 5 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2071 1947 N M 4 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1697 889 1319 1131 rc 2071 1947 N M 0 5 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2075 1947 N M 426 5 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2075 1947 N M 426 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2501 1947 N M 5 5 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2501 1947 N M 5 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1697 889 1319 1131 rc 2501 1947 N M 0 5 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2506 1947 N M 426 5 rr : 0 0 0 sco O ; : 1697 889 1319 1131 rc 2506 1947 N M 426 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; LH pagesave restore /Pscript_Win_Driver /ProcSet findresource dup /terminate get exec Pscript_Win_Compat dup /terminate get exec cleartomark countdictstack exch sub { end } repeat restore grestore % % End Imported PIC File: slide1.eps % % Polyline % % Begin Imported EPS File: slide2.eps % n gs 525 9750 tr 16.980000 -16.972921 sc 0 -517 tr -39 -55 tr sa n 39 55 m 739 55 l 739 572 l 39 572 l cp clip countdictstack mark /showpage {} def % EPS file follows: /defineresource where{pop}{userdict begin/defineresource{userdict/Resources 2 copy known{get begin}{15 dict dup begin put}ifelse exch readonly exch currentdict 1 index known not{dup 30 dict def}if load 3 -1 roll 2 index put end}bind readonly def/findresource{userdict/Resources get exch get exch get} bind readonly def/resourceforall{pop pop pop pop}bind readonly def /resourcestatus{userdict/Resources 2 copy known{get exch 2 copy known{get exch known{0 -1 true}{pop pop false}ifelse}{pop pop pop false}ifelse}{pop pop false }ifelse}bind readonly def end}ifelse /Pscript_Win_Driver 200 dict dup begin /FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def /VM? {vmstatus exch sub exch pop gt { [ (This job requires more memory than is available in this printer.) 100 500 (Try one or more of the following, and then print again:) 100 485 (In the PostScript dialog box, click Optimize For Portability.) 115 470 (In the Device Options dialog box, make sure the Available Printer Memory is accurate.) 115 455 (Reduce the number of fonts in the document.) 115 440 (Print the document in parts.) 115 425 12 /Times-Roman showpage (%%[ PrinterError: Low Printer VM ]%%) = true FatalErrorIf}if} bind def /|/def load def/,/load load |/~/exch , |/?/ifelse , |/!/pop , |/`/begin , |/^ /index , |/@/dup , |/+/translate , |/$/roll , |/U/userdict , |/M/moveto , |/- /rlineto , |/&/currentdict , |/:/gsave , |/;/grestore , |/F/false , |/T/true , |/N/newpath , |/E/end , |/Ac/arc , |/An/arcn , |/A/ashow , |/D/awidthshow , | /C/closepath , |/V/div , |/O/eofill , |/L/fill , |/I/lineto , |/-C/rcurveto , |/-M/rmoveto , |/+S/scale , |/Ji/setfont , |/Lc/setlinecap , |/Lj/setlinejoin , |/Lw/setlinewidth , |/S/show , |/LH/showpage , |/K/stroke , |/W/widthshow , |/R/rotate , |/b{bind |}bind |/bd{bind |}bind |/xd{~ |}bd/ld{, |}bd/lw/Lw ld /lc/Lc ld/lj/Lj ld/sg/setgray ld/L2? F/languagelevel where{! languagelevel 2 ge{! T}if}if |/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b /DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El ! }b/self & |/reinitialize{[/TextInit/GraphInit/UtilsInit counttomark{@ where{ self eq}{F}?{cvx exec}{!}?}repeat cleartomark}b/initialize{`{/ADO_mxRot ~ | /TextInitialised? F | reinitialize E}{U/Pscript_Win_Data 200 dict @ ` put /ADO_mxRot ~ |/TextInitialised? F | reinitialize}?}b/terminate{!{& self eq{ exit}{E}?}loop E}b/suspend/terminate , |/resume{` Pscript_Win_Data `}b/snap{ transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ itransform}b /dsnap{dtransform round ~ round ~ idtransform}b<04>cvn{}|/setjn{{statusdict /jobname known{statusdict/jobname 3 -1 $ put}if}stopped cleartomark}b/solid{[] 0 setdash}b/setdsh{0 setdash}b/colspRefresh{}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rr{1 ^ 0 - 0 ~ - neg 0 - C}b L2? not g{/rf{N rp L}b/fx{1 1 dtransform @ 0 ge{1 sub 1}{1 add -0.25}? 3 -1 $ @ 0 ge{1 sub 1}{1 add -0.25}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{ 4 -2 $ snap + +S fx rf}b/rs{N rp C K}b/rc{N rp clip N}b/sg{setgray}b/sco{ setrgbcolor}b/sgco{{sg}{sco}?}b}e L2? g{/colspA/DeviceGray |/colspABC/DeviceRGB |/setAorABC{{colspA}{colspABC}? setcolorspace}b/rf/rectfill , |/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5 }? 3 -1 $ @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ snap + +S fx rf}b/rs/rectstroke , |/rc/rectclip , |/sg {@ @ setcolor}b/sco{setcolor}b/colspRefresh{colspABC setcolorspace}b/sgco{{sg }{sco}?}b/UtilsInit{F setglobal}b/definecolorrendering{/ColorRendering defineresource !}b/findcolorrendering{@/ColorRendering resourcestatus{! ! /ColorRendering findresource T}{! F}?}b/selectcolorrendering{@/ColorRendering resourcestatus{! !/ColorRendering}{!/DefaultColorRendering/ColorRendering}? findresource setcolorrendering}b}e /bullets{{/bullet}repeat}b/ANSIEncoding[/grave/acute/circumflex/tilde/macron /breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload ! 3 bullets/quotesinglbase /florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE 4 bullets/quoteleft/quoteright/quotedblleft/quotedblright /bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 2 bullets /Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]| ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy | ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176/ring put /TextInit{TextInitialised? not{/Pscript_Windows_Font & |/TextInitialised? T | /fM[1 0 0 -1 0 0]|/mFM matrix |/iMat[1 0 0.212557 neg 1 0 0]|}if}b/xUP null | /yUP null |/uW null |/xSP null |/ySP null |/sW null |/copyfont{1 ^ length add dict `{1 ^/FID ne{|}{! !}?}forall & E}b/rF{3 copyfont @ `/Encoding ANSIEncoding &/CharStrings known{CharStrings/Eth known not{! ANSIEncodingOld} if}if | E}b/mF{findfont ~{@/Encoding get @ StandardEncoding eq{! T}{{ ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{rF}{3 copyfont}? ` /OrigFontType ~ |/OrigFontName ~ | & E 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/xF{scalefont Pscript_Windows_Font 3 1 $ put}b/xMF{mFM astore makefont Pscript_Windows_Font 3 1 $ put}b/xF2/scalefont , |/xMF2{mFM astore makefont}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/sSU{N/uW ~ |/yUP ~ |/xUP ~ |}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ |/ySP ~ |/xSP ~ |}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b /sRxy{: matrix astore concat 0 0 M}b/eR/; , | /mBF{@ 4 copyfont `/FontName ~ |/OrigFontType ~ |/OrigFontName ~ | 0 FontMatrix idtransform ! &/PaintType known{PaintType 0 eq{/PaintType 2 | /StrokeWidth ~ |}{PaintType 1 eq PaintType 2 eq or PaintType 3 eq or & /StrokeWidth known and{StrokeWidth add/StrokeWidth ~ |}{!}?}?}{!}? @ & E definefont Pscript_Windows_Font 3 1 $ put}b/xBF{Pscript_Windows_Font ` 1 ^ /FontName get 1 ^ scalefont 3 1 $ scalefont 2 copy ~ | ~ ! | E}b/xMBF{mFM astore Pscript_Windows_Font ` 1 ^/FontName get 1 ^ makefont 3 1 $ makefont 2 copy ~ | ~ ! | E}b/xBF2{/sB0 ~ mBF/sB1 sB0 3 -1 $ xBF sB1}b/xMBF2{/sB0 ~ mBF mFM astore/sB1 sB0 3 -1 $ xMBF sB1}b/sB{: Pscript_Windows_Font currentfont get Ji @ S ; S}b/asB{: Pscript_Windows_Font currentfont get Ji 3 copy A ; A}b/wsB{ : Pscript_Windows_Font currentfont get Ji 4 copy W ; W}b/awsB{: Pscript_Windows_Font currentfont get Ji 6 copy D ; D}b/sBT3{: @ S ; 1 1 -M S}b /asBT3{: 3 copy A ; 1 1 -M A}b/wsBT3{: 4 copy W ; 1 1 -M W}b/awsBT3{: 6 copy D ; 1 1 -M D}b/mIF{iMat 4 3 -1 $ put 2 copyfont `/OrigFontType ~ |/OrigFontName ~ | @ & E definefont iMat makefont Pscript_Windows_Font 3 1 $ put}b /SavedCTM null |/CTMsave{/SavedCTM SavedCTM currentmatrix |}b/CTMrestore{ SavedCTM setmatrix}b/mp null |/ADO_mxRot null |/GDIHMatrix null | /GDIHPatternDict 22 dict | GDIHPatternDict `/PatternType 1 |/PaintType 2 | /Reps L2?{1}{5}? |/XStep 8 Reps mul |/YStep XStep |/BBox[0 0 XStep YStep]| /TilingType 1 |/PaintProc{` 1 Lw[]0 setdash PaintData , exec E}b/FGnd null | /BGnd null |/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b /HS_BDiagonal{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? |/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag {Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E /makehatch{GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{ /h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5/HS_DiagCross makehatch}b/GDIBWPatternDict 17 dict @ `/PatternType 1 |/PaintType L2?{1}{2}? |/RepsV L2?{1}{6}? |/RepsH L2?{1}{5}? |/BBox[0 0 RepsH 1]|/TilingType 1 | /XStep 1 |/YStep 1 |/Height 8 RepsV mul |/Width 8 |/mx[Width 0 0 Height neg 0 Height]|/FGnd null |/BGnd null |/SetBGndFGnd L2?{{BGnd null ne{BGnd aload ! sgco BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! sgco}if} }{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E |/GDIBWPatternMx null |/pfprep{save 4 1 $ /PatternOfTheDay 4 1 $ GDIBWPatternDict `/PaintData ~ |/BGnd ~ |/FGnd ~ | E CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict matrix mp CTMrestore ~ !}b /hrf null |/prf{pfprep ~ 6 1 $ 5 hrf restore}b/GraphInit{GDIHMatrix null eq{ /SavedCTM matrix | : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly | ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix currentmatrix readonly | ; ;}if}b/cirp{360 0 An C}b/ellp{CTMsave + +S 0.5 0 M 0 0 0.5 360 0 An C CTMrestore}b/rrp{/rad ~ |/y2 ~ |/x2 ~ |/y1 ~ |/x1 ~ | x2 x1 add 2 V y1 M x1 y1 x1 y2 rad arct x1 y2 x2 y2 rad arct x2 y2 x2 y1 rad arct x2 y1 x1 y1 rad arct C}b/RRp{CTMsave + +S/dyS ~ |/dxS ~ | dxS 2 V 0 M 0 0 0 dyS 0.5 arct 0 dyS dxS dyS 0.5 arct dxS dyS dxS 0 0.5 arct dxS 0 0 0 0.5 arct C CTMrestore}b L2? not g{/arct{arcto ! ! ! !}b/GDIpattfill{@ ` BGnd null ne PaintType 2 eq and{: BGnd aload ! sgco fEOFill{O}{L}? ; FGnd aload ! U/fGray 2 ^ put{2}{4}? -1 $}if E @ patterncalc : 4 ^/PaintType get 2 eq{fGray{6 -1 $ sg}{8 -3 $ sco}? }if fEOFill{eoclip}{clip}? N patternfill ; N}b/hrf{/fGray 1 ^ 6 eq | -4 $ N rp C/fEOFill F | GDIpattfill}b/hfMain{/fEOFill ~ |/fGray ~ | GDIpattfill}b/hf{T hfMain}b/hfW{F hfMain}b/hs{currentpoint strokepath M hfW}b/pfMain{/fEOFill ~ | pfprep GDIpattfill restore N}b/pf{T pfMain}b/pfW{F pfMain}b/ps{currentpoint strokepath M pfW}b/mpstr 1 string |/mp{~ @ length 12 add dict copy ` /PatternCTM matrix currentmatrix |/PatternMatrix ~ |/PatWidth XStep mpstr length mul |/PatHeight YStep |/FontType 3 |/Encoding 256 array | 3 string 0 1 255{Encoding ~ @ 3 ^ cvs cvn put}for !/FontMatrix matrix |/FontBBox BBox | /BuildChar{! @ ` XStep 0 FontBBox aload ! setcachedevice/PaintProc , E : exec ;}b & E ~ @ 3 -1 $ definefont}b/patterncalc{` : PatternCTM setmatrix PatternMatrix concat BBox aload ! ! ! + pathbbox ; PatHeight V ceiling 4 1 $ PatWidth V ceiling 4 1 $ PatHeight V floor 4 1 $ PatWidth V floor 4 1 $ 2 ^ sub cvi abs ~ 3 ^ sub cvi abs ~ 4 2 $ PatHeight mul ~ PatWidth mul ~ E}b /patternfill{5 -1 $ @ ` Ji PatternCTM setmatrix PatternMatrix concat 0 2 ^ 2 ^ M 0 1 mpstr length 1 sub{1 ^ mpstr 3 1 $ put}for ! 2 ^{currentpoint 5 ^{mpstr S}repeat YStep add M}repeat ! ! ! ! E}b}e L2? g{/mp/makepattern , |/hrf{6 eq setAorABC setpattern rectfill}b/hf{ setAorABC setpattern O}b/hfW{setAorABC setpattern L}b/hs{setAorABC setpattern K}b/pf{pfprep setpattern O restore N}b/pfW{pfprep setpattern L restore N}b/ps{ pfprep setpattern K restore N}b}e /iw 0 |/ih 0 |/im_save 0 |/s 0 |/polarity 0 |/smoothflag 0 |/mystring 0 |/bpc 0 |/setup1asciiproc{[currentfile mystring/readhexstring cvx/! cvx]cvx bind}b /setup1binaryproc{[currentfile mystring/readstring cvx/! cvx]cvx bind}b /setup2asciiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}b /setup2binaryproc{currentfile/RunLengthDecode filter}b/mycolorspace{colspABC}| /myimagedict{/myimagedict 10 dict | myimagedict @ `/ImageType 1 | /MultipleDataSource F | E}b/imageprocarray[/setup1binaryproc/setup1asciiproc /setup2binaryproc/setup2asciiproc/setup1binarydecodeproc/setup1asciidecodeproc ]|/L2Polarity{{[1 0]}{[0 1]}?}b/Q{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/X{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/Z{im_save restore}b/Y{sgco myimagedict @ ` /Width iw |/Height ih |/Decode polarity |/ImageMatrix[iw 0 0 ih 0 0]| /DataSource s |/BitsPerComponent 1 |/Interpolate smoothflag | E imagemask}b L2? not g{/setup2asciiproc{[/Level2ImagesError , aload ! T FatalErrorIf}b /setup2binaryproc/setup2asciiproc , |/L2Polarity{}|/Y{sgco iw ih polarity[iw 0 0 ih 0 0]s imagemask}b}e L2? not g{/testsystemdict{where{systemdict eq{T}{F}?}{F}?}b/c 1 |/colorimage where{! T}{F}?{/c 0 statusdict `/processcolors where{! ! processcolors}{ /deviceinfo where{! deviceinfo/Colors known{!{deviceinfo/Colors get}}if}if}? E | c 0 ne{/colorimage testsystemdict/setcolortransfer testsystemdict /currentcolortransfer testsystemdict/currentcmykcolor testsystemdict and and and not{/c 0 |}if}if}if c @ 1 ne ~ @ 3 ne ~ 4 ne and and{/c 0 |}if c 1 eq g{ /expandbw{expandfactor mul round cvi bwclut ~ get 255 V}b/doclutimage{!/bwclut ~ | bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/expandfactor ~ |[/expandbw ,/exec , @ currenttransfer ~]cvx bind settransfer iw ih bpc[iw 0 0 ih 0 0]s image}b}e c @ 3 eq ~ 4 eq or g{/nullproc{{}}|/concatutil{/exec , 7 -1 $/exec ,}b/defsubclut{ 1 add getinterval |}b/spconcattransfer{/Dclut ~ |/Cclut ~ |/Bclut ~ |/Aclut ~ |/ncompute ~ , | currentcolortransfer[{Aclut ncompute}concatutil]cvx[{Bclut ncompute}concatutil]cvx[{Cclut ncompute}concatutil]cvx[{Dclut ncompute} concatutil]cvx setcolortransfer}b/setuprgbcluts{/bit3x rgbclut length 3 sub | /bit1x bit3x 3 idiv |/rclut rgbclut |/gclut rclut 1 bit3x defsubclut/bclut rclut 2 bit3x defsubclut}b}e c 3 eq g{/3compute{~ bit3x mul round cvi get 255 V}b/doclutimage{/rgbclut ~ | ! setuprgbcluts/3compute rclut gclut bclut @ spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @]cvx nullproc nullproc T 3 colorimage}b}e c 4 eq g{/ftoint{1 ~ sub 255 mul round cvi}b/stuffclut{ cmykindex 3 -1 $ put}b/4compute{~ bit4x mul round cvi get 255 V}b /invalidcolortable? T |/computecmykclut{setuprgbcluts/bit4x rgbclut length 3 idiv 4 mul 4 sub |/cmykclut bit4x 4 add string |/cclut cmykclut |/mclut cclut 1 bit4x defsubclut/yclut cclut 2 bit4x defsubclut/kclut cclut 3 bit4x defsubclut/cmykindex 0 | 0 1 bit1x{@/cmykindex ~ bit1x ~ sub 4 mul | 3 mul @ rclut ~ get 255 V ~ @ gclut ~ get 255 V ~ bclut ~ get 255 V setrgbcolor currentcmykcolor ftoint kclut stuffclut ftoint yclut stuffclut ftoint mclut stuffclut ftoint cclut stuffclut}for}b/doclutimage{/rgbclut ~ | ! invalidcolortable?{computecmykclut}if/4compute cclut mclut yclut kclut spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @ @]cvx nullproc nullproc nullproc T 4 colorimage}b}e c 0 eq g{/a{3 mul 3 getinterval putinterval ~ 3 add ~ 3 copy}b/8lookup/a , |/4lookup{/byte 1 ^ | -4 bitshift a byte 15 and a}b/2lookup{/byte 1 ^ | -6 bitshift a byte -4 bitshift 3 and a byte -2 bitshift 3 and a byte 3 and a}b/colorexpand{mystringexp 0 rgbclut 3 copy 7 -1 $/mylookup , forall ! ! ! ! !}b/createexpandstr{/mystringexp ~ mystring length mul string |}b/doclutimage{/rgbclut ~ | !/mylookup bpc 8 eq{3 createexpandstr/8lookup}{bpc 4 eq{6 createexpandstr/4lookup}{12 createexpandstr/2lookup}?}? , | iw ih bpc[iw 0 0 ih 0 0][s/exec ,/colorexpand ,/exec ,]cvx F 3 colorimage}b}e/colorimage where{! T}{F}? g{/do24image{iw ih 8 [iw 0 0 ih 0 0]s F 3 colorimage}b}DefIf_El{/rgbtogray{/str ~ |/len str length |/smlen len 3 idiv |/rstr str |/gstr str 1 len 1 sub getinterval |/bstr str 2 len 2 sub getinterval | str @ 0 1 smlen 1 sub{@ 3 mul rstr 1 ^ get 0.3 mul gstr 2 ^ get 0.59 mul add bstr 3 -1 $ get 0.11 mul add round cvi put @}for ! 0 smlen getinterval}b/do24image{iw ih 8[iw 0 0 ih 0 0][s/exec ,/rgbtogray ,/exec ,]cvx bind image}b}e/doNimage{bpc 24 eq{do24image}{iw ih bpc[iw 0 0 ih 0 0]s image}?}b}e L2? g{/doclutimage{/rgbclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[ /Indexed colspABC hival rgbclut]setcolorspace myimagedict @ `/Width iw | /Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s | /BitsPerComponent bpc |/Interpolate smoothflag | E image}b/doCMYKclutimage{ /CMYKclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[/Indexed/DeviceCMYK hival CMYKclut]setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc | /Interpolate smoothflag | E image}b/doNimage{bpc 24 eq{colspABC}{colspA}? setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode bpc 24 eq{[0 1 0 1 0 1]}{[0 1]}? |/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc 24 eq{8}{bpc}? |/Interpolate smoothflag | E image}b/doCMYKimage{ /DeviceCMYK setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 1 0 1 0 1 0 1]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent 8 | /Interpolate smoothflag | E image}b}e /GreNewFont{10 dict @ 3 1 $ | @ ` 4 1 $/FontType 3 |/FontMatrix ~ |/FontBBox ~ |/Encoding 256 array | 0 1 255{Encoding ~/.notdef put}for/CharProcs 257 dict | CharProcs/.notdef{}put/Metrics 257 dict | Metrics/.notdef 3 -1 $ put/BuildChar {/char ~ |/fontdict ~ |/charname fontdict/Encoding get char get | fontdict /Metrics get charname get aload ! setcachedevice fontdict ` Encoding char get CharProcs ~ get E exec}| E definefont !}|/AddChar{` Encoding 3 1 $ put CharProcs 3 1 $ put Metrics 3 1 $ put E}| /FEbuf 2 string |/FEglyph 3 string |/FE{(G00)FEglyph copy ! 1 ~{@ 16 lt{ /offset 2 store}{/offset 1 store}? @ 16 FEbuf cvrs FEglyph ~ offset ~ putinterval 1 ^ ~ FEglyph cvn put}for}bind |/Type1Hdr{11 dict `/FontName ~ | /PaintType ~ |/FontType 1 |/FontMatrix[1 3 ^ V 0 0 1 6 ^ V 0 0]| !/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for 3 ^ 3 ^ FE | ! !/FontBBox{0 0 0 0}| & E currentfile eexec}bind | /pp 1 string |/ss 1 string |/rledecodebinary{/DC 0 |/BC 0 |{DC mystring length ge{exit}if currentfile ss readstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{ mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/rledecodeascii{/DC 0 | /BC 0 |{DC mystring length ge{exit}if currentfile ss readhexstring ! 0 get/BC ~ | BC 127 le{/BC BC 1 add | DC 1 DC BC add 1 sub{mystring ~ currentfile ss readhexstring ! 0 get put}for}{/BC 257 BC sub | currentfile ss readhexstring ! 0 get/pp ~ | DC 1 DC BC add 1 sub{mystring ~ pp put}for}?/DC DC BC add |}loop mystring}b/setup1asciidecodeproc{[/rledecodeascii cvx]cvx bind}b /setup1binarydecodeproc{[/rledecodebinary cvx]cvx bind}b userdict/Pscript_Win_Compat 13 dict dup begin/bd{bind def}bind def/ld{load def }bd/CB{pop pop pop pop}bind def/B{pop pop pop pop}bind def/$x matrix def/SS{ /pagesave save def}bind def/RS{/pagesave where{pop pagesave restore}{$x matrix invertmatrix concat}ifelse}bind def/ANSIVec[0/grave 1/acute 2/circumflex 3 /tilde 4/macron 5/breve 6/dotaccent 7/dieresis 8/ring 9/cedilla 10 /hungarumlaut 11/ogonek 12/caron 13/dotlessi 39/quotesingle 96/grave 124/bar 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135 /daggerdbl 136/circumflex 137/perthousand 138/Scaron 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150 /endash 151/emdash 152/tilde 153/trademark 154/scaron 155/guilsinglright 156 /oe 159/Ydieresis 160/space 161/exclamdown 164/currency 165/yen 166/brokenbar 167/section 168/dieresis 169/copyright 170/ordfeminine 171/guillemotleft 172 /logicalnot 173/hyphen 174/registered 175/macron 176/degree 177/plusminus 178 /twosuperior 179/threesuperior 180/acute 181/mu 182/paragraph 183 /periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 187 /guillemotright 188/onequarter 189/onehalf 190/threequarters 191/questiondown 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198 /AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204 /Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223 /germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229 /aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242 /ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248 /oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254 /thorn 255/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{ pop pop}ifelse}forall/initialize{currentdict exch begin begin}bind def /terminate{/@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def/resume/initialize load def/M/moveto load def end put/Courier findfont 10 scalefont setfont end /ProcSet defineresource pop Pscript_Win_Compat dup /initialize get exec [ 0 1.000 -1.000 0 0 0 ] false /Pscript_Win_Driver /ProcSet findresource dup /initialize get exec /mysetup [ 0.240 0 0 -0.240 7.920 592.800 ] | userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; 116 70 N M 1 1 rr 116 70 N M 3000 2250 rr : 1.000 1.000 1.000 sco O ; 116 70 N M 1 1 rr 116 70 N M 1 1 rr 133 87 N M 2904 2146 rr 10 Lw 0 Lc 0 Lj solid 0 0 0 sco K 579 456 N M 2416 1561 rr : 1.000 0.800 0.600 sco O ; 579 456 N M 2416 0 - 3 Lw 1 Lc 1 Lj solid 0 0 0 sco K 2995 456 N M 0 1561 - 0 0 0 sco K 2995 2017 N M -2416 0 - 0 0 0 sco K 579 2017 N M 0 -1561 - 0 0 0 sco K 579 1947 N M 73 56 rr : 1.000 1.000 0 sco O ; 0 Lc 0 Lj 0 0 0 sco K 579 1774 N M 177 55 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 1600 N M 215 55 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 1426 N M 274 56 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 1252 N M 285 56 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 1082 N M 319 55 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 908 N M 476 56 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 734 N M 845 56 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 560 N M 1074 56 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K 579 1864 N M 121 52 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 1690 N M 319 52 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 1516 N M 274 53 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 1343 N M 330 52 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 1169 N M 532 55 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 998 N M 528 52 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 824 N M 911 53 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 651 N M 1617 52 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 477 N M 1968 52 rr : 0 0 1.000 sco O ; 0 0 0 sco K 579 456 N M 0 1561 - 1 Lc 1 Lj 0 0 0 sco K 558 2017 N M 21 0 - 0 0 0 sco K 558 1843 N M 21 0 - 0 0 0 sco K 558 1669 N M 21 0 - 0 0 0 sco K 558 1495 N M 21 0 - 0 0 0 sco K 558 1322 N M 21 0 - 0 0 0 sco K 558 1151 N M 21 0 - 0 0 0 sco K 558 977 N M 21 0 - 0 0 0 sco K 558 804 N M 21 0 - 0 0 0 sco K 558 630 N M 21 0 - 0 0 0 sco K 558 456 N M 21 0 - 0 0 0 sco K : 610 167 1954 149 rc 0.502 0 0 sco %%IncludeFont: Helvetica-Bold (F0) cvn 0.930 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F0_129) cvn F0 129 xF F0_129 Ji 634 167 M 0.543 0 (M)A 0.957 0 (E)A 1.181 0 (T)A -4.862 0 (I)A 0.957 0 (S)A 0.298 0 (')A -2.138 0 32 1.276 0 (s )D 0.638 0 (O)A -1.181 0 (r)A 1.181 0 (d)A 1.276 0 (e)A -2.181 0 (r)A -0.862 0 (i)A -2.043 0 32 1.181 0 (ng )D 0.957 0 (P)A 1.276 0 (e)A -2.181 0 (r)A -0.957 0 (f)A 1.181 0 (o)A -1.181 0 (r)A 0.319 0 (m)A 1.276 0 (a)A 1.181 0 (n)A -3.138 0 32 1.276 0 (ce )D ; : 655 1947 181 53 rc 0 0 0 sco (F0_45) cvn F0 45 xF F0_45 Ji 665 1947 M -1.020 0 (0)A 1.490 0 (.)A -0.020 0 (9)A -1.020 0 (0)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 759 1774 181 53 rc 0 0 0 sco F0_45 Ji 770 1774 M -1.020 0 (2)A 1.490 0 (.)A -0.020 0 (1)A -1.020 0 (9)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 798 1600 180 53 rc 0 0 0 sco F0_45 Ji 808 1600 M -1.020 0 (2)A 1.490 0 (.)A -0.020 0 (6)A -1.020 0 (7)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 857 1426 181 53 rc 0 0 0 sco F0_45 Ji 867 1426 M -1.020 0 (3)A 1.490 0 (.)A -0.020 0 (4)A -1.020 0 (3)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 867 1252 181 53 rc 0 0 0 sco F0_45 Ji 878 1252 M -1.020 0 (3)A 1.490 0 (.)A -0.020 0 (5)A -1.020 0 (5)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 902 1078 181 53 rc 0 0 0 sco F0_45 Ji 912 1078 M -1.020 0 (3)A 1.490 0 (.)A -0.020 0 (9)A -1.020 0 (6)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 1058 904 181 53 rc 0 0 0 sco F0_45 Ji 1069 904 M -1.020 0 (5)A 1.490 0 (.)A -0.020 0 (9)A -1.020 0 (0)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 1427 731 205 53 rc 0 0 0 sco F0_45 Ji 1437 731 M -1.020 0 (1)A -0.020 0 (0)A 1.490 0 (.)A -1.020 0 (51)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 1657 557 205 53 rc 0 0 0 sco F0_45 Ji 1667 557 M -1.020 0 (1)A -0.020 0 (3)A 1.490 0 (.)A -1.020 0 (34)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 704 1861 181 53 rc 0 0 0 sco F0_45 Ji 714 1861 M -1.020 0 (1)A 1.490 0 (.)A -0.020 0 (5)A -1.020 0 (2)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 902 1687 181 53 rc 0 0 0 sco F0_45 Ji 912 1687 M -1.020 0 (3)A 1.490 0 (.)A -0.020 0 (9)A -1.020 0 (5)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 857 1513 181 53 rc 0 0 0 sco F0_45 Ji 867 1513 M -1.020 0 (3)A 1.490 0 (.)A -0.020 0 (4)A -1.020 0 (2)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 912 1339 181 53 rc 0 0 0 sco F0_45 Ji 923 1339 M -1.020 0 (4)A 1.490 0 (.)A -0.020 0 (1)A -1.020 0 (0)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 1114 1169 181 53 rc 0 0 0 sco F0_45 Ji 1124 1169 M -1.020 0 (6)A 1.490 0 (.)A -0.020 0 (5)A -1.020 0 (9)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 1111 995 180 53 rc 0 0 0 sco F0_45 Ji 1121 995 M -1.020 0 (6)A 1.490 0 (.)A -0.020 0 (5)A -1.020 0 (5)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 1493 821 205 53 rc 0 0 0 sco F0_45 Ji 1504 821 M -1.020 0 (1)A -0.020 0 (1)A 1.490 0 (.)A -1.020 0 (32)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 2199 647 205 53 rc 0 0 0 sco F0_45 Ji 2209 647 M -1.020 0 (2)A -0.020 0 (0)A 1.490 0 (.)A -1.020 0 (07)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 2550 473 205 53 rc 0 0 0 sco F0_45 Ji 2561 473 M -1.020 0 (2)A -0.020 0 (4)A 1.490 0 (.)A -1.020 0 (43)A -4.020 0 (s)A 2.980 0 (e)A -1.020 0 (c)A ; : 217 1892 2841 74 rc 0 0 0 sco %%IncludeFont: Helvetica (F3) cvn 0.909 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F3_66) cvn F3 66 xF F3_66 Ji 335 1892 M 2.652 0 (I)A -1.696 0 (n)A 1.304 0 (p)A -0.978 0 (r)A 1.304 0 (o1)A ; : 116 1718 2942 74 rc 0 0 0 sco F3_66 Ji 179 1718 M 0.978 0 (B)A 1.348 0 (C)A 0.978 0 (SS)A 1.674 0 (T)A 0.978 0 (K)A 2.304 0 (3)A 1.304 0 (0)A ; : 116 1544 2942 74 rc 0 0 0 sco F3_66 Ji 179 1544 M 0.978 0 (B)A 1.348 0 (C)A 0.978 0 (SS)A 1.674 0 (T)A 0.978 0 (K)A 2.304 0 (3)A 1.304 0 (2)A ; : 116 1370 2942 74 rc 0 0 0 sco F3_66 Ji 179 1370 M 0.978 0 (B)A 1.348 0 (C)A 0.978 0 (SS)A 1.674 0 (T)A 0.978 0 (K)A 2.304 0 (3)A 1.304 0 (1)A ; : 172 1196 2886 74 rc 0 0 0 sco F3_66 Ji 290 1196 M 0.978 0 (P)A 1.348 0 (D)A 0.978 0 (S)A -0.978 0 (-)A 1.304 0 (20)A ; : 196 1026 2862 74 rc 0 0 0 sco F3_66 Ji 314 1026 M 0.978 0 (KE)A -1.652 0 (N)A 1.304 0 (18)A ; : 148 852 2910 74 rc 0 0 0 sco F3_66 Ji 266 852 M 1.674 0 (F)A 0.652 0 (O)A 1.348 0 (R)A 0.674 0 (T)A 2.304 0 (1)A 1.304 0 (7)A ; : 280 678 2778 74 rc 0 0 0 sco F3_66 Ji 398 678 M 1.674 0 (T)A -0.978 0 (r)A 1.304 0 (o)A -0.652 0 (ll)A ; : 214 505 2844 74 rc 0 0 0 sco F3_66 Ji 332 505 M 0.652 0 (O)A 2.000 0 (c)A 1.304 0 (e)A -1.696 0 (an)A ; 784 2059 N M 1971 128 rr : 1.000 1.000 1.000 sco O ; 0 Lc 0 Lj 0 0 0 sco K 812 2100 N M 52 53 rr : 1.000 1.000 0 sco O ; 0 0 0 sco K : 785 2080 1974 96 rc 0 0 0 sco (F0_83) cvn F0 83 xF F0_83 Ji 888 2080 M 3.861 0 (M)A 0.926 0 (I)A 0.287 0 32 0.639 0 (PS )D -0.926 0 (R)A -1.148 0 (1)A -0.148 0 (0)A -1.148 0 (000)A -0.925 0 (@)A -1.148 0 (2)A -0.148 0 (0)A -1.148 0 (0)A 3.861 0 (M)A -0.926 0 (H)A 0.500 0 (z)A ; 1834 2100 N M 52 53 rr : 0 0 1.000 sco O ; 0 0 0 sco K : 1807 2080 952 96 rc 0 0 0 sco F0_83 Ji 1910 2080 M 0.926 0 (I)A 2.287 0 (n)A -0.639 0 (t)A -0.148 0 (e)A 0.926 0 (l )A 0.639 0 (PP)A -0.926 0 (R)A -2.574 0 (O)A -0.925 0 (@)A -1.148 0 (2)A -0.148 0 (0)A -1.148 0 (0)A 3.861 0 (M)A -0.926 0 (H)A 0.500 0 (z)A ; 1538 1010 N M 320 38 rr : 0.502 0 0 sco O ; 1538 1048 N M 320 61 rr : 0.502 0 0 sco O ; 1538 1109 N M 320 37 rr : 0.502 0 0 sco O ; 1858 1010 N M 361 68 rr : 0.502 0 0 sco O ; : 1516 1010 1425 985 rc 1.000 1.000 1.000 sco %%IncludeFont: Helvetica-BoldOblique (F6) cvn 0.915 (Helvetica-BoldOblique) cvn /Type1 T (Helvetica-BoldOblique) cvn mF (F6_59) cvn F6 59 xF F6_59 Ji 1888 1011 M 0.402 0 (N)A 0.951 0 (u)A 1.549 0 (m)A 0.951 0 (b)A 0.196 0 (e)A 0.549 0 32 0.049 0 (r )D 0.951 0 (o)A 0.353 0 (f)A ; 1858 1078 N M 361 68 rr : 0.502 0 0 sco O ; : 1516 1010 1425 985 rc 1.000 1.000 1.000 sco F6_59 Ji 1922 1080 M 0.647 0 (V)A 0.196 0 (e)A 0.049 0 (r)A 1.353 0 (t)A 0.598 0 (i)A 0.196 0 (ce)A 1.196 0 (s)A ; 2219 1010 N M 362 68 rr : 0.502 0 0 sco O ; : 1516 1010 1425 985 rc 1.000 1.000 1.000 sco F6_59 Ji 2250 1011 M 0.402 0 (N)A 0.951 0 (u)A 1.549 0 (m)A 0.951 0 (b)A 0.196 0 (e)A 0.549 0 32 0.049 0 (r )D 0.951 0 (o)A 0.353 0 (f)A ; 2219 1078 N M 362 68 rr : 0.502 0 0 sco O ; : 1516 1010 1425 985 rc 1.000 1.000 1.000 sco F6_59 Ji 2311 1080 M 0.647 0 (E)A 0.951 0 (dg)A 0.196 0 (es)A ; 2581 1010 N M 360 68 rr : 0.502 0 0 sco O ; : 1516 1010 1425 985 rc 1.000 1.000 1.000 sco F6_59 Ji 2620 1011 M 1.098 0 (O)A 0.951 0 (p)A 0.196 0 (e)A 0.049 0 (r)A 1.196 0 (a)A 0.353 0 (t)A 0.598 0 (i)A 0.951 0 (o)A -0.049 0 (n)A ; 2581 1078 N M 360 68 rr : 0.502 0 0 sco O ; : 1516 1010 1425 985 rc 1.000 1.000 1.000 sco F6_59 Ji 2675 1080 M 0.402 0 (C)A 0.951 0 (oun)A 0.353 0 (t)A ; 1538 1151 N M 320 13 rr : 1.000 1.000 0.800 sco O ; 1538 1164 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1516 1010 1425 985 rc 0.004 0 0 sco (F0_53) cvn F0 53 xF F0_53 Ji 1554 1163 M 0.766 0 (O)A 0.532 0 (c)A 1.532 0 (e)A 0.532 0 (a)A 0.617 0 (n)A ; 1538 1225 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1151 N M 361 13 rr : 1.000 1.000 0.800 sco O ; 1858 1164 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1146 361 79 rc 0.004 0 0 sco (F3_53) cvn F3 53 xF F3_53 Ji 2007 1166 M 0.532 0 (1)A 1.532 0 (4)A 0.532 0 (3)A 0.266 0 (,)A 0.532 0 (43)A 1.532 0 (7)A ; 1858 1225 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1151 N M 362 13 rr : 1.000 1.000 0.800 sco O ; 2219 1164 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1146 362 79 rc 0.004 0 0 sco F3_53 Ji 2369 1166 M 0.532 0 (4)A 1.532 0 (0)A 0.532 0 (9)A 0.266 0 (,)A 0.532 0 (59)A 1.532 0 (3)A ; 2219 1225 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1151 N M 360 13 rr : 1.000 1.000 0.800 sco O ; 2581 1164 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1146 360 79 rc 0.004 0 0 sco F3_53 Ji 2699 1166 M 0.532 0 (1)A 1.266 0 (.)A 0.532 0 (26e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (8)A ; 2581 1225 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1146 N M 320 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 1538 1146 N M 320 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 1858 1146 N M 4 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 1858 1146 N M 4 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1516 1010 1425 985 rc 1858 1146 N M 0 5 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 1862 1146 N M 357 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 1862 1146 N M 357 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2219 1146 N M 5 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2219 1146 N M 5 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1516 1010 1425 985 rc 2219 1146 N M 0 5 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2224 1146 N M 357 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2224 1146 N M 357 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2581 1146 N M 5 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2581 1146 N M 5 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1516 1010 1425 985 rc 2581 1146 N M 0 5 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2586 1146 N M 355 5 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2586 1146 N M 355 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 1538 1239 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1538 1253 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1516 1010 1425 985 rc 0.004 0 0 sco F0_53 Ji 1554 1251 M 0.617 0 (T)A 0.383 0 (r)A 1.617 0 (o)A 0.266 0 (ll)A ; 1538 1314 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1239 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 1858 1253 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1239 361 75 rc 0.004 0 0 sco F3_53 Ji 2007 1255 M 0.532 0 (2)A 1.532 0 (1)A 0.532 0 (3)A 0.266 0 (,)A 0.532 0 (45)A 1.532 0 (3)A ; 1858 1314 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1239 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2219 1253 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1239 362 75 rc 0.004 0 0 sco F3_53 Ji 2323 1255 M 0.532 0 (5)A 1.266 0 (,)A 0.532 0 (885)A 0.266 0 (,)A 1.532 0 (8)A 0.532 0 (29)A ; 2219 1314 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1239 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 2581 1253 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1239 360 75 rc 0.004 0 0 sco F3_53 Ji 2699 1255 M 0.532 0 (5)A 1.266 0 (.)A 0.532 0 (53e)A 1.048 0 (+)A 0.532 0 (1)A 1.532 0 (0)A ; 2581 1314 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1328 N M 320 13 rr : 1.000 1.000 0.800 sco O ; 1538 1341 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1516 1010 1425 985 rc 0.004 0 0 sco F0_53 Ji 1554 1340 M 0.617 0 (F)A 1.617 0 (o)A 0.383 0 (r)A 0.351 0 (t)A 0.532 0 (17)A ; 1538 1402 N M 320 15 rr : 1.000 1.000 0.800 sco O ; 1858 1328 N M 361 13 rr : 1.000 1.000 0.800 sco O ; 1858 1341 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1328 361 74 rc 0.004 0 0 sco F3_53 Ji 2037 1344 M 0.532 0 (8)A 1.532 0 (6)A 0.266 0 (,)A 0.532 0 (650)A ; 1858 1402 N M 361 15 rr : 1.000 1.000 0.800 sco O ; 2219 1328 N M 362 13 rr : 1.000 1.000 0.800 sco O ; 2219 1341 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1328 362 74 rc 0.004 0 0 sco F3_53 Ji 2369 1344 M 0.532 0 (2)A 1.532 0 (4)A 0.532 0 (7)A 0.266 0 (,)A 0.532 0 (42)A 1.532 0 (4)A ; 2219 1402 N M 362 15 rr : 1.000 1.000 0.800 sco O ; 2581 1328 N M 360 13 rr : 1.000 1.000 0.800 sco O ; 2581 1341 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1328 360 74 rc 0.004 0 0 sco F3_53 Ji 2699 1344 M 0.532 0 (8)A 1.266 0 (.)A 0.532 0 (05e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (6)A ; 2581 1402 N M 360 15 rr : 1.000 1.000 0.800 sco O ; 1538 1417 N M 320 13 rr : 1.000 1.000 0.800 sco O ; 1538 1430 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1516 1010 1425 985 rc 0.004 0 0 sco F0_53 Ji 1554 1429 M 0.734 0 (K)A 0.532 0 (e)A 1.617 0 (n)A 0.532 0 (1)A 1.532 0 (8)A ; 1538 1491 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1417 N M 361 13 rr : 1.000 1.000 0.800 sco O ; 1858 1430 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1417 361 74 rc 0.004 0 0 sco F3_53 Ji 2007 1432 M 0.532 0 (1)A 1.532 0 (0)A 0.532 0 (5)A 0.266 0 (,)A 0.532 0 (12)A 1.532 0 (7)A ; 1858 1491 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1417 N M 362 13 rr : 1.000 1.000 0.800 sco O ; 2219 1430 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1417 362 74 rc 0.004 0 0 sco F3_53 Ji 2369 1432 M 0.532 0 (2)A 1.532 0 (5)A 0.532 0 (2)A 0.266 0 (,)A 0.532 0 (07)A 1.532 0 (2)A ; 2219 1491 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1417 N M 360 13 rr : 1.000 1.000 0.800 sco O ; 2581 1430 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1417 360 74 rc 0.004 0 0 sco F3_53 Ji 2699 1432 M 0.532 0 (2)A 1.266 0 (.)A 0.532 0 (85e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (8)A ; 2581 1491 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1505 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1538 1519 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1516 1010 1425 985 rc 0.004 0 0 sco F0_53 Ji 1554 1517 M 0.649 0 (P)A 0.734 0 (D)A 0.649 0 (S)A 1.351 0 (-)A 0.532 0 (20)A ; 1538 1580 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1505 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 1858 1519 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1505 361 75 rc 0.004 0 0 sco F3_53 Ji 2037 1521 M 0.532 0 (3)A 1.532 0 (3)A 0.266 0 (,)A 0.532 0 (798)A ; 1858 1580 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1505 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2219 1519 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1505 362 75 rc 0.004 0 0 sco F3_53 Ji 2369 1521 M 0.532 0 (1)A 1.532 0 (4)A 0.532 0 (3)A 0.266 0 (,)A 0.532 0 (16)A 1.532 0 (1)A ; 2219 1580 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1505 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 2581 1519 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1505 360 75 rc 0.004 0 0 sco F3_53 Ji 2699 1521 M 0.532 0 (3)A 1.266 0 (.)A 0.532 0 (82e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (9)A ; 2581 1580 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1594 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1538 1608 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1538 1594 320 75 rc 0.004 0 0 sco F0_53 Ji 1554 1606 M 0.734 0 (BC)A 0.649 0 (S)A 1.649 0 (S)A 0.617 0 (T)A 0.734 0 (K)A 0.532 0 (3)A 1.532 0 (1)A ; 1538 1669 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1594 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 1858 1608 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1594 361 75 rc 0.004 0 0 sco F3_53 Ji 2037 1610 M 0.532 0 (3)A 1.532 0 (5)A 0.266 0 (,)A 0.532 0 (588)A ; 1858 1669 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1594 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2219 1608 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1594 362 75 rc 0.004 0 0 sco F3_53 Ji 2369 1610 M 0.532 0 (5)A 1.532 0 (7)A 0.532 0 (2)A 0.266 0 (,)A 0.532 0 (91)A 1.532 0 (4)A ; 2219 1669 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1594 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 2581 1608 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1594 360 75 rc 0.004 0 0 sco F3_53 Ji 2699 1610 M 0.532 0 (1)A 1.266 0 (.)A 0.532 0 (16e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (9)A ; 2581 1669 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1683 N M 320 13 rr : 1.000 1.000 0.800 sco O ; 1538 1696 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1538 1683 320 74 rc 0.004 0 0 sco F0_53 Ji 1554 1695 M 0.734 0 (BC)A 0.649 0 (S)A 1.649 0 (S)A 0.617 0 (T)A 0.734 0 (K)A 0.532 0 (3)A 1.532 0 (2)A ; 1538 1757 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1683 N M 361 13 rr : 1.000 1.000 0.800 sco O ; 1858 1696 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1683 361 74 rc 0.004 0 0 sco F3_53 Ji 2037 1698 M 0.532 0 (4)A 1.532 0 (4)A 0.266 0 (,)A 0.532 0 (609)A ; 1858 1757 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1683 N M 362 13 rr : 1.000 1.000 0.800 sco O ; 2219 1696 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1683 362 74 rc 0.004 0 0 sco F3_53 Ji 2369 1698 M 0.532 0 (9)A 1.532 0 (8)A 0.532 0 (5)A 0.266 0 (,)A 0.532 0 (04)A 1.532 0 (6)A ; 2219 1757 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1683 N M 360 13 rr : 1.000 1.000 0.800 sco O ; 2581 1696 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1683 360 74 rc 0.004 0 0 sco F3_53 Ji 2699 1698 M 0.532 0 (1)A 1.266 0 (.)A 0.532 0 (32e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (9)A ; 2581 1757 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1771 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1538 1785 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1538 1771 320 75 rc 0.004 0 0 sco F0_53 Ji 1554 1784 M 0.734 0 (BC)A 0.649 0 (S)A 1.649 0 (S)A 0.617 0 (T)A 0.734 0 (K)A 0.532 0 (3)A 1.532 0 (0)A ; 1538 1846 N M 320 14 rr : 1.000 1.000 0.800 sco O ; 1858 1771 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 1858 1785 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1771 361 75 rc 0.004 0 0 sco F3_53 Ji 2037 1787 M 0.532 0 (2)A 1.532 0 (8)A 0.266 0 (,)A 0.532 0 (294)A ; 1858 1846 N M 361 14 rr : 1.000 1.000 0.800 sco O ; 2219 1771 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2219 1785 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1771 362 75 rc 0.004 0 0 sco F3_53 Ji 2323 1787 M 0.532 0 (1)A 1.266 0 (,)A 0.532 0 (007)A 0.266 0 (,)A 1.532 0 (2)A 0.532 0 (84)A ; 2219 1846 N M 362 14 rr : 1.000 1.000 0.800 sco O ; 2581 1771 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 2581 1785 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1771 360 75 rc 0.004 0 0 sco F3_53 Ji 2699 1787 M 0.532 0 (1)A 1.266 0 (.)A 0.532 0 (17e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (9)A ; 2581 1846 N M 360 14 rr : 1.000 1.000 0.800 sco O ; 1538 1860 N M 320 16 rr : 1.000 1.000 0.800 sco O ; 1538 1876 N M 320 61 rr : 1.000 1.000 0.800 sco O ; : 1516 1010 1425 985 rc 0.004 0 0 sco F0_53 Ji 1554 1874 M 0.266 0 (I)A 0.617 0 (n)A 1.617 0 (p)A 0.383 0 (r)A 0.617 0 (o)A 0.532 0 (1)A ; 1538 1937 N M 320 17 rr : 1.000 1.000 0.800 sco O ; 1858 1860 N M 361 16 rr : 1.000 1.000 0.800 sco O ; 1858 1876 N M 361 61 rr : 1.000 1.000 0.800 sco O ; : 1858 1860 361 77 rc 0.004 0 0 sco F3_53 Ji 2037 1878 M 0.532 0 (4)A 1.532 0 (6)A 0.266 0 (,)A 0.532 0 (949)A ; 1858 1937 N M 361 17 rr : 1.000 1.000 0.800 sco O ; 2219 1860 N M 362 16 rr : 1.000 1.000 0.800 sco O ; 2219 1876 N M 362 61 rr : 1.000 1.000 0.800 sco O ; : 2219 1860 362 77 rc 0.004 0 0 sco F3_53 Ji 2323 1878 M 0.532 0 (1)A 1.266 0 (,)A 0.532 0 (117)A 0.266 0 (,)A 1.532 0 (8)A 0.532 0 (09)A ; 2219 1937 N M 362 17 rr : 1.000 1.000 0.800 sco O ; 2581 1860 N M 360 16 rr : 1.000 1.000 0.800 sco O ; 2581 1876 N M 360 61 rr : 1.000 1.000 0.800 sco O ; : 2581 1860 360 77 rc 0.004 0 0 sco F3_53 Ji 2699 1878 M 0.532 0 (1)A 1.266 0 (.)A 0.532 0 (24e)A 1.048 0 (+)A 0.532 0 (0)A 1.532 0 (9)A ; 2581 1937 N M 360 17 rr : 1.000 1.000 0.800 sco O ; 1538 1954 N M 320 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 1538 1954 N M 320 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 1858 1954 N M 4 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 1858 1954 N M 4 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1516 1010 1425 985 rc 1858 1954 N M 0 4 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 1862 1954 N M 357 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 1862 1954 N M 357 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2219 1954 N M 5 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2219 1954 N M 5 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1516 1010 1425 985 rc 2219 1954 N M 0 4 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2224 1954 N M 357 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2224 1954 N M 357 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2581 1954 N M 5 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2581 1954 N M 5 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; : 1516 1010 1425 985 rc 2581 1954 N M 0 4 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; 2586 1954 N M 355 4 rr : 0 0 0 sco O ; : 1516 1010 1425 985 rc 2586 1954 N M 355 0 - 1 Lw 1 Lc 1 Lj solid 0 0 0 sco K ; LH pagesave restore /Pscript_Win_Driver /ProcSet findresource dup /terminate get exec Pscript_Win_Compat dup /terminate get exec cleartomark countdictstack exch sub { end } repeat restore grestore % % End Imported PIC File: slide2.eps % $F2psEnd rs %%EndDocument @endspecial 0 3899 a Fy(Figure)19 b(2)p FL(:)28 b Fx(The)19 b(amount)g(of)h(time)g(required)f(b)o(y)i(M)l Fv(E)-17 b Fx(T)g Fv(I)p Fx(S)23 b(to)d(par)s(tition)f(v)n(ar)q(ious)h(g)o(r)o (aphs)f(in)h(256)g(par)s(ts)f(and)h(the)f(amount)g(of)h(time)g (required)e(b)o(y)k(M)l Fv(E)-17 b Fx(T)g Fv(I)p Fx(S)0 3999 y(to)19 b(compute)f(\002ll-reducing)g(order)q(ings)f(f)n(or)i(v)n (ar)q(ious)f(sparse)h(matr)q(ices)o(.)100 4183 y FL(The)i(rest)h(of)f (this)i(manual)d(is)j(or)o(ganized)c(as)j(follo)n(ws:)28 b(Section)21 b(4)h(describes)f(the)h(user)f(interf)o(ace)g(to)h(the)f (stand-alone)f(programs)0 4292 y(pro)o(vided)i(by)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(.)26 b(Section)e(5)g(describes)g (the)g(stand-alone)f(library)g(that)i(implements)e(the)h(v)n(arious)f (algorithms)g(implemented)0 4402 y(in)f Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(.)23 b(Finally)-5 b(,)19 b(Section)h(6)g (describes)g(the)g(system)g(requirements)f(for)g(the)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(package.)1929 5649 y(5)p eop %%Page: 6 6 6 5 bop 0 85 a FD(3)116 b(What)31 b(is)h(Ne)n(w)h(in)g(This)f(V)-6 b(er)n(sion)0 261 y FL(The)19 b(latest)i(v)o(ersion)d(of)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)24 b FL(contains)19 b(a)h(number)d(of)i(changes)g(o)o(v)o(er)f(the)i(pre)n(vious)e(major)g (release)i(\(v)o(ersion)e(3.0\).)23 b(Most)d(of)f(these)0 370 y(changes)h(are)g(concentrated)e(on)i(the)h(graph)e(and)h(mesh)g (partitioning)f(routines)h(and)g(the)o(y)f(mar)o(ginally)g(af)n(fect)h (the)g(sparse)h(matrix)f(re-)0 480 y(ordering)c(routines.)23 b(T)-7 b(able)18 b(1)h(describes)e(which)h(programs)e(and)i(routines)f (of)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)21 b FL(ha)n(v)o(e)d(been)f(changed)g(and)g(the)i(ne)n(w)f(routines)0 590 y(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)p FL(.)29 b(In)20 b(the)g(rest)g(of)g(this)h(section)f(we)g(brie\003y)g (describe)f(some)h(of)g(the)h(major)e(changes.)0 799 y FB(Multi-Constraint)24 b(P)n(ar)r(titioning)100 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)26 b FL(no)n(w)c(includes)f(partitioning) f(routines)h(that)h(can)g(be)g(used)g(to)g(partition)f(a)i(graph)d(in)0 908 y(the)e(presence)e(of)h(multiple)g(balancing)f(constraints.)24 b(The)17 b(idea)g(is)i(that)e(each)g(v)o(erte)o(x)g(has)g(a)h(v)o (ector)f(of)g(weights)g(of)h(size)g Ft(m)23 b FL(associated)0 1018 y(with)g(it,)i(and)d(the)h(objecti)n(v)o(e)f(of)h(the)g (partitioning)e(algorithm)h(is)i(to)f(minimize)g(the)g(edgecut)f (subject)h(to)g(the)g(constraints)g(that)g(each)0 1128 y(one)i(of)g(the)h Ft(m)31 b FL(weights)25 b(is)i(equally)e(distrib)n (uted)f(among)g(the)i(domains.)40 b(F)o(or)25 b(e)o(xample,)h(if)f(the) h(\002rst)g(weight)f(corresponds)f(to)i(the)0 1237 y(amount)c(of)i (computation)d(and)i(the)g(second)g(weight)g(corresponds)f(to)h(the)h (amount)e(of)i(storage)e(required)g(for)h(each)g(element,)h(then)0 1347 y(the)19 b(partitioning)f(computed)f(by)i(the)g(ne)n(w)g (algorithms)f(will)i(balance)e(both)h(the)g(computation)e(performed)g (in)i(each)g(domain)f(as)i(well)0 1456 y(as)f(the)e(amount)g(of)g (memory)f(that)i(it)h(requires.)k(Also,)18 b(multi-phase)f (\(multi-physics\))e(computations)h(can)h(use)h(the)g(ne)n(w)g (partitioning)0 1566 y(algorithm)28 b(to)i(simultaneously)e(balance)h (the)h(computations)e(performed)f(in)j(each)f(phase.)53 b(The)30 b(multi-constraint)e(partitioning)0 1675 y(algorithms)19 b(and)h(their)f(applications)g(are)i(further)d(described)h(in)i([6)o (].)100 1785 y(The)46 b(multi-constraint)f(partitioning)g(algorithm)h (is)i(implemented)d(by)h(the)h Fz(METIS)p 2781 1785 25 4 v 31 w(mCP)m(ar)s(tGr)o(aphRecursiv)n(e)g FL(and)0 1895 y Fz(METIS)p 258 1895 V 31 w(mCP)m(ar)s(tGr)o(aphKw)o(a)n(y)25 b FL(routines)g(that)h(are)g(based)g(on)f(the)h(multile)n(v)o(el)f (recursi)n(v)o(e)f(bisection)h(and)g(the)h(multile)n(v)o(el)f Ft(k)5 b FL(-w)o(ay)0 2004 y(partitioning)21 b(paradigms,)i(respecti)n (v)o(ely)-5 b(.)32 b(Also,)24 b(the)g Fz(pmetis)g FL(and)f(the)g Fz(kmetis)h FL(programs)d(ha)n(v)o(e)i(been)g(o)o(v)o(erloaded)d(to)j (in)m(v)n(ok)o(e)g(the)0 2114 y(multi-constraint)h(partitioner)g(when)i (the)g(input)f(graph)g(contains)g(multiple)g(v)o(erte)o(x)g(weights)h (\(Section)f(4.5.1)g(describes)g(ho)n(w)h(the)0 2223 y(format)19 b(of)h(the)g(input)g(graph)e(\002le)j(has)g(been)e(e)o (xtended)f(to)j(allo)n(w)f(you)f(to)i(specify)e(multiple)h(v)o(erte)o (x)e(weights\).)0 2433 y FB(Minimizing)25 b(the)g(T)-7 b(otal)25 b(Comm)n(unication)f(V)-7 b(olume)99 b FL(The)22 b(objecti)n(v)o(e)f(of)i(the)f(traditional)f(graph)g(partitioning)g (problem)g(is)0 2542 y(to)f(compute)e(a)i(balanced)e Ft(k)5 b FL(-w)o(ay)19 b(partitioning)f(such)h(that)h(the)g(number)d (of)j(edges)f(\(or)g(in)h(the)f(case)h(of)g(weighted)e(graphs)h(the)g (sum)h(of)0 2652 y(their)f(weights\))g(that)h(straddle)f(dif)n(ferent)f (partitions)h(is)i(minimized.)i(When)d(partitioning)d(is)k(used)e(to)h (distrib)n(ute)f(a)h(graph)e(or)i(a)g(mesh)0 2761 y(among)f(the)i (processors)f(of)h(a)g(parallel)f(computer)m(,)f(the)i(objecti)n(v)o(e) e(of)i(minimizing)e(the)i(edgecut)f(is)h(only)f(an)h(approximation)d (of)j(the)0 2871 y(true)j(communication)e(cost)i(resulting)g(from)f (the)i(partitioning.)36 b(Despite)24 b(that,)i(for)d(a)i(wide)g(range)e (of)h(problems,)g(by)g(minimizing)0 2981 y(the)c(edgecut,)f(the)h (partitioning)e(algorithms)h(also)i(minimize)e(the)h(communication)e (cost)i(reasonably)f(well.)100 3090 y(Ho)n(we)n(v)o(er)m(,)29 b(there)f(are)h(cases)h(in)f(which)f(a)i(partitioning)d(algorithm)g (can)i(signi\002cantly)f(reduce)g(the)h(communication)d(cost)j(by)0 3200 y(directly)24 b(minimizing)f(this)j(objecti)n(v)o(e)d(\(as)i (opposed)e(to)i(the)g(edgecut\).)39 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)29 b FL(no)n(w)c(pro)o(vides)e(the)i Fz(METIS)p 3238 3200 V 30 w(P)m(ar)s(tGr)o(aphVKw)o(a)n(y)0 3309 y FL(and)32 b Fz(METIS)p 411 3309 V 30 w(WP)m(ar)s(tGr)o(aphVKw)o (a)n(y)h FL(routines)e(that)h(directly)g(minimize)f(the)h (communication)d(cost)k(as)g(de\002ned)e(by)g(the)h(total)0 3419 y(communication)16 b(v)n(olume)i(resulted)g(by)h(the)g (partitioning)e(\(see)i(Section)g(5.3)f(for)g(a)i(precise)e (de\002nition)g(of)h(this)g(objecti)n(v)o(e)f(function\).)0 3529 y(Note)24 b(that)g(for)f(these)h(routines)f(to)g(pro)o(vide)f (meaningful)g(partitionings,)g(the)i(connecti)n(vity)e(of)h(the)h (graph)f(should)f(re\003ect)i(the)g(true)0 3638 y(information)18 b(e)o(xchange)g(requirements)g(of)i(the)g(underlying)e(computation.)0 3847 y FB(Minimizing)28 b(the)g(Maxim)n(um)h(Connectivity)f(of)g(the)h (Subdomains)99 b FL(The)25 b(communication)d(cost)k(resulting)e(from)h (a)h Ft(k)5 b FL(-)0 3957 y(w)o(ay)23 b(partitioning)e(in)j(general)e (depends)g(on)g(the)i(follo)n(wing)d(f)o(actors:)31 b(\(i\))23 b(the)g(total)h(communication)c(v)n(olume,)j(\(ii\))g(the)g(maximum)0 4067 y(amount)e(of)i(data)f(that)h(an)o(y)f(particular)f(processor)g (needs)h(to)h(send)g(and)f(recei)n(v)o(e;)h(and)f(\(iii\))g(the)h (number)e(of)h(messages)h(a)g(processor)0 4176 y(needs)f(to)h(send)g (and)f(recei)n(v)o(e.)31 b(The)23 b(partitioning)d(routines)i(in)h (earlier)f(v)o(ersions)g(of)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(concentrated)21 b(only)h(on)g(the)h(\002rst)g(f)o (actor)0 4286 y(\(by)30 b(minimizing)f(the)h(edgecut\).)54 b(In)30 b(this)h(release,)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)35 b FL(also)c(pro)o(vides)d(support)i(for)f(minimizing)g (the)i(third)f(f)o(actor)f(\(which)0 4395 y(essentially)21 b(reduces)f(the)h(number)e(of)h(startups\))g(and)h(indirectly)e(\(up)h (to)h(a)g(point\))f(reduces)g(the)h(second)f(f)o(actor)-5 b(.)26 b(Experiments)19 b(ha)n(v)o(e)0 4505 y(sho)n(wn)26 b(that)h(for)f(most)h(graphs)e(corresponding)e(to)k(\002nite)g(element) f(meshes,)i(the)f(ne)n(w)g(release)f(of)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)31 b FL(is)d(able)e(to)h(reduce)f(the)0 4614 y(maximum)i(\(and)g(total\))h(number)f(of)h(adjacent)f(subdomains) g(considerably\227especially)e(when)j(the)g(graph)f(is)i(partitioned)e (in)h(a)0 4724 y(relati)n(v)o(ely)18 b(lar)o(ge)g(number)f(of)i (partitions)f(\()p Fs(e)o(.g)o FL(.,)h(greater)f(than)h(30\).)24 b(F)o(or)19 b(most)g(3D)g(\002nite)g(elements)g(graphs,)f(the)h (maximum)e(number)0 4834 y(of)j(subdomains)e(for)i(a)h(50-w)o(ay)d (partition)i(has)g(been)f(reduced)g(from)g(around)f(25)i(to)h(around)d (16.)100 4943 y(This)66 b(enhancement)d(is)j(pro)o(vided)e(as)i(a)g (re\002nement)e(option)h(for)g(both)g(the)h Fz(METIS)p 3041 4943 V 30 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)g FL(and)0 5053 y Fz(METIS)p 258 5053 V 31 w(P)m(ar)s(tGr)o(aphVKw)o(a)n(y)20 b FL(routines,)f(and)h(is)h(the)f(def)o(ault)g(option)f(of)g Fz(kmetis)i FL(and)f Fz(METIS)p 2822 5053 V 30 w(P)m(ar)s(tGr)o(aphKw)o (a)n(y)p FL(.)0 5262 y FB(Reducing)28 b(the)h(Number)g(of)f (Non-Contiguous)e(Subdomains)99 b FL(A)26 b Ft(k)5 b FL(-w)o(ay)25 b(partitioning)f(of)h(a)h(contiguous)e(graph)g(can)0 5372 y(often)h(lead)g(to)h(some)f(subdomains)f(being)g(assigned)h (non-contiguous)d(portions)i(of)i(the)f(graph.)40 b(F)o(or)25 b(man)o(y)f(problems,)h(the)h(non-)1929 5649 y(6)p eop %%Page: 7 7 7 6 bop 120 100 3661 17 v 120 199 a Fr(Chang)q(es)28 b(in)i(M)-6 b Fq(E)-21 b Fr(T)g Fq(I)o Fr(S)r(')-6 b(s)33 b(stand-alone)c(pr)n(ograms)p 120 257 V 120 357 a Fz(pmetis)1016 b FL(It)24 b(has)f(been)g(o)o(v)o(er)n(-loaded)d(to)j(in)m(v)n(ok)o(e)f (the)i(multi-constraint)d(partitioning)g(algo-)1380 457 y(rithm)f(when)f(the)h(graph)f(contains)h(multiple)f(v)o(erte)o(x)g (weights.)120 643 y Fz(kmetis)1020 b FL(It)24 b(has)f(been)g(o)o(v)o (er)n(-loaded)d(to)j(in)m(v)n(ok)o(e)f(the)i(multi-constraint)d (partitioning)g(algo-)1380 742 y(rithm)f(when)f(the)h(graph)f(contains) h(multiple)f(v)o(erte)o(x)g(weights.)1380 842 y(The)k(partitioning)e (algorithm)h(has)h(been)f(modi\002ed)g(to)i(also)f(minimize)f(the)h (con-)1380 941 y(necti)n(vity)c(of)h(the)g(subdomains.)1380 1041 y(A)f(pre-)e(and)g(post-re\002nement)f(step)i(is)h(applied)e(that) i(tries)f(to)g(reduce)f(the)h(number)1380 1141 y(of)i(non-contiguous)c (subdomains.)120 1327 y Fz(par)s(tnmesh)120 1426 y(par)s(tdmesh)1380 1327 y FL(The)23 b(partitioning)e(algorithm)h(has)h(been)f(modi\002ed)g (to)i(also)f(minimize)f(the)h(con-)1380 1426 y(necti)n(vity)c(of)h(the) g(subdomains.)p 120 1469 V 120 1768 V 120 1868 a Fr(Chang)q(es)28 b(in)i(M)-6 b Fq(E)-21 b Fr(T)g Fq(I)o Fr(S)r(lib')-6 b(s)32 b(r)n(outines)p 120 1926 V 120 2025 a Fz(METIS)p 378 2025 25 4 v 31 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)120 2125 y(METIS)p 378 2125 V 31 w(WP)m(ar)s(tGr)o(aphKw)o(a)n(y)1380 2025 y FL(A)19 b(ne)n(w)f(re\002nement)f(algorithm)f(has)j(been)e (added)h(that)g(also)g(minimizes)g(the)g(con-)1380 2125 y(necti)n(vity)j(of)i(the)f(subdomains.)30 b(This)22 b(ne)n(w)h(algorithm)d(has)j(been)f(made)g(the)g(de-)1380 2225 y(f)o(ault)e(option.)1380 2324 y(A)f(pre-)e(and)g (post-re\002nement)f(step)i(is)h(applied)e(that)i(tries)f(to)g(reduce)f (the)h(number)1380 2424 y(of)i(non-contiguous)c(subdomains.)120 2611 y Fz(METIS)p 378 2611 V 31 w(P)m(ar)s(tGr)o(aphVKw)o(a)n(y)120 2710 y(METIS)p 378 2710 V 31 w(WP)m(ar)s(tGr)o(aphVKw)o(a)n(y)1380 2611 y FL(This)28 b(is)h(a)f(ne)n(w)g(set)g(of)g(routines)f(that)h (compute)e(a)j Ft(k)5 b FL(-w)o(ay)27 b(partitioning)f(whose)1380 2710 y(objecti)n(v)o(e)19 b(is)i(to)f(minimize)g(the)g(total)g (communication)e(v)n(olume.)120 2898 y Fz(METIS)p 378 2898 V 31 w(mCP)m(ar)s(tGr)o(aphRecursiv)n(e)120 2997 y(METIS)p 378 2997 V 31 w(mCP)m(ar)s(tGr)o(aphKw)o(a)n(y)1380 2898 y FL(This)h(is)h(a)f(ne)n(w)g(set)h(of)e(routines)g(that)h (compute)f(a)h Ft(k)5 b FL(-w)o(ay)19 b(partitioning)e(subject)h(to) 1380 2997 y(multiple)i(balancing)e(constraints.)p 120 3040 3661 17 v 1105 3276 a Fy(T)-5 b(ab)o(le)18 b(1)p FL(:)26 b Fx(Summar)r(y)18 b(of)h(the)f(changes)h(in)h(M)l Fv(E)-17 b Fx(T)g Fv(I)p Fx(S)22 b(and)f(M)l Fv(E)-17 b Fx(T)g Fv(I)p Fx(S)r(lib.)0 3459 y FL(contiguity)23 b(is)j(a)f(result)g(of)g(the)g(underlying)d(geometry)h(and)i(often)f (leads)h(to)g(better)g(quality)f(partitions.)38 b(Ne)n(v)o(ertheless,) 25 b(there)g(are)0 3569 y(cases)32 b(in)g(which)e(the)i(partitioning)d (algorithm)h(is)i(fooled)e(and)h(breaks)f(certain)h(domains.)59 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)36 b FL(no)n(w)31 b(pro)o(vides)e(support)h(for)0 3678 y(eliminating)19 b(such)h(spurious)f(non-contiguous)d(subdomains.)100 3788 y(This)j(support)f(is)i(pro)o(vided)c(as)k(a)f(def)o(ault)g (option)f(for)g(both)g(the)h Fz(METIS)p 2213 3788 25 4 v 31 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)g FL(and)g Fz(METIS)p 3238 3788 V 30 w(P)m(ar)s(tGr)o(aphVKw)o(a)n(y)0 3898 y FL(routines,)g(and)h(the)g Fz(kmetis)g FL(program.)1929 5649 y(7)p eop %%Page: 8 8 8 7 bop 0 85 a FD(4)119 b(M)-6 b FA(E)-23 b FD(T)g FA(I)p FD(S)s(')-7 b(s)31 b(Stand-Alone)g(Pr)n(ograms)2 261 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)32 b FL(pro)o(vides)27 b(a)h(v)n(ariety)f(of)h(programs)e(that)i(can)g(be)g(used)g(to)g (partition)f(graphs,)h(partition)f(meshes,)j(compute)d(\002ll-reducing) 0 370 y(orderings)21 b(of)i(sparse)h(matrices,)f(as)h(well)g(as)g (programs)d(to)j(con)m(v)o(ert)d(meshes)i(into)g(graphs)f(appropriate)f (for)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(')-5 b(s)26 b(graph)c(parti-)0 480 y(tioning)d(programs.)100 590 y(The)j(rest)h(of)f(this)h(section)f(pro)o(vides)e(detailed)i (descriptions)f(about)h(the)g(functionality)f(of)h(these)g(programs,)f (ho)n(w)h(to)h(use)f(them,)0 699 y(the)e(format)f(of)h(the)g(input)g (\002les)h(required)d(by)i(them,)g(and)f(the)i(format)e(of)h(the)g (produced)d(output)i(\002les.)0 927 y Fr(4.1)100 b(Graph)27 b(P)m(ar)r(titioning)g(Pr)n(ograms)2 1086 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)30 b FL(pro)o(vides)25 b(tw)o(o)h(programs)e Fp(pmetis)i FL(and)g Fp(kmetis)f FL(for)h(partitioning)e(an)i (unstructured)d(graph)i(into)h Ft(k)32 b FL(equal)25 b(size)i(parts.)0 1196 y(The)c(partitioning)f(algorithm)h(used)g(by)h Fp(pmetis)f FL(is)i(based)e(on)g(multile)n(v)o(el)g(recursi)n(v)o(e)g (bisection)g(described)f(in)i([8)o(],)h(whereas)f(the)0 1305 y(partitioning)j(algorithm)h(used)h(by)f Fp(kmetis)h FL(is)h(based)f(on)g(multile)n(v)o(el)f Ft(k)5 b FL(-w)o(ay)29 b(partitioning)e(described)h(in)h([7)o(].)52 b(Both)29 b(of)g(these)0 1415 y(programs)24 b(are)i(able)g(to)g(produce)e(high)h (quality)g(partitions.)41 b(Ho)n(we)n(v)o(er)m(,)26 b(depending)d(on)i (the)h(application,)g(one)f(program)f(may)i(be)0 1524 y(preferable)16 b(than)i(the)g(other)-5 b(.)23 b(In)18 b(general,)f Fp(kmetis)h FL(is)h(preferred)c(when)j(it)g(is)h (necessary)f(to)g(partition)f(graphs)g(into)g(more)g(than)h(eight)0 1634 y(partitions.)37 b(F)o(or)25 b(such)f(cases,)i Fp(kmetis)e FL(is)i(considerably)c(f)o(aster)j(than)f Fp(pmetis)p FL(.)38 b(On)24 b(the)h(other)f(hand,)g Fp(pmetis)g FL(is)i(preferable) 0 1744 y(for)20 b(partitioning)e(a)i(graph)f(into)h(a)h(small)f(number) f(of)h(partitions.)100 1853 y(Both)g Fp(pmetis)f FL(and)h Fp(kmetis)g FL(are)g(in)m(v)n(ok)o(ed)e(by)i(pro)o(viding)d(tw)o(o)k (ar)o(guments)d(at)j(the)f(command)e(line)i(as)h(follo)n(ws:)257 2046 y FB(pmetis)124 b Fs(Gr)o(aphF)l(ile)f(Nparts)257 2155 y FB(kmetis)129 b Fs(Gr)o(aphF)l(ile)123 b(Nparts)100 2348 y FL(The)30 b(\002rst)h(ar)o(gument)e Fs(Gr)o(aphF)l(ile)p FL(,)j(is)f(the)g(name)f(of)g(the)h(\002le)g(that)g(stores)g(the)f (graph)f(\(whose)h(format)g(is)h(described)f(in)g(Sec-)0 2458 y(tion)19 b(4.5.1\),)f(while)i(the)f(second)g(ar)o(gument)e Fs(Nparts)p FL(,)j(is)h(the)e(number)f(of)h(partitions)g(that)h(is)g (desired.)k(Both)c Fp(pmetis)f FL(and)g Fp(kmetis)0 2567 y FL(can)i(partition)g(a)h(graph)e(into)h(an)g(arbitrary)f(number)g(of) h(partitions.)28 b(Upon)21 b(successful)g(e)o(x)o(ecution,)e(both)i (programs)f(display)h(statis-)0 2677 y(tics)i(re)o(garding)c(the)j (quality)f(of)h(the)g(computed)e(partitioning)f(and)j(the)g(amount)e (of)i(time)g(tak)o(en)g(to)g(perform)e(the)i(partitioning.)28 b(The)0 2786 y(actual)20 b(partitioning)e(is)j(stored)f(in)g(a)h (\002le)g(named)e Fo(GraphF)m(ile.part.Nparts)p FL(,)f(whose)i(format)f (is)j(described)c(in)j(Section)f(4.6.1.)100 2896 y(Figure)k(3)h(sho)n (ws)g(the)g(output)f(of)g Fp(pmetis)h FL(and)f Fp(kmetis)h FL(for)f(partitioning)f(a)i(graph)f(into)h(100)f(parts.)39 b(From)24 b(this)i(\002gure)e(we)0 3006 y(see)19 b(that)g(both)e (programs)g(initially)h(print)g(information)e(about)i(the)g(graph,)f (such)i(as)g(its)g(name,)f(the)h(number)d(of)j(v)o(ertices)f(\()p Fs(#V)-9 b(ertices)p FL(\),)0 3115 y(the)22 b(number)f(of)h(edges)g(\() p Fs(#Edg)o(es)p FL(\),)f(and)g(also)i(the)f(number)f(of)h(desired)f (partitions)h(\()p Fs(#P)-7 b(arts)p FL(\).)30 b(Ne)o(xt,)23 b(the)o(y)e(print)h(some)g(information)0 3225 y(re)o(garding)h(the)j (quality)f(of)h(the)g(partitioning.)40 b(Speci\002cally)-5 b(,)26 b(the)o(y)g(report)e(the)i(number)f(of)g(edges)h(being)f(cut)h (\()p Fs(Edg)o(e-Cut)p FL(\))e(by)i(the)0 3334 y(partitioning,)j(as)g (well)g(as)h(the)e(balance)g(of)h(the)f(partitioning)1841 3304 y Fn(1)1875 3334 y FL(.)51 b(Finally)-5 b(,)30 b(both)d Fp(pmetis)i FL(and)f Fp(kmetis)g FL(sho)n(w)g(the)h(time)g(tak)o(en)0 3444 y(by)e(the)g(v)n(arious)f(phases)h(of)g(the)g(algorithm.)44 b(All)27 b(times)h(are)f(in)g(seconds.)45 b(F)o(or)27 b(this)g(particular)f(e)o(xample,)h Fp(pmetis)g FL(required)e(a)0 3553 y(total)g(of)g(17.070)d(seconds,)j(of)g(which)f(13.850)f(seconds)h (w)o(as)i(tak)o(en)e(by)h(the)g(partitioning)e(algorithm)g(itself,)j (and)f(the)f(rest)i(w)o(as)f(to)0 3663 y(read)d(the)g(graph)f(itself.) 31 b(Similarly)-5 b(,)22 b Fp(kmetis)g FL(required)e(a)j(total)f(of)g (6.790)e(seconds,)i(of)g(which)g(3.570)e(seconds)i(w)o(as)h(tak)o(en)f (by)g(the)0 3773 y(partitioning)e(algorithm)g(itself.)31 b(As)23 b(you)e(can)h(see)g(from)f(this)i(e)o(xample,)d Fp(kmetis)i FL(is)h(considerably)c(f)o(aster)j(than)g Fp(pmetis)p FL(,)f(and)h(it)0 3882 y(produces)c(a)j(partitioning)d (that)j(is)g(slightly)f(better)f(than)h(that)g(produced)e(by)i Fp(pmetis)p FL(.)100 3992 y(Figure)e(4)g(sho)n(ws)h(the)f(output)g(of)g Fp(pmetis)g FL(and)g Fp(kmetis)g FL(for)g(partitioning)f(a)i(graph)e (into)h(16)g(parts)h(subject)f(to)h(three)f(balancing)0 4101 y(constraints.)41 b(Both)26 b Fp(pmetis)f FL(and)h Fp(kmetis)f FL(ha)n(v)o(e)g(been)g Fs(o)o(ver)n(-loaded)f FL(to)i(in)m(v)n(ok)o(e)f(the)h(multi-constraint)e(partitioning)g (routines)0 4211 y(whene)n(v)o(er)c(the)i(input)g(graph)e(\002le)j (speci\002es)g(more)e(that)h(one)g(set)h(of)f(v)o(erte)o(x)f(weights.) 30 b(Comparing)21 b(the)h(output)f(of)g(Figure)h(4)g(to)g(that)0 4321 y(of)c(Figure)f(3)h(we)g(see)h(that)f(when)f Fp(pmetis)h FL(and)f Fp(kmetis)h FL(operate)e(in)j(the)f(multi-constraint)d(mode)i (the)o(y)h(display)f(some)h(additional)0 4430 y(information)d(re)o (garding)g(the)j(number)e(of)i(constraints)f(and)h(also)g(the)g (balance)f(of)g(the)h(computed)e(partitioning)g(with)i(respect)g(to)g (each)0 4540 y(one)j(of)h(these)g(constraints.)28 b(In)22 b(this)g(e)o(xample,)f Fp(pmetis)g FL(w)o(as)h(able)g(to)g(balance)f (the)g(three)h(constraints)f(within)g(1\045,)h(3\045,)g(and)g(2\045,)0 4649 y(respecti)n(v)o(ely)-5 b(.)22 b(Note)c(that)g(for)g (multi-constraint)e(partitioning,)g(for)h(small)i(number)d(of)i (partitions)f Fp(pmetis)h FL(outperforms)d Fp(kmetis)0 4759 y FL(in)20 b(terms)h(of)f(partitioning)e(quality)-5 b(.)24 b(Ho)n(we)n(v)o(er)m(,)18 b(for)i(lar)o(ger)f(number)f(of)i (partitions)g Fp(kmetis)g FL(achie)n(v)o(es)f(better)h(quality)f(and)h (is)h(more)0 4869 y(rob)n(ust)f(in)g(simultaneously)f(balancing)f(the)i (v)n(arious)f(constraints.)p 0 5031 1560 4 v 87 5091 a Fm(1)120 5115 y FF(F)o(or)d(a)h Fk(k)k FF(w)o(ay)c(partition)j(of)c (a)h(graph)h(with)f Fk(n)j FF(v)o(ertices,)f(let)e Fk(m)k FF(be)c(the)g(size)h(of)f(the)g(lar)o(gest)h(part)g(produced)g(by)f (the)h Fk(k)5 b FF(-w)o(ay)17 b(partitioning)j(algorithm.)j(The)16 b(balance)0 5194 y(of)i(the)h(partitioning)i(is)d(de\002ned)h(as)f Fk(k)5 b(m)t Fl(=)t Fk(n)s FF(,)17 b(and)i(is)f(essentially)j(the)d (load)h(imbalance)i(induced)f(by)e(non-equal)i(partitions.)26 b Fj(pmetis)17 b FF(produces)i(partitions)i(that)e(are)0 5273 y(perfectly)h(balanced)g(at)d(each)i(bisection)g(le)n(v)o(el,)g (ho)n(we)n(v)o(er)m(,)g(some)e(small)h(load)g(imbalance)i(may)d(result) h(due)g(to)g(the)f(log)12 b Fk(k)22 b FF(le)n(v)o(els)d(of)e(recursi)n (v)o(e)i(bisection.)24 b(In)17 b(general,)0 5352 y(the)g(load)g (imbalance)h(is)e(less)h(than)f(1\045.)21 b Fj(kmetis)15 b FF(produces)i(partitions)i(that)e(are)f(not)h(perfectly)i(balanced,)f (b)o(ut)e(the)h(algorithm)h(limits)f(the)g(load)g(imbalance)h(to)f (3\045.)1929 5649 y FL(8)p eop %%Page: 9 9 9 8 bop 478 90 a Fi(')p 478 2466 7 2214 v 478 2635 a(&)3415 90 y($)p 3415 2466 V 3415 2635 a(\045)p 648 2635 2605 7 v 648 90 V 590 159 a Fj(prompt\045)39 b(pmetis)f(brack2.graph)h(100) 590 237 y(******************************************)o(*******)o (******)o(*******)o(*******)o(*)669 316 y(METIS)h(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i (Minnesota)590 474 y(Graph)f(Information)f (--------------------------------------------)o(-------)669 553 y(Name:)i(brack2.graph,)d(#Vertices:)i(62631,)g(#Edges:)g(366559,)f (#Parts:)h(100)590 711 y(Recursive)f(Partitioning...)g (-------------------------------------------)669 790 y(100-way)h(Edge-Cut:)118 b(37494,)39 b(Balance:)79 b(1.00)590 947 y(Timing)39 b(Information)f (-------------------------------------------)o(-------)669 1026 y(I/O:)1155 b(0.820)669 1105 y(Partitioning:)795 b(6.110)119 b(\(PMETIS)39 b(time\))669 1184 y(Total:)1075 b(6.940)590 1263 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)590 1421 y(prompt\045)39 b(kmetis)f(brack2.graph)h(100)590 1499 y (******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 1578 y(METIS)h(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 1736 y(Graph)f(Information)f (--------------------------------------------)o(-------)669 1815 y(Name:)i(brack2.graph,)d(#Vertices:)i(62631,)g(#Edges:)g(366559,) f(#Parts:)h(100)590 1973 y(K-way)g(Partitioning...)e (-----------------------------------------------)669 2052 y(100-way)i(Edge-Cut:)118 b(37310,)39 b(Balance:)79 b(1.03)590 2209 y(Timing)39 b(Information)f (-------------------------------------------)o(-------)669 2288 y(I/O:)1155 b(0.820)669 2367 y(Partitioning:)795 b(1.750)119 b(\(KMETIS)39 b(time\))669 2446 y(Total:)1075 b(2.570)590 2525 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)546 2871 y Fy(Figure)18 b(3)p FL(:)25 b Fx(Output)19 b(of)f Fp(pmetis)g Fx(and)h Fp(kmetis)e Fx(f)n(or)i(g)o(r)o(aph)g Fh(br)o(ac)n(k2.g)o(r)o (aph)g Fx(and)f(a)h(100-w)o(a)n(y)g(par)s(tition.)0 3055 y Fr(4.2)100 b(Mesh)28 b(P)m(ar)r(titioning)g(Pr)n(ograms)2 3214 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)34 b FL(pro)o(vides)28 b(tw)o(o)i(programs)d Fp(partnmesh)i FL(and)g Fp(partdmesh)f FL(for)h(partitioning)f(meshes)h(\()p Fs(e)o(.g)o FL(.,)j(those)d (arising)h(in)f(\002nite)0 3324 y(element)20 b(or)g(\002nite)g(v)n (olume)g(methods\))e(into)j Ft(k)k FL(equal)20 b(size)h(parts.)k(These) 20 b(programs)f(tak)o(e)h(as)h(input)f(the)g(element)g(node)f(array)h (of)g(the)0 3434 y(mesh)i(and)f(compute)f(a)j(partitioning)c(for)j (both)f(its)h(elements)g(and)f(its)i(nodes.)31 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)26 b FL(currently)21 b(supports)f(four)h (dif)n(ferent)f(types)i(of)0 3543 y(mesh)e(elements)g(which)g(are)g (triangles,)f(tetrahedra,)g(he)o(xahedra)e(\(bricks\),)i(and)h (quadrilaterals.)100 3653 y(These)j(programs)f(\002rst)j(con)m(v)o(ert) c(the)j(mesh)g(into)f(a)h(graph,)f(and)h(then)f(use)h Fp(kmetis)f FL(to)h(partition)f(this)h(graph.)34 b(The)24 b(dif)n(ference)0 3762 y(between)g(these)h(tw)o(o)g(programs)e(is)j (that)f Fp(partnmesh)f FL(con)m(v)o(erts)f(the)i(mesh)g(into)f(a)i (nodal)e(graph)f(\()p Fs(i.e)p FL(.,)j(each)e(node)g(of)h(the)g(mesh)0 3872 y(becomes)17 b(a)h(v)o(erte)o(x)f(of)g(the)h(graph\),)e(whereas)i Fp(partdmesh)f FL(con)m(v)o(erts)f(the)i(mesh)f(into)h(a)g(dual)g (graph)e(\()p Fs(i.e)o FL(.,)j(each)e(element)h(becomes)0 3981 y(a)f(v)o(erte)o(x)f(of)h(the)g(graph\).)22 b(In)17 b(the)g(case)g(of)g Fp(partnmesh)p FL(,)g(the)g(partitioning)e(of)i (the)g(nodal)f(graph)f(is)j(used)f(to)g(deri)n(v)o(e)f(a)i (partitioning)d(of)0 4091 y(the)h(elements.)23 b(In)16 b(the)g(case)g(of)f Fp(partdmesh)p FL(,)h(the)g(partitioning)e(of)h (the)h(dual)f(graph)g(is)i(used)e(to)h(deri)n(v)o(e)f(a)h(partitioning) e(of)i(the)g(nodes.)0 4201 y(Both)21 b(of)f(these)h(programs)e(produce) f(partitioning)h(of)h(comparable)f(quality)-5 b(,)19 b(with)i Fp(partnmesh)e FL(being)h(considerably)e(f)o(aster)j(than)0 4310 y Fp(partdmesh)p FL(.)41 b(Ho)n(we)n(v)o(er)m(,)25 b(in)h(some)g(cases,)h Fp(partnmesh)e FL(may)g(produce)f(partitions)h (that)h(ha)n(v)o(e)g(higher)e(load)h(imbalance)g(than)0 4420 y Fp(partdmesh)p FL(.)100 4529 y(Both)20 b Fp(partnmesh)f FL(and)h Fp(partdmesh)f FL(are)h(in)m(v)n(ok)o(ed)e(by)i(pro)o(viding)d (tw)o(o)k(ar)o(guments)d(at)j(the)f(command)e(line)i(as)h(follo)n(ws:) 257 4722 y FB(par)r(tnmesh)124 b Fs(MeshF)l(ile)g(Nparts)257 4832 y FB(par)r(tdmesh)g Fs(MeshF)l(ile)g(Nparts)100 5024 y FL(The)15 b(\002rst)i(ar)o(gument)c Fs(MeshF)l(ile)p FL(,)k(is)g(the)f(name)f(of)g(the)h(\002le)h(that)e(stores)i(the)e (mesh)h(\(whose)f(format)g(is)i(described)d(in)i(Section)g(4.5.2\),)0 5134 y(while)h(the)f(second)g(ar)o(gument)e Fs(Nparts)p FL(,)j(is)h(the)e(number)f(of)h(partitions)g(that)g(is)i(desired.)23 b(Both)16 b Fp(partnmesh)g FL(and)f Fp(partdmesh)h FL(can)0 5243 y(partition)24 b(a)i(mesh)f(into)g(an)g(arbitrary)e(number)h(of)h (partitions.)39 b(Upon)24 b(successful)h(e)o(x)o(ecution,)f(both)g (programs)f(display)i(statistics)0 5353 y(re)o(garding)h(the)j(quality) g(of)g(the)g(computed)e(partitioning)g(and)i(the)g(amount)f(of)h(time)g (tak)o(en)g(to)h(perform)d(the)i(partitioning.)50 b(The)1929 5649 y(9)p eop %%Page: 10 10 10 9 bop 478 90 a Fi(')p 478 2624 7 2372 v 478 2793 a(&)3415 90 y($)p 3415 2624 V 3415 2793 a(\045)p 648 2793 2605 7 v 648 90 V 590 159 a Fj(prompt\045)39 b(pmetis)f(m14.graph3)h(16)590 237 y(******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 316 y(METIS)h(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 474 y(Graph)f(Information)f (--------------------------------------------)o(-------)669 553 y(Name:)i(m14.graph3,)e(#Vertices:)g(214765,)h(#Edges:)g(1679018,)f (#Parts:)h(16)669 632 y(Balancing)g(Constraints:)f(3)590 790 y(Recursive)g(Partitioning...)g (-------------------------------------------)669 868 y(16-way)h(Edge-Cut:)119 b(74454,)39 b(Balance:)78 b(1.01)h(1.03)g (1.02)590 1026 y(Timing)39 b(Information)f (-------------------------------------------)o(-------)669 1105 y(I/O:)1155 b(4.310)669 1184 y(Partitioning:)756 b(28.410)118 b(\(PMETIS)39 b(time\))669 1263 y(Total:)1036 b(32.830)590 1342 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)590 1499 y(prompt\045)39 b(kmetis)f(m14.graph3)h(16)590 1578 y (******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 1657 y(METIS)h(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 1815 y(Graph)f(Information)f (--------------------------------------------)o(-------)669 1894 y(Name:)i(m14.graph3,)e(#Vertices:)g(214765,)h(#Edges:)g(1679018,) f(#Parts:)h(16)669 1973 y(Balancing)g(Constraints:)f(3)590 2130 y(K-way)h(Partitioning...)e (-----------------------------------------------)669 2209 y(16-way)i(Edge-Cut:)119 b(71410,)39 b(Balance:)78 b(1.04)h(1.04)g(1.04)590 2367 y(Timing)39 b(Information)f (-------------------------------------------)o(-------)669 2446 y(I/O:)1155 b(4.020)669 2525 y(Partitioning:)795 b(7.430)119 b(\(KMETIS)39 b(time\))669 2604 y(Total:)1036 b(11.550)590 2682 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)172 3028 y Fy(Figure)18 b(4)p FL(:)26 b Fx(Output)18 b(of)h Fp(pmetis)f Fx(and)g Fp(kmetis)g Fx(f)n(or)h(a)f(m)o(ulti-constr)o(aint)h(g)o(r)o (aph)f(with)h(three)g(constr)o(aints)f(and)h(a)f(16-w)o(a)n(y)h(par)s (tition.)0 3213 y FL(actual)f(partitioning)f(is)j(stored)e(in)h(tw)o(o) g(\002les)g(named:)24 b Fo(MeshF)m(ile.npart.Nparts)18 b FL(which)g(stores)h(the)f(partitioning)f(of)h(the)h(nodes,)f(and)0 3322 y Fo(MeshF)m(ile.epart.Nparts)j FL(which)f(stores)i(the)f (partitioning)f(of)h(the)g(elements.)28 b(The)21 b(format)f(of)i(the)f (partitioning)e(\002les)k(is)f(described)0 3432 y(in)e(Section)g (4.6.1.)100 3541 y(Figure)d(5)g(sho)n(ws)h(the)g(output)e(of)h Fp(partnmesh)g FL(and)g Fp(partdmesh)f FL(for)h(partitioning)f(a)i (mesh)f(with)h(tetrahedron)d(elements)j(into)0 3651 y(100)h(parts.)25 b(From)20 b(this)h(\002gure)e(we)i(see)f(that)h(both)e(programs)f (initially)j(print)e(information)f(about)h(the)h(mesh,)g(such)g(as)h (its)g(name,)f(the)0 3761 y(number)d(of)i(elements)f(\()p Fs(#Elements)p FL(\),)g(the)h(number)e(of)h(nodes)g(\()p Fs(#Nodes)p FL(\),)g(and)g(the)h(type)g(of)f(elements)h(\()p Fs(e)o(.g)n FL(.,)h Fs(TET)p FL(\).)e(Ne)o(xt,)h(the)o(y)f(print)0 3870 y(some)27 b(information)d(re)o(garding)g(the)j(quality)f(of)h(the) f(partitioning.)43 b(Speci\002cally)-5 b(,)28 b(the)o(y)e(report)g(the) h(number)e(of)h(edges)h(being)f(cut)0 3980 y(\()p Fs(Edg)o(e-Cut)p FL(\))21 b(by)h(the)h(partitioning)1017 3950 y Fn(2)1050 3980 y FL(,)h(as)g(well)f(as)h(the)e(balance)g(of)h(the)g (partitioning.)31 b(F)o(or)22 b(both)g Fp(partnmesh)g FL(and)g Fp(partdmesh)p FL(,)0 4089 y(the)h(balance)e(is)j(computed)c (with)j(respect)f(to)h(the)f(number)f(of)h(elements.)32 b(The)22 b(balance)g(with)g(respect)h(to)f(the)h(number)e(of)h(nodes)g (is)0 4199 y(not)e(sho)n(wn,)f(b)n(ut)h(it)h(is)g(in)g(general)e (similar)h(to)g(the)h(element)e(balance.)100 4309 y(Finally)-5 b(,)20 b(both)h Fp(partnmesh)f FL(and)g Fp(partdmesh)g FL(sho)n(w)h(the)g(time)h(that)f(w)o(as)h(tak)o(en)e(by)h(the)g(v)n (arious)f(phases)h(of)g(the)g(algorithm.)0 4418 y(All)k(times)h(are)e (in)h(seconds.)38 b(In)25 b(this)g(particular)f(e)o(xample,)g(it)h (took)f Fp(partnmesh)g FL(23.370)f(seconds)h(to)h(partition)e(the)i (mesh)g(into)0 4528 y(100)17 b(parts.)25 b(Note)18 b(that)g(this)h (time)f(includes)g(the)g(time)g(required)f(both)g(to)i(construct)e(the) h(nodal)f(graph)g(and)h(to)g(partition)g(it.)25 b(Similarly)-5 b(,)0 4637 y(it)24 b(took)f Fp(partdmesh)g FL(74.560)e(seconds)i(to)h (partition)e(the)i(same)g(mesh.)35 b(Again,)23 b(this)h(time)g (includes)f(the)g(time)h(required)e(both)g(to)0 4747 y(construct)j(the)h(dual)g(graph)e(and)i(to)g(partition)f(it.)43 b(As)27 b(you)f(can)f(see)i(from)e(this)i(e)o(xample,)f Fp(partnmesh)f FL(is)i(considerably)c(f)o(aster)0 4857 y(than)g Fp(partdmesh)p FL(.)32 b(This)23 b(is)h(because)e(of)h(tw)o(o) g(reasons:)31 b(\(i\))23 b(the)g(time)g(required)e(to)i(construct)f (the)h(nodal)f(graph)g(is)i(smaller)f(than)0 4966 y(the)d(time)h (required)d(to)i(construct)f(the)i(dual)e(graph;)g(\(ii\))h(the)h (nodal)e(graph)g(is)i(smaller)f(than)g(the)g(dual)g(graph.)p 0 5129 1560 4 v 87 5189 a Fm(2)120 5213 y FF(The)15 b(edgecut)j(that)f (is)f(reported)i(by)e Fj(partnmesh)e FF(is)h(that)i(of)f(the)h(nodal)g (graph,)f(whereas)h(the)g(edgecut)h(reported)f(by)f Fj(partdmesh)e FF(is)i(that)h(of)f(the)g(dual)h(graph.)0 5292 y(These)g(tw)o(o)h (edgecuts)h(cannot)f(be)g(compared)g(with)g(each)g(other)m(,)g(as)f (the)o(y)h(correspond)h(to)e(partitionings)k(of)16 b(tw)o(o)i(totally)h (dif)n(ferent)h(graphs.)1908 5649 y FL(10)p eop %%Page: 11 11 11 10 bop -18 83 a FB(Note)41 b FL(If)23 b(you)g(need)h(to)g(compute)e (multiple)h(partitionings)g(of)g(the)h(same)g(mesh,)h(it)g(may)e(be)h (preferable)e(to)i(\002rst)h(use)f(one)f(of)208 193 y(the)18 b(mesh)f(con)m(v)o(ersion)f(programs)g(described)h(in)h(Section)f(4.4)h (to)g(\002rst)h(con)m(v)o(ert)d(the)i(mesh)g(into)f(a)i(graph,)e(and)g (then)h(use)208 302 y Fp(kmetis)h FL(to)i(partition)e(it.)25 b(By)c(doing)e(this,)h(you)g(pay)f(the)h(cost)h(of)f(con)m(v)o(erting)d (the)j(mesh)g(into)g(a)h(graph)e(only)g(once.)478 555 y Fi(')p 478 2772 7 2054 v 478 2941 a(&)3415 555 y($)p 3415 2772 V 3415 2941 a(\045)p 648 2941 2605 7 v 648 555 V 590 622 a Fj(prompt\045)39 b(partnmesh)f(144.mesh)h(100)590 701 y(******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 780 y(METIS)h(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 938 y(Mesh)f(Information)f (---------------------------------------------)o(-------)669 1016 y(Name:)i(144.mesh,)e(#Elements:)g(905410,)h(#Nodes:)g(144649,)g (Etype:)g(TET)590 1174 y(Partitioning)f(Nodal)h(Graph...)g (-----------------------------------------)669 1253 y(100-way)g (Edge-Cut:)79 b(105207,)38 b(Balance:)79 b(1.03)590 1411 y(Timing)39 b(Information)f (-------------------------------------------)o(-------)669 1490 y(I/O:)1116 b(13.210)669 1569 y(Partitioning:)795 b(7.950)590 1647 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)590 1805 y(prompt\045)39 b(partdmesh)f(144.mesh)h(100)590 1884 y (******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 1963 y(METIS)h(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 2121 y(Mesh)f(Information)f (---------------------------------------------)o(-------)669 2199 y(Name:)i(144.mesh,)e(#Elements:)g(905410,)h(#Nodes:)g(144649,)g (Etype:)g(TET)590 2357 y(Partitioning)f(Dual)h(Graph...)g (------------------------------------------)669 2436 y(100-way)g(Edge-Cut:)118 b(52474,)39 b(Balance:)79 b(1.03)590 2594 y(Timing)39 b(Information)f (-------------------------------------------)o(-------)669 2673 y(I/O:)1116 b(11.540)669 2752 y(Partitioning:)756 b(28.220)590 2830 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)447 3176 y Fy(Figure)18 b(5)p FL(:)25 b Fx(Output)19 b(of)f Fp(partnmesh)f Fx(and)i Fp(partdmesh)e Fx(f)n(or)i(mesh)f Fh(144.mesh)h Fx(and)g(a)f(100-w)o(a)n(y)h(par)s(tition.)0 3491 y Fr(4.3)100 b(Spar)o(se)29 b(Matrix)f(Reor)n(dering)f(Pr)n(ograms)102 3647 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(pro)o(vides)20 b(tw)o(o)j(programs)e Fp(oemetis)h FL(and)g Fp(onmetis)g FL(for)g(computing)e(\002ll-reducing)h(orderings)g(of)h(sparse)h (matrices.)0 3756 y(Both)d(of)f(these)h(programs)d(use)j(multile)n(v)o (el)e(nested)i(dissection)f(to)h(compute)e(a)i(\002ll-reducing)d (ordering)g([8].)25 b(The)19 b(nested)g(dissection)0 3866 y(paradigm)k(is)j(based)f(on)f(computing)f(a)i(v)o(erte)o (x-separator)d(for)i(the)h(the)g(graph)e(corresponding)f(to)j(the)g (matrix.)39 b(The)24 b(nodes)g(in)i(the)0 3975 y(separator)18 b(are)i(mo)o(v)o(ed)d(to)j(the)f(end)g(of)h(the)f(matrix,)g(and)g(a)h (similar)f(process)g(is)i(applied)d(recursi)n(v)o(ely)g(for)h(each)g (one)g(of)g(the)h(other)e(tw)o(o)0 4085 y(parts.)100 4195 y(Ev)o(en)j(though)f(both)h(programs)f(are)i(based)g(on)g(multile) n(v)o(el)f(nested)h(dissection,)f(the)o(y)h(dif)n(fer)f(on)g(ho)n(w)h (the)o(y)f(compute)g(the)h(v)o(erte)o(x)0 4304 y(separators.)38 b(The)24 b Fp(oemetis)g FL(program)f(\002nds)i(a)g(v)o(erte)o(x)e (separator)h(by)g(\002rst)h(computing)e(an)i(edge)f(separator)f(using)h (a)i(multile)n(v)o(el)0 4414 y(algorithm,)f(whereas)f(the)h Fp(onmetis)g FL(program)e(uses)j(the)f(multile)n(v)o(el)f(paradigm)f (to)i(directly)g(\002nd)g(a)g(v)o(erte)o(x)f(separator)-5 b(.)39 b(The)25 b(or)n(-)0 4523 y(derings)20 b(produced)f(by)i Fp(onmetis)f FL(generally)g(incur)g(less)j(\002ll)f(than)f(those)g (produced)d(by)j Fp(oemetis)p FL(.)28 b(In)20 b(particular)m(,)g(for)h (matrices)0 4633 y(arising)g(in)g(linear)g(programming)d(problems)i (the)h(orderings)f(computed)f(by)i Fp(onmetis)f FL(are)h (signi\002cantly)g(better)g(than)g(those)g(pro-)0 4742 y(duced)f(by)g Fp(oemetis)p FL(.)26 b(Furthermore,)18 b Fp(onmetis)i FL(utilizes)i(compression)d(techniques)g(to)i(reduce)f (the)g(size)i(of)e(the)h(graph)f(prior)f(to)0 4852 y(computing)f(the)j (ordering.)j(Sparse)c(matrices)g(arising)g(in)h(man)o(y)e(application)g (domains)h(are)g(such)g(that)h(certain)f(ro)n(ws)g(of)h(the)f(matrix)0 4962 y(ha)n(v)o(e)27 b(the)g(same)g(sparsity)g(pattern.)45 b(Such)27 b(matrices)g(can)g(be)g(represented)e(by)i(a)h(much)e (smaller)h(graph)f(in)h(which)g(all)g(ro)n(ws)g(with)0 5071 y(identical)d(sparsity)g(pattern)g(are)g(represented)f(by)h(just)h (a)g(single)g(v)o(erte)o(x)e(whose)h(weight)g(is)h(equal)f(to)h(the)f (number)f(of)h(ro)n(ws.)38 b(Such)0 5181 y(compression)21 b(techniques)g(can)h(signi\002cantly)g(reduce)f(the)i(size)g(of)g(the)f (graph,)g(whene)n(v)o(er)e(applicable,)i(and)g(substantially)g(reduce)0 5290 y(the)k(amount)f(of)g(time)i(required)d(by)h Fp(onmetis)p FL(.)42 b(Ho)n(we)n(v)o(er)m(,)25 b(when)h(there)f(is)i(no)f(reduction) e(in)i(graph)e(size,)k Fp(oemetis)e FL(is)h(about)0 5400 y(20\045)19 b(to)h(30\045)f(f)o(aster)g(than)g Fp(onmetis)p FL(.)24 b(Furthermore,)17 b(for)i(lar)o(ge)f(matrices)h(arising)g(in)h (three-dimensional)c(problems,)i(the)h(quality)1908 5649 y(11)p eop %%Page: 12 12 12 11 bop 478 7 a Fi(')p 478 2541 7 2372 v 478 2710 a(&)3415 7 y($)p 3415 2541 V 3415 2710 a(\045)p 648 2710 2605 7 v 648 7 V 590 76 a Fj(prompt\045)39 b(oemetis)f(bcsstk31.graph)590 154 y(******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 233 y(METIS)i(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 391 y(Graph)f(Information)f (--------------------------------------------)o(-------)669 470 y(Name:)i(bcsstk31.graph,)d(#Vertices:)h(35588,)h(#Edges:)g(572914) 590 628 y(Edge-Based)f(Ordering...)g (----------------------------------------------)669 707 y(Nonzeros:)h(4693428,)158 b(Operation)39 b(Count:)g(1.4356e+09)590 864 y(Timing)g(Information)f (-------------------------------------------)o(-------)669 943 y(I/O:)1155 b(1.160)669 1022 y(Ordering:)955 b(7.380)119 b(\(OEMETIS)39 b(time\))669 1101 y(Symbolic)g(Factorization:)396 b(0.440)669 1180 y(Total:)1075 b(8.980)590 1259 y (******************************************)o(*******)o(******)o (*******)o(*******)o(*)590 1416 y(prompt\045)39 b(onmetis)f (bcsstk31.graph)590 1495 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)669 1574 y(METIS)i(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i (Minnesota)590 1732 y(Graph)f(Information)f (--------------------------------------------)o(-------)669 1811 y(Name:)i(bcsstk31.graph,)d(#Vertices:)h(35588,)h(#Edges:)g (572914)590 1968 y(Node-Based)f(Ordering...)g (----------------------------------------------)669 2047 y(Nonzeros:)h(4330669,)158 b(Operation)39 b(Count:)g(1.1564e+09)590 2205 y(Timing)g(Information)f (-------------------------------------------)o(-------)669 2284 y(I/O:)1155 b(1.080)669 2363 y(Ordering:)955 b(4.540)119 b(\(ONMETIS)39 b(time\))669 2442 y(Symbolic)g(Factorization:)396 b(0.440)669 2521 y(Total:)1075 b(6.060)590 2599 y (******************************************)o(*******)o(******)o (*******)o(*******)o(*)826 2945 y Fy(Figure)18 b(6)p FL(:)25 b Fx(Output)19 b(of)f Fp(oemetis)g Fx(and)g Fp(onmetis)g Fx(f)n(or)g(g)o(r)o(aph)h Fh(bcsstk31.g)o(r)o(aph)q Fx(.)0 3130 y FL(of)h(orderings)e(produced)g(by)i(the)g(tw)o(o)g(algorithms)f (is)i(quite)f(similar)-5 b(.)100 3239 y(Both)20 b Fp(oemetis)f FL(and)h Fp(onmetis)f FL(are)i(in)m(v)n(ok)o(ed)d(by)i(pro)o(viding)d (one)j(ar)o(gument)e(at)i(the)g(command)f(line)h(as)h(follo)n(ws:)257 3432 y FB(oemetis)124 b Fs(Gr)o(aphF)l(ile)257 3541 y FB(onmetis)119 b Fs(Gr)o(aphF)l(ile)100 3734 y FL(The)23 b(only)f(ar)o(gument)f(of)i(these)h(programs)d Fs(Gr)o(aphF)l(ile)p FL(,)i(is)i(the)e(name)g(of)g(the)g(\002le)h(that)g(stores)g(the)f (sparse)g(matrix)g(in)h(the)f(graph)0 3844 y(format)g(described)g(in)h (Section)f(4.5.1.)35 b(Upon)24 b(successful)f(e)o(x)o(ecution,)g(both)g (programs)f(display)i(statistics)h(re)o(garding)c(the)j(quality)0 3953 y(of)19 b(the)f(computed)f(orderings)g(and)h(the)h(amount)e(of)i (time)g(tak)o(en)f(to)h(perform)e(the)i(ordering.)j(The)d(actual)f (ordering)f(is)i(stored)g(in)g(a)g(\002le)0 4063 y(named)g Fo(GraphF)m(ile.iperm)p FL(,)g(whose)h(format)f(is)i(described)e(in)i (Section)e(4.6.2.)100 4172 y(Figure)i(6)g(sho)n(ws)h(the)g(output)e(of) h Fp(oemetis)g FL(and)g Fp(onmetis)g FL(for)g(computing)f(a)i (\002ll-reducing)d(ordering)h(of)h(a)h(sample)f(matrix.)0 4282 y(From)i(this)h(\002gure)f(we)h(see)g(that)f(both)g(programs)f (initially)h(print)g(information)e(about)i(the)g(graph,)g(such)h(as)g (its)g(name,)g(the)f(number)0 4392 y(of)e(v)o(ertices)g(\()p Fs(#V)-9 b(ertices)p FL(\),)20 b(and)g(the)i(number)d(of)i(edges)g(\()p Fs(#Edg)o(es)p FL(\).)26 b(Ne)o(xt,)21 b(the)o(y)f(print)g(some)h (information)e(re)o(garding)f(the)k(quality)e(of)0 4501 y(the)f(ordering.)k(Speci\002cally)-5 b(,)18 b(the)o(y)g(report)g(the)h (number)f(of)g(non-zeros)f(that)j(are)f(required)e(in)i(the)g(lo)n(wer) g(triangular)f(matrix,)g(and)h(the)0 4611 y(number)e(of)i(operations)e (\()p Fs(OPC)p FL(\))i(required)e(to)i(f)o(actor)f(the)h(matrix)g (using)f(Cholesk)o(y)g(f)o(actorization.)23 b(Note)c(that)g(number)e (of)h(nonzeros)0 4720 y(includes)26 b(both)g(the)i(original)d (non-zeros)g(and)i(the)g(ne)n(w)g(non-zeros)e(due)h(to)h(the)g(\002ll.) 46 b(Finally)-5 b(,)28 b(both)f Fp(oemetis)f FL(and)g Fp(onmetis)0 4830 y FL(sho)n(w)h(the)g(time)h(that)f(w)o(as)h(tak)o(en) f(by)g(the)g(v)n(arious)g(phases)g(of)g(the)g(algorithm.)45 b(All)28 b(times)g(are)f(in)g(seconds.)46 b(F)o(or)27 b(this)h(particular)0 4940 y(e)o(xample,)e Fp(oemetis)f FL(tak)o(es)i(a)f(total)g(of)g(23.290)e(seconds,)j(of)f(which)f(17.760) f(seconds)i(w)o(as)h(tak)o(en)e(by)h(the)g(ordering)e(algorithm)0 5049 y(itself.)41 b(F)o(or)25 b(the)g(same)h(e)o(xample)e Fp(onmetis)g FL(tak)o(es)i(a)f(total)h(of)f(17.340)e(seconds,)j(of)f (which)g(11.810)e(seconds)i(w)o(as)h(tak)o(en)f(by)g(the)0 5159 y(partitioning)d(algorithm)h(itself.)38 b(Note)24 b(that)g(in)h(this)g(case)f Fp(onmetis)g FL(is)h(f)o(aster)f(than)g Fp(oemetis)p FL(,)g(because)g Fp(onmetis)g FL(w)o(as)h(able)0 5268 y(to)20 b(compress)g(the)g(matrix.)k(Also)d(note)e(that)i(the)f (quality)f(of)h(the)g(\002ll-reducing)e(ordering)g(produced)g(by)i Fp(onmetis)f FL(is)i(signi\002cantly)0 5378 y(better)j(than)g(that)g (produced)e(by)i Fp(oemetis)p FL(.)37 b(In)24 b(f)o(act,)i(the)e (ordering)e(produced)g(by)i Fp(onmetis)g FL(results)h(in)f(8\045)h(fe)n (wer)f(non-zeros)1908 5649 y(12)p eop %%Page: 13 13 13 12 bop 0 83 a FL(and)20 b(20\045)g(fe)n(wer)f(operations.)0 314 y Fr(4.4)100 b(A)m(uxiliar)q(y)28 b(Pr)n(ograms)0 470 y FB(4.4.1)84 b(Mesh)23 b(T)-7 b(o)23 b(Graph)f(Con)m(ver)o(sion) 478 593 y Fi(')p 478 2809 7 2054 v 478 2979 a(&)3415 593 y($)p 3415 2809 V 3415 2979 a(\045)p 648 2979 2605 7 v 648 593 V 590 660 a Fj(prompt\045)39 b(mesh2nodal)f(144.mesh)590 739 y(******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 818 y(METIS)i(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 975 y(Mesh)f(Information)f (---------------------------------------------)o(-------)669 1054 y(Name:)i(144.mesh,)e(#Elements:)g(905410,)h(#Nodes:)g(144649,)g (Etype:)g(TET)590 1212 y(Forming)g(Nodal)g(Graph...)f (----------------------------------------------)669 1291 y(Nodal)i(Information:)e(#Vertices:)g(144649,)h(#Edges:)g(1074393)590 1449 y(Timing)g(Information)f (-------------------------------------------)o(-------)669 1527 y(I/O:)1116 b(15.290)669 1606 y(Nodal)40 b(Creation:)715 b(3.030)590 1685 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)590 1843 y(prompt\045)39 b(mesh2dual)f(144.mesh)590 1922 y (******************************************)o(*******)o(******)o (*******)o(*******)o(*)669 2001 y(METIS)i(4.0)119 b(Copyright)38 b(1998,)h(Regents)g(of)h(the)f(University)f(of)i(Minnesota)590 2158 y(Mesh)f(Information)f (---------------------------------------------)o(-------)669 2237 y(Name:)i(144.mesh,)e(#Elements:)g(905410,)h(#Nodes:)g(144649,)g (Etype:)g(TET)590 2395 y(Forming)g(Dual)g(Graph...)f (-----------------------------------------------)669 2474 y(Dual)i(Information:)e(#Vertices:)g(905410,)h(#Edges:)g(1786484) 590 2632 y(Timing)g(Information)f (-------------------------------------------)o(-------)669 2710 y(I/O:)1116 b(19.200)669 2789 y(Dual)40 b(Creation:)716 b(10.880)590 2868 y(******************************************)o (*******)o(******)o(*******)o(*******)o(*)785 3214 y Fy(Figure)18 b(7)p FL(:)25 b Fx(Output)19 b(of)g Fp(mesh2nodal)e Fx(and)h Fp(mesh2dual)f Fx(f)n(or)i(mesh)f Fh(144.mesh)q Fx(.)102 3408 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)27 b FL(pro)o(vides)21 b(tw)o(o)j(programs)d Fp(mesh2nodal)h FL(and)g Fp(mesh2dual)g FL(for)h(con)m(v)o(erting)d(a)j(mesh)g(into)g (the)g(graph)f(format)g(used)0 3518 y(by)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(.)24 b(In)e(particular)m(,)f Fp(mesh2nodal)g FL(con)m(v)o(erts)g(the)h(element)g(node)f(array)g(of)h (a)h(mesh)f(into)g(a)h(nodal)e(graph;)h Fs(i.e)p FL(.,)h(each)f(node)0 3627 y(of)30 b(the)f(mesh)h(corresponds)e(to)i(a)g(v)o(erte)o(x)e(in)i (the)g(graph)e(and)i(tw)o(o)g(v)o(ertices)f(are)h(connected)e(by)h(an)h (edge)f(if)h(the)g(corresponding)0 3737 y(nodes)c(are)h(connected)d(by) j(lines)g(in)g(the)f(mesh.)45 b(Similarly)-5 b(,)27 b Fp(mesh2dual)f FL(con)m(v)o(erts)e(the)j(element)f(node)g(array)g(of)g (a)h(mesh)g(into)0 3847 y(a)g(dual)f(graph;)i Fs(i.e)p FL(.,)g(each)e(element)g(of)g(the)h(mesh)f(corresponds)f(to)h(a)h(v)o (erte)o(x)e(in)i(the)f(graph)f(and)h(tw)o(o)h(v)o(ertices)f(are)h (connected)d(if)0 3956 y(the)c(corresponding)d(elements)j(in)h(the)f (mesh)h(share)f(a)h(f)o(ace.)k(These)c(mesh-to-graph)c(con)m(v)o (ersion)g(programs)i(support)g(meshes)h(with)0 4066 y(triangular)m(,)e (tetrahedra,)g(and)i(he)o(xahedra)e(\(bricks\))h(elements.)100 4175 y(Both)h Fp(mesh2nodal)f FL(and)g Fp(mesh2dual)g FL(are)i(in)m(v)n(ok)o(ed)d(by)i(pro)o(viding)d(one)j(ar)o(gument)e(at) i(the)h(command)d(line)i(as)h(follo)n(ws:)257 4349 y FB(mesh2nodal)124 b Fs(MeshF)l(ile)257 4459 y FB(mesh2dual)175 b Fs(MeshF)l(ile)100 4633 y FL(The)30 b(only)h(ar)o(gument)d(of)j (these)g(programs)e Fs(MeshF)l(ile)p FL(,)34 b(is)e(the)f(name)g(of)f (the)h(\002le)h(that)f(stores)g(the)h(mesh)e(\(whose)h(format)f(is)0 4742 y(described)15 b(in)h(Section)g(4.5.2\).)22 b(Upon)15 b(successful)h(e)o(x)o(ecution,)f(both)g(programs)g(display)g (information)f(about)h(the)h(generated)f(graphs,)0 4852 y(and)k(the)h(amount)f(of)g(time)h(tak)o(en)g(to)g(perform)e(the)i(con) m(v)o(ersion.)i(The)e(actual)f(graph)g(is)i(stored)e(in)h(a)g(\002le)h (named:)j Fo(MeshF)m(ile.ngraph)0 4962 y FL(in)g(the)g(case)g(of)f Fp(mesh2nodal)f FL(and)i Fo(MeshF)m(ile.dgraph)e FL(in)i(the)g(case)g (of)f Fp(mesh2dual)p FL(.)35 b(The)23 b(format)f(of)i(these)g(graph)e (\002les)j(are)0 5071 y(compatible)19 b(with)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(and)19 b(is)i(described)e(in)i (Section)e(4.5.1.)100 5181 y(Figure)e(7)g(sho)n(ws)h(the)g(output)e(of) i Fp(mesh2nodal)e FL(and)h Fp(mesh2dual)g FL(for)g(generating)f(the)h (nodal)g(and)g(dual)h(graphs)e(of)i(a)g(sample)0 5290 y(mesh.)30 b(Note)22 b(that)g(the)g(sizes)h(of)e(the)h(generated)e (graphs)h(are)h(dif)n(ferent,)e(as)j(the)f(dual)f(graph)g(is)i(lar)o (ger)d(than)i(the)g(nodal)f(graph.)28 b(Also)0 5400 y(note)20 b(that)g(generating)e(the)i(nodal)g(graph)e(is)k(considerably)c(f)o (aster)i(than)g(generating)e(the)i(dual)g(graph.)1908 5649 y(13)p eop %%Page: 14 14 14 13 bop 0 83 a FB(4.4.2)84 b(Graph)22 b(Chec)n(ker)2 209 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(pro)o(vide)18 b(a)j(program)d(called)j Fp(graphchk)e FL(to)i(check)f(whether)f(or)h (not)g(the)h(format)e(of)h(a)h(graph)e(is)j(appropriate)c(for)i(use)g (with)2 319 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(.)24 b(This)e(program)e(should)h(be)h(used)g(whene)n(v)o(er)e(there) i(is)h(an)o(y)e(doubt)f(about)i(the)g(format)f(of)g(an)o(y)h(graph)e (\002le.)31 b(It)23 b(is)g(in)m(v)n(ok)o(ed)d(by)0 428 y(pro)o(viding)d(one)j(ar)o(gument)e(at)j(the)f(command)e(line)i(as)h (follo)n(ws:)257 621 y FB(graphc)o(hk)124 b Fs(Gr)o(aphF)l(ile)0 814 y FL(where)20 b Fs(Gr)o(aphF)l(ile)f FL(is)i(the)f(name)g(of)g(the) g(\002le)h(that)f(stores)g(the)h(graph.)1908 5649 y(14)p eop %%Page: 15 15 15 14 bop 0 83 a Fr(4.5)100 b(Input)27 b(File)h(Formats)0 242 y FL(The)d(v)n(arious)f(programs)g(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)29 b FL(require)24 b(as)i(input)f(either)g(a)h (\002le)g(storing)f(a)h(graph)e(or)h(a)h(\002le)g(storing)e(a)i(mesh.) 40 b(The)26 b(format)e(of)0 352 y(these)c(\002les)i(are)e(described)f (in)h(the)g(follo)n(wing)f(sections.)0 561 y FB(4.5.1)84 b(Graph)22 b(File)0 687 y FL(The)j(primary)f(input)g(of)i(the)f (partitioning)e(and)i(\002ll-reducing)f(ordering)f(programs)g(in)28 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)30 b FL(is)c(the)f(graph)f(to)i (be)f(partitioned)f(or)0 797 y(ordered.)f(This)d(graph)f(is)i(stored)f (in)g(a)h(\002le)g(and)e(is)j(supplied)d(to)h(the)g(v)n(arious)f (programs)g(as)i(one)e(of)h(the)g(command)f(line)h(parameters.)100 907 y(A)i(graph)h Ft(G)32 b FM(D)26 b Fu(.)r Ft(V)8 b Fu(;)20 b Ft(E)7 b Fu(/)24 b FL(with)e Ft(n)k FL(v)o(ertices)c(and)f Ft(m)28 b FL(edges)22 b(is)h(stored)f(in)g(a)h(plain)f(te)o(xt)g (\002le)h(that)f(contains)f Ft(n)j FM(C)19 b FL(1)k(lines)f(\(e)o (xcluding)0 1016 y(comment)i(lines\).)40 b(The)25 b(\002rst)h(line)f (contains)g(information)e(about)h(the)h(size)h(and)f(the)g(type)g(of)g (the)g(graph,)g(while)g(the)g(remaining)f Ft(n)0 1126 y FL(lines)d(contain)e(information)f(for)h(each)h(v)o(erte)o(x)f(of)j Ft(G)5 b FL(.)25 b(An)o(y)19 b(line)i(that)f(starts)h(with)f(`\045')h (is)g(a)f(comment)f(line)h(and)g(is)h(skipped.)100 1235 y(The)g(\002rst)h(line)f(contains)g(either)g(tw)o(o)h(\()p Ft(n)s FL(,)g Ft(m)5 b FL(\),)21 b(three)g(\()p Ft(n)s FL(,)h Ft(m)5 b FL(,)22 b Fs(fmt)p FL(\),)g(or)f(four)f(\()p Ft(n)s FL(,)i Ft(m)5 b FL(,)22 b Fs(fmt)p FL(,)g Fs(ncon)p FL(\))e(inte)o(gers.)28 b(The)21 b(\002rst)h(tw)o(o)f(inte)o(gers)0 1345 y(\()p Ft(n)s FL(,)f Ft(m)5 b FL(\))19 b(are)g(the)g(number)e(of)i (v)o(ertices)f(and)h(the)g(number)e(of)i(edges,)g(respecti)n(v)o(ely)-5 b(.)22 b(Note)d(that)h(in)f(determining)e(the)i(number)e(of)i(edges)0 1455 y Ft(m)5 b FL(,)26 b(an)e(edge)g(between)g(an)o(y)f(pair)h(of)h(v) o(ertices)f Fu(v)k FL(and)c Ft(u)29 b FL(is)d(counted)d FC(only)h(once)g FL(and)g(not)g(twice)h(\()p Fs(i.e)p FL(.,)g(we)g(do)f(not)g(count)g(the)g(edge)0 1564 y Fu(.v)s(;)14 b Ft(u)t Fu(/)22 b FL(separately)e(from)g Fu(.)p Ft(u)t Fu(;)14 b(v)s(/)p FL(\).)28 b(F)o(or)20 b(e)o(xample,)f(the)i(graph)f (in)h(Figure)f(8)g(contains)h(11)f(v)o(ertices.)26 b(The)21 b(third)f(inte)o(ger)f(\()p Fs(fmt)p FL(\))i(is)h(used)0 1674 y(to)h(specify)g(whether)f(or)h(not)g(the)g(graph)f(has)i(weights) f(associated)g(with)g(its)h(v)o(ertices,)g(its)g(edges,)f(or)g(both.)33 b(T)-7 b(able)24 b(2)f(describes)g(the)0 1783 y(possible)i(v)n(alues)g (of)h Fs(fmt)g FL(and)f(their)g(meaning.)40 b(Note)25 b(that)h(if)g(the)g(graph)e(is)i(unweighted)e(\()p Fs(i.e)o FL(.,)j(all)f(v)o(ertices)f(and)g(edges)h(ha)n(v)o(e)f(the)0 1893 y(same)d(weight\),)f(then)h(the)f Fs(fmt)j FL(parameter)d(can)g (be)h(omitted.)29 b(Finally)-5 b(,)22 b(the)g(fourth)e(inte)o(ger)h(\() p Fs(ncon)p FL(\))f(is)j(used)e(to)h(specify)g(the)f(number)0 2003 y(of)e(weights)g(associated)f(with)i(each)e(v)o(erte)o(x)g(of)g (the)h(graph.)24 b(The)18 b(v)n(alue)h(of)f(this)i(parameter)d (determines)h(whether)g(or)h(not)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)23 b FL(will)0 2112 y(use)e(the)f(multi-constraint)e (partitioning)h(algorithms)g(described)g(in)i(Section)f(3.)26 b(If)20 b(the)g(v)o(ertices)g(of)g(the)h(graph)e(ha)n(v)o(e)h(no)g (weights)g(or)0 2222 y(only)h(a)h(single)f(weight,)g(then)g(the)h Fs(ncon)f FL(parameter)f(can)h(be)g(omitted.)29 b(Ho)n(we)n(v)o(er)m(,) 19 b(if)j Fs(ncon)f FL(is)h(greater)f(than)g(0,)h(then)f(the)g(\002le)i (should)0 2331 y(contain)18 b(the)h(required)f(v)o(erte)o(x)g(weights)h (and)f(the)h Fs(fmt)h FL(parameter)e(should)g(be)h(set)h(appropriately) d(\()p Fs(i.e)o FL(.,)j(it)f(should)g(be)g(set)h(to)f(either)g(10)0 2441 y(or)h(11\).)p 590 2625 2721 4 v 588 2725 4 100 v 640 2695 a Fs(fmt)p 794 2725 V 99 w FL(Meaning)p 3309 2725 V 590 2728 2721 4 v 588 2828 4 100 v 672 2798 a(0)p 794 2828 V 131 w(The)g(graph)f(has)h(no)g(weights)g(associated)g(with)h (either)e(the)i(edges)e(or)h(the)g(v)o(ertices)p 3309 2828 V 590 2831 2721 4 v 588 2930 4 100 v 672 2901 a(1)p 794 2930 V 131 w(The)g(graph)f(has)h(weights)g(associated)g(with)h(the) f(edges)p 3309 2930 V 590 2934 2721 4 v 588 3033 4 100 v 651 3004 a(10)p 794 3033 V 110 w(The)g(graph)f(has)h(weights)g (associated)g(with)h(the)f(v)o(ertices)p 3309 3033 V 590 3037 2721 4 v 588 3136 4 100 v 651 3106 a(11)p 794 3136 V 110 w(The)g(graph)f(has)h(weights)g(associated)g(with)h(both)e (the)h(edges)g(&)g(v)o(ertices)p 3309 3136 V 590 3140 2721 4 v 776 3292 a Fy(T)-5 b(ab)o(le)17 b(2)p FL(:)26 b Fx(The)18 b(v)n(ar)q(ious)h(possib)o(le)f(v)n(alues)h(f)n(or)g(the)f Fh(fmt)h Fx(par)o(ameter)e(and)i(their)f(meaning.)100 3571 y FL(The)f(remaining)g Ft(n)22 b FL(lines)c(store)h(information)c (about)j(the)g(actual)g(structure)f(of)h(the)g(graph.)23 b(In)18 b(particular)m(,)f(the)g Ft(i)9 b FL(th)18 b(line)g(\(e)o (xcluding)0 3680 y(comment)25 b(lines\))h(contains)f(information)f (that)i(is)h(rele)n(v)n(ant)e(to)h(the)f Ft(i)9 b FL(th)26 b(v)o(erte)o(x.)41 b(Depending)24 b(on)i(the)g(v)n(alue)f(of)h(the)g Fs(fmt)h FL(and)f Fs(ncon)0 3790 y FL(parameters,)d(the)h(information)e (stored)h(at)h(each)g(line)g(is)h(some)n(what)e(dif)n(ferent.)34 b(In)23 b(the)h(most)g(general)f(form)g(\(when)g Fs(fmt)h(=)h(11)e FL(and)0 3899 y Fs(ncon)c Fu(>)i Fs(1)p FL(\))f(each)f(line)i(will)g (ha)n(v)o(e)e(the)h(follo)n(wing)f(structure:)1225 4100 y Fu(w)1286 4112 y Fn(1)1322 4100 y Fu(;)14 b(w)1424 4112 y Fn(2)1460 4100 y Fu(;)g(:)g(:)g(:)f(w)1672 4112 y Ff(n)r(c)q(o)q(n)1806 4100 y Fu(;)38 b(v)1911 4112 y Fn(1)1947 4100 y Fu(;)14 b Ft(e)2025 4112 y Fn(1)2061 4100 y Fu(;)g(v)2142 4112 y Fn(2)2178 4100 y Fu(;)g Ft(e)2256 4112 y Fn(2)2292 4100 y Fu(;)g(:)g(:)g(:)f(;)h(v)2524 4112 y Ff(k)2561 4100 y Fu(;)g Ft(e)2639 4112 y Ff(k)0 4301 y FL(where)20 b Fu(w)285 4313 y Fn(1)321 4301 y Fu(;)14 b(w)423 4313 y Fn(2)459 4301 y Fu(;)g(:)g(:)g(:)f(;)h(w)712 4313 y Ff(n)r(c)q(o)q(n)869 4301 y FL(are)21 b(the)g Fs(ncon)f FL(v)o(erte)o(x)f(weights)i(associated)g(with)g(this)h(v)o (erte)o(x,)d Fu(v)2765 4313 y Fn(1)2801 4301 y Fu(;)14 b(v)2882 4313 y Fn(2)2919 4301 y Fu(;)g(:)g(:)g(:)f(;)h(v)3151 4313 y Ff(k)3210 4301 y FL(are)20 b(the)i(v)o(ertices)e(adja-)0 4411 y(cent)h(to)f(this)h(v)o(erte)o(x,)f(and)g Ft(e)812 4423 y Fn(1)847 4411 y Fu(;)14 b Ft(e)925 4423 y Fn(2)961 4411 y Fu(;)g(:)g(:)g(:)f(;)h Ft(e)1190 4423 y Ff(k)1248 4411 y FL(are)20 b(the)h(weights)f(of)h(these)g(edges.)k(In)c(the)f (remaining)f(of)i(this)g(section)f(we)h(illustrate)g(this)0 4520 y(format)e(by)h(a)h(sequence)e(of)h(e)o(xamples.)k(Note)d(that)f (the)g(v)o(ertices)g(are)g(numbered)e(starting)i(from)g(1)g(\(not)g (from)f(0)h(as)h(is)h(often)d(done)g(in)0 4630 y(C\).)j(Furthermore,)d (the)i(v)o(erte)o(x-weights)e(must)i(be)h(inte)o(gers)e(greater)h(or)g (equal)g(to)g(0,)h(whereas)f(the)g(edge-weights)f(must)h(be)g(strictly) 0 4740 y(greater)e(than)h(0.)100 4849 y(The)k(simplest)g(format)g(for)f (a)i(graph)g Ft(G)30 b FL(is)25 b(when)f(the)h(weight)e(of)i(all)f(v)o (ertices)g(and)g(the)h(weight)f(of)g(all)h(the)f(edges)g(is)h(the)g (same.)0 4959 y(This)20 b(format)f(is)j(illustrated)d(in)i(Figure)e (8\(a\).)24 b(Note,)c(the)h(optional)d Fs(fmt)23 b FL(parameter)18 b(is)k(skipped)d(in)h(this)h(case.)100 5068 y(Ho)n(we)n(v)o(er)m(,)30 b(there)g(are)g(cases)h(in)f(which)g(the)g(edges)g(in)i Ft(G)k FL(ha)n(v)o(e)30 b(dif)n(ferent)e(weights.)55 b(This)30 b(is)i(accommodated)27 b(as)k(sho)n(wn)e(in)0 5178 y(Figure)21 b(8\(b\).)30 b(No)n(w)-5 b(,)22 b(the)g(adjacenc)o(y)f (list)i(of)f(each)f(v)o(erte)o(x)g(contains)h(the)g(weight)f(of)h(the)g (edges)g(in)g(addition)f(to)i(the)f(v)o(ertices)f(that)i(is)0 5288 y(connected)18 b(with.)25 b(If)20 b Fu(v)25 b FL(has)20 b Ft(k)26 b FL(v)o(ertices)19 b(adjacent)g(to)i(it,)f(then)g(the)g (line)g(for)g Fu(v)k FL(in)c(the)g(graph)f(\002le)i(contains)e(2)f FM(\003)g Ft(k)26 b FL(numbers,)18 b(each)i(pair)0 5397 y(of)j(numbers)f(stores)i(the)f(v)o(erte)o(x)f(that)i Fu(v)k FL(is)c(connected)e(to,)i(and)f(the)h(weight)f(of)g(the)g(edge.) 35 b(Note)23 b(that)h(the)f Fs(fmt)j FL(parameter)c(is)i(equal)1908 5649 y(15)p eop %%Page: 16 16 16 15 bop 600 3819 a @beginspecial 0 @llx 0 @lly 673 @urx 952 @ury 3240 @rwi @setspecial %%BeginDocument: ./figures/graph00.eps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -8.0 955.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Times-BoldItalic /Times-BoldItalic-iso isovec ReEncode /Times-Roman /Times-Roman-iso isovec ReEncode /Helvetica-Bold /Helvetica-Bold-iso isovec ReEncode /Courier /Courier-iso isovec ReEncode /Helvetica /Helvetica-iso isovec ReEncode /Times-Bold /Times-Bold-iso isovec ReEncode /Helvetica-BoldOblique /Helvetica-BoldOblique-iso isovec ReEncode /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n -1000 16912 m -1000 -1000 l 12337 -1000 l 12337 16912 l cp clip 0.06000 0.06000 sc % Polyline 7.500 slw n 826 3151 m 2026 2026 l gs col-1 s gr % Polyline n 901 3151 m 2926 2926 l gs col-1 s gr % Polyline n 2926 2926 m 2026 2026 l gs col-1 s gr % Polyline n 901 1276 m 1951 526 l gs col-1 s gr % Polyline n 1951 526 m 3226 1126 l gs col-1 s gr % Polyline n 1951 526 m 2026 2026 l gs col-1 s gr % Polyline n 2026 2026 m 976 1276 l gs col-1 s gr % Polyline n 3226 1126 m 2926 2926 l gs col-1 s gr % Polyline n 2926 2926 m 3976 2401 l gs col-1 s gr % Polyline n 3976 2401 m 3226 1126 l gs col-1 s gr % Polyline n 901 1276 m 826 3151 l gs col-1 s gr % Polyline n 7352 11402 m 8552 10277 l gs col-1 s gr % Polyline n 7427 11402 m 9452 11177 l gs col-1 s gr % Polyline n 9452 11177 m 8552 10277 l gs col-1 s gr % Polyline n 7427 9527 m 8477 8777 l gs col-1 s gr % Polyline n 8477 8777 m 9752 9377 l gs col-1 s gr % Polyline n 8477 8777 m 8552 10277 l gs col-1 s gr % Polyline n 8552 10277 m 7502 9527 l gs col-1 s gr % Polyline n 9752 9377 m 9452 11177 l gs col-1 s gr % Polyline n 9452 11177 m 10502 10652 l gs col-1 s gr % Polyline n 10502 10652 m 9752 9377 l gs col-1 s gr % Polyline n 7427 9527 m 7352 11402 l gs col-1 s gr % Polyline n 7126 3152 m 8326 2027 l gs col-1 s gr % Polyline n 7201 3152 m 9226 2927 l gs col-1 s gr % Polyline n 9226 2927 m 8326 2027 l gs col-1 s gr % Polyline n 7201 1277 m 8251 527 l gs col-1 s gr % Polyline n 8251 527 m 9526 1127 l gs col-1 s gr % Polyline n 8251 527 m 8326 2027 l gs col-1 s gr % Polyline n 8326 2027 m 7276 1277 l gs col-1 s gr % Polyline n 9526 1127 m 9226 2927 l gs col-1 s gr % Polyline n 9226 2927 m 10276 2402 l gs col-1 s gr % Polyline n 10276 2402 m 9526 1127 l gs col-1 s gr % Polyline n 7201 1277 m 7126 3152 l gs col-1 s gr % Polyline n 977 11252 m 2177 10127 l gs col-1 s gr % Polyline n 1052 11252 m 3077 11027 l gs col-1 s gr % Polyline n 3077 11027 m 2177 10127 l gs col-1 s gr % Polyline n 1052 9377 m 2102 8627 l gs col-1 s gr % Polyline n 2102 8627 m 3377 9227 l gs col-1 s gr % Polyline n 2102 8627 m 2177 10127 l gs col-1 s gr % Polyline n 2177 10127 m 1127 9377 l gs col-1 s gr % Polyline n 3377 9227 m 3077 11027 l gs col-1 s gr % Polyline n 3077 11027 m 4127 10502 l gs col-1 s gr % Polyline n 4127 10502 m 3377 9227 l gs col-1 s gr % Polyline n 1052 9377 m 977 11252 l gs col-1 s gr % Ellipse n 2008 2008 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 901 1276 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 1933 508 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 3208 1108 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 2908 2908 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 3958 2383 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 808 3133 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 8534 10259 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 7427 9527 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 8459 8759 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 9734 9359 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 9434 11159 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 10484 10634 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 7334 11384 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 8308 2009 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 7201 1277 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 8233 509 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 9508 1109 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 9208 2909 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 10258 2384 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 7108 3134 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 2159 10109 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 1052 9377 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 2084 8609 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 3359 9209 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 3059 11009 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 4109 10484 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr % Ellipse n 959 11234 168 168 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col-1 s gr /Helvetica-iso ff 210.00 scf sf 1951 2101 m gs 1 -1 sc (3) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 2851 3001 m gs 1 -1 sc (4) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 1876 601 m gs 1 -1 sc (5) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 3151 1201 m gs 1 -1 sc (6) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 751 3226 m gs 1 -1 sc (2) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 3901 2476 m gs 1 -1 sc (7) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 863 1351 m gs 1 -1 sc (1) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 4727 m gs 1 -1 sc (7 11) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 4997 m gs 1 -1 sc (5 3 2) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 5267 m gs 1 -1 sc (1 3 4) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 5807 m gs 1 -1 sc (2 3 6 7) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 6077 m gs 1 -1 sc (1 3 6) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 6347 m gs 1 -1 sc (5 4 7) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 6617 m gs 1 -1 sc (6 4) col-1 sh gr /Courier-iso ff 210.00 scf sf 1202 5537 m gs 1 -1 sc (5 4 2 1) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 8477 10352 m gs 1 -1 sc (3) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 9377 11252 m gs 1 -1 sc (4) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 8402 8852 m gs 1 -1 sc (5) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 9677 9452 m gs 1 -1 sc (6) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 7277 11477 m gs 1 -1 sc (2) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 10427 10727 m gs 1 -1 sc (7) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 7389 9602 m gs 1 -1 sc (1) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 8251 2102 m gs 1 -1 sc (3) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 9151 3002 m gs 1 -1 sc (4) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 8176 602 m gs 1 -1 sc (5) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 9451 1202 m gs 1 -1 sc (6) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 7051 3227 m gs 1 -1 sc (2) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 10201 2477 m gs 1 -1 sc (7) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 7163 1352 m gs 1 -1 sc (1) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 7651 827 m gs 1 -1 sc (1) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 8926 752 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 8401 1352 m gs 1 -1 sc (3) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 7801 1577 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 7726 2477 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 8176 3002 m gs 1 -1 sc (1) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 8776 2402 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 9226 2027 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 9676 2627 m gs 1 -1 sc (5) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 9976 1727 m gs 1 -1 sc (6) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 6976 2177 m gs 1 -1 sc (1) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 4728 m gs 1 -1 sc (7 11 1) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 4998 m gs 1 -1 sc (5 1 3 2 2 1) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 5268 m gs 1 -1 sc (1 1 3 2 4 1) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 5538 m gs 1 -1 sc (5 3 4 2 2 2 1 2) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 5808 m gs 1 -1 sc (2 1 3 2 6 2 7 5) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 6078 m gs 1 -1 sc (1 1 3 3 6 2) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 6348 m gs 1 -1 sc (5 2 4 2 7 6) col-1 sh gr /Courier-iso ff 210.00 scf sf 7502 6618 m gs 1 -1 sc (6 6 4 5) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 2102 10202 m gs 1 -1 sc (3) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 3002 11102 m gs 1 -1 sc (4) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 2027 8702 m gs 1 -1 sc (5) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 3302 9302 m gs 1 -1 sc (6) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 902 11327 m gs 1 -1 sc (2) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 4052 10577 m gs 1 -1 sc (7) col-1 sh gr /Helvetica-iso ff 210.00 scf sf 1014 9452 m gs 1 -1 sc (1) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 1502 8927 m gs 1 -1 sc (1) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 2777 8852 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 2252 9452 m gs 1 -1 sc (3) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 1652 9677 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 1577 10577 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 2027 11102 m gs 1 -1 sc (1) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 2627 10502 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 3077 10127 m gs 1 -1 sc (2) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 3527 10727 m gs 1 -1 sc (5) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 3827 9827 m gs 1 -1 sc (6) col-1 sh gr /Times-Bold-iso ff 210.00 scf sf 827 10277 m gs 1 -1 sc (1) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 750 9150 m gs 1 -1 sc ([4]) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 600 11025 m gs 1 -1 sc ([2]) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 1950 8325 m gs 1 -1 sc ([1]) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 3300 8925 m gs 1 -1 sc ([6]) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 2325 9900 m gs 1 -1 sc ([5]) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 2925 11400 m gs 1 -1 sc ([3]) col-1 sh gr /Helvetica-BoldOblique-iso ff 210.00 scf sf 4350 10500 m gs 1 -1 sc ([2]) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 12828 m gs 1 -1 sc (7 11 11) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 13098 m gs 1 -1 sc (4 5 1 3 2 2 1) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 13368 m gs 1 -1 sc (2 1 1 3 2 4 1) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 13638 m gs 1 -1 sc (5 5 3 4 2 2 2 1 2) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 13908 m gs 1 -1 sc (3 2 1 3 2 6 2 7 5) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 14178 m gs 1 -1 sc (1 1 1 3 3 6 2) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 14448 m gs 1 -1 sc (6 5 2 4 2 7 6) col-1 sh gr /Courier-iso ff 210.00 scf sf 1353 14718 m gs 1 -1 sc (2 6 6 4 5) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 12978 m gs 1 -1 sc (7 11 10 3) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 13248 m gs 1 -1 sc (1 2 0 5 3 2) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 13518 m gs 1 -1 sc (0 2 2 1 3 4) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 14058 m gs 1 -1 sc (2 2 3 2 3 6 7) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 14328 m gs 1 -1 sc (1 1 1 1 3 6) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 14598 m gs 1 -1 sc (2 2 1 5 4 7) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 14868 m gs 1 -1 sc (1 2 1 6 4) col-1 sh gr /Courier-iso ff 210.00 scf sf 7728 13788 m gs 1 -1 sc (4 1 1 5 4 2 1) col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 1501 7351 m gs 1 -1 sc (\(a\)) dup sw pop neg 0 rm col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 1801 7351 m gs 1 -1 sc (Unweighted Graph) col-1 sh gr % Polyline n 301 3826 m 4351 3826 l gs col-1 s gr /Times-Roman-iso ff 180.00 scf sf 600 4350 m gs 1 -1 sc (Graph File:) col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 1052 15377 m gs 1 -1 sc (\(c\)) dup sw pop neg 0 rm col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 1352 15377 m gs 1 -1 sc (Weighted Graph) col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 1352 15647 m gs 1 -1 sc (Weights both on vertices and edges) col-1 sh gr % Polyline n 452 11927 m 4652 11927 l gs col-1 s gr /Times-Roman-iso ff 180.00 scf sf 751 12451 m gs 1 -1 sc (Graph File:) col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 8026 7276 m gs 1 -1 sc (\(b\)) dup sw pop neg 0 rm col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 8326 7276 m gs 1 -1 sc (Weighted Graph) col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 8326 7546 m gs 1 -1 sc (Weights on edges) col-1 sh gr % Polyline n 6827 12077 m 10877 12077 l gs col-1 s gr % Polyline n 6601 3827 m 10726 3827 l gs col-1 s gr % Polyline n 6450 8100 m 11325 8100 l 11325 15900 l 6450 15900 l cp gs col0 s gr % Polyline n 150 8100 m 5025 8100 l 5025 15900 l 150 15900 l cp gs col0 s gr % Polyline n 150 75 m 5025 75 l 5025 7875 l 150 7875 l cp gs col0 s gr % Polyline n 6450 75 m 11325 75 l 11325 7875 l 6450 7875 l cp gs col0 s gr /Times-BoldItalic-iso ff 210.00 scf sf 6600 11100 m gs 1 -1 sc ([0, 2, 2]) col0 sh gr /Times-BoldItalic-iso ff 210.00 scf sf 7050 9225 m gs 1 -1 sc ([1, 2, 0]) col0 sh gr /Times-BoldItalic-iso ff 210.00 scf sf 8175 8475 m gs 1 -1 sc ([1, 1, 1]) col0 sh gr /Times-BoldItalic-iso ff 210.00 scf sf 9525 9075 m gs 1 -1 sc ([2, 2, 1]) col0 sh gr /Times-BoldItalic-iso ff 210.00 scf sf 8700 10050 m gs 1 -1 sc ([4, 1, 1]) col0 sh gr /Times-BoldItalic-iso ff 210.00 scf sf 10425 10350 m gs 1 -1 sc ([1, 2, 1]) col0 sh gr /Times-BoldItalic-iso ff 210.00 scf sf 9225 11550 m gs 1 -1 sc ([2, 2, 3]) col0 sh gr /Times-Roman-iso ff 180.00 scf sf 7126 12601 m gs 1 -1 sc (Graph File:) col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 8027 15602 m gs 1 -1 sc (\(d\)) dup sw pop neg 0 rm col-1 sh gr /Helvetica-Bold-iso ff 180.00 scf sf 8327 15602 m gs 1 -1 sc (Multi-Constraint Graph) col-1 sh gr /Times-Roman-iso ff 180.00 scf sf 6900 4351 m gs 1 -1 sc (Graph File:) col-1 sh gr $F2psEnd rs %%EndDocument @endspecial 1168 4002 a Fy(Figure)18 b(8)p FL(:)25 b Fx(Stor)o(age)19 b(f)n(or)r(mat)f(f)n(or)g(v)n(ar)q(ious)h(type)g(of)f (g)o(r)o(aphs)o(.)0 4186 y FL(to)i(1,)g(indicating)f(the)h(f)o(act)h (that)h Ft(G)k FL(has)20 b(weights)g(on)g(the)g(edges.)100 4296 y(In)e(addition)g(to)h(ha)n(ving)f(weights)g(on)h(the)g(edges,)f (weights)h(on)f(the)h(v)o(ertices)g(are)f(also)i(allo)n(wed,)e(as)h (illustrated)g(in)g(Figure)f(8\(c\).)24 b(In)0 4406 y(this)f(case,)h (the)f(v)n(alue)f(of)g Fs(fmt)j FL(is)f(equal)e(to)h(11,)g(and)f(each)g (line)h(of)g(the)f(graph)g(\002le)h(\002rst)h(stores)f(the)g(weight)f (of)g(the)h(v)o(erte)o(x,)f(and)g(then)0 4515 y(the)e(weighted)f (adjacenc)o(y)g(list.)100 4625 y(Finally)-5 b(,)22 b(Figure)h(8\(d\))f (illustrates)h(the)g(format)f(of)h(the)g(input)f(\002le)h(when)g(the)g (v)o(ertices)f(of)h(the)g(graph)e(contain)h(multiple)h(weights)0 4734 y(\(3)h(in)g(this)g(e)o(xample\).)34 b(In)24 b(this)g(case,)h(the) f(v)n(alue)f(of)g Fs(fmt)i FL(is)g(equal)e(to)h(10)f(\(we)h(do)g(not)f (ha)n(v)o(e)g(weights)h(associated)g(with)g(the)g(edges\),)0 4844 y(and)e(the)g(v)n(alue)f(of)h Fs(ncon)f FL(is)i(equal)e(to)i(3)f (\(since)g(we)g(ha)n(v)o(e)g(three)f(sets)i(of)f(v)o(erte)o (x-weights\).)28 b(Each)22 b(line)g(of)g(the)g(graph)e(\002le)j(stores) g(the)0 4954 y(three)d(weights)g(of)g(the)g(v)o(ertices)g(follo)n(wed)e (by)i(the)g(adjacenc)o(y)f(list.)0 5163 y FB(4.5.2)84 b(Mesh)23 b(File)0 5289 y FL(The)h(primary)g(input)g(of)g(the)h(mesh)f (partitioning)f(programs)g(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)29 b FL(is)c(the)g(mesh)g(to)g(be)f(partitioned.)37 b(This)25 b(mesh)g(is)g(stored)f(in)0 5399 y(a)f(\002le)h(in)f(the)g (form)f(of)h(the)g(element)g(node)f(array)-5 b(.)32 b(A)23 b(mesh)g(with)g Ft(n)k FL(elements)c(is)h(stored)e(in)h(a)h(plain)e(te) o(xt)h(\002le)h(that)f(contains)f Ft(n)i FM(C)c FL(1)1908 5649 y(16)p eop %%Page: 17 17 17 16 bop 0 83 a FL(lines.)30 b(The)22 b(\002rst)g(line)g(contains)f (information)f(about)g(the)i(size)h(and)e(the)h(type)f(of)h(the)f (mesh,)h(while)g(the)g(remaining)e Ft(n)25 b FL(lines)e(contain)0 193 y(the)d(nodes)g(that)g(mak)o(e)g(up)f(each)h(element.)100 302 y(The)i(\002rst)h(line)f(contains)g(tw)o(o)g(inte)o(gers.)31 b(The)22 b(\002rst)h(inte)o(ger)e(is)i(the)g(number)d(of)i(elements)g Ft(n)k FL(in)d(the)f(mesh.)31 b(The)22 b(second)g(inte)o(ger)0 412 y Fs(etype)e FL(is)h(used)f(to)g(denote)f(the)h(type)f(of)h (elements)g(that)g(the)g(mesh)g(is)h(made)e(of)n(f.)25 b Fs(Etype)19 b FL(can)h(either)g(tak)o(e)g(the)g(v)n(alues)f(of)h(1,)g (2,)g(3,)g(or)g(4,)0 521 y(indicating)f(that)h(the)g(mesh)g(consists)h (of)f(either)g(triangles,)f(tetrahedra,)g(he)o(xahedra)e(\(bricks\),)i (or)h(quadrilaterals,)e(respecti)n(v)o(ely)-5 b(.)100 631 y(After)21 b(the)g(\002rst)h(line,)f(the)h(remaining)d Ft(n)25 b FL(lines)d(store)f(the)g(element)g(node)f(array)-5 b(.)27 b(In)21 b(particular)f(for)h(element)e Ft(i)9 b FL(,)22 b(line)e Ft(i)28 b FM(C)19 b FL(1)i(stores)0 741 y(the)j(nodes)g(that)g(this)h(element)f(is)h(made)e(of)n(f.)37 b(Depending)22 b(on)i Fs(etype)p FL(,)h(each)f(line)g(can)g(either)g (ha)n(v)o(e)g(three)f(inte)o(gers)h(\(in)g(the)g(case)h(of)0 850 y(triangles\),)e(four)g(inte)o(gers)g(\(in)g(the)g(case)h(of)g (tetrahedra)e(and)h(quadrilaterals\),)f(or)h(eight)h(inte)o(gers)e (\(in)i(the)f(case)h(of)g(he)o(xahedra\).)32 b(In)0 960 y(the)22 b(case)g(of)g(triangles)f(and)g(tetrahedra,)g(the)h(ordering)d (of)j(the)g(nodes)f(for)g(each)h(element)f(does)h(not)f(matter)-5 b(.)30 b(Ho)n(we)n(v)o(er)m(,)20 b(in)i(the)g(case)0 1069 y(of)f(he)o(xahedra)e(and)i(quadrilaterals,)f(the)i(nodes)e(for)h (each)g(element)g(should)g(be)g(ordered)f(according)f(to)j(the)f (numbering)e(illustrated)0 1179 y(in)h(Figure)g(9\(b\).)k(Note)c(that)g (the)g(node)f(numbering)f(starts)j(from)e(1.)100 1289 y(Figure)h(9)h(illustrates)h(this)g(format)e(for)g(a)i(small)f(mesh)g (with)g(triangular)f(elements.)27 b(Note)21 b(that)h(the)f Fs(etype)g FL(\002eld)g(of)g(the)g(mesh)g(\002le)0 1398 y(is)g(set)g(to)f(1)h(indicating)e(that)h(the)g(mesh)g(consists)h(of)f (triangular)e(elements.)750 2599 y @beginspecial 0 @llx 0 @lly 469 @urx 215 @ury 2880 @rwi @setspecial %%BeginDocument: ./figures/meshformat.eps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {} def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -32.0 264.0 translate 1 -1 scale /clp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /l {lineto} bind def /m {moveto} bind def /n {newpath} bind def /s {stroke} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc /Times-Roman findfont 180.00 scalefont setfont 750 2850 m gs 1 -1 sc (Mesh File:) col-1 show gr /Helvetica-Bold findfont 210.00 scalefont setfont 1650 4350 m gs 1 -1 sc (\(a\) Sample Mesh File) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr /Helvetica findfont 180.00 scalefont setfont 4350 2566 m gs 1 -1 sc (2) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 5430 2700 m gs 1 -1 sc (3) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 1605 2288 m gs 1 -1 sc (1) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 1597 1268 m gs 1 -1 sc (6) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 2183 1860 m gs 1 -1 sc (3) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 2145 952 m gs 1 -1 sc (5) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 1043 930 m gs 1 -1 sc (4) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 6053 2310 m gs 1 -1 sc (4) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 8228 2385 m gs 1 -1 sc (4) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 7050 1441 m gs 1 -1 sc (2) col-1 show gr /Helvetica-Bold findfont 210.00 scalefont setfont 6450 3375 m gs 1 -1 sc (\(b\) Ordering of nodes) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr /Helvetica findfont 180.00 scalefont setfont 7043 2378 m gs 1 -1 sc (1) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 8205 1425 m gs 1 -1 sc (3) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 4958 1312 m gs 1 -1 sc (5) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 4350 1650 m gs 1 -1 sc (6) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 5468 1800 m gs 1 -1 sc (7) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 6030 1379 m gs 1 -1 sc (8) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 4943 2228 m gs 1 -1 sc (1) col-1 show gr /Helvetica findfont 180.00 scalefont setfont 1050 1875 m gs 1 -1 sc (2) col-1 show gr /Courier findfont 180.00 scalefont setfont 1725 3900 m gs 1 -1 sc (5 6 3) col-1 show gr 7.500 slw % Polyline n 1200 900 m 1200 1800 l 2100 1800 l 2100 900 l 1200 900 l gs col-1 s gr % Polyline n 1200 900 m 2100 1800 l gs col-1 s gr % Polyline n 1650 1350 m 1200 1800 l gs col-1 s gr /Courier findfont 180.00 scalefont setfont 1725 3690 m gs 1 -1 sc (4 5 6) col-1 show gr /Courier findfont 180.00 scalefont setfont 1725 2850 m gs 1 -1 sc (5 1) col-1 show gr /Courier findfont 180.00 scalefont setfont 1725 3060 m gs 1 -1 sc (1 2 3) col-1 show gr /Courier findfont 180.00 scalefont setfont 1725 3270 m gs 1 -1 sc (2 4 6) col-1 show gr /Courier findfont 180.00 scalefont setfont 1725 3480 m gs 1 -1 sc (2 6 3) col-1 show gr % Polyline n 2100 900 m 1650 1350 l gs col-1 s gr % Polyline n 5100 1335 m 4500 1635 l gs col-1 s gr % Polyline n 6000 1335 m 5400 1635 l gs col-1 s gr % Polyline n 5100 2235 m 4500 2535 l gs col-1 s gr % Polyline n 6000 2235 m 5400 2535 l gs col-1 s gr % Polyline n 4500 1635 m 5400 1635 l 5400 2535 l 4500 2535 l clp gs col-1 s gr % Polyline n 1200 1800 m 1650 2400 l gs col-1 s gr % Polyline n 2100 1800 m 1650 2400 l gs col-1 s gr % Polyline n 600 2550 m 2550 2550 l gs col-1 s gr % Polyline n 7200 1500 m 8100 1500 l 8100 2400 l 7200 2400 l clp gs col-1 s gr % Polyline n 5100 1335 m 6000 1335 l 6000 2235 l 5100 2235 l clp gs col-1 s gr $F2psEnd restore %%EndDocument @endspecial 180 2782 a Fy(Figure)g(9)p FL(:)25 b Fx(\(a\))19 b(The)f(\002le)h(that)f(stores)h(the)f(mesh.)23 b(\(b\))18 b(The)g(order)q(ing)g(of)h(the)f(nodes)h(in)g(the)f(case)h(of)g(he)n (xahedr)o(a)f(and)g(quadr)q(ilater)o(als)o(.)0 3093 y Fr(4.6)100 b(Output)27 b(File)h(Formats)0 3252 y FL(The)h(output)f(of)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)33 b FL(is)e(either)e(a)h (partition)e(or)i(an)f(ordering)e(\002le,)33 b(depending)27 b(on)i(whether)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)34 b FL(is)c(used)g(for)f(graph/mesh)0 3362 y(partitioning)18 b(or)i(for)g(sparse)g(matrix)f(ordering.)k(The)d(format)f(of)h(these)g (\002les)i(are)e(described)f(in)h(the)g(follo)n(wing)f(sections.)0 3571 y FB(4.6.1)84 b(P)n(ar)r(tition)22 b(File)0 3697 y FL(The)28 b(partition)g(\002le)i(of)e(a)h(graph)f(with)h Ft(n)j FL(v)o(ertices)d(consists)g(of)f Ft(n)33 b FL(lines)c(with)g(a)g (single)g(number)e(per)h(line.)51 b(The)28 b Ft(i)9 b FL(th)28 b(line)h(of)g(the)0 3807 y(\002le)d(contains)e(the)h (partition)e(number)g(that)i(the)f Ft(i)9 b FL(th)25 b(v)o(erte)o(x)e(belongs)h(to.)39 b(P)o(artition)24 b(numbers)f(start)j (from)e(0)g(up)h(to)g(the)g(number)e(of)0 3916 y(partitions)c(minus)h (one.)0 4126 y FB(4.6.2)84 b(Or)n(dering)23 b(File)0 4252 y FL(The)28 b(ordering)f(\002le)j(of)e(a)h(graph)f(with)h Ft(n)j FL(v)o(ertices)d(consists)g(of)f Ft(n)33 b FL(lines)c(with)g(a)g (single)g(number)e(per)h(line.)51 b(The)28 b Ft(i)9 b FL(th)28 b(line)h(of)g(the)0 4361 y(ordering)18 b(\002le)j(contains)e (the)i(ne)n(w)f(order)e(of)i(the)g Ft(i)9 b FL(th)20 b(v)o(erte)o(x)e(of)i(the)g(graph.)k(The)c(numbering)d(in)k(the)f (ordering)e(\002le)j(starts)g(from)e(0.)100 4471 y(Note)g(that)g(the)g (ordering)d(\002le)k(stores)f(what)g(is)h(referred)d(to)i(as)h(the)f (the)g(in)m(v)o(erse)f(permutation)e(v)o(ector)i Fs(iperm)h FL(of)g(the)g(ordering.)j(Let)8 4581 y Ft(A)g FL(be)e(a)g(matrix)f(and) g(let)29 b Ft(A)779 4550 y Fe(0)820 4581 y FL(be)20 b(the)f(reordered)f (matrix.)24 b(The)19 b(in)m(v)o(erse)g(permutation)f(v)o(ector)g(maps)i (the)f Ft(i)9 b FL(th)19 b(ro)n(w)h(\(column\))d(of)28 b Ft(A)22 b FL(into)0 4690 y(the)e Fs(iperm)p FM(T)o Ft(i)9 b FM(U)19 b FL(ro)n(w)h(\(column\))e(of)28 b Ft(A)1046 4660 y Fe(0)1067 4690 y FL(.)1908 5649 y(17)p eop %%Page: 18 18 18 17 bop 0 85 a FD(5)119 b(M)-6 b FA(E)-23 b FD(T)g FA(I)p FD(S)s(')-7 b(s)31 b(Librar)q(y)h(Interface)0 261 y FL(The)17 b(v)n(arious)g(programs)f(pro)o(vided)f(in)20 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)22 b FL(can)c(also)g(be)f (directly)g(accessed)h(from)f(a)h(C)g(or)g(F)o(ortran)e(program)g(by)h (using)g(the)h(stand-)0 370 y(alone)27 b(library)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)p FL(.)49 b(Furthermore,)29 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)30 b FL(e)o(xtends)d(the)g (functionality)e(pro)o(vided)g(by)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(')-5 b(s)30 b(stand-alone)25 b(programs)0 480 y(in)h(tw)o(o)h(dif)n(ferent)d(w)o(ays.)43 b(First,)29 b(it)d(allo)n(ws)h(the)f(user)g(to)g(alter)h(the)f(beha)n (vior)e(of)i(the)g(v)n(arious)f(algorithms)g(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(,)28 b(and)d(second)2 590 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)31 b FL(pro)o(vides)26 b(additional)g(routines)h(that)g(can)h(be)f(used)g (to)h(partition)f(graphs)f(into)i(unequal-size)d(partitions)i(and)g (compute)0 699 y(partitionings)19 b(that)h(directly)f(minimize)h(the)g (total)g(communication)d(v)n(olume.)100 809 y(In)24 b(the)g(rest)g(of)g (this)h(section)f(we)h(describe)e(the)h(interf)o(ace)f(to)i(the)f (routines)f(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)27 b FL(by)d(\002rst)h(describing)d(the)j(v)n(arious)e(data)0 918 y(structures)e(used)h(to)g(pass)g(information)e(into)h(and)h(get)f (information)f(out)h(of)h(the)g(routines,)f(follo)n(wed)f(by)i(a)g (detailed)f(description)g(of)0 1028 y(the)f(calling)g(sequence)f(of)h (the)g(v)n(arious)f(routines.)0 1255 y Fr(5.1)100 b(Graph)27 b(Data)i(Structure)0 1415 y FL(All)24 b(of)f(the)h(graph)e (partitioning)f(and)i(sparse)h(matrix)f(ordering)e(routines)h(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)27 b FL(tak)o(e)c(as)h (input)f(the)h(adjacenc)o(y)d(structure)i(of)0 1524 y(the)d(graph)f (and)h(the)g(weights)g(of)g(the)g(v)o(ertices)g(and)f(edges)h(\(if)g (an)o(y\).)100 1634 y(The)25 b(adjacenc)o(y)e(structure)h(of)h(the)h (graph)e(is)i(stored)f(using)f(the)i(compressed)d(storage)i(format)f (\(CSR\).)i(The)f(CSR)i(format)d(is)i(a)0 1744 y(widely)e(used)h (scheme)g(for)f(storing)g(sparse)h(graphs.)38 b(In)24 b(this)i(format)e(the)g(adjacenc)o(y)g(structure)g(of)g(a)h(graph)f (with)h Ft(n)k FL(v)o(ertices)24 b(and)0 1853 y Ft(m)k FL(edges)22 b(is)h(represented)e(using)h(tw)o(o)g(arrays)g Fp(xadj)h FL(and)e Fp(adjncy)p FL(.)32 b(The)22 b Fp(xadj)g FL(array)f(is)j(of)e(size)h Ft(n)g FM(C)d FL(1)j(whereas)f(the)g Fp(adjncy)0 1963 y FL(array)d(is)i(of)f(size)h(2)p Ft(m)k FL(\(this)c(is)g(because)e(for)h(each)g(edge)f(between)h(v)o(ertices)f Fu(v)25 b FL(and)19 b Ft(u)25 b FL(we)c(actually)e(store)h(both)g Fu(.v)s(;)14 b Ft(u)t Fu(/)21 b FL(and)f Fu(.)p Ft(u)t Fu(;)14 b(v)s(/)p FL(\).)100 2072 y(The)21 b(adjacenc)o(y)e(structure)i (of)g(the)g(graph)f(is)j(stored)e(as)h(follo)n(ws.)28 b(Assuming)21 b(that)g(v)o(erte)o(x)f(numbering)f(starts)j(from)e(0)i (\(C)g(style\),)0 2182 y(then)32 b(the)g(adjacenc)o(y)f(list)j(of)e(v)o (erte)o(x)e Ft(i)42 b FL(is)33 b(stored)f(in)h(array)e Fp(adjncy)h FL(starting)g(at)h(inde)o(x)e Fp(xadj[)o Ft(i)9 b Fp(])32 b FL(and)g(ending)f(at)i(\(b)n(ut)f(not)0 2292 y(including\))17 b(inde)o(x)g Fp(xadj[)o Ft(i)22 b FM(C)14 b FL(1)p Fp(])k FL(\()p Fs(i.e)o FL(.,)h Fp(adjncy[xadj[)o Ft(i)9 b Fp(]])17 b FL(through)g(and)h(including)f Fp(adjncy[xadj[)o Ft(i)j FM(C)14 b FL(1)p Fp(]-1])p FL(\).)23 b(That)0 2401 y(is,)h(for)e(each)h(v)o(erte)o(x)d Ft(i)9 b FL(,)24 b(its)g(adjacenc)o(y)d(list)j(is)g(stored)e(in)h(consecuti)n(v)o(e)e (locations)h(in)h(the)g(array)f Fp(adjncy)p FL(,)h(and)f(the)h(array)f Fp(xadj)h FL(is)0 2511 y(used)i(to)h(point)f(to)h(where)f(it)h(be)o (gins)f(and)g(where)g(it)h(ends.)41 b(Figure)25 b(10\(b\))f (illustrates)i(the)g(CSR)h(format)d(for)h(the)h(15-v)o(erte)o(x)d (graph)0 2620 y(sho)n(wn)c(in)i(Figure)e(10\(a\).)450 3789 y @beginspecial 0 @llx 0 @lly 506 @urx 180 @ury 3600 @rwi @setspecial %%BeginDocument: ./figures/csr.eps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {} def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -8.0 206.0 translate 1 -1 scale /clp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /l {lineto} bind def /m {moveto} bind def /n {newpath} bind def /s {stroke} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc /Times-Roman findfont 150.00 scalefont setfont 4725 2850 m gs 1 -1 sc (3) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4500 2850 m gs 1 -1 sc (12) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4350 2850 m gs 1 -1 sc (8) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4200 2850 m gs 1 -1 sc (6) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4875 2850 m gs 1 -1 sc (7) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 5550 2850 m gs 1 -1 sc (8) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 5400 2850 m gs 1 -1 sc (4) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 5175 2850 m gs 1 -1 sc (13) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 5025 2850 m gs 1 -1 sc (9) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4050 2850 m gs 1 -1 sc (2) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2700 2850 m gs 1 -1 sc (9) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2250 2850 m gs 1 -1 sc (4) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2100 2850 m gs 1 -1 sc (2) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1050 2850 m gs 1 -1 sc (5) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2550 2850 m gs 1 -1 sc (3) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3825 2850 m gs 1 -1 sc (11) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3675 2850 m gs 1 -1 sc (7) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3525 2850 m gs 1 -1 sc (5) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3375 2850 m gs 1 -1 sc (1) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2400 2850 m gs 1 -1 sc (8) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 5700 2850 m gs 1 -1 sc (14) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 8100 2850 m gs 1 -1 sc (9) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 7875 2850 m gs 1 -1 sc (14) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 7650 2850 m gs 1 -1 sc (12) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 7500 2850 m gs 1 -1 sc (8) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 8250 2850 m gs 1 -1 sc (13) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 600 2850 m gs 1 -1 sc (adjncy) dup stringwidth pop neg 0 rmoveto col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 600 2550 m gs 1 -1 sc (xadj) dup stringwidth pop neg 0 rmoveto col-1 show gr /Helvetica-Bold findfont 210.00 scalefont setfont 3900 3375 m gs 1 -1 sc (\(b CSR format) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr /Helvetica-Bold findfont 210.00 scalefont setfont 3900 1500 m gs 1 -1 sc (\(a\) A sample graph) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr 7.500 slw % Polyline n 150 2250 m 8550 2250 l 8550 3000 l 150 3000 l clp gs col-1 s gr /Times-Roman findfont 150.00 scalefont setfont 7275 2850 m gs 1 -1 sc (13) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 5925 2850 m gs 1 -1 sc (5) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3150 2850 m gs 1 -1 sc (10) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3000 2850 m gs 1 -1 sc (6) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2850 2850 m gs 1 -1 sc (0) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 6075 2850 m gs 1 -1 sc (11) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 7050 2850 m gs 1 -1 sc (11) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 6900 2850 m gs 1 -1 sc (7) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 6675 2850 m gs 1 -1 sc (12) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 6450 2850 m gs 1 -1 sc (10) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 6300 2850 m gs 1 -1 sc (6) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1950 2850 m gs 1 -1 sc (7) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4350 1125 m gs 1 -1 sc (14) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4050 1125 m gs 1 -1 sc (13) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3750 1125 m gs 1 -1 sc (12) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3450 1125 m gs 1 -1 sc (11) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3225 525 m gs 1 -1 sc (0) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4425 525 m gs 1 -1 sc (4) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4125 525 m gs 1 -1 sc (3) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3825 525 m gs 1 -1 sc (2) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3525 525 m gs 1 -1 sc (1) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3150 1125 m gs 1 -1 sc (10) col-1 show gr % Polyline n 4200 525 m 4200 1125 l gs col-1 s gr % Polyline n 3900 525 m 3900 1125 l gs col-1 s gr % Polyline n 3600 525 m 3600 1125 l gs col-1 s gr % Polyline n 3300 525 m 4500 525 l 4500 1125 l 3300 1125 l 3300 525 l gs col-1 s gr % Polyline n 3300 825 m 4500 825 l gs col-1 s gr /Times-Roman findfont 150.00 scalefont setfont 4425 825 m gs 1 -1 sc (9) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 4125 825 m gs 1 -1 sc (8) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3825 825 m gs 1 -1 sc (7) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3525 825 m gs 1 -1 sc (6) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3225 825 m gs 1 -1 sc (5) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 900 2550 m gs 1 -1 sc (0) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3975 2550 m gs 1 -1 sc (44) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3750 2550 m gs 1 -1 sc (42) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3525 2550 m gs 1 -1 sc (39) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3300 2550 m gs 1 -1 sc (36) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 900 2850 m gs 1 -1 sc (1) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1800 2850 m gs 1 -1 sc (3) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1650 2850 m gs 1 -1 sc (1) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1500 2850 m gs 1 -1 sc (6) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1350 2850 m gs 1 -1 sc (2) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1200 2850 m gs 1 -1 sc (0) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 3075 2550 m gs 1 -1 sc (33) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1500 2550 m gs 1 -1 sc (11) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1350 2550 m gs 1 -1 sc (8) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1200 2550 m gs 1 -1 sc (5) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1050 2550 m gs 1 -1 sc (2) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1725 2550 m gs 1 -1 sc (13) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2850 2550 m gs 1 -1 sc (31) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2625 2550 m gs 1 -1 sc (28) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2400 2550 m gs 1 -1 sc (24) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 2175 2550 m gs 1 -1 sc (20) col-1 show gr /Times-Roman findfont 150.00 scalefont setfont 1950 2550 m gs 1 -1 sc (16) col-1 show gr $F2psEnd restore %%EndDocument @endspecial 920 3971 a Fy(Figure)f(10)p FL(:)25 b Fx(An)20 b(e)n(xample)e(of)g(the)h(CSR)h(f)n(or)r(mat)d(f)n(or)i(stor)q(ing)f (sparse)g(g)o(r)o(aphs)o(.)100 4164 y FL(The)h(weights)h(of)g(the)g(v)o (ertices)g(\(if)g(an)o(y\))f(are)h(stored)f(in)h(an)g(additional)f (array)g(called)h Fp(vwgt)p FL(.)25 b(If)20 b Fs(ncon)f FL(is)i(the)f(number)e(of)i(weights)0 4274 y(associated)h(with)h(each)f (v)o(erte)o(x,)f(the)i(array)f Fp(vwgt)g FL(contains)g Ft(n)h FM(\003)e Fs(ncon)h FL(elements)g(\(recall)g(that)g Ft(n)26 b FL(is)c(the)g(number)e(of)h(v)o(ertices\).)28 b(The)0 4383 y(weights)e(of)h(the)e Ft(i)9 b FL(th)26 b(v)o(erte)o(x)g(are)g(stored)g(in)h Fs(ncon)e FL(consecuti)n(v)o(e)g (entries)h(starting)h(at)g(location)e Fp(vwgt[)o Ft(i)31 b FM(\003)23 b Fd(ncon)p Fp(])p FL(.)44 b(Note)27 b(that)f(if)0 4493 y(each)d(v)o(erte)o(x)g(has)h(only)f(a)h(single)f(weight,)h(then)g Fp(vwgt)f FL(will)i(contain)d Ft(n)28 b FL(elements,)c(and)f Fp(vwgt[)o Ft(i)9 b Fp(])23 b FL(will)h(store)g(the)g(weight)f(of)h (the)-1 4603 y Ft(i)9 b FL(th)21 b(v)o(erte)o(x.)26 b(The)21 b(v)o(erte)o(x-weights)d(must)j(be)g(inte)o(gers)f(greater)h(or)f (equal)h(to)g(zero.)27 b(If)21 b(all)h(the)f(v)o(ertices)f(of)h(the)g (graph)f(ha)n(v)o(e)g(the)h(same)0 4712 y(weight)f(\()p Fs(i.e)o FL(.,)g(the)h(graph)d(is)j(unweighted\),)d(then)i(the)g Fp(vwgt)g FL(can)g(be)g(set)h(to)f(NULL.)100 4822 y(The)c(weights)h(of) g(the)h(edges)e(\(if)h(an)o(y\))f(are)i(stored)e(in)h(an)h(additional)d (array)i(called)g Fp(adjwgt)p FL(.)23 b(This)17 b(array)g(contains)f(2) p Ft(m)22 b FL(elements,)0 4931 y(and)j(the)g(weight)g(of)g(edge)g Fp(adjncy[)14 b Ft(j)9 b Fp(])23 b FL(is)j(stored)f(at)h(location)e Fp(adjwgt[)14 b Ft(j)9 b Fp(])p FL(.)39 b(The)25 b(edge-weights)e(must) j(be)f(inte)o(gers)g(greater)0 5041 y(than)c(zero.)27 b(If)21 b(all)h(the)f(edges)f(of)h(the)g(graph)f(ha)n(v)o(e)h(the)g (same)g(weight)g(\()p Fs(i.e)o FL(.,)h(the)f(graph)f(is)i (unweighted\),)c(then)j(the)g Fp(adjwgt)g FL(can)g(be)0 5150 y(set)g(to)f(NULL.)100 5260 y(All)26 b(of)f(these)h(four)e(arrays) h(\()p Fs(xadj)p FL(,)g Fs(adjncy)p FL(,)h Fs(vwgt)p FL(,)h(and)e Fs(adjwgt)p FL(\))f(are)i(de\002ned)e(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)29 b FL(to)c(be)h(of)f(of)g (type)g Fp(idxtype)p FL(.)40 b(By)0 5370 y(def)o(ault)27 b Fp(idxtype)g FL(is)h(set)h(to)e(be)h(equi)n(v)n(alent)e(to)i(type)f Fp(int)g FL(\()p Fs(i.e)p FL(.,)i(the)f(inte)o(ger)e(datatype)h(of)g (C\).)h(Ho)n(we)n(v)o(er)m(,)f Fp(idxtype)g FL(can)h(be)1908 5649 y(18)p eop %%Page: 19 19 19 18 bop 0 83 a FL(made)18 b(to)h(be)f(equi)n(v)n(alent)f(to)i(a)g Fp(short)49 b(int)19 b FL(for)f(certain)g(architectures)f(that)i(use)g (64-bit)f(inte)o(gers)g(by)g(def)o(ault.)24 b(The)18 b(con)m(v)o(ersion)e(of)0 193 y Fp(idxtype)j FL(from)f Fp(int)i FL(to)f Fp(short)g FL(can)h(be)f(done)g(by)g(modifying)e(the)i (\002le)h Fp(Lib/struct.h)e FL(\(instructions)g(are)i(included)e (there\).)0 302 y(The)i(same)g Fp(idxtype)g FL(is)h(used)f(for)f(the)h (arrays)g(that)g(are)g(used)g(to)h(store)f(the)g(computed)e(partition)h (and)h(permutation)e(v)o(ector)-5 b(.)0 530 y Fr(5.2)100 b(Mesh)28 b(Data)h(Structure)0 689 y FL(All)21 b(of)e(the)h(mesh)g (partitioning)e(and)h(mesh)h(con)m(v)o(ersion)d(routines)i(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)23 b FL(tak)o(e)d(as)g (input)g(the)g(element)f(node)g(array)g(of)h(a)g(mesh.)0 799 y(This)e(element)f(node)g(array)g(is)i(stored)e(using)h(an)f(array) g(called)h Fp(elmnts)p FL(.)24 b(F)o(or)17 b(a)h(mesh)g(with)g Ft(n)k FL(elements)17 b(and)h Ft(k)23 b FL(nodes)17 b(per)g(element,)0 908 y(the)k(size)i(of)e(the)g Fp(elmnts)g FL(array)g(is)h Ft(n)h FM(\003)c Ft(k)5 b FL(.)29 b(Note)22 b(that)f(since)h(the)f (supported)f(elements)h(in)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(are)d(only)e(triangles,)h(tetrahedra,)0 1018 y(he)o(xahedra,)c(and)j(quadrilaterals,)e(the)j(possible)f(v)n (alues)f(for)h Ft(k)25 b FL(are)c(3,)f(4,)g(8,)g(and)f(4,)h(respecti)n (v)o(ely)-5 b(.)100 1127 y(The)21 b(element)g(node)g(array)g(of)h(the)f (mesh)h(is)h(stored)e(in)h Fp(elmnts)f FL(as)i(follo)n(ws.)29 b(Assuming)22 b(that)g(the)f(element)h(numbering)d(starts)0 1237 y(from)e(0)i(\(C)f(style\),)h(then)f(the)g Ft(k)24 b FL(nodes)17 b(that)i(mak)o(e)f(up)f(element)g Ft(i)28 b FL(are)18 b(stored)g(in)g(array)f Fp(elmnts)h FL(starting)g(at)h (inde)o(x)d Ft(i)k FM(\003)11 b Ft(k)24 b FL(and)18 b(ending)0 1347 y(\(b)n(ut)23 b(not)h(including\))d(inde)o(x)i Fu(.)o Ft(i)29 b FM(C)21 b FL(1)p Fu(/)f FM(\003)i Ft(k)5 b FL(.)36 b(As)24 b(it)g(w)o(as)h(the)f(case)g(with)g(the)f(format)g(of)g (the)h(mesh)f(\002le)i(described)d(in)i(Section)f(4.5.2,)0 1456 y(the)d(ordering)e(of)h(the)h(nodes)f(is)i(not)f(important)e(for)h (triangle)g(and)h(tetrahedra)e(elements.)25 b(Ho)n(we)n(v)o(er)m(,)17 b(in)k(the)e(case)i(of)e(he)o(xahedra,)f(the)0 1566 y(nodes)h(for)h (each)g(element)f(must)i(be)f(ordered)e(according)g(to)j(the)f (numbering)d(illustrated)j(in)g(Figure)g(9\(b\).)100 1675 y(The)h(array)g(that)h(describes)f(the)g(element)h(node)e(array)h (of)g(the)h(mesh)g(is)g(de\002ned)f(in)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)25 b FL(to)d(be)f(of)h(type)f Fp(idxtype)p FL(,)g(which)0 1785 y(by)f(def)o(ault)f(is)i(equi)n(v)n (alent)e(to)h Fp(int)g FL(\()p Fs(i.e)p FL(.,)g(inte)o(gers\).)0 2012 y Fr(5.3)100 b(P)m(ar)r(titioning)27 b(Objectives)0 2172 y FL(The)d(partitioning)e(algorithms)h(in)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)27 b FL(can)d(be)g(used)g(to)g (compute)e(a)j(balanced)e Ft(k)5 b FL(-w)o(ay)23 b(partitioning)f(that) i(minimizes)g(either)0 2281 y(the)g(number)d(of)j(edges)f(that)g (straddle)g(partitions)g(\()p Fs(edg)o(ecut)p FL(\))f(or)h(the)h(total) g(communication)c(v)n(olume)j(\()p Fs(totalv)p FL(\).)34 b(In)23 b(the)h(rest)g(of)f(this)0 2391 y(section)d(we)h(brie\003y)e (describe)g(these)i(tw)o(o)f(objecti)n(v)o(es)f(and)h(pro)o(vide)e (some)i(suggestions)f(on)h(when)g(the)o(y)f(should)g(be)h(used.)0 2600 y FB(Minimizing)j(the)h(Edg)q(e-Cut)99 b FL(Consider)20 b(a)i(graph)g Ft(G)30 b FM(D)25 b Fu(.)r Ft(V)8 b Fu(;)20 b Ft(E)7 b Fu(/)p FL(,)22 b(and)f(let)29 b Ft(P)f FL(be)21 b(a)h(v)o(ector)e(of)h(size)h FM(j)r Ft(V)13 b FM(j)21 b FL(such)g(that)29 b Ft(P)6 b FM(T)o Ft(i)j FM(U)21 b FL(stores)0 2710 y(the)f(number)f(of)h(the)g(partition)g(that)g(v)o (erte)o(x)e Ft(i)29 b FL(belongs)19 b(to.)26 b(The)20 b Fs(edg)o(ecut)f FL(of)h(this)h(partitioning)d(is)k(de\002ned)d(as)i (the)f(number)f(of)h(edges)0 2819 y(that)d(straddle)f(partitions.)23 b(That)16 b(is,)i(the)e(number)f(of)i(edges)f Fu(.v)s(;)e Ft(u)t Fu(/)k FL(for)e(which)23 b Ft(P)6 b FM(T)p Fu(v)s FM(U)24 b(6)r(D)30 b Ft(P)6 b FM(T)p Ft(u)t FM(U)p FL(.)24 b(If)17 b(the)f(graph)g(has)g(weights)h(associated)0 2929 y(with)j(the)h(edges,)e(then)h(the)g(edgecut)f(is)i(de\002ned)e (as)i(the)f(sum)h(of)e(the)i(weight)e(of)h(these)h(straddling)e(edges.) 0 3138 y FB(Minimizing)26 b(the)h(T)-7 b(otal)28 b(Comm)n(unication)e (V)-7 b(olume)99 b FL(Consider)23 b(a)i(graph)f Ft(G)36 b FM(D)30 b Fu(.)r Ft(V)8 b Fu(;)20 b Ft(E)7 b Fu(/)p FL(,)26 b(and)d(let)32 b Ft(P)f FL(be)25 b(a)f(v)o(ector)f(of)h(size)0 3248 y FM(j)r Ft(V)12 b FM(j)20 b FL(such)f(that)26 b Ft(P)6 b FM(T)o Ft(i)j FM(U)19 b FL(stores)g(the)g(number)f(of)g(the)h (partition)f(that)i(v)o(erte)o(x)c Ft(i)28 b FL(belongs)18 b(to.)25 b(Let)c Ft(V)2726 3260 y Ff(b)2786 3248 y FM(\032)k Ft(V)32 b FL(be)19 b(the)g(subset)g(of)g(interf)o(ace)f(\(or)0 3357 y(boarder\))i(v)o(ertices.)32 b(That)23 b(is,)h(each)e(v)o(erte)o (x)g Fu(v)31 b FM(2)f Ft(V)1497 3369 y Ff(b)1557 3357 y FL(is)24 b(connected)d(to)h(at)i(least)f(one)f(v)o(erte)o(x)f(that)i (belongs)f(to)h(a)g(dif)n(ferent)e(partition.)0 3467 y(F)o(or)h(each)g(v)o(erte)o(x)e Fu(v)31 b FM(2)e Ft(V)740 3479 y Ff(b)799 3467 y FL(let)g Ft(N)8 b(a)t(d)k(j)d FM(T)p Fu(v)s FM(U)22 b FL(be)g(the)g(number)e(of)i(domains)f(other)h (than)28 b Ft(P)6 b FM(T)p Fu(v)s FM(U)24 b FL(that)e(the)g(v)o (ertices)g(adjacent)f(to)i Fu(v)j FL(belong)0 3577 y(to.)f(The)20 b Fs(totalv)g FL(of)g(this)g(partitioning)f(is)i(de\002ned)e(as:)1561 3778 y Fs(totalv)j FM(D)1873 3699 y Fc(X)1861 3872 y Fg(v)s Fe(2)r Ff(V)1974 3882 y Fa(b)2023 3778 y Ft(N)8 b(a)t(d)k(j)d FM(T)p Fu(v)s FM(U)p Fu(:)1463 b FL(\(1\))0 4048 y(Equation)19 b(1)i(corresponds)e(to)i(the)g(total)g (communication)d(v)n(olume)i(incurred)f(by)h(the)h(partitioning)e (because)h(each)h(interf)o(ace)f(v)o(erte)o(x)0 4158 y Fu(v)25 b FL(needs)19 b(to)i(be)f(sent)g(to)h(all)f(of)g(its)28 b Ft(N)8 b(a)t(d)k(j)d FM(T)p Fu(v)s FM(U)19 b FL(partitions.)100 4267 y(The)k(abo)o(v)o(e)e(model)i(can)g(be)g(e)o(xtended)e(to)j (instances)f(in)h(which)e(the)i(amount)e(of)h(data)g(that)g(needs)g(to) h(be)f(sent)h(for)e(each)h(node)g(is)0 4377 y(dif)n(ferent.)g(In)c (particular)m(,)f(if)i Fu(w)907 4389 y Fg(v)964 4377 y FL(is)h(the)e(amount)f(of)h(data)h(that)f(needs)g(to)h(be)f(sent)h (for)f(v)o(erte)o(x)f Fu(v)s FL(,)j(then)e(Equation)e(1)j(can)f(be)h (re-written)0 4487 y(as:)1512 4596 y Fs(totalv)i FM(D)1824 4517 y Fc(X)1812 4691 y Fg(v)s Fe(2)r Ff(V)1925 4701 y Fa(b)1967 4596 y Fu(w)2028 4608 y Fg(v)2072 4596 y Ft(N)8 b(a)t(d)k(j)d FM(T)p Fu(v)s FM(U)p Fu(:)1414 b FL(\(2\))2 4835 y Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)24 b FL(supports)19 b(this)j(weighted)d(totalv)h(model)g(by)g(using)h(an)f (array)g(called)g Fp(vsize)g FL(such)h(that)g(the)f(amount)f(of)i(data) f(that)h(needs)0 4944 y(to)h(be)f(sent)h(due)f(to)h(the)f Ft(i)9 b FL(th)21 b(v)o(erte)o(x)f(is)j(stored)e(in)h Fp(vsize[)o Ft(i)9 b Fp(])p FL(.)28 b(Note)22 b(that)f(the)h(amount)e (of)i(data)f(that)h(needs)f(to)h(be)g(sent)g(is)g(dif)n(ferent)0 5054 y(from)j(the)g Fs(weight)h FL(of)f(the)h(v)o(erte)o(x.)39 b(The)25 b(former)g(corresponds)e(to)j(communication)c(cost)k(whereas)f (the)h(later)g(corresponds)d(to)j(the)0 5164 y(computational)18 b(cost.)100 5273 y(Note)j(that)h(for)f(partitioning)e(algorithms)h(to)i (correctly)e(minimize)h(the)h(totalv)-5 b(,)20 b(the)i(graph)e(should)h (re\003ect)g(the)h(true)f(information)0 5383 y(e)o(xchange)c (requirements)g(of)i(the)g(underlying)e(computations.)23 b(F)o(or)18 b(instance,)h(the)h(dual)e(graph)g(of)h(a)h(\002nite)f (element)g(mesh)g(does)g(not)1908 5649 y(19)p eop %%Page: 20 20 20 19 bop 0 83 a FL(correctly)19 b(model)g(the)h(underlying)e (communication,)f(whereas)j(the)g(nodal)f(graph)g(does.)0 292 y FB(Whic)o(h)h(one)e(is)i(Better?)99 b FL(When)17 b(partitioning)d(is)k(used)f(to)g(distrib)n(ute)f(a)h(graph)e(or)i(a)g (mesh)g(among)e(the)i(processors)e(of)i(a)g(parallel)0 402 y(computer)m(,)24 b(the)i(edgecut)e(is)i(only)e(an)i(approximation) c(of)j(the)g(true)g(communication)e(cost)i(resulting)g(from)f(the)h (partitioning.)39 b(On)0 511 y(the)25 b(other)e(hand,)i(by)f (minimizing)f(the)h(totalv)g(we)h(can)g(directly)e(minimize)h(the)h(o)o (v)o(erall)e(communication)e(cost.)39 b(Despite)24 b(of)h(that,)0 621 y(for)i(man)o(y)f(graphs)h(the)g(solutions)g(obtained)f(by)h (minimizing)f(the)i(edgecut)e(or)h(minimizing)f(the)i(totalv)-5 b(,)28 b(are)g(comparable.)44 b(This)0 731 y(is)27 b(especially)g(true) f(for)g(graphs)f(corresponding)e(to)k(well-shaped)e(\002nite)i(element) f(meshes.)43 b(This)27 b(is)h(because)d(for)h(these)h(graphs,)0 840 y(the)e(de)o(grees)f(of)g(the)h(v)n(arious)f(v)o(ertices)h(are)g (similar)g(and)f(the)h(objecti)n(v)o(es)f(of)h(minimizing)e(the)i (edgecut)f(or)g(the)h(totalv)g(beha)n(v)o(e)f(the)0 950 y(same.)38 b(On)25 b(the)g(other)e(hand,)i(if)g(the)f(v)o(erte)o(x)f (de)o(grees)h(v)n(ary)f(signi\002cantly)h(\()p Fs(e)o(.g)o FL(.,)h(graphs)f(corresponding)d(to)k(linear)f(programming)0 1059 y(matrices\),)19 b(then)h(by)g(minimizing)f(the)h(totalv)g(we)g (can)g(obtain)g(a)g(signi\002cant)g(reduction)e(in)j(the)f(total)g (communication)d(v)n(olume.)100 1169 y(In)j(terms)i(of)e(the)i(amount)d (of)i(time)g(required)f(by)g(these)i(tw)o(o)f(partitioning)e(objecti)n (v)o(es,)h(minimizing)g(the)h(edgecut)f(is)i(f)o(aster)f(than)0 1279 y(minimizing)28 b(the)h(totalv)-5 b(.)52 b(F)o(or)29 b(this)h(reason,)h(the)f(totalv)f(objecti)n(v)o(e)f(should)g(be)i(used) f(only)g(for)f(problems)g(in)i(which)f(it)h(actually)0 1388 y(reduces)19 b(the)i(o)o(v)o(erall)d(communication)g(v)n(olume.) 1908 5649 y(20)p eop %%Page: 21 21 21 20 bop 0 83 a Fr(5.4)100 b(Graph)27 b(P)m(ar)r(titioning)g(Routines) 0 240 y FB(METIS)p 258 240 25 4 v 31 w(P)n(ar)r(tGraphRecur)o(sive)20 b FL(\(int)g(*n,)g(idxtype)f(*xadj,)g(idxtype)f(*adjnc)o(y)-5 b(,)18 b(idxtype)h(*vwgt,)g(idxtype)g(*adjwgt,)g(int)h(*wgt\003ag,)1105 350 y(int)h(*num\003ag,)d(int)i(*nparts,)f(int)h(*options,)f(int)h (*edgecut,)f(idxtype)f(*part\))0 587 y FB(Description)208 697 y FL(It)23 b(is)i(used)e(to)h(partition)f(a)h(graph)e(into)h Ft(k)29 b FL(equal-size)23 b(parts)g(using)g(multile)n(v)o(el)g (recursi)n(v)o(e)f(bisection.)35 b(It)23 b(pro)o(vides)f(the)i(func-) 208 806 y(tionality)c(of)i(the)f Fp(pmetis)g FL(program.)27 b(The)21 b(objecti)n(v)o(e)f(of)i(the)f(partitioning)f(is)i(to)g (minimize)e(the)i(edgecut)e(\(as)i(described)e(in)208 916 y(Section)f(5.3\).)0 1087 y FB(P)n(arameter)o(s)208 1202 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h (graph.)208 1314 y FC(xadj,)e(adjncy)581 1423 y FL(The)h(adjacenc)o(y)e (structure)i(of)g(the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.) 208 1535 y FC(vwgt,)f(adjwgt)581 1645 y FL(Information)f(about)h(the)h (weights)g(of)g(the)g(v)o(ertices)g(and)f(edges)h(as)h(described)e(in)h (Section)g(5.1.)208 1783 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 1921 y(0)83 b(No)20 b(weights)g(\(vwgts)g(and)f(adjwgt)h (are)g(NULL\))581 2045 y(1)83 b(W)-7 b(eights)21 b(on)e(the)h(edges)g (only)g(\(vwgts)f(=)i(NULL\))581 2168 y(2)83 b(W)-7 b(eights)21 b(on)e(the)h(v)o(ertices)g(only)g(\(adjwgt)f(=)i(NULL\))581 2292 y(3)83 b(W)-7 b(eights)21 b(both)e(on)h(v)o(ertices)f(and)h (edges.)208 2430 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g (which)g(numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f (structure)g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2540 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:) 581 2678 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g (starts)h(from)e(0)581 2802 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i(starts)g(from)e(1)208 2940 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h (partition)e(the)h(graph.)208 3078 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o(gers)e(that)h(is)i(used) e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f(phases)h(of)g(the)g (algorithm.)581 3187 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v) n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h(elements)g(of)581 3297 y Fs(options)c FL(are)i(interpreted)d(as)j(follo)n(ws:)581 3435 y(options[1])108 b(Determines)20 b(matching)e(type.)25 b(Possible)20 b(v)n(alues)g(are:)1033 3559 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 3683 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 3806 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 3930 y(Experiments)f(has)h (sho)n(wn)g(that)g(both)f(HEM)h(and)g(SHEM)g(perform)f(quite)g(well.) 581 4054 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g (during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1033 4178 y(1)83 b(Re)o(gion)19 b(Gro)n(wing)g(\(Def)o(ault\))581 4302 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h (re\002nement.)k(Possible)c(v)n(alues)g(are:)1033 4425 y(1)83 b(Early-Exit)18 b(Boundary)h(FM)h(re\002nement)f(\(Def)o(ault\)) 581 4549 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o(ault\).)208 4687 y FC(edgecut)100 b FL(Upon)19 b(successful)h(completion,)e(this)j (v)n(ariable)e(stores)i(the)f(number)e(of)i(edges)g(that)g(are)g(cut)h (by)e(the)i(partition.)208 4825 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h (completion)f(stores)i(the)g(partition)f(v)o(ector)f(of)h(the)h(graph.) 23 b(The)581 4935 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i (from)e(either)h(0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)0 5106 y FB(Note)208 5216 y FL(This)d(function)f (should)h(be)g(used)g(to)h(partition)f(a)g(graph)g(into)g(a)h(small)g (number)e(of)h(partitions)g(\(less)h(than)f(8\).)23 b(If)17 b(a)g(lar)o(ge)e(number)208 5325 y(of)k(partitions)h(is)h(desired,)e (the)h Fz(METIS)p 1369 5325 V 31 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)g FL(should)f(be)i(used)e(instead,)h(as)h(it)g(is)g(signi\002cantly)e(f)o (aster)-5 b(.)1908 5649 y(21)p eop %%Page: 22 22 22 21 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(P)n(ar)r(tGraphKwa)n(y) 20 b FL(\(int)g(*n,)f(idxtype)g(*xadj,)g(idxtype)g(*adjnc)o(y)-5 b(,)18 b(idxtype)g(*vwgt,)i(idxtype)e(*adjwgt,)h(int)i(*wgt\003ag,)925 193 y(int)f(*num\003ag,)e(int)j(*nparts,)e(int)h(*options,)f(int)h (*edgecut,)e(idxtype)h(*part\))0 380 y FB(Description)208 490 y FL(It)32 b(is)i(used)e(to)g(partition)g(a)g(graph)f(into)i Ft(k)k FL(equal-size)32 b(parts)g(using)g(the)h(multile)n(v)o(el)e Ft(k)5 b FL(-w)o(ay)32 b(partitioning)e(algorithm.)60 b(It)208 600 y(pro)o(vides)17 b(the)j(functionality)e(of)h(the)h Fp(kmetis)f FL(program.)j(The)e(objecti)n(v)o(e)e(of)h(the)h (partitioning)e(is)i(to)g(minimize)f(the)h(edgecut)208 709 y(\(as)g(described)f(in)h(Section)g(5.3\).)0 869 y FB(P)n(arameter)o(s)208 973 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 1074 y FC(xadj,)e(adjncy)581 1183 y FL(The)h(adjacenc)o(y)e(structure)i(of)g (the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.)208 1284 y FC(vwgt,)f(adjwgt)581 1394 y FL(Information)f(about)h(the)h (weights)g(of)g(the)g(v)o(ertices)g(and)f(edges)h(as)h(described)e(in)h (Section)g(5.1.)208 1521 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 1648 y(0)83 b(No)20 b(weights)g(\(vwgts)g(and)f(adjwgt)h (are)g(NULL\))581 1766 y(1)83 b(W)-7 b(eights)21 b(on)e(the)h(edges)g (only)g(\(vwgts)f(=)i(NULL\))581 1884 y(2)83 b(W)-7 b(eights)21 b(on)e(the)h(v)o(ertices)g(only)g(\(adjwgt)f(=)i(NULL\))581 2003 y(3)83 b(W)-7 b(eights)21 b(both)e(on)h(v)o(ertices)f(and)h (edges.)208 2129 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g (which)g(numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f (structure)g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2239 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:) 581 2366 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g (starts)h(from)e(0)581 2484 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i(starts)g(from)e(1)208 2611 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h (partition)e(the)h(graph.)208 2738 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o(gers)e(that)h(is)i(used) e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f(phases)h(of)g(the)g (algorithm.)581 2848 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v) n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h(elements)g(of)581 2957 y Fs(options)c FL(are)i(interpreted)d(as)j(follo)n(ws:)581 3084 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 3203 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 3321 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 3439 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 3557 y(Experiments)f(has)h (sho)n(wn)g(that)g(both)f(HEM)h(and)g(SHEM)g(perform)f(quite)g(well.) 581 3676 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g (during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1033 3794 y(1)83 b(Multile)n(v)o(el)19 b(recursi)n(v)o(e)g(bisection)g (\(Def)o(ault\))581 3912 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h(re\002nement.)k(Possible)c(v)n(alues)g (are:)1033 4030 y(1)83 b(Random)19 b(boundary)e(re\002nement)1033 4149 y(2)83 b(Greedy)19 b(boundary)e(re\002nement)1033 4267 y(3)83 b(Random)19 b(boundary)e(re\002nement)i(that)h(also)h (minimizes)f(the)g(connecti)n(vity)e(among)h(the)h(sub-)1158 4377 y(domains)f(\(Def)o(ault\))581 4495 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g (it)g(to)f(0)h(\(Def)o(ault\).)208 4622 y FC(edgecut)100 b FL(Upon)19 b(successful)h(completion,)e(this)j(v)n(ariable)e(stores)i (the)f(number)e(of)i(edges)g(that)g(are)g(cut)h(by)e(the)i(partition.) 208 4749 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h(completion)f(stores)i(the)g (partition)f(v)o(ector)f(of)h(the)h(graph.)23 b(The)581 4858 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i(from)e(either)h (0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)0 5019 y FB(Note)208 5128 y FL(This)24 b(function)f(should)g(be)i(used)f(to)h(partition)e(a)i(graph)e(into)h (a)h(lar)o(ge)f(number)e(of)j(partitions)e(\(greater)g(than)h(8\).)38 b(If)24 b(a)h(small)208 5238 y(number)17 b(of)i(partitions)g(is)h (desired,)f(the)g Fz(METIS)p 1639 5238 V 31 w(P)m(ar)s(tGr)o (aphRecursiv)n(e)g FL(should)g(be)g(used)g(instead,)g(as)h(it)g (produces)e(some-)208 5347 y(what)i(better)f(partitions.)1908 5649 y(22)p eop %%Page: 23 23 23 22 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(P)n(ar)r(tGraphVKwa)n(y) 20 b FL(\(int)g(*n,)g(idxtype)e(*xadj,)h(idxtype)g(*adjnc)o(y)-5 b(,)18 b(idxtype)h(*vwgt,)g(idxtype)g(*vsize,)g(int)i(*wgt\003ag,)980 193 y(int)f(*num\003ag,)f(int)h(*nparts,)f(int)h(*options,)f(int)h(*v)n (olume,)f(idxtype)g(*part\))0 452 y FB(Description)208 561 y FL(It)28 b(is)h(used)f(to)h(partition)e(a)i(graph)e(into)h Ft(k)33 b FL(equal-size)28 b(parts)g(using)g(the)g(multile)n(v)o(el)f Ft(k)5 b FL(-w)o(ay)28 b(partitioning)e(algorithm.)48 b(The)208 671 y(objecti)n(v)o(e)18 b(of)i(the)g(partitioning)f(is)i(to) f(minimize)g(the)g(total)g(communication)d(v)n(olume)j(\(as)g (described)f(in)h(Section)g(5.3\).)0 847 y FB(P)n(arameter)o(s)208 966 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h (graph.)208 1083 y FC(xadj,)e(adjncy)581 1193 y FL(The)h(adjacenc)o(y)e (structure)i(of)g(the)g(graph)f(as)i(described)d(in)j(Sections)f(5.1)f (and)h(5.3.)208 1309 y FC(vwgt,)f(vsize)581 1419 y FL(Information)h (about)j(the)g(weights)g(of)g(the)g(v)o(ertices)f(related)h(to)g(the)g (computation)e(and)i(communication)d(as)k(de-)581 1529 y(scribed)c(in)g(Section)g(5.1.)208 1671 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 1814 y(0)83 b(No)20 b(weights)g(\(vwgts)g(and)f(vsize)i (are)f(NULL\))581 1940 y(1)83 b(Communication)18 b(weights)i(only)f (\(vwgts)h(=)g(NULL\))581 2067 y(2)83 b(Computation)18 b(weights)i(only)f(\(vsize)h(=)h(NULL\))581 2193 y(3)83 b(Both)20 b(communication)d(and)j(computation)e(weights.)208 2335 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2445 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 2588 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 2714 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 2857 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h(partition)e(the)h(graph.)208 3000 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o (gers)e(that)h(is)i(used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n (arious)f(phases)h(of)g(the)g(algorithm.)581 3109 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h (elements)g(of)581 3219 y Fs(options)c FL(are)i(interpreted)d(as)j (follo)n(ws:)581 3362 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 3488 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 3614 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 3740 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f(Matching)h(\(SHEM\))h(\(Def)o (ault\))1033 3866 y(Experiments)f(has)h(sho)n(wn)g(that)g(both)f(HEM)h (and)g(SHEM)g(perform)f(quite)g(well.)581 3993 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g(during)g(initial)i (partitioning.)h(Possible)f(v)n(alues)f(are:)1033 4119 y(1)83 b(Multile)n(v)o(el)19 b(recursi)n(v)o(e)g(bisection)g(\(Def)o (ault\))581 4245 y(options[3])108 b(Determines)20 b(the)g(algorithm)f (used)g(for)h(re\002nement.)k(Possible)c(v)n(alues)g(are:)1033 4371 y(1)83 b(Random)19 b(boundary)e(re\002nement)i(\(Def)o(ault\))1033 4497 y(3)83 b(Random)19 b(boundary)e(re\002nement)i(that)h(also)h (minimizes)f(the)g(connecti)n(vity)e(among)h(the)h(sub-)1158 4607 y(domains)581 4733 y(options[4])108 b(Used)21 b(for)e(deb)n (ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o (ault\).)208 4876 y FC(v)o(olume)115 b FL(Upon)28 b(successful)h (completion,)g(this)g(v)n(ariable)f(stores)h(the)g(total)g (communication)d(v)n(olume)h(requires)h(by)h(the)581 4986 y(partition.)208 5128 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h (completion)f(stores)i(the)g(partition)f(v)o(ector)f(of)h(the)h(graph.) 23 b(The)581 5238 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i (from)e(either)h(0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)1908 5649 y(23)p eop %%Page: 24 24 24 23 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(mCP)n(ar)r(tGraphRecur)o (sive)20 b FL(\(int)g(*n,)f(int)i(*ncon,)d(idxtype)h(*xadj,)g(idxtype)g (*adjnc)o(y)-5 b(,)18 b(idxtype)g(*vwgt,)i(idxtype)e(*adjwgt,)1239 193 y(int)i(*wgt\003ag,)f(int)i(*num\003ag,)d(int)i(*nparts,)f(int)i (*options,)d(int)j(*edgecut,)d(idxtype)h(*part\))0 447 y FB(Description)208 557 y FL(It)g(is)h(used)f(to)h(partition)e(a)h (graph)f(into)h Ft(k)25 b FL(parts)19 b(such)g(that)g(multiple)g (balancing)e(constraints)i(are)g(satis\002ed.)25 b(It)20 b(uses)g(the)f(multi-)208 666 y(constraint)h(multile)n(v)o(el)h (recursi)n(v)o(e)f(bisection)h(algorithm.)27 b(It)22 b(pro)o(vides)e(the)h(functionality)f(of)h(the)h Fp(pmetis)f FL(program)e(when)208 776 y(it)g(is)g(used)g(to)f(compute)f(a)i (multi-constraint)e(partitioning.)22 b(The)d(objecti)n(v)o(e)e(of)h (the)h(partitioning)d(is)k(to)e(minimize)g(the)h(edgecut)208 885 y(\(as)h(described)f(in)h(Section)g(5.3\).)0 1060 y FB(P)n(arameter)o(s)208 1179 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 1321 y FC(ncon)202 b FL(The)20 b(number)e(of)i(constraints.)25 b(This)20 b(should)f(be)h(greater)f(than)h(one)g(and)f(smaller)i(than)e (15.)208 1436 y FC(xadj,)g(adjncy)581 1546 y FL(The)h(adjacenc)o(y)e (structure)i(of)g(the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.) 208 1662 y FC(vwgt,)f(adjwgt)581 1771 y FL(Information)k(about)h(the)h (weights)g(of)g(the)h(v)o(ertices)e(and)h(edges)g(as)h(described)e(in)h (Section)g(5.1.)40 b(Note)25 b(that)h(the)581 1881 y(weight)20 b(v)o(ector)f(must)h(be)g(supplied)f(and)h(it)h(should)e(be)h(of)g (size)h Fz(n*ncon)p FL(.)208 2023 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 2164 y(0)83 b(No)20 b(weights)g(\(adjwgt)f(is)i(NULL\))581 2290 y(1)83 b(W)-7 b(eights)21 b(on)e(the)h(edges.)208 2432 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2541 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 2683 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 2809 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 2951 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h(partition)e(the)h(graph.)208 3092 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o (gers)e(that)h(is)i(used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n (arious)f(phases)h(of)g(the)g(algorithm.)581 3202 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h (elements)g(of)581 3312 y Fs(options)c FL(are)i(interpreted)d(as)j (follo)n(ws:)581 3453 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 3579 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 3705 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 3830 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f(Matching)h(\(SHEM\))h(\(Def)o (ault\))1033 3956 y(5)83 b(Sorted)19 b(Hea)n(vy-Edge)f(Matching)h (follo)n(wed)g(by)h(1-norm)e(Balanced-edge)g(\(SHEBM1N\))1033 4082 y(6)83 b(Sorted)28 b(Hea)n(vy-Edge)f(Matching)h(follo)n(wed)g(by)h FM(1)p FL(-norm)e(Balanced-edge)g(\(SHEBMIN\))1158 4191 y(\(Def)o(ault\))1033 4317 y(7)83 b(1-norm)18 b(Balanced-edge)g(follo)n (wed)h(by)h(Hea)n(vy-Edge)e(Matching)h(\(SBHEM1N\))1033 4443 y(8)83 b FM(1)p FL(-norm)18 b(Balanced-edge)g(follo)n(wed)h(by)h (Hea)n(vy-Edge)e(Matching)h(\(SBHEMIN\))1033 4568 y(Experiments)g(has)j (sho)n(wn)e(that)h(for)g(simple)g(balancing)e(problems,)h(the)h (schemes)g(that)g(gi)n(v)o(e)f(pri-)1033 4678 y(ority)15 b(to)h(hea)n(vy)e(edges)h(\()p Fs(e)o(.g)o FL(.,)h(SHEM,)g(SHEBM1N,)f (SHEBMIN\))g(perform)e(better)m(,)j(and)f(for)f(hard)1033 4788 y(balancing)i(problems,)f(the)i(schemes)g(that)g(gi)n(v)o(e)g (priority)e(to)i(balanced)f(edges)h(\()p Fs(e)o(.g)n FL(.,)h(SBHEM1N,)1033 4897 y(SBHEMIN\))i(perform)e(better)-5 b(.)581 5023 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used) g(during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1033 5149 y(1)83 b(Multi-constraint)18 b(Greedy)h(Graph)g(Gro)n(wing)1033 5274 y(2)83 b(Random)19 b(\(Def)o(ault\))581 5400 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h(re\002nement.)k (Possible)c(v)n(alues)g(are:)1908 5649 y(24)p eop %%Page: 25 25 25 24 bop 1033 83 a FL(1)83 b(Early-Exit)18 b(Boundary)h(FM)h (re\002nement)f(\(Def)o(ault\))581 209 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g (it)g(to)f(0)h(\(Def)o(ault\).)208 352 y FC(edgecut)100 b FL(Upon)19 b(successful)h(completion,)e(this)j(v)n(ariable)e(stores)i (the)f(number)e(of)i(edges)g(that)g(are)g(cut)h(by)e(the)i(partition.) 208 495 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h(completion)f(stores)i(the)g (partition)f(v)o(ector)f(of)h(the)h(graph.)23 b(The)581 604 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i(from)e(either)h (0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)0 780 y FB(Note)208 890 y FL(This)d(function)f (should)g(be)i(used)f(to)h(partition)e(a)i(graph)e(into)h(a)h(small)g (number)e(of)h(partitions.)23 b(If)16 b(a)h(lar)o(ge)e(number)g(of)h (partitions)208 1000 y(is)24 b(desired,)g(the)g Fz(METIS)p 957 1000 25 4 v 31 w(mCP)m(ar)s(tGr)o(aphKw)o(a)n(y)g FL(should)f(be)h(used)g(instead,)g(as)h(it)f(produces)f(some)n(what)g (better)g(partitions)208 1109 y(\(both)c(in)h(terms)g(of)g(quality)f (and)h(balance\).)1908 5649 y(25)p eop %%Page: 26 26 26 25 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(mCP)n(ar)r(tGraphKwa)n (y)19 b FL(\(int)i(*n,)e(int)h(*ncon,)f(idxtype)g(*xadj,)g(idxtype)g (*adjnc)o(y)-5 b(,)17 b(idxtype)i(*vwgt,)g(idxtype)g(*adjwgt,)1058 193 y(int)i(*wgt\003ag,)e(int)h(*num\003ag,)f(int)h(*nparts,)f(\003oat) h(*ub)o(v)o(ec,)e(int)i(*options,)f(int)h(*edgecut,)1058 302 y(idxtype)f(*part\))0 560 y FB(Description)208 669 y FL(It)g(is)h(used)f(to)h(partition)e(a)h(graph)f(into)h Ft(k)25 b FL(parts)19 b(such)g(that)g(multiple)g(balancing)e (constraints)i(are)g(satis\002ed.)25 b(It)20 b(uses)g(the)f(multi-)208 779 y(constraint)i(multile)n(v)o(el)g Ft(k)5 b FL(-w)o(ay)21 b(partitioning)f(algorithm.)29 b(It)22 b(pro)o(vides)e(the)i (functionality)e(of)i(the)g Fp(kmetis)f FL(program)f(when)208 889 y(it)f(is)g(used)g(to)f(compute)f(a)i(multi-constraint)e (partitioning.)22 b(The)d(objecti)n(v)o(e)e(of)h(the)h(partitioning)d (is)k(to)e(minimize)g(the)h(edgecut)208 998 y(\(as)h(described)f(in)h (Section)g(5.3\).)0 1174 y FB(P)n(arameter)o(s)208 1293 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.) 208 1436 y FC(ncon)202 b FL(The)20 b(number)e(of)i(constraints.)25 b(This)20 b(should)f(be)h(greater)f(than)h(one)g(and)f(smaller)i(than)e (15.)208 1552 y FC(xadj,)g(adjncy)581 1662 y FL(The)h(adjacenc)o(y)e (structure)i(of)g(the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.) 208 1778 y FC(vwgt,)f(adjwgt)581 1887 y FL(Information)k(about)h(the)h (weights)g(of)g(the)h(v)o(ertices)e(and)h(edges)g(as)h(described)e(in)h (Section)g(5.1.)40 b(Note)25 b(that)h(the)581 1997 y(weight)20 b(v)o(ector)f(must)h(be)g(supplied)f(and)h(it)h(should)e(be)h(of)g (size)h Fz(n*ncon)p FL(.)208 2140 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 2282 y(0)83 b(No)20 b(weights)g(\(adjwgt)f(is)i(NULL\))581 2408 y(1)83 b(W)-7 b(eights)21 b(on)e(the)h(edges.)208 2551 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2660 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 2803 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 2929 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 3071 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h(partition)e(the)h(graph.)208 3214 y FC(ub)o(v)o(ec)167 b FL(This)24 b(is)h(a)g(v)o(ector)e(of)g (size)i Fz(ncon)g FL(that)f(speci\002es)g(the)g(load)g(imbalance)f (tolerances)g(for)g(each)h(one)f(of)h(the)g Fz(ncon)581 3323 y FL(constraints.)g(Each)c(tolerance)f(should)g(be)h(greater)g (than)f(1.0)h(\(preferably)d(greater)j(than)f(1.03\).)208 3466 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o (gers)e(that)h(is)i(used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n (arious)f(phases)h(of)g(the)g(algorithm.)581 3575 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h (elements)g(of)581 3685 y Fs(options)c FL(are)i(interpreted)d(as)j (follo)n(ws:)581 3827 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 3953 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 4079 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 4205 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f(Matching)h(\(SHEM\))h(\(Def)o (ault\))1033 4331 y(5)83 b(Sorted)19 b(Hea)n(vy-Edge)f(Matching)h (follo)n(wed)g(by)h(1-norm)e(Balanced-edge)g(\(SHEBM1N\))1033 4458 y(6)83 b(Sorted)28 b(Hea)n(vy-Edge)f(Matching)h(follo)n(wed)g(by)h FM(1)p FL(-norm)e(Balanced-edge)g(\(SHEBMIN\))1158 4567 y(\(Def)o(ault\))1033 4693 y(7)83 b(1-norm)18 b(Balanced-edge)g(follo)n (wed)h(by)h(Hea)n(vy-Edge)e(Matching)h(\(SBHEM1N\))1033 4819 y(8)83 b FM(1)p FL(-norm)18 b(Balanced-edge)g(follo)n(wed)h(by)h (Hea)n(vy-Edge)e(Matching)h(\(SBHEMIN\))1033 4945 y(Experiments)g(has)j (sho)n(wn)e(that)h(for)g(simple)g(balancing)e(problems,)h(the)h (schemes)g(that)g(gi)n(v)o(e)f(pri-)1033 5055 y(ority)15 b(to)h(hea)n(vy)e(edges)h(\()p Fs(e)o(.g)o FL(.,)h(SHEM,)g(SHEBM1N,)f (SHEBMIN\))g(perform)e(better)m(,)j(and)f(for)f(hard)1033 5164 y(balancing)i(problems,)f(the)i(schemes)g(that)g(gi)n(v)o(e)g (priority)e(to)i(balanced)f(edges)h(\()p Fs(e)o(.g)n FL(.,)h(SBHEM1N,)1033 5274 y(SBHEMIN\))i(perform)e(better)-5 b(.)581 5400 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used) g(during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1908 5649 y(26)p eop %%Page: 27 27 27 26 bop 1033 83 a FL(1)83 b(Multile)n(v)o(el)19 b(recursi)n(v)o(e)g (bisection)1033 209 y(2)83 b(Relax)o(ed)19 b(Multile)n(v)o(el)h (recursi)n(v)o(e)e(bisection)i(\(Def)o(ault\))581 335 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h (re\002nement.)k(Possible)c(v)n(alues)g(are:)1033 462 y(1)83 b(Random)19 b(boundary)e(re\002nement)i(\(Def)o(ault\))581 588 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o(ault\).)208 731 y FC(edgecut)100 b FL(Upon)19 b(successful)h(completion,)e(this)j (v)n(ariable)e(stores)i(the)f(number)e(of)i(edges)g(that)g(are)g(cut)h (by)e(the)i(partition.)208 873 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h (completion)f(stores)i(the)g(partition)f(v)o(ector)f(of)h(the)h(graph.) 23 b(The)581 983 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i (from)e(either)h(0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)0 1159 y FB(Note)208 1269 y FL(This)24 b(function)f(should)g(be)i(used)f(to)h(partition)e(a)i(graph)e(into)h (a)h(lar)o(ge)f(number)e(of)j(partitions)e(\(greater)g(than)h(8\).)38 b(If)24 b(a)h(small)208 1378 y(number)f(of)i(partitions)g(is)h (desired,)g(the)g Fz(METIS)p 1683 1378 25 4 v 30 w(mCP)m(ar)s(tGr)o (aphRecursiv)n(e)g FL(should)e(be)h(used)h(instead,)g(as)g(it)g (produces)208 1488 y(some)n(what)19 b(better)h(partitions.)1908 5649 y(27)p eop %%Page: 28 28 28 27 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(WP)n(ar)r(tGraphRecur)o (sive)20 b FL(\(int)h(*n,)e(idxtype)g(*xadj,)g(idxtype)g(*adjnc)o(y)-5 b(,)17 b(idxtype)i(*vwgt,)g(idxtype)g(*adjwgt,)g(int)i(*wgt\003ag,)1183 193 y(int)g(*num\003ag,)d(int)i(*nparts,)f(\003oat)i(*tpwgts,)e(int)i (*options,)d(int)j(*edgecut,)d(idxtype)h(*part\))0 452 y FB(Description)208 561 y FL(It)29 b(is)h(used)f(to)g(partition)f(a)i (graph)e(into)h Ft(k)34 b FL(parts)29 b(using)g(multile)n(v)o(el)f (recursi)n(v)o(e)g(bisection.)51 b(The)29 b(underlying)d(algorithm)i (is)208 671 y(similar)g(to)h(the)g(one)f(used)g(by)g Fz(METIS)p 1392 671 V 31 w(P)m(ar)s(tGr)o(aphRecursiv)n(e)p FL(,)i(b)n(ut)e(it)i(can)e(be)h(used)f(to)h(compute)e(a)i(partitioning) d(with)208 780 y(prescribed)19 b(partition)h(weights.)27 b(F)o(or)20 b(e)o(xample,)g(it)h(can)g(be)g(used)g(to)g(compute)e(a)j (3-w)o(ay)e(partition)g(such)g(that)h(partition)f(1)h(has)208 890 y(50\045)h(of)g(the)h(weight,)f(partition)g(2)h(has)f(20\045)h(of)f (the)h(weight,)f(and)g(partition)g(3)h(has)f(30\045)h(of)f(the)h (weight.)31 b(The)23 b(objecti)n(v)o(e)e(of)208 1000 y(the)f(partitioning)e(is)j(to)f(minimize)g(the)g(edgecut)f(\(as)i (described)d(in)j(Section)f(5.3\).)0 1176 y FB(P)n(arameter)o(s)208 1295 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h (graph.)208 1412 y FC(xadj,)e(adjncy)581 1521 y FL(The)h(adjacenc)o(y)e (structure)i(of)g(the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.) 208 1638 y FC(vwgt,)f(adjwgt)581 1748 y FL(Information)f(about)h(the)h (weights)g(of)g(the)g(v)o(ertices)g(and)f(edges)h(as)h(described)e(in)h (Section)g(5.1.)208 1890 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 2033 y(0)83 b(No)20 b(weights)g(\(vwgts)g(and)f(adjwgt)h (are)g(NULL\))581 2159 y(1)83 b(W)-7 b(eights)21 b(on)e(the)h(edges)g (only)g(\(vwgts)f(=)i(NULL\))581 2286 y(2)83 b(W)-7 b(eights)21 b(on)e(the)h(v)o(ertices)g(only)g(\(adjwgt)f(=)i(NULL\))581 2412 y(3)83 b(W)-7 b(eights)21 b(both)e(on)h(v)o(ertices)f(and)h (edges.)208 2555 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g (which)g(numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f (structure)g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2664 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:) 581 2807 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g (starts)h(from)e(0)581 2933 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i(starts)g(from)e(1)208 3076 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h (partition)e(the)h(graph.)208 3219 y FC(tpwgts)137 b FL(This)17 b(is)g(an)f(array)f(containing)g Fs(nparts)h FL(\003oating)f(point)h(numbers.)22 b(F)o(or)16 b(partition)e Ft(i)9 b FL(,)17 b Fs(tpwgts[)o Ft(i)9 b Fs(])17 b FL(stores)g(the)f (fraction)581 3328 y(of)g(the)g(total)g(weight)g(that)g(should)f(be)h (assigned)f(to)i(it.)24 b(F)o(or)15 b(e)o(xample,)h(for)f(a)i(4-w)o(ay) e(partition)g(the)h(v)o(ector)f Fs(tpwgts[])581 3438 y(=)j FM(f)p Fs(0.2)e(0.2)g(0.4)g(0.2)p FM(g)g FL(will)i(result)f(in)g (partitions)f(0,)h(1,)h(and)e(3)h(ha)n(ving)f(20\045)g(of)h(the)g (weight)g(and)f(partition)g(2)h(ha)n(ving)581 3548 y(40\045)j(of)g(the) g(weight.)25 b(Note)20 b(that)g(the)g(numbers)f(in)h Fs(tpwgts)h FL(should)e(add)h(up)g(to)g(1.0.)208 3690 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o(gers) e(that)h(is)i(used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f (phases)h(of)g(the)g(algorithm.)581 3800 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h(elements)g (of)581 3910 y Fs(options)c FL(are)i(interpreted)d(as)j(follo)n(ws:)581 4052 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 4179 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 4305 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 4431 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 4557 y(Experiments)f(has)h (sho)n(wn)g(that)g(both)f(HEM)h(and)g(SHEM)g(perform)f(quite)g(well.) 581 4683 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g (during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1033 4810 y(1)83 b(Re)o(gion)19 b(Gro)n(wing)g(\(Def)o(ault\))581 4936 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h (re\002nement.)k(Possible)c(v)n(alues)g(are:)1033 5062 y(1)83 b(Early-Exit)18 b(Boundary)h(FM)h(re\002nement)f(\(Def)o(ault\)) 581 5188 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o(ault\).)208 5331 y FC(edgecut)100 b FL(Upon)19 b(successful)h(completion,)e(this)j (v)n(ariable)e(stores)i(the)f(number)e(of)i(edges)g(that)g(are)g(cut)h (by)e(the)i(partition.)1908 5649 y(28)p eop %%Page: 29 29 29 28 bop 208 83 a FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i (size)g Fs(n)g FL(that)g(upon)e(successful)h(completion)f(stores)i(the) g(partition)f(v)o(ector)f(of)h(the)h(graph.)23 b(The)581 193 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i(from)e(either)h (0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)0 369 y FB(Note)208 478 y FL(This)d(function)f (should)h(be)g(used)g(to)h(partition)f(a)g(graph)g(into)g(a)h(small)g (number)e(of)h(partitions)g(\(less)h(than)f(8\).)23 b(If)17 b(a)g(lar)o(ge)e(number)208 588 y(of)k(partitions)h(is)h(desired,)e (the)h Fz(METIS)p 1369 588 25 4 v 31 w(WP)m(ar)s(tGr)o(aphKw)o(a)n(y)h FL(should)e(be)h(used)g(instead,)g(as)g(it)h(is)h(signi\002cantly)d(f)o (aster)-5 b(.)1908 5649 y(29)p eop %%Page: 30 30 30 29 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(WP)n(ar)r(tGraphKwa)n(y) 20 b FL(\(int)g(*n,)g(idxtype)e(*xadj,)h(idxtype)g(*adjnc)o(y)-5 b(,)18 b(idxtype)h(*vwgt,)g(idxtype)g(*adjwgt,)g(int)h(*wgt\003ag,)1003 193 y(int)g(*num\003ag,)f(int)h(*nparts,)f(\003oat)h(*tpwgts,)g(int)g (*options,)f(int)h(*edgecut,)e(idxtype)h(*part\))0 444 y FB(Description)208 554 y FL(It)29 b(is)h(used)f(to)g(partition)f(a)i (graph)e(into)h Ft(k)34 b FL(parts)29 b(using)g(multile)n(v)o(el)f (recursi)n(v)o(e)g(bisection.)51 b(The)29 b(underlying)d(algorithm)i (is)208 663 y(similar)16 b(to)h(the)f(one)g(used)g(by)h Fz(METIS)p 1320 663 V 30 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)p FL(,)g(b)n(ut)g(it)g(can)f(be)g(used)h(to)f(compute)f(a)i(partitioning) e(with)h(prescribed)208 773 y(partition)24 b(weights.)42 b(F)o(or)25 b(e)o(xample,)h(it)g(can)g(be)g(used)f(to)h(compute)e(a)j (3-w)o(ay)e(partition)f(such)i(that)g(partition)e(1)i(has)g(50\045)g (of)208 883 y(the)j(weight,)h(partition)e(2)h(has)g(20\045)g(of)g(the)f (weight,)j(and)d(partition)g(3)h(has)g(30\045)g(of)g(the)g(weight.)51 b(The)28 b(objecti)n(v)o(e)g(of)h(the)208 992 y(partitioning)18 b(is)j(to)f(minimize)g(the)g(edgecut)f(\(as)h(described)f(in)i(Section) e(5.3\).)0 1167 y FB(P)n(arameter)o(s)208 1284 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 1399 y FC(xadj,)e(adjncy)581 1509 y FL(The)h(adjacenc)o(y)e(structure)i (of)g(the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.)208 1624 y FC(vwgt,)f(adjwgt)581 1734 y FL(Information)f(about)h(the)h (weights)g(of)g(the)g(v)o(ertices)g(and)f(edges)h(as)h(described)e(in)h (Section)g(5.1.)208 1875 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 2016 y(0)83 b(No)20 b(weights)g(\(vwgts)g(and)f(adjwgt)h (are)g(NULL\))581 2141 y(1)83 b(W)-7 b(eights)21 b(on)e(the)h(edges)g (only)g(\(vwgts)f(=)i(NULL\))581 2267 y(2)83 b(W)-7 b(eights)21 b(on)e(the)h(v)o(ertices)g(only)g(\(adjwgt)f(=)i(NULL\))581 2392 y(3)83 b(W)-7 b(eights)21 b(both)e(on)h(v)o(ertices)f(and)h (edges.)208 2533 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g (which)g(numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f (structure)g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2643 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:) 581 2784 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g (starts)h(from)e(0)581 2909 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i(starts)g(from)e(1)208 3051 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h (partition)e(the)h(graph.)208 3192 y FC(tpwgts)137 b FL(This)17 b(is)g(an)f(array)f(containing)g Fs(nparts)h FL(\003oating)f(point)h(numbers.)22 b(F)o(or)16 b(partition)e Ft(i)9 b FL(,)17 b Fs(tpwgts[)o Ft(i)9 b Fs(])17 b FL(stores)g(the)f (fraction)581 3301 y(of)g(the)g(total)g(weight)g(that)g(should)f(be)h (assigned)f(to)i(it.)24 b(F)o(or)15 b(e)o(xample,)h(for)f(a)i(4-w)o(ay) e(partition)g(the)h(v)o(ector)f Fs(tpwgts[])581 3411 y(=)j FM(f)p Fs(0.2)e(0.2)g(0.4)g(0.2)p FM(g)g FL(will)i(result)f(in)g (partitions)f(0,)h(1,)h(and)e(3)h(ha)n(ving)f(20\045)g(of)h(the)g (weight)g(and)f(partition)g(2)h(ha)n(ving)581 3520 y(40\045)j(of)g(the) g(weight.)25 b(Note)20 b(that)g(the)g(numbers)f(in)h Fs(tpwgts)h FL(should)e(add)h(up)g(to)g(1.0.)208 3662 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o(gers) e(that)h(is)i(used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f (phases)h(of)g(the)g(algorithm.)581 3771 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h(elements)g (of)581 3881 y Fs(options)c FL(are)i(interpreted)d(as)j(follo)n(ws:)581 4022 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 4147 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 4273 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 4398 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 4523 y(Experiments)f(has)h (sho)n(wn)g(that)g(both)f(HEM)h(and)g(SHEM)g(perform)f(quite)g(well.) 581 4649 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g (during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1033 4774 y(1)83 b(Multile)n(v)o(el)19 b(recursi)n(v)o(e)g(bisection)g (\(Def)o(ault\))581 4900 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h(re\002nement.)k(Possible)c(v)n(alues)g (are:)1033 5025 y(1)83 b(Random)19 b(boundary)e(re\002nement)1033 5150 y(2)83 b(Greedy)19 b(boundary)e(re\002nement)1033 5276 y(3)83 b(Random)19 b(boundary)e(re\002nement)i(that)h(also)h (minimizes)f(the)g(connecti)n(vity)e(among)h(the)h(sub-)1158 5385 y(domains)f(\(Def)o(ault\))1908 5649 y(30)p eop %%Page: 31 31 31 30 bop 581 83 a FL(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f (purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o(ault\).)208 226 y FC(edgecut)100 b FL(Upon)19 b(successful)h(completion,)e(this)j (v)n(ariable)e(stores)i(the)f(number)e(of)i(edges)g(that)g(are)g(cut)h (by)e(the)i(partition.)208 369 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h (completion)f(stores)i(the)g(partition)f(v)o(ector)f(of)h(the)h(graph.) 23 b(The)581 478 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i (from)e(either)h(0)g(or)g(1,)g(depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)0 654 y FB(Note)208 764 y FL(This)24 b(function)f(should)g(be)i(used)f(to)h(partition)e(a)i(graph)e(into)h (a)h(lar)o(ge)f(number)e(of)j(partitions)e(\(greater)g(than)h(8\).)38 b(If)24 b(a)h(small)208 873 y(number)j(of)i(partitions)f(is)i(desired,) h(the)e Fz(METIS)p 1706 873 25 4 v 31 w(WP)m(ar)s(tGr)o(aphRecursiv)n (e)g FL(should)f(be)h(used)g(instead,)i(as)f(it)g(produces)208 983 y(some)n(what)19 b(better)h(partitions.)1908 5649 y(31)p eop %%Page: 32 32 32 31 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(WP)n(ar)r(tGraphVKwa)n (y)20 b FL(\(int)h(*n,)e(idxtype)g(*xadj,)g(idxtype)g(*adjnc)o(y)-5 b(,)17 b(idxtype)i(*vwgt,)g(idxtype)g(*vsize,)h(int)g(*wgt\003ag,)1058 193 y(int)h(*num\003ag,)d(int)i(*nparts,)f(\003oat)i(*tpwgts,)e(int)i (*options,)d(int)j(*v)n(olume,)d(idxtype)h(*part\))0 450 y FB(Description)208 560 y FL(It)29 b(is)h(used)f(to)g(partition)f (a)i(graph)e(into)h Ft(k)34 b FL(parts)29 b(using)g(multile)n(v)o(el)f (recursi)n(v)o(e)g(bisection.)51 b(The)29 b(underlying)d(algorithm)i (is)208 669 y(similar)16 b(to)h(the)f(one)g(used)g(by)h Fz(METIS)p 1320 669 V 30 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)p FL(,)g(b)n(ut)g(it)g(can)f(be)g(used)h(to)f(compute)f(a)i(partitioning) e(with)h(prescribed)208 779 y(partition)24 b(weights.)42 b(F)o(or)25 b(e)o(xample,)h(it)g(can)g(be)g(used)f(to)h(compute)e(a)j (3-w)o(ay)e(partition)f(such)i(that)g(partition)e(1)i(has)g(50\045)g (of)208 888 y(the)j(weight,)h(partition)e(2)h(has)g(20\045)g(of)g(the)f (weight,)j(and)d(partition)g(3)h(has)g(30\045)g(of)g(the)g(weight.)51 b(The)28 b(objecti)n(v)o(e)g(of)h(the)208 998 y(partitioning)18 b(is)j(to)f(minimize)g(the)g(total)g(communication)e(v)n(olume)h(\(as)h (described)f(in)h(Section)g(5.3\).)0 1174 y FB(P)n(arameter)o(s)208 1293 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h (graph.)208 1409 y FC(xadj,)e(adjncy)581 1519 y FL(The)h(adjacenc)o(y)e (structure)i(of)g(the)g(graph)f(as)i(described)d(in)j(Sections)f(5.1)f (and)h(5.3.)208 1635 y FC(vwgt,)f(vsize)581 1745 y FL(Information)h (about)j(the)g(weights)g(of)g(the)g(v)o(ertices)f(related)h(to)g(the)g (computation)e(and)i(communication)d(as)k(de-)581 1854 y(scribed)c(in)g(Section)g(5.1.)208 1997 y FC(wgt\003ag)113 b FL(Used)21 b(to)f(indicate)f(if)i(the)f(graph)f(is)i(weighted.)j Fs(wgt\003a)o(g)19 b FL(can)h(tak)o(e)h(the)f(follo)n(wing)e(v)n (alues:)581 2139 y(0)83 b(No)20 b(weights)g(\(vwgts)g(and)f(vsize)i (are)f(NULL\))581 2265 y(1)83 b(Communication)18 b(weights)i(only)f (\(vwgts)h(=)g(NULL\))581 2391 y(2)83 b(Computation)18 b(weights)i(only)f(\(vsize)h(=)h(NULL\))581 2517 y(3)83 b(Both)20 b(communication)d(and)j(computation)e(weights.)208 2660 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 2769 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 2912 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 3038 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 3180 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h(partition)e(the)h(graph.)208 3322 y FC(tpwgts)137 b FL(This)17 b(is)g(an)f(array)f(containing)g Fs(nparts)h FL(\003oating)f(point)h(numbers.)22 b(F)o(or)16 b(partition)e Ft(i)9 b FL(,)17 b Fs(tpwgts[)o Ft(i)9 b Fs(])17 b FL(stores)g(the)f(fraction)581 3432 y(of)g(the)g(total)g (weight)g(that)g(should)f(be)h(assigned)f(to)i(it.)24 b(F)o(or)15 b(e)o(xample,)h(for)f(a)i(4-w)o(ay)e(partition)g(the)h(v)o (ector)f Fs(tpwgts[])581 3542 y(=)j FM(f)p Fs(0.2)e(0.2)g(0.4)g(0.2)p FM(g)g FL(will)i(result)f(in)g(partitions)f(0,)h(1,)h(and)e(3)h(ha)n (ving)f(20\045)g(of)h(the)g(weight)g(and)f(partition)g(2)h(ha)n(ving) 581 3651 y(40\045)j(of)g(the)g(weight.)25 b(Note)20 b(that)g(the)g (numbers)f(in)h Fs(tpwgts)h FL(should)e(add)h(up)g(to)g(1.0.)208 3794 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o (gers)e(that)h(is)i(used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n (arious)f(phases)h(of)g(the)g(algorithm.)581 3903 y(If)j Fs(options[0]=0)e FL(then)h(def)o(ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h (elements)g(of)581 4013 y Fs(options)c FL(are)i(interpreted)d(as)j (follo)n(ws:)581 4155 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 4281 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 4407 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 4533 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f(Matching)h(\(SHEM\))h(\(Def)o (ault\))1033 4659 y(Experiments)f(has)h(sho)n(wn)g(that)g(both)f(HEM)h (and)g(SHEM)g(perform)f(quite)g(well.)581 4785 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g(during)g(initial)i (partitioning.)h(Possible)f(v)n(alues)f(are:)1033 4911 y(1)83 b(Multile)n(v)o(el)19 b(recursi)n(v)o(e)g(bisection)g(\(Def)o (ault\))581 5037 y(options[3])108 b(Determines)20 b(the)g(algorithm)f (used)g(for)h(re\002nement.)k(Possible)c(v)n(alues)g(are:)1033 5163 y(1)83 b(Random)19 b(boundary)e(re\002nement)i(\(Def)o(ault\))1033 5289 y(3)83 b(Random)19 b(boundary)e(re\002nement)i(that)h(also)h (minimizes)f(the)g(connecti)n(vity)e(among)h(the)h(sub-)1158 5399 y(domains)1908 5649 y(32)p eop %%Page: 33 33 33 32 bop 581 83 a FL(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f (purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o(ault\).)208 226 y FC(v)o(olume)115 b FL(Upon)27 b(successful)h(completion,)g(this)h (v)n(ariable)e(stores)h(the)g(total)g(communication)e(v)n(olume)h (required)f(by)i(the)581 335 y(partition.)208 478 y FC(part)220 b FL(This)18 b(is)h(a)f(v)o(ector)e(of)i(size)g Fs(n)g FL(that)g(upon)e(successful)h(completion)f(stores)i(the)g(partition)f (v)o(ector)f(of)h(the)h(graph.)23 b(The)581 588 y(numbering)18 b(of)i(this)g(v)o(ector)f(starts)i(from)e(either)h(0)g(or)g(1,)g (depending)e(on)i(the)g(v)n(alue)g(of)f Fs(num\003a)o(g)p FL(.)1908 5649 y(33)p eop %%Page: 34 34 34 33 bop 0 83 a Fr(5.5)100 b(Mesh)28 b(P)m(ar)r(titioning)g(Routines)0 242 y FB(METIS)p 258 242 25 4 v 31 w(P)n(ar)r(tMeshNodal)20 b FL(\(int)g(*ne,)f(int)i(*nn,)e(idxtype)g(*elmnts,)g(int)h(*etype,)f (int)i(*num\003ag,)d(int)i(*nparts,)f(int)i(*edgecut,)908 352 y(idxtype)e(*epart,)g(idxtype)f(*npart\))0 611 y FB(Description)208 721 y FL(This)f(function)f(is)j(used)e(to)h (partition)e(a)i(mesh)f(into)h Ft(k)23 b FL(equal-size)16 b(parts.)24 b(It)18 b(pro)o(vides)e(the)h(functionality)f(of)h(the)h Fp(partnmesh)208 830 y FL(program.)0 1006 y FB(P)n(arameter)o(s)208 1126 y FC(ne)290 b FL(The)20 b(number)e(of)i(elements)g(in)h(the)f (mesh.)208 1269 y FC(nn)281 b FL(The)20 b(number)e(of)i(nodes)g(in)g (the)g(mesh.)208 1411 y FC(elmnts)138 b FL(The)20 b(element)g(node)f (array)g(storing)g(the)i(mesh)f(as)h(described)d(in)j(Section)f(5.2.) 208 1554 y FC(etype)183 b FL(Indicates)20 b(the)g(type)g(of)f(the)i (elements)f(in)g(the)g(mesh.)25 b Fs(etype)20 b FL(can)g(tak)o(e)g(the) g(follo)n(wing)f(v)n(alues:)581 1697 y(1)83 b(The)20 b(elements)f(are)i(triangles.)581 1823 y(2)83 b(The)20 b(elements)f(are)i(tetrahedra.)581 1949 y(3)83 b(The)20 b(elements)f(are)i(he)o(xahedra)c(\(bricks\).)581 2076 y(4)83 b(The)20 b(elements)f(are)i(quadrilaterals.)208 2218 y FC(num\003ag)82 b FL(Used)22 b(to)h(indicate)e(which)h (numbering)d(scheme)j(is)h(used)f(for)g(the)g(element)f(node)g(array)-5 b(.)30 b Fs(num\003a)o(g)20 b FL(can)i(tak)o(e)h(the)581 2328 y(follo)n(wing)c(tw)o(o)h(v)n(alues:)581 2471 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h(from)e(0)581 2597 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i (starts)g(from)e(1)208 2740 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h(partition)e(the)h(mesh.)208 2883 y FC(edgecut)100 b FL(Upon)20 b(successful)h(completion,)f(this)i (v)n(ariable)e(stores)h(the)g(number)f(of)h(edges)g(that)g(are)g(cut)g (by)g(the)g(partition)f(in)581 2992 y(the)g(nodal)g(graph.)208 3135 y FC(epart)183 b FL(This)18 b(is)h(a)g(v)o(ector)d(of)i(size)h Fs(ne)e FL(that)h(upon)f(successful)h(completion)e(stores)i(the)g (partition)f(v)o(ector)g(for)g(the)h(elements)581 3245 y(of)31 b(the)f(mesh.)57 b(The)30 b(numbering)e(of)j(this)g(v)o(ector)e (starts)j(from)e(either)g(0)h(or)f(1,)k(depending)28 b(on)i(the)h(v)n(alue)f(of)581 3354 y Fs(num\003a)o(g)p FL(.)208 3497 y FC(npart)174 b FL(This)19 b(is)g(a)g(v)o(ector)e(of)h (size)i Fs(nn)e FL(that)g(upon)f(successful)h(completion)f(stores)i (the)f(partition)g(v)o(ector)f(for)h(the)g(nodes)g(of)581 3606 y(the)i(mesh.)25 b(The)19 b(numbering)f(of)h(this)i(v)o(ector)d (starts)j(from)e(either)g(0)h(or)g(1,)g(depending)d(on)j(the)g(v)n (alue)f(of)h Fs(num\003a)o(g)p FL(.)0 3782 y FB(Note)208 3892 y FL(This)g(function)f(con)m(v)o(erts)g(the)h(mesh)h(into)f(a)h (nodal)e(graph)g(and)h(then)g(uses)i Fz(METIS)p 2642 3892 V 30 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)f FL(to)f(compute)f(a)i (parti-)208 4002 y(tioning)f(of)h(the)g(nodes.)28 b(This)22 b(partitioning)d(of)i(nodes)g(is)h(then)f(used)g(to)h(compute)e(a)h (partitioning)f(for)g(the)i(elements.)28 b(This)22 b(is)208 4111 y(done)d(by)i(assigning)f(each)h(element)f(to)h(the)g(partition)f (in)h(which)g(the)g(majority)f(of)g(its)i(nodes)e(belong)g(to)h (\(subject)f(to)h(balance)208 4221 y(constraints\).)1908 5649 y(34)p eop %%Page: 35 35 35 34 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(P)n(ar)r(tMeshDual)20 b FL(\(int)g(*ne,)g(int)g(*nn,)f(idxtype)g(*elmnts,)g(int)i(*etype,)e (int)h(*num\003ag,)e(int)j(*nparts,)e(int)h(*edgecut,)857 193 y(idxtype)f(*epart,)g(idxtype)g(*npart\))0 452 y FB(Description)208 561 y FL(This)e(function)f(is)j(used)e(to)h (partition)e(a)i(mesh)f(into)h Ft(k)23 b FL(equal-size)16 b(parts.)24 b(It)18 b(pro)o(vides)e(the)h(functionality)f(of)h(the)h Fp(partdmesh)208 671 y FL(program.)0 847 y FB(P)n(arameter)o(s)208 966 y FC(ne)290 b FL(The)20 b(number)e(of)i(elements)g(in)h(the)f (mesh.)208 1109 y FC(nn)281 b FL(The)20 b(number)e(of)i(nodes)g(in)g (the)g(mesh.)208 1252 y FC(elmnts)138 b FL(The)20 b(element)g(node)f (array)g(storing)g(the)i(mesh)f(as)h(described)d(in)j(Section)f(5.2.) 208 1395 y FC(etype)183 b FL(Indicates)20 b(the)g(type)g(of)f(the)i (elements)f(in)g(the)g(mesh.)25 b Fs(etype)20 b FL(can)g(tak)o(e)g(the) g(follo)n(wing)f(v)n(alues:)581 1538 y(1)83 b(The)20 b(elements)f(are)i(triangles.)581 1664 y(2)83 b(The)20 b(elements)f(are)i(tetrahedra.)581 1790 y(3)83 b(The)20 b(elements)f(are)i(he)o(xahedra)c(\(bricks\).)581 1916 y(4)83 b(The)20 b(elements)f(are)i(quadrilaterals.)208 2059 y FC(num\003ag)82 b FL(Used)22 b(to)h(indicate)e(which)h (numbering)d(scheme)j(is)h(used)f(for)g(the)g(element)f(node)g(array)-5 b(.)30 b Fs(num\003a)o(g)20 b FL(can)i(tak)o(e)h(the)581 2169 y(follo)n(wing)c(tw)o(o)h(v)n(alues:)581 2311 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h(from)e(0)581 2438 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i (starts)g(from)e(1)208 2580 y FC(nparts)142 b FL(The)20 b(number)e(of)i(parts)g(to)h(partition)e(the)h(mesh.)208 2723 y FC(edgecut)100 b FL(Upon)20 b(successful)h(completion,)f(this)i (v)n(ariable)e(stores)h(the)g(number)f(of)h(edges)g(that)g(are)g(cut)g (by)g(the)g(partition)f(in)581 2833 y(the)g(dual)g(graph.)208 2976 y FC(epart)183 b FL(This)18 b(is)h(a)g(v)o(ector)d(of)i(size)h Fs(ne)e FL(that)h(upon)f(successful)h(completion)e(stores)i(the)g (partition)f(v)o(ector)g(for)g(the)h(elements)581 3085 y(of)31 b(the)f(mesh.)57 b(The)30 b(numbering)e(of)j(this)g(v)o(ector)e (starts)j(from)e(either)g(0)h(or)f(1,)k(depending)28 b(on)i(the)h(v)n(alue)f(of)581 3195 y Fs(num\003a)o(g)p FL(.)208 3337 y FC(npart)174 b FL(This)19 b(is)g(a)g(v)o(ector)e(of)h (size)i Fs(nn)e FL(that)g(upon)f(successful)h(completion)f(stores)i (the)f(partition)g(v)o(ector)f(for)h(the)g(nodes)g(of)581 3447 y(the)i(mesh.)25 b(The)19 b(numbering)f(of)h(this)i(v)o(ector)d (starts)j(from)e(either)g(0)h(or)g(1,)g(depending)d(on)j(the)g(v)n (alue)f(of)h Fs(num\003a)o(g)p FL(.)0 3623 y FB(Note)208 3733 y FL(This)j(function)e(con)m(v)o(erts)h(the)h(mesh)g(into)f(a)i (dual)f(graph)e(and)i(then)g(uses)g Fz(METIS)p 2631 3733 V 31 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)g FL(to)g(compute)f(a)h(parti-)208 3842 y(tioning)c(of)h(the)g(elements.)25 b(This)20 b(partitioning)f(of) h(elements)g(is)h(then)f(used)g(to)g(compute)f(a)i(partitioning)d(for)i (the)g(nodes.)k(This)208 3952 y(is)d(done)f(by)g(assigning)g(each)g (node)g(to)h(the)g(partition)e(in)i(which)f(the)h(majority)f(of)g(its)i (incident)e(elements)g(belong)f(to)i(\(subject)208 4061 y(to)f(balance)f(constraints\).)1908 5649 y(35)p eop %%Page: 36 36 36 35 bop 0 83 a Fr(5.6)100 b(Spar)o(se)29 b(Matrix)f(Reor)n(dering)f (Routines)0 242 y FB(METIS)p 258 242 25 4 v 31 w(Edg)q(eND)20 b FL(\(int)g(*n,)g(idxtype)e(*xadj,)h(idxtype)g(*adjnc)o(y)-5 b(,)18 b(int)i(*num\003ag,)f(int)h(*options,)f(idxtype)f(*perm,)h (idxtype)g(*iperm\))0 501 y FB(Description)208 611 y FL(This)25 b(function)f(computes)h(\002ll)h(reducing)e(orderings)f(of)j (sparse)f(matrices)h(using)f(the)g(multile)n(v)o(el)g(nested)g (dissection)g(algo-)208 721 y(rithm.)f(It)c(pro)o(vides)f(the)h (functionality)e(of)i(the)g Fp(oemetis)g FL(program.)0 897 y FB(P)n(arameter)o(s)208 1016 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 1133 y FC(xadj,)e(adjncy)581 1242 y FL(The)h(adjacenc)o(y)e(structure)i(of)g (the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.)208 1385 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 1495 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 1638 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 1764 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 1907 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o(gers)e(that)h(is)i (used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f(phases)h(of)g (the)g(algorithm.)581 2016 y(If)j Fs(options[0]=0)e FL(then)h(def)o (ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h(elements)g(of)581 2126 y Fs(options)c FL(are)i(interpreted)d(as)j(follo)n(ws:)581 2269 y(options[1])108 b(Determined)19 b(the)h(matching)f(type.)24 b(Possible)d(v)n(alues)f(are:)1033 2395 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 2521 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 2647 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 2773 y(Experiments)f(has)h (sho)n(wn)g(that)g(both)f(HEM)h(and)g(SHEM)g(perform)f(quite)g(well.) 581 2900 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g (during)g(initial)i(partitioning.)h(Possible)f(v)n(alues)f(are:)1033 3026 y(1)83 b(Re)o(gion)19 b(Gro)n(wing)g(\(Def)o(ault\))581 3152 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h (re\002nement.)k(Possible)c(v)n(alues)g(are:)1033 3278 y(1)83 b(Early-Exit)18 b(Boundary)h(FM)h(re\002nement)f(\(Def)o(ault\)) 581 3404 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0)h(\(Def)o(ault\).)208 3521 y FC(perm,)f(iperm)581 3631 y FL(These)25 b(are)g(v)o(ectors,)f (each)h(of)g(size)g Fs(n)p FL(.)39 b(Upon)24 b(successful)h (completion,)f(the)o(y)g(store)g(the)h(\002ll-reducing)e(permu-)581 3740 y(tation)j(and)g(in)m(v)o(erse-permutation.)39 b(Let)34 b Ft(A)29 b FL(be)d(the)g(original)f(matrix)h(and)34 b Ft(A)2868 3710 y Fe(0)2915 3740 y FL(be)27 b(the)f(permuted)e (matrix.)43 b(The)581 3850 y(arrays)21 b Fs(perm)g FL(and)f Fs(iperm)h FL(are)g(de\002ned)f(as)i(follo)n(ws.)27 b(Ro)n(w)21 b(\(column\))d Ft(i)30 b FL(of)f Ft(A)2836 3820 y Fe(0)2878 3850 y FL(is)22 b(the)f(perm)o FM(T)o Ft(i)9 b FM(U)20 b FL(ro)n(w)h(\(column\))e(of)589 3959 y Ft(A)r FL(,)j(and)f(ro)n(w)g (\(column\))d Ft(i)31 b FL(of)e Ft(A)24 b FL(is)e(the)g(iperm)n FM(T)o Ft(i)9 b FM(U)21 b FL(ro)n(w)g(\(column\))f(of)29 b Ft(A)2659 3929 y Fe(0)2680 3959 y FL(.)g(The)21 b(numbering)e(of)i (this)h(v)o(ector)f(starts)581 4069 y(from)e(either)h(0)g(or)g(1,)g (depending)e(on)i(the)g(v)n(alue)f(of)h Fs(num\003a)o(g)p FL(.)0 4245 y FB(Note)208 4355 y FL(This)25 b(function)f(computes)g (the)h(v)o(erte)o(x)f(separator)g(from)g(the)h(edge)g(separator)f (using)h(a)g(minimum)f(co)o(v)o(er)g(algorithm.)38 b(This)208 4464 y(function)21 b(should)i(be)g(used)h(only)f(in)g(ordering)f(lar)o (ge)g(graphs)h(arising)g(in)h(3D)f(\002nite)h(element)f(applications.) 34 b(In)23 b(general)g(the)208 4574 y Fz(METIS)p 466 4574 V 30 w(NodeND)e FL(routine)e(should)g(be)h(preferred,)e(as)j(it)g (produces)d(better)i(orderings.)1908 5649 y(36)p eop %%Page: 37 37 37 36 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(NodeND)20 b FL(\(int)g(*n,)f(idxtype)g(*xadj,)g(idxtype)g(*adjnc)o(y)-5 b(,)18 b(int)i(*num\003ag,)e(int)j(*options,)d(idxtype)h(*perm,)g (idxtype)g(*iperm\))0 342 y FB(Description)208 452 y FL(This)25 b(function)f(computes)h(\002ll)h(reducing)e(orderings)f(of)j (sparse)f(matrices)h(using)f(the)g(multile)n(v)o(el)g(nested)g (dissection)g(algo-)208 561 y(rithm.)f(It)c(pro)o(vides)f(the)h (functionality)e(of)i(the)g Fp(onmetis)g FL(program.)0 737 y FB(P)n(arameter)o(s)208 857 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 973 y FC(xadj,)e(adjncy)581 1083 y FL(The)h(adjacenc)o(y)e(structure)i(of)g (the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.)208 1226 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 1335 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 1478 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 1604 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 1747 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(8)h(inte)o(gers)e(that)h(is)i (used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f(phases)h(of)g (the)g(algorithm.)581 1857 y(If)g Fs(options[0]=0)e FL(then)h(def)o (ault)g(v)n(alues)g(are)h(used.)26 b(If)21 b Fs(options[0]=1)p FL(,)e(then)h(the)h(remaining)e(se)n(v)o(en)g(elements)i(of)581 1966 y Fs(options)e FL(are)i(interpreted)d(as)j(follo)n(ws:)581 2109 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 2235 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 2362 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 2488 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 2614 y(Experiments)14 b(ha)n(v)o(e)h(sho)n(wn)g(that)h(all)h(three)e(matching)f(schemes)i (perform)e(quite)h(well.)24 b(In)16 b(general)1033 2724 y(SHEM)22 b(is)h(f)o(aster)e(and)g(RM)i(is)f(slo)n(wer)m(,)f(b)n(ut)h (feel)g(free)f(to)g(e)o(xperiment)f(with)i(the)f(other)g(matching)1033 2833 y(schemes.)581 2959 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g(during)g(initial)i(partitioning.)h(Possible) f(v)n(alues)f(are:)1033 3086 y(1)83 b(Edge-based)18 b(re)o(gion)g(gro)n (wing)h(\(Def)o(ault\))1033 3212 y(2)83 b(Node-based)18 b(re)o(gion)h(gro)n(wing)581 3338 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h(re\002nement.)k(Possible)c(v)n(alues)g (are:)1033 3464 y(1)83 b(T)-7 b(w)o(o-sided)19 b(node)g(FM)i (re\002nement)1033 3590 y(2)83 b(One-sided)19 b(node)g(FM)i (re\002nement)d(\(Def)o(ault\))1033 3717 y(One-sided)i(FM)h (re\002nement)f(is)i(f)o(aster)f(than)g(tw)o(o-sided,)f(b)n(ut)h(in)g (some)f(cases)i(tw)o(o-sided)e(re\002ne-)1033 3826 y(ment)g(may)g (produce)e(better)i(orderings.)j(Feel)d(free)g(to)h(e)o(xperiment)d (with)i(this)h(option.)581 3952 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0) h(\(Def)o(ault\).)581 4079 y(options[5])108 b(Used)17 b(to)f(select)h(whether)e(or)h(not)f(to)i(compress)e(the)h(graph)f(and) g(to)i(order)d(connected)h(components)1033 4188 y(separately)-5 b(.)24 b(The)c(possible)g(v)n(alues)f(and)h(their)g(meaning)f(are)h(as) h(follo)n(ws.)1033 4314 y(0)83 b(Do)32 b(not)h(try)f(to)h(compress)f (the)h(graph)e(and)h(do)g(not)h(order)e(each)h(connected)f(component) 1158 4424 y(separately)-5 b(.)1033 4550 y(1)83 b(T)m(ry)23 b(to)i(compress)e(the)h(graph.)36 b(\(A)24 b(compressed)f(graph)f(is)j (actually)f(formed)e(if)j(the)f(size)h(of)1158 4660 y(the)20 b(graph)f(can)h(be)g(reduced)e(by)i(at)h(least)g(15\045\))e(\(Def)o (ault\).)1033 4786 y(2)83 b(Order)28 b(each)h(connected)e(component)f (of)j(the)g(graph)e(separately)-5 b(.)50 b(This)30 b(option)d(is)j (partic-)1158 4895 y(ularly)25 b(useful)h(when)f(after)h(a)h(fe)n(w)f (le)n(v)o(els)g(of)g(nested)f(dissection,)i(the)g(graph)d(breaks)i(up)f (in)1158 5005 y(man)o(y)16 b(smaller)i(disconnected)e(subgraphs.)22 b(This)c(is)g(true)g(for)f(certain)g(types)g(of)h(LP)g(matrices.)1033 5131 y(3)83 b(T)m(ry)19 b(to)i(compress)e(the)h(graph)f(and)h(also)g (order)f(each)h(connected)e(component)g(separately)-5 b(.)1908 5649 y(37)p eop %%Page: 38 38 38 37 bop 581 83 a FL(options[6])108 b(Used)20 b(to)f(control)f (whether)g(or)h(not)g(the)g(ordering)e(algorithm)h(should)g(remo)o(v)o (e)f(an)o(y)i(v)o(ertices)f(with)1033 193 y(high)j(de)o(gree)e(\()p Fs(i.e)p FL(.,)i(dense)g(columns\).)27 b(This)21 b(is)h(particularly)e (helpful)g(for)g(certain)h(classes)h(of)f(LP)1033 302 y(matrices,)k(in)f(which)g(there)f(a)i(fe)n(w)f(v)o(ertices)g(that)g (are)g(connected)e(to)j(man)o(y)e(other)g(v)o(ertices.)36 b(By)1033 412 y(remo)o(ving)20 b(these)j(v)o(ertices)e(prior)h(to)g (ordering,)f(the)h(quality)g(and)f(the)i(amount)e(of)h(time)g(required) 1033 521 y(to)f(do)e(the)i(ordering)d(impro)o(v)o(es.)23 b(The)c(possible)h(v)n(alues)g(are)g(as)h(follo)n(ws:)1033 648 y(0)83 b(Do)20 b(not)g(remo)o(v)o(e)e(an)o(y)h(v)o(ertices)h(\(Def) o(ault\))1035 774 y Ft(x)91 b FL(Where)34 b Ft(x)54 b Fu(>)46 b FL(0,)36 b(instructs)d(the)g(algorithm)e(to)i(remo)o(v)o(e)e (an)o(y)h(v)o(ertices)g(whose)g(de)o(gree)g(is)1158 883 y(greater)25 b(than)h(0)p Fu(:)p FL(1)21 b FM(\003)k Ft(x)31 b FM(\003)23 b Fu(.)p FL(a)n(v)o(erage)c(de)o(gree\))m(.)44 b(F)o(or)26 b(e)o(xample)e(if)29 b Ft(x)41 b FM(D)34 b FL(40,)27 b(and)f(the)g(a)n(v)o(erage)1158 993 y(de)o(gree)18 b(is)i(5,)f(then)g(the)g(algorithm)e(will)j(remo)o(v)o(e)e(all)h(v)o (ertices)g(with)h(de)o(gree)d(greater)h(than)h(20.)1158 1103 y(The)f(v)o(ertices)g(that)g(are)g(remo)o(v)o(ed)e(are)i(ordered)f (last)i(\()p Fs(i.e)o FL(.,)g(the)o(y)f(are)g(automatically)f(placed)g (in)1158 1212 y(the)22 b(top-le)n(v)o(el)f(separator\).)31 b(Good)22 b(v)n(alues)g(are)h(often)f(in)g(the)h(range)f(of)g(60)g(to)h (200)f(\()p Fs(i.e)o FL(.,)i(6)e(to)1158 1322 y(20)e(times)g(more)g (than)f(the)h(a)n(v)o(erage\).)581 1448 y(options[7])108 b(Used)23 b(to)g(determine)e(ho)n(w)h(man)o(y)g(separators)g(to)h (\002nd)f(at)h(each)g(step)g(of)f(nested)h(dissection.)32 b(The)1033 1558 y(lar)o(ger)16 b(the)i(number)d(of)i(separators)g (found)f(at)h(each)h(step,)g(the)f(higher)f(the)h(runtime)g(and)g (better)g(the)1033 1667 y(quality)i(is)h(\(in)f(general\).)k(The)18 b(def)o(ault)h(v)n(alue)f(is)i(1,)f(unless)h(the)f(graph)f(has)h(been)f (compressed)g(by)1033 1777 y(more)g(than)h(a)g(f)o(actor)g(of)f(2,)h (in)g(which)g(case)g(it)h(becomes)e(2.)25 b(Reasonable)18 b(v)n(alues)h(are)f(in)i(the)f(range)1033 1886 y(of)h(1)g(to)h(5.)k(F)o (or)20 b(most)g(problems,)e(a)j(v)n(alue)e(of)h(5)h(increases)f(the)g (runtime)f(by)h(a)g(f)o(actor)g(of)g(3.)208 2003 y FC(perm,)g(iperm)581 2113 y FL(These)25 b(are)g(v)o(ectors,)f(each)h(of)g(size)g Fs(n)p FL(.)39 b(Upon)24 b(successful)h(completion,)f(the)o(y)g(store)g (the)h(\002ll-reducing)e(permu-)581 2222 y(tation)j(and)g(in)m(v)o (erse-permutation.)39 b(Let)34 b Ft(A)29 b FL(be)d(the)g(original)f (matrix)h(and)34 b Ft(A)2868 2192 y Fe(0)2915 2222 y FL(be)27 b(the)f(permuted)e(matrix.)43 b(The)581 2332 y(arrays)21 b Fs(perm)g FL(and)f Fs(iperm)h FL(are)g(de\002ned)f(as)i (follo)n(ws.)27 b(Ro)n(w)21 b(\(column\))d Ft(i)30 b FL(of)f Ft(A)2836 2302 y Fe(0)2878 2332 y FL(is)22 b(the)f(perm)o FM(T)o Ft(i)9 b FM(U)20 b FL(ro)n(w)h(\(column\))e(of)589 2441 y Ft(A)r FL(,)j(and)f(ro)n(w)g(\(column\))d Ft(i)31 b FL(of)e Ft(A)24 b FL(is)e(the)g(iperm)n FM(T)o Ft(i)9 b FM(U)21 b FL(ro)n(w)g(\(column\))f(of)29 b Ft(A)2659 2411 y Fe(0)2680 2441 y FL(.)g(The)21 b(numbering)e(of)i(this)h(v)o (ector)f(starts)581 2551 y(from)e(either)h(0)g(or)g(1,)g(depending)e (on)i(the)g(v)n(alue)f(of)h Fs(num\003a)o(g)p FL(.)0 2727 y FB(Note)208 2837 y FL(This)25 b(function)g(computes)f(the)i(v)o (erte)o(x)e(separator)h(directly)g(by)g(using)g(a)h(multile)n(v)o(el)f (algorithm.)40 b(This)26 b(function)e(produces)208 2946 y(high)19 b(quality)g(orderings)g(and)g(should)g(be)i(preferred)d(o)o (v)o(er)g Fz(METIS)p 2192 2946 25 4 v 31 w(EdgeND)p FL(.)1908 5649 y(38)p eop %%Page: 39 39 39 38 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(NodeWND)20 b FL(\(int)g(*n,)g(idxtype)f(*xadj,)g(idxtype)f(*adjnc)o(y)-5 b(,)18 b(idxtype)h(*vwgt,)g(int)h(*num\003ag,)f(int)h(*options,)710 193 y(idxtype)f(*perm,)g(idxtype)f(*iperm\))0 452 y FB(Description)208 561 y FL(This)25 b(function)f(computes)h(\002ll)h(reducing)e(orderings) f(of)j(sparse)f(matrices)h(using)f(the)g(multile)n(v)o(el)g(nested)g (dissection)g(algo-)208 671 y(rithm.)f(It)19 b(is)h(similar)f(to)g Fz(METIS)p 1171 671 V 31 w(NodeWND)h FL(b)n(ut)f(it)g(assumes)h(that)f (the)g(compression)e(has)i(been)f(already)g(performed)f(prior)208 780 y(to)22 b(calling)f(this)i(routine.)29 b(It)22 b(is)h(particularly) d(suited)i(for)f(ordering)f(v)o(ery)h(lar)o(ge)g(matrices)g(in)h(which) g(the)g(compressed)e(matrix)208 890 y(is)h(kno)n(wn)d(a)j(priori.)0 1066 y FB(P)n(arameter)o(s)208 1186 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 1302 y FC(xadj,)e(adjncy)581 1412 y FL(The)h(adjacenc)o(y)e(structure)i(of)g (the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.)208 1555 y FC(vwgt)201 b FL(The)20 b(weight)g(of)g(the)g(v)o(ertices.)208 1697 y FC(num\003ag)82 b FL(Used)22 b(to)f(indicate)g(which)g (numbering)d(scheme)j(is)h(used)f(for)g(the)g(adjacenc)o(y)f(structure) g(of)h(the)g(graph.)27 b Fs(num\003a)o(g)581 1807 y FL(can)20 b(tak)o(e)g(the)h(follo)n(wing)d(tw)o(o)j(v)n(alues:)581 1950 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h (from)e(0)581 2076 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j (assumed)e(that)i(starts)g(from)e(1)208 2219 y FC(options)114 b FL(This)22 b(is)g(an)f(array)f(of)h(5)h(inte)o(gers)e(that)h(is)i (used)e(to)g(pass)h(parameters)e(for)h(the)g(v)n(arious)f(phases)h(of)g (the)g(algorithm.)581 2328 y(If)j Fs(options[0]=0)e FL(then)h(def)o (ault)g(v)n(alues)g(are)h(used.)34 b(If)24 b Fs(options[0]=1)p FL(,)f(then)g(the)g(remaining)f(four)h(elements)g(of)581 2438 y Fs(options)c FL(are)i(interpreted)d(as)j(follo)n(ws:)581 2581 y(options[1])108 b(Determines)20 b(the)g(matching)f(type.)24 b(Possible)d(v)n(alues)e(are:)1033 2707 y(1)83 b(Random)19 b(Matching)g(\(RM\))1033 2833 y(2)83 b(Hea)n(vy-Edge)18 b(Matching)h(\(HEM\))1033 2959 y(3)83 b(Sorted)19 b(Hea)n(vy-Edge)f (Matching)h(\(SHEM\))h(\(Def)o(ault\))1033 3086 y(Experiments)14 b(ha)n(v)o(e)h(sho)n(wn)g(that)h(all)h(three)e(matching)f(schemes)i (perform)e(quite)h(well.)24 b(In)16 b(general)1033 3195 y(SHEM)22 b(is)h(f)o(aster)e(and)g(RM)i(is)f(slo)n(wer)m(,)f(b)n(ut)h (feel)g(free)f(to)g(e)o(xperiment)f(with)i(the)f(other)g(matching)1033 3305 y(schemes.)581 3431 y(options[2])108 b(Determines)20 b(the)g(algorithm)f(used)g(during)g(initial)i(partitioning.)h(Possible) f(v)n(alues)f(are:)1033 3557 y(1)83 b(Edge-based)18 b(re)o(gion)g(gro)n (wing)h(\(Def)o(ault\))1033 3683 y(2)83 b(Node-based)18 b(re)o(gion)h(gro)n(wing)581 3810 y(options[3])108 b(Determines)20 b(the)g(algorithm)f(used)g(for)h(re\002nement.)k(Possible)c(v)n(alues)g (are:)1033 3936 y(1)83 b(T)-7 b(w)o(o-sided)19 b(node)g(FM)i (re\002nement)1033 4062 y(2)83 b(One-sided)19 b(node)g(FM)i (re\002nement)d(\(Def)o(ault\))1033 4188 y(One-sided)i(FM)h (re\002nement)f(is)i(f)o(aster)f(than)g(tw)o(o-sided,)f(b)n(ut)h(in)g (some)f(cases)i(tw)o(o-sided)e(re\002ne-)1033 4298 y(ment)g(may)g (produce)e(better)i(orderings.)j(Feel)d(free)g(to)h(e)o(xperiment)d (with)i(this)h(option.)581 4424 y(options[4])108 b(Used)21 b(for)e(deb)n(ugging)f(purposes.)23 b(Al)o(w)o(ays)e(set)g(it)g(to)f(0) h(\(Def)o(ault\).)208 4541 y FC(perm,)f(iperm)581 4650 y FL(These)25 b(are)g(v)o(ectors,)f(each)h(of)g(size)g Fs(n)p FL(.)39 b(Upon)24 b(successful)h(completion,)f(the)o(y)g(store)g (the)h(\002ll-reducing)e(permu-)581 4760 y(tation)j(and)g(in)m(v)o (erse-permutation.)39 b(Let)34 b Ft(A)29 b FL(be)d(the)g(original)f (matrix)h(and)34 b Ft(A)2868 4730 y Fe(0)2915 4760 y FL(be)27 b(the)f(permuted)e(matrix.)43 b(The)581 4869 y(arrays)21 b Fs(perm)g FL(and)f Fs(iperm)h FL(are)g(de\002ned)f(as)i (follo)n(ws.)27 b(Ro)n(w)21 b(\(column\))d Ft(i)30 b FL(of)f Ft(A)2836 4839 y Fe(0)2878 4869 y FL(is)22 b(the)f(perm)o FM(T)o Ft(i)9 b FM(U)20 b FL(ro)n(w)h(\(column\))e(of)589 4979 y Ft(A)r FL(,)j(and)f(ro)n(w)g(\(column\))d Ft(i)31 b FL(of)e Ft(A)24 b FL(is)e(the)g(iperm)n FM(T)o Ft(i)9 b FM(U)21 b FL(ro)n(w)g(\(column\))f(of)29 b Ft(A)2659 4949 y Fe(0)2680 4979 y FL(.)g(The)21 b(numbering)e(of)i(this)h(v)o (ector)f(starts)581 5089 y(from)e(either)h(0)g(or)g(1,)g(depending)e (on)i(the)g(v)n(alue)f(of)h Fs(num\003a)o(g)p FL(.)1908 5649 y(39)p eop %%Page: 40 40 40 39 bop 0 83 a Fr(5.7)100 b(A)m(uxiliar)q(y)28 b(Routines)0 242 y FB(METIS)p 258 242 25 4 v 31 w(MeshT)-7 b(oNodal)20 b FL(\(int)g(*ne,)f(int)i(*nn,)e(idxtype)g(*elmnts,)g(int)i(*etype,)d (int)j(*num\003ag,)d(idxtype)h(*nxadj,)f(idxtype)h(*nadjnc)o(y\))0 501 y FB(Description)208 611 y FL(This)26 b(function)f(is)i(used)f(to)g (con)m(v)o(ert)f(a)h(mesh)g(into)g(a)h(nodal)f(graph,)g(in)g(a)h (format)e(suitable)h(for)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)p FL(.)46 b(It)27 b(pro)o(vides)e(the)208 721 y(function)18 b(of)i(the)g Fp(mesh2nodal)f FL(program.)0 897 y FB(P)n(arameter)o(s)208 1016 y FC(ne)290 b FL(The)20 b(number)e(of)i(elements)g(in)h(the)f(mesh.)208 1159 y FC(nn)281 b FL(The)20 b(number)e(of)i(nodes)g(in)g(the)g(mesh.)208 1302 y FC(elmnts)138 b FL(The)20 b(element)g(node)f(array)g(storing)g (the)i(mesh)f(as)h(described)d(in)j(Section)f(5.2.)208 1445 y FC(etype)183 b FL(Indicates)20 b(the)g(type)g(of)f(the)i (elements)f(in)g(the)g(mesh.)25 b Fs(etype)20 b FL(can)g(tak)o(e)g(the) g(follo)n(wing)f(v)n(alues:)581 1587 y(1)83 b(The)20 b(elements)f(are)i(triangles.)581 1714 y(2)83 b(The)20 b(elements)f(are)i(tetrahedra.)581 1840 y(3)83 b(The)20 b(elements)f(are)i(he)o(xahedra)c(\(bricks\).)581 1966 y(4)83 b(The)20 b(elements)f(are)i(quadrilaterals.)208 2109 y FC(num\003ag)82 b FL(Used)22 b(to)h(indicate)e(which)h (numbering)d(scheme)j(is)h(used)f(for)g(the)g(element)f(node)g(array)-5 b(.)30 b Fs(num\003a)o(g)20 b FL(can)i(tak)o(e)h(the)581 2218 y(follo)n(wing)c(tw)o(o)h(v)n(alues:)581 2361 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h(from)e(0)581 2487 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i (starts)g(from)e(1)208 2604 y FC(nxadj,)g(nadjncy)581 2714 y FL(These)29 b(arrays)f(store)g(the)h(adjacenc)o(y)e(structure)h (of)g(the)h(nodal)e(graph.)49 b(The)29 b(user)f(must)h(pro)o(vide)d (arrays)i(that)581 2823 y(are)c(suf)n(\002ciently)g(lar)o(ge)f(to)i (store)f(the)g(graph.)36 b(The)24 b(size)h(of)f(array)f Fs(nxadj)h FL(is)h Fs(nn+1)e FL(where)h(the)g(size)h(of)f Fs(nadjncy)581 2933 y FL(depends)i(on)g(the)h(type)f(of)h(the)g(mesh.) 44 b(F)o(or)27 b(triangular)n(-element)d(and)i(he)o(xahedra-element)d (meshes,)28 b Fs(nadjncy)581 3042 y FL(should)19 b(be)g(at)h(least)h(6) 15 b FM(\003)h Fs(nn)o FL(,)k(for)f(quadrilateral-element)e(meshes,)i Fs(nadjncy)f FL(should)g(be)i(at)g(least)g(4)c FM(\003)g Fs(nn)o FL(,)k(and)f(for)581 3152 y(tetrahedra-element)e(meshes,)j Fs(nadjncy)f FL(should)g(be)h(at)h(least)g(15)c FM(\003)i Fs(nn)o FL(.)0 3328 y FB(Note)208 3438 y FL(The)k(nodal)h(graph)e(is)k (de\002ned)d(as)i(the)f(graph)f(in)h(which)g(each)g(v)o(erte)o(x)e(of)i (the)h(graph)d(corresponds)g(to)j(a)f(node)f(in)i(the)f(mesh,)208 3547 y(and)19 b(tw)o(o)i(v)o(ertices)e(are)h(connected)f(by)h(an)g (edge)f(if)i(the)f(corresponding)d(nodes)i(a)i(connected)d(by)i(an)g (element.)1908 5649 y(40)p eop %%Page: 41 41 41 40 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(MeshT)-7 b(oDual)20 b FL(\(int)g(*ne,)g(int)g(*nn,)f(idxtype)g(*elmnts,)g(int)i (*etype,)e(int)h(*num\003ag,)e(idxtype)h(*dxadj,)g(idxtype)f(*dadjnc)o (y\))0 342 y FB(Description)208 452 y FL(This)28 b(function)e(is)j (used)f(to)h(con)m(v)o(ert)d(a)i(mesh)g(into)g(a)h(dual)f(graph,)g(in)g (a)h(format)e(suitable)h(for)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)p FL(.)52 b(It)28 b(pro)o(vides)f(the)208 561 y(function)18 b(of)i(the)g Fp(mesh2nodal)f FL(program.)0 737 y FB(P)n(arameter)o(s)208 857 y FC(ne)290 b FL(The)20 b(number)e(of)i(elements)g(in)h(the)f(mesh.)208 1000 y FC(nn)281 b FL(The)20 b(number)e(of)i(nodes)g(in)g(the)g(mesh.)208 1142 y FC(elmnts)138 b FL(The)20 b(element)g(node)f(array)g(storing)g (the)i(mesh)f(as)h(described)d(in)j(Section)f(5.2.)208 1285 y FC(etype)183 b FL(Indicates)20 b(the)g(type)g(of)f(the)i (elements)f(in)g(the)g(mesh.)25 b Fs(etype)20 b FL(can)g(tak)o(e)g(the) g(follo)n(wing)f(v)n(alues:)581 1428 y(1)83 b(The)20 b(elements)f(are)i(triangles.)581 1554 y(2)83 b(The)20 b(elements)f(are)i(tetrahedra.)581 1680 y(3)83 b(The)20 b(elements)f(are)i(he)o(xahedra)c(\(bricks\).)581 1807 y(4)83 b(The)20 b(elements)f(are)i(quadrilaterals.)208 1949 y FC(num\003ag)82 b FL(Used)22 b(to)h(indicate)e(which)h (numbering)d(scheme)j(is)h(used)f(for)g(the)g(element)f(node)g(array)-5 b(.)30 b Fs(num\003a)o(g)20 b FL(can)i(tak)o(e)h(the)581 2059 y(follo)n(wing)c(tw)o(o)h(v)n(alues:)581 2202 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h(from)e(0)581 2328 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i (starts)g(from)e(1)208 2445 y FC(dxadj,)g(dadjncy)581 2554 y FL(These)31 b(arrays)g(store)g(the)g(adjacenc)o(y)e(structure)h (of)h(the)g(dual)g(graph.)56 b(The)31 b(user)g(must)g(pro)o(vide)e (arrays)h(that)581 2664 y(are)25 b(suf)n(\002ciently)e(lar)o(ge)h(to)g (store)h(the)f(graph.)37 b(The)24 b(size)h(of)g(array)e Fs(dxadj)h FL(is)h Fs(ne+1)f FL(where)g(the)h(size)g(of)f Fs(dadjncy)581 2773 y FL(depends)e(on)g(the)h(type)f(of)h(the)g(mesh.) 33 b(F)o(or)22 b(triangular)n(-element)e(meshes,)j Fs(dadjncy)f FL(should)f(be)i(at)h(least)f(3)d FM(\003)h Fs(ne)o FL(,)581 2883 y(for)i(tetrahedra-element)d(and)j(quadrilateral-element)d (meshes,)j Fs(dadjncy)f FL(should)g(be)i(at)f(least)h(4)d FM(\003)g Fs(ne)o FL(,)j(and)f(for)581 2993 y(he)o(xahedra-element)16 b(meshes,)k Fs(dadjncy)f FL(should)g(be)h(at)h(least)g(6)d FM(\003)g Fs(ne)p FL(.)0 3169 y FB(Note)208 3278 y FL(The)h(dual)f (graph)g(is)j(de\002ned)d(as)i(the)g(graph)e(in)h(which)g(each)g(v)o (erte)o(x)f(of)h(the)g(graph)f(corresponds)f(to)j(an)f(element)g(in)h (the)f(mesh,)208 3388 y(and)g(tw)o(o)i(v)o(ertices)e(are)h(connected)f (by)h(an)g(edge)f(if)i(the)f(corresponding)d(elements)j(share)f(a)i(f)o (ace.)1908 5649 y(41)p eop %%Page: 42 42 42 41 bop 0 83 a FB(METIS)p 258 83 25 4 v 31 w(EstimateMemor)q(y)21 b FL(\(int)f(*n,)f(idxtype)g(*xadj,)g(int)h(*adjnc)o(y)-5 b(,)18 b(int)i(*num\003ag,)f(int)h(*optype,)e(int)j(*nbytes\))0 342 y FB(Description)208 452 y FL(This)d(function)e(is)j(used)e(to)h (estimate)g(the)g(amount)f(of)g(memory)g(that)h(will)g(be)g(used)g(by)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(.)20 b(Ev)o(en)d(though,)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)22 b FL(dynam-)208 561 y(ically)f(allocates)g(the)g(amount)f(of)g(memory)g(that)h(it)h (needs,)e(this)i(function)d(can)i(be)g(useful)g(in)g(determining)e(if)i (the)g(amount)f(of)208 671 y(memory)e(in)i(the)h(system)f(is)h(suf)n (\002cient)f(for)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r FL(.)0 847 y FB(P)n(arameter)o(s)208 966 y FC(n)327 b FL(The)20 b(number)e(of)i(v)o(ertices)g(in)g(the)h(graph.)208 1083 y FC(xadj,)e(adjncy)581 1193 y FL(The)h(adjacenc)o(y)e(structure)i (of)g(the)g(graph)f(as)i(described)d(in)j(Section)f(5.1.)208 1335 y FC(num\003ag)82 b FL(Used)22 b(to)h(indicate)e(which)h (numbering)d(scheme)j(is)h(used)f(for)g(the)g(element)f(node)g(array)-5 b(.)30 b Fs(num\003a)o(g)20 b FL(can)i(tak)o(e)h(the)581 1445 y(follo)n(wing)c(tw)o(o)h(v)n(alues:)581 1588 y(0)83 b(C-style)20 b(numbering)e(is)j(assumed)f(that)g(starts)h(from)e(0)581 1714 y(1)83 b(F)o(ortran-style)18 b(numbering)g(is)j(assumed)e(that)i (starts)g(from)e(1)208 1857 y FC(optype)132 b FL(Indicates)15 b(the)h(operation)d(for)i(which)g(the)h(memory)e(will)i(be)g (estimated.)23 b Fs(optype)14 b FL(can)i(tak)o(e)f(the)h(follo)n(wing)e (v)n(alues:)581 2000 y(1)83 b(Estimates)15 b(the)h(memory)d(needed)h (for)h Fz(METIS)p 2076 2000 V 30 w(P)m(ar)s(tGr)o(aphRecursiv)n(e)g FL(and)g Fz(METIS)p 3260 2000 V 30 w(WP)m(ar)s(tGr)o(aphRecursiv)n(e)p FL(.)581 2126 y(2)83 b(Estimates)20 b(the)h(memory)d(needed)h(for)g Fz(METIS)p 2100 2126 V 31 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)h FL(and)g Fz(METIS)p 3127 2126 V 30 w(WP)m(ar)s(tGr)o(aphKw)o(a)n(y)p FL(.)581 2252 y(3)83 b(Estimates)20 b(the)h(memory)d(needed)h(for)g Fz(METIS)p 2100 2252 V 31 w(EdgeND)p FL(.)581 2378 y(4)83 b(Estimates)25 b(the)g(memory)d(needed)i(for)g Fz(METIS)p 2123 2378 V 30 w(NodeND)p FL(,)i(b)n(ut)e(it)i(does)e(not)h(tak)o(e)f (into)h(account)e(memory)706 2488 y(sa)n(v)o(ed)d(due)f(to)i (compression.)208 2631 y FC(nbytes)142 b FL(Upon)19 b(return,)g Fs(nbytes)h FL(stores)g(an)h(estimate)f(on)g(the)g(number)e(of)i(bytes) g(that)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)24 b FL(requires.)1908 5649 y(42)p eop %%Page: 43 43 43 42 bop 0 83 a Fr(5.8)100 b(C)28 b(and)g(For)r(tran)f(Suppor)r(t)0 242 y FL(The)g(v)n(arious)g(routines)f(in)k Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)31 b FL(can)c(be)h(called)f(from)g(either)g (C)h(or)f(F)o(ortran)g(programs.)45 b(Using)27 b(C)i(with)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)30 b FL(is)f(quite)0 352 y(straightforw)o(ard)24 b(\(as)30 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)31 b FL(is)d(written)f(entirely)f(in)h(C\).)g(Ho)n (we)n(v)o(er)m(,)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)31 b FL(fully)26 b(supports)g(F)o(ortran)g(as)h(well.)46 b(This)27 b(support)0 462 y(comes)20 b(in)g(three)g(forms.)104 638 y(1.)41 b(All)20 b(the)h(scalar)f(ar)o(guments)e(in)i(the)h (routines)e(are)h(passed)g(by)g(reference)e(to)j(f)o(acilitate)f(F)o (ortran)f(programs.)104 814 y(2.)41 b(All)22 b(the)g(routines)f(tak)o (e)h(a)h(parameter)d(called)i Fs(num\003a)o(g)e FL(indicating)h (whether)g(or)h(not)f(the)h(numbering)e(of)h(the)h(graph)f(or)h(mesh) 208 923 y(starts)28 b(from)e(0)h(or)g(1.)46 b(In)27 b(C)h(programs)e (numbering)e(usually)j(starts)h(from)e(0,)j(whereas)e(in)g(F)o(ortran)f (programs)f(numbering)208 1033 y(starts)c(from)e(1.)104 1209 y(3.)43 b Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)21 b FL(incorporates)c(alternati)n(v)o(e)g(names)i(for)f(each)g(of)g(the)h (routines)e(to)i(f)o(acilitate)g(linking)e(the)i(library)f(with)g(F)o (ortran)g(pro-)208 1318 y(grams.)29 b(In)22 b(particular)m(,)f(for)g(e) n(v)o(ery)g(function)h Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)25 b FL(pro)o(vides)c(three)g(additional)g(names,)h(one)f (all)i(capital,)f(one)f(all)i(lo)n(wer)208 1428 y(case,)f(and)g(one)f (all)i(lo)n(wer)e(case)h(with)h(`)p 1363 1428 25 4 v 29 w(')f(appended)e(to)i(it.)31 b(F)o(or)22 b(e)o(xample,)e(for)i Fz(METIS)p 2801 1428 V 30 w(P)m(ar)s(tGr)o(aphKw)o(a)n(y)p FL(,)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)r(lib)26 b FL(pro-)208 1538 y(vides)c Fz(METIS)p 664 1538 V 30 w(P)-10 b(AR)n(TGRAPHKW)l(A)i(Y)p FL(,)24 b Fz(metis)p 1672 1538 V 30 w(par)s(tg)o(r)o(aphkw)o(a)n(y)p FL(,)f(and)e Fz(metis)p 2629 1538 V 31 w(par)s(tg)o(r)o(aphkw)o(a)n(y)p 3203 1538 V 29 w FL(.)31 b(These)22 b(e)o(xtra)g(names)208 1647 y(allo)n(w)j(the)h(library)f(to)h(be)g(directly)f(link)o(ed)g (into)g(F)o(ortran)g(programs)f(on)h(a)i(wide)e(range)g(of)h (architectures)e(including)g(Cray)-5 b(,)208 1757 y(SGI,)20 b(and)h(HP)-9 b(.)21 b(If)f(you)g(still)i(encounter)d(problems)g (linking)h(with)h(the)g(library)f(let)h(us)g(kno)n(w)f(so)h(we)g(can)g (include)f(appropriate)208 1866 y(support.)1908 5649 y(43)p eop %%Page: 44 44 44 43 bop 0 85 a FD(6)116 b(System)31 b(Requirements)g(and)h(Contact)f (Inf)n(ormation)0 261 y FL(The)24 b(distrib)n(ution)g(of)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)30 b FL(contains)24 b(a)h(number)e(of)h(\002les,)j(that)e(total)g(to)g(o)o(v)o(er)e(22,000) g(lines)i(of)f(code.)38 b(It)25 b(is)h(written)e(entirely)g(in)0 370 y(ANSI)f(C,)h(and)e(is)i(portable)e(on)g(most)h(Unix)g(systems)g (that)g(ha)n(v)o(e)f(an)h(ANSI)g(C)h(compiler)e(\(the)g(GNU)i(C)g (compiler)d(will)j(do\).)32 b(It)23 b(has)0 480 y(been)17 b(e)o(xtensi)n(v)o(ely)g(tested)h(on)g(AIX,)g(SunOS,)f(Solaris,)i (IRIX,)f(Linux,)f(HP-UX,)h(BSD,)h(and)f(Unicos.)24 b(Instructions)16 b(on)i(ho)n(w)g(to)g(b)n(uild)0 590 y(and)i(install)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(can)20 b(be)g(found)e(in)j (the)f(\002le)h Fp(INSTALL)e FL(of)h(the)g(distrib)n(ution.)100 699 y(Ev)o(en)d(though,)i Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)23 b FL(contains)18 b(no)h(kno)n(wn)e(b)n(ugs,)h(it)i(does)e(not)h (mean)f(that)h(all)g(of)f(its)i(b)n(ugs)f(ha)n(v)o(e)f(been)g(found)f (and)h(\002x)o(ed.)24 b(If)18 b(you)0 809 y(\002nd)24 b(an)o(y)f(problems,)g(please)h(send)f(email)h(to)g Fs (metis@cs.umn.edu)p FL(,)g(with)g(a)g(brief)f(description)g(of)g(the)h (problem)e(you)h(ha)n(v)o(e)h(found.)0 918 y(Also,)c(an)o(y)g(future)f (updates)g(to)j Fz(M)l FG(E)-17 b Fz(T)g FG(I)p Fz(S)25 b FL(will)c(be)f(made)g(a)n(v)n(ailable)f(on)h(WWW)i(at)f Fs(http://www)-6 b(.cs.umn.edu/\230metis)p FL(.)0 1164 y FD(Ref)o(erences)37 1331 y FK([1])42 b(Stephen)26 b(T)-6 b(.)26 b(Barnard)g(and)g(Horst)g(D.)f(Simon.)49 b(A)25 b(f)o(ast)h(multile)n(v)o(el)g(implementation)g(of)g(recursi)n(v)o(e)g (spectral)g(bisection)h(for)e(partitioning)166 1431 y(unstructured)d (problems.)34 b(In)21 b FJ(Pr)m(oceedings)h(of)e(the)h(sixth)g(SIAM)g (confer)m(ence)i(on)e(P)-6 b(ar)o(allel)20 b(Pr)m(ocessing)i(for)e (Scienti\002c)i(Computing)p FK(,)g(pages)166 1532 y(711\226718,)f (1993.)37 1649 y([2])42 b(A.)19 b(Geor)o(ge)h(and)h(J.)e(W)-7 b(.-H.)18 b(Liu.)29 b FJ(Computer)21 b(Solution)f(of)g(Lar)m(g)o(e)h (Spar)o(se)g(P)-6 b(ositive)19 b(De\002nite)h(Systems)p FK(.)30 b(Prentice-Hall,)19 b(Engle)n(w)o(ood)i(Clif)n(fs,)166 1749 y(NJ,)d(1981.)37 1866 y([3])42 b(Anshul)d(Gupta,)44 b(Geor)o(ge)39 b(Karypis,)44 b(and)c(V)l(ipin)e(K)o(umar)l(.)91 b(Highly)39 b(scalable)g(parallel)g(algorithms)g(for)g(sparse)g(matrix) f(f)o(actoriza-)166 1967 y(tion.)64 b FJ(IEEE)30 b(T)l(r)o(ansactions)h (on)g(P)-6 b(ar)o(allel)30 b(and)i(Distrib)o(uted)e(Systems)p FK(,)k(8\(5\):502\226520,)i(May)31 b(1997.)66 b(A)-6 b(v)n(ailable)31 b(on)g(WWW)e(at)i(URL)166 2067 y(http://www)-5 b(.cs.umn.edu/\230karypis.)37 2184 y([4])42 b(Bruce)15 b(Hendrickson)i(and)f(Robert)f(Leland.)k(The)c(chaco)h(user')l(s)f (guide,)h(v)o(ersion)g(1.0.)i(T)-5 b(echnical)16 b(Report)f (SAND93-2339,)h(Sandia)g(National)166 2285 y(Laboratories,)j(1993.)37 2402 y([5])42 b(Bruce)26 b(Hendrickson)h(and)f(Robert)g(Leland.)48 b(A)25 b(multile)n(v)o(el)g(algorithm)h(for)g(partitioning)g(graphs.)49 b(T)-5 b(echnical)25 b(Report)h(SAND93-1301,)166 2502 y(Sandia)19 b(National)g(Laboratories,)g(1993.)37 2619 y([6])42 b(G.)30 b(Karypis)g(and)h(V)-10 b(.)30 b(K)o(umar)l(.)62 b(Multile)n(v)o(el)31 b(algorithms)f(for)g(multi-constraint)g(graph)i (partitioning.)63 b(T)-5 b(echnical)30 b(Report)g(TR)g(98-019,)166 2720 y(Department)19 b(of)g(Computer)h(Science,)f(Uni)n(v)o(ersity)g (of)g(Minnesota,)h(1998.)37 2837 y([7])42 b(G.)24 b(Karypis)h(and)g(V) -10 b(.)24 b(K)o(umar)l(.)44 b(Multile)n(v)o(el)25 b(k-w)o(ay)g (partitioning)g(scheme)g(for)f(irre)o(gular)g(graphs.)46 b FJ(J)n(ournal)26 b(of)e(P)-6 b(ar)o(allel)24 b(and)h(Distrib)o(uted) 166 2937 y(Computing)p FK(,)19 b(48\(1\):96\226129,)j(1998.)28 b(Also)18 b(a)o(v)n(ailable)i(on)f(WWW)e(at)i(URL)f(http://www)-5 b(.cs.umn.edu/\230karypis.)37 3055 y([8])42 b(G.)23 b(Karypis)h(and)g (V)-10 b(.)23 b(K)o(umar)l(.)42 b(A)23 b(f)o(ast)h(and)g(highly)g (quality)g(multile)n(v)o(el)f(scheme)i(for)e(partitioning)h(irre)o (gular)f(graphs.)43 b FJ(SIAM)23 b(J)n(ournal)i(on)166 3155 y(Scienti\002c)f(Computing)p FK(,)g(1998)g(\(to)f(appear\).)40 b(Also)23 b(a)o(v)n(ailable)g(on)h(WWW)d(at)i(URL)f(http://www)-5 b(.cs.umn.edu/\230karypis.)23 b(A)g(short)g(v)o(ersion)166 3255 y(appears)d(in)f(Intl.)f(Conf.)h(on)g(P)o(arallel)f(Processing)h (1995.)37 3372 y([9])42 b(Geor)o(ge)21 b(Karypis,)f(Rajat)g(Aggarw)o (al,)h(V)l(ipin)f(K)o(umar)m(,)g(and)i(Shashi)e(Shekhar)l(.)32 b(Multile)n(v)o(el)20 b(hyper)o(graph)i(partitioning:)27 b(Application)21 b(in)f(vlsi)166 3473 y(domain.)28 b(In)19 b FJ(Pr)m(oceedings)g(of)g(the)g(Design)h(and)f(A)o(utomation)g(Confer) m(ence)p FK(,)h(1997.)0 3590 y([10])42 b(V)l(ipin)19 b(K)o(umar)m(,)h(Ananth)g(Grama,)f(Anshul)i(Gupta,)e(and)i(Geor)o(ge)e (Karypis.)30 b FJ(Intr)m(oduction)20 b(to)g(P)-6 b(ar)o(allel)19 b(Computing:)25 b(Design)20 b(and)h(Analysis)166 3690 y(of)e(Algorithms)p FK(.)27 b(Benjamin/Cummings)20 b(Publishing)f (Compan)o(y)-5 b(,)20 b(Redw)o(ood)g(City)-5 b(,)19 b(CA,)f(1994.)1908 5649 y FL(44)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF metis-edf-4.1/Lib/0000755000372500037370000000000011115456155014240 5ustar courtoisastergrpmetis-edf-4.1/Lib/fm.c0000644000372500037370000001517711115455203015012 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * fm.c * * This file contains code that implements the edge-based FM refinement * * Started 7/23/97 * George * * $Id: fm.c,v 1.1 1998/11/27 17:59:14 karypis Exp $ */ #include /************************************************************************* * This function performs an edge-based FM refinement **************************************************************************/ void FM_2WayEdgeRefine(CtrlType *ctrl, GraphType *graph, long *tpwgts, long npasses) { long i, ii, j, k, kwgt, nvtxs, nbnd, nswaps, from, to, pass, me, limit, tmp; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind, *pwgts; idxtype *moved, *swaps, *perm; PQueueType parts[2]; long higain, oldgain, mincut, mindiff, origdiff, initcut, newcut, mincutorder, avgvwgt; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; pwgts = graph->pwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); limit = amin(amax(0.01*nvtxs, 15), 100); avgvwgt = amin((pwgts[0]+pwgts[1])/20, 2*(pwgts[0]+pwgts[1])/nvtxs); tmp = graph->adjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]; PQueueInit(ctrl, &parts[0], nvtxs, tmp); PQueueInit(ctrl, &parts[1], nvtxs, tmp); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] T[%6ld %6ld], Nv-Nb[%6ld %6ld]. ICut: %6ld\n", pwgts[0], pwgts[1], tpwgts[0], tpwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); origdiff = abs(tpwgts[0]-pwgts[0]); idxset(nvtxs, -1, moved); for (pass=0; passmincut; mindiff = abs(tpwgts[0]-pwgts[0]); ASSERT(ComputeCut(graph, where) == graph->mincut); ASSERT(CheckBnd(graph)); /* Insert boundary nodes in the priority queues */ nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; ii 0 || id[bndind[i]] == 0); ASSERT(bndptr[bndind[i]] != -1); PQueueInsert(&parts[where[bndind[i]]], bndind[i], ed[bndind[i]]-id[bndind[i]]); } for (nswaps=0; nswaps limit) { /* We hit the limit, undo last move */ newcut += (ed[higain]-id[higain]); INC_DEC(pwgts[from], pwgts[to], vwgt[higain]); break; } where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("Moved %6ld from %ld. [%3ld %3ld] %5ld [%4ld %4ld]\n", higain, from, ed[higain]-id[higain], vwgt[higain], newcut, pwgts[0], pwgts[1])); /************************************************************** * Update the id[i]/ed[i] values of the affected nodes ***************************************************************/ SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0) { /* It will now become a boundary vertex */ BNDInsert(nbnd, bndind, bndptr, k); if (moved[k] == -1) PQueueInsert(&parts[where[k]], k, ed[k]-id[k]); } } } } /**************************************************************** * Roll back computations *****************************************************************/ for (i=0; imincutorder; nswaps--) { higain = swaps[nswaps]; to = where[higain] = (where[higain]+1)%2; SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); else if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); INC_DEC(pwgts[to], pwgts[(to+1)%2], vwgt[higain]); for (j=xadj[higain]; j 0) BNDInsert(nbnd, bndind, bndptr, k); } } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\tMinimum cut: %6ld at %5ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, mincutorder, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; if (mincutorder == -1 || mincut == initcut) break; } PQueueFree(ctrl, &parts[0]); PQueueFree(ctrl, &parts[1]); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } metis-edf-4.1/Lib/minitpart.c0000644000372500037370000002625511115455203016416 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * minitpart.c * * This file contains code that performs the initial partition of the * coarsest graph * * Started 7/23/97 * George * * $Id: minitpart.c,v 1.2 1998/11/30 15:08:37 karypis Exp $ * */ #include /************************************************************************* * This function computes the initial bisection of the coarsest graph **************************************************************************/ void MocInit2WayPartition(CtrlType *ctrl, GraphType *graph, float *tpwgts, float ubfactor) { long i, dbglvl; dbglvl = ctrl->dbglvl; IFSET(ctrl->dbglvl, DBG_REFINE, ctrl->dbglvl -= DBG_REFINE); IFSET(ctrl->dbglvl, DBG_MOVEINFO, ctrl->dbglvl -= DBG_MOVEINFO); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); switch (ctrl->IType) { case IPART_GGPKL: MocGrowBisection(ctrl, graph, tpwgts, ubfactor); break; case IPART_RANDOM: MocRandomBisection(ctrl, graph, tpwgts, ubfactor); break; default: errexit("Unknown initial partition type: %ld\n", ctrl->IType); } IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial Cut: %ld [%ld]\n", graph->mincut, graph->where[0])); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); ctrl->dbglvl = dbglvl; } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void MocGrowBisection(CtrlType *ctrl, GraphType *graph, float *tpwgts, float ubfactor) { long i, j, k, nvtxs, ncon, from, bestcut, mincut, nbfs; idxtype *bestwhere, *where; nvtxs = graph->nvtxs; MocAllocate2WayPartitionMemory(ctrl, graph); where = graph->where; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); nbfs = 2*(nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = idxsum(graph->nedges, graph->adjwgt); for (; nbfs>0; nbfs--) { idxset(nvtxs, 1, where); where[RandomInRange(nvtxs)] = 0; MocCompute2WayPartitionParams(ctrl, graph); MocInit2WayBalance(ctrl, graph, tpwgts); MocFM_2WayEdgeRefine(ctrl, graph, tpwgts, 4); MocBalance2Way(ctrl, graph, tpwgts, 1.02); MocFM_2WayEdgeRefine(ctrl, graph, tpwgts, 4); if (bestcut >= graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); if (bestcut == 0) break; } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); GKfree(&bestwhere, LTERM); } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void MocRandomBisection(CtrlType *ctrl, GraphType *graph, float *tpwgts, float ubfactor) { long i, ii, j, k, nvtxs, ncon, from, bestcut, mincut, nbfs, qnum; idxtype *bestwhere, *where, *perm; long counts[MAXNCON]; float *nvwgt; nvtxs = graph->nvtxs; ncon = graph->ncon; nvwgt = graph->nvwgt; MocAllocate2WayPartitionMemory(ctrl, graph); where = graph->where; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); nbfs = 2*(nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = idxsum(graph->nedges, graph->adjwgt); perm = idxmalloc(nvtxs, "BisectGraph: perm"); for (; nbfs>0; nbfs--) { for (i=0; imincut); for (i=0; incon; i++) printf("(%.3f %.3f) ", graph->npwgts[i], graph->npwgts[graph->ncon+i]); printf("]\n"); */ if (bestcut >= graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); if (bestcut == 0) break; } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); GKfree(&bestwhere, &perm, LTERM); } /************************************************************************* * This function balances two partitions by moving the highest gain * (including negative gain) vertices to the other domain. * It is used only when tha unbalance is due to non contigous * subdomains. That is, the are no boundary vertices. * It moves vertices from the domain that is overweight to the one that * is underweight. **************************************************************************/ void MocInit2WayBalance(CtrlType *ctrl, GraphType *graph, float *tpwgts) { long SelectQueueOneWay(long , float *, float *, long , PQueueType[MAXNCON][2] ) ; long i, ii, j, k, l, kwgt, nvtxs, nbnd, ncon, nswaps, from, to, pass, me, cnum, tmp; idxtype *xadj, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind; idxtype *perm, *qnum; float *nvwgt, *npwgts; PQueueType parts[MAXNCON][2]; long higain, oldgain, mincut; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; nvwgt = graph->nvwgt; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; npwgts = graph->npwgts; bndptr = graph->bndptr; bndind = graph->bndind; perm = idxwspacemalloc(ctrl, nvtxs); qnum = idxwspacemalloc(ctrl, nvtxs); /* This is called for initial partitioning so we know from where to pick nodes */ from = 1; to = (from+1)%2; if (ctrl->dbglvl&DBG_REFINE) { printf("Parts: ["); for (l=0; lnvtxs, graph->nbnd, graph->mincut, Compute2WayHLoadImbalance(ncon, npwgts, tpwgts)); } for (i=0; imincut); ASSERT(CheckBnd(graph)); ASSERT(CheckGraph(graph)); /* Compute the queues in which each vertex will be assigned to */ for (i=0; i 0) PQueueInsert(&parts[qnum[i]][0], i, ed[i]-id[i]); else PQueueInsert(&parts[qnum[i]][1], i, ed[i]-id[i]); } } mincut = graph->mincut; nbnd = graph->nbnd; for (nswaps=0; nswapsdbglvl&DBG_MOVEINFO) { printf("Moved %6ld from %ld(%ld). [%5ld] %5ld, NPwgts: ", higain, from, cnum, ed[higain]-id[higain], mincut); for (l=0; l 0) printf("\t Pulled from the interior!\n"); } /************************************************************** * Update the id[i]/ed[i] values of the affected nodes ***************************************************************/ SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0 && bndptr[k] == -1) { /* It moves in boundary */ PQueueDelete(&parts[qnum[k]][1], k, oldgain); PQueueInsert(&parts[qnum[k]][0], k, ed[k]-id[k]); } else { /* It must be in the boundary already */ if (bndptr[k] == -1) printf("What you thought was wrong!\n"); PQueueUpdate(&parts[qnum[k]][0], k, oldgain, ed[k]-id[k]); } } /* Update its boundary information */ if (ed[k] == 0 && bndptr[k] != -1) BNDDelete(nbnd, bndind, bndptr, k); else if (ed[k] > 0 && bndptr[k] == -1) BNDInsert(nbnd, bndind, bndptr, k); } ASSERTP(ComputeCut(graph, where) == mincut, ("%ld != %ld\n", ComputeCut(graph, where), mincut)); } if (ctrl->dbglvl&DBG_REFINE) { printf("\tMincut: %6ld, NBND: %6ld, NPwgts: ", mincut, nbnd); for (l=0; lmincut = mincut; graph->nbnd = nbnd; for (i=0; imincut); ASSERT(CheckBnd(graph)); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function selects the partition number and the queue from which * we will move vertices out **************************************************************************/ long SelectQueueOneWay(long ncon, float *npwgts, float *tpwgts, long from, PQueueType queues[MAXNCON][2]) { long i, cnum=-1; float max=0.0; for (i=0; i= max && PQueueGetSize(&queues[i][0]) + PQueueGetSize(&queues[i][1]) > 0) { max = npwgts[from*ncon+i]-tpwgts[0]; cnum = i; } } return cnum; } metis-edf-4.1/Lib/debug.c0000644000372500037370000001555211115455203015473 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * debug.c * * This file contains code that performs self debuging * * Started 7/24/97 * George * * $Id: debug.c,v 1.1 1998/11/27 17:59:13 karypis Exp $ * */ #include /************************************************************************* * This function computes the cut given the graph and a where vector **************************************************************************/ long ComputeCut(GraphType *graph, idxtype *where) { long i, j, cut; if (graph->adjwgt == NULL) { for (cut=0, i=0; invtxs; i++) { for (j=graph->xadj[i]; jxadj[i+1]; j++) if (where[i] != where[graph->adjncy[j]]) cut++; } } else { for (cut=0, i=0; invtxs; i++) { for (j=graph->xadj[i]; jxadj[i+1]; j++) if (where[i] != where[graph->adjncy[j]]) cut += graph->adjwgt[j]; } } return cut/2; } /************************************************************************* * This function checks whether or not the boundary information is correct **************************************************************************/ long CheckBnd(GraphType *graph) { long i, j, nvtxs, nbnd; idxtype *xadj, *adjncy, *where, *bndptr, *bndind; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; for (nbnd=0, i=0; inbnd, ("%ld %ld\n", nbnd, graph->nbnd)); return 1; } /************************************************************************* * This function checks whether or not the boundary information is correct **************************************************************************/ long CheckBnd2(GraphType *graph) { long i, j, nvtxs, nbnd, id, ed; idxtype *xadj, *adjncy, *where, *bndptr, *bndind; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; for (nbnd=0, i=0; iadjwgt[j]; else id += graph->adjwgt[j]; } if (ed - id >= 0 && xadj[i] < xadj[i+1]) { nbnd++; ASSERTP(bndptr[i] != -1, ("%ld %ld %ld\n", i, id, ed)); ASSERT(bndind[bndptr[i]] == i); } } ASSERTP(nbnd == graph->nbnd, ("%ld %ld\n", nbnd, graph->nbnd)); return 1; } /************************************************************************* * This function checks whether or not the boundary information is correct **************************************************************************/ long CheckNodeBnd(GraphType *graph, long onbnd) { long i, j, nvtxs, nbnd; idxtype *xadj, *adjncy, *where, *bndptr, *bndind; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; for (nbnd=0, i=0; indegrees; i++) { for (j=i+1; jndegrees; j++) ASSERTP(rinfo->edegrees[i].pid != rinfo->edegrees[j].pid, ("%ld %ld %ld %ld\n", i, j, rinfo->edegrees[i].pid, rinfo->edegrees[j].pid)); } return 1; } /************************************************************************* * This function checks the correctness of the NodeFM data structures **************************************************************************/ long CheckNodePartitionParams(GraphType *graph) { long i, j, k, l, nvtxs, me, other; idxtype *xadj, *adjncy, *adjwgt, *vwgt, *where; idxtype edegrees[2], pwgts[3]; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; /*------------------------------------------------------------ / Compute now the separator external degrees /------------------------------------------------------------*/ pwgts[0] = pwgts[1] = pwgts[2] = 0; for (i=0; inrinfo[i].edegrees[0] || edegrees[1] != graph->nrinfo[i].edegrees[1]) { printf("Something wrong with edegrees: %ld %ld %ld %ld %ld\n", i, edegrees[0], edegrees[1], graph->nrinfo[i].edegrees[0], graph->nrinfo[i].edegrees[1]); return 0; } } } if (pwgts[0] != graph->pwgts[0] || pwgts[1] != graph->pwgts[1] || pwgts[2] != graph->pwgts[2]) printf("Something wrong with part-weights: %ld %ld %ld %ld %ld %ld\n", pwgts[0], pwgts[1], pwgts[2], graph->pwgts[0], graph->pwgts[1], graph->pwgts[2]); return 1; } /************************************************************************* * This function checks if the separator is indeed a separator **************************************************************************/ long IsSeparable(GraphType *graph) { long i, j, nvtxs, other; idxtype *xadj, *adjncy, *where; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; for (i=0; i /************************************************************************* * This function uses simple counting sort to return a permutation array * corresponding to the sorted order. The keys are assumed to start from * 0 and they are positive. This sorting is used during matching. **************************************************************************/ void BucketSortKeysInc(long n, long max, idxtype *keys, idxtype *tperm, idxtype *perm) { long i, ii; idxtype *counts; counts = idxsmalloc(max+2, 0, "BucketSortKeysInc: counts"); for (i=0; i /************************************************************************* * This function takes a graph and creates a sequence of coarser graphs **************************************************************************/ GraphType *MCCoarsen2Way(CtrlType *ctrl, GraphType *graph) { long i, clevel; GraphType *cgraph; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->CoarsenTmr)); cgraph = graph; clevel = 0; do { if (ctrl->dbglvl&DBG_COARSEN) { printf("%6ld %7ld %10ld [%ld] [%6.4f", cgraph->nvtxs, cgraph->nedges, idxsum(cgraph->nvtxs, cgraph->adjwgtsum), ctrl->CoarsenTo, ctrl->nmaxvwgt); for (i=0; incon; i++) printf(" %5.3f", ssum_strd(cgraph->nvtxs, cgraph->nvwgt+i, cgraph->ncon)); printf("]\n"); } switch (ctrl->CType) { case MATCH_RM: MCMatch_RM(ctrl, cgraph); break; case MATCH_HEM: if (clevel < 1) MCMatch_RM(ctrl, cgraph); else MCMatch_HEM(ctrl, cgraph); break; case MATCH_SHEM: if (clevel < 1) MCMatch_RM(ctrl, cgraph); else MCMatch_SHEM(ctrl, cgraph); break; case MATCH_SHEMKWAY: MCMatch_SHEM(ctrl, cgraph); break; case MATCH_SHEBM_ONENORM: MCMatch_SHEBM(ctrl, cgraph, 1); break; case MATCH_SHEBM_INFNORM: MCMatch_SHEBM(ctrl, cgraph, -1); break; case MATCH_SBHEM_ONENORM: MCMatch_SBHEM(ctrl, cgraph, 1); break; case MATCH_SBHEM_INFNORM: MCMatch_SBHEM(ctrl, cgraph, -1); break; default: errexit("Unknown CType: %ld\n", ctrl->CType); } cgraph = cgraph->coarser; clevel++; } while (cgraph->nvtxs > ctrl->CoarsenTo && cgraph->nvtxs < COARSEN_FRACTION2*cgraph->finer->nvtxs && cgraph->nedges > cgraph->nvtxs/2); if (ctrl->dbglvl&DBG_COARSEN) { printf("%6ld %7ld %10ld [%ld] [%6.4f", cgraph->nvtxs, cgraph->nedges, idxsum(cgraph->nvtxs, cgraph->adjwgtsum), ctrl->CoarsenTo, ctrl->nmaxvwgt); for (i=0; incon; i++) printf(" %5.3f", ssum_strd(cgraph->nvtxs, cgraph->nvwgt+i, cgraph->ncon)); printf("]\n"); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->CoarsenTmr)); return cgraph; } metis-edf-4.1/Lib/mkwayrefine.c0000644000372500037370000002151211115455203016717 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mkwayrefine.c * * This file contains the driving routines for multilevel k-way refinement * * Started 7/28/97 * George * * $Id: mkwayrefine.c,v 1.2 1998/11/27 18:16:19 karypis Exp $ */ #include /************************************************************************* * This function is the entry point of refinement **************************************************************************/ void MocRefineKWayHorizontal(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, long nparts, float *ubvec) { IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); /* Compute the parameters of the coarsest graph */ MocComputeKWayPartitionParams(ctrl, graph, nparts); for (;;) { IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); if (!MocIsHBalanced(graph->ncon, nparts, graph->npwgts, ubvec)) { MocComputeKWayBalanceBoundary(ctrl, graph, nparts); MCGreedy_KWayEdgeBalanceHorizontal(ctrl, graph, nparts, ubvec, 4); ComputeKWayBoundary(ctrl, graph, nparts); } MCRandom_KWayEdgeRefineHorizontal(ctrl, graph, nparts, ubvec, 10); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); MocProjectKWayPartition(ctrl, graph, nparts); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } if (!MocIsHBalanced(graph->ncon, nparts, graph->npwgts, ubvec)) { MocComputeKWayBalanceBoundary(ctrl, graph, nparts); MCGreedy_KWayEdgeBalanceHorizontal(ctrl, graph, nparts, ubvec, 4); ComputeKWayBoundary(ctrl, graph, nparts); MCRandom_KWayEdgeRefineHorizontal(ctrl, graph, nparts, ubvec, 10); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } /************************************************************************* * This function allocates memory for k-way edge refinement **************************************************************************/ void MocAllocateKWayPartitionMemory(CtrlType *ctrl, GraphType *graph, long nparts) { long nvtxs, ncon, pad64; nvtxs = graph->nvtxs; ncon = graph->ncon; pad64 = (3*nvtxs)%2; graph->rdata = idxmalloc(3*nvtxs+(sizeof(RInfoType)/sizeof(idxtype))*nvtxs+pad64, "AllocateKWayPartitionMemory: rdata"); graph->where = graph->rdata; graph->bndptr = graph->rdata + nvtxs; graph->bndind = graph->rdata + 2*nvtxs; graph->rinfo = (RInfoType *)(graph->rdata + 3*nvtxs + pad64); graph->npwgts = fmalloc(ncon*nparts, "MocAllocateKWayPartitionMemory: npwgts"); } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void MocComputeKWayPartitionParams(CtrlType *ctrl, GraphType *graph, long nparts) { long i, j, k, l, nvtxs, ncon, nbnd, mincut, me, other; idxtype *xadj, *adjncy, *adjwgt, *where, *bndind, *bndptr; RInfoType *rinfo, *myrinfo; EDegreeType *myedegrees; float *nvwgt, *npwgts; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; npwgts = sset(ncon*nparts, 0.0, graph->npwgts); bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); rinfo = graph->rinfo; /*------------------------------------------------------------ / Compute now the id/ed degrees /------------------------------------------------------------*/ ctrl->wspace.cdegree = 0; nbnd = mincut = 0; for (i=0; iid = myrinfo->ed = myrinfo->ndegrees = 0; myrinfo->edegrees = NULL; for (j=xadj[i]; jed += adjwgt[j]; } myrinfo->id = graph->adjwgtsum[i] - myrinfo->ed; if (myrinfo->ed > 0) mincut += myrinfo->ed; if (myrinfo->ed-myrinfo->id >= 0) BNDInsert(nbnd, bndind, bndptr, i); /* Time to compute the particular external degrees */ if (myrinfo->ed > 0) { myedegrees = myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[i+1]-xadj[i]; for (j=xadj[i]; jndegrees; k++) { if (myedegrees[k].pid == other) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = other; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } } ASSERT(myrinfo->ndegrees <= xadj[i+1]-xadj[i]); } } graph->mincut = mincut/2; graph->nbnd = nbnd; } /************************************************************************* * This function projects a partition, and at the same time computes the * parameters for refinement. **************************************************************************/ void MocProjectKWayPartition(CtrlType *ctrl, GraphType *graph, long nparts) { long i, j, k, nvtxs, nbnd, me, other, istart, iend, ndegrees; idxtype *xadj, *adjncy, *adjwgt, *adjwgtsum; idxtype *cmap, *where, *bndptr, *bndind; idxtype *cwhere; GraphType *cgraph; RInfoType *crinfo, *rinfo, *myrinfo; EDegreeType *myedegrees; idxtype *htable; cgraph = graph->coarser; cwhere = cgraph->where; crinfo = cgraph->rinfo; nvtxs = graph->nvtxs; cmap = graph->cmap; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; MocAllocateKWayPartitionMemory(ctrl, graph, nparts); where = graph->where; rinfo = graph->rinfo; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /* Go through and project partition and compute id/ed for the nodes */ for (i=0; iwspace.cdegree = 0; for (nbnd=0, i=0; iid = myrinfo->ed = myrinfo->ndegrees = 0; myrinfo->edegrees = NULL; myrinfo->id = adjwgtsum[i]; if (cmap[i] > 0) { /* If it is an interface node. Note cmap[i] = crinfo[cmap[i]].ed */ istart = xadj[i]; iend = xadj[i+1]; myedegrees = myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += iend-istart; ndegrees = 0; for (j=istart; jed += adjwgt[j]; if ((k = htable[other]) == -1) { htable[other] = ndegrees; myedegrees[ndegrees].pid = other; myedegrees[ndegrees++].ed = adjwgt[j]; } else { myedegrees[k].ed += adjwgt[j]; } } } myrinfo->id -= myrinfo->ed; /* Remove space for edegrees if it was interior */ if (myrinfo->ed == 0) { myrinfo->edegrees = NULL; ctrl->wspace.cdegree -= iend-istart; } else { if (myrinfo->ed-myrinfo->id >= 0) BNDInsert(nbnd, bndind, bndptr, i); myrinfo->ndegrees = ndegrees; for (j=0; jncon*nparts, cgraph->npwgts, graph->npwgts); graph->mincut = cgraph->mincut; graph->nbnd = nbnd; FreeGraph(graph->coarser); graph->coarser = NULL; idxwspacefree(ctrl, nparts); ASSERT(CheckBnd2(graph)); } /************************************************************************* * This function computes the boundary definition for balancing **************************************************************************/ void MocComputeKWayBalanceBoundary(CtrlType *ctrl, GraphType *graph, long nparts) { long i, nvtxs, nbnd; idxtype *bndind, *bndptr; nvtxs = graph->nvtxs; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /* Compute the new boundary */ nbnd = 0; for (i=0; irinfo[i].ed > 0) BNDInsert(nbnd, bndind, bndptr, i); } graph->nbnd = nbnd; } metis-edf-4.1/Lib/mfm.c0000644000372500037370000002665011115455203015165 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mfm.c * * This file contains code that implements the edge-based FM refinement * * Started 7/23/97 * George * * $Id: mfm.c,v 1.3 1998/11/30 14:50:44 karypis Exp $ */ #include /************************************************************************* * This function performs an edge-based FM refinement **************************************************************************/ void MocFM_2WayEdgeRefine(CtrlType *ctrl, GraphType *graph, float *tpwgts, long npasses) { long i, ii, j, k, l, kwgt, nvtxs, ncon, nbnd, nswaps, from, to, pass, me, limit, tmp, cnum; idxtype *xadj, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind; idxtype *moved, *swaps, *perm, *qnum; float *nvwgt, *npwgts, mindiff[MAXNCON], origbal, minbal, newbal; PQueueType parts[MAXNCON][2]; long higain, oldgain, mincut, initcut, newcut, mincutorder; float rtpwgts[2]; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; npwgts = graph->npwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); qnum = idxwspacemalloc(ctrl, nvtxs); limit = amin(amax(0.01*nvtxs, 25), 150); /* Initialize the queues */ for (i=0; idbglvl&DBG_REFINE) { printf("Parts: ["); for (l=0; lnvtxs, graph->nbnd, graph->mincut, origbal); } idxset(nvtxs, -1, moved); for (pass=0; passmincut; for (i=0; imincut); ASSERT(CheckBnd(graph)); /* Insert boundary nodes in the priority queues */ nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; ii 0 || id[i] == 0); ASSERT(bndptr[i] != -1); PQueueInsert(&parts[qnum[i]][where[i]], i, ed[i]-id[i]); } for (nswaps=0; nswaps limit) { /* We hit the limit, undo last move */ newcut += (ed[higain]-id[higain]); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+from*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); break; } where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; if (ctrl->dbglvl&DBG_MOVEINFO) { printf("Moved %6ld from %ld(%ld). Gain: %5ld, Cut: %5ld, NPwgts: ", higain, from, cnum, ed[higain]-id[higain], newcut); for (l=0; l 0) { /* It will now become a boundary vertex */ BNDInsert(nbnd, bndind, bndptr, k); if (moved[k] == -1) PQueueInsert(&parts[qnum[k]][where[k]], k, ed[k]-id[k]); } } } } /**************************************************************** * Roll back computations *****************************************************************/ for (i=0; imincutorder; nswaps--) { higain = swaps[nswaps]; to = where[higain] = (where[higain]+1)%2; SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); else if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+((to+1)%2)*ncon, 1); for (j=xadj[higain]; j 0) BNDInsert(nbnd, bndind, bndptr, k); } } if (ctrl->dbglvl&DBG_REFINE) { printf("\tMincut: %6ld at %5ld, NBND: %6ld, NPwgts: [", mincut, mincutorder, nbnd); for (l=0; lmincut = mincut; graph->nbnd = nbnd; if (mincutorder == -1 || mincut == initcut) break; } for (i=0; i= maxdiff) { maxdiff = npwgts[part*ncon+i]-tpwgts[part]; *from = part; *cnum = i; } } } /* printf("Selected1 %ld(%ld) -> %ld [%5f]\n", *from, *cnum, PQueueGetSize(&queues[*cnum][*from]), maxdiff); */ if (*from != -1 && PQueueGetSize(&queues[*cnum][*from]) == 0) { /* The desired queue is empty, select a node from that side anyway */ for (i=0; i 0) { max = npwgts[(*from)*ncon + i]; *cnum = i; break; } } for (i++; i max && PQueueGetSize(&queues[i][*from]) > 0) { max = npwgts[(*from)*ncon + i]; *cnum = i; } } } /* Check to see if you can focus on the cut */ if (maxdiff <= 0.0 || *from == -1) { maxgain = -100000; for (part=0; part<2; part++) { for (i=0; i 0 && PQueueGetKey(&queues[i][part]) > maxgain) { maxgain = PQueueGetKey(&queues[i][part]); *from = part; *cnum = i; } } } } /* printf("Selected2 %ld(%ld) -> %ld\n", *from, *cnum, PQueueGetSize(&queues[*cnum][*from])); */ } /************************************************************************* * This function checks if the balance achieved is better than the diff * For now, it uses a 2-norm measure **************************************************************************/ long BetterBalance(long ncon, float *npwgts, float *tpwgts, float *diff) { long i; float ndiff[MAXNCON]; for (i=0; i /************************************************************************* * genmmd -- multiple minimum external degree * purpose -- this routine implements the minimum degree * algorithm. it makes use of the implicit representation * of elimination graphs by quotient graphs, and the notion * of indistinguishable nodes. It also implements the modifications * by multiple elimination and minimum external degree. * Caution -- the adjacency vector adjncy will be destroyed. * Input parameters -- * neqns -- number of equations. * (xadj, adjncy) -- the adjacency structure. * delta -- tolerance value for multiple elimination. * maxint -- maximum machine representable (short) integer * (any smaller estimate will do) for marking nodes. * Output parameters -- * perm -- the minimum degree ordering. * invp -- the inverse of perm. * *ncsub -- an upper bound on the number of nonzero subscripts * for the compressed storage scheme. * Working parameters -- * head -- vector for head of degree lists. * invp -- used temporarily for degree forward link. * perm -- used temporarily for degree backward link. * qsize -- vector for size of supernodes. * list -- vector for temporary linked lists. * marker -- a temporary marker vector. * Subroutines used -- mmdelm, mmdint, mmdnum, mmdupd. **************************************************************************/ void genmmd(long neqns, idxtype *xadj, idxtype *adjncy, idxtype *invp, idxtype *perm, long delta, idxtype *head, idxtype *qsize, idxtype *list, idxtype *marker, long maxint, long *ncsub) { long ehead, i, mdeg, mdlmt, mdeg_node, nextmd, num, tag; if (neqns <= 0) return; /* Adjust from C to Fortran */ xadj--; adjncy--; invp--; perm--; head--; qsize--; list--; marker--; /* initialization for the minimum degree algorithm. */ *ncsub = 0; mmdint(neqns, xadj, adjncy, head, invp, perm, qsize, list, marker); /* 'num' counts the number of ordered nodes plus 1. */ num = 1; /* eliminate all isolated nodes. */ nextmd = head[1]; while (nextmd > 0) { mdeg_node = nextmd; nextmd = invp[mdeg_node]; marker[mdeg_node] = maxint; invp[mdeg_node] = -num; num = num + 1; } /* search for node of the minimum degree. 'mdeg' is the current */ /* minimum degree; 'tag' is used to facilitate marking nodes. */ if (num > neqns) goto n1000; tag = 1; head[1] = 0; mdeg = 2; /* infinite loop here ! */ while (1) { while (head[mdeg] <= 0) mdeg++; /* use value of 'delta' to set up 'mdlmt', which governs */ /* when a degree update is to be performed. */ mdlmt = mdeg + delta; ehead = 0; n500: mdeg_node = head[mdeg]; while (mdeg_node <= 0) { mdeg++; if (mdeg > mdlmt) goto n900; mdeg_node = head[mdeg]; }; /* remove 'mdeg_node' from the degree structure. */ nextmd = invp[mdeg_node]; head[mdeg] = nextmd; if (nextmd > 0) perm[nextmd] = -mdeg; invp[mdeg_node] = -num; *ncsub += mdeg + qsize[mdeg_node] - 2; if ((num+qsize[mdeg_node]) > neqns) goto n1000; /* eliminate 'mdeg_node' and perform quotient graph */ /* transformation. reset 'tag' value if necessary. */ tag++; if (tag >= maxint) { tag = 1; for (i = 1; i <= neqns; i++) if (marker[i] < maxint) marker[i] = 0; }; mmdelm(mdeg_node, xadj, adjncy, head, invp, perm, qsize, list, marker, maxint, tag); num += qsize[mdeg_node]; list[mdeg_node] = ehead; ehead = mdeg_node; if (delta >= 0) goto n500; n900: /* update degrees of the nodes involved in the */ /* minimum degree nodes elimination. */ if (num > neqns) goto n1000; mmdupd( ehead, neqns, xadj, adjncy, delta, &mdeg, head, invp, perm, qsize, list, marker, maxint, &tag); }; /* end of -- while ( 1 ) -- */ n1000: mmdnum( neqns, perm, invp, qsize ); /* Adjust from Fortran back to C*/ xadj++; adjncy++; invp++; perm++; head++; qsize++; list++; marker++; } /************************************************************************** * mmdelm ...... multiple minimum degree elimination * Purpose -- This routine eliminates the node mdeg_node of minimum degree * from the adjacency structure, which is stored in the quotient * graph format. It also transforms the quotient graph representation * of the elimination graph. * Input parameters -- * mdeg_node -- node of minimum degree. * maxint -- estimate of maximum representable (short) integer. * tag -- tag value. * Updated parameters -- * (xadj, adjncy) -- updated adjacency structure. * (head, forward, backward) -- degree doubly linked structure. * qsize -- size of supernode. * marker -- marker vector. * list -- temporary linked list of eliminated nabors. ***************************************************************************/ void mmdelm(long mdeg_node, idxtype *xadj, idxtype *adjncy, idxtype *head, idxtype *forward, idxtype *backward, idxtype *qsize, idxtype *list, idxtype *marker, long maxint,long tag) { long element, i, istop, istart, j, jstop, jstart, link, nabor, node, npv, nqnbrs, nxnode, pvnode, rlmt, rloc, rnode, xqnbr; /* find the reachable set of 'mdeg_node' and */ /* place it in the data structure. */ marker[mdeg_node] = tag; istart = xadj[mdeg_node]; istop = xadj[mdeg_node+1] - 1; /* 'element' points to the beginning of the list of */ /* eliminated nabors of 'mdeg_node', and 'rloc' gives the */ /* storage location for the next reachable node. */ element = 0; rloc = istart; rlmt = istop; for ( i = istart; i <= istop; i++ ) { nabor = adjncy[i]; if ( nabor == 0 ) break; if ( marker[nabor] < tag ) { marker[nabor] = tag; if ( forward[nabor] < 0 ) { list[nabor] = element; element = nabor; } else { adjncy[rloc] = nabor; rloc++; }; }; /* end of -- if -- */ }; /* end of -- for -- */ /* merge with reachable nodes from generalized elements. */ while ( element > 0 ) { adjncy[rlmt] = -element; link = element; n400: jstart = xadj[link]; jstop = xadj[link+1] - 1; for ( j = jstart; j <= jstop; j++ ) { node = adjncy[j]; link = -node; if ( node < 0 ) goto n400; if ( node == 0 ) break; if ((marker[node]=0)) { marker[node] = tag; /*use storage from eliminated nodes if necessary.*/ while ( rloc >= rlmt ) { link = -adjncy[rlmt]; rloc = xadj[link]; rlmt = xadj[link+1] - 1; }; adjncy[rloc] = node; rloc++; }; }; /* end of -- for ( j = jstart; -- */ element = list[element]; }; /* end of -- while ( element > 0 ) -- */ if ( rloc <= rlmt ) adjncy[rloc] = 0; /* for each node in the reachable set, do the following. */ link = mdeg_node; n1100: istart = xadj[link]; istop = xadj[link+1] - 1; for ( i = istart; i <= istop; i++ ) { rnode = adjncy[i]; link = -rnode; if ( rnode < 0 ) goto n1100; if ( rnode == 0 ) return; /* 'rnode' is in the degree list structure. */ pvnode = backward[rnode]; if (( pvnode != 0 ) && ( pvnode != (-maxint) )) { /* then remove 'rnode' from the structure. */ nxnode = forward[rnode]; if ( nxnode > 0 ) backward[nxnode] = pvnode; if ( pvnode > 0 ) forward[pvnode] = nxnode; npv = -pvnode; if ( pvnode < 0 ) head[npv] = nxnode; }; /* purge inactive quotient nabors of 'rnode'. */ jstart = xadj[rnode]; jstop = xadj[rnode+1] - 1; xqnbr = jstart; for ( j = jstart; j <= jstop; j++ ) { nabor = adjncy[j]; if ( nabor == 0 ) break; if ( marker[nabor] < tag ) { adjncy[xqnbr] = nabor; xqnbr++; }; }; /* no active nabor after the purging. */ nqnbrs = xqnbr - jstart; if ( nqnbrs <= 0 ) { /* merge 'rnode' with 'mdeg_node'. */ qsize[mdeg_node] += qsize[rnode]; qsize[rnode] = 0; marker[rnode] = maxint; forward[rnode] = -mdeg_node; backward[rnode] = -maxint; } else { /* flag 'rnode' for degree update, and */ /* add 'mdeg_node' as a nabor of 'rnode'. */ forward[rnode] = nqnbrs + 1; backward[rnode] = 0; adjncy[xqnbr] = mdeg_node; xqnbr++; if ( xqnbr <= jstop ) adjncy[xqnbr] = 0; }; }; /* end of -- for ( i = istart; -- */ return; } /*************************************************************************** * mmdint ---- mult minimum degree initialization * purpose -- this routine performs initialization for the * multiple elimination version of the minimum degree algorithm. * input parameters -- * neqns -- number of equations. * (xadj, adjncy) -- adjacency structure. * output parameters -- * (head, dfrow, backward) -- degree doubly linked structure. * qsize -- size of supernode ( initialized to one). * list -- linked list. * marker -- marker vector. ****************************************************************************/ long mmdint(long neqns, idxtype *xadj, idxtype *adjncy, idxtype *head, idxtype *forward, idxtype *backward, idxtype *qsize, idxtype *list, idxtype *marker) { long fnode, ndeg, node; for ( node = 1; node <= neqns; node++ ) { head[node] = 0; qsize[node] = 1; marker[node] = 0; list[node] = 0; }; /* initialize the degree doubly linked lists. */ for ( node = 1; node <= neqns; node++ ) { ndeg = xadj[node+1] - xadj[node]/* + 1*/; /* george */ if (ndeg == 0) ndeg = 1; fnode = head[ndeg]; forward[node] = fnode; head[ndeg] = node; if ( fnode > 0 ) backward[fnode] = node; backward[node] = -ndeg; }; return 0; } /**************************************************************************** * mmdnum --- multi minimum degree numbering * purpose -- this routine performs the final step in producing * the permutation and inverse permutation vectors in the * multiple elimination version of the minimum degree * ordering algorithm. * input parameters -- * neqns -- number of equations. * qsize -- size of supernodes at elimination. * updated parameters -- * invp -- inverse permutation vector. on input, * if qsize[node] = 0, then node has been merged * into the node -invp[node]; otherwise, * -invp[node] is its inverse labelling. * output parameters -- * perm -- the permutation vector. ****************************************************************************/ void mmdnum(long neqns, idxtype *perm, idxtype *invp, idxtype *qsize) { long father, nextf, node, nqsize, num, root; for ( node = 1; node <= neqns; node++ ) { nqsize = qsize[node]; if ( nqsize <= 0 ) perm[node] = invp[node]; if ( nqsize > 0 ) perm[node] = -invp[node]; }; /* for each node which has been merged, do the following. */ for ( node = 1; node <= neqns; node++ ) { if ( perm[node] <= 0 ) { /* trace the merged tree until one which has not */ /* been merged, call it root. */ father = node; while ( perm[father] <= 0 ) father = - perm[father]; /* number node after root. */ root = father; num = perm[root] + 1; invp[node] = -num; perm[root] = num; /* shorten the merged tree. */ father = node; nextf = - perm[father]; while ( nextf > 0 ) { perm[father] = -root; father = nextf; nextf = -perm[father]; }; }; /* end of -- if ( perm[node] <= 0 ) -- */ }; /* end of -- for ( node = 1; -- */ /* ready to compute perm. */ for ( node = 1; node <= neqns; node++ ) { num = -invp[node]; invp[node] = num; perm[num] = node; }; return; } /**************************************************************************** * mmdupd ---- multiple minimum degree update * purpose -- this routine updates the degrees of nodes after a * multiple elimination step. * input parameters -- * ehead -- the beginning of the list of eliminated nodes * (i.e., newly formed elements). * neqns -- number of equations. * (xadj, adjncy) -- adjacency structure. * delta -- tolerance value for multiple elimination. * maxint -- maximum machine representable (short) integer. * updated parameters -- * mdeg -- new minimum degree after degree update. * (head, forward, backward) -- degree doubly linked structure. * qsize -- size of supernode. * list -- marker vector for degree update. * *tag -- tag value. ****************************************************************************/ void mmdupd(long ehead, long neqns, idxtype *xadj, idxtype *adjncy, long delta, long *mdeg, idxtype *head, idxtype *forward, idxtype *backward, idxtype *qsize, idxtype *list, idxtype *marker, long maxint,long *tag) { long deg, deg0, element, enode, fnode, i, iq2, istop, istart, j, jstop, jstart, link, mdeg0, mtag, nabor, node, q2head, qxhead; mdeg0 = *mdeg + delta; element = ehead; n100: if ( element <= 0 ) return; /* for each of the newly formed element, do the following. */ /* reset tag value if necessary. */ mtag = *tag + mdeg0; if ( mtag >= maxint ) { *tag = 1; for ( i = 1; i <= neqns; i++ ) if ( marker[i] < maxint ) marker[i] = 0; mtag = *tag + mdeg0; }; /* create two linked lists from nodes associated with 'element': */ /* one with two nabors (q2head) in the adjacency structure, and the*/ /* other with more than two nabors (qxhead). also compute 'deg0',*/ /* number of nodes in this element. */ q2head = 0; qxhead = 0; deg0 = 0; link =element; n400: istart = xadj[link]; istop = xadj[link+1] - 1; for ( i = istart; i <= istop; i++ ) { enode = adjncy[i]; link = -enode; if ( enode < 0 ) goto n400; if ( enode == 0 ) break; if ( qsize[enode] != 0 ) { deg0 += qsize[enode]; marker[enode] = mtag; /*'enode' requires a degree update*/ if ( backward[enode] == 0 ) { /* place either in qxhead or q2head list. */ if ( forward[enode] != 2 ) { list[enode] = qxhead; qxhead = enode; } else { list[enode] = q2head; q2head = enode; }; }; }; /* enf of -- if ( qsize[enode] != 0 ) -- */ }; /* end of -- for ( i = istart; -- */ /* for each node in q2 list, do the following. */ enode = q2head; iq2 = 1; n900: if ( enode <= 0 ) goto n1500; if ( backward[enode] != 0 ) goto n2200; (*tag)++; deg = deg0; /* identify the other adjacent element nabor. */ istart = xadj[enode]; nabor = adjncy[istart]; if ( nabor == element ) nabor = adjncy[istart+1]; link = nabor; if ( forward[nabor] >= 0 ) { /* nabor is uneliminated, increase degree count. */ deg += qsize[nabor]; goto n2100; }; /* the nabor is eliminated. for each node in the 2nd element */ /* do the following. */ n1000: istart = xadj[link]; istop = xadj[link+1] - 1; for ( i = istart; i <= istop; i++ ) { node = adjncy[i]; link = -node; if ( node != enode ) { if ( node < 0 ) goto n1000; if ( node == 0 ) goto n2100; if ( qsize[node] != 0 ) { if ( marker[node] < *tag ) { /* 'node' is not yet considered. */ marker[node] = *tag; deg += qsize[node]; } else { if ( backward[node] == 0 ) { if ( forward[node] == 2 ) { /* 'node' is indistinguishable from 'enode'.*/ /* merge them into a new supernode. */ qsize[enode] += qsize[node]; qsize[node] = 0; marker[node] = maxint; forward[node] = -enode; backward[node] = -maxint; } else { /* 'node' is outmacthed by 'enode' */ if (backward[node]==0) backward[node] = -maxint; }; }; /* end of -- if ( backward[node] == 0 ) -- */ }; /* end of -- if ( marker[node] < *tag ) -- */ }; /* end of -- if ( qsize[node] != 0 ) -- */ }; /* end of -- if ( node != enode ) -- */ }; /* end of -- for ( i = istart; -- */ goto n2100; n1500: /* for each 'enode' in the 'qx' list, do the following. */ enode = qxhead; iq2 = 0; n1600: if ( enode <= 0 ) goto n2300; if ( backward[enode] != 0 ) goto n2200; (*tag)++; deg = deg0; /*for each unmarked nabor of 'enode', do the following.*/ istart = xadj[enode]; istop = xadj[enode+1] - 1; for ( i = istart; i <= istop; i++ ) { nabor = adjncy[i]; if ( nabor == 0 ) break; if ( marker[nabor] < *tag ) { marker[nabor] = *tag; link = nabor; if ( forward[nabor] >= 0 ) /*if uneliminated, include it in deg count.*/ deg += qsize[nabor]; else { n1700: /* if eliminated, include unmarked nodes in this*/ /* element into the degree count. */ jstart = xadj[link]; jstop = xadj[link+1] - 1; for ( j = jstart; j <= jstop; j++ ) { node = adjncy[j]; link = -node; if ( node < 0 ) goto n1700; if ( node == 0 ) break; if ( marker[node] < *tag ) { marker[node] = *tag; deg += qsize[node]; }; }; /* end of -- for ( j = jstart; -- */ }; /* end of -- if ( forward[nabor] >= 0 ) -- */ }; /* end of -- if ( marker[nabor] < *tag ) -- */ }; /* end of -- for ( i = istart; -- */ n2100: /* update external degree of 'enode' in degree structure, */ /* and '*mdeg' if necessary. */ deg = deg - qsize[enode] + 1; fnode = head[deg]; forward[enode] = fnode; backward[enode] = -deg; if ( fnode > 0 ) backward[fnode] = enode; head[deg] = enode; if ( deg < *mdeg ) *mdeg = deg; n2200: /* get next enode in current element. */ enode = list[enode]; if ( iq2 == 1 ) goto n900; goto n1600; n2300: /* get next element in the list. */ *tag = mtag; element = list[element]; goto n100; } metis-edf-4.1/Lib/sfm.c0000644000372500037370000010666411115455203015177 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * sfm.c * * This file contains code that implementes an FM-based separator refinement * * Started 8/1/97 * George * * $Id: sfm.c,v 1.1 1998/11/27 17:59:30 karypis Exp $ * */ #include /************************************************************************* * This function performs a node-based FM refinement **************************************************************************/ void FM_2WayNodeRefine(CtrlType *ctrl, GraphType *graph, float ubfactor, long npasses) { long i, ii, j, k, jj, kk, nvtxs, nbnd, nswaps, nmind; idxtype *xadj, *vwgt, *adjncy, *where, *pwgts, *edegrees, *bndind, *bndptr; idxtype *mptr, *mind, *moved, *swaps, *perm; PQueueType parts[2]; NRInfoType *rinfo; long higain, oldgain, mincut, initcut, mincutorder; long pass, to, other, limit; long badmaxpwgt, mindiff, newdiff; long u[2], g[2]; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; rinfo = graph->nrinfo; i = ComputeMaxNodeGain(nvtxs, xadj, adjncy, vwgt); PQueueInit(ctrl, &parts[0], nvtxs, i); PQueueInit(ctrl, &parts[1], nvtxs, i); moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); mptr = idxwspacemalloc(ctrl, nvtxs+1); mind = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] Nv-Nb[%6ld %6ld]. ISep: %6ld\n", pwgts[0], pwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); badmaxpwgt = (long)(ubfactor*(pwgts[0]+pwgts[1]+pwgts[2])/2); for (pass=0; passmincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iioflags&OFLAG_COMPRESS ? amin(5*nbnd, 400) : amin(2*nbnd, 300)); /****************************************************** * Get into the FM loop *******************************************************/ mptr[0] = nmind = 0; mindiff = abs(pwgts[0]-pwgts[1]); to = (pwgts[0] < pwgts[1] ? 0 : 1); for (nswaps=0; nswaps g[1] ? 0 : (g[0] < g[1] ? 1 : pass%2)); /* to = (g[0] > g[1] ? 0 : (g[0] < g[1] ? 1 : (pwgts[0] < pwgts[1] ? 0 : 1))); */ if (pwgts[to]+vwgt[u[to]] > badmaxpwgt) to = (to+1)%2; } else if (u[0] == -1 && u[1] == -1) { break; } else if (u[0] != -1 && pwgts[0]+vwgt[u[0]] <= badmaxpwgt) { to = 0; } else if (u[1] != -1 && pwgts[1]+vwgt[u[1]] <= badmaxpwgt) { to = 1; } else break; other = (to+1)%2; higain = PQueueGetMax(&parts[to]); if (moved[higain] == -1) /* Delete if it was in the separator originally */ PQueueDelete(&parts[other], higain, vwgt[higain]-rinfo[higain].edegrees[to]); ASSERT(bndptr[higain] != -1); pwgts[2] -= (vwgt[higain]-rinfo[higain].edegrees[other]); newdiff = abs(pwgts[to]+vwgt[higain] - (pwgts[other]-rinfo[higain].edegrees[other])); if (pwgts[2] < mincut || (pwgts[2] == mincut && newdiff < mindiff)) { mincut = pwgts[2]; mincutorder = nswaps; mindiff = newdiff; } else { if (nswaps - mincutorder > limit) { pwgts[2] += (vwgt[higain]-rinfo[higain].edegrees[other]); break; /* No further improvement, break out */ } } BNDDelete(nbnd, bndind, bndptr, higain); pwgts[to] += vwgt[higain]; where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; /********************************************************** * Update the degrees of the affected nodes ***********************************************************/ for (j=xadj[higain]; jdbglvl, DBG_MOVEINFO, printf("Moved %6ld to %3ld, Gain: %5ld [%5ld] [%4ld %4ld] \t[%5ld %5ld %5ld]\n", higain, to, g[to], g[other], vwgt[u[to]], vwgt[u[other]], pwgts[0], pwgts[1], pwgts[2])); } /**************************************************************** * Roll back computation *****************************************************************/ for (nswaps--; nswaps>mincutorder; nswaps--) { higain = swaps[nswaps]; ASSERT(CheckNodePartitionParams(graph)); to = where[higain]; other = (to+1)%2; INC_DEC(pwgts[2], pwgts[to], vwgt[higain]); where[higain] = 2; BNDInsert(nbnd, bndind, bndptr, higain); edegrees = rinfo[higain].edegrees; edegrees[0] = edegrees[1] = 0; for (j=xadj[higain]; jdbglvl, DBG_REFINE, printf("\tMinimum sep: %6ld at %5ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, mincutorder, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; if (mincutorder == -1 || mincut >= initcut) break; } PQueueFree(ctrl, &parts[0]); PQueueFree(ctrl, &parts[1]); idxwspacefree(ctrl, nvtxs+1); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs a node-based FM refinement **************************************************************************/ void FM_2WayNodeRefine2(CtrlType *ctrl, GraphType *graph, float ubfactor, long npasses) { long i, ii, j, k, jj, kk, nvtxs, nbnd, nswaps, nmind; idxtype *xadj, *vwgt, *adjncy, *where, *pwgts, *edegrees, *bndind, *bndptr; idxtype *mptr, *mind, *moved, *swaps, *perm; PQueueType parts[2]; NRInfoType *rinfo; long higain, oldgain, mincut, initcut, mincutorder; long pass, to, other, limit; long badmaxpwgt, mindiff, newdiff; long u[2], g[2]; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; rinfo = graph->nrinfo; i = ComputeMaxNodeGain(nvtxs, xadj, adjncy, vwgt); PQueueInit(ctrl, &parts[0], nvtxs, i); PQueueInit(ctrl, &parts[1], nvtxs, i); moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); mptr = idxwspacemalloc(ctrl, nvtxs+1); mind = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] Nv-Nb[%6ld %6ld]. ISep: %6ld\n", pwgts[0], pwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); badmaxpwgt = (long)(ubfactor*(pwgts[0]+pwgts[1]+pwgts[2])/2); for (pass=0; passmincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iioflags&OFLAG_COMPRESS ? amin(5*nbnd, 400) : amin(2*nbnd, 300)); /****************************************************** * Get into the FM loop *******************************************************/ mptr[0] = nmind = 0; mindiff = abs(pwgts[0]-pwgts[1]); to = (pwgts[0] < pwgts[1] ? 0 : 1); for (nswaps=0; nswaps g[1] ? 0 : (g[0] < g[1] ? 1 : pass%2)); /* to = (g[0] > g[1] ? 0 : (g[0] < g[1] ? 1 : (pwgts[0] < pwgts[1] ? 0 : 1))); */ if (pwgts[to]+vwgt[u[to]] > badmaxpwgt) to = (to+1)%2; } else if (u[0] == -1 && u[1] == -1) { break; } else if (u[0] != -1 && pwgts[0]+vwgt[u[0]] <= badmaxpwgt) { to = 0; } else if (u[1] != -1 && pwgts[1]+vwgt[u[1]] <= badmaxpwgt) { to = 1; } else break; other = (to+1)%2; higain = PQueueGetMax(&parts[to]); if (moved[higain] == -1) /* Delete if it was in the separator originally */ PQueueDelete(&parts[other], higain, vwgt[higain]-rinfo[higain].edegrees[to]); ASSERT(bndptr[higain] != -1); pwgts[2] -= (vwgt[higain]-rinfo[higain].edegrees[other]); newdiff = abs(pwgts[to]+vwgt[higain] - (pwgts[other]-rinfo[higain].edegrees[other])); if (pwgts[2] < mincut || (pwgts[2] == mincut && newdiff < mindiff)) { mincut = pwgts[2]; mincutorder = nswaps; mindiff = newdiff; } else { if (nswaps - mincutorder > limit) { pwgts[2] += (vwgt[higain]-rinfo[higain].edegrees[other]); break; /* No further improvement, break out */ } } BNDDelete(nbnd, bndind, bndptr, higain); pwgts[to] += vwgt[higain]; where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; /********************************************************** * Update the degrees of the affected nodes ***********************************************************/ for (j=xadj[higain]; jdbglvl, DBG_MOVEINFO, printf("Moved %6ld to %3ld, Gain: %5ld [%5ld] [%4ld %4ld] \t[%5ld %5ld %5ld]\n", higain, to, g[to], g[other], vwgt[u[to]], vwgt[u[other]], pwgts[0], pwgts[1], pwgts[2])); } /**************************************************************** * Roll back computation *****************************************************************/ for (nswaps--; nswaps>mincutorder; nswaps--) { higain = swaps[nswaps]; ASSERT(CheckNodePartitionParams(graph)); to = where[higain]; other = (to+1)%2; INC_DEC(pwgts[2], pwgts[to], vwgt[higain]); where[higain] = 2; BNDInsert(nbnd, bndind, bndptr, higain); edegrees = rinfo[higain].edegrees; edegrees[0] = edegrees[1] = 0; for (j=xadj[higain]; jdbglvl, DBG_REFINE, printf("\tMinimum sep: %6ld at %5ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, mincutorder, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; if (mincutorder == -1 || mincut >= initcut) break; } PQueueFree(ctrl, &parts[0]); PQueueFree(ctrl, &parts[1]); idxwspacefree(ctrl, nvtxs+1); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs a node-based FM refinement **************************************************************************/ void FM_2WayNodeRefineEqWgt(CtrlType *ctrl, GraphType *graph, long npasses) { long i, ii, j, k, jj, kk, nvtxs, nbnd, nswaps, nmind; idxtype *xadj, *vwgt, *adjncy, *where, *pwgts, *edegrees, *bndind, *bndptr; idxtype *mptr, *mind, *moved, *swaps, *perm; PQueueType parts[2]; NRInfoType *rinfo; long higain, oldgain, mincut, initcut, mincutorder; long pass, to, other, limit; long mindiff, newdiff; long u[2], g[2]; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; rinfo = graph->nrinfo; i = ComputeMaxNodeGain(nvtxs, xadj, adjncy, vwgt); PQueueInit(ctrl, &parts[0], nvtxs, i); PQueueInit(ctrl, &parts[1], nvtxs, i); moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); mptr = idxwspacemalloc(ctrl, nvtxs+1); mind = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] Nv-Nb[%6ld %6ld]. ISep: %6ld\n", pwgts[0], pwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); for (pass=0; passmincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iioflags&OFLAG_COMPRESS ? amin(5*nbnd, 400) : amin(2*nbnd, 300)); /****************************************************** * Get into the FM loop *******************************************************/ mptr[0] = nmind = 0; mindiff = abs(pwgts[0]-pwgts[1]); to = (pwgts[0] < pwgts[1] ? 0 : 1); for (nswaps=0; nswaps g[1] ? 0 : (g[0] < g[1] ? 1 : pass%2)); } } other = (to+1)%2; if ((higain = PQueueGetMax(&parts[to])) == -1) break; if (moved[higain] == -1) /* Delete if it was in the separator originally */ PQueueDelete(&parts[other], higain, vwgt[higain]-rinfo[higain].edegrees[to]); ASSERT(bndptr[higain] != -1); pwgts[2] -= (vwgt[higain]-rinfo[higain].edegrees[other]); newdiff = abs(pwgts[to]+vwgt[higain] - (pwgts[other]-rinfo[higain].edegrees[other])); if (pwgts[2] < mincut || (pwgts[2] == mincut && newdiff < mindiff)) { mincut = pwgts[2]; mincutorder = nswaps; mindiff = newdiff; } else { if (nswaps - mincutorder > limit) { pwgts[2] += (vwgt[higain]-rinfo[higain].edegrees[other]); break; /* No further improvement, break out */ } } BNDDelete(nbnd, bndind, bndptr, higain); pwgts[to] += vwgt[higain]; where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; /********************************************************** * Update the degrees of the affected nodes ***********************************************************/ for (j=xadj[higain]; jdbglvl, DBG_MOVEINFO, printf("Moved %6ld to %3ld, Gain: %5ld [%5ld] [%4ld %4ld] \t[%5ld %5ld %5ld]\n", higain, to, g[to], g[other], vwgt[u[to]], vwgt[u[other]], pwgts[0], pwgts[1], pwgts[2])); } /**************************************************************** * Roll back computation *****************************************************************/ for (nswaps--; nswaps>mincutorder; nswaps--) { higain = swaps[nswaps]; ASSERT(CheckNodePartitionParams(graph)); to = where[higain]; other = (to+1)%2; INC_DEC(pwgts[2], pwgts[to], vwgt[higain]); where[higain] = 2; BNDInsert(nbnd, bndind, bndptr, higain); edegrees = rinfo[higain].edegrees; edegrees[0] = edegrees[1] = 0; for (j=xadj[higain]; jdbglvl, DBG_REFINE, printf("\tMinimum sep: %6ld at %5ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, mincutorder, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; if (mincutorder == -1 || mincut >= initcut) break; } PQueueFree(ctrl, &parts[0]); PQueueFree(ctrl, &parts[1]); idxwspacefree(ctrl, nvtxs+1); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs a node-based FM refinement. This is the * one-way version **************************************************************************/ void FM_2WayNodeRefine_OneSided(CtrlType *ctrl, GraphType *graph, float ubfactor, long npasses) { long i, ii, j, k, jj, kk, nvtxs, nbnd, nswaps, nmind; idxtype *xadj, *vwgt, *adjncy, *where, *pwgts, *edegrees, *bndind, *bndptr; idxtype *mptr, *mind, *swaps, *perm; PQueueType parts; NRInfoType *rinfo; long higain, oldgain, mincut, initcut, mincutorder; long pass, to, other, limit; long badmaxpwgt, mindiff, newdiff; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; rinfo = graph->nrinfo; PQueueInit(ctrl, &parts, nvtxs, ComputeMaxNodeGain(nvtxs, xadj, adjncy, vwgt)); perm = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); mptr = idxwspacemalloc(ctrl, nvtxs); mind = idxwspacemalloc(ctrl, nvtxs+1); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions-N1: [%6ld %6ld] Nv-Nb[%6ld %6ld]. ISep: %6ld\n", pwgts[0], pwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); badmaxpwgt = (long)(ubfactor*(pwgts[0]+pwgts[1]+pwgts[2])/2); to = (pwgts[0] < pwgts[1] ? 1 : 0); for (pass=0; passmincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iioflags&OFLAG_COMPRESS ? amin(5*nbnd, 400) : amin(2*nbnd, 300)); /****************************************************** * Get into the FM loop *******************************************************/ mptr[0] = nmind = 0; mindiff = abs(pwgts[0]-pwgts[1]); for (nswaps=0; nswaps badmaxpwgt) break; /* No point going any further. Balance will be bad */ pwgts[2] -= (vwgt[higain]-rinfo[higain].edegrees[other]); newdiff = abs(pwgts[to]+vwgt[higain] - (pwgts[other]-rinfo[higain].edegrees[other])); if (pwgts[2] < mincut || (pwgts[2] == mincut && newdiff < mindiff)) { mincut = pwgts[2]; mincutorder = nswaps; mindiff = newdiff; } else { if (nswaps - mincutorder > limit) { pwgts[2] += (vwgt[higain]-rinfo[higain].edegrees[other]); break; /* No further improvement, break out */ } } BNDDelete(nbnd, bndind, bndptr, higain); pwgts[to] += vwgt[higain]; where[higain] = to; swaps[nswaps] = higain; /********************************************************** * Update the degrees of the affected nodes ***********************************************************/ for (j=xadj[higain]; jdbglvl, DBG_MOVEINFO, printf("Moved %6ld to %3ld, Gain: %5ld [%5ld] \t[%5ld %5ld %5ld] [%3ld %2ld]\n", higain, to, (vwgt[higain]-rinfo[higain].edegrees[other]), vwgt[higain], pwgts[0], pwgts[1], pwgts[2], nswaps, limit)); } /**************************************************************** * Roll back computation *****************************************************************/ for (nswaps--; nswaps>mincutorder; nswaps--) { higain = swaps[nswaps]; ASSERT(CheckNodePartitionParams(graph)); ASSERT(where[higain] == to); INC_DEC(pwgts[2], pwgts[to], vwgt[higain]); where[higain] = 2; BNDInsert(nbnd, bndind, bndptr, higain); edegrees = rinfo[higain].edegrees; edegrees[0] = edegrees[1] = 0; for (j=xadj[higain]; jdbglvl, DBG_REFINE, printf("\tMinimum sep: %6ld at %5ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, mincutorder, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; if (pass%2 == 1 && (mincutorder == -1 || mincut >= initcut)) break; } PQueueFree(ctrl, &parts); idxwspacefree(ctrl, nvtxs+1); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs a node-based FM refinement **************************************************************************/ void FM_2WayNodeBalance(CtrlType *ctrl, GraphType *graph, float ubfactor) { long i, ii, j, k, jj, kk, nvtxs, nbnd, nswaps; idxtype *xadj, *vwgt, *adjncy, *where, *pwgts, *edegrees, *bndind, *bndptr; idxtype *perm, *moved; PQueueType parts; NRInfoType *rinfo; long higain, oldgain; long pass, to, other; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; rinfo = graph->nrinfo; if (abs(pwgts[0]-pwgts[1]) < (long)((ubfactor-1.0)*(pwgts[0]+pwgts[1]))) return; if (abs(pwgts[0]-pwgts[1]) < 3*idxsum(nvtxs, vwgt)/nvtxs) return; to = (pwgts[0] < pwgts[1] ? 0 : 1); other = (to+1)%2; PQueueInit(ctrl, &parts, nvtxs, ComputeMaxNodeGain(nvtxs, xadj, adjncy, vwgt)); perm = idxwspacemalloc(ctrl, nvtxs); moved = idxset(nvtxs, -1, idxwspacemalloc(ctrl, nvtxs)); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] Nv-Nb[%6ld %6ld]. ISep: %6ld [B]\n", pwgts[0], pwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iidbglvl, DBG_MOVEINFO, printf("Moved %6ld to %3ld, Gain: %3ld, \t[%5ld %5ld %5ld]\n", higain, to, vwgt[higain]-rinfo[higain].edegrees[other], pwgts[0], pwgts[1], pwgts[2])); /********************************************************** * Update the degrees of the affected nodes ***********************************************************/ for (j=xadj[higain]; j pwgts[other]) break; } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\tBalanced sep: %6ld at %4ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", pwgts[2], nswaps, pwgts[0], pwgts[1], nbnd)); graph->mincut = pwgts[2]; graph->nbnd = nbnd; PQueueFree(ctrl, &parts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function computes the maximum possible gain for a vertex **************************************************************************/ long ComputeMaxNodeGain(long nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt) { long i, j, k, max; max = 0; for (j=xadj[0]; j /************************************************************************* * Constants used by mincover algorithm **************************************************************************/ #define INCOL 10 #define INROW 20 #define VC 1 #define SC 2 #define HC 3 #define VR 4 #define SR 5 #define HR 6 /************************************************************************* * This function returns the min-cover of a bipartite graph. * The algorithm used is due to Hopcroft and Karp as modified by Duff etal * adj: the adjacency list of the bipartite graph * asize: the number of vertices in the first part of the bipartite graph * bsize-asize: the number of vertices in the second part * 0..(asize-1) > A vertices * asize..bsize > B vertices * * Returns: * cover : the actual cover (array) * csize : the size of the cover **************************************************************************/ void MinCover(idxtype *xadj, idxtype *adjncy, long asize, long bsize, idxtype *cover, long *csize) { long i, j; idxtype *mate, *queue, *flag, *level, *lst; long fptr, rptr, lstptr; long row, maxlevel, col; mate = idxsmalloc(bsize, -1, "MinCover: mate"); flag = idxmalloc(bsize, "MinCover: flag"); level = idxmalloc(bsize, "MinCover: level"); queue = idxmalloc(bsize, "MinCover: queue"); lst = idxmalloc(bsize, "MinCover: lst"); /* Get a cheap matching */ for (i=0; i /************************************************************************* * This function creates the coarser graph **************************************************************************/ void CreateCoarseGraph(CtrlType *ctrl, GraphType *graph, long cnvtxs, idxtype *match, idxtype *perm) { long i, j, jj, k, kk, l, m, istart, iend, nvtxs, nedges, ncon, cnedges, v, u, mask, dovsize; idxtype *xadj, *vwgt, *vsize, *adjncy, *adjwgt, *adjwgtsum, *auxadj; idxtype *cmap, *htable; idxtype *cxadj, *cvwgt, *cvsize, *cadjncy, *cadjwgt, *cadjwgtsum; float *nvwgt, *cnvwgt; GraphType *cgraph; dovsize = (ctrl->optype == OP_KVMETIS ? 1 : 0); mask = HTLENGTH; if (cnvtxs < 8*mask || graph->nedges/graph->nvtxs > 15) { CreateCoarseGraphNoMask(ctrl, graph, cnvtxs, match, perm); return; } IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ContractTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; vwgt = graph->vwgt; vsize = graph->vsize; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; cmap = graph->cmap; /* Initialize the coarser graph */ cgraph = SetUpCoarseGraph(graph, cnvtxs, dovsize); cxadj = cgraph->xadj; cvwgt = cgraph->vwgt; cvsize = cgraph->vsize; cnvwgt = cgraph->nvwgt; cadjwgtsum = cgraph->adjwgtsum; cadjncy = cgraph->adjncy; cadjwgt = cgraph->adjwgt; iend = xadj[nvtxs]; auxadj = ctrl->wspace.auxcore; memcpy(auxadj, adjncy, iend*sizeof(idxtype)); for (i=0; i= 0 && cadjncy[jj] != cnvtxs) { for (jj=0; jj= 0 && cadjncy[jj] == cnvtxs) { /* This 2nd check is needed for non-adjacent matchings */ cadjwgtsum[cnvtxs] -= cadjwgt[jj]; cadjncy[jj] = cadjncy[--nedges]; cadjwgt[jj] = cadjwgt[nedges]; } } ASSERTP(cadjwgtsum[cnvtxs] == idxsum(nedges, cadjwgt), ("%ld %ld %ld %ld %ld\n", cnvtxs, cadjwgtsum[cnvtxs], idxsum(nedges, cadjwgt), adjwgtsum[u], adjwgtsum[v])); for (j=0; jnedges = cnedges; ReAdjustMemory(graph, cgraph, dovsize); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ContractTmr)); idxwspacefree(ctrl, mask+1); } /************************************************************************* * This function creates the coarser graph **************************************************************************/ void CreateCoarseGraphNoMask(CtrlType *ctrl, GraphType *graph, long cnvtxs, idxtype *match, idxtype *perm) { long i, j, k, m, istart, iend, nvtxs, nedges, ncon, cnedges, v, u, dovsize; idxtype *xadj, *vwgt, *vsize, *adjncy, *adjwgt, *adjwgtsum, *auxadj; idxtype *cmap, *htable; idxtype *cxadj, *cvwgt, *cvsize, *cadjncy, *cadjwgt, *cadjwgtsum; float *nvwgt, *cnvwgt; GraphType *cgraph; dovsize = (ctrl->optype == OP_KVMETIS ? 1 : 0); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ContractTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; vwgt = graph->vwgt; vsize = graph->vsize; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; cmap = graph->cmap; /* Initialize the coarser graph */ cgraph = SetUpCoarseGraph(graph, cnvtxs, dovsize); cxadj = cgraph->xadj; cvwgt = cgraph->vwgt; cvsize = cgraph->vsize; cnvwgt = cgraph->nvwgt; cadjwgtsum = cgraph->adjwgtsum; cadjncy = cgraph->adjncy; cadjwgt = cgraph->adjwgt; htable = idxset(cnvtxs, -1, idxwspacemalloc(ctrl, cnvtxs)); iend = xadj[nvtxs]; auxadj = ctrl->wspace.auxcore; memcpy(auxadj, adjncy, iend*sizeof(idxtype)); for (i=0; inedges = cnedges; ReAdjustMemory(graph, cgraph, dovsize); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ContractTmr)); idxwspacefree(ctrl, cnvtxs); } /************************************************************************* * This function creates the coarser graph **************************************************************************/ void CreateCoarseGraph_NVW(CtrlType *ctrl, GraphType *graph, long cnvtxs, idxtype *match, idxtype *perm) { long i, j, jj, k, kk, l, m, istart, iend, nvtxs, nedges, ncon, cnedges, v, u, mask; idxtype *xadj, *adjncy, *adjwgtsum, *auxadj; idxtype *cmap, *htable; idxtype *cxadj, *cvwgt, *cadjncy, *cadjwgt, *cadjwgtsum; float *nvwgt, *cnvwgt; GraphType *cgraph; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ContractTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgtsum = graph->adjwgtsum; cmap = graph->cmap; /* Initialize the coarser graph */ cgraph = SetUpCoarseGraph(graph, cnvtxs, 0); cxadj = cgraph->xadj; cvwgt = cgraph->vwgt; cnvwgt = cgraph->nvwgt; cadjwgtsum = cgraph->adjwgtsum; cadjncy = cgraph->adjncy; cadjwgt = cgraph->adjwgt; iend = xadj[nvtxs]; auxadj = ctrl->wspace.auxcore; memcpy(auxadj, adjncy, iend*sizeof(idxtype)); for (i=0; i= 0 && cadjncy[jj] != cnvtxs) { for (jj=0; jj= 0 && cadjncy[jj] == cnvtxs) { /* This 2nd check is needed for non-adjacent matchings */ cadjwgtsum[cnvtxs] -= cadjwgt[jj]; cadjncy[jj] = cadjncy[--nedges]; cadjwgt[jj] = cadjwgt[nedges]; } } ASSERTP(cadjwgtsum[cnvtxs] == idxsum(nedges, cadjwgt), ("%ld %ld %ld %ld %ld\n", cnvtxs, cadjwgtsum[cnvtxs], idxsum(nedges, cadjwgt), adjwgtsum[u], adjwgtsum[v])); for (j=0; jnedges = cnedges; ReAdjustMemory(graph, cgraph, 0); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ContractTmr)); idxwspacefree(ctrl, mask+1); } /************************************************************************* * Setup the various arrays for the coarse graph **************************************************************************/ GraphType *SetUpCoarseGraph(GraphType *graph, long cnvtxs, long dovsize) { GraphType *cgraph; cgraph = CreateGraph(); cgraph->nvtxs = cnvtxs; cgraph->ncon = graph->ncon; cgraph->finer = graph; graph->coarser = cgraph; /* Allocate memory for the coarser graph */ if (graph->ncon == 1) { if (dovsize) { cgraph->gdata = idxmalloc(5*cnvtxs+1 + 2*graph->nedges, "SetUpCoarseGraph: gdata"); cgraph->xadj = cgraph->gdata; cgraph->vwgt = cgraph->gdata + cnvtxs+1; cgraph->vsize = cgraph->gdata + 2*cnvtxs+1; cgraph->adjwgtsum = cgraph->gdata + 3*cnvtxs+1; cgraph->cmap = cgraph->gdata + 4*cnvtxs+1; cgraph->adjncy = cgraph->gdata + 5*cnvtxs+1; cgraph->adjwgt = cgraph->gdata + 5*cnvtxs+1 + graph->nedges; } else { cgraph->gdata = idxmalloc(4*cnvtxs+1 + 2*graph->nedges, "SetUpCoarseGraph: gdata"); cgraph->xadj = cgraph->gdata; cgraph->vwgt = cgraph->gdata + cnvtxs+1; cgraph->adjwgtsum = cgraph->gdata + 2*cnvtxs+1; cgraph->cmap = cgraph->gdata + 3*cnvtxs+1; cgraph->adjncy = cgraph->gdata + 4*cnvtxs+1; cgraph->adjwgt = cgraph->gdata + 4*cnvtxs+1 + graph->nedges; } } else { if (dovsize) { cgraph->gdata = idxmalloc(4*cnvtxs+1 + 2*graph->nedges, "SetUpCoarseGraph: gdata"); cgraph->xadj = cgraph->gdata; cgraph->vsize = cgraph->gdata + cnvtxs+1; cgraph->adjwgtsum = cgraph->gdata + 2*cnvtxs+1; cgraph->cmap = cgraph->gdata + 3*cnvtxs+1; cgraph->adjncy = cgraph->gdata + 4*cnvtxs+1; cgraph->adjwgt = cgraph->gdata + 4*cnvtxs+1 + graph->nedges; } else { cgraph->gdata = idxmalloc(3*cnvtxs+1 + 2*graph->nedges, "SetUpCoarseGraph: gdata"); cgraph->xadj = cgraph->gdata; cgraph->adjwgtsum = cgraph->gdata + cnvtxs+1; cgraph->cmap = cgraph->gdata + 2*cnvtxs+1; cgraph->adjncy = cgraph->gdata + 3*cnvtxs+1; cgraph->adjwgt = cgraph->gdata + 3*cnvtxs+1 + graph->nedges; } cgraph->nvwgt = fmalloc(graph->ncon*cnvtxs, "SetUpCoarseGraph: nvwgt"); } return cgraph; } /************************************************************************* * This function re-adjusts the amount of memory that was allocated if * it will lead to significant savings **************************************************************************/ void ReAdjustMemory(GraphType *graph, GraphType *cgraph, long dovsize) { if (cgraph->nedges > 100000 && graph->nedges < 0.7*graph->nedges) { idxcopy(cgraph->nedges, cgraph->adjwgt, cgraph->adjncy+cgraph->nedges); if (graph->ncon == 1) { if (dovsize) { cgraph->gdata = realloc(cgraph->gdata, (5*cgraph->nvtxs+1 + 2*cgraph->nedges)*sizeof(idxtype)); /* Do this, in case everything was copied into new space */ cgraph->xadj = cgraph->gdata; cgraph->vwgt = cgraph->gdata + cgraph->nvtxs+1; cgraph->vsize = cgraph->gdata + 2*cgraph->nvtxs+1; cgraph->adjwgtsum = cgraph->gdata + 3*cgraph->nvtxs+1; cgraph->cmap = cgraph->gdata + 4*cgraph->nvtxs+1; cgraph->adjncy = cgraph->gdata + 5*cgraph->nvtxs+1; cgraph->adjwgt = cgraph->gdata + 5*cgraph->nvtxs+1 + cgraph->nedges; } else { cgraph->gdata = realloc(cgraph->gdata, (4*cgraph->nvtxs+1 + 2*cgraph->nedges)*sizeof(idxtype)); /* Do this, in case everything was copied into new space */ cgraph->xadj = cgraph->gdata; cgraph->vwgt = cgraph->gdata + cgraph->nvtxs+1; cgraph->adjwgtsum = cgraph->gdata + 2*cgraph->nvtxs+1; cgraph->cmap = cgraph->gdata + 3*cgraph->nvtxs+1; cgraph->adjncy = cgraph->gdata + 4*cgraph->nvtxs+1; cgraph->adjwgt = cgraph->gdata + 4*cgraph->nvtxs+1 + cgraph->nedges; } } else { if (dovsize) { cgraph->gdata = realloc(cgraph->gdata, (4*cgraph->nvtxs+1 + 2*cgraph->nedges)*sizeof(idxtype)); /* Do this, in case everything was copied into new space */ cgraph->xadj = cgraph->gdata; cgraph->vsize = cgraph->gdata + cgraph->nvtxs+1; cgraph->adjwgtsum = cgraph->gdata + 2*cgraph->nvtxs+1; cgraph->cmap = cgraph->gdata + 3*cgraph->nvtxs+1; cgraph->adjncy = cgraph->gdata + 4*cgraph->nvtxs+1; cgraph->adjwgt = cgraph->gdata + 4*cgraph->nvtxs+1 + cgraph->nedges; } else { cgraph->gdata = realloc(cgraph->gdata, (3*cgraph->nvtxs+1 + 2*cgraph->nedges)*sizeof(idxtype)); /* Do this, in case everything was copied into new space */ cgraph->xadj = cgraph->gdata; cgraph->adjwgtsum = cgraph->gdata + cgraph->nvtxs+1; cgraph->cmap = cgraph->gdata + 2*cgraph->nvtxs+1; cgraph->adjncy = cgraph->gdata + 3*cgraph->nvtxs+1; cgraph->adjwgt = cgraph->gdata + 3*cgraph->nvtxs+1 + cgraph->nedges; } } } } metis-edf-4.1/Lib/ometis.c0000644000372500037370000005664511115455203015715 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * ometis.c * * This file contains the top level routines for the multilevel recursive * bisection algorithm PMETIS. * * Started 7/24/97 * George * * $Id: ometis.c,v 1.1 1998/11/27 17:59:27 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for OEMETIS **************************************************************************/ void METIS_EdgeND(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { long i, j; GraphType graph; CtrlType ctrl; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_OEMETIS, *nvtxs, 1, xadj, adjncy, NULL, NULL, 0); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = OEMETIS_CTYPE; ctrl.IType = OEMETIS_ITYPE; ctrl.RType = OEMETIS_RTYPE; ctrl.dbglvl = OEMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.oflags = 0; ctrl.pfactor = -1; ctrl.nseps = 1; ctrl.optype = OP_OEMETIS; ctrl.CoarsenTo = 20; ctrl.maxvwgt = 1.5*(idxsum(*nvtxs, graph.vwgt)/ctrl.CoarsenTo); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, 2); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); MlevelNestedDissection(&ctrl, &graph, iperm, ORDER_UNBALANCE_FRACTION, *nvtxs); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); for (i=0; i<*nvtxs; i++) perm[iperm[i]] = i; FreeWorkSpace(&ctrl, &graph); if (*numflag == 1) Change2FNumberingOrder(*nvtxs, xadj, adjncy, perm, iperm); } /************************************************************************* * This function is the entry point for ONCMETIS **************************************************************************/ void METIS_NodeND(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { long i, ii, j, l, wflag, nflag; GraphType graph; CtrlType ctrl; idxtype *cptr, *cind, *piperm; if (*numflag == 1){ Change2CNumbering(*nvtxs, xadj, adjncy); } if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = ONMETIS_CTYPE; ctrl.IType = ONMETIS_ITYPE; ctrl.RType = ONMETIS_RTYPE; ctrl.dbglvl = ONMETIS_DBGLVL; ctrl.oflags = ONMETIS_OFLAGS; ctrl.pfactor = ONMETIS_PFACTOR; ctrl.nseps = ONMETIS_NSEPS; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; ctrl.oflags = options[OPTION_OFLAGS]; ctrl.pfactor = options[OPTION_PFACTOR]; ctrl.nseps = options[OPTION_NSEPS]; } if (ctrl.nseps < 1) ctrl.nseps = 1; ctrl.optype = OP_ONMETIS; ctrl.CoarsenTo = 100; IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); InitRandom(-1); if (ctrl.pfactor > 0) { /*============================================================ * Prune the dense columns ==============================================================*/ piperm = idxmalloc(*nvtxs, "ONMETIS: piperm"); PruneGraph(&ctrl, &graph, *nvtxs, xadj, adjncy, piperm, (float)(0.1*ctrl.pfactor)); } else if (ctrl.oflags&OFLAG_COMPRESS) { /*============================================================ * Compress the graph ==============================================================*/ cptr = idxmalloc(*nvtxs+1, "ONMETIS: cptr"); cind = idxmalloc(*nvtxs, "ONMETIS: cind"); CompressGraph(&ctrl, &graph, *nvtxs, xadj, adjncy, cptr, cind); if (graph.nvtxs >= COMPRESSION_FRACTION*(*nvtxs)) { ctrl.oflags--; /* We actually performed no compression */ GKfree(&cptr, &cind, LTERM); } else if (2*graph.nvtxs < *nvtxs && ctrl.nseps == 1) ctrl.nseps = 2; } else { SetUpGraph(&graph, OP_ONMETIS, *nvtxs, 1, xadj, adjncy, NULL, NULL, 0); } /*============================================================= * Do the nested dissection ordering --=============================================================*/ ctrl.maxvwgt = 1.5*(idxsum(graph.nvtxs, graph.vwgt)/ctrl.CoarsenTo); AllocateWorkSpace(&ctrl, &graph, 2); if (ctrl.oflags&OFLAG_CCMP) MlevelNestedDissectionCC(&ctrl, &graph, iperm, ORDER_UNBALANCE_FRACTION, graph.nvtxs); else MlevelNestedDissection(&ctrl, &graph, iperm, ORDER_UNBALANCE_FRACTION, graph.nvtxs); FreeWorkSpace(&ctrl, &graph); if (ctrl.pfactor > 0) { /* Order any prunned vertices */ if (graph.nvtxs < *nvtxs) { idxcopy(graph.nvtxs, iperm, perm); /* Use perm as an auxiliary array */ for (i=0; invtxs; /* Determine the weights of the partitions */ tvwgt = idxsum(nvtxs, graph->vwgt); tpwgts2[0] = tvwgt/2; tpwgts2[1] = tvwgt-tpwgts2[0]; switch (ctrl->optype) { case OP_OEMETIS: MlevelEdgeBisection(ctrl, graph, tpwgts2, ubfactor); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->SepTmr)); ConstructMinCoverSeparator(ctrl, graph, ubfactor); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->SepTmr)); break; case OP_ONMETIS: MlevelNodeBisectionMultiple(ctrl, graph, tpwgts2, ubfactor); IFSET(ctrl->dbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%6ld %6ld %6ld]\n", graph->nvtxs, graph->pwgts[0], graph->pwgts[1], graph->pwgts[2])); break; } /* Order the nodes in the separator */ nbnd = graph->nbnd; bndind = graph->bndind; label = graph->label; for (i=0; igdata, &graph->rdata, &graph->label, LTERM); if (rgraph.nvtxs > MMDSWITCH) MlevelNestedDissection(ctrl, &rgraph, order, ubfactor, lastvtx); else { MMDOrder(ctrl, &rgraph, order, lastvtx); GKfree(&rgraph.gdata, &rgraph.rdata, &rgraph.label, LTERM); } if (lgraph.nvtxs > MMDSWITCH) MlevelNestedDissection(ctrl, &lgraph, order, ubfactor, lastvtx-rgraph.nvtxs); else { MMDOrder(ctrl, &lgraph, order, lastvtx-rgraph.nvtxs); GKfree(&lgraph.gdata, &lgraph.rdata, &lgraph.label, LTERM); } } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ void MlevelNestedDissectionCC(CtrlType *ctrl, GraphType *graph, idxtype *order, float ubfactor, long lastvtx) { long i, j, nvtxs, nbnd, tvwgt, tpwgts2[2], nsgraphs, ncmps, rnvtxs; idxtype *label, *bndind; idxtype *cptr, *cind; GraphType *sgraphs; nvtxs = graph->nvtxs; /* Determine the weights of the partitions */ tvwgt = idxsum(nvtxs, graph->vwgt); tpwgts2[0] = tvwgt/2; tpwgts2[1] = tvwgt-tpwgts2[0]; MlevelNodeBisectionMultiple(ctrl, graph, tpwgts2, ubfactor); IFSET(ctrl->dbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%6ld %6ld %6ld]\n", graph->nvtxs, graph->pwgts[0], graph->pwgts[1], graph->pwgts[2])); /* Order the nodes in the separator */ nbnd = graph->nbnd; bndind = graph->bndind; label = graph->label; for (i=0; i 2) printf("[%5ld] has %3ld components\n", nvtxs, ncmps); */ sgraphs = (GraphType *)GKmalloc(ncmps*sizeof(GraphType), "MlevelNestedDissectionCC: sgraphs"); nsgraphs = SplitGraphOrderCC(ctrl, graph, sgraphs, ncmps, cptr, cind); GKfree(&cptr, &cind, LTERM); /* Free the memory of the top level graph */ GKfree(&graph->gdata, &graph->rdata, &graph->label, LTERM); /* Go and process the subgraphs */ for (rnvtxs=i=0; inseps == 1 || graph->nvtxs < (ctrl->oflags&OFLAG_COMPRESS ? 1000 : 2000)) { MlevelNodeBisection(ctrl, graph, tpwgts, ubfactor); return; } nvtxs = graph->nvtxs; if (ctrl->oflags&OFLAG_COMPRESS) { /* Multiple separators at the original graph */ bestwhere = idxmalloc(nvtxs, "MlevelNodeBisection2: bestwhere"); mincut = nvtxs; PASS =0; for (i=ctrl->nseps; i>0; i--) { MlevelNodeBisection(ctrl, graph, tpwgts, ubfactor); if (graph->mincut < mincut) { PASS=1; mincut = graph->mincut; idxcopy(nvtxs, graph->where, bestwhere); } GKfree(&graph->rdata, LTERM); if (mincut == 0) break; } /* printf("[%5ld]\n", mincut); */ if( PASS == 1 )/* on est passe dans la copie inverse */ { Allocate2WayNodePartitionMemory(ctrl, graph); idxcopy(nvtxs, bestwhere, graph->where); free(bestwhere); PASS=0; } Compute2WayNodePartitionParams(ctrl, graph); } else { /* Coarsen it a bit */ ctrl->CoarsenTo = nvtxs-1; cgraph = Coarsen2Way(ctrl, graph); cnvtxs = cgraph->nvtxs; bestwhere = idxmalloc(cnvtxs, "MlevelNodeBisection2: bestwhere"); mincut = nvtxs; PASS =0; for (i=ctrl->nseps; i>0; i--) { ctrl->CType += 20; /* This is a hack. Look at coarsen.c */ MlevelNodeBisection(ctrl, cgraph, tpwgts, ubfactor); /* printf("%5ld ", cgraph->mincut); */ if (cgraph->mincut < mincut) { PASS=1; mincut = cgraph->mincut; idxcopy(cnvtxs, cgraph->where, bestwhere); } GKfree(&cgraph->rdata, LTERM); if (mincut == 0) break; } /* printf("[%5ld]\n", mincut); */ if( PASS == 1 )/* on est passe dans la copie inverse */ { Allocate2WayNodePartitionMemory(ctrl, cgraph); idxcopy(cnvtxs, bestwhere, cgraph->where); free(bestwhere); PASS=0; } Compute2WayNodePartitionParams(ctrl, cgraph); Refine2WayNode(ctrl, graph, cgraph, ubfactor); } } /************************************************************************* * This function performs multilevel bisection **************************************************************************/ void MlevelNodeBisection(CtrlType *ctrl, GraphType *graph, long *tpwgts, float ubfactor) { GraphType *cgraph; ctrl->CoarsenTo = graph->nvtxs/8; if (ctrl->CoarsenTo > 100) ctrl->CoarsenTo = 100; else if (ctrl->CoarsenTo < 40) ctrl->CoarsenTo = 40; ctrl->maxvwgt = 1.5*((tpwgts[0]+tpwgts[1])/ctrl->CoarsenTo); cgraph = Coarsen2Way(ctrl, graph); switch (ctrl->IType) { case IPART_GGPKL: Init2WayPartition(ctrl, cgraph, tpwgts, ubfactor); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->SepTmr)); Compute2WayPartitionParams(ctrl, cgraph); ConstructSeparator(ctrl, cgraph, ubfactor); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->SepTmr)); break; case IPART_GGPKLNODE: InitSeparator(ctrl, cgraph, ubfactor); break; } Refine2WayNode(ctrl, graph, cgraph, ubfactor); } /************************************************************************* * This function takes a graph and a bisection and splits it into two graphs. * This function relies on the fact that adjwgt is all equal to 1. **************************************************************************/ void SplitGraphOrder(CtrlType *ctrl, GraphType *graph, GraphType *lgraph, GraphType *rgraph) { long i, ii, j, k, l, istart, iend, mypart, nvtxs, snvtxs[3], snedges[3]; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *adjwgtsum, *label, *where, *bndptr, *bndind; idxtype *sxadj[2], *svwgt[2], *sadjncy[2], *sadjwgt[2], *sadjwgtsum[2], *slabel[2]; idxtype *rename; idxtype *auxadjncy, *auxadjwgt; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->SplitTmr)); nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; label = graph->label; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; ASSERT(bndptr != NULL); rename = idxwspacemalloc(ctrl, nvtxs); snvtxs[0] = snvtxs[1] = snvtxs[2] = snedges[0] = snedges[1] = snedges[2] = 0; for (i=0; ixadj; svwgt[0] = lgraph->vwgt; sadjwgtsum[0] = lgraph->adjwgtsum; sadjncy[0] = lgraph->adjncy; sadjwgt[0] = lgraph->adjwgt; slabel[0] = lgraph->label; SetUpSplitGraph(graph, rgraph, snvtxs[1], snedges[1]); sxadj[1] = rgraph->xadj; svwgt[1] = rgraph->vwgt; sadjwgtsum[1] = rgraph->adjwgtsum; sadjncy[1] = rgraph->adjncy; sadjwgt[1] = rgraph->adjwgt; slabel[1] = rgraph->label; /* Go and use bndptr to also mark the boundary nodes in the two partitions */ for (ii=0; iinbnd; ii++) { i = bndind[ii]; for (j=xadj[i]; jnvtxs = snvtxs[0]; lgraph->nedges = snedges[0]; rgraph->nvtxs = snvtxs[1]; rgraph->nedges = snedges[1]; IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->SplitTmr)); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function uses MMD to order the graph. The vertices are numbered * from lastvtx downwards **************************************************************************/ void MMDOrder(CtrlType *ctrl, GraphType *graph, idxtype *order, long lastvtx) { long i, j, k, nvtxs, nofsub, firstvtx; idxtype *xadj, *adjncy, *label; idxtype *perm, *iperm, *head, *qsize, *list, *marker; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; /* Relabel the vertices so that it starts from 1 */ k = xadj[nvtxs]; for (i=0; ilabel; firstvtx = lastvtx-nvtxs; for (i=0; idbglvl, DBG_TIME, starttimer(ctrl->SplitTmr)); nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; label = graph->label; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; ASSERT(bndptr != NULL); /* Go and use bndptr to also mark the boundary nodes in the two partitions */ for (ii=0; iinbnd; ii++) { i = bndind[ii]; for (j=xadj[i]; jdbglvl, DBG_TIME, stoptimer(ctrl->SplitTmr)); idxwspacefree(ctrl, nvtxs); return ncmps; } metis-edf-4.1/Lib/parmetis.c0000644000372500037370000002723711115455203016234 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * parmetis.c * * This file contains top level routines that are used by ParMETIS * * Started 10/14/97 * George * * $Id: parmetis.c,v 1.1 1998/11/27 17:59:27 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for KMETIS with seed specification * in options[7] **************************************************************************/ void METIS_PartGraphKway2(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { long i; float *tpwgts; tpwgts = fmalloc(*nparts, "KMETIS: tpwgts"); for (i=0; i<*nparts; i++) tpwgts[i] = 1.0/(1.0*(*nparts)); METIS_WPartGraphKway2(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); free(tpwgts); } /************************************************************************* * This function is the entry point for KWMETIS with seed specification * in options[7] **************************************************************************/ void METIS_WPartGraphKway2(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_KMETIS, *nvtxs, 1, xadj, adjncy, vwgt, adjwgt, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = KMETIS_CTYPE; ctrl.IType = KMETIS_ITYPE; ctrl.RType = KMETIS_RTYPE; ctrl.dbglvl = KMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_KMETIS; ctrl.CoarsenTo = 20*(*nparts); ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo); InitRandom(options[7]); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MlevelKWayPartitioning(&ctrl, &graph, *nparts, part, tpwgts, 1.03); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function is the entry point for the node ND code for ParMETIS **************************************************************************/ void METIS_NodeNDP(long nvtxs, idxtype *xadj, idxtype *adjncy, long npes, long *options, idxtype *perm, idxtype *iperm, idxtype *sizes) { long i, ii, j, l, wflag, nflag; GraphType graph; CtrlType ctrl; idxtype *cptr, *cind; if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = ONMETIS_CTYPE; ctrl.IType = ONMETIS_ITYPE; ctrl.RType = ONMETIS_RTYPE; ctrl.dbglvl = ONMETIS_DBGLVL; ctrl.oflags = ONMETIS_OFLAGS; ctrl.pfactor = ONMETIS_PFACTOR; ctrl.nseps = ONMETIS_NSEPS; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; ctrl.oflags = options[OPTION_OFLAGS]; ctrl.pfactor = options[OPTION_PFACTOR]; ctrl.nseps = options[OPTION_NSEPS]; } if (ctrl.nseps < 1) ctrl.nseps = 1; ctrl.optype = OP_ONMETIS; ctrl.CoarsenTo = 100; IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); InitRandom(-1); if (ctrl.oflags&OFLAG_COMPRESS) { /*============================================================ * Compress the graph ==============================================================*/ cptr = idxmalloc(nvtxs+1, "ONMETIS: cptr"); cind = idxmalloc(nvtxs, "ONMETIS: cind"); CompressGraph(&ctrl, &graph, nvtxs, xadj, adjncy, cptr, cind); if (graph.nvtxs >= COMPRESSION_FRACTION*(nvtxs)) { ctrl.oflags--; /* We actually performed no compression */ GKfree(&cptr, &cind, LTERM); } else if (2*graph.nvtxs < nvtxs && ctrl.nseps == 1) ctrl.nseps = 2; } else { SetUpGraph(&graph, OP_ONMETIS, nvtxs, 1, xadj, adjncy, NULL, NULL, 0); } /*============================================================= * Do the nested dissection ordering --=============================================================*/ ctrl.maxvwgt = 1.5*(idxsum(graph.nvtxs, graph.vwgt)/ctrl.CoarsenTo); AllocateWorkSpace(&ctrl, &graph, 2); idxset(2*npes-1, 0, sizes); MlevelNestedDissectionP(&ctrl, &graph, iperm, graph.nvtxs, npes, 0, sizes); FreeWorkSpace(&ctrl, &graph); if (ctrl.oflags&OFLAG_COMPRESS) { /* Uncompress the ordering */ if (graph.nvtxs < COMPRESSION_FRACTION*(nvtxs)) { /* construct perm from iperm */ for (i=0; invtxs; if (nvtxs == 0) { GKfree(&graph->gdata, &graph->rdata, &graph->label, LTERM); return; } /* Determine the weights of the partitions */ tvwgt = idxsum(nvtxs, graph->vwgt); tpwgts2[0] = tvwgt/2; tpwgts2[1] = tvwgt-tpwgts2[0]; if (cpos >= npes-1) ubfactor = ORDER_UNBALANCE_FRACTION; else ubfactor = 1.05; MlevelNodeBisectionMultiple(ctrl, graph, tpwgts2, ubfactor); IFSET(ctrl->dbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%6ld %6ld %6ld]\n", graph->nvtxs, graph->pwgts[0], graph->pwgts[1], graph->pwgts[2])); if (cpos < npes-1) { sizes[2*npes-2-cpos] = graph->pwgts[2]; sizes[2*npes-2-(2*cpos+1)] = graph->pwgts[1]; sizes[2*npes-2-(2*cpos+2)] = graph->pwgts[0]; } /* Order the nodes in the separator */ nbnd = graph->nbnd; bndind = graph->bndind; label = graph->label; for (i=0; igdata, &graph->rdata, &graph->label, LTERM); if (rgraph.nvtxs > MMDSWITCH || 2*cpos+1 < npes-1) MlevelNestedDissectionP(ctrl, &rgraph, order, lastvtx, npes, 2*cpos+1, sizes); else { MMDOrder(ctrl, &rgraph, order, lastvtx); GKfree(&rgraph.gdata, &rgraph.rdata, &rgraph.label, LTERM); } if (lgraph.nvtxs > MMDSWITCH || 2*cpos+2 < npes-1) MlevelNestedDissectionP(ctrl, &lgraph, order, lastvtx-rgraph.nvtxs, npes, 2*cpos+2, sizes); else { MMDOrder(ctrl, &lgraph, order, lastvtx-rgraph.nvtxs); GKfree(&lgraph.gdata, &lgraph.rdata, &lgraph.label, LTERM); } } /************************************************************************* * This function is the entry point for ONWMETIS. It requires weights on the * vertices. It is for the case that the matrix has been pre-compressed. **************************************************************************/ void METIS_NodeComputeSeparator(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *options, long *sepsize, idxtype *part) { long i, j, tvwgt, tpwgts[2]; GraphType graph; CtrlType ctrl; SetUpGraph(&graph, OP_ONMETIS, *nvtxs, 1, xadj, adjncy, vwgt, adjwgt, 3); tvwgt = idxsum(*nvtxs, graph.vwgt); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = ONMETIS_CTYPE; ctrl.IType = ONMETIS_ITYPE; ctrl.RType = ONMETIS_RTYPE; ctrl.dbglvl = ONMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.oflags = 0; ctrl.pfactor = 0; ctrl.nseps = 1; ctrl.optype = OP_ONMETIS; ctrl.CoarsenTo = amin(100, *nvtxs-1); ctrl.maxvwgt = 1.5*tvwgt/ctrl.CoarsenTo; InitRandom(options[7]); AllocateWorkSpace(&ctrl, &graph, 2); /*============================================================ * Perform the bisection *============================================================*/ tpwgts[0] = tvwgt/2; tpwgts[1] = tvwgt-tpwgts[0]; MlevelNodeBisectionMultiple(&ctrl, &graph, tpwgts, 1.05); *sepsize = graph.pwgts[2]; idxcopy(*nvtxs, graph.where, part); GKfree(&graph.gdata, &graph.rdata, &graph.label, LTERM); FreeWorkSpace(&ctrl, &graph); } /************************************************************************* * This function is the entry point for ONWMETIS. It requires weights on the * vertices. It is for the case that the matrix has been pre-compressed. **************************************************************************/ void METIS_EdgeComputeSeparator(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *options, long *sepsize, idxtype *part) { long i, j, tvwgt, tpwgts[2]; GraphType graph; CtrlType ctrl; SetUpGraph(&graph, OP_ONMETIS, *nvtxs, 1, xadj, adjncy, vwgt, adjwgt, 3); tvwgt = idxsum(*nvtxs, graph.vwgt); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = ONMETIS_CTYPE; ctrl.IType = ONMETIS_ITYPE; ctrl.RType = ONMETIS_RTYPE; ctrl.dbglvl = ONMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.oflags = 0; ctrl.pfactor = 0; ctrl.nseps = 1; ctrl.optype = OP_OEMETIS; ctrl.CoarsenTo = amin(100, *nvtxs-1); ctrl.maxvwgt = 1.5*tvwgt/ctrl.CoarsenTo; InitRandom(options[7]); AllocateWorkSpace(&ctrl, &graph, 2); /*============================================================ * Perform the bisection *============================================================*/ tpwgts[0] = tvwgt/2; tpwgts[1] = tvwgt-tpwgts[0]; MlevelEdgeBisection(&ctrl, &graph, tpwgts, 1.05); ConstructMinCoverSeparator(&ctrl, &graph, 1.05); *sepsize = graph.pwgts[2]; idxcopy(*nvtxs, graph.where, part); GKfree(&graph.gdata, &graph.rdata, &graph.label, LTERM); FreeWorkSpace(&ctrl, &graph); } metis-edf-4.1/Lib/kwayfm.c0000644000372500037370000005416211115455203015703 0ustar courtoisastergrp /* * kwayfm.c * * This file contains code that implements the multilevel k-way refinement * * Started 7/28/97 * George * * $Id: kwayfm.c,v 1.1 1998/11/27 17:59:16 karypis Exp $ * */ #include /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Random_KWayEdgeRefine(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses, long ffactor) { long i, ii, iii, j, jj, k, l, pass, nvtxs, nmoves, nbnd, tvwgt, myndegrees; long from, me, to, oldcut, vwgt, gain; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *itpwgts; EDegreeType *myedegrees; RInfoType *myrinfo; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); for (i=0; idbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld]-[%6ld %6ld], Balance: %5.3f, Nv-Nb[%6ld %6ld]. Cut: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut)); for (pass=0; passmincut); oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (nmoves=iii=0; iiinbnd; iii++) { ii = perm[iii]; if (ii >= nbnd) continue; i = bndind[ii]; myrinfo = graph->rinfo+i; if (myrinfo->ed >= myrinfo->id) { /* Total ED is too high */ from = where[i]; vwgt = graph->vwgt[i]; if (myrinfo->id > 0 && pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; j = myrinfo->id; for (k=0; kid. Allow good nodes to move */ if (pwgts[to]+vwgt <= maxwgt[to]+ffactor*gain && gain >= 0) break; } if (k == myndegrees) continue; /* break out if you did not find a candidate */ for (j=k+1; j myedegrees[k].ed && pwgts[to]+vwgt <= maxwgt[to]) || (myedegrees[j].ed == myedegrees[k].ed && itpwgts[myedegrees[k].pid]*pwgts[to] < itpwgts[to]*pwgts[myedegrees[k].pid])) k = j; } to = myedegrees[k].pid; j = 0; if (myedegrees[k].ed-myrinfo->id > 0) j = 1; else if (myedegrees[k].ed-myrinfo->id == 0) { if ((iii&7) == 0 || pwgts[from] >= maxwgt[from] || itpwgts[from]*(pwgts[to]+vwgt) < itpwgts[to]*pwgts[from]) j = 1; } if (j == 0) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; INC_DEC(pwgts[to], pwgts[from], vwgt); myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed-myrinfo->id < 0) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed-myrinfo->id >= 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed-myrinfo->id < 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } nmoves++; } } graph->nbnd = nbnd; IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld, Vol: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut, ComputeVolume(graph, where))); if (graph->mincut == oldcut) break; } idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Greedy_KWayEdgeRefine(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses) { long i, ii, iii, j, jj, k, l, pass, nvtxs, nbnd, tvwgt, myndegrees, oldgain, gain; long from, me, to, oldcut, vwgt; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *moved, *itpwgts; EDegreeType *myedegrees; RInfoType *myrinfo; PQueueType queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); for (i=0; iadjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld]-[%6ld %6ld], Balance: %5.3f, Nv-Nb[%6ld %6ld]. Cut: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut)); for (pass=0; passmincut); PQueueReset(&queue); idxset(nvtxs, -1, moved); oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iirinfo[i].ed - graph->rinfo[i].id); moved[i] = 2; } for (iii=0;;iii++) { if ((i = PQueueGetMax(&queue)) == -1) break; moved[i] = 1; myrinfo = graph->rinfo+i; from = where[i]; vwgt = graph->vwgt[i]; if (pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; j = myrinfo->id; for (k=0; kid. Allow good nodes to move */ if (pwgts[to]+vwgt <= maxwgt[to]+gain && gain >= 0) break; } if (k == myndegrees) continue; /* break out if you did not find a candidate */ for (j=k+1; j myedegrees[k].ed && pwgts[to]+vwgt <= maxwgt[to]) || (myedegrees[j].ed == myedegrees[k].ed && itpwgts[myedegrees[k].pid]*pwgts[to] < itpwgts[to]*pwgts[myedegrees[k].pid])) k = j; } to = myedegrees[k].pid; j = 0; if (myedegrees[k].ed-myrinfo->id > 0) j = 1; else if (myedegrees[k].ed-myrinfo->id == 0) { if ((iii&7) == 0 || pwgts[from] >= maxwgt[from] || itpwgts[from]*(pwgts[to]+vwgt) < itpwgts[to]*pwgts[from]) j = 1; } if (j == 0) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; INC_DEC(pwgts[to], pwgts[from], vwgt); myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed < myrinfo->id) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); oldgain = (myrinfo->ed-myrinfo->id); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed-myrinfo->id >= 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed-myrinfo->id < 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } /* Update the queue */ if (me == to || me == from) { gain = myrinfo->ed-myrinfo->id; if (moved[ii] == 2) { if (gain >= 0) PQueueUpdate(&queue, ii, oldgain, gain); else { PQueueDelete(&queue, ii, oldgain); moved[ii] = -1; } } else if (moved[ii] == -1 && gain >= 0) { PQueueInsert(&queue, ii, gain); moved[ii] = 2; } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } } graph->nbnd = nbnd; IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Cut: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, graph->mincut)); if (graph->mincut == oldcut) break; } PQueueFree(ctrl, &queue); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Greedy_KWayEdgeBalance(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses) { long i, ii, iii, j, jj, k, l, pass, nvtxs, nbnd, tvwgt, myndegrees, oldgain, gain, nmoves; long from, me, to, oldcut, vwgt; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *moved, *itpwgts; EDegreeType *myedegrees; RInfoType *myrinfo; PQueueType queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); for (i=0; iadjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld]-[%6ld %6ld], Balance: %5.3f, Nv-Nb[%6ld %6ld]. Cut: %6ld [B]\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut)); for (pass=0; passmincut); /* Check to see if things are out of balance, given the tolerance */ for (i=0; i maxwgt[i]) break; } if (i == nparts) /* Things are balanced. Return right away */ break; PQueueReset(&queue); idxset(nvtxs, -1, moved); oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iirinfo[i].ed - graph->rinfo[i].id); moved[i] = 2; } nmoves = 0; for (;;) { if ((i = PQueueGetMax(&queue)) == -1) break; moved[i] = 1; myrinfo = graph->rinfo+i; from = where[i]; vwgt = graph->vwgt[i]; if (pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; for (k=0; k minwgt[to] && myedegrees[k].ed-myrinfo->id < 0) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; INC_DEC(pwgts[to], pwgts[from], vwgt); myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed == 0) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); oldgain = (myrinfo->ed-myrinfo->id); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed > 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed == 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } /* Update the queue */ if (me == to || me == from) { gain = myrinfo->ed-myrinfo->id; if (moved[ii] == 2) { if (myrinfo->ed > 0) PQueueUpdate(&queue, ii, oldgain, gain); else { PQueueDelete(&queue, ii, oldgain); moved[ii] = -1; } } else if (moved[ii] == -1 && myrinfo->ed > 0) { PQueueInsert(&queue, ii, gain); moved[ii] = 2; } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } nmoves++; } graph->nbnd = nbnd; IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut)); } PQueueFree(ctrl, &queue); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } metis-edf-4.1/Lib/macros.h0000644000372500037370000001167711115455203015702 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * macros.h * * This file contains macros used in multilevel * * Started 9/25/94 * George * * $Id: macros.h,v 1.1 1998/11/27 17:59:18 karypis Exp $ * */ /************************************************************************* * The following macro returns a random number in the specified range **************************************************************************/ #ifdef __VC__ #define RandomInRange(u) ((rand()>>3)%(u)) #define RandomInRangeFast(u) ((rand()>>3)%(u)) #else #define RandomInRange(u) ((long)(drand48()*((double)(u)))) #define RandomInRangeFast(u) ((rand()>>3)%(u)) #endif #define amax(a, b) ((a) >= (b) ? (a) : (b)) #define amin(a, b) ((a) >= (b) ? (b) : (a)) #define AND(a, b) ((a) < 0 ? ((-(a))&(b)) : ((a)&(b))) #define OR(a, b) ((a) < 0 ? -((-(a))|(b)) : ((a)|(b))) #define XOR(a, b) ((a) < 0 ? -((-(a))^(b)) : ((a)^(b))) #define SWAP(a, b, tmp) \ do {(tmp) = (a); (a) = (b); (b) = (tmp);} while(0) #define INC_DEC(a, b, val) \ do {(a) += (val); (b) -= (val);} while(0) #define scopy(n, a, b) (float *)memcpy((void *)(b), (void *)(a), sizeof(float)*(n)) #define idxcopy(n, a, b) (idxtype *)memcpy((void *)(b), (void *)(a), sizeof(idxtype)*(n)) #define HASHFCT(key, size) ((key)%(size)) /************************************************************************* * Timer macros **************************************************************************/ #define cleartimer(tmr) (tmr = 0.0) #define starttimer(tmr) (tmr -= seconds()) #define stoptimer(tmr) (tmr += seconds()) #define gettimer(tmr) (tmr) /************************************************************************* * This macro is used to handle dbglvl **************************************************************************/ #define IFSET(a, flag, cmd) if ((a)&(flag)) (cmd); /************************************************************************* * These macros are used for debuging memory leaks **************************************************************************/ #ifdef DMALLOC #define imalloc(n, msg) (malloc(sizeof(long)*(n))) #define fmalloc(n, msg) (malloc(sizeof(float)*(n))) #define idxmalloc(n, msg) (malloc(sizeof(idxtype)*(n))) #define ismalloc(n, val, msg) (iset((n), (val), malloc(sizeof(long)*(n)))) #define idxsmalloc(n, val, msg) (idxset((n), (val), malloc(sizeof(idxtype)*(n)))) #define GKmalloc(a, b) (malloc((a))) #endif #ifdef DMALLOC # define MALLOC_CHECK(ptr) \ if (malloc_verify((ptr)) == DMALLOC_VERIFY_ERROR) { \ printf("***MALLOC_CHECK failed on line %ld of file %s: " #ptr "\n", \ __LINE__, __FILE__); \ abort(); \ } #else # define MALLOC_CHECK(ptr) ; #endif /************************************************************************* * This macro converts a length array in a CSR one **************************************************************************/ #define MAKECSR(i, n, a) \ do { \ for (i=1; i0; i--) a[i] = a[i-1]; \ a[0] = 0; \ } while(0) /************************************************************************* * These macros insert and remove nodes from the boundary list **************************************************************************/ #define BNDInsert(nbnd, bndind, bndptr, vtx) \ do { \ ASSERT(bndptr[vtx] == -1); \ bndind[nbnd] = vtx; \ bndptr[vtx] = nbnd++;\ } while(0) #define BNDDelete(nbnd, bndind, bndptr, vtx) \ do { \ ASSERT(bndptr[vtx] != -1); \ bndind[bndptr[vtx]] = bndind[--nbnd]; \ bndptr[bndind[nbnd]] = bndptr[vtx]; \ bndptr[vtx] = -1; \ } while(0) /************************************************************************* * These are debugging macros **************************************************************************/ #ifdef DEBUG # define ASSERT(expr) \ if (!(expr)) { \ printf("***ASSERTION failed on line %ld of file %s: " #expr "\n", \ __LINE__, __FILE__); \ abort(); \ } #else # define ASSERT(expr) ; #endif #ifdef DEBUG # define ASSERTP(expr, msg) \ if (!(expr)) { \ printf("***ASSERTION failed on line %ld of file %s: " #expr "\n", \ __LINE__, __FILE__); \ printf msg ; \ abort(); \ } #else # define ASSERTP(expr, msg) ; #endif metis-edf-4.1/Lib/match.c0000644000372500037370000001622511115455203015477 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * match.c * * This file contains the code that computes matchings and creates the next * level coarse graph. * * Started 7/23/97 * George * * $Id: match.c,v 1.1 1998/11/27 17:59:18 karypis Exp $ * */ #include /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void Match_RM(CtrlType *ctrl, GraphType *graph) { long i, ii, j, nvtxs, cnvtxs, maxidx; idxtype *xadj, *vwgt, *adjncy, *adjwgt; idxtype *match, *cmap, *perm; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, perm, 1); cnvtxs = 0; for (ii=0; iimaxvwgt) { maxidx = adjncy[j]; break; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void Match_RM_NVW(CtrlType *ctrl, GraphType *graph) { long i, ii, j, nvtxs, cnvtxs, maxidx; idxtype *xadj, *adjncy; idxtype *match, *cmap, *perm; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, perm, 1); cnvtxs = 0; for (ii=0; iidbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); CreateCoarseGraph_NVW(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void Match_HEM(CtrlType *ctrl, GraphType *graph) { long i, ii, j, k, nvtxs, cnvtxs, maxidx, maxwgt; idxtype *xadj, *vwgt, *adjncy, *adjwgt; idxtype *match, *cmap, *perm; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, perm, 1); cnvtxs = 0; for (ii=0; iimaxvwgt) { maxwgt = adjwgt[j]; maxidx = adjncy[j]; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void Match_SHEM(CtrlType *ctrl, GraphType *graph) { long i, ii, j, k, nvtxs, cnvtxs, maxidx, maxwgt, avgdegree; idxtype *xadj, *vwgt, *adjncy, *adjwgt; idxtype *match, *cmap, *degrees, *perm, *tperm; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); tperm = idxwspacemalloc(ctrl, nvtxs); degrees = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, tperm, 1); avgdegree = 0.7*(xadj[nvtxs]/nvtxs); for (i=0; i avgdegree ? avgdegree : xadj[i+1]-xadj[i]); BucketSortKeysInc(nvtxs, avgdegree, degrees, tperm, perm); cnvtxs = 0; /* Take care any islands. Islands are matched with non-islands due to coarsening */ for (ii=0; iiii; j--) { k = perm[j]; if (match[k] == UNMATCHED && xadj[k] < xadj[k+1]) { maxidx = k; break; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } /* Continue with normal matching */ for (; iimaxvwgt) { maxwgt = adjwgt[j]; maxidx = adjncy[j]; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); idxwspacefree(ctrl, nvtxs); /* degrees */ idxwspacefree(ctrl, nvtxs); /* tperm */ CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } metis-edf-4.1/Lib/separator.c0000644000372500037370000002100411115455203016372 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * separator.c * * This file contains code for separator extraction * * Started 8/1/97 * George * * $Id: separator.c,v 1.1 1998/11/27 17:59:30 karypis Exp $ * */ #include /************************************************************************* * This function takes a bisection and constructs a minimum weight vertex * separator out of it. It uses the node-based separator refinement for it. **************************************************************************/ void ConstructSeparator(CtrlType *ctrl, GraphType *graph, float ubfactor) { long i, j, k, nvtxs, nbnd; idxtype *xadj, *where, *bndind; nvtxs = graph->nvtxs; xadj = graph->xadj; nbnd = graph->nbnd; bndind = graph->bndind; where = idxcopy(nvtxs, graph->where, idxwspacemalloc(ctrl, nvtxs)); /* Put the nodes in the boundary into the separator */ for (i=0; i 0) /* Ignore islands */ where[j] = 2; } GKfree(&graph->rdata, LTERM); Allocate2WayNodePartitionMemory(ctrl, graph); idxcopy(nvtxs, where, graph->where); idxwspacefree(ctrl, nvtxs); ASSERT(IsSeparable(graph)); Compute2WayNodePartitionParams(ctrl, graph); ASSERT(CheckNodePartitionParams(graph)); FM_2WayNodeRefine(ctrl, graph, ubfactor, 8); ASSERT(IsSeparable(graph)); } /************************************************************************* * This function takes a bisection and constructs a minimum weight vertex * separator out of it. It uses an unweighted minimum-cover algorithm * followed by node-based separator refinement. **************************************************************************/ void ConstructMinCoverSeparator0(CtrlType *ctrl, GraphType *graph, float ubfactor) { long i, ii, j, jj, k, l, nvtxs, nbnd, bnvtxs[3], bnedges[2], csize; idxtype *xadj, *adjncy, *bxadj, *badjncy; idxtype *where, *bndind, *bndptr, *vmap, *ivmap, *cover; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; nbnd = graph->nbnd; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; vmap = idxwspacemalloc(ctrl, nvtxs); ivmap = idxwspacemalloc(ctrl, nbnd); cover = idxwspacemalloc(ctrl, nbnd); if (nbnd > 0) { /* Go through the boundary and determine the sizes of the bipartite graph */ bnvtxs[0] = bnvtxs[1] = bnedges[0] = bnedges[1] = 0; for (i=0; i 0) { bnvtxs[k]++; bnedges[k] += xadj[j+1]-xadj[j]; } } bnvtxs[2] = bnvtxs[0]+bnvtxs[1]; bnvtxs[1] = bnvtxs[0]; bnvtxs[0] = 0; bxadj = idxmalloc(bnvtxs[2]+1, "ConstructMinCoverSeparator: bxadj"); badjncy = idxmalloc(bnedges[0]+bnedges[1]+1, "ConstructMinCoverSeparator: badjncy"); /* Construct the ivmap and vmap */ ASSERT(idxset(nvtxs, -1, vmap) == vmap); for (i=0; i 0) { vmap[j] = bnvtxs[k]; ivmap[bnvtxs[k]++] = j; } } /* OK, go through and put the vertices of each part starting from 0 */ bnvtxs[1] = bnvtxs[0]; bnvtxs[0] = 0; bxadj[0] = l = 0; for (k=0; k<2; k++) { for (ii=0; iibndptr[jj])); badjncy[l++] = vmap[jj]; } } bxadj[++bnvtxs[k]] = l; } } } ASSERT(l <= bnedges[0]+bnedges[1]); MinCover(bxadj, badjncy, bnvtxs[0], bnvtxs[1], cover, &csize); IFSET(ctrl->dbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%5ld %5ld], Cut: %6ld, SS: [%6ld %6ld], Cover: %6ld\n", nvtxs, graph->pwgts[0], graph->pwgts[1], graph->mincut, bnvtxs[0], bnvtxs[1]-bnvtxs[0], csize)); for (i=0; idbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%5ld %5ld], Cut: %6ld, SS: [%6d %6d], Cover: %6d\n", nvtxs, graph->pwgts[0], graph->pwgts[1], graph->mincut, 0, 0, 0)); } idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, graph->nbnd); idxwspacefree(ctrl, graph->nbnd); graph->nbnd = nbnd; ASSERT(IsSeparable(graph)); } /************************************************************************* * This function takes a bisection and constructs a minimum weight vertex * separator out of it. It uses an unweighted minimum-cover algorithm * followed by node-based separator refinement. **************************************************************************/ void ConstructMinCoverSeparator(CtrlType *ctrl, GraphType *graph, float ubfactor) { long i, ii, j, jj, k, l, nvtxs, nbnd, bnvtxs[3], bnedges[2], csize; idxtype *xadj, *adjncy, *bxadj, *badjncy; idxtype *where, *bndind, *bndptr, *vmap, *ivmap, *cover; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; nbnd = graph->nbnd; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; vmap = idxwspacemalloc(ctrl, nvtxs); ivmap = idxwspacemalloc(ctrl, nbnd); cover = idxwspacemalloc(ctrl, nbnd); if (nbnd > 0) { /* Go through the boundary and determine the sizes of the bipartite graph */ bnvtxs[0] = bnvtxs[1] = bnedges[0] = bnedges[1] = 0; for (i=0; i 0) { bnvtxs[k]++; bnedges[k] += xadj[j+1]-xadj[j]; } } bnvtxs[2] = bnvtxs[0]+bnvtxs[1]; bnvtxs[1] = bnvtxs[0]; bnvtxs[0] = 0; bxadj = idxmalloc(bnvtxs[2]+1, "ConstructMinCoverSeparator: bxadj"); badjncy = idxmalloc(bnedges[0]+bnedges[1]+1, "ConstructMinCoverSeparator: badjncy"); /* Construct the ivmap and vmap */ ASSERT(idxset(nvtxs, -1, vmap) == vmap); for (i=0; i 0) { vmap[j] = bnvtxs[k]; ivmap[bnvtxs[k]++] = j; } } /* OK, go through and put the vertices of each part starting from 0 */ bnvtxs[1] = bnvtxs[0]; bnvtxs[0] = 0; bxadj[0] = l = 0; for (k=0; k<2; k++) { for (ii=0; iibndptr[jj])); badjncy[l++] = vmap[jj]; } } bxadj[++bnvtxs[k]] = l; } } } ASSERT(l <= bnedges[0]+bnedges[1]); MinCover(bxadj, badjncy, bnvtxs[0], bnvtxs[1], cover, &csize); IFSET(ctrl->dbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%5ld %5ld], Cut: %6ld, SS: [%6ld %6ld], Cover: %6ld\n", nvtxs, graph->pwgts[0], graph->pwgts[1], graph->mincut, bnvtxs[0], bnvtxs[1]-bnvtxs[0], csize)); for (i=0; idbglvl, DBG_SEPINFO, printf("Nvtxs: %6ld, [%5ld %5ld], Cut: %6ld, SS: [%6d %6d], Cover: %6d\n", nvtxs, graph->pwgts[0], graph->pwgts[1], graph->mincut, 0, 0, 0)); } /* Prepare to refine the vertex separator */ idxcopy(nvtxs, graph->where, vmap); GKfree(&graph->rdata, LTERM); Allocate2WayNodePartitionMemory(ctrl, graph); idxcopy(nvtxs, vmap, graph->where); idxwspacefree(ctrl, nvtxs+2*graph->nbnd); Compute2WayNodePartitionParams(ctrl, graph); ASSERT(CheckNodePartitionParams(graph)); FM_2WayNodeRefine_OneSided(ctrl, graph, ubfactor, 6); ASSERT(IsSeparable(graph)); } metis-edf-4.1/Lib/estmem.c0000644000372500037370000001050111115455203015664 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * estmem.c * * This file contains code for estimating the amount of memory required by * the various routines in METIS * * Started 11/4/97 * George * * $Id: estmem.c,v 1.1 1998/11/27 17:59:13 karypis Exp $ * */ #include /************************************************************************* * This function computes how much memory will be required by the various * routines in METIS **************************************************************************/ void METIS_EstimateMemory(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *optype, long *nbytes) { long i, j, k, nedges, nlevels; float vfraction, efraction, vmult, emult; long coresize, gdata, rdata; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); nedges = xadj[*nvtxs]; InitRandom(-1); EstimateCFraction(*nvtxs, xadj, adjncy, &vfraction, &efraction); /* Estimate the amount of memory for coresize */ if (*optype == 2) coresize = nedges; else coresize = 0; coresize += nedges + 11*(*nvtxs) + 4*1024 + 2*(NEG_GAINSPAN+PLUS_GAINSPAN+1)*(sizeof(ListNodeType *)/sizeof(idxtype)); coresize += 2*(*nvtxs); /* add some more fore other vectors */ gdata = nedges; /* Assume that the user does not pass weights */ nlevels = (long)(log(100.0/(*nvtxs))/log(vfraction) + .5); vmult = 0.5 + (1.0 - pow(vfraction, nlevels))/(1.0 - vfraction); emult = 1.0 + (1.0 - pow(efraction, nlevels+1))/(1.0 - efraction); gdata += vmult*4*(*nvtxs) + emult*2*nedges; if ((vmult-1.0)*4*(*nvtxs) + (emult-1.0)*2*nedges < 5*(*nvtxs)) rdata = 0; else rdata = 5*(*nvtxs); *nbytes = sizeof(idxtype)*(coresize+gdata+rdata+(*nvtxs)); if (*numflag == 1) Change2FNumbering2(*nvtxs, xadj, adjncy); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void EstimateCFraction(long nvtxs, idxtype *xadj, idxtype *adjncy, float *vfraction, float *efraction) { long i, ii, j, cnvtxs, cnedges, maxidx; idxtype *match, *cmap, *perm; cmap = idxmalloc(nvtxs, "cmap"); match = idxsmalloc(nvtxs, UNMATCHED, "match"); perm = idxmalloc(nvtxs, "perm"); RandomPermute(nvtxs, perm, 1); cnvtxs = 0; for (ii=0; ii /************************************************************************* * This function is the entry point of refinement **************************************************************************/ void MocRefine2Way2(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, float *tpwgts, float *ubvec) { IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); /* Compute the parameters of the coarsest graph */ MocCompute2WayPartitionParams(ctrl, graph); for (;;) { ASSERT(CheckBnd(graph)); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); switch (ctrl->RType) { case RTYPE_FM: MocBalance2Way2(ctrl, graph, tpwgts, ubvec); MocFM_2WayEdgeRefine2(ctrl, graph, tpwgts, ubvec, 8); break; default: errexit("Unknown refinement type: %ld\n", ctrl->RType); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); MocProject2WayPartition(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } metis-edf-4.1/Lib/mkmetis.c0000644000372500037370000000763511302755374016073 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mkmetis.c * * This file contains the top level routines for the multilevel k-way partitioning * algorithm KMETIS. * * Started 7/28/97 * George * * $Id: mkmetis.c,v 1.2 1998/11/27 18:25:09 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for KWMETIS **************************************************************************/ void METIS_mCPartGraphKway(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *rubvec, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_KMETIS, *nvtxs, *ncon, xadj, adjncy, vwgt, adjwgt, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = McKMETIS_CTYPE; ctrl.IType = McKMETIS_ITYPE; ctrl.RType = McKMETIS_RTYPE; ctrl.dbglvl = McKMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_KMETIS; ctrl.CoarsenTo = amax((*nvtxs)/(20*ilog2(*nparts)), 30*(*nparts)); ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MCMlevelKWayPartitioning(&ctrl, &graph, *nparts, part, rubvec); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ long MCMlevelKWayPartitioning(CtrlType *ctrl, GraphType *graph, long nparts, idxtype *part, float *rubvec) { long i, j, nvtxs; GraphType *cgraph; long options[10], edgecut; cgraph = MCCoarsen2Way(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); MocAllocateKWayPartitionMemory(ctrl, cgraph, nparts); options[0] = 1; options[OPTION_CTYPE] = MATCH_SBHEM_INFNORM; options[OPTION_ITYPE] = IPART_RANDOM; options[OPTION_RTYPE] = RTYPE_FM; options[OPTION_DBGLVL] = 0; /* Determine what you will use as the initial partitioner, based on tolerances */ for (i=0; incon; i++) { if (rubvec[i] > 1.2) break; } if (i == graph->ncon) METIS_mCPartGraphRecursiveInternal(&cgraph->nvtxs, &cgraph->ncon, cgraph->xadj, cgraph->adjncy, cgraph->nvwgt, cgraph->adjwgt, &nparts, options, &edgecut, cgraph->where); else METIS_mCHPartGraphRecursiveInternal(&cgraph->nvtxs, &cgraph->ncon, cgraph->xadj, cgraph->adjncy, cgraph->nvwgt, cgraph->adjwgt, &nparts, rubvec, options, &edgecut, cgraph->where); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial %ld-way partitioning cut: %ld\n", nparts, edgecut)); IFSET(ctrl->dbglvl, DBG_KWAYPINFO, ComputePartitionInfo(cgraph, nparts, cgraph->where)); MocRefineKWayHorizontal(ctrl, graph, cgraph, nparts, rubvec); idxcopy(graph->nvtxs, graph->where, part); GKfree(&graph->nvwgt, &graph->npwgts, &graph->gdata, &graph->rdata, LTERM); return graph->mincut; } metis-edf-4.1/Lib/metis.h0000644000372500037370000000117311115455203015525 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * metis.h * * This file includes all necessary header files * * Started 8/27/94 * George * * $Id: metis.h,v 1.1 1998/11/27 17:59:21 karypis Exp $ */ #include #ifdef __STDC__ #include #else #include #endif #include #include #include #include #include #include #ifdef DMALLOC #include #endif #include #include #include #include #include metis-edf-4.1/Lib/compress.c0000644000372500037370000001707511115455203016242 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * compress.c * * This file contains code for compressing nodes with identical adjacency * structure and for prunning dense columns * * Started 9/17/97 * George * * $Id: compress.c,v 1.1 1998/11/27 17:59:12 karypis Exp $ */ #include /************************************************************************* * This function compresses a graph by merging identical vertices * The compression should lead to at least 10% reduction. **************************************************************************/ void CompressGraph(CtrlType *ctrl, GraphType *graph, long nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *cptr, idxtype *cind) { long i, ii, iii, j, jj, k, l, cnvtxs, cnedges; idxtype *cxadj, *cadjncy, *cvwgt, *mark, *map; KeyValueType *keys; mark = idxsmalloc(nvtxs, -1, "CompressGraph: mark"); map = idxsmalloc(nvtxs, -1, "CompressGraph: map"); keys = (KeyValueType *)GKmalloc(nvtxs*sizeof(KeyValueType), "CompressGraph: keys"); /* Compute a key for each adjacency list */ for (i=0; i= COMPRESSION_FRACTION*nvtxs) { graph->nvtxs = nvtxs; graph->nedges = xadj[nvtxs]; graph->ncon = 1; graph->xadj = xadj; graph->adjncy = adjncy; graph->gdata = idxmalloc(3*nvtxs+graph->nedges, "CompressGraph: gdata"); graph->vwgt = graph->gdata; graph->adjwgtsum = graph->gdata+nvtxs; graph->cmap = graph->gdata+2*nvtxs; graph->adjwgt = graph->gdata+3*nvtxs; idxset(nvtxs, 1, graph->vwgt); idxset(graph->nedges, 1, graph->adjwgt); for (i=0; iadjwgtsum[i] = xadj[i+1]-xadj[i]; graph->label = idxmalloc(nvtxs, "CompressGraph: label"); for (i=0; ilabel[i] = i; } else { /* Ok, form the compressed graph */ cnedges = 0; for (i=0; igdata = idxmalloc(4*cnvtxs+1 + 2*cnedges, "CompressGraph: gdata"); cxadj = graph->xadj = graph->gdata; cvwgt = graph->vwgt = graph->gdata + cnvtxs+1; graph->adjwgtsum = graph->gdata + 2*cnvtxs+1; graph->cmap = graph->gdata + 3*cnvtxs+1; cadjncy = graph->adjncy = graph->gdata + 4*cnvtxs+1; graph->adjwgt = graph->gdata + 4*cnvtxs+1 + cnedges; /* Now go and compress the graph */ idxset(nvtxs, -1, mark); l = cxadj[0] = 0; for (i=0; invtxs = cnvtxs; graph->nedges = l; graph->ncon = 1; idxset(graph->nedges, 1, graph->adjwgt); for (i=0; iadjwgtsum[i] = cxadj[i+1]-cxadj[i]; graph->label = idxmalloc(cnvtxs, "CompressGraph: label"); for (i=0; ilabel[i] = i; } GKfree(&keys, &map, &mark, LTERM); } /************************************************************************* * This function prunes all the vertices in a graph with degree greater * than factor*average **************************************************************************/ void PruneGraph(CtrlType *ctrl, GraphType *graph, long nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *iperm, float factor) { long i, j, k, l, nlarge, pnvtxs, pnedges; idxtype *pxadj, *padjncy, *padjwgt, *pvwgt; idxtype *perm; perm = idxmalloc(nvtxs, "PruneGraph: perm"); factor = factor*xadj[nvtxs]/nvtxs; pnvtxs = pnedges = nlarge = 0; for (i=0; invtxs = nvtxs; graph->nedges = xadj[nvtxs]; graph->ncon = 1; graph->xadj = xadj; graph->adjncy = adjncy; graph->gdata = idxmalloc(3*nvtxs+graph->nedges, "CompressGraph: gdata"); graph->vwgt = graph->gdata; graph->adjwgtsum = graph->gdata+nvtxs; graph->cmap = graph->gdata+2*nvtxs; graph->adjwgt = graph->gdata+3*nvtxs; idxset(nvtxs, 1, graph->vwgt); idxset(graph->nedges, 1, graph->adjwgt); for (i=0; iadjwgtsum[i] = xadj[i+1]-xadj[i]; graph->label = idxmalloc(nvtxs, "CompressGraph: label"); for (i=0; ilabel[i] = i; } else { /* Prune the graph */ /* Allocate memory for the compressed graph*/ graph->gdata = idxmalloc(4*pnvtxs+1 + 2*pnedges, "PruneGraph: gdata"); pxadj = graph->xadj = graph->gdata; graph->vwgt = graph->gdata + pnvtxs+1; graph->adjwgtsum = graph->gdata + 2*pnvtxs+1; graph->cmap = graph->gdata + 3*pnvtxs+1; padjncy = graph->adjncy = graph->gdata + 4*pnvtxs+1; graph->adjwgt = graph->gdata + 4*pnvtxs+1 + pnedges; pxadj[0] = pnedges = l = 0; for (i=0; invtxs = pnvtxs; graph->nedges = pnedges; graph->ncon = 1; idxset(pnvtxs, 1, graph->vwgt); idxset(pnedges, 1, graph->adjwgt); for (i=0; iadjwgtsum[i] = pxadj[i+1]-pxadj[i]; graph->label = idxmalloc(pnvtxs, "CompressGraph: label"); for (i=0; ilabel[i] = i; } free(perm); } metis-edf-4.1/Lib/minitpart2.c0000644000372500037370000002641311115455203016474 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * minitpart2.c * * This file contains code that performs the initial partition of the * coarsest graph * * Started 7/23/97 * George * * $Id: minitpart2.c,v 1.1 1998/11/27 17:59:23 karypis Exp $ * */ #include /************************************************************************* * This function computes the initial bisection of the coarsest graph **************************************************************************/ void MocInit2WayPartition2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long dbglvl; dbglvl = ctrl->dbglvl; IFSET(ctrl->dbglvl, DBG_REFINE, ctrl->dbglvl -= DBG_REFINE); IFSET(ctrl->dbglvl, DBG_MOVEINFO, ctrl->dbglvl -= DBG_MOVEINFO); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); switch (ctrl->IType) { case IPART_GGPKL: case IPART_RANDOM: MocGrowBisection2(ctrl, graph, tpwgts, ubvec); break; case 3: MocGrowBisectionNew2(ctrl, graph, tpwgts, ubvec); break; default: errexit("Unknown initial partition type: %ld\n", ctrl->IType); } IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial Cut: %ld\n", graph->mincut)); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); ctrl->dbglvl = dbglvl; } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void MocGrowBisection2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long i, j, k, nvtxs, ncon, from, bestcut, mincut, nbfs; idxtype *bestwhere, *where; nvtxs = graph->nvtxs; MocAllocate2WayPartitionMemory(ctrl, graph); where = graph->where; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); nbfs = 2*(nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = idxsum(graph->nedges, graph->adjwgt); for (; nbfs>0; nbfs--) { idxset(nvtxs, 1, where); where[RandomInRange(nvtxs)] = 0; MocCompute2WayPartitionParams(ctrl, graph); MocBalance2Way2(ctrl, graph, tpwgts, ubvec); MocFM_2WayEdgeRefine2(ctrl, graph, tpwgts, ubvec, 4); MocBalance2Way2(ctrl, graph, tpwgts, ubvec); MocFM_2WayEdgeRefine2(ctrl, graph, tpwgts, ubvec, 4); if (bestcut > graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); if (bestcut == 0) break; } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); GKfree(&bestwhere, LTERM); } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void MocGrowBisectionNew2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long i, j, k, nvtxs, ncon, from, bestcut, mincut, nbfs; idxtype *bestwhere, *where; nvtxs = graph->nvtxs; MocAllocate2WayPartitionMemory(ctrl, graph); where = graph->where; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); nbfs = 2*(nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = idxsum(graph->nedges, graph->adjwgt); for (; nbfs>0; nbfs--) { idxset(nvtxs, 1, where); where[RandomInRange(nvtxs)] = 0; MocCompute2WayPartitionParams(ctrl, graph); MocInit2WayBalance2(ctrl, graph, tpwgts, ubvec); MocFM_2WayEdgeRefine2(ctrl, graph, tpwgts, ubvec, 4); if (bestcut > graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); if (bestcut == 0) break; } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); GKfree(&bestwhere, LTERM); } /************************************************************************* * This function balances two partitions by moving the highest gain * (including negative gain) vertices to the other domain. * It is used only when tha unbalance is due to non contigous * subdomains. That is, the are no boundary vertices. * It moves vertices from the domain that is overweight to the one that * is underweight. **************************************************************************/ void MocInit2WayBalance2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long i, ii, j, k, l, kwgt, nvtxs, nbnd, ncon, nswaps, from, to, pass, me, cnum, tmp, imin; idxtype *xadj, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind; idxtype *moved, *perm, *qnum; float *nvwgt, *npwgts, minwgt; PQueueType parts[MAXNCON][2]; long higain, oldgain, mincut; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; nvwgt = graph->nvwgt; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; npwgts = graph->npwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); qnum = idxwspacemalloc(ctrl, nvtxs); /* This is called for initial partitioning so we know from where to pick nodes */ from = 1; to = (from+1)%2; if (ctrl->dbglvl&DBG_REFINE) { printf("Parts: ["); for (l=0; lnvtxs, graph->nbnd, graph->mincut, ComputeLoadImbalance(ncon, 2, npwgts, tpwgts)); } for (i=0; imincut); ASSERT(CheckBnd(graph)); ASSERT(CheckGraph(graph)); /* Compute the queues in which each vertex will be assigned to */ for (i=0; i 0) PQueueInsert(&parts[qnum[i]][0], i, ed[i]-id[i]); else PQueueInsert(&parts[qnum[i]][1], i, ed[i]-id[i]); } } /* for (i=0; imincut; nbnd = graph->nbnd; for (nswaps=0; nswaps minwgt) break; if ((cnum = SelectQueueOneWay2(ncon, npwgts+to*ncon, parts, ubvec)) == -1) break; if ((higain = PQueueGetMax(&parts[cnum][0])) == -1) higain = PQueueGetMax(&parts[cnum][1]); mincut -= (ed[higain]-id[higain]); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+from*ncon, 1); where[higain] = to; moved[higain] = nswaps; if (ctrl->dbglvl&DBG_MOVEINFO) { printf("Moved %6ld from %ld(%ld). [%5ld] %5ld, NPwgts: ", higain, from, cnum, ed[higain]-id[higain], mincut); for (l=0; l 0) printf("\t Pulled from the interior!\n"); } /************************************************************** * Update the id[i]/ed[i] values of the affected nodes ***************************************************************/ SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0 && bndptr[k] == -1) { /* It moves in boundary */ PQueueDelete(&parts[qnum[k]][1], k, oldgain); PQueueInsert(&parts[qnum[k]][0], k, ed[k]-id[k]); } else { /* It must be in the boundary already */ if (bndptr[k] == -1) printf("What you thought was wrong!\n"); PQueueUpdate(&parts[qnum[k]][0], k, oldgain, ed[k]-id[k]); } } /* Update its boundary information */ if (ed[k] == 0 && bndptr[k] != -1) BNDDelete(nbnd, bndind, bndptr, k); else if (ed[k] > 0 && bndptr[k] == -1) BNDInsert(nbnd, bndind, bndptr, k); } ASSERTP(ComputeCut(graph, where) == mincut, ("%ld != %ld\n", ComputeCut(graph, where), mincut)); } if (ctrl->dbglvl&DBG_REFINE) { printf("\tMincut: %6ld, NBND: %6ld, NPwgts: ", mincut, nbnd); for (l=0; lmincut = mincut; graph->nbnd = nbnd; for (i=0; imincut); ASSERT(CheckBnd(graph)); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function selects the partition number and the queue from which * we will move vertices out **************************************************************************/ long SelectQueueOneWay2(long ncon, float *pto, PQueueType queues[MAXNCON][2], float *ubvec) { long i, cnum=-1, imax, maxgain; float max=0.0; float twgt[MAXNCON]; for (i=0; i 0 || PQueueGetSize(&queues[i][1]) > 0)) { max = twgt[i]; cnum = i; } } if (max > 1) return cnum; /* optimize of cut */ maxgain = -10000000; for (i=0; i 0 && PQueueGetKey(&queues[i][0]) > maxgain) { maxgain = PQueueGetKey(&queues[i][0]); cnum = i; } } return cnum; } metis-edf-4.1/Lib/mpmetis.c0000644000372500037370000002777411115455203016074 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mpmetis.c * * This file contains the top level routines for the multilevel recursive * bisection algorithm PMETIS. * * Started 7/24/97 * George * * $Id: mpmetis.c,v 1.4 1998/11/30 14:50:44 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for PWMETIS that accepts exact weights * for the target partitions **************************************************************************/ void METIS_mCPartGraphRecursive(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_PMETIS, *nvtxs, *ncon, xadj, adjncy, vwgt, adjwgt, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = McPMETIS_CTYPE; ctrl.IType = McPMETIS_ITYPE; ctrl.RType = McPMETIS_RTYPE; ctrl.dbglvl = McPMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_PMETIS; ctrl.CoarsenTo = 100; ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MCMlevelRecursiveBisection(&ctrl, &graph, *nparts, part, 1.000, 0); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function is the entry point for PWMETIS that accepts exact weights * for the target partitions **************************************************************************/ void METIS_mCHPartGraphRecursive(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *ubvec, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; float *myubvec; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_PMETIS, *nvtxs, *ncon, xadj, adjncy, vwgt, adjwgt, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = PMETIS_CTYPE; ctrl.IType = PMETIS_ITYPE; ctrl.RType = PMETIS_RTYPE; ctrl.dbglvl = PMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_PMETIS; ctrl.CoarsenTo = 100; ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo); myubvec = fmalloc(*ncon, "PWMETIS: mytpwgts"); scopy(*ncon, ubvec, myubvec); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MCHMlevelRecursiveBisection(&ctrl, &graph, *nparts, part, myubvec, 0); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); GKfree(&myubvec, LTERM); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function is the entry point for PWMETIS that accepts exact weights * for the target partitions **************************************************************************/ void METIS_mCPartGraphRecursiveInternal(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, float *nvwgt, idxtype *adjwgt, long *nparts, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; SetUpGraph2(&graph, *nvtxs, *ncon, xadj, adjncy, nvwgt, adjwgt); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = PMETIS_CTYPE; ctrl.IType = PMETIS_ITYPE; ctrl.RType = PMETIS_RTYPE; ctrl.dbglvl = PMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_PMETIS; ctrl.CoarsenTo = 100; ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MCMlevelRecursiveBisection(&ctrl, &graph, *nparts, part, 1.000, 0); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); } /************************************************************************* * This function is the entry point for PWMETIS that accepts exact weights * for the target partitions **************************************************************************/ void METIS_mCHPartGraphRecursiveInternal(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, float *nvwgt, idxtype *adjwgt, long *nparts, float *ubvec, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; float *myubvec; SetUpGraph2(&graph, *nvtxs, *ncon, xadj, adjncy, nvwgt, adjwgt); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = PMETIS_CTYPE; ctrl.IType = PMETIS_ITYPE; ctrl.RType = PMETIS_RTYPE; ctrl.dbglvl = PMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_PMETIS; ctrl.CoarsenTo = 100; ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo); myubvec = fmalloc(*ncon, "PWMETIS: mytpwgts"); scopy(*ncon, ubvec, myubvec); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MCHMlevelRecursiveBisection(&ctrl, &graph, *nparts, part, myubvec, 0); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); GKfree(&myubvec, LTERM); } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ long MCMlevelRecursiveBisection(CtrlType *ctrl, GraphType *graph, long nparts, idxtype *part, float ubfactor, long fpart) { long i, j, nvtxs, ncon, cut; idxtype *label, *where; GraphType lgraph, rgraph; float tpwgts[2]; nvtxs = graph->nvtxs; if (nvtxs == 0) { printf("\t***Cannot bisect a graph with 0 vertices!\n\t***You are trying to partition a graph into too many parts!\n"); return 0; } /* Determine the weights of the partitions */ tpwgts[0] = 1.0*(nparts>>1)/(1.0*nparts); tpwgts[1] = 1.0 - tpwgts[0]; MCMlevelEdgeBisection(ctrl, graph, tpwgts, ubfactor); cut = graph->mincut; label = graph->label; where = graph->where; for (i=0; i 2) SplitGraphPart(ctrl, graph, &lgraph, &rgraph); /* Free the memory of the top level graph */ GKfree(&graph->gdata, &graph->nvwgt, &graph->rdata, &graph->npwgts, &graph->label, LTERM); /* Do the recursive call */ if (nparts > 3) { cut += MCMlevelRecursiveBisection(ctrl, &lgraph, nparts/2, part, ubfactor, fpart); cut += MCMlevelRecursiveBisection(ctrl, &rgraph, nparts-nparts/2, part, ubfactor, fpart+nparts/2); } else if (nparts == 3) { cut += MCMlevelRecursiveBisection(ctrl, &rgraph, nparts-nparts/2, part, ubfactor, fpart+nparts/2); GKfree(&lgraph.gdata, &lgraph.nvwgt, &lgraph.label, LTERM); } return cut; } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ long MCHMlevelRecursiveBisection(CtrlType *ctrl, GraphType *graph, long nparts, idxtype *part, float *ubvec, long fpart) { long i, j, nvtxs, ncon, cut; idxtype *label, *where; GraphType lgraph, rgraph; float tpwgts[2], *npwgts, *lubvec, *rubvec; lubvec = rubvec = NULL; nvtxs = graph->nvtxs; ncon = graph->ncon; if (nvtxs == 0) { printf("\t***Cannot bisect a graph with 0 vertices!\n\t***You are trying to partition a graph into too many parts!\n"); return 0; } /* Determine the weights of the partitions */ tpwgts[0] = 1.0*(nparts>>1)/(1.0*nparts); tpwgts[1] = 1.0 - tpwgts[0]; /* For now, relax at the coarsest level only */ if (nparts == 2) MCHMlevelEdgeBisection(ctrl, graph, tpwgts, ubvec); else MCMlevelEdgeBisection(ctrl, graph, tpwgts, 1.000); cut = graph->mincut; label = graph->label; where = graph->where; for (i=0; i 2) { /* Adjust the ubvecs before the split */ npwgts = graph->npwgts; lubvec = fmalloc(ncon, "MCHMlevelRecursiveBisection"); rubvec = fmalloc(ncon, "MCHMlevelRecursiveBisection"); for (i=0; igdata, &graph->nvwgt, &graph->rdata, &graph->npwgts, &graph->label, LTERM); /* Do the recursive call */ if (nparts > 3) { cut += MCHMlevelRecursiveBisection(ctrl, &lgraph, nparts/2, part, lubvec, fpart); cut += MCHMlevelRecursiveBisection(ctrl, &rgraph, nparts-nparts/2, part, rubvec, fpart+nparts/2); } else if (nparts == 3) { cut += MCHMlevelRecursiveBisection(ctrl, &rgraph, nparts-nparts/2, part, rubvec, fpart+nparts/2); GKfree(&lgraph.gdata, &lgraph.nvwgt, &lgraph.label, LTERM); } GKfree(&lubvec, &rubvec, LTERM); return cut; } /************************************************************************* * This function performs multilevel bisection **************************************************************************/ void MCMlevelEdgeBisection(CtrlType *ctrl, GraphType *graph, float *tpwgts, float ubfactor) { GraphType *cgraph; cgraph = MCCoarsen2Way(ctrl, graph); MocInit2WayPartition(ctrl, cgraph, tpwgts, ubfactor); MocRefine2Way(ctrl, graph, cgraph, tpwgts, ubfactor); } /************************************************************************* * This function performs multilevel bisection **************************************************************************/ void MCHMlevelEdgeBisection(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long i; GraphType *cgraph; /* for (i=0; incon; i++) printf("%.4f ", ubvec[i]); printf("\n"); */ cgraph = MCCoarsen2Way(ctrl, graph); MocInit2WayPartition2(ctrl, cgraph, tpwgts, ubvec); MocRefine2Way2(ctrl, graph, cgraph, tpwgts, ubvec); } metis-edf-4.1/Lib/defs.h0000644000372500037370000001342611115455714015340 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * defs.h * * This file contains constant definitions * * Started 8/27/94 * George * * $Id: defs.h,v 1.1 1998/11/27 17:59:13 karypis Exp $ * */ #define METISTITLE " METIS 4.0.1 Copyright 1998, Regents of the University of Minnesota\n\n" #define EDFTITLE " Adaptation a Code_Aster EDF-R&D - metis-edf-4.1 - 30/09/2008\n\n" #define MAXLINE 1280000 #define LTERM (void **) 0 /* List terminator for GKfree() */ #define MAXNCON 16 /* The maximum number of constrains */ #define MAXNOBJ 16 /* The maximum number of objectives */ #define PLUS_GAINSPAN 500 /* Parameters for FM buckets */ #define NEG_GAINSPAN 500 #define HTLENGTH ((1<<11)-1) /* Meaning of various options[] parameters */ #define OPTION_PTYPE 0 #define OPTION_CTYPE 1 #define OPTION_ITYPE 2 #define OPTION_RTYPE 3 #define OPTION_DBGLVL 4 #define OPTION_OFLAGS 5 #define OPTION_PFACTOR 6 #define OPTION_NSEPS 7 #define OFLAG_COMPRESS 1 /* Try to compress the graph */ #define OFLAG_CCMP 2 /* Find and order connected components */ /* Default options for PMETIS */ #define PMETIS_CTYPE MATCH_SHEM #define PMETIS_ITYPE IPART_GGPKL #define PMETIS_RTYPE RTYPE_FM #define PMETIS_DBGLVL 0 /* Default options for KMETIS */ #define KMETIS_CTYPE MATCH_SHEM #define KMETIS_ITYPE IPART_PMETIS #define KMETIS_RTYPE RTYPE_KWAYRANDOM_MCONN #define KMETIS_DBGLVL 0 /* Default options for OEMETIS */ #define OEMETIS_CTYPE MATCH_SHEM #define OEMETIS_ITYPE IPART_GGPKL #define OEMETIS_RTYPE RTYPE_FM #define OEMETIS_DBGLVL 0 /* Default options for ONMETIS */ #define ONMETIS_CTYPE MATCH_SHEM #define ONMETIS_ITYPE IPART_GGPKL #define ONMETIS_RTYPE RTYPE_SEP1SIDED #define ONMETIS_DBGLVL 0 #define ONMETIS_OFLAGS OFLAG_COMPRESS #define ONMETIS_PFACTOR -1 #define ONMETIS_NSEPS 1 /* Default options for McPMETIS */ #define McPMETIS_CTYPE MATCH_SHEBM_ONENORM #define McPMETIS_ITYPE IPART_RANDOM #define McPMETIS_RTYPE RTYPE_FM #define McPMETIS_DBGLVL 0 /* Default options for McKMETIS */ #define McKMETIS_CTYPE MATCH_SHEBM_ONENORM #define McKMETIS_ITYPE IPART_McHPMETIS #define McKMETIS_RTYPE RTYPE_KWAYRANDOM #define McKMETIS_DBGLVL 0 /* Default options for KVMETIS */ #define KVMETIS_CTYPE MATCH_SHEM #define KVMETIS_ITYPE IPART_PMETIS #define KVMETIS_RTYPE RTYPE_KWAYRANDOM #define KVMETIS_DBGLVL 0 /* Operations supported by stand-alone code */ #define OP_PMETIS 1 #define OP_KMETIS 2 #define OP_OEMETIS 3 #define OP_ONMETIS 4 #define OP_ONWMETIS 5 #define OP_KVMETIS 6 /* Matching Schemes */ #define MATCH_RM 1 #define MATCH_HEM 2 #define MATCH_SHEM 3 #define MATCH_SHEMKWAY 4 #define MATCH_SHEBM_ONENORM 5 #define MATCH_SHEBM_INFNORM 6 #define MATCH_SBHEM_ONENORM 7 #define MATCH_SBHEM_INFNORM 8 /* Initial partitioning schemes for PMETIS and ONMETIS */ #define IPART_GGPKL 1 #define IPART_GGPKLNODE 2 #define IPART_RANDOM 2 /* Refinement schemes for PMETIS */ #define RTYPE_FM 1 /* Initial partitioning schemes for KMETIS */ #define IPART_PMETIS 1 /* Refinement schemes for KMETIS */ #define RTYPE_KWAYRANDOM 1 #define RTYPE_KWAYGREEDY 2 #define RTYPE_KWAYRANDOM_MCONN 3 /* Refinement schemes for ONMETIS */ #define RTYPE_SEP2SIDED 1 #define RTYPE_SEP1SIDED 2 /* Initial Partitioning Schemes for McKMETIS */ #define IPART_McPMETIS 1 /* Simple McPMETIS */ #define IPART_McHPMETIS 2 /* horizontally relaxed McPMETIS */ #define UNMATCHED -1 #define HTABLE_EMPTY -1 #define NGR_PASSES 4 /* Number of greedy refinement passes */ #define NLGR_PASSES 5 /* Number of GR refinement during IPartition */ #define LARGENIPARTS 8 /* Number of random initial partitions */ #define SMALLNIPARTS 3 /* Number of random initial partitions */ #define COARSEN_FRACTION 0.75 /* Node reduction between succesive coarsening levels */ #define COARSEN_FRACTION2 0.90 /* Node reduction between succesive coarsening levels */ #define UNBALANCE_FRACTION 1.05 #define COMPRESSION_FRACTION 0.85 #define ORDER_UNBALANCE_FRACTION 1.10 #define MMDSWITCH 200 #define HORIZONTAL_IMBALANCE 1.05 /* Debug Levels */ #define DBG_TIME 1 /* Perform timing analysis */ #define DBG_OUTPUT 2 #define DBG_COARSEN 4 /* Show the coarsening progress */ #define DBG_REFINE 8 /* Show info on communication during folding */ #define DBG_IPART 16 /* Show info on initial partition */ #define DBG_MOVEINFO 32 /* Show info on communication during folding */ #define DBG_KWAYPINFO 64 /* Show info on communication during folding */ #define DBG_SEPINFO 128 /* Show info on communication during folding */ metis-edf-4.1/Lib/mrefine.c0000644000372500037370000001416411115455203016030 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * refine.c * * This file contains the driving routines for multilevel refinement * * Started 7/24/97 * George * * $Id: mrefine.c,v 1.2 1998/11/27 18:25:09 karypis Exp $ */ #include /************************************************************************* * This function is the entry point of refinement **************************************************************************/ void MocRefine2Way(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, float *tpwgts, float ubfactor) { long i; float tubvec[MAXNCON]; for (i=0; incon; i++) tubvec[i] = 1.0; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); /* Compute the parameters of the coarsest graph */ MocCompute2WayPartitionParams(ctrl, graph); for (;;) { ASSERT(CheckBnd(graph)); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); switch (ctrl->RType) { case RTYPE_FM: MocBalance2Way(ctrl, graph, tpwgts, 1.03); MocFM_2WayEdgeRefine(ctrl, graph, tpwgts, 8); break; case 2: MocBalance2Way(ctrl, graph, tpwgts, 1.03); MocFM_2WayEdgeRefine2(ctrl, graph, tpwgts, tubvec, 8); break; default: errexit("Unknown refinement type: %ld\n", ctrl->RType); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); MocProject2WayPartition(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } MocBalance2Way(ctrl, graph, tpwgts, 1.01); MocFM_2WayEdgeRefine(ctrl, graph, tpwgts, 8); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } /************************************************************************* * This function allocates memory for 2-way edge refinement **************************************************************************/ void MocAllocate2WayPartitionMemory(CtrlType *ctrl, GraphType *graph) { long nvtxs, ncon; nvtxs = graph->nvtxs; ncon = graph->ncon; graph->rdata = idxmalloc(5*nvtxs, "Allocate2WayPartitionMemory: rdata"); graph->where = graph->rdata; graph->id = graph->rdata + nvtxs; graph->ed = graph->rdata + 2*nvtxs; graph->bndptr = graph->rdata + 3*nvtxs; graph->bndind = graph->rdata + 4*nvtxs; graph->npwgts = fmalloc(2*ncon, "npwgts"); } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void MocCompute2WayPartitionParams(CtrlType *ctrl, GraphType *graph) { long i, j, k, l, nvtxs, ncon, nbnd, mincut; idxtype *xadj, *adjncy, *adjwgt; float *nvwgt, *npwgts; idxtype *id, *ed, *where; idxtype *bndptr, *bndind; long me, other; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; npwgts = sset(2*ncon, 0.0, graph->npwgts); id = idxset(nvtxs, 0, graph->id); ed = idxset(nvtxs, 0, graph->ed); bndptr = idxset(nvtxs, -1, graph->bndptr); bndind = graph->bndind; /*------------------------------------------------------------ / Compute now the id/ed degrees /------------------------------------------------------------*/ nbnd = mincut = 0; for (i=0; i= 0 && where[i] <= 1); me = where[i]; saxpy(ncon, 1.0, nvwgt+i*ncon, 1, npwgts+me*ncon, 1); for (j=xadj[i]; j 0 || xadj[i] == xadj[i+1]) { mincut += ed[i]; bndptr[i] = nbnd; bndind[nbnd++] = i; } } graph->mincut = mincut/2; graph->nbnd = nbnd; } /************************************************************************* * This function projects a partition, and at the same time computes the * parameters for refinement. **************************************************************************/ void MocProject2WayPartition(CtrlType *ctrl, GraphType *graph) { long i, j, k, nvtxs, nbnd, me; idxtype *xadj, *adjncy, *adjwgt, *adjwgtsum; idxtype *cmap, *where, *id, *ed, *bndptr, *bndind; idxtype *cwhere, *cid, *ced, *cbndptr; GraphType *cgraph; cgraph = graph->coarser; cwhere = cgraph->where; cid = cgraph->id; ced = cgraph->ed; cbndptr = cgraph->bndptr; nvtxs = graph->nvtxs; cmap = graph->cmap; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; MocAllocate2WayPartitionMemory(ctrl, graph); where = graph->where; id = idxset(nvtxs, 0, graph->id); ed = idxset(nvtxs, 0, graph->ed); bndptr = idxset(nvtxs, -1, graph->bndptr); bndind = graph->bndind; /* Go through and project partition and compute id/ed for the nodes */ for (i=0; i 0 || xadj[i] == xadj[i+1]) { bndptr[i] = nbnd; bndind[nbnd++] = i; } } } } graph->mincut = cgraph->mincut; graph->nbnd = nbnd; scopy(2*graph->ncon, cgraph->npwgts, graph->npwgts); FreeGraph(graph->coarser); graph->coarser = NULL; } metis-edf-4.1/Lib/initpart.c0000644000372500037370000003161711115455203016237 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * initpart.c * * This file contains code that performs the initial partition of the * coarsest graph * * Started 7/23/97 * George * * $Id: initpart.c,v 1.1 1998/11/27 17:59:15 karypis Exp $ * */ #include /************************************************************************* * This function computes the initial bisection of the coarsest graph **************************************************************************/ void Init2WayPartition(CtrlType *ctrl, GraphType *graph, long *tpwgts, float ubfactor) { long dbglvl; dbglvl = ctrl->dbglvl; IFSET(ctrl->dbglvl, DBG_REFINE, ctrl->dbglvl -= DBG_REFINE); IFSET(ctrl->dbglvl, DBG_MOVEINFO, ctrl->dbglvl -= DBG_MOVEINFO); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); switch (ctrl->IType) { case IPART_GGPKL: GrowBisection(ctrl, graph, tpwgts, ubfactor); break; case 3: RandomBisection(ctrl, graph, tpwgts, ubfactor); break; default: errexit("Unknown initial partition type: %ld\n", ctrl->IType); } IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial Cut: %ld\n", graph->mincut)); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); ctrl->dbglvl = dbglvl; /* IsConnectedSubdomain(ctrl, graph, 0); IsConnectedSubdomain(ctrl, graph, 1); */ } /************************************************************************* * This function computes the initial bisection of the coarsest graph **************************************************************************/ void InitSeparator(CtrlType *ctrl, GraphType *graph, float ubfactor) { long dbglvl; dbglvl = ctrl->dbglvl; IFSET(ctrl->dbglvl, DBG_REFINE, ctrl->dbglvl -= DBG_REFINE); IFSET(ctrl->dbglvl, DBG_MOVEINFO, ctrl->dbglvl -= DBG_MOVEINFO); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); GrowBisectionNode(ctrl, graph, ubfactor); Compute2WayNodePartitionParams(ctrl, graph); IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial Sep: %ld\n", graph->mincut)); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); ctrl->dbglvl = dbglvl; } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void GrowBisection(CtrlType *ctrl, GraphType *graph, long *tpwgts, float ubfactor) { long i, j, k, nvtxs, drain, nleft, first, last, pwgts[2], minpwgt[2], maxpwgt[2], from, bestcut, icut, mincut, me, pass, nbfs; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *where; idxtype *queue, *touched, *gain, *bestwhere; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; Allocate2WayPartitionMemory(ctrl, graph); where = graph->where; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); queue = idxmalloc(nvtxs, "BisectGraph: queue"); touched = idxmalloc(nvtxs, "BisectGraph: touched"); ASSERTP(tpwgts[0]+tpwgts[1] == idxsum(nvtxs, vwgt), ("%ld %ld\n", tpwgts[0]+tpwgts[1], idxsum(nvtxs, vwgt))); maxpwgt[0] = ubfactor*tpwgts[0]; maxpwgt[1] = ubfactor*tpwgts[1]; minpwgt[0] = (1.0/ubfactor)*tpwgts[0]; minpwgt[1] = (1.0/ubfactor)*tpwgts[1]; nbfs = (nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = idxsum(nvtxs, graph->adjwgtsum)+1; /* The +1 is for the 0 edges case */ for (; nbfs>0; nbfs--) { idxset(nvtxs, 0, touched); pwgts[1] = tpwgts[0]+tpwgts[1]; pwgts[0] = 0; idxset(nvtxs, 1, where); queue[0] = RandomInRange(nvtxs); touched[queue[0]] = 1; first = 0; last = 1; nleft = nvtxs-1; drain = 0; /* Start the BFS from queue to get a partition */ for (;;) { if (first == last) { /* Empty. Disconnected graph! */ if (nleft == 0 || drain) break; k = RandomInRange(nleft); for (i=0; i 0 && pwgts[1]-vwgt[i] < minpwgt[1]) { drain = 1; continue; } where[i] = 0; INC_DEC(pwgts[0], pwgts[1], vwgt[i]); if (pwgts[1] <= maxpwgt[1]) break; drain = 0; for (j=xadj[i]; jnvtxs, pwgts[0], pwgts[1], graph->pwgts[0], graph->pwgts[1], graph->mincut); */ Balance2Way(ctrl, graph, tpwgts, ubfactor); /*printf("BPART: [%5ld %5ld] %5ld\n", graph->pwgts[0], graph->pwgts[1], graph->mincut);*/ FM_2WayEdgeRefine(ctrl, graph, tpwgts, 4); /*printf("RPART: [%5ld %5ld] %5ld\n", graph->pwgts[0], graph->pwgts[1], graph->mincut);*/ if (bestcut > graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); if (bestcut == 0) break; } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); GKfree(&bestwhere, &queue, &touched, LTERM); } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void GrowBisectionNode(CtrlType *ctrl, GraphType *graph, float ubfactor) { long i, j, k, nvtxs, drain, nleft, first, last, pwgts[2], tpwgts[2], minpwgt[2], maxpwgt[2], from, bestcut, icut, mincut, me, pass, nbfs; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *where, *bndind; idxtype *queue, *touched, *gain, *bestwhere; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); queue = idxmalloc(nvtxs, "BisectGraph: queue"); touched = idxmalloc(nvtxs, "BisectGraph: touched"); tpwgts[0] = idxsum(nvtxs, vwgt); tpwgts[1] = tpwgts[0]/2; tpwgts[0] -= tpwgts[1]; maxpwgt[0] = ubfactor*tpwgts[0]; maxpwgt[1] = ubfactor*tpwgts[1]; minpwgt[0] = (1.0/ubfactor)*tpwgts[0]; minpwgt[1] = (1.0/ubfactor)*tpwgts[1]; /* Allocate memory for graph->rdata. Allocate sufficient memory for both edge and node */ graph->rdata = idxmalloc(5*nvtxs+3, "GrowBisectionNode: graph->rdata"); graph->pwgts = graph->rdata; graph->where = graph->rdata + 3; graph->bndptr = graph->rdata + nvtxs + 3; graph->bndind = graph->rdata + 2*nvtxs + 3; graph->nrinfo = (NRInfoType *)(graph->rdata + 3*nvtxs + 3); graph->id = graph->rdata + 3*nvtxs + 3; graph->ed = graph->rdata + 4*nvtxs + 3; where = graph->where; bndind = graph->bndind; nbfs = (nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = tpwgts[0]+tpwgts[1]; for (nbfs++; nbfs>0; nbfs--) { idxset(nvtxs, 0, touched); pwgts[1] = tpwgts[0]+tpwgts[1]; pwgts[0] = 0; idxset(nvtxs, 1, where); queue[0] = RandomInRange(nvtxs); touched[queue[0]] = 1; first = 0; last = 1; nleft = nvtxs-1; drain = 0; /* Start the BFS from queue to get a partition */ if (nbfs >= 1) { for (;;) { if (first == last) { /* Empty. Disconnected graph! */ if (nleft == 0 || drain) break; k = RandomInRange(nleft); for (i=0; inbnd; i++) where[bndind[i]] = 2; Compute2WayNodePartitionParams(ctrl, graph); FM_2WayNodeRefine(ctrl, graph, ubfactor, 6); /* printf("ISep: [%ld %ld %ld] %ld\n", graph->pwgts[0], graph->pwgts[1], graph->pwgts[2], bestcut); */ if (bestcut > graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); Compute2WayNodePartitionParams(ctrl, graph); GKfree(&bestwhere, &queue, &touched, LTERM); } /************************************************************************* * This function takes a graph and produces a bisection by using a region * growing algorithm. The resulting partition is returned in * graph->where **************************************************************************/ void RandomBisection(CtrlType *ctrl, GraphType *graph, long *tpwgts, float ubfactor) { long i, ii, j, k, nvtxs, pwgts[2], minpwgt[2], maxpwgt[2], from, bestcut, icut, mincut, me, pass, nbfs; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *where; idxtype *perm, *bestwhere; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; Allocate2WayPartitionMemory(ctrl, graph); where = graph->where; bestwhere = idxmalloc(nvtxs, "BisectGraph: bestwhere"); perm = idxmalloc(nvtxs, "BisectGraph: queue"); ASSERTP(tpwgts[0]+tpwgts[1] == idxsum(nvtxs, vwgt), ("%ld %ld\n", tpwgts[0]+tpwgts[1], idxsum(nvtxs, vwgt))); maxpwgt[0] = ubfactor*tpwgts[0]; maxpwgt[1] = ubfactor*tpwgts[1]; minpwgt[0] = (1.0/ubfactor)*tpwgts[0]; minpwgt[1] = (1.0/ubfactor)*tpwgts[1]; nbfs = (nvtxs <= ctrl->CoarsenTo ? SMALLNIPARTS : LARGENIPARTS); bestcut = idxsum(nvtxs, graph->adjwgtsum)+1; /* The +1 is for the 0 edges case */ for (; nbfs>0; nbfs--) { RandomPermute(nvtxs, perm, 1); idxset(nvtxs, 1, where); pwgts[1] = tpwgts[0]+tpwgts[1]; pwgts[0] = 0; if (nbfs != 1) { for (ii=0; ii minpwgt[0]) break; } } } /************************************************************* * Do some partition refinement **************************************************************/ Compute2WayPartitionParams(ctrl, graph); /* printf("IPART: %3ld [%5ld %5ld] [%5ld %5ld] %5ld\n", graph->nvtxs, pwgts[0], pwgts[1], graph->pwgts[0], graph->pwgts[1], graph->mincut); */ Balance2Way(ctrl, graph, tpwgts, ubfactor); /* printf("BPART: [%5ld %5ld] %5ld\n", graph->pwgts[0], graph->pwgts[1], graph->mincut); */ FM_2WayEdgeRefine(ctrl, graph, tpwgts, 4); /* printf("RPART: [%5ld %5ld] %5ld\n", graph->pwgts[0], graph->pwgts[1], graph->mincut); */ if (bestcut > graph->mincut) { bestcut = graph->mincut; idxcopy(nvtxs, where, bestwhere); if (bestcut == 0) break; } } graph->mincut = bestcut; idxcopy(nvtxs, bestwhere, where); GKfree(&bestwhere, &perm, LTERM); } metis-edf-4.1/Lib/coarsen.c0000644000372500037370000000445311115455203016035 0ustar courtoisastergrp /* * coarsen.c * * This file contains the driving routines for the coarsening process * * Started 7/23/97 * George * * $Id: coarsen.c,v 1.1 1998/11/27 17:59:12 karypis Exp $ * */ #include /************************************************************************* * This function takes a graph and creates a sequence of coarser graphs **************************************************************************/ GraphType *Coarsen2Way(CtrlType *ctrl, GraphType *graph) { long clevel; GraphType *cgraph; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->CoarsenTmr)); cgraph = graph; /* The following is ahack to allow the multiple bisections to go through with correct coarsening */ if (ctrl->CType > 20) { clevel = 1; ctrl->CType -= 20; } else clevel = 0; do { IFSET(ctrl->dbglvl, DBG_COARSEN, printf("%6ld %7ld [%ld] [%ld %ld]\n", cgraph->nvtxs, cgraph->nedges, ctrl->CoarsenTo, ctrl->maxvwgt, (cgraph->vwgt ? idxsum(cgraph->nvtxs, cgraph->vwgt) : cgraph->nvtxs))); if (cgraph->adjwgt) { switch (ctrl->CType) { case MATCH_RM: Match_RM(ctrl, cgraph); break; case MATCH_HEM: if (clevel < 1) Match_RM(ctrl, cgraph); else Match_HEM(ctrl, cgraph); break; case MATCH_SHEM: if (clevel < 1) Match_RM(ctrl, cgraph); else Match_SHEM(ctrl, cgraph); break; case MATCH_SHEMKWAY: Match_SHEM(ctrl, cgraph); break; default: errexit("Unknown CType: %ld\n", ctrl->CType); } } else { Match_RM_NVW(ctrl, cgraph); } cgraph = cgraph->coarser; clevel++; } while (cgraph->nvtxs > ctrl->CoarsenTo && cgraph->nvtxs < COARSEN_FRACTION2*cgraph->finer->nvtxs && cgraph->nedges > cgraph->nvtxs/2); IFSET(ctrl->dbglvl, DBG_COARSEN, printf("%6ld %7ld [%ld] [%ld %ld]\n", cgraph->nvtxs, cgraph->nedges, ctrl->CoarsenTo, ctrl->maxvwgt, (cgraph->vwgt ? idxsum(cgraph->nvtxs, cgraph->vwgt) : cgraph->nvtxs))); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->CoarsenTmr)); return cgraph; } metis-edf-4.1/Lib/mbalance.c0000644000372500037370000002025511115455203016143 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mbalance.c * * This file contains code that is used to forcefully balance either * bisections or k-sections * * Started 7/29/97 * George * * $Id: mbalance.c,v 1.1 1998/11/27 17:59:19 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point of the bisection balancing algorithms. **************************************************************************/ void MocBalance2Way(CtrlType *ctrl, GraphType *graph, float *tpwgts, float lbfactor) { if (Compute2WayHLoadImbalance(graph->ncon, graph->npwgts, tpwgts) < lbfactor) return; MocGeneral2WayBalance(ctrl, graph, tpwgts, lbfactor); } /************************************************************************* * This function performs an edge-based FM refinement **************************************************************************/ void MocGeneral2WayBalance(CtrlType *ctrl, GraphType *graph, float *tpwgts, float lbfactor) { long i, ii, j, k, l, kwgt, nvtxs, ncon, nbnd, nswaps, from, to, pass, me, limit, tmp, cnum; idxtype *xadj, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind; idxtype *moved, *swaps, *perm, *qnum; float *nvwgt, *npwgts, mindiff[MAXNCON], origbal, minbal, newbal; PQueueType parts[MAXNCON][2]; long higain, oldgain, mincut, newcut, mincutorder; long qsizes[MAXNCON][2]; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; npwgts = graph->npwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); qnum = idxwspacemalloc(ctrl, nvtxs); limit = amin(amax(0.01*nvtxs, 15), 100); /* Initialize the queues */ for (i=0; i qsizes[j][from] && nvwgt[i*ncon+qnum[i]] < 1.3*nvwgt[i*ncon+j]) { qsizes[qnum[i]][from]--; qsizes[j][from]++; qnum[i] = j; } } } } } /* printf("Weight Distribution (after):\t "); for (i=0; imincut; mincutorder = -1; if (ctrl->dbglvl&DBG_REFINE) { printf("Parts: ["); for (l=0; lnvtxs, graph->nbnd, graph->mincut, origbal); } idxset(nvtxs, -1, moved); ASSERT(ComputeCut(graph, where) == graph->mincut); ASSERT(CheckBnd(graph)); /* Insert all nodes in the priority queues */ nbnd = graph->nbnd; RandomPermute(nvtxs, perm, 1); for (ii=0; ii limit) { /* We hit the limit, undo last move */ newcut += (ed[higain]-id[higain]); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+from*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); break; } where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; if (ctrl->dbglvl&DBG_MOVEINFO) { printf("Moved %6ld from %ld(%ld). Gain: %5ld, Cut: %5ld, NPwgts: ", higain, from, cnum, ed[higain]-id[higain], newcut); for (l=0; l 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0 && bndptr[k] == -1) BNDInsert(nbnd, bndind, bndptr, k); } } /**************************************************************** * Roll back computations *****************************************************************/ for (nswaps--; nswaps>mincutorder; nswaps--) { higain = swaps[nswaps]; to = where[higain] = (where[higain]+1)%2; SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); else if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+((to+1)%2)*ncon, 1); for (j=xadj[higain]; j 0) BNDInsert(nbnd, bndind, bndptr, k); } } if (ctrl->dbglvl&DBG_REFINE) { printf("\tMincut: %6ld at %5ld, NBND: %6ld, NPwgts: [", mincut, mincutorder, nbnd); for (l=0; lmincut = mincut; graph->nbnd = nbnd; for (i=0; i /***************************************************************************** * This function creates a graph corresponding to the dual of a finite element * mesh. At this point the supported elements are triangles, tetrahedrons, and * bricks. ******************************************************************************/ void METIS_MeshToDual(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { long esizes[] = {-1, 3, 4, 8, 4}; if (*numflag == 1) ChangeMesh2CNumbering((*ne)*esizes[*etype], elmnts); GENDUALMETIS(*ne, *nn, *etype, elmnts, dxadj, dadjncy); if (*numflag == 1) ChangeMesh2FNumbering((*ne)*esizes[*etype], elmnts, *ne, dxadj, dadjncy); } /***************************************************************************** * This function creates a graph corresponding to the finite element mesh. * At this point the supported elements are triangles, tetrahedrons. ******************************************************************************/ void METIS_MeshToNodal(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { long esizes[] = {-1, 3, 4, 8, 4}; if (*numflag == 1) ChangeMesh2CNumbering((*ne)*esizes[*etype], elmnts); switch (*etype) { case 1: TRINODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy); break; case 2: TETNODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy); break; case 3: HEXNODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy); break; case 4: QUADNODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy); break; } if (*numflag == 1) ChangeMesh2FNumbering((*ne)*esizes[*etype], elmnts, *nn, dxadj, dadjncy); } /***************************************************************************** * This function creates the dual of a finite element mesh ******************************************************************************/ void GENDUALMETIS(long nelmnts, long nvtxs, long etype, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy) { long i, j, jj, k, kk, kkk, l, m, n, nedges, mask; idxtype *nptr, *nind; idxtype *mark, ind[200], wgt[200]; long esize, esizes[] = {-1, 3, 4, 8, 4}, mgcnum, mgcnums[] = {-1, 2, 3, 4, 2}; mask = (1<<11)-1; mark = idxsmalloc(mask+1, -1, "GENDUALMETIS: mark"); /* Get the element size and magic number for the particular element */ esize = esizes[etype]; mgcnum = mgcnums[etype]; /* Construct the node-element list first */ nptr = idxsmalloc(nvtxs+1, 0, "GENDUALMETIS: nptr"); for (j=esize*nelmnts, i=0; i0; i--) nptr[i] = nptr[i-1]; nptr[0] = 0; for (i=0; i=nptr[n]; k--) { if ((kk = nind[k]) <= i) break; kkk = kk&mask; if ((l = mark[kkk]) == -1) { ind[m] = kk; wgt[m] = 1; mark[kkk] = m++; } else if (ind[l] == kk) { wgt[l]++; } else { for (jj=0; jj0; i--) dxadj[i] = dxadj[i-1]; dxadj[0] = 0; free(mark); free(nptr); free(nind); } /***************************************************************************** * This function creates the nodal graph of a finite element mesh ******************************************************************************/ void TRINODALMETIS(long nelmnts, long nvtxs, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy) { long i, j, jj, k, kk, kkk, l, m, n, nedges; idxtype *nptr, *nind; idxtype *mark; /* Construct the node-element list first */ nptr = idxsmalloc(nvtxs+1, 0, "TRINODALMETIS: nptr"); for (j=3*nelmnts, i=0; i0; i--) nptr[i] = nptr[i-1]; nptr[0] = 0; mark = idxsmalloc(nvtxs, -1, "TRINODALMETIS: mark"); nedges = dxadj[0] = 0; for (i=0; i0; i--) nptr[i] = nptr[i-1]; nptr[0] = 0; mark = idxsmalloc(nvtxs, -1, "TETNODALMETIS: mark"); nedges = dxadj[0] = 0; for (i=0; i0; i--) nptr[i] = nptr[i-1]; nptr[0] = 0; mark = idxsmalloc(nvtxs, -1, "HEXNODALMETIS: mark"); nedges = dxadj[0] = 0; for (i=0; i0; i--) nptr[i] = nptr[i-1]; nptr[0] = 0; mark = idxsmalloc(nvtxs, -1, "QUADNODALMETIS: mark"); nedges = dxadj[0] = 0; for (i=0; i /************************************************************************* * This function performs an edge-based FM refinement **************************************************************************/ void MocFM_2WayEdgeRefine2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *orgubvec, long npasses) { long i, ii, j, k, l, kwgt, nvtxs, ncon, nbnd, nswaps, from, to, pass, me, limit, tmp, cnum; idxtype *xadj, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind; idxtype *moved, *swaps, *perm, *qnum; float *nvwgt, *npwgts, origdiff[MAXNCON], origbal[MAXNCON], minbal[MAXNCON]; PQueueType parts[MAXNCON][2]; long higain, oldgain, mincut, initcut, newcut, mincutorder; float *maxwgt, *minwgt, ubvec[MAXNCON], tvec[MAXNCON]; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; npwgts = graph->npwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); qnum = idxwspacemalloc(ctrl, nvtxs); limit = amin(amax(0.01*nvtxs, 15), 100); Compute2WayHLoadImbalanceVec(ncon, npwgts, tpwgts, origbal); for (i=0; idbglvl&DBG_REFINE) { printf("Parts: ["); for (l=0; lnvtxs, graph->nbnd, graph->mincut); for (i=0; imincut; Compute2WayHLoadImbalanceVec(ncon, npwgts, tpwgts, minbal); ASSERT(ComputeCut(graph, where) == graph->mincut); ASSERT(CheckBnd(graph)); /* Insert boundary nodes in the priority queues */ nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; ii 0 || id[i] == 0); ASSERT(bndptr[i] != -1); PQueueInsert(&parts[qnum[i]][where[i]], i, ed[i]-id[i]); } for (nswaps=0; nswaps limit) { /* We hit the limit, undo last move */ newcut += (ed[higain]-id[higain]); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+from*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); break; } where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; if (ctrl->dbglvl&DBG_MOVEINFO) { printf("Moved %6ld from %ld(%ld). Gain: %5ld, Cut: %5ld, NPwgts: ", higain, from, cnum, ed[higain]-id[higain], newcut); for (l=0; l 0) { /* It will now become a boundary vertex */ BNDInsert(nbnd, bndind, bndptr, k); if (moved[k] == -1) PQueueInsert(&parts[qnum[k]][where[k]], k, ed[k]-id[k]); } } } } /**************************************************************** * Roll back computations *****************************************************************/ for (i=0; imincutorder; nswaps--) { higain = swaps[nswaps]; to = where[higain] = (where[higain]+1)%2; SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); else if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+((to+1)%2)*ncon, 1); for (j=xadj[higain]; j 0) BNDInsert(nbnd, bndind, bndptr, k); } } if (ctrl->dbglvl&DBG_REFINE) { printf("\tMincut: %6ld at %5ld, NBND: %6ld, NPwgts: [", mincut, mincutorder, nbnd); for (l=0; lmincut = mincut; graph->nbnd = nbnd; if (mincutorder == -1 || mincut == initcut) break; } for (i=0; i= maxdiff) { maxdiff = diff; *from = j; *cnum = i; } } } if (*from != -1 && PQueueGetSize(&queues[*cnum][*from]) == 0) { /* The desired queue is empty, select a node from that side anyway */ for (i=0; i 0) { max = (npwgts[(*from)*ncon+i] - maxwgt[(*from)*ncon+i]); *cnum = i; break; } } for (i++; i max && PQueueGetSize(&queues[i][*from]) > 0) { max = diff; *cnum = i; } } } /* Check to see if you can focus on the cut */ if (maxdiff <= 0.0 || *from == -1) { maxgain = -100000; for (j=0; j<2; j++) { for (i=0; i 0 && PQueueGetKey(&queues[i][j]) > maxgain) { maxgain = PQueueGetKey(&queues[i][j]); *from = j; *cnum = i; } } } /* printf("(%2ld %2ld) %3ld\n", *from, *cnum, maxgain); */ } } /************************************************************************* * This function checks if the newbal is better than oldbal given the * ubvector ubvec **************************************************************************/ long IsBetter2wayBalance(long ncon, float *newbal, float *oldbal, float *ubvec) { long i, j; float max1=0.0, max2=0.0, sum1=0.0, sum2=0.0, tmp; for (i=0; i max2) return 0; else return sum1 <= sum2; } metis-edf-4.1/Lib/mutil.c0000644000372500037370000000533011115455203015530 0ustar courtoisastergrp /* * mutil.c * * This file contains various utility functions for the MOC portion of the * code * * Started 2/15/98 * George * * $Id: mutil.c,v 1.1 1998/11/27 17:59:27 karypis Exp $ * */ #include /************************************************************************* * This function checks if the vertex weights of two vertices are below * a given set of values **************************************************************************/ long AreAllVwgtsBelow(long ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit) { long i; for (i=0; i limit) return 0; return 1; } /************************************************************************* * This function checks if the vertex weights of two vertices are below * a given set of values **************************************************************************/ long AreAnyVwgtsBelow(long ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit) { long i; for (i=0; i max) max = npwgts[j*ncon+i]; } if (max*nparts > lb) lb = max*nparts; } return lb; } /************************************************************************* * This function checks if the vertex weights of two vertices are below * a given set of values **************************************************************************/ long AreAllBelow(long ncon, float *v1, float *v2) { long i; for (i=0; i v2[i]) return 0; return 1; } metis-edf-4.1/Lib/myqsort.c0000644000372500037370000003070411115455203016117 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * myqsort.c * * This file contains a fast idxtype increasing qsort algorithm. * Addopted from TeX * * Started 10/18/96 * George * * $Id: myqsort.c,v 1.1 1998/11/27 17:59:27 karypis Exp $ */ #include /* only for type declarations */ #define THRESH 1 /* threshold for insertion */ #define MTHRESH 6 /* threshold for median */ static void siqst(idxtype *, idxtype *); static void iiqst(long *, long *); static void keyiqst(KeyValueType *, KeyValueType *); static void keyvaliqst(KeyValueType *, KeyValueType *); /************************************************************************* * Entry point of idxtype increasing sort **************************************************************************/ void iidxsort(long n, idxtype *base) { register idxtype *i; register idxtype *j; register idxtype *lo; register idxtype *hi; register idxtype *min; register idxtype c; idxtype *max; if (n <= 1) return; max = base + n; if (n >= THRESH) { siqst(base, max); hi = base + THRESH; } else hi = max; for (j = lo = base; lo++ < hi;) { if (*j > *lo) j = lo; } if (j != base) { /* swap j into place */ c = *base; *base = *j; *j = c; } for (min = base; (hi = min += 1) < max;) { while (*(--hi) > *min); if ((hi += 1) != min) { for (lo = min + 1; --lo >= min;) { c = *lo; for (i = j = lo; (j -= 1) >= hi; i = j) *i = *j; *i = c; } } } } static void siqst(idxtype *base, idxtype *max) { register idxtype *i; register idxtype *j; register idxtype *jj; register idxtype *mid; register long ii; register idxtype c; idxtype *tmp; long lo; long hi; lo = max - base; /* number of elements as idxtype */ do { mid = base + ((unsigned) lo>>1); if (lo >= MTHRESH) { j = (*base > *mid ? base : mid); tmp = max - 1; if (*j > *tmp) { j = (j == base ? mid : base); /* switch to first loser */ if (*j < *tmp) j = tmp; } if (j != mid) { /* SWAP */ c = *mid; *mid = *j; *j = c; } } /* Semi-standard quicksort partitioning/swapping */ for (i = base, j = max - 1;;) { while (i < mid && *i <= *mid) i++; while (j > mid) { if (*mid <= *j) { j--; continue; } tmp = i + 1; /* value of i after swap */ if (i == mid) /* j <-> mid, new mid is j */ mid = jj = j; else /* i <-> j */ jj = j--; goto swap; } if (i == mid) break; else { /* i <-> mid, new mid is i */ jj = mid; tmp = mid = i; /* value of i after swap */ j--; } swap: c = *i; *i = *jj; *jj = c; i = tmp; } i = (j = mid) + 1; if ((lo = j - base) <= (hi = max - i)) { if (lo >= THRESH) siqst(base, j); base = i; lo = hi; } else { if (hi >= THRESH) siqst(i, max); max = j; } } while (lo >= THRESH); } /************************************************************************* * Entry point of long increasing sort **************************************************************************/ void iintsort(long n, long *base) { register long *i; register long *j; register long *lo; register long *hi; register long *min; register long c; long *max; if (n <= 1) return; max = base + n; if (n >= THRESH) { iiqst(base, max); hi = base + THRESH; } else hi = max; for (j = lo = base; lo++ < hi;) { if (*j > *lo) j = lo; } if (j != base) { /* swap j into place */ c = *base; *base = *j; *j = c; } for (min = base; (hi = min += 1) < max;) { while (*(--hi) > *min); if ((hi += 1) != min) { for (lo = min + 1; --lo >= min;) { c = *lo; for (i = j = lo; (j -= 1) >= hi; i = j) *i = *j; *i = c; } } } } static void iiqst(long *base, long *max) { register long *i; register long *j; register long *jj; register long *mid; register long ii; register long c; long *tmp; long lo; long hi; lo = max - base; /* number of elements as ints */ do { mid = base + ((unsigned) lo>>1); if (lo >= MTHRESH) { j = (*base > *mid ? base : mid); tmp = max - 1; if (*j > *tmp) { j = (j == base ? mid : base); /* switch to first loser */ if (*j < *tmp) j = tmp; } if (j != mid) { /* SWAP */ c = *mid; *mid = *j; *j = c; } } /* Semi-standard quicksort partitioning/swapping */ for (i = base, j = max - 1;;) { while (i < mid && *i <= *mid) i++; while (j > mid) { if (*mid <= *j) { j--; continue; } tmp = i + 1; /* value of i after swap */ if (i == mid) /* j <-> mid, new mid is j */ mid = jj = j; else /* i <-> j */ jj = j--; goto swap; } if (i == mid) break; else { /* i <-> mid, new mid is i */ jj = mid; tmp = mid = i; /* value of i after swap */ j--; } swap: c = *i; *i = *jj; *jj = c; i = tmp; } i = (j = mid) + 1; if ((lo = j - base) <= (hi = max - i)) { if (lo >= THRESH) iiqst(base, j); base = i; lo = hi; } else { if (hi >= THRESH) iiqst(i, max); max = j; } } while (lo >= THRESH); } /************************************************************************* * Entry point of KeyVal increasing sort, ONLY key part **************************************************************************/ void ikeysort(long n, KeyValueType *base) { register KeyValueType *i; register KeyValueType *j; register KeyValueType *lo; register KeyValueType *hi; register KeyValueType *min; register KeyValueType c; KeyValueType *max; if (n <= 1) return; max = base + n; if (n >= THRESH) { keyiqst(base, max); hi = base + THRESH; } else hi = max; for (j = lo = base; lo++ < hi;) { if (j->key > lo->key) j = lo; } if (j != base) { /* swap j into place */ c = *base; *base = *j; *j = c; } for (min = base; (hi = min += 1) < max;) { while ((--hi)->key > min->key); if ((hi += 1) != min) { for (lo = min + 1; --lo >= min;) { c = *lo; for (i = j = lo; (j -= 1) >= hi; i = j) *i = *j; *i = c; } } } /* Sanity check */ { long i; for (i=0; i base[i+1].key) printf("Something went wrong!\n"); } } static void keyiqst(KeyValueType *base, KeyValueType *max) { register KeyValueType *i; register KeyValueType *j; register KeyValueType *jj; register KeyValueType *mid; register KeyValueType c; KeyValueType *tmp; long lo; long hi; lo = (max - base)>>1; /* number of elements as KeyValueType */ do { mid = base + ((unsigned) lo>>1); if (lo >= MTHRESH) { j = (base->key > mid->key ? base : mid); tmp = max - 1; if (j->key > tmp->key) { j = (j == base ? mid : base); /* switch to first loser */ if (j->key < tmp->key) j = tmp; } if (j != mid) { /* SWAP */ c = *mid; *mid = *j; *j = c; } } /* Semi-standard quicksort partitioning/swapping */ for (i = base, j = max - 1;;) { while (i < mid && i->key <= mid->key) i++; while (j > mid) { if (mid->key <= j->key) { j--; continue; } tmp = i + 1; /* value of i after swap */ if (i == mid) /* j <-> mid, new mid is j */ mid = jj = j; else /* i <-> j */ jj = j--; goto swap; } if (i == mid) break; else { /* i <-> mid, new mid is i */ jj = mid; tmp = mid = i; /* value of i after swap */ j--; } swap: c = *i; *i = *jj; *jj = c; i = tmp; } i = (j = mid) + 1; if ((lo = (j - base)>>1) <= (hi = (max - i)>>1)) { if (lo >= THRESH) keyiqst(base, j); base = i; lo = hi; } else { if (hi >= THRESH) keyiqst(i, max); max = j; } } while (lo >= THRESH); } /************************************************************************* * Entry point of KeyVal increasing sort, BOTH key and val part **************************************************************************/ void ikeyvalsort(long n, KeyValueType *base) { register KeyValueType *i; register KeyValueType *j; register KeyValueType *lo; register KeyValueType *hi; register KeyValueType *min; register KeyValueType c; KeyValueType *max; if (n <= 1) return; max = base + n; if (n >= THRESH) { keyvaliqst(base, max); hi = base + THRESH; } else hi = max; for (j = lo = base; lo++ < hi;) { if ((j->key > lo->key) || (j->key == lo->key && j->val > lo->val)) j = lo; } if (j != base) { /* swap j into place */ c = *base; *base = *j; *j = c; } for (min = base; (hi = min += 1) < max;) { while ((--hi)->key > min->key || (hi->key == min->key && hi->val > min->val)); if ((hi += 1) != min) { for (lo = min + 1; --lo >= min;) { c = *lo; for (i = j = lo; (j -= 1) >= hi; i = j) *i = *j; *i = c; } } } } static void keyvaliqst(KeyValueType *base, KeyValueType *max) { register KeyValueType *i; register KeyValueType *j; register KeyValueType *jj; register KeyValueType *mid; register KeyValueType c; KeyValueType *tmp; long lo; long hi; lo = (max - base)>>1; /* number of elements as KeyValueType */ do { mid = base + ((unsigned) lo>>1); if (lo >= MTHRESH) { j = (base->key > mid->key || (base->key == mid->key && base->val > mid->val) ? base : mid); tmp = max - 1; if (j->key > tmp->key || (j->key == tmp->key && j->val > tmp->val)) { j = (j == base ? mid : base); /* switch to first loser */ if (j->key < tmp->key || (j->key == tmp->key && j->val < tmp->val)) j = tmp; } if (j != mid) { /* SWAP */ c = *mid; *mid = *j; *j = c; } } /* Semi-standard quicksort partitioning/swapping */ for (i = base, j = max - 1;;) { while (i < mid && (i->key < mid->key || (i->key == mid->key && i->val <= mid->val))) i++; while (j > mid) { if (mid->key < j->key || (mid->key == j->key && mid->val <= j->val)) { j--; continue; } tmp = i + 1; /* value of i after swap */ if (i == mid) /* j <-> mid, new mid is j */ mid = jj = j; else /* i <-> j */ jj = j--; goto swap; } if (i == mid) break; else { /* i <-> mid, new mid is i */ jj = mid; tmp = mid = i; /* value of i after swap */ j--; } swap: c = *i; *i = *jj; *jj = c; i = tmp; } i = (j = mid) + 1; if ((lo = (j - base)>>1) <= (hi = (max - i)>>1)) { if (lo >= THRESH) keyvaliqst(base, j); base = i; lo = hi; } else { if (hi >= THRESH) keyvaliqst(i, max); max = j; } } while (lo >= THRESH); } metis-edf-4.1/Lib/mkwayfmh.c0000644000372500037370000005163011115455203016225 0ustar courtoisastergrp /* * mkwayfmh.c * * This file contains code that implements the multilevel k-way refinement * * Started 7/28/97 * George * * $Id: mkwayfmh.c,v 1.1 1998/11/27 17:59:24 karypis Exp $ * */ #include /************************************************************************* * This function performs k-way refinement **************************************************************************/ void MCRandom_KWayEdgeRefineHorizontal(CtrlType *ctrl, GraphType *graph, long nparts, float *orgubvec, long npasses) { long i, ii, iii, j, jj, k, l, pass, nvtxs, ncon, nmoves, nbnd, myndegrees, same; long from, me, to, oldcut, gain; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *perm, *bndptr, *bndind; EDegreeType *myedegrees; RInfoType *myrinfo; float *npwgts, *nvwgt, *minwgt, *maxwgt, maxlb, minlb, ubvec[MAXNCON], tvec[MAXNCON]; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; npwgts = graph->npwgts; /* Setup the weight intervals of the various subdomains */ minwgt = fwspacemalloc(ctrl, nparts*ncon); maxwgt = fwspacemalloc(ctrl, nparts*ncon); /* See if the orgubvec consists of identical constraints */ maxlb = minlb = orgubvec[0]; for (i=1; i maxlb ? orgubvec[i] : maxlb); } same = (fabs(maxlb-minlb) < .01 ? 1 : 0); /* Let's not get very optimistic. Let Balancing do the work */ ComputeHKWayLoadImbalance(ncon, nparts, npwgts, ubvec); for (i=0; i maxlb ? ubvec[i] : maxlb); for (i=0; idbglvl&DBG_REFINE) { printf("Partitions: [%5.4f %5.4f], Nv-Nb[%6ld %6ld]. Cut: %6ld, LB: ", npwgts[samin(ncon*nparts, npwgts)], npwgts[samax(ncon*nparts, npwgts)], graph->nvtxs, graph->nbnd, graph->mincut); ComputeHKWayLoadImbalance(ncon, nparts, npwgts, tvec); for (i=0; imincut); oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (nmoves=iii=0; iiinbnd; iii++) { ii = perm[iii]; if (ii >= nbnd) continue; i = bndind[ii]; myrinfo = graph->rinfo+i; if (myrinfo->ed >= myrinfo->id) { /* Total ED is too high */ from = where[i]; nvwgt = graph->nvwgt+i*ncon; if (myrinfo->id > 0 && AreAllHVwgtsBelow(ncon, 1.0, npwgts+from*ncon, -1.0, nvwgt, minwgt+from*ncon)) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; for (k=0; kid; if (gain >= 0 && (AreAllHVwgtsBelow(ncon, 1.0, npwgts+to*ncon, 1.0, nvwgt, maxwgt+to*ncon) || IsHBalanceBetterFT(ncon, nparts, npwgts+from*ncon, npwgts+to*ncon, nvwgt, ubvec))) break; } if (k == myndegrees) continue; /* break out if you did not find a candidate */ for (j=k+1; j myedegrees[k].ed && (AreAllHVwgtsBelow(ncon, 1.0, npwgts+to*ncon, 1.0, nvwgt, maxwgt+to*ncon) || IsHBalanceBetterFT(ncon, nparts, npwgts+from*ncon, npwgts+to*ncon, nvwgt, ubvec))) || (myedegrees[j].ed == myedegrees[k].ed && IsHBalanceBetterTT(ncon, nparts, npwgts+myedegrees[k].pid*ncon, npwgts+to*ncon, nvwgt, ubvec))) k = j; } to = myedegrees[k].pid; if (myedegrees[k].ed-myrinfo->id == 0 && !IsHBalanceBetterFT(ncon, nparts, npwgts+from*ncon, npwgts+to*ncon, nvwgt, ubvec) && AreAllHVwgtsBelow(ncon, 1.0, npwgts+from*ncon, 0.0, npwgts+from*ncon, maxwgt+from*ncon)) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update where, weight, and ID/ED information of the vertex you moved */ saxpy(ncon, 1.0, nvwgt, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt, 1, npwgts+from*ncon, 1); where[i] = to; myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed-myrinfo->id < 0) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed-myrinfo->id >= 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed-myrinfo->id < 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } nmoves++; } } graph->nbnd = nbnd; if (ctrl->dbglvl&DBG_REFINE) { printf("\t [%5.4f %5.4f], Nb: %6ld, Nmoves: %5ld, Cut: %6ld, LB: ", npwgts[samin(ncon*nparts, npwgts)], npwgts[samax(ncon*nparts, npwgts)], nbnd, nmoves, graph->mincut); ComputeHKWayLoadImbalance(ncon, nparts, npwgts, tvec); for (i=0; imincut == oldcut) break; } fwspacefree(ctrl, ncon*nparts); fwspacefree(ctrl, ncon*nparts); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *ctrl, GraphType *graph, long nparts, float *ubvec, long npasses) { long i, ii, iii, j, jj, k, l, pass, nvtxs, ncon, nbnd, myndegrees, oldgain, gain, nmoves; long from, me, to, oldcut; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *perm, *bndptr, *bndind, *moved; EDegreeType *myedegrees; RInfoType *myrinfo; PQueueType queue; float *npwgts, *nvwgt, *minwgt, *maxwgt, tvec[MAXNCON]; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; npwgts = graph->npwgts; /* Setup the weight intervals of the various subdomains */ minwgt = fwspacemalloc(ctrl, ncon*nparts); maxwgt = fwspacemalloc(ctrl, ncon*nparts); for (i=0; iadjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]); if (ctrl->dbglvl&DBG_REFINE) { printf("Partitions: [%5.4f %5.4f], Nv-Nb[%6ld %6ld]. Cut: %6ld, LB: ", npwgts[samin(ncon*nparts, npwgts)], npwgts[samax(ncon*nparts, npwgts)], graph->nvtxs, graph->nbnd, graph->mincut); ComputeHKWayLoadImbalance(ncon, nparts, npwgts, tvec); for (i=0; imincut); /* Check to see if things are out of balance, given the tolerance */ if (MocIsHBalanced(ncon, nparts, npwgts, ubvec)) break; PQueueReset(&queue); idxset(nvtxs, -1, moved); oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iirinfo[i].ed - graph->rinfo[i].id); moved[i] = 2; } nmoves = 0; for (;;) { if ((i = PQueueGetMax(&queue)) == -1) break; moved[i] = 1; myrinfo = graph->rinfo+i; from = where[i]; nvwgt = graph->nvwgt+i*ncon; if (AreAllHVwgtsBelow(ncon, 1.0, npwgts+from*ncon, -1.0, nvwgt, minwgt+from*ncon)) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; for (k=0; kid >= 0) j++; if (!AreAllHVwgtsAbove(ncon, 1.0, npwgts+to*ncon, 0.0, nvwgt, minwgt+to*ncon) && AreAllHVwgtsBelow(ncon, 1.0, npwgts+to*ncon, 1.0, nvwgt, maxwgt+to*ncon)) j++; if (j == 0) continue; /* DELETE if (myedegrees[k].ed-myrinfo->id < 0 && AreAllHVwgtsBelow(ncon, 1.0, npwgts+from*ncon, 0.0, nvwgt, maxwgt+from*ncon) && AreAllHVwgtsAbove(ncon, 1.0, npwgts+to*ncon, 0.0, nvwgt, minwgt+to*ncon) && AreAllHVwgtsBelow(ncon, 1.0, npwgts+to*ncon, 1.0, nvwgt, maxwgt+to*ncon)) continue; */ /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update where, weight, and ID/ED information of the vertex you moved */ saxpy(ncon, 1.0, nvwgt, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt, 1, npwgts+from*ncon, 1); where[i] = to; myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed == 0) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); oldgain = (myrinfo->ed-myrinfo->id); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed > 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed == 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } /* Update the queue */ if (me == to || me == from) { gain = myrinfo->ed-myrinfo->id; if (moved[ii] == 2) { if (myrinfo->ed > 0) PQueueUpdate(&queue, ii, oldgain, gain); else { PQueueDelete(&queue, ii, oldgain); moved[ii] = -1; } } else if (moved[ii] == -1 && myrinfo->ed > 0) { PQueueInsert(&queue, ii, gain); moved[ii] = 2; } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } nmoves++; } graph->nbnd = nbnd; if (ctrl->dbglvl&DBG_REFINE) { printf("\t [%5.4f %5.4f], Nb: %6ld, Nmoves: %5ld, Cut: %6ld, LB: ", npwgts[samin(ncon*nparts, npwgts)], npwgts[samax(ncon*nparts, npwgts)], nbnd, nmoves, graph->mincut); ComputeHKWayLoadImbalance(ncon, nparts, npwgts, tvec); for (i=0; i limit[i]) return 0; return 1; } /************************************************************************* * This function checks if the vertex weights of two vertices are above * a given set of values **************************************************************************/ long AreAllHVwgtsAbove(long ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float *limit) { long i; for (i=0; i max) max = npwgts[j*ncon+i]; } lbvec[i] = max*nparts; } } /************************************************************************* * This function determines if a partitioning is horizontally balanced **************************************************************************/ long MocIsHBalanced(long ncon, long nparts, float *npwgts, float *ubvec) { long i, j; float max; for (i=0; i max) max = npwgts[j*ncon+i]; } if (ubvec[i] < max*nparts) return 0; } return 1; } /************************************************************************* * This function checks if the pairwise balance of the between the two * partitions will improve by moving the vertex v from pfrom to pto, * subject to the target partition weights of tfrom, and tto respectively **************************************************************************/ long IsHBalanceBetterFT(long ncon, long nparts, float *pfrom, float *pto, float *vwgt, float *ubvec) { long i, j, k; float blb1=0.0, alb1=0.0, sblb=0.0, salb=0.0; float blb2=0.0, alb2=0.0; float temp; for (i=0; i m11) return 0; if (m22 < m12) return 1; if (m22 > m12) return 0; return sm2 < sm1; } metis-edf-4.1/Lib/frename.c0000644000372500037370000004304211115455203016015 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * frename.c * * This file contains some renaming routines to deal with different Fortran compilers * * Started 9/15/97 * George * * $Id: frename.c,v 1.1 1998/11/27 17:59:14 karypis Exp $ * */ #include void METIS_PARTGRAPHRECURSIVE(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_partgraphrecursive(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_partgraphrecursive_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_partgraphrecursive__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void METIS_WPARTGRAPHRECURSIVE(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void metis_wpartgraphrecursive(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void metis_wpartgraphrecursive_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void metis_wpartgraphrecursive__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void METIS_PARTGRAPHKWAY(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_partgraphkway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_partgraphkway_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_partgraphkway__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_PartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void METIS_WPARTGRAPHKWAY(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void metis_wpartgraphkway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void metis_wpartgraphkway_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void metis_wpartgraphkway__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { METIS_WPartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); } void METIS_EDGEND(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_EdgeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void metis_edgend(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_EdgeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void metis_edgend_(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_EdgeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void metis_edgend__(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_EdgeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void METIS_NODEND(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void metis_nodend(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void metis_nodend_(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void metis_nodend__(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeND(nvtxs, xadj, adjncy, numflag, options, perm, iperm); } void METIS_NODEWND(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeWND(nvtxs, xadj, adjncy, vwgt, numflag, options, perm, iperm); } void metis_nodewnd(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeWND(nvtxs, xadj, adjncy, vwgt, numflag, options, perm, iperm); } void metis_nodewnd_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeWND(nvtxs, xadj, adjncy, vwgt, numflag, options, perm, iperm); } void metis_nodewnd__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, long *numflag, long *options, idxtype *perm, idxtype *iperm) { METIS_NodeWND(nvtxs, xadj, adjncy, vwgt, numflag, options, perm, iperm); } void METIS_PARTMESHNODAL(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshNodal(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void metis_partmeshnodal(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshNodal(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void metis_partmeshnodal_(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshNodal(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void metis_partmeshnodal__(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshNodal(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void METIS_PARTMESHDUAL(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshDual(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void metis_partmeshdual(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshDual(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void metis_partmeshdual_(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshDual(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void metis_partmeshdual__(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { METIS_PartMeshDual(ne, nn, elmnts, etype, numflag, nparts, edgecut, epart, npart); } void METIS_MESHTONODAL(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToNodal(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void metis_meshtonodal(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToNodal(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void metis_meshtonodal_(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToNodal(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void metis_meshtonodal__(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToNodal(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void METIS_MESHTODUAL(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToDual(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void metis_meshtodual(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToDual(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void metis_meshtodual_(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToDual(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void metis_meshtodual__(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, idxtype *dxadj, idxtype *dadjncy) { METIS_MeshToDual(ne, nn, elmnts, etype, numflag, dxadj, dadjncy); } void METIS_ESTIMATEMEMORY(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *optype, long *nbytes) { METIS_EstimateMemory(nvtxs, xadj, adjncy, numflag, optype, nbytes); } void metis_estimatememory(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *optype, long *nbytes) { METIS_EstimateMemory(nvtxs, xadj, adjncy, numflag, optype, nbytes); } void metis_estimatememory_(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *optype, long *nbytes) { METIS_EstimateMemory(nvtxs, xadj, adjncy, numflag, optype, nbytes); } void metis_estimatememory__(long *nvtxs, idxtype *xadj, idxtype *adjncy, long *numflag, long *optype, long *nbytes) { METIS_EstimateMemory(nvtxs, xadj, adjncy, numflag, optype, nbytes); } void METIS_MCPARTGRAPHRECURSIVE(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphRecursive(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_mcpartgraphrecursive(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphRecursive(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_mcpartgraphrecursive_(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphRecursive(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void metis_mcpartgraphrecursive__(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphRecursive(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } void METIS_MCPARTGRAPHKWAY(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *rubvec, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphKway(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, rubvec, options, edgecut, part); } void metis_mcpartgraphkway(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *rubvec, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphKway(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, rubvec, options, edgecut, part); } void metis_mcpartgraphkway_(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *rubvec, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphKway(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, rubvec, options, edgecut, part); } void metis_mcpartgraphkway__(long *nvtxs, long *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *rubvec, long *options, long *edgecut, idxtype *part) { METIS_mCPartGraphKway(nvtxs, ncon, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, rubvec, options, edgecut, part); } void METIS_PARTGRAPHVKWAY(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, long *options, long *volume, idxtype *part) { METIS_PartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part); } void metis_partgraphvkway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, long *options, long *volume, idxtype *part) { METIS_PartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part); } void metis_partgraphvkway_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, long *options, long *volume, idxtype *part) { METIS_PartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part); } void metis_partgraphvkway__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, long *options, long *volume, idxtype *part) { METIS_PartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part); } void METIS_WPARTGRAPHVKWAY(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *volume, idxtype *part) { METIS_WPartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, tpwgts, options, volume, part); } void metis_wpartgraphvkway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *volume, idxtype *part) { METIS_WPartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, tpwgts, options, volume, part); } void metis_wpartgraphvkway_(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *volume, idxtype *part) { METIS_WPartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, tpwgts, options, volume, part); } void metis_wpartgraphvkway__(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *volume, idxtype *part) { METIS_WPartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, tpwgts, options, volume, part); } metis-edf-4.1/Lib/kwayrefine.c0000644000372500037370000003055111115455203016545 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * kwayrefine.c * * This file contains the driving routines for multilevel k-way refinement * * Started 7/28/97 * George * * $Id: kwayrefine.c,v 1.1 1998/11/27 17:59:17 karypis Exp $ */ #include /************************************************************************* * This function is the entry point of refinement **************************************************************************/ void RefineKWay(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, long nparts, float *tpwgts, float ubfactor) { long i, nlevels, mustfree=0; GraphType *ptr; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); /* Compute the parameters of the coarsest graph */ ComputeKWayPartitionParams(ctrl, graph, nparts); /* Take care any non-contiguity */ IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->AuxTmr1)); if (ctrl->RType == RTYPE_KWAYRANDOM_MCONN) { EliminateComponents(ctrl, graph, nparts, tpwgts, 1.25); EliminateSubDomainEdges(ctrl, graph, nparts, tpwgts); EliminateComponents(ctrl, graph, nparts, tpwgts, 1.25); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->AuxTmr1)); /* Determine how many levels are there */ for (ptr=graph, nlevels=0; ptr!=orggraph; ptr=ptr->finer, nlevels++); for (i=0; ;i++) { /* PrintSubDomainGraph(graph, nparts, graph->where); */ if (ctrl->RType == RTYPE_KWAYRANDOM_MCONN && (i == nlevels/2 || i == nlevels/2+1)) EliminateSubDomainEdges(ctrl, graph, nparts, tpwgts); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); if (2*i >= nlevels && !IsBalanced(graph->pwgts, nparts, tpwgts, 1.04*ubfactor)) { ComputeKWayBalanceBoundary(ctrl, graph, nparts); if (ctrl->RType == RTYPE_KWAYRANDOM_MCONN) Greedy_KWayEdgeBalanceMConn(ctrl, graph, nparts, tpwgts, ubfactor, 1); else Greedy_KWayEdgeBalance(ctrl, graph, nparts, tpwgts, ubfactor, 1); ComputeKWayBoundary(ctrl, graph, nparts); } switch (ctrl->RType) { case RTYPE_KWAYRANDOM: Random_KWayEdgeRefine(ctrl, graph, nparts, tpwgts, ubfactor, 10, 1); break; case RTYPE_KWAYGREEDY: Greedy_KWayEdgeRefine(ctrl, graph, nparts, tpwgts, ubfactor, 10); break; case RTYPE_KWAYRANDOM_MCONN: Random_KWayEdgeRefineMConn(ctrl, graph, nparts, tpwgts, ubfactor, 10, 1); break; } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; GKfree(&graph->gdata, LTERM); /* Deallocate the graph related arrays */ graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); if (graph->vwgt == NULL) { graph->vwgt = idxsmalloc(graph->nvtxs, 1, "RefineKWay: graph->vwgt"); graph->adjwgt = idxsmalloc(graph->nedges, 1, "RefineKWay: graph->adjwgt"); mustfree = 1; } ProjectKWayPartition(ctrl, graph, nparts); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } if (!IsBalanced(graph->pwgts, nparts, tpwgts, ubfactor)) { ComputeKWayBalanceBoundary(ctrl, graph, nparts); if (ctrl->RType == RTYPE_KWAYRANDOM_MCONN) { Greedy_KWayEdgeBalanceMConn(ctrl, graph, nparts, tpwgts, ubfactor, 8); Random_KWayEdgeRefineMConn(ctrl, graph, nparts, tpwgts, ubfactor, 10, 0); } else { Greedy_KWayEdgeBalance(ctrl, graph, nparts, tpwgts, ubfactor, 8); Random_KWayEdgeRefine(ctrl, graph, nparts, tpwgts, ubfactor, 10, 0); } } /* Take care any trivial non-contiguity */ IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->AuxTmr2)); EliminateComponents(ctrl, graph, nparts, tpwgts, ubfactor); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->AuxTmr2)); if (mustfree) GKfree(&graph->vwgt, &graph->adjwgt, LTERM); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } /************************************************************************* * This function allocates memory for k-way edge refinement **************************************************************************/ void AllocateKWayPartitionMemory(CtrlType *ctrl, GraphType *graph, long nparts) { long nvtxs, pad64; nvtxs = graph->nvtxs; pad64 = (3*nvtxs+nparts)%2; graph->rdata = idxmalloc(3*nvtxs+nparts+(sizeof(RInfoType)/sizeof(idxtype))*nvtxs+pad64, "AllocateKWayPartitionMemory: rdata"); graph->pwgts = graph->rdata; graph->where = graph->rdata + nparts; graph->bndptr = graph->rdata + nvtxs + nparts; graph->bndind = graph->rdata + 2*nvtxs + nparts; graph->rinfo = (RInfoType *)(graph->rdata + 3*nvtxs+nparts + pad64); /* if (ctrl->wspace.edegrees != NULL) free(ctrl->wspace.edegrees); ctrl->wspace.edegrees = (EDegreeType *)GKmalloc(graph->nedges*sizeof(EDegreeType), "AllocateKWayPartitionMemory: edegrees"); */ } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void ComputeKWayPartitionParams(CtrlType *ctrl, GraphType *graph, long nparts) { long i, j, k, l, nvtxs, nbnd, mincut, me, other; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *pwgts, *where, *bndind, *bndptr; RInfoType *rinfo, *myrinfo; EDegreeType *myedegrees; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; pwgts = idxset(nparts, 0, graph->pwgts); bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); rinfo = graph->rinfo; /*------------------------------------------------------------ / Compute now the id/ed degrees /------------------------------------------------------------*/ ctrl->wspace.cdegree = 0; nbnd = mincut = 0; for (i=0; iid = myrinfo->ed = myrinfo->ndegrees = 0; myrinfo->edegrees = NULL; for (j=xadj[i]; jed += adjwgt[j]; } myrinfo->id = graph->adjwgtsum[i] - myrinfo->ed; if (myrinfo->ed > 0) mincut += myrinfo->ed; if (myrinfo->ed-myrinfo->id >= 0) BNDInsert(nbnd, bndind, bndptr, i); /* Time to compute the particular external degrees */ if (myrinfo->ed > 0) { myedegrees = myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[i+1]-xadj[i]; for (j=xadj[i]; jndegrees; k++) { if (myedegrees[k].pid == other) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = other; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } } ASSERT(myrinfo->ndegrees <= xadj[i+1]-xadj[i]); } } graph->mincut = mincut/2; graph->nbnd = nbnd; } /************************************************************************* * This function projects a partition, and at the same time computes the * parameters for refinement. **************************************************************************/ void ProjectKWayPartition(CtrlType *ctrl, GraphType *graph, long nparts) { long i, j, k, nvtxs, nbnd, me, other, istart, iend, ndegrees; idxtype *xadj, *adjncy, *adjwgt, *adjwgtsum; idxtype *cmap, *where, *bndptr, *bndind; idxtype *cwhere; GraphType *cgraph; RInfoType *crinfo, *rinfo, *myrinfo; EDegreeType *myedegrees; idxtype *htable; cgraph = graph->coarser; cwhere = cgraph->where; crinfo = cgraph->rinfo; nvtxs = graph->nvtxs; cmap = graph->cmap; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; AllocateKWayPartitionMemory(ctrl, graph, nparts); where = graph->where; rinfo = graph->rinfo; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /* Go through and project partition and compute id/ed for the nodes */ for (i=0; iwspace.cdegree = 0; for (nbnd=0, i=0; iid = myrinfo->ed = myrinfo->ndegrees = 0; myrinfo->edegrees = NULL; myrinfo->id = adjwgtsum[i]; if (cmap[i] > 0) { /* If it is an interface node. Note cmap[i] = crinfo[cmap[i]].ed */ istart = xadj[i]; iend = xadj[i+1]; myedegrees = myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += iend-istart; ndegrees = 0; for (j=istart; jed += adjwgt[j]; if ((k = htable[other]) == -1) { htable[other] = ndegrees; myedegrees[ndegrees].pid = other; myedegrees[ndegrees++].ed = adjwgt[j]; } else { myedegrees[k].ed += adjwgt[j]; } } } myrinfo->id -= myrinfo->ed; /* Remove space for edegrees if it was interior */ if (myrinfo->ed == 0) { myrinfo->edegrees = NULL; ctrl->wspace.cdegree -= iend-istart; } else { if (myrinfo->ed-myrinfo->id >= 0) BNDInsert(nbnd, bndind, bndptr, i); myrinfo->ndegrees = ndegrees; for (j=0; jpwgts, graph->pwgts); graph->mincut = cgraph->mincut; graph->nbnd = nbnd; FreeGraph(graph->coarser); graph->coarser = NULL; idxwspacefree(ctrl, nparts); ASSERT(CheckBnd2(graph)); } /************************************************************************* * This function checks if the partition weights are within the balance * contraints **************************************************************************/ long IsBalanced(idxtype *pwgts, long nparts, float *tpwgts, float ubfactor) { long i, j, tvwgt; tvwgt = idxsum(nparts, pwgts); for (i=0; i tpwgts[i]*tvwgt*(ubfactor+0.005)) return 0; } return 1; } /************************************************************************* * This function computes the boundary definition for balancing **************************************************************************/ void ComputeKWayBoundary(CtrlType *ctrl, GraphType *graph, long nparts) { long i, nvtxs, nbnd; idxtype *bndind, *bndptr; nvtxs = graph->nvtxs; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /*------------------------------------------------------------ / Compute the new boundary /------------------------------------------------------------*/ nbnd = 0; for (i=0; irinfo[i].ed-graph->rinfo[i].id >= 0) BNDInsert(nbnd, bndind, bndptr, i); } graph->nbnd = nbnd; } /************************************************************************* * This function computes the boundary definition for balancing **************************************************************************/ void ComputeKWayBalanceBoundary(CtrlType *ctrl, GraphType *graph, long nparts) { long i, nvtxs, nbnd; idxtype *bndind, *bndptr; nvtxs = graph->nvtxs; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /*------------------------------------------------------------ / Compute the new boundary /------------------------------------------------------------*/ nbnd = 0; for (i=0; irinfo[i].ed > 0) BNDInsert(nbnd, bndind, bndptr, i); } graph->nbnd = nbnd; } metis-edf-4.1/Lib/graph.c0000644000372500037370000003777711115455203015523 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * graph.c * * This file contains functions that deal with setting up the graphs * for METIS. * * Started 7/25/97 * George * * $Id: graph.c,v 1.1 1998/11/27 17:59:15 karypis Exp $ * */ #include /************************************************************************* * This function sets up the graph from the user input **************************************************************************/ void SetUpGraph(GraphType *graph, long OpType, long nvtxs, long ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long wgtflag) { long i, j, k, sum, gsize; float *nvwgt; idxtype tvwgt[MAXNCON]; if (OpType == OP_KMETIS && ncon == 1 && (wgtflag&2) == 0 && (wgtflag&1) == 0) { SetUpGraphKway(graph, nvtxs, xadj, adjncy); return; } InitGraph(graph); graph->nvtxs = nvtxs; graph->nedges = xadj[nvtxs]; graph->ncon = ncon; graph->xadj = xadj; graph->adjncy = adjncy; if (ncon == 1) { /* We are in the non mC mode */ gsize = 0; if ((wgtflag&2) == 0) gsize += nvtxs; if ((wgtflag&1) == 0) gsize += graph->nedges; gsize += 2*nvtxs; graph->gdata = idxmalloc(gsize, "SetUpGraph: gdata"); /* Create the vertex/edge weight vectors if they are not supplied */ gsize = 0; if ((wgtflag&2) == 0) { vwgt = graph->vwgt = idxset(nvtxs, 1, graph->gdata); gsize += nvtxs; } else graph->vwgt = vwgt; if ((wgtflag&1) == 0) { adjwgt = graph->adjwgt = idxset(graph->nedges, 1, graph->gdata+gsize); gsize += graph->nedges; } else graph->adjwgt = adjwgt; /* Compute the initial values of the adjwgtsum */ graph->adjwgtsum = graph->gdata + gsize; gsize += nvtxs; for (i=0; iadjwgtsum[i] = sum; } graph->cmap = graph->gdata + gsize; gsize += nvtxs; } else { /* Set up the graph in MOC mode */ gsize = 0; if ((wgtflag&1) == 0) gsize += graph->nedges; gsize += 2*nvtxs; graph->gdata = idxmalloc(gsize, "SetUpGraph: gdata"); gsize = 0; for (i=0; invwgt = fmalloc(ncon*nvtxs, "SetUpGraph: nvwgt"); for (i=0; iadjwgt = idxset(graph->nedges, 1, graph->gdata+gsize); gsize += graph->nedges; } else graph->adjwgt = adjwgt; /* Compute the initial values of the adjwgtsum */ graph->adjwgtsum = graph->gdata + gsize; gsize += nvtxs; for (i=0; iadjwgtsum[i] = sum; } graph->cmap = graph->gdata + gsize; gsize += nvtxs; } if (OpType != OP_KMETIS && OpType != OP_KVMETIS) { graph->label = idxmalloc(nvtxs, "SetUpGraph: label"); for (i=0; ilabel[i] = i; } } /************************************************************************* * This function sets up the graph from the user input **************************************************************************/ void SetUpGraphKway(GraphType *graph, long nvtxs, idxtype *xadj, idxtype *adjncy) { long i; InitGraph(graph); graph->nvtxs = nvtxs; graph->nedges = xadj[nvtxs]; graph->ncon = 1; graph->xadj = xadj; graph->vwgt = NULL; graph->adjncy = adjncy; graph->adjwgt = NULL; graph->gdata = idxmalloc(2*nvtxs, "SetUpGraph: gdata"); graph->adjwgtsum = graph->gdata; graph->cmap = graph->gdata + nvtxs; /* Compute the initial values of the adjwgtsum */ for (i=0; iadjwgtsum[i] = xadj[i+1]-xadj[i]; } /************************************************************************* * This function sets up the graph from the user input **************************************************************************/ void SetUpGraph2(GraphType *graph, long nvtxs, long ncon, idxtype *xadj, idxtype *adjncy, float *nvwgt, idxtype *adjwgt) { long i, j, sum; InitGraph(graph); graph->nvtxs = nvtxs; graph->nedges = xadj[nvtxs]; graph->ncon = ncon; graph->xadj = xadj; graph->adjncy = adjncy; graph->adjwgt = adjwgt; graph->nvwgt = fmalloc(nvtxs*ncon, "SetUpGraph2: graph->nvwgt"); scopy(nvtxs*ncon, nvwgt, graph->nvwgt); graph->gdata = idxmalloc(2*nvtxs, "SetUpGraph: gdata"); /* Compute the initial values of the adjwgtsum */ graph->adjwgtsum = graph->gdata; for (i=0; iadjwgtsum[i] = sum; } graph->cmap = graph->gdata+nvtxs; graph->label = idxmalloc(nvtxs, "SetUpGraph: label"); for (i=0; ilabel[i] = i; } /************************************************************************* * This function sets up the graph from the user input **************************************************************************/ void VolSetUpGraph(GraphType *graph, long OpType, long nvtxs, long ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long wgtflag) { long i, j, k, sum, gsize; idxtype *adjwgt; float *nvwgt; idxtype tvwgt[MAXNCON]; InitGraph(graph); graph->nvtxs = nvtxs; graph->nedges = xadj[nvtxs]; graph->ncon = ncon; graph->xadj = xadj; graph->adjncy = adjncy; if (ncon == 1) { /* We are in the non mC mode */ gsize = graph->nedges; /* This is for the edge weights */ if ((wgtflag&2) == 0) gsize += nvtxs; /* vwgts */ if ((wgtflag&1) == 0) gsize += nvtxs; /* vsize */ gsize += 2*nvtxs; graph->gdata = idxmalloc(gsize, "SetUpGraph: gdata"); /* Create the vertex/edge weight vectors if they are not supplied */ gsize = 0; if ((wgtflag&2) == 0) { vwgt = graph->vwgt = idxset(nvtxs, 1, graph->gdata); gsize += nvtxs; } else graph->vwgt = vwgt; if ((wgtflag&1) == 0) { vsize = graph->vsize = idxset(nvtxs, 1, graph->gdata); gsize += nvtxs; } else graph->vsize = vsize; /* Allocate memory for edge weights and initialize them to the sum of the vsize */ adjwgt = graph->adjwgt = graph->gdata+gsize; gsize += graph->nedges; for (i=0; iadjwgtsum = graph->gdata + gsize; gsize += nvtxs; for (i=0; iadjwgtsum[i] = sum; } graph->cmap = graph->gdata + gsize; gsize += nvtxs; } else { /* Set up the graph in MOC mode */ gsize = graph->nedges; if ((wgtflag&1) == 0) gsize += nvtxs; gsize += 2*nvtxs; graph->gdata = idxmalloc(gsize, "SetUpGraph: gdata"); gsize = 0; /* Create the normalized vertex weights along each constrain */ if ((wgtflag&2) == 0) vwgt = idxsmalloc(nvtxs, 1, "SetUpGraph: vwgt"); for (i=0; invwgt = fmalloc(ncon*nvtxs, "SetUpGraph: nvwgt"); for (i=0; ivsize = idxset(nvtxs, 1, graph->gdata); gsize += nvtxs; } else graph->vsize = vsize; /* Allocate memory for edge weights and initialize them to the sum of the vsize */ adjwgt = graph->adjwgt = graph->gdata+gsize; gsize += graph->nedges; for (i=0; iadjwgtsum = graph->gdata + gsize; gsize += nvtxs; for (i=0; iadjwgtsum[i] = sum; } graph->cmap = graph->gdata + gsize; gsize += nvtxs; } if (OpType != OP_KVMETIS) { graph->label = idxmalloc(nvtxs, "SetUpGraph: label"); for (i=0; ilabel[i] = i; } } /************************************************************************* * This function randomly permutes the adjacency lists of a graph **************************************************************************/ void RandomizeGraph(GraphType *graph) { long i, j, k, l, tmp, nvtxs; idxtype *xadj, *adjncy, *adjwgt; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; for (i=0; invtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; touched = idxsmalloc(nvtxs, 0, "IsConnected: touched"); queue = idxmalloc(nvtxs, "IsConnected: queue"); cptr = idxmalloc(nvtxs, "IsConnected: cptr"); nleft = 0; for (i=0; i 1 && report) { printf("The graph has %ld connected components in partition %ld:\t", ncmps, pid); for (i=0; ivwgt[queue[j]]; printf("[%5ld %5ld] ", cptr[i+1]-cptr[i], wgt); /* if (cptr[i+1]-cptr[i] == 1) printf("[%ld %ld] ", queue[cptr[i]], xadj[queue[cptr[i]]+1]-xadj[queue[cptr[i]]]); */ } printf("\n"); } GKfree(&touched, &queue, &cptr, LTERM); return (ncmps == 1 ? 1 : 0); } /************************************************************************* * This function checks whether a graph is contigous or not **************************************************************************/ long IsConnected(CtrlType *ctrl, GraphType *graph, long report) { long i, j, k, nvtxs, first, last; idxtype *xadj, *adjncy, *touched, *queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; touched = idxsmalloc(nvtxs, 0, "IsConnected: touched"); queue = idxmalloc(nvtxs, "IsConnected: queue"); touched[0] = 1; queue[0] = 0; first = 0; last = 1; while (first < last) { i = queue[first++]; for (j=xadj[i]; jnvtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; touched = idxsmalloc(nvtxs, 0, "IsConnected: touched"); queue = idxmalloc(nvtxs, "IsConnected: queue"); cptr = idxmalloc(nvtxs, "IsConnected: cptr"); nleft = nvtxs; touched[0] = 1; queue[0] = 0; first = 0; last = 1; cptr[0] = 0; /* This actually points to queue */ ncmps = 0; while (first != nleft) { if (first == last) { /* Find another starting vertex */ cptr[++ncmps] = first; for (i=0; i 1 && report) { printf("%ld connected components:\t", ncmps); for (i=0; i 200) printf("[%5ld] ", cptr[i+1]-cptr[i]); } printf("\n"); } GKfree(&touched, &queue, &cptr, LTERM); return (ncmps == 1 ? 1 : 0); } /************************************************************************* * This function returns the number of connected components in cptr,cind * The separator of the graph is used to split it and then find its components. **************************************************************************/ long FindComponents(CtrlType *ctrl, GraphType *graph, idxtype *cptr, idxtype *cind) { long i, j, k, nvtxs, first, last, nleft, ncmps, wgt; idxtype *xadj, *adjncy, *where, *touched, *queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; where = graph->where; touched = idxsmalloc(nvtxs, 0, "IsConnected: queue"); for (i=0; inbnd; i++) touched[graph->bndind[i]] = 1; queue = cind; nleft = 0; for (i=0; i /************************************************************************* * This function computes cuts and balance information **************************************************************************/ void ComputePartitionInfo(GraphType *graph, long nparts, idxtype *where) { long i, j, k, nvtxs, ncon, mustfree=0; idxtype *xadj, *adjncy, *vwgt, *adjwgt, *kpwgts, *tmpptr; idxtype *padjncy, *padjwgt, *padjcut; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; adjwgt = graph->adjwgt; if (vwgt == NULL) { vwgt = graph->vwgt = idxsmalloc(nvtxs, 1, "vwgt"); mustfree = 1; } if (adjwgt == NULL) { adjwgt = graph->adjwgt = idxsmalloc(xadj[nvtxs], 1, "adjwgt"); mustfree += 2; } printf("%ld-way Cut: %5ld, Vol: %5ld, ", nparts, ComputeCut(graph, where), ComputeVolume(graph, where)); /* Compute balance information */ kpwgts = idxsmalloc(ncon*nparts, 0, "ComputePartitionInfo: kpwgts"); for (i=0; iwhere; graph->where = where; for (i=0; iwhere = tmpptr; if (mustfree == 1 || mustfree == 3) { free(vwgt); graph->vwgt = NULL; } if (mustfree == 2 || mustfree == 3) { free(adjwgt); graph->adjwgt = NULL; } GKfree(&kpwgts, &padjncy, &padjwgt, &padjcut, LTERM); } /************************************************************************* * This function computes cuts and balance information **************************************************************************/ void ComputePartitionInfoBipartite(GraphType *graph, long nparts, idxtype *where) { long i, j, k, nvtxs, ncon, mustfree=0; idxtype *xadj, *adjncy, *vwgt, *vsize, *adjwgt, *kpwgts, *tmpptr; idxtype *padjncy, *padjwgt, *padjcut; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; vsize = graph->vsize; adjwgt = graph->adjwgt; if (vwgt == NULL) { vwgt = graph->vwgt = idxsmalloc(nvtxs, 1, "vwgt"); mustfree = 1; } if (adjwgt == NULL) { adjwgt = graph->adjwgt = idxsmalloc(xadj[nvtxs], 1, "adjwgt"); mustfree += 2; } printf("%ld-way Cut: %5ld, Vol: %5ld, ", nparts, ComputeCut(graph, where), ComputeVolume(graph, where)); /* Compute balance information */ kpwgts = idxsmalloc(ncon*nparts, 0, "ComputePartitionInfo: kpwgts"); for (i=0; ivwgt = NULL; } if (mustfree == 2 || mustfree == 3) { free(adjwgt); graph->adjwgt = NULL; } GKfree(&kpwgts, &padjncy, &padjwgt, &padjcut, LTERM); } /************************************************************************* * This function computes the balance of the partitioning **************************************************************************/ void ComputePartitionBalance(GraphType *graph, long nparts, idxtype *where, float *ubvec) { long i, j, nvtxs, ncon; idxtype *kpwgts, *vwgt; float balance; nvtxs = graph->nvtxs; ncon = graph->ncon; vwgt = graph->vwgt; kpwgts = idxsmalloc(nparts, 0, "ComputePartitionInfo: kpwgts"); if (vwgt == NULL) { for (i=0; invtxs; i++) kpwgts[where[i]] += vwgt[i*ncon+j]; ubvec[j] = 1.0*nparts*kpwgts[idxamax(nparts, kpwgts)]/(1.0*idxsum(nparts, kpwgts)); } } free(kpwgts); } /************************************************************************* * This function computes the balance of the element partitioning **************************************************************************/ float ComputeElementBalance(long ne, long nparts, idxtype *where) { long i; idxtype *kpwgts; float balance; kpwgts = idxsmalloc(nparts, 0, "ComputeElementBalance: kpwgts"); for (i=0; i /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Random_KWayVolRefine(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses, long ffactor) { long i, ii, iii, j, jj, k, kk, l, u, pass, nvtxs, nmoves, tvwgt, myndegrees, xgain; long from, me, to, oldcut, oldvol, vwgt; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *itpwgts, *updind, *marker, *phtable; VEDegreeType *myedegrees; VRInfoType *myrinfo; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); updind = idxmalloc(nvtxs, "Random_KWayVolRefine: updind"); marker = idxsmalloc(nvtxs, 0, "Random_KWayVolRefine: marker"); phtable = idxsmalloc(nparts, -1, "Random_KWayVolRefine: phtable"); for (i=0; idbglvl, DBG_REFINE, printf("VolPart: [%5ld %5ld]-[%5ld %5ld], Balance: %3.2f, Nv-Nb[%5ld %5ld]. Cut: %5ld, Vol: %5ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut, graph->minvol)); for (pass=0; passmincut); oldcut = graph->mincut; oldvol = graph->minvol; RandomPermute(graph->nbnd, perm, 1); for (nmoves=iii=0; iiinbnd; iii++) { ii = perm[iii]; if (ii >= graph->nbnd) continue; i = bndind[ii]; myrinfo = graph->vrinfo+i; if (myrinfo->gv >= 0) { /* Total volume gain is too high */ from = where[i]; vwgt = graph->vwgt[i]; if (myrinfo->id > 0 && pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ xgain = (myrinfo->id == 0 && myrinfo->ed > 0 ? graph->vsize[i] : 0); myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; for (k=0; k= 0) break; } if (k == myndegrees) continue; /* break out if you did not find a candidate */ for (j=k+1; j maxwgt[to]) continue; if (myedegrees[j].gv > myedegrees[k].gv || (myedegrees[j].gv == myedegrees[k].gv && myedegrees[j].ed > myedegrees[k].ed) || (myedegrees[j].gv == myedegrees[k].gv && myedegrees[j].ed == myedegrees[k].ed && itpwgts[myedegrees[k].pid]*pwgts[to] < itpwgts[to]*pwgts[myedegrees[k].pid])) k = j; } to = myedegrees[k].pid; j = 0; if (xgain+myedegrees[k].gv > 0 || myedegrees[k].ed-myrinfo->id > 0) j = 1; else if (myedegrees[k].ed-myrinfo->id == 0) { if ((iii&5) == 0 || pwgts[from] >= maxwgt[from] || itpwgts[from]*(pwgts[to]+vwgt) < itpwgts[to]*pwgts[from]) j = 1; } if (j == 0) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ INC_DEC(pwgts[to], pwgts[from], vwgt); graph->mincut -= myedegrees[k].ed-myrinfo->id; graph->minvol -= (xgain+myedegrees[k].gv); where[i] = to; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld from %3ld to %3ld. Gain: [%4ld %4ld]. Cut: %6ld, Vol: %6ld\n", i, from, to, xgain+myedegrees[k].gv, myedegrees[k].ed-myrinfo->id, graph->mincut, graph->minvol)); KWayVolUpdate(ctrl, graph, i, from, to, marker, phtable, updind); nmoves++; /* CheckVolKWayPartitionParams(ctrl, graph, nparts); */ } } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld, Vol: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut, graph->minvol)); if (graph->minvol == oldvol && graph->mincut == oldcut) break; } GKfree(&marker, &updind, &phtable, LTERM); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Random_KWayVolRefineMConn(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses, long ffactor) { long i, ii, iii, j, jj, k, kk, l, u, pass, nvtxs, nmoves, tvwgt, myndegrees, xgain; long from, me, to, oldcut, oldvol, vwgt, nadd, maxndoms; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *itpwgts, *updind, *marker, *phtable; idxtype *pmat, *pmatptr, *ndoms; VEDegreeType *myedegrees; VRInfoType *myrinfo; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); updind = idxmalloc(nvtxs, "Random_KWayVolRefine: updind"); marker = idxsmalloc(nvtxs, 0, "Random_KWayVolRefine: marker"); phtable = idxsmalloc(nparts, -1, "Random_KWayVolRefine: phtable"); pmat = ctrl->wspace.pmat; ndoms = idxwspacemalloc(ctrl, nparts); ComputeVolSubDomainGraph(graph, nparts, pmat, ndoms); for (i=0; idbglvl, DBG_REFINE, printf("VolPart: [%5ld %5ld]-[%5ld %5ld], Balance: %3.2f, Nv-Nb[%5ld %5ld]. Cut: %5ld, Vol: %5ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut, graph->minvol)); for (pass=0; passmincut); maxndoms = ndoms[idxamax(nparts, ndoms)]; oldcut = graph->mincut; oldvol = graph->minvol; RandomPermute(graph->nbnd, perm, 1); for (nmoves=iii=0; iiinbnd; iii++) { ii = perm[iii]; if (ii >= graph->nbnd) continue; i = bndind[ii]; myrinfo = graph->vrinfo+i; if (myrinfo->gv >= 0) { /* Total volume gain is too high */ from = where[i]; vwgt = graph->vwgt[i]; if (myrinfo->id > 0 && pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ xgain = (myrinfo->id == 0 && myrinfo->ed > 0 ? graph->vsize[i] : 0); myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; /* Determine the valid domains */ for (j=0; j maxndoms-1) { phtable[to] = 0; nadd = maxndoms; break; } nadd++; } } if (ndoms[to]+nadd > maxndoms) phtable[to] = 0; if (nadd == 0) phtable[to] = 2; } for (k=0; k= 0) break; } if (k == myndegrees) continue; /* break out if you did not find a candidate */ for (j=k+1; j maxwgt[to]) continue; if (myedegrees[j].gv > myedegrees[k].gv || (myedegrees[j].gv == myedegrees[k].gv && myedegrees[j].ed > myedegrees[k].ed) || (myedegrees[j].gv == myedegrees[k].gv && myedegrees[j].ed == myedegrees[k].ed && itpwgts[myedegrees[k].pid]*pwgts[to] < itpwgts[to]*pwgts[myedegrees[k].pid])) k = j; } to = myedegrees[k].pid; j = 0; if (xgain+myedegrees[k].gv > 0 || myedegrees[k].ed-myrinfo->id > 0) j = 1; else if (myedegrees[k].ed-myrinfo->id == 0) { if ((iii&5) == 0 || phtable[myedegrees[k].pid] == 2 || pwgts[from] >= maxwgt[from] || itpwgts[from]*(pwgts[to]+vwgt) < itpwgts[to]*pwgts[from]) j = 1; } if (j == 0) continue; for (j=0; jmincut -= myedegrees[k].ed-myrinfo->id; graph->minvol -= (xgain+myedegrees[k].gv); where[i] = to; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld from %3ld to %3ld. Gain: [%4ld %4ld]. Cut: %6ld, Vol: %6ld\n", i, from, to, xgain+myedegrees[k].gv, myedegrees[k].ed-myrinfo->id, graph->mincut, graph->minvol)); /* Update pmat to reflect the move of 'i' */ pmat[from*nparts+to] += (myrinfo->id-myedegrees[k].ed); pmat[to*nparts+from] += (myrinfo->id-myedegrees[k].ed); if (pmat[from*nparts+to] == 0) { ndoms[from]--; if (ndoms[from]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[to*nparts+from] == 0) { ndoms[to]--; if (ndoms[to]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } for (j=xadj[i]; j maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[me], maxndoms); maxndoms = ndoms[me]; } } if (pmat[to*nparts+me] == 0) { ndoms[to]++; if (ndoms[to] > maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[to], maxndoms); maxndoms = ndoms[to]; } } pmat[me*nparts+to] += adjwgt[j]; pmat[to*nparts+me] += adjwgt[j]; } } KWayVolUpdate(ctrl, graph, i, from, to, marker, phtable, updind); nmoves++; /* CheckVolKWayPartitionParams(ctrl, graph, nparts); */ } } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld, Vol: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut, graph->minvol)); if (graph->minvol == oldvol && graph->mincut == oldcut) break; } GKfree(&marker, &updind, &phtable, LTERM); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Greedy_KWayVolBalance(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses) { long i, ii, iii, j, jj, k, kk, l, u, pass, nvtxs, nmoves, tvwgt, myndegrees, xgain; long from, me, to, vwgt, gain; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *moved, *bndptr, *bndind, *minwgt, *maxwgt, *itpwgts, *updind, *marker, *phtable; VEDegreeType *myedegrees; VRInfoType *myrinfo; PQueueType queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); updind = idxmalloc(nvtxs, "Random_KWayVolRefine: updind"); marker = idxsmalloc(nvtxs, 0, "Random_KWayVolRefine: marker"); phtable = idxsmalloc(nparts, -1, "Random_KWayVolRefine: phtable"); for (i=0; iadjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]); IFSET(ctrl->dbglvl, DBG_REFINE, printf("VolPart: [%5ld %5ld]-[%5ld %5ld], Balance: %3.2f, Nv-Nb[%5ld %5ld]. Cut: %5ld, Vol: %5ld [B]\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut, graph->minvol)); for (pass=0; passmincut); /* Check to see if things are out of balance, given the tolerance */ for (i=0; i maxwgt[i]) break; } if (i == nparts) /* Things are balanced. Return right away */ break; PQueueReset(&queue); idxset(nvtxs, -1, moved); RandomPermute(graph->nbnd, perm, 1); for (ii=0; iinbnd; ii++) { i = bndind[perm[ii]]; PQueueInsert(&queue, i, graph->vrinfo[i].gv); moved[i] = 2; } for (nmoves=0;;) { if ((i = PQueueGetMax(&queue)) == -1) break; moved[i] = 1; myrinfo = graph->vrinfo+i; from = where[i]; vwgt = graph->vwgt[i]; if (pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ xgain = (myrinfo->id == 0 && myrinfo->ed > 0 ? graph->vsize[i] : 0); myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; for (k=0; k minwgt[to] && (xgain+myedegrees[k].gv < 0 || (xgain+myedegrees[k].gv == 0 && myedegrees[k].ed-myrinfo->id < 0)) ) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ INC_DEC(pwgts[to], pwgts[from], vwgt); graph->mincut -= myedegrees[k].ed-myrinfo->id; graph->minvol -= (xgain+myedegrees[k].gv); where[i] = to; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld from %3ld to %3ld. Gain: [%4ld %4ld]. Cut: %6ld, Vol: %6ld\n", i, from, to, xgain+myedegrees[k].gv, myedegrees[k].ed-myrinfo->id, graph->mincut, graph->minvol)); KWayVolUpdate(ctrl, graph, i, from, to, marker, phtable, updind); nmoves++; /*CheckVolKWayPartitionParams(ctrl, graph, nparts); */ } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld, Vol: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut, graph->minvol)); } GKfree(&marker, &updind, &phtable, LTERM); PQueueFree(ctrl, &queue); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Greedy_KWayVolBalanceMConn(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses) { long i, ii, iii, j, jj, k, kk, l, u, pass, nvtxs, nmoves, tvwgt, myndegrees, xgain; long from, me, to, vwgt, gain, maxndoms, nadd; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *moved, *bndptr, *bndind, *minwgt, *maxwgt, *itpwgts, *updind, *marker, *phtable; idxtype *pmat, *pmatptr, *ndoms; VEDegreeType *myedegrees; VRInfoType *myrinfo; PQueueType queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; pwgts = graph->pwgts; /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); updind = idxmalloc(nvtxs, "Random_KWayVolRefine: updind"); marker = idxsmalloc(nvtxs, 0, "Random_KWayVolRefine: marker"); phtable = idxsmalloc(nparts, -1, "Random_KWayVolRefine: phtable"); pmat = ctrl->wspace.pmat; ndoms = idxwspacemalloc(ctrl, nparts); ComputeVolSubDomainGraph(graph, nparts, pmat, ndoms); for (i=0; iadjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]); IFSET(ctrl->dbglvl, DBG_REFINE, printf("VolPart: [%5ld %5ld]-[%5ld %5ld], Balance: %3.2f, Nv-Nb[%5ld %5ld]. Cut: %5ld, Vol: %5ld [B]\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut, graph->minvol)); for (pass=0; passmincut); /* Check to see if things are out of balance, given the tolerance */ for (i=0; i maxwgt[i]) break; } if (i == nparts) /* Things are balanced. Return right away */ break; PQueueReset(&queue); idxset(nvtxs, -1, moved); RandomPermute(graph->nbnd, perm, 1); for (ii=0; iinbnd; ii++) { i = bndind[perm[ii]]; PQueueInsert(&queue, i, graph->vrinfo[i].gv); moved[i] = 2; } maxndoms = ndoms[idxamax(nparts, ndoms)]; for (nmoves=0;;) { if ((i = PQueueGetMax(&queue)) == -1) break; moved[i] = 1; myrinfo = graph->vrinfo+i; from = where[i]; vwgt = graph->vwgt[i]; if (pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ xgain = (myrinfo->id == 0 && myrinfo->ed > 0 ? graph->vsize[i] : 0); myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; /* Determine the valid domains */ for (j=0; j maxndoms-1) { phtable[to] = 0; nadd = maxndoms; break; } nadd++; } } if (ndoms[to]+nadd > maxndoms) phtable[to] = 0; } for (k=0; k minwgt[to] && (xgain+myedegrees[k].gv < 0 || (xgain+myedegrees[k].gv == 0 && myedegrees[k].ed-myrinfo->id < 0)) ) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ INC_DEC(pwgts[to], pwgts[from], vwgt); graph->mincut -= myedegrees[k].ed-myrinfo->id; graph->minvol -= (xgain+myedegrees[k].gv); where[i] = to; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld from %3ld to %3ld. Gain: [%4ld %4ld]. Cut: %6ld, Vol: %6ld\n", i, from, to, xgain+myedegrees[k].gv, myedegrees[k].ed-myrinfo->id, graph->mincut, graph->minvol)); /* Update pmat to reflect the move of 'i' */ pmat[from*nparts+to] += (myrinfo->id-myedegrees[k].ed); pmat[to*nparts+from] += (myrinfo->id-myedegrees[k].ed); if (pmat[from*nparts+to] == 0) { ndoms[from]--; if (ndoms[from]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[to*nparts+from] == 0) { ndoms[to]--; if (ndoms[to]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } for (j=xadj[i]; j maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[me], maxndoms); maxndoms = ndoms[me]; } } if (pmat[to*nparts+me] == 0) { ndoms[to]++; if (ndoms[to] > maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[to], maxndoms); maxndoms = ndoms[to]; } } pmat[me*nparts+to] += adjwgt[j]; pmat[to*nparts+me] += adjwgt[j]; } } KWayVolUpdate(ctrl, graph, i, from, to, marker, phtable, updind); nmoves++; /*CheckVolKWayPartitionParams(ctrl, graph, nparts); */ } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld, Vol: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut, graph->minvol)); } GKfree(&marker, &updind, &phtable, LTERM); PQueueFree(ctrl, &queue); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function updates the edge and volume gains as a result of moving * v from 'from' to 'to'. * The working arrays marker and phtable are assumed to be initialized to * -1, and they left to -1 upon return **************************************************************************/ void KWayVolUpdate(CtrlType *ctrl, GraphType *graph, long v, long from, long to, idxtype *marker, idxtype *phtable, idxtype *updind) { long ii, iii, j, jj, k, kk, l, u, nupd, other, me, myidx; idxtype *xadj, *vsize, *adjncy, *adjwgt, *where; VEDegreeType *myedegrees, *oedegrees; VRInfoType *myrinfo, *orinfo; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; vsize = graph->vsize; where = graph->where; myrinfo = graph->vrinfo+v; myedegrees = myrinfo->edegrees; /*====================================================================== * Remove the contributions on the gain made by 'v'. *=====================================================================*/ for (k=0; kndegrees; k++) phtable[myedegrees[k].pid] = k; phtable[from] = k; myidx = phtable[to]; /* Keep track of the index in myedegrees of the 'to' domain */ for (j=xadj[v]; jvrinfo+ii; oedegrees = orinfo->edegrees; if (other == from) { for (k=0; kndegrees; k++) { if (phtable[oedegrees[k].pid] == -1) oedegrees[k].gv += vsize[v]; } } else { ASSERT(phtable[other] != -1); if (myedegrees[phtable[other]].ned > 1) { for (k=0; kndegrees; k++) { if (phtable[oedegrees[k].pid] == -1) oedegrees[k].gv += vsize[v]; } } else { /* There is only one connection */ for (k=0; kndegrees; k++) { if (phtable[oedegrees[k].pid] != -1) oedegrees[k].gv -= vsize[v]; } } } } for (k=0; kndegrees; k++) phtable[myedegrees[k].pid] = -1; phtable[from] = -1; /*====================================================================== * Update the id/ed of vertex 'v' *=====================================================================*/ myrinfo->ed += myrinfo->id-myedegrees[myidx].ed; SWAP(myrinfo->id, myedegrees[myidx].ed, j); SWAP(myrinfo->nid, myedegrees[myidx].ned, j); if (myedegrees[myidx].ed == 0) myedegrees[myidx] = myedegrees[--myrinfo->ndegrees]; else myedegrees[myidx].pid = from; /*====================================================================== * Update the degrees of adjacent vertices and their volume gains *=====================================================================*/ marker[v] = 1; updind[0] = v; nupd = 1; for (j=xadj[v]; jvrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.vedegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); myrinfo->nid--; } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); myrinfo->nid++; } /* Remove the edgeweight from the 'pid == from' entry of the vertex */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ned == 1) { myedegrees[k] = myedegrees[--myrinfo->ndegrees]; marker[ii] = 1; /* You do a complete .gv calculation */ /* All vertices adjacent to 'ii' need to be updated */ for (jj=xadj[ii]; jjvrinfo+u; oedegrees = orinfo->edegrees; for (kk=0; kkndegrees; kk++) { if (oedegrees[kk].pid == from) { oedegrees[kk].gv -= vsize[ii]; break; } } } } else { myedegrees[k].ed -= adjwgt[j]; myedegrees[k].ned--; /* Update the gv due to single 'ii' connection to 'from' */ if (myedegrees[k].ned == 1) { /* find the vertex 'u' that 'ii' was connected into 'from' */ for (jj=xadj[ii]; jjvrinfo+u; oedegrees = orinfo->edegrees; if (other == from) { for (kk=0; kkndegrees; kk++) oedegrees[kk].gv += vsize[ii]; break; } } } } break; } } } /* Add the edgeweight to the 'pid == to' entry of the vertex */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; myedegrees[k].ned++; /* Update the gv due to non-single 'ii' connection to 'to' */ if (myedegrees[k].ned == 2) { /* find the vertex 'u' that 'ii' was connected into 'to' */ for (jj=xadj[ii]; jjvrinfo+u; oedegrees = orinfo->edegrees; if (u != v && other == to) { for (kk=0; kkndegrees; kk++) oedegrees[kk].gv -= vsize[ii]; break; } } } break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees].ed = adjwgt[j]; myedegrees[myrinfo->ndegrees++].ned = 1; marker[ii] = 1; /* You do a complete .gv calculation */ /* All vertices adjacent to 'ii' need to be updated */ for (jj=xadj[ii]; jjvrinfo+u; oedegrees = orinfo->edegrees; for (kk=0; kkndegrees; kk++) { if (oedegrees[kk].pid == to) { oedegrees[kk].gv += vsize[ii]; if (!marker[u]) { /* Need to update boundary etc */ marker[u] = 2; updind[nupd++] = u; } break; } } } } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); } /*====================================================================== * Add the contributions on the volume gain due to 'v' *=====================================================================*/ myrinfo = graph->vrinfo+v; myedegrees = myrinfo->edegrees; for (k=0; kndegrees; k++) phtable[myedegrees[k].pid] = k; phtable[to] = k; for (j=xadj[v]; jvrinfo+ii; oedegrees = orinfo->edegrees; if (other == to) { for (k=0; kndegrees; k++) { if (phtable[oedegrees[k].pid] == -1) oedegrees[k].gv -= vsize[v]; } } else { ASSERT(phtable[other] != -1); if (myedegrees[phtable[other]].ned > 1) { for (k=0; kndegrees; k++) { if (phtable[oedegrees[k].pid] == -1) oedegrees[k].gv -= vsize[v]; } } else { /* There is only one connection */ for (k=0; kndegrees; k++) { if (phtable[oedegrees[k].pid] != -1) oedegrees[k].gv += vsize[v]; } } } } for (k=0; kndegrees; k++) phtable[myedegrees[k].pid] = -1; phtable[to] = -1; /*====================================================================== * Recompute the volume information of the 'hard' nodes, and update the * max volume gain for all the update vertices *=====================================================================*/ ComputeKWayVolume(graph, nupd, updind, marker, phtable); /*====================================================================== * Maintain a consistent boundary *=====================================================================*/ for (j=0; jvrinfo+k; if ((myrinfo->gv >= 0 || myrinfo->ed-myrinfo->id >= 0) && graph->bndptr[k] == -1) BNDInsert(graph->nbnd, graph->bndind, graph->bndptr, k); if (myrinfo->gv < 0 && myrinfo->ed-myrinfo->id < 0 && graph->bndptr[k] != -1) BNDDelete(graph->nbnd, graph->bndind, graph->bndptr, k); } } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void ComputeKWayVolume(GraphType *graph, long nupd, idxtype *updind, idxtype *marker, idxtype *phtable) { long ii, iii, i, j, k, kk, l, nvtxs, me, other, pid; idxtype *xadj, *vsize, *adjncy, *adjwgt, *where; VRInfoType *rinfo, *myrinfo, *orinfo; VEDegreeType *myedegrees, *oedegrees; nvtxs = graph->nvtxs; xadj = graph->xadj; vsize = graph->vsize; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; rinfo = graph->vrinfo; /*------------------------------------------------------------ / Compute now the iv/ev degrees /------------------------------------------------------------*/ for (iii=0; iiiedegrees; if (marker[i] == 1) { /* Only complete gain updates go through */ for (k=0; kndegrees; k++) myedegrees[k].gv = 0; for (j=xadj[i]; jedegrees; for (kk=0; kkndegrees; kk++) phtable[oedegrees[kk].pid] = kk; phtable[other] = 1; if (me == other) { /* Find which domains 'i' is connected and 'ii' is not and update their gain */ for (k=0; kndegrees; k++) { if (phtable[myedegrees[k].pid] == -1) myedegrees[k].gv -= vsize[ii]; } } else { ASSERT(phtable[me] != -1); /* I'm the only connection of 'ii' in 'me' */ if (oedegrees[phtable[me]].ned == 1) { /* Increase the gains for all the common domains between 'i' and 'ii' */ for (k=0; kndegrees; k++) { if (phtable[myedegrees[k].pid] != -1) myedegrees[k].gv += vsize[ii]; } } else { /* Find which domains 'i' is connected and 'ii' is not and update their gain */ for (k=0; kndegrees; k++) { if (phtable[myedegrees[k].pid] == -1) myedegrees[k].gv -= vsize[ii]; } } } for (kk=0; kkndegrees; kk++) phtable[oedegrees[kk].pid] = -1; phtable[other] = -1; } } myrinfo->gv = -MAXIDX; for (k=0; kndegrees; k++) { if (myedegrees[k].gv > myrinfo->gv) myrinfo->gv = myedegrees[k].gv; } if (myrinfo->ed > 0 && myrinfo->id == 0) myrinfo->gv += vsize[i]; } } /************************************************************************* * This function computes the total volume **************************************************************************/ long ComputeVolume(GraphType *graph, idxtype *where) { long i, j, k, me, nvtxs, nparts, totalv; idxtype *xadj, *adjncy, *vsize, *marker; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vsize = (graph->vsize == NULL ? graph->vwgt : graph->vsize); nparts = where[idxamax(nvtxs, where)]+1; marker = idxsmalloc(nparts, -1, "ComputeVolume: marker"); totalv = 0; for (i=0; invtxs; xadj = graph->xadj; vsize = graph->vsize; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; rinfo = graph->vrinfo; tmpdegrees = (VEDegreeType *)GKmalloc(nparts*sizeof(VEDegreeType), "CheckVolKWayPartitionParams: tmpdegrees"); /*------------------------------------------------------------ / Compute now the iv/ev degrees /------------------------------------------------------------*/ for (i=0; iedegrees; for (k=0; kndegrees; k++) tmpdegrees[k] = myedegrees[k]; tmprinfo.ndegrees = myrinfo->ndegrees; tmprinfo.id = myrinfo->id; tmprinfo.ed = myrinfo->ed; myrinfo = &tmprinfo; myedegrees = tmpdegrees; for (k=0; kndegrees; k++) myedegrees[k].gv = 0; for (j=xadj[i]; jedegrees; if (me == other) { /* Find which domains 'i' is connected and 'ii' is not and update their gain */ for (k=0; kndegrees; k++) { pid = myedegrees[k].pid; for (kk=0; kkndegrees; kk++) { if (oedegrees[kk].pid == pid) break; } if (kk == orinfo->ndegrees) myedegrees[k].gv -= vsize[ii]; } } else { /* Find the orinfo[me].ed and see if I'm the only connection */ for (k=0; kndegrees; k++) { if (oedegrees[k].pid == me) break; } if (oedegrees[k].ned == 1) { /* I'm the only connection of 'ii' in 'me' */ for (k=0; kndegrees; k++) { if (myedegrees[k].pid == other) { myedegrees[k].gv += vsize[ii]; break; } } /* Increase the gains for all the common domains between 'i' and 'ii' */ for (k=0; kndegrees; k++) { if ((pid = myedegrees[k].pid) == other) continue; for (kk=0; kkndegrees; kk++) { if (oedegrees[kk].pid == pid) { myedegrees[k].gv += vsize[ii]; break; } } } } else { /* Find which domains 'i' is connected and 'ii' is not and update their gain */ for (k=0; kndegrees; k++) { if ((pid = myedegrees[k].pid) == other) continue; for (kk=0; kkndegrees; kk++) { if (oedegrees[kk].pid == pid) break; } if (kk == orinfo->ndegrees) myedegrees[k].gv -= vsize[ii]; } } } } myrinfo = rinfo+i; myedegrees = myrinfo->edegrees; for (k=0; kndegrees; k++) { pid = myedegrees[k].pid; for (kk=0; kknvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; rinfo = graph->vrinfo; idxset(nparts*nparts, 0, pmat); for (i=0; i 0) { me = where[i]; ndegrees = rinfo[i].ndegrees; edegrees = rinfo[i].edegrees; k = me*nparts; for (j=0; j 0) ndoms[i]++; } } } /************************************************************************* * This function computes the subdomain graph **************************************************************************/ void EliminateVolSubDomainEdges(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts) { long i, ii, j, k, me, other, nvtxs, total, max, avg, totalout, nind, ncand, ncand2, target, target2, nadd; long min, move, cpwgt, tvwgt; idxtype *xadj, *adjncy, *vwgt, *adjwgt, *pwgts, *where, *maxpwgt, *pmat, *ndoms, *mypmat, *otherpmat, *ind; KeyValueType *cand, *cand2; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; adjwgt = graph->adjwgt; where = graph->where; pwgts = idxset(nparts, 0, graph->pwgts); maxpwgt = idxwspacemalloc(ctrl, nparts); ndoms = idxwspacemalloc(ctrl, nparts); otherpmat = idxwspacemalloc(ctrl, nparts); ind = idxwspacemalloc(ctrl, nvtxs); pmat = idxset(nparts*nparts, 0, ctrl->wspace.pmat); cand = (KeyValueType *)GKmalloc(nparts*sizeof(KeyValueType), "EliminateSubDomainEdges: cand"); cand2 = (KeyValueType *)GKmalloc(nparts*sizeof(KeyValueType), "EliminateSubDomainEdges: cand"); /* Compute the pmat matrix */ for (i=0; i 0) k++; } ndoms[i] = k; } /* Get into the loop eliminating subdomain connections */ for (;;) { total = idxsum(nparts, ndoms); avg = total/nparts; max = ndoms[idxamax(nparts, ndoms)]; /* printf("Adjacent Subdomain Stats: Total: %3ld, Max: %3ld, Avg: %3ld\n", total, max, avg); */ if (max < 1.5*avg) break; me = idxamax(nparts, ndoms); mypmat = pmat + me*nparts; totalout = idxsum(nparts, mypmat); /*printf("Me: %ld, TotalOut: %ld,\n", me, totalout);*/ /* Sort the connections according to their cut */ for (ncand2=0, i=0; i 0) { cand2[ncand2].key = mypmat[i]; cand2[ncand2++].val = i; } } ikeysort(ncand2, cand2); move = 0; for (min=0; min totalout/(2*ndoms[me])) break; other = cand2[min].val; /*printf("\tMinOut: %ld to %ld\n", mypmat[other], other);*/ idxset(nparts, 0, otherpmat); /* Go and find the vertices in 'other' that are connected in 'me' */ for (nind=0, i=0; i 0) { cand[ncand].key = -otherpmat[i]; cand[ncand++].val = i; } } ikeysort(ncand, cand); /* * Go through and the select the first domain that is common with 'me', and * does not increase the ndoms[target] higher than my ndoms, subject to the * maxpwgt constraint. Traversal is done from the mostly connected to the least. */ target = target2 = -1; for (i=0; i 0) { if (pwgts[k] + cpwgt > maxpwgt[k]) /* Check if balance will go off */ continue; for (j=0; j 0 && ndoms[j] >= ndoms[me]-1 && pmat[nparts*j+k] == 0) break; } if (j == nparts) { /* No bad second level effects */ for (nadd=0, j=0; j 0 && pmat[nparts*k+j] == 0) nadd++; } /*printf("\t\tto=%ld, nadd=%ld, %ld\n", k, nadd, ndoms[k]);*/ if (target2 == -1 && ndoms[k]+nadd < ndoms[me]) { target2 = k; } if (nadd == 0) { target = k; break; } } } } if (target == -1 && target2 != -1) target = target2; if (target == -1) { /* printf("\t\tCould not make the move\n");*/ continue; } /*printf("\t\tMoving to %ld\n", target);*/ /* Update the partition weights */ INC_DEC(pwgts[target], pwgts[other], cpwgt); /* Set all nind vertices to belong to 'target' */ for (ii=0; iiwhere and tries to push them around to * remove some of them **************************************************************************/ void EliminateVolComponents(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor) { long i, ii, j, jj, k, me, nvtxs, tvwgt, first, last, nleft, ncmps, cwgt, ncand, other, target, deltawgt; idxtype *xadj, *adjncy, *vwgt, *adjwgt, *where, *pwgts, *maxpwgt; idxtype *cpvec, *touched, *perm, *todo, *cind, *cptr, *npcmps; KeyValueType *cand; long recompute=0; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; adjwgt = graph->adjwgt; where = graph->where; pwgts = idxset(nparts, 0, graph->pwgts); touched = idxset(nvtxs, 0, idxwspacemalloc(ctrl, nvtxs)); cptr = idxwspacemalloc(ctrl, nvtxs); cind = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); todo = idxwspacemalloc(ctrl, nvtxs); maxpwgt = idxwspacemalloc(ctrl, nparts); cpvec = idxwspacemalloc(ctrl, nparts); npcmps = idxset(nparts, 0, idxwspacemalloc(ctrl, nparts)); for (i=0; i 0) { if (first == last) { /* Find another starting vertex */ cptr[++ncmps] = first; ASSERT(touched[todo[0]] == 0); i = todo[0]; cind[last++] = i; touched[i] = 1; me = where[i]; npcmps[me]++; } i = cind[first++]; k = perm[i]; j = todo[k] = todo[--nleft]; perm[j] = k; for (j=xadj[i]; j nparts) { /* There are more components than processors */ cand = (KeyValueType *)GKmalloc(nparts*sizeof(KeyValueType), "EliminateSubDomainEdges: cand"); /* First determine the partition sizes and max allowed load imbalance */ for (i=0; i .30*pwgts[me]) continue; /* Skip the component if it is over 30% of the weight */ for (ncand=0, j=0; j 0) { cand[ncand].key = -cpvec[j]; cand[ncand++].val = j; } } if (ncand == 0) continue; ikeysort(ncand, cand); target = -1; for (j=0; jmincut -= cpvec[target]; recompute = 1; } } free(cand); } if (recompute) { long ttlv; idxtype *marker; marker = idxset(nparts, -1, cpvec); for (ttlv=0, i=0; ivsize[i]; marker[where[adjncy[j]]] = i; } } } graph->minvol = ttlv; } idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } metis-edf-4.1/Lib/meshpart.c0000644000372500037370000001417311115455203016226 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * meshpart.c * * This file contains routines for partitioning finite element meshes. * * Started 9/29/97 * George * * $Id: meshpart.c,v 1.1 1998/11/27 17:59:21 karypis Exp $ * */ #include /************************************************************************* * This function partitions a finite element mesh by partitioning its nodal * graph using KMETIS and then assigning elements in a load balanced fashion. **************************************************************************/ void METIS_PartMeshNodal(long *ne, long *nn, idxtype *elmnts, long *etype, long *numflag, long *nparts, long *edgecut, idxtype *epart, idxtype *npart) { long i, j, k, me; idxtype *xadj, *adjncy, *pwgts; long options[10], pnumflag=0, wgtflag=0; long nnbrs, nbrind[200], nbrwgt[200], maxpwgt; long esize, esizes[] = {-1, 3, 4, 8, 4}; esize = esizes[*etype]; if (*numflag == 1) ChangeMesh2CNumbering((*ne)*esize, elmnts); xadj = idxmalloc(*nn+1, "METIS_MESHPARTNODAL: xadj"); adjncy = idxmalloc(20*(*nn), "METIS_MESHPARTNODAL: adjncy"); METIS_MeshToNodal(ne, nn, elmnts, etype, &pnumflag, xadj, adjncy); adjncy = realloc(adjncy, xadj[*nn]*sizeof(idxtype)); options[0] = 0; METIS_PartGraphKway(nn, xadj, adjncy, NULL, NULL, &wgtflag, &pnumflag, nparts, options, edgecut, npart); /* OK, now compute an element partition based on the nodal partition npart */ idxset(*ne, -1, epart); pwgts = idxsmalloc(*nparts, 0, "METIS_MESHPARTNODAL: pwgts"); for (i=0; i<*ne; i++) { me = npart[elmnts[i*esize]]; for (j=1; j0; i--) nptr[i] = nptr[i-1]; nptr[0] = 0; /* OK, now compute a nodal partition based on the element partition npart */ idxset(*nn, -1, npart); pwgts = idxsmalloc(*nparts, 0, "METIS_MESHPARTDUAL: pwgts"); for (i=0; i<*nn; i++) { me = epart[nind[nptr[i]]]; for (j=nptr[i]+1; j /************************************************************************* * This function prints an error message and exits **************************************************************************/ void errexit(char *f_str,...) { va_list argp; char out1[256], out2[256]; va_start(argp, f_str); vsprintf(out1, f_str, argp); va_end(argp); sprintf(out2, "Error! %s", out1); fprintf(stdout, out2); fflush(stdout); abort(); } #ifndef DMALLOC /************************************************************************* * The following function allocates an array of integers **************************************************************************/ long *imalloc(long n, char *msg) { if (n == 0) return NULL; return (long *)GKmalloc(sizeof(long)*n, msg); } /************************************************************************* * The following function allocates an array of integers **************************************************************************/ idxtype *idxmalloc(long n, char *msg) { if (n == 0) return NULL; return (idxtype *)GKmalloc(sizeof(idxtype)*n, msg); } /************************************************************************* * The following function allocates an array of float **************************************************************************/ float *fmalloc(long n, char *msg) { if (n == 0) return NULL; return (float *)GKmalloc(sizeof(float)*n, msg); } /************************************************************************* * The follwoing function allocates an array of integers **************************************************************************/ long *ismalloc(long n, long ival, char *msg) { if (n == 0) return NULL; return iset(n, ival, (long *)GKmalloc(sizeof(long)*n, msg)); } /************************************************************************* * The follwoing function allocates an array of integers **************************************************************************/ idxtype *idxsmalloc(long n, idxtype ival, char *msg) { if (n == 0) return NULL; return idxset(n, ival, (idxtype *)GKmalloc(sizeof(idxtype)*n, msg)); } /************************************************************************* * This function is my wrapper around malloc **************************************************************************/ void *GKmalloc(long nbytes, char *msg) { void *ptr; if (nbytes == 0) return NULL; ptr = (void *)malloc(nbytes); if (ptr == NULL) errexit("***Memory allocation failed for %s. Requested size: %ld bytes", msg, nbytes); return ptr; } #endif /************************************************************************* * This function is my wrapper around free, allows multiple pointers **************************************************************************/ void GKfree(void **ptr1,...) { va_list plist; void **ptr; if (*ptr1 != NULL) free(*ptr1); *ptr1 = NULL; va_start(plist, ptr1); /* while ((long)(ptr = va_arg(plist, void **)) != -1) { */ while ((ptr = va_arg(plist, void **)) != LTERM) { if (*ptr != NULL) free(*ptr); *ptr = NULL; } va_end(plist); } /************************************************************************* * These functions set the values of a vector **************************************************************************/ long *iset(long n, long val, long *x) { long i; for (i=0; i x[max] ? i : max); return max; } /************************************************************************* * These functions return the index of the maximum element in a vector **************************************************************************/ long idxamax(long n, idxtype *x) { long i, max=0; for (i=1; i x[max] ? i : max); return max; } /************************************************************************* * These functions return the index of the maximum element in a vector **************************************************************************/ long idxamax_strd(long n, idxtype *x, long incx) { long i, max=0; n *= incx; for (i=incx; i x[max] ? i : max); return max/incx; } /************************************************************************* * These functions return the index of the maximum element in a vector **************************************************************************/ long samax(long n, float *x) { long i, max=0; for (i=1; i x[max] ? i : max); return max; } /************************************************************************* * These functions return the index of the almost maximum element in a vector **************************************************************************/ long samax2(long n, float *x) { long i, max1, max2; if (x[0] > x[1]) { max1 = 0; max2 = 1; } else { max1 = 1; max2 = 0; } for (i=2; i x[max1]) { max2 = max1; max1 = i; } else if (x[i] > x[max2]) max2 = i; } return max2; } /************************************************************************* * These functions return the index of the minimum element in a vector **************************************************************************/ long idxamin(long n, idxtype *x) { long i, min=0; for (i=1; i=0; n--) y[n] += x[n]; } /************************************************************************* * This function sums the entries in an array **************************************************************************/ long charsum(long n, char *x) { long i, sum = 0; for (i=0; i>1); return (a > 1 ? 0 : 1); } /************************************************************************* * This function initializes the random number generator **************************************************************************/ void InitRandom(long seed) { if (seed == -1) { #ifndef __VC__ srand48(7654321L); #endif srand(4321); } else { #ifndef __VC__ srand48(seed); #endif srand(seed); } } /************************************************************************* * This function returns the ilog2(x) **************************************************************************/ long ilog2(long a) { long i; for (i=1; a > 1; i++, a = a>>1); return i-1; } metis-edf-4.1/Lib/fortran.c0000644000372500037370000000677011115455203016062 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * fortran.c * * This file contains code for the fortran to C interface * * Started 8/19/97 * George * * $Id: fortran.c,v 1.1 1998/11/27 17:59:14 karypis Exp $ * */ #include /************************************************************************* * This function changes the numbering to start from 0 instead of 1 **************************************************************************/ void Change2CNumbering(long nvtxs, idxtype *xadj, idxtype *adjncy) { long i, nedges; for (i=0; i<=nvtxs; i++) xadj[i]--; nedges = xadj[nvtxs]; for (i=0; i /************************************************************************* * This function initializes the data structures of the priority queue **************************************************************************/ void PQueueInit(CtrlType *ctrl, PQueueType *queue, long maxnodes, long maxgain) { long i, j, ncore; queue->nnodes = 0; queue->maxnodes = maxnodes; queue->buckets = NULL; queue->nodes = NULL; queue->heap = NULL; queue->locator = NULL; if (maxgain > PLUS_GAINSPAN || maxnodes < 500) queue->type = 2; else queue->type = 1; if (queue->type == 1) { queue->pgainspan = amin(PLUS_GAINSPAN, maxgain); queue->ngainspan = amin(NEG_GAINSPAN, maxgain); j = queue->ngainspan+queue->pgainspan+1; ncore = 2 + (sizeof(ListNodeType)/sizeof(idxtype))*maxnodes + (sizeof(ListNodeType *)/sizeof(idxtype))*j; if (WspaceAvail(ctrl) > ncore) { queue->nodes = (ListNodeType *)idxwspacemalloc(ctrl, (sizeof(ListNodeType)/sizeof(idxtype))*maxnodes); queue->buckets = (ListNodeType **)idxwspacemalloc(ctrl, (sizeof(ListNodeType *)/sizeof(idxtype))*j); queue->mustfree = 0; } else { /* Not enough memory in the wspace, allocate it */ queue->nodes = (ListNodeType *)idxmalloc((sizeof(ListNodeType)/sizeof(idxtype))*maxnodes, "PQueueInit: queue->nodes"); queue->buckets = (ListNodeType **)idxmalloc((sizeof(ListNodeType *)/sizeof(idxtype))*j, "PQueueInit: queue->buckets"); queue->mustfree = 1; } for (i=0; inodes[i].id = i; for (i=0; ibuckets[i] = NULL; queue->buckets += queue->ngainspan; /* Advance buckets by the ngainspan proper indexing */ queue->maxgain = -queue->ngainspan; } else { queue->heap = (KeyValueType *)idxwspacemalloc(ctrl, (sizeof(KeyValueType)/sizeof(idxtype))*maxnodes); queue->locator = idxwspacemalloc(ctrl, maxnodes); idxset(maxnodes, -1, queue->locator); } } /************************************************************************* * This function resets the buckets **************************************************************************/ void PQueueReset(PQueueType *queue) { long i, j; queue->nnodes = 0; if (queue->type == 1) { queue->maxgain = -queue->ngainspan; j = queue->ngainspan+queue->pgainspan+1; queue->buckets -= queue->ngainspan; for (i=0; ibuckets[i] = NULL; queue->buckets += queue->ngainspan; } else { idxset(queue->maxnodes, -1, queue->locator); } } /************************************************************************* * This function frees the buckets **************************************************************************/ void PQueueFree(CtrlType *ctrl, PQueueType *queue) { if (queue->type == 1) { if (queue->mustfree) { queue->buckets -= queue->ngainspan; GKfree(&queue->nodes, &queue->buckets, LTERM); } else { idxwspacefree(ctrl, sizeof(ListNodeType *)*(queue->ngainspan+queue->pgainspan+1)/sizeof(idxtype)); idxwspacefree(ctrl, sizeof(ListNodeType)*queue->maxnodes/sizeof(idxtype)); } } else { idxwspacefree(ctrl, sizeof(KeyValueType)*queue->maxnodes/sizeof(idxtype)); idxwspacefree(ctrl, queue->maxnodes); } queue->maxnodes = 0; } /************************************************************************* * This function returns the number of nodes in the queue **************************************************************************/ long PQueueGetSize(PQueueType *queue) { return queue->nnodes; } /************************************************************************* * This function adds a node of certain gain into a partition **************************************************************************/ long PQueueInsert(PQueueType *queue, long node, long gain) { long i, j, k; idxtype *locator; ListNodeType *newnode; KeyValueType *heap; if (queue->type == 1) { ASSERT(gain >= -queue->ngainspan && gain <= queue->pgainspan); /* Allocate and add the node */ queue->nnodes++; newnode = queue->nodes + node; /* Attach this node in the doubly-linked list */ newnode->next = queue->buckets[gain]; newnode->prev = NULL; if (newnode->next != NULL) newnode->next->prev = newnode; queue->buckets[gain] = newnode; if (queue->maxgain < gain) queue->maxgain = gain; } else { ASSERT(CheckHeap(queue)); heap = queue->heap; locator = queue->locator; ASSERT(locator[node] == -1); i = queue->nnodes++; while (i > 0) { j = (i-1)/2; if (heap[j].key < gain) { heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } ASSERT(i >= 0); heap[i].key = gain; heap[i].val = node; locator[node] = i; ASSERT(CheckHeap(queue)); } return 0; } /************************************************************************* * This function deletes a node from a partition and reinserts it with * an updated gain **************************************************************************/ long PQueueDelete(PQueueType *queue, long node, long gain) { long i, j, newgain, oldgain; idxtype *locator; ListNodeType *newnode, **buckets; KeyValueType *heap; if (queue->type == 1) { ASSERT(gain >= -queue->ngainspan && gain <= queue->pgainspan); ASSERT(queue->nnodes > 0); buckets = queue->buckets; queue->nnodes--; newnode = queue->nodes+node; /* Remove newnode from the doubly-linked list */ if (newnode->prev != NULL) newnode->prev->next = newnode->next; else buckets[gain] = newnode->next; if (newnode->next != NULL) newnode->next->prev = newnode->prev; if (buckets[gain] == NULL && gain == queue->maxgain) { if (queue->nnodes == 0) queue->maxgain = -queue->ngainspan; else for (; buckets[queue->maxgain]==NULL; queue->maxgain--); } } else { /* Heap Priority Queue */ heap = queue->heap; locator = queue->locator; ASSERT(locator[node] != -1); ASSERT(heap[locator[node]].val == node); ASSERT(CheckHeap(queue)); i = locator[node]; locator[node] = -1; if (--queue->nnodes > 0 && heap[queue->nnodes].val != node) { node = heap[queue->nnodes].val; newgain = heap[queue->nnodes].key; oldgain = heap[i].key; if (oldgain < newgain) { /* Filter-up */ while (i > 0) { j = (i-1)>>1; if (heap[j].key < newgain) { heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } } else { /* Filter down */ while ((j=2*i+1) < queue->nnodes) { if (heap[j].key > newgain) { if (j+1 < queue->nnodes && heap[j+1].key > heap[j].key) j = j+1; heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else if (j+1 < queue->nnodes && heap[j+1].key > newgain) { j = j+1; heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } } heap[i].key = newgain; heap[i].val = node; locator[node] = i; } ASSERT(CheckHeap(queue)); } return 0; } /************************************************************************* * This function deletes a node from a partition and reinserts it with * an updated gain **************************************************************************/ long PQueueUpdate(PQueueType *queue, long node, long oldgain, long newgain) { long i, j; idxtype *locator; ListNodeType *newnode; KeyValueType *heap; if (oldgain == newgain) return 0; if (queue->type == 1) { /* First delete the node and then insert it */ PQueueDelete(queue, node, oldgain); return PQueueInsert(queue, node, newgain); } else { /* Heap Priority Queue */ heap = queue->heap; locator = queue->locator; ASSERT(locator[node] != -1); ASSERT(heap[locator[node]].val == node); ASSERT(heap[locator[node]].key == oldgain); ASSERT(CheckHeap(queue)); i = locator[node]; if (oldgain < newgain) { /* Filter-up */ while (i > 0) { j = (i-1)>>1; if (heap[j].key < newgain) { heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } } else { /* Filter down */ while ((j=2*i+1) < queue->nnodes) { if (heap[j].key > newgain) { if (j+1 < queue->nnodes && heap[j+1].key > heap[j].key) j = j+1; heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else if (j+1 < queue->nnodes && heap[j+1].key > newgain) { j = j+1; heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } } heap[i].key = newgain; heap[i].val = node; locator[node] = i; ASSERT(CheckHeap(queue)); } return 0; } /************************************************************************* * This function deletes a node from a partition and reinserts it with * an updated gain **************************************************************************/ void PQueueUpdateUp(PQueueType *queue, long node, long oldgain, long newgain) { long i, j; idxtype *locator; ListNodeType *newnode, **buckets; KeyValueType *heap; if (oldgain == newgain) return; if (queue->type == 1) { ASSERT(oldgain >= -queue->ngainspan && oldgain <= queue->pgainspan); ASSERT(newgain >= -queue->ngainspan && newgain <= queue->pgainspan); ASSERT(queue->nnodes > 0); buckets = queue->buckets; newnode = queue->nodes+node; /* First delete the node */ if (newnode->prev != NULL) newnode->prev->next = newnode->next; else buckets[oldgain] = newnode->next; if (newnode->next != NULL) newnode->next->prev = newnode->prev; /* Attach this node in the doubly-linked list */ newnode->next = buckets[newgain]; newnode->prev = NULL; if (newnode->next != NULL) newnode->next->prev = newnode; buckets[newgain] = newnode; if (queue->maxgain < newgain) queue->maxgain = newgain; } else { /* Heap Priority Queue */ heap = queue->heap; locator = queue->locator; ASSERT(locator[node] != -1); ASSERT(heap[locator[node]].val == node); ASSERT(heap[locator[node]].key == oldgain); ASSERT(CheckHeap(queue)); /* Here we are just filtering up since the newgain is greater than the oldgain */ i = locator[node]; while (i > 0) { j = (i-1)>>1; if (heap[j].key < newgain) { heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } heap[i].key = newgain; heap[i].val = node; locator[node] = i; ASSERT(CheckHeap(queue)); } } /************************************************************************* * This function returns the vertex with the largest gain from a partition * and removes the node from the bucket list **************************************************************************/ long PQueueGetMax(PQueueType *queue) { long vtx, i, j, gain, node; idxtype *locator; ListNodeType *tptr; KeyValueType *heap; if (queue->nnodes == 0) return -1; queue->nnodes--; if (queue->type == 1) { tptr = queue->buckets[queue->maxgain]; queue->buckets[queue->maxgain] = tptr->next; if (tptr->next != NULL) { tptr->next->prev = NULL; } else { if (queue->nnodes == 0) { queue->maxgain = -queue->ngainspan; } else for (; queue->buckets[queue->maxgain]==NULL; queue->maxgain--); } return tptr->id; } else { heap = queue->heap; locator = queue->locator; vtx = heap[0].val; locator[vtx] = -1; if ((i = queue->nnodes) > 0) { gain = heap[i].key; node = heap[i].val; i = 0; while ((j=2*i+1) < queue->nnodes) { if (heap[j].key > gain) { if (j+1 < queue->nnodes && heap[j+1].key > heap[j].key) j = j+1; heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else if (j+1 < queue->nnodes && heap[j+1].key > gain) { j = j+1; heap[i] = heap[j]; locator[heap[i].val] = i; i = j; } else break; } heap[i].key = gain; heap[i].val = node; locator[node] = i; } ASSERT(CheckHeap(queue)); return vtx; } } /************************************************************************* * This function returns the vertex with the largest gain from a partition **************************************************************************/ long PQueueSeeMax(PQueueType *queue) { long vtx; if (queue->nnodes == 0) return -1; if (queue->type == 1) vtx = queue->buckets[queue->maxgain]->id; else vtx = queue->heap[0].val; return vtx; } /************************************************************************* * This function returns the vertex with the largest gain from a partition **************************************************************************/ long PQueueGetKey(PQueueType *queue) { long key; if (queue->nnodes == 0) return -1; if (queue->type == 1) key = queue->maxgain; else key = queue->heap[0].key; return key; } /************************************************************************* * This functions checks the consistency of the heap **************************************************************************/ long CheckHeap(PQueueType *queue) { long i, j, nnodes; idxtype *locator; KeyValueType *heap; heap = queue->heap; locator = queue->locator; nnodes = queue->nnodes; if (nnodes == 0) return 1; ASSERT(locator[heap[0].val] == 0); for (i=1; imaxnodes; i++) { if (locator[i] != -1) j++; } ASSERTP(j == nnodes, ("%ld %ld\n", j, nnodes)); return 1; } metis-edf-4.1/Lib/timing.c0000644000372500037370000000520211115455203015663 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * timing.c * * This file contains routines that deal with timing Metis * * Started 7/24/97 * George * * $Id: timing.c,v 1.1 1998/11/27 17:59:32 karypis Exp $ * */ #include /************************************************************************* * This function clears the timers **************************************************************************/ void InitTimers(CtrlType *ctrl) { cleartimer(ctrl->TotalTmr); cleartimer(ctrl->InitPartTmr); cleartimer(ctrl->MatchTmr); cleartimer(ctrl->ContractTmr); cleartimer(ctrl->CoarsenTmr); cleartimer(ctrl->UncoarsenTmr); cleartimer(ctrl->RefTmr); cleartimer(ctrl->ProjectTmr); cleartimer(ctrl->SplitTmr); cleartimer(ctrl->SepTmr); cleartimer(ctrl->AuxTmr1); cleartimer(ctrl->AuxTmr2); cleartimer(ctrl->AuxTmr3); cleartimer(ctrl->AuxTmr4); cleartimer(ctrl->AuxTmr5); cleartimer(ctrl->AuxTmr6); } /************************************************************************* * This function prints the various timers **************************************************************************/ void PrintTimers(CtrlType *ctrl) { printf("\nTiming Information -------------------------------------------------"); printf("\n Multilevel: \t\t %7.3f", gettimer(ctrl->TotalTmr)); printf("\n Coarsening: \t\t %7.3f", gettimer(ctrl->CoarsenTmr)); printf("\n Matching: \t\t\t %7.3f", gettimer(ctrl->MatchTmr)); printf("\n Contract: \t\t\t %7.3f", gettimer(ctrl->ContractTmr)); printf("\n Initial Partition: \t %7.3f", gettimer(ctrl->InitPartTmr)); printf("\n Construct Separator: \t %7.3f", gettimer(ctrl->SepTmr)); printf("\n Uncoarsening: \t\t %7.3f", gettimer(ctrl->UncoarsenTmr)); printf("\n Refinement: \t\t\t %7.3f", gettimer(ctrl->RefTmr)); printf("\n Projection: \t\t\t %7.3f", gettimer(ctrl->ProjectTmr)); printf("\n Splitting: \t\t %7.3f", gettimer(ctrl->SplitTmr)); printf("\n AUX1: \t\t %7.3f", gettimer(ctrl->AuxTmr1)); printf("\n AUX2: \t\t %7.3f", gettimer(ctrl->AuxTmr2)); printf("\n AUX3: \t\t %7.3f", gettimer(ctrl->AuxTmr3)); printf("\n********************************************************************\n"); } /************************************************************************* * This function returns the seconds **************************************************************************/ double seconds(void) { return((double) clock()/CLOCKS_PER_SEC); } metis-edf-4.1/Lib/kmetis.c0000644000372500037370000001043711302755334015704 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * kmetis.c * * This file contains the top level routines for the multilevel k-way partitioning * algorithm KMETIS. * * Started 7/28/97 * George * * $Id: kmetis.c,v 1.1 1998/11/27 17:59:15 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for KMETIS **************************************************************************/ void METIS_PartGraphKway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { long i; float *tpwgts; tpwgts = fmalloc(*nparts, "KMETIS: tpwgts"); for (i=0; i<*nparts; i++) tpwgts[i] = 1.0/(1.0*(*nparts)); METIS_WPartGraphKway(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); free(tpwgts); } /************************************************************************* * This function is the entry point for KWMETIS **************************************************************************/ void METIS_WPartGraphKway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_KMETIS, *nvtxs, 1, xadj, adjncy, vwgt, adjwgt, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = KMETIS_CTYPE; ctrl.IType = KMETIS_ITYPE; ctrl.RType = KMETIS_RTYPE; ctrl.dbglvl = KMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_KMETIS; ctrl.CoarsenTo = amax((*nvtxs)/(40*ilog2(*nparts)), 20*(*nparts)); ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MlevelKWayPartitioning(&ctrl, &graph, *nparts, part, tpwgts, 1.03); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ long MlevelKWayPartitioning(CtrlType *ctrl, GraphType *graph, long nparts, idxtype *part, float *tpwgts, float ubfactor) { long i, j, nvtxs, tvwgt, tpwgts2[2]; GraphType *cgraph; long wgtflag=3, numflag=0, options[10], edgecut; cgraph = Coarsen2Way(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); AllocateKWayPartitionMemory(ctrl, cgraph, nparts); options[0] = 1; options[OPTION_CTYPE] = MATCH_SHEMKWAY; options[OPTION_ITYPE] = IPART_GGPKL; options[OPTION_RTYPE] = RTYPE_FM; options[OPTION_DBGLVL] = 0; METIS_WPartGraphRecursive(&cgraph->nvtxs, cgraph->xadj, cgraph->adjncy, cgraph->vwgt, cgraph->adjwgt, &wgtflag, &numflag, &nparts, tpwgts, options, &edgecut, cgraph->where); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial %ld-way partitioning cut: %ld\n", nparts, edgecut)); IFSET(ctrl->dbglvl, DBG_KWAYPINFO, ComputePartitionInfo(cgraph, nparts, cgraph->where)); RefineKWay(ctrl, graph, cgraph, nparts, tpwgts, ubfactor); idxcopy(graph->nvtxs, graph->where, part); GKfree(&graph->gdata, &graph->rdata, LTERM); return graph->mincut; } metis-edf-4.1/Lib/kvmetis.c0000644000372500037370000001052211302755316016065 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * kvmetis.c * * This file contains the top level routines for the multilevel k-way partitioning * algorithm KMETIS. * * Started 7/28/97 * George * * $Id: kvmetis.c,v 1.1 1998/11/27 17:59:16 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for KMETIS **************************************************************************/ void METIS_PartGraphVKway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, long *options, long *volume, idxtype *part) { long i; float *tpwgts; tpwgts = fmalloc(*nparts, "KMETIS: tpwgts"); for (i=0; i<*nparts; i++) tpwgts[i] = 1.0/(1.0*(*nparts)); METIS_WPartGraphVKway(nvtxs, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, tpwgts, options, volume, part); free(tpwgts); } /************************************************************************* * This function is the entry point for KWMETIS **************************************************************************/ void METIS_WPartGraphVKway(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *volume, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); VolSetUpGraph(&graph, OP_KVMETIS, *nvtxs, 1, xadj, adjncy, vwgt, vsize, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = KVMETIS_CTYPE; ctrl.IType = KVMETIS_ITYPE; ctrl.RType = KVMETIS_RTYPE; ctrl.dbglvl = KVMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_KVMETIS; ctrl.CoarsenTo = amax((*nvtxs)/(40*ilog2(*nparts)), 20*(*nparts)); ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo); InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *volume = MlevelVolKWayPartitioning(&ctrl, &graph, *nparts, part, tpwgts, 1.03); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ long MlevelVolKWayPartitioning(CtrlType *ctrl, GraphType *graph, long nparts, idxtype *part, float *tpwgts, float ubfactor) { long i, j, nvtxs, tvwgt, tpwgts2[2]; GraphType *cgraph; long wgtflag=3, numflag=0, options[10], edgecut; cgraph = Coarsen2Way(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->InitPartTmr)); AllocateVolKWayPartitionMemory(ctrl, cgraph, nparts); options[0] = 1; options[OPTION_CTYPE] = MATCH_SHEMKWAY; options[OPTION_ITYPE] = IPART_GGPKL; options[OPTION_RTYPE] = RTYPE_FM; options[OPTION_DBGLVL] = 0; METIS_WPartGraphRecursive(&cgraph->nvtxs, cgraph->xadj, cgraph->adjncy, cgraph->vwgt, cgraph->adjwgt, &wgtflag, &numflag, &nparts, tpwgts, options, &edgecut, cgraph->where); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->InitPartTmr)); IFSET(ctrl->dbglvl, DBG_IPART, printf("Initial %ld-way partitioning cut: %ld\n", nparts, edgecut)); IFSET(ctrl->dbglvl, DBG_KWAYPINFO, ComputePartitionInfo(cgraph, nparts, cgraph->where)); RefineVolKWay(ctrl, graph, cgraph, nparts, tpwgts, ubfactor); idxcopy(graph->nvtxs, graph->where, part); GKfree(&graph->gdata, &graph->rdata, LTERM); return graph->minvol; } metis-edf-4.1/Lib/mbalance2.c0000644000372500037370000002430111115455203016221 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mbalance2.c * * This file contains code that is used to forcefully balance either * bisections or k-sections * * Started 7/29/97 * George * * $Id: mbalance2.c,v 1.1 1998/11/27 17:59:19 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point of the bisection balancing algorithms. **************************************************************************/ void MocBalance2Way2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long i; float tvec[MAXNCON]; Compute2WayHLoadImbalanceVec(graph->ncon, graph->npwgts, tpwgts, tvec); if (!AreAllBelow(graph->ncon, tvec, ubvec)) MocGeneral2WayBalance2(ctrl, graph, tpwgts, ubvec); } /************************************************************************* * This function performs an edge-based FM refinement **************************************************************************/ void MocGeneral2WayBalance2(CtrlType *ctrl, GraphType *graph, float *tpwgts, float *ubvec) { long i, ii, j, k, l, kwgt, nvtxs, ncon, nbnd, nswaps, from, to, pass, me, limit, tmp, cnum; idxtype *xadj, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind; idxtype *moved, *swaps, *perm, *qnum; float *nvwgt, *npwgts, origbal[MAXNCON], minbal[MAXNCON], newbal[MAXNCON]; PQueueType parts[MAXNCON][2]; long higain, oldgain, mincut, newcut, mincutorder; float *maxwgt, *minwgt, tvec[MAXNCON]; nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; npwgts = graph->npwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); swaps = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); qnum = idxwspacemalloc(ctrl, nvtxs); limit = amin(amax(0.01*nvtxs, 15), 100); /* Setup the weight intervals of the two subdomains */ minwgt = fwspacemalloc(ctrl, 2*ncon); maxwgt = fwspacemalloc(ctrl, 2*ncon); for (i=0; i<2; i++) { for (j=0; jmincut; mincutorder = -1; if (ctrl->dbglvl&DBG_REFINE) { printf("Parts: ["); for (l=0; lnvtxs, graph->nbnd, graph->mincut); for (i=0; imincut); ASSERT(CheckBnd(graph)); /* Insert all nodes in the priority queues */ nbnd = graph->nbnd; RandomPermute(nvtxs, perm, 1); for (ii=0; ii limit) { /* We hit the limit, undo last move */ newcut += (ed[higain]-id[higain]); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+from*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); break; } where[higain] = to; moved[higain] = nswaps; swaps[nswaps] = higain; if (ctrl->dbglvl&DBG_MOVEINFO) { printf("Moved %6ld from %ld(%ld). Gain: %5ld, Cut: %5ld, NPwgts: ", higain, from, cnum, ed[higain]-id[higain], newcut); for (i=0; i 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0 && bndptr[k] == -1) BNDInsert(nbnd, bndind, bndptr, k); } } /**************************************************************** * Roll back computations *****************************************************************/ for (i=0; imincutorder; nswaps--) { higain = swaps[nswaps]; to = where[higain] = (where[higain]+1)%2; SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); else if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); saxpy(ncon, 1.0, nvwgt+higain*ncon, 1, npwgts+to*ncon, 1); saxpy(ncon, -1.0, nvwgt+higain*ncon, 1, npwgts+((to+1)%2)*ncon, 1); for (j=xadj[higain]; j 0) BNDInsert(nbnd, bndind, bndptr, k); } } if (ctrl->dbglvl&DBG_REFINE) { printf("\tMincut: %6ld at %5ld, NBND: %6ld, NPwgts: [", mincut, mincutorder, nbnd); for (i=0; imincut = mincut; graph->nbnd = nbnd; for (i=0; i= maxdiff) { maxdiff = diff; *from = j; *cnum = i; } } } /* DELETE j = *from; for (i=0; i 0) { maxdiff = (npwgts[(*from)*ncon+i] - maxwgt[(*from)*ncon+i]); *cnum = i; break; } } for (i++; i maxdiff && PQueueGetSize(&queues[i][*from]) > 0) { maxdiff = diff; *cnum = i; } } } /* If the constraints ar OK, select a high gain vertex */ if (*from == -1) { maxgain = -100000; for (j=0; j<2; j++) { for (i=0; i 0 && PQueueGetKey(&queues[i][j]) > maxgain) { maxgain = PQueueGetKey(&queues[i][0]); *from = j; *cnum = i; } } } /* printf("(%2ld %2ld) %3ld\n", *from, *cnum, maxgain); */ } } metis-edf-4.1/Lib/kwayvolrefine.c0000644000372500037370000003451511115455203017272 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * kwayvolrefine.c * * This file contains the driving routines for multilevel k-way refinement * * Started 7/28/97 * George * * $Id: kwayvolrefine.c,v 1.2 1998/11/30 16:13:57 karypis Exp $ */ #include /************************************************************************* * This function is the entry point of refinement **************************************************************************/ void RefineVolKWay(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, long nparts, float *tpwgts, float ubfactor) { long i, nlevels; GraphType *ptr; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); /* Take care any non-contiguity */ if (ctrl->RType == RTYPE_KWAYRANDOM_MCONN) { ComputeVolKWayPartitionParams(ctrl, graph, nparts); EliminateVolComponents(ctrl, graph, nparts, tpwgts, 1.25); EliminateVolSubDomainEdges(ctrl, graph, nparts, tpwgts); EliminateVolComponents(ctrl, graph, nparts, tpwgts, 1.25); } /* Determine how many levels are there */ for (ptr=graph, nlevels=0; ptr!=orggraph; ptr=ptr->finer, nlevels++); /* Compute the parameters of the coarsest graph */ ComputeVolKWayPartitionParams(ctrl, graph, nparts); for (i=0; ;i++) { /*PrintSubDomainGraph(graph, nparts, graph->where);*/ MALLOC_CHECK(NULL); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); if (2*i >= nlevels && !IsBalanced(graph->pwgts, nparts, tpwgts, 1.04*ubfactor)) { ComputeVolKWayBalanceBoundary(ctrl, graph, nparts); switch (ctrl->RType) { case RTYPE_KWAYRANDOM: Greedy_KWayVolBalance(ctrl, graph, nparts, tpwgts, ubfactor, 1); break; case RTYPE_KWAYRANDOM_MCONN: Greedy_KWayVolBalanceMConn(ctrl, graph, nparts, tpwgts, ubfactor, 1); break; } ComputeVolKWayBoundary(ctrl, graph, nparts); } switch (ctrl->RType) { case RTYPE_KWAYRANDOM: Random_KWayVolRefine(ctrl, graph, nparts, tpwgts, ubfactor, 10, 0); break; case RTYPE_KWAYRANDOM_MCONN: Random_KWayVolRefineMConn(ctrl, graph, nparts, tpwgts, ubfactor, 10, 0); break; } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; GKfree(&graph->gdata, LTERM); /* Deallocate the graph related arrays */ graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); ProjectVolKWayPartition(ctrl, graph, nparts); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } if (!IsBalanced(graph->pwgts, nparts, tpwgts, ubfactor)) { ComputeVolKWayBalanceBoundary(ctrl, graph, nparts); switch (ctrl->RType) { case RTYPE_KWAYRANDOM: Greedy_KWayVolBalance(ctrl, graph, nparts, tpwgts, ubfactor, 8); Random_KWayVolRefine(ctrl, graph, nparts, tpwgts, ubfactor, 10, 0); break; case RTYPE_KWAYRANDOM_MCONN: Greedy_KWayVolBalanceMConn(ctrl, graph, nparts, tpwgts, ubfactor, 8); Random_KWayVolRefineMConn(ctrl, graph, nparts, tpwgts, ubfactor, 10, 0); break; } } EliminateVolComponents(ctrl, graph, nparts, tpwgts, ubfactor); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } /************************************************************************* * This function allocates memory for k-way edge refinement **************************************************************************/ void AllocateVolKWayPartitionMemory(CtrlType *ctrl, GraphType *graph, long nparts) { long nvtxs, pad64; nvtxs = graph->nvtxs; pad64 = (3*nvtxs+nparts)%2; graph->rdata = idxmalloc(3*nvtxs+nparts+(sizeof(VRInfoType)/sizeof(idxtype))*nvtxs+pad64, "AllocateVolKWayPartitionMemory: rdata"); graph->pwgts = graph->rdata; graph->where = graph->rdata + nparts; graph->bndptr = graph->rdata + nvtxs + nparts; graph->bndind = graph->rdata + 2*nvtxs + nparts; graph->vrinfo = (VRInfoType *)(graph->rdata + 3*nvtxs+nparts + pad64); } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void ComputeVolKWayPartitionParams(CtrlType *ctrl, GraphType *graph, long nparts) { long i, ii, j, k, kk, l, nvtxs, nbnd, mincut, minvol, me, other, pid; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *pwgts, *where; VRInfoType *rinfo, *myrinfo, *orinfo; VEDegreeType *myedegrees, *oedegrees; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; pwgts = idxset(nparts, 0, graph->pwgts); rinfo = graph->vrinfo; /*------------------------------------------------------------ / Compute now the id/ed degrees /------------------------------------------------------------*/ ctrl->wspace.cdegree = 0; mincut = 0; for (i=0; iid = myrinfo->ed = myrinfo->nid = myrinfo->ndegrees = 0; myrinfo->edegrees = NULL; for (j=xadj[i]; jid += adjwgt[j]; myrinfo->nid++; } } myrinfo->ed = graph->adjwgtsum[i] - myrinfo->id; mincut += myrinfo->ed; /* Time to compute the particular external degrees */ if (myrinfo->ed > 0) { myedegrees = myrinfo->edegrees = ctrl->wspace.vedegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[i+1]-xadj[i]; for (j=xadj[i]; jndegrees; k++) { if (myedegrees[k].pid == other) { myedegrees[k].ed += adjwgt[j]; myedegrees[k].ned++; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].gv = 0; myedegrees[myrinfo->ndegrees].pid = other; myedegrees[myrinfo->ndegrees].ed = adjwgt[j]; myedegrees[myrinfo->ndegrees++].ned = 1; } } } ASSERT(myrinfo->ndegrees <= xadj[i+1]-xadj[i]); } } graph->mincut = mincut/2; ComputeKWayVolGains(ctrl, graph, nparts); } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void ComputeKWayVolGains(CtrlType *ctrl, GraphType *graph, long nparts) { long i, ii, j, k, kk, l, nvtxs, me, other, pid, myndegrees; idxtype *xadj, *vsize, *adjncy, *adjwgt, *where, *bndind, *bndptr, *ophtable; VRInfoType *rinfo, *myrinfo, *orinfo; VEDegreeType *myedegrees, *oedegrees; nvtxs = graph->nvtxs; xadj = graph->xadj; vsize = graph->vsize; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); rinfo = graph->vrinfo; ophtable = idxset(nparts, -1, idxwspacemalloc(ctrl, nparts)); /*------------------------------------------------------------ / Compute now the iv/ev degrees /------------------------------------------------------------*/ graph->minvol = graph->nbnd = 0; for (i=0; igv = -MAXIDX; if (myrinfo->ndegrees > 0) { me = where[i]; myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; graph->minvol += myndegrees*vsize[i]; for (j=xadj[i]; jedegrees; for (k=0; kndegrees; k++) ophtable[oedegrees[k].pid] = k; ophtable[other] = 1; /* this is to simplify coding */ if (me == other) { /* Find which domains 'i' is connected and 'ii' is not and update their gain */ for (k=0; kndegrees; kk++) ophtable[oedegrees[kk].pid] = -1; ophtable[other] = -1; } /* Compute the max vgain */ for (k=0; k myrinfo->gv) myrinfo->gv = myedegrees[k].gv; } } if (myrinfo->ed > 0 && myrinfo->id == 0) myrinfo->gv += vsize[i]; if (myrinfo->gv >= 0 || myrinfo->ed-myrinfo->id >= 0) BNDInsert(graph->nbnd, bndind, bndptr, i); } idxwspacefree(ctrl, nparts); } /************************************************************************* * This function projects a partition, and at the same time computes the * parameters for refinement. **************************************************************************/ void ProjectVolKWayPartition(CtrlType *ctrl, GraphType *graph, long nparts) { long i, j, k, nvtxs, me, other, istart, iend, ndegrees; idxtype *xadj, *adjncy, *adjwgt, *adjwgtsum; idxtype *cmap, *where; idxtype *cwhere; GraphType *cgraph; VRInfoType *crinfo, *rinfo, *myrinfo; VEDegreeType *myedegrees; idxtype *htable; cgraph = graph->coarser; cwhere = cgraph->where; crinfo = cgraph->vrinfo; nvtxs = graph->nvtxs; cmap = graph->cmap; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; AllocateVolKWayPartitionMemory(ctrl, graph, nparts); where = graph->where; rinfo = graph->vrinfo; /* Go through and project partition and compute id/ed for the nodes */ for (i=0; iwspace.cdegree = 0; for (i=0; iid = myrinfo->ed = myrinfo->nid = myrinfo->ndegrees = 0; myrinfo->edegrees = NULL; myrinfo->id = adjwgtsum[i]; myrinfo->nid = xadj[i+1]-xadj[i]; if (cmap[i] > 0) { /* If it is an interface node. Note cmap[i] = crinfo[cmap[i]].ed */ istart = xadj[i]; iend = xadj[i+1]; myedegrees = myrinfo->edegrees = ctrl->wspace.vedegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += iend-istart; ndegrees = 0; for (j=istart; jed += adjwgt[j]; myrinfo->nid--; if ((k = htable[other]) == -1) { htable[other] = ndegrees; myedegrees[ndegrees].gv = 0; myedegrees[ndegrees].pid = other; myedegrees[ndegrees].ed = adjwgt[j]; myedegrees[ndegrees++].ned = 1; } else { myedegrees[k].ed += adjwgt[j]; myedegrees[k].ned++; } } } myrinfo->id -= myrinfo->ed; /* Remove space for edegrees if it was interior */ if (myrinfo->ed == 0) { myrinfo->edegrees = NULL; ctrl->wspace.cdegree -= iend-istart; } else { myrinfo->ndegrees = ndegrees; for (j=0; jpwgts, graph->pwgts); graph->mincut = cgraph->mincut; FreeGraph(graph->coarser); graph->coarser = NULL; idxwspacefree(ctrl, nparts); } /************************************************************************* * This function computes the boundary definition for balancing **************************************************************************/ void ComputeVolKWayBoundary(CtrlType *ctrl, GraphType *graph, long nparts) { long i, nvtxs, nbnd; idxtype *bndind, *bndptr; nvtxs = graph->nvtxs; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /*------------------------------------------------------------ / Compute the new boundary /------------------------------------------------------------*/ nbnd = 0; for (i=0; ivrinfo[i].gv >=0 || graph->vrinfo[i].ed-graph->vrinfo[i].id >= 0) BNDInsert(nbnd, bndind, bndptr, i); } graph->nbnd = nbnd; } /************************************************************************* * This function computes the boundary definition for balancing **************************************************************************/ void ComputeVolKWayBalanceBoundary(CtrlType *ctrl, GraphType *graph, long nparts) { long i, nvtxs, nbnd; idxtype *bndind, *bndptr; nvtxs = graph->nvtxs; bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /*------------------------------------------------------------ / Compute the new boundary /------------------------------------------------------------*/ nbnd = 0; for (i=0; ivrinfo[i].ed > 0) BNDInsert(nbnd, bndind, bndptr, i); } graph->nbnd = nbnd; } metis-edf-4.1/Lib/subdomains.c0000644000372500037370000012052111115455203016542 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * subdomains.c * * This file contains functions that deal with prunning the number of * adjacent subdomains in KMETIS * * Started 7/15/98 * George * * $Id: subdomains.c,v 1.1 1998/11/27 17:59:32 karypis Exp $ * */ #include /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Random_KWayEdgeRefineMConn(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses, long ffactor) { long i, ii, iii, j, jj, k, l, pass, nvtxs, nmoves, nbnd, tvwgt, myndegrees; long from, me, to, oldcut, vwgt, gain; long maxndoms, nadd; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *itpwgts; idxtype *phtable, *pmat, *pmatptr, *ndoms; EDegreeType *myedegrees; RInfoType *myrinfo; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndptr = graph->bndptr; bndind = graph->bndind; where = graph->where; pwgts = graph->pwgts; pmat = ctrl->wspace.pmat; phtable = idxwspacemalloc(ctrl, nparts); ndoms = idxwspacemalloc(ctrl, nparts); ComputeSubDomainGraph(graph, nparts, pmat, ndoms); /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); for (i=0; idbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld]-[%6ld %6ld], Balance: %5.3f, Nv-Nb[%6ld %6ld]. Cut: %6ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut)); for (pass=0; passmincut); maxndoms = ndoms[idxamax(nparts, ndoms)]; oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (nmoves=iii=0; iiinbnd; iii++) { ii = perm[iii]; if (ii >= nbnd) continue; i = bndind[ii]; myrinfo = graph->rinfo+i; if (myrinfo->ed >= myrinfo->id) { /* Total ED is too high */ from = where[i]; vwgt = graph->vwgt[i]; if (myrinfo->id > 0 && pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; /* Determine the valid domains */ for (j=0; j maxndoms-1) { phtable[to] = 0; nadd = maxndoms; break; } nadd++; } } if (ndoms[to]+nadd > maxndoms) phtable[to] = 0; if (nadd == 0) phtable[to] = 2; } /* Find the first valid move */ j = myrinfo->id; for (k=0; kid. Allow good nodes to move */ if (pwgts[to]+vwgt <= maxwgt[to]+ffactor*gain && gain >= 0) break; } if (k == myndegrees) continue; /* break out if you did not find a candidate */ for (j=k+1; j myedegrees[k].ed && pwgts[to]+vwgt <= maxwgt[to]) || (myedegrees[j].ed == myedegrees[k].ed && itpwgts[myedegrees[k].pid]*pwgts[to] < itpwgts[to]*pwgts[myedegrees[k].pid])) k = j; } to = myedegrees[k].pid; j = 0; if (myedegrees[k].ed-myrinfo->id > 0) j = 1; else if (myedegrees[k].ed-myrinfo->id == 0) { if (/*(iii&7) == 0 ||*/ phtable[myedegrees[k].pid] == 2 || pwgts[from] >= maxwgt[from] || itpwgts[from]*(pwgts[to]+vwgt) < itpwgts[to]*pwgts[from]) j = 1; } if (j == 0) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update pmat to reflect the move of 'i' */ pmat[from*nparts+to] += (myrinfo->id-myedegrees[k].ed); pmat[to*nparts+from] += (myrinfo->id-myedegrees[k].ed); if (pmat[from*nparts+to] == 0) { ndoms[from]--; if (ndoms[from]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[to*nparts+from] == 0) { ndoms[to]--; if (ndoms[to]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; INC_DEC(pwgts[to], pwgts[from], vwgt); myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed-myrinfo->id < 0) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed-myrinfo->id >= 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed-myrinfo->id < 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } /* Update pmat to reflect the move of 'i' for domains other than 'from' and 'to' */ if (me != from && me != to) { pmat[me*nparts+from] -= adjwgt[j]; pmat[from*nparts+me] -= adjwgt[j]; if (pmat[me*nparts+from] == 0) { ndoms[me]--; if (ndoms[me]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[from*nparts+me] == 0) { ndoms[from]--; if (ndoms[from]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[me*nparts+to] == 0) { ndoms[me]++; if (ndoms[me] > maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[me], maxndoms); maxndoms = ndoms[me]; } } if (pmat[to*nparts+me] == 0) { ndoms[to]++; if (ndoms[to] > maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[to], maxndoms); maxndoms = ndoms[to]; } } pmat[me*nparts+to] += adjwgt[j]; pmat[to*nparts+me] += adjwgt[j]; } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } nmoves++; } } graph->nbnd = nbnd; IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %5ld, Vol: %5ld, %ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut, ComputeVolume(graph, where), idxsum(nparts, ndoms))); if (graph->mincut == oldcut) break; } idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function performs k-way refinement **************************************************************************/ void Greedy_KWayEdgeBalanceMConn(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor, long npasses) { long i, ii, iii, j, jj, k, l, pass, nvtxs, nbnd, tvwgt, myndegrees, oldgain, gain, nmoves; long from, me, to, oldcut, vwgt, maxndoms, nadd; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *pwgts, *perm, *bndptr, *bndind, *minwgt, *maxwgt, *moved, *itpwgts; idxtype *phtable, *pmat, *pmatptr, *ndoms; EDegreeType *myedegrees; RInfoType *myrinfo; PQueueType queue; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; bndind = graph->bndind; bndptr = graph->bndptr; where = graph->where; pwgts = graph->pwgts; pmat = ctrl->wspace.pmat; phtable = idxwspacemalloc(ctrl, nparts); ndoms = idxwspacemalloc(ctrl, nparts); ComputeSubDomainGraph(graph, nparts, pmat, ndoms); /* Setup the weight intervals of the various subdomains */ minwgt = idxwspacemalloc(ctrl, nparts); maxwgt = idxwspacemalloc(ctrl, nparts); itpwgts = idxwspacemalloc(ctrl, nparts); tvwgt = idxsum(nparts, pwgts); ASSERT(tvwgt == idxsum(nvtxs, graph->vwgt)); for (i=0; iadjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]); IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld]-[%6ld %6ld], Balance: %5.3f, Nv-Nb[%6ld %6ld]. Cut: %6ld [B]\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], minwgt[0], maxwgt[0], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nvtxs, graph->nbnd, graph->mincut)); for (pass=0; passmincut); /* Check to see if things are out of balance, given the tolerance */ for (i=0; i maxwgt[i]) break; } if (i == nparts) /* Things are balanced. Return right away */ break; PQueueReset(&queue); idxset(nvtxs, -1, moved); oldcut = graph->mincut; nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; iirinfo[i].ed - graph->rinfo[i].id); moved[i] = 2; } maxndoms = ndoms[idxamax(nparts, ndoms)]; for (nmoves=0;;) { if ((i = PQueueGetMax(&queue)) == -1) break; moved[i] = 1; myrinfo = graph->rinfo+i; from = where[i]; vwgt = graph->vwgt[i]; if (pwgts[from]-vwgt < minwgt[from]) continue; /* This cannot be moved! */ myedegrees = myrinfo->edegrees; myndegrees = myrinfo->ndegrees; /* Determine the valid domains */ for (j=0; j maxndoms-1) { phtable[to] = 0; nadd = maxndoms; break; } nadd++; } } if (ndoms[to]+nadd > maxndoms) phtable[to] = 0; } for (k=0; k minwgt[to] && myedegrees[k].ed-myrinfo->id < 0) continue; /*===================================================================== * If we got here, we can now move the vertex from 'from' to 'to' *======================================================================*/ graph->mincut -= myedegrees[k].ed-myrinfo->id; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("\t\tMoving %6ld to %3ld. Gain: %4ld. Cut: %6ld\n", i, to, myedegrees[k].ed-myrinfo->id, graph->mincut)); /* Update pmat to reflect the move of 'i' */ pmat[from*nparts+to] += (myrinfo->id-myedegrees[k].ed); pmat[to*nparts+from] += (myrinfo->id-myedegrees[k].ed); if (pmat[from*nparts+to] == 0) { ndoms[from]--; if (ndoms[from]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[to*nparts+from] == 0) { ndoms[to]--; if (ndoms[to]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; INC_DEC(pwgts[to], pwgts[from], vwgt); myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed == 0) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); oldgain = (myrinfo->ed-myrinfo->id); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed > 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed == 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } /* Update pmat to reflect the move of 'i' for domains other than 'from' and 'to' */ if (me != from && me != to) { pmat[me*nparts+from] -= adjwgt[j]; pmat[from*nparts+me] -= adjwgt[j]; if (pmat[me*nparts+from] == 0) { ndoms[me]--; if (ndoms[me]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[from*nparts+me] == 0) { ndoms[from]--; if (ndoms[from]+1 == maxndoms) maxndoms = ndoms[idxamax(nparts, ndoms)]; } if (pmat[me*nparts+to] == 0) { ndoms[me]++; if (ndoms[me] > maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[me], maxndoms); maxndoms = ndoms[me]; } } if (pmat[to*nparts+me] == 0) { ndoms[to]++; if (ndoms[to] > maxndoms) { printf("You just increased the maxndoms: %ld %ld\n", ndoms[to], maxndoms); maxndoms = ndoms[to]; } } pmat[me*nparts+to] += adjwgt[j]; pmat[to*nparts+me] += adjwgt[j]; } /* Update the queue */ if (me == to || me == from) { gain = myrinfo->ed-myrinfo->id; if (moved[ii] == 2) { if (myrinfo->ed > 0) PQueueUpdate(&queue, ii, oldgain, gain); else { PQueueDelete(&queue, ii, oldgain); moved[ii] = -1; } } else if (moved[ii] == -1 && myrinfo->ed > 0) { PQueueInsert(&queue, ii, gain); moved[ii] = 2; } } ASSERT(myrinfo->ndegrees <= xadj[ii+1]-xadj[ii]); ASSERT(CheckRInfo(myrinfo)); } nmoves++; } graph->nbnd = nbnd; IFSET(ctrl->dbglvl, DBG_REFINE, printf("\t[%6ld %6ld], Balance: %5.3f, Nb: %6ld. Nmoves: %5ld, Cut: %6ld, %ld\n", pwgts[idxamin(nparts, pwgts)], pwgts[idxamax(nparts, pwgts)], 1.0*nparts*pwgts[idxamax(nparts, pwgts)]/tvwgt, graph->nbnd, nmoves, graph->mincut,idxsum(nparts, ndoms))); } PQueueFree(ctrl, &queue); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function computes the subdomain graph **************************************************************************/ void PrintSubDomainGraph(GraphType *graph, long nparts, idxtype *where) { long i, j, k, me, nvtxs, total, max; idxtype *xadj, *adjncy, *adjwgt, *pmat; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; pmat = idxsmalloc(nparts*nparts, 0, "ComputeSubDomainGraph: pmat"); for (i=0; i 0) k++; } total += k; if (k > max) max = k; /* printf("%2ld -> %2ld ", i, k); for (j=0; j 0) printf("[%2ld %4ld] ", j, pmat[i*nparts+j]); } printf("\n"); */ } printf("Total adjacent subdomains: %ld, Max: %ld\n", total, max); free(pmat); } /************************************************************************* * This function computes the subdomain graph **************************************************************************/ void ComputeSubDomainGraph(GraphType *graph, long nparts, idxtype *pmat, idxtype *ndoms) { long i, j, k, me, nvtxs, ndegrees; idxtype *xadj, *adjncy, *adjwgt, *where; RInfoType *rinfo; EDegreeType *edegrees; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; rinfo = graph->rinfo; idxset(nparts*nparts, 0, pmat); for (i=0; i 0) { me = where[i]; ndegrees = rinfo[i].ndegrees; edegrees = rinfo[i].edegrees; k = me*nparts; for (j=0; j 0) ndoms[i]++; } } } /************************************************************************* * This function computes the subdomain graph **************************************************************************/ void EliminateSubDomainEdges(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts) { long i, ii, j, k, me, other, nvtxs, total, max, avg, totalout, nind, ncand, ncand2, target, target2, nadd; long min, move, cpwgt, tvwgt; idxtype *xadj, *adjncy, *vwgt, *adjwgt, *pwgts, *where, *maxpwgt, *pmat, *ndoms, *mypmat, *otherpmat, *ind; KeyValueType *cand, *cand2; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; adjwgt = graph->adjwgt; where = graph->where; pwgts = graph->pwgts; /* We assume that this is properly initialized */ maxpwgt = idxwspacemalloc(ctrl, nparts); ndoms = idxwspacemalloc(ctrl, nparts); otherpmat = idxwspacemalloc(ctrl, nparts); ind = idxwspacemalloc(ctrl, nvtxs); pmat = ctrl->wspace.pmat; cand = (KeyValueType *)GKmalloc(nparts*sizeof(KeyValueType), "EliminateSubDomainEdges: cand"); cand2 = (KeyValueType *)GKmalloc(nparts*sizeof(KeyValueType), "EliminateSubDomainEdges: cand"); /* Compute the pmat matrix and ndoms */ ComputeSubDomainGraph(graph, nparts, pmat, ndoms); /* Compute the maximum allowed weight for each domain */ tvwgt = idxsum(nparts, pwgts); for (i=0; i 0) { cand2[ncand2].key = mypmat[i]; cand2[ncand2++].val = i; } } ikeysort(ncand2, cand2); move = 0; for (min=0; min totalout/(2*ndoms[me])) break; other = cand2[min].val; /*printf("\tMinOut: %ld to %ld\n", mypmat[other], other);*/ idxset(nparts, 0, otherpmat); /* Go and find the vertices in 'other' that are connected in 'me' */ for (nind=0, i=0; i 0) { cand[ncand].key = -otherpmat[i]; cand[ncand++].val = i; } } ikeysort(ncand, cand); /* * Go through and the select the first domain that is common with 'me', and * does not increase the ndoms[target] higher than my ndoms, subject to the * maxpwgt constraint. Traversal is done from the mostly connected to the least. */ target = target2 = -1; for (i=0; i 0) { if (pwgts[k] + cpwgt > maxpwgt[k]) /* Check if balance will go off */ continue; for (j=0; j 0 && ndoms[j] >= ndoms[me]-1 && pmat[nparts*j+k] == 0) break; } if (j == nparts) { /* No bad second level effects */ for (nadd=0, j=0; j 0 && pmat[nparts*k+j] == 0) nadd++; } /*printf("\t\tto=%ld, nadd=%ld, %ld\n", k, nadd, ndoms[k]);*/ if (target2 == -1 && ndoms[k]+nadd < ndoms[me]) { target2 = k; } if (nadd == 0) { target = k; break; } } } } if (target == -1 && target2 != -1) target = target2; if (target == -1) { /* printf("\t\tCould not make the move\n");*/ continue; } /*printf("\t\tMoving to %ld\n", target);*/ /* Update the partition weights */ INC_DEC(pwgts[target], pwgts[other], cpwgt); MoveGroupMConn(ctrl, graph, ndoms, pmat, nparts, target, nind, ind); move = 1; break; } if (move == 0) break; } idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); GKfree(&cand, &cand2, LTERM); } /************************************************************************* * This function moves a collection of vertices and updates their rinfo **************************************************************************/ void MoveGroupMConn(CtrlType *ctrl, GraphType *graph, idxtype *ndoms, idxtype *pmat, long nparts, long to, long nind, idxtype *ind) { long i, ii, iii, j, jj, k, l, nvtxs, nbnd, myndegrees; long from, me; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *bndptr, *bndind; EDegreeType *myedegrees; RInfoType *myrinfo; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; nbnd = graph->nbnd; for (iii=0; iiirinfo+i; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[i+1]-xadj[i]; myrinfo->ndegrees = 0; } myedegrees = myrinfo->edegrees; /* find the location of 'to' in myrinfo or create it if it is not there */ for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) break; } if (k == myrinfo->ndegrees) { myedegrees[k].pid = to; myedegrees[k].ed = 0; myrinfo->ndegrees++; } graph->mincut -= myedegrees[k].ed-myrinfo->id; /* Update pmat to reflect the move of 'i' */ pmat[from*nparts+to] += (myrinfo->id-myedegrees[k].ed); pmat[to*nparts+from] += (myrinfo->id-myedegrees[k].ed); if (pmat[from*nparts+to] == 0) ndoms[from]--; if (pmat[to*nparts+from] == 0) ndoms[to]--; /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed-myrinfo->id < 0 && bndptr[i] != -1) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed-myrinfo->id >= 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed-myrinfo->id < 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } /* Update pmat to reflect the move of 'i' for domains other than 'from' and 'to' */ if (me != from && me != to) { pmat[me*nparts+from] -= adjwgt[j]; pmat[from*nparts+me] -= adjwgt[j]; if (pmat[me*nparts+from] == 0) ndoms[me]--; if (pmat[from*nparts+me] == 0) ndoms[from]--; if (pmat[me*nparts+to] == 0) ndoms[me]++; if (pmat[to*nparts+me] == 0) ndoms[to]++; pmat[me*nparts+to] += adjwgt[j]; pmat[to*nparts+me] += adjwgt[j]; } ASSERT(CheckRInfo(myrinfo)); } ASSERT(CheckRInfo(graph->rinfo+i)); } graph->nbnd = nbnd; } /************************************************************************* * This function finds all the connected components induced by the * partitioning vector in wgraph->where and tries to push them around to * remove some of them **************************************************************************/ void EliminateComponents(CtrlType *ctrl, GraphType *graph, long nparts, float *tpwgts, float ubfactor) { long i, ii, j, jj, k, me, nvtxs, tvwgt, first, last, nleft, ncmps, cwgt, other, target, deltawgt; idxtype *xadj, *adjncy, *vwgt, *adjwgt, *where, *pwgts, *maxpwgt; idxtype *cpvec, *touched, *perm, *todo, *cind, *cptr, *npcmps; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; vwgt = graph->vwgt; adjwgt = graph->adjwgt; where = graph->where; pwgts = graph->pwgts; touched = idxset(nvtxs, 0, idxwspacemalloc(ctrl, nvtxs)); cptr = idxwspacemalloc(ctrl, nvtxs); cind = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); todo = idxwspacemalloc(ctrl, nvtxs); maxpwgt = idxwspacemalloc(ctrl, nparts); cpvec = idxwspacemalloc(ctrl, nparts); npcmps = idxset(nparts, 0, idxwspacemalloc(ctrl, nparts)); for (i=0; i 0) { if (first == last) { /* Find another starting vertex */ cptr[++ncmps] = first; ASSERT(touched[todo[0]] == 0); i = todo[0]; cind[last++] = i; touched[i] = 1; me = where[i]; npcmps[me]++; } i = cind[first++]; k = perm[i]; j = todo[k] = todo[--nleft]; perm[j] = k; for (j=xadj[i]; j nparts) { /* There are more components than processors */ /* First determine the max allowed load imbalance */ tvwgt = idxsum(nparts, pwgts); for (i=0; i .30*pwgts[me]) continue; /* Skip the component if it is over 30% of the weight */ /* Determine the connectivity */ idxset(nparts, 0, cpvec); for (j=cptr[i]; j 0 && (cwgt < deltawgt || pwgts[j] + cwgt < maxpwgt[j])) { if (target == -1 || cpvec[target] < cpvec[j]) target = j; } } /* printf("\tMoving it to %ld [%ld]\n", target, cpvec[target]);*/ if (target != -1) { /* Assign all the vertices of 'me' to 'target' and update data structures */ INC_DEC(pwgts[target], pwgts[me], cwgt); npcmps[me]--; MoveGroup(ctrl, graph, nparts, target, i, cptr, cind); } } } idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nparts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function moves a collection of vertices and updates their rinfo **************************************************************************/ void MoveGroup(CtrlType *ctrl, GraphType *graph, long nparts, long to, long gid, idxtype *ptr, idxtype *ind) { long i, ii, iii, j, jj, k, l, nvtxs, nbnd, myndegrees; long from, me; idxtype *xadj, *adjncy, *adjwgt; idxtype *where, *bndptr, *bndind; EDegreeType *myedegrees; RInfoType *myrinfo; nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; bndptr = graph->bndptr; bndind = graph->bndind; nbnd = graph->nbnd; for (iii=ptr[gid]; iiirinfo+i; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[i+1]-xadj[i]; myrinfo->ndegrees = 0; } myedegrees = myrinfo->edegrees; /* find the location of 'to' in myrinfo or create it if it is not there */ for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) break; } if (k == myrinfo->ndegrees) { myedegrees[k].pid = to; myedegrees[k].ed = 0; myrinfo->ndegrees++; } graph->mincut -= myedegrees[k].ed-myrinfo->id; /* Update where, weight, and ID/ED information of the vertex you moved */ where[i] = to; myrinfo->ed += myrinfo->id-myedegrees[k].ed; SWAP(myrinfo->id, myedegrees[k].ed, j); if (myedegrees[k].ed == 0) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].pid = from; if (myrinfo->ed-myrinfo->id < 0 && bndptr[i] != -1) BNDDelete(nbnd, bndind, bndptr, i); /* Update the degrees of adjacent vertices */ for (j=xadj[i]; jrinfo+ii; if (myrinfo->edegrees == NULL) { myrinfo->edegrees = ctrl->wspace.edegrees+ctrl->wspace.cdegree; ctrl->wspace.cdegree += xadj[ii+1]-xadj[ii]; } myedegrees = myrinfo->edegrees; ASSERT(CheckRInfo(myrinfo)); if (me == from) { INC_DEC(myrinfo->ed, myrinfo->id, adjwgt[j]); if (myrinfo->ed-myrinfo->id >= 0 && bndptr[ii] == -1) BNDInsert(nbnd, bndind, bndptr, ii); } else if (me == to) { INC_DEC(myrinfo->id, myrinfo->ed, adjwgt[j]); if (myrinfo->ed-myrinfo->id < 0 && bndptr[ii] != -1) BNDDelete(nbnd, bndind, bndptr, ii); } /* Remove contribution from the .ed of 'from' */ if (me != from) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == from) { if (myedegrees[k].ed == adjwgt[j]) myedegrees[k] = myedegrees[--myrinfo->ndegrees]; else myedegrees[k].ed -= adjwgt[j]; break; } } } /* Add contribution to the .ed of 'to' */ if (me != to) { for (k=0; kndegrees; k++) { if (myedegrees[k].pid == to) { myedegrees[k].ed += adjwgt[j]; break; } } if (k == myrinfo->ndegrees) { myedegrees[myrinfo->ndegrees].pid = to; myedegrees[myrinfo->ndegrees++].ed = adjwgt[j]; } } ASSERT(CheckRInfo(myrinfo)); } ASSERT(CheckRInfo(graph->rinfo+i)); } graph->nbnd = nbnd; } metis-edf-4.1/Lib/struct.h0000644000372500037370000002064311115455203015733 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * struct.h * * This file contains data structures for ILU routines. * * Started 9/26/95 * George * * $Id: struct.h,v 1.1 1998/11/27 17:59:31 karypis Exp $ */ /* Undefine the following #define in order to use short long as the idxtype */ #define IDXTYPE_INT /* Indexes are as long as integers for now */ #ifdef IDXTYPE_INT typedef long idxtype; #else typedef short idxtype; #endif #define MAXIDX (((idxtype)1)<<8*sizeof(idxtype)-2) /************************************************************************* * The following data structure stores key-value pair **************************************************************************/ struct KeyValueType { idxtype key; idxtype val; }; typedef struct KeyValueType KeyValueType; /************************************************************************* * The following data structure will hold a node of a doubly-linked list. **************************************************************************/ struct ListNodeType { long id; /* The id value of the node */ struct ListNodeType *prev, *next; /* It's a doubly-linked list */ }; typedef struct ListNodeType ListNodeType; /************************************************************************* * The following data structure is used to store the buckets for the * refinment algorithms **************************************************************************/ struct PQueueType { long type; /* The type of the representation used */ long nnodes; long maxnodes; long mustfree; /* Linear array version of the data structures */ long pgainspan, ngainspan; /* plus and negative gain span */ long maxgain; ListNodeType *nodes; ListNodeType **buckets; /* Heap version of the data structure */ KeyValueType *heap; idxtype *locator; }; typedef struct PQueueType PQueueType; /************************************************************************* * The following data structure stores an edge **************************************************************************/ struct edegreedef { idxtype pid; idxtype ed; }; typedef struct edegreedef EDegreeType; /************************************************************************* * The following data structure stores an edge for vol **************************************************************************/ struct vedegreedef { idxtype pid; idxtype ed, ned; idxtype gv; }; typedef struct vedegreedef VEDegreeType; /************************************************************************* * This data structure holds various working space data **************************************************************************/ struct workspacedef { idxtype *core; /* Where pairs, indices, and degrees are coming from */ long maxcore, ccore; EDegreeType *edegrees; VEDegreeType *vedegrees; long cdegree; idxtype *auxcore; /* This points to the memory of the edegrees */ idxtype *pmat; /* An array of k^2 used for eliminating domain connectivity in k-way refinement */ }; typedef struct workspacedef WorkSpaceType; /************************************************************************* * The following data structure holds information on degrees for k-way * partition **************************************************************************/ struct rinfodef { long id, ed; /* ID/ED of nodes */ long ndegrees; /* The number of different ext-degrees */ EDegreeType *edegrees; /* List of edges */ }; typedef struct rinfodef RInfoType; /************************************************************************* * The following data structure holds information on degrees for k-way * vol-based partition **************************************************************************/ struct vrinfodef { long id, ed, nid; /* ID/ED of nodes */ long gv; /* IV/EV of nodes */ long ndegrees; /* The number of different ext-degrees */ VEDegreeType *edegrees; /* List of edges */ }; typedef struct vrinfodef VRInfoType; /************************************************************************* * The following data structure holds information on degrees for k-way * partition **************************************************************************/ struct nrinfodef { idxtype edegrees[2]; }; typedef struct nrinfodef NRInfoType; /************************************************************************* * This data structure holds the input graph **************************************************************************/ struct graphdef { idxtype *gdata, *rdata; /* Memory pools for graph and refinement data. This is where memory is allocated and used the rest of the fields in this structure */ long nvtxs, nedges; /* The # of vertices and edges in the graph */ idxtype *xadj; /* Pointers to the locally stored vertices */ idxtype *vwgt; /* Vertex weights */ idxtype *vsize; /* Vertex sizes for min-volume formulation */ idxtype *adjncy; /* Array that stores the adjacency lists of nvtxs */ idxtype *adjwgt; /* Array that stores the weights of the adjacency lists */ idxtype *adjwgtsum; /* The sum of the adjacency weight of each vertex */ idxtype *label; idxtype *cmap; /* Partition parameters */ long mincut, minvol; idxtype *where, *pwgts; long nbnd; idxtype *bndptr, *bndind; /* Bisection refinement parameters */ idxtype *id, *ed; /* K-way refinement parameters */ RInfoType *rinfo; /* K-way volume refinement parameters */ VRInfoType *vrinfo; /* Node refinement information */ NRInfoType *nrinfo; /* Additional info needed by the MOC routines */ long ncon; /* The # of constrains */ float *nvwgt; /* Normalized vertex weights */ float *npwgts; /* The normalized partition weights */ struct graphdef *coarser, *finer; }; typedef struct graphdef GraphType; /************************************************************************* * The following data type implements a timer **************************************************************************/ typedef double timer; /************************************************************************* * The following structure stores information used by Metis **************************************************************************/ struct controldef { long CoarsenTo; /* The # of vertices in the coarsest graph */ long dbglvl; /* Controls the debuging output of the program */ long CType; /* The type of coarsening */ long IType; /* The type of initial partitioning */ long RType; /* The type of refinement */ long maxvwgt; /* The maximum allowed weight for a vertex */ float nmaxvwgt; /* The maximum allowed weight for a vertex for each constrain */ long optype; /* Type of operation */ long pfactor; /* .1*prunning factor */ long nseps; /* The number of separators to be found during multiple bisections */ long oflags; WorkSpaceType wspace; /* Work Space Informations */ /* Various Timers */ timer TotalTmr, InitPartTmr, MatchTmr, ContractTmr, CoarsenTmr, UncoarsenTmr, SepTmr, RefTmr, ProjectTmr, SplitTmr, AuxTmr1, AuxTmr2, AuxTmr3, AuxTmr4, AuxTmr5, AuxTmr6; }; typedef struct controldef CtrlType; /************************************************************************* * The following data structure stores max-partition weight info for * Vertical MOC k-way refinement **************************************************************************/ struct vpwgtdef { float max[2][MAXNCON]; long imax[2][MAXNCON]; }; typedef struct vpwgtdef VPInfoType; metis-edf-4.1/Lib/balance.c0000644000372500037370000002275411115455203015774 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * balance.c * * This file contains code that is used to forcefully balance either * bisections or k-sections * * Started 7/29/97 * George * * $Id: balance.c,v 1.1 1998/11/27 17:59:10 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point of the bisection balancing algorithms. **************************************************************************/ void Balance2Way(CtrlType *ctrl, GraphType *graph, long *tpwgts, float ubfactor) { long i, j, nvtxs, from, imax, gain, mindiff; idxtype *id, *ed; /* Return right away if the balance is OK */ mindiff = abs(tpwgts[0]-graph->pwgts[0]); if (mindiff < 3*(graph->pwgts[0]+graph->pwgts[1])/graph->nvtxs) return; if (graph->pwgts[0] > tpwgts[0] && graph->pwgts[0] < (long)(ubfactor*tpwgts[0])) return; if (graph->pwgts[1] > tpwgts[1] && graph->pwgts[1] < (long)(ubfactor*tpwgts[1])) return; if (graph->nbnd > 0) Bnd2WayBalance(ctrl, graph, tpwgts); else General2WayBalance(ctrl, graph, tpwgts); } /************************************************************************* * This function balances two partitions by moving boundary nodes * from the domain that is overweight to the one that is underweight. **************************************************************************/ void Bnd2WayBalance(CtrlType *ctrl, GraphType *graph, long *tpwgts) { long i, ii, j, k, kwgt, nvtxs, nbnd, nswaps, from, to, pass, me, tmp; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind, *pwgts; idxtype *moved, *perm; PQueueType parts; long higain, oldgain, mincut, mindiff; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; pwgts = graph->pwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); /* Determine from which domain you will be moving data */ mindiff = abs(tpwgts[0]-pwgts[0]); from = (pwgts[0] < tpwgts[0] ? 1 : 0); to = (from+1)%2; IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] T[%6ld %6ld], Nv-Nb[%6ld %6ld]. ICut: %6ld [B]\n", pwgts[0], pwgts[1], tpwgts[0], tpwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); tmp = graph->adjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]; PQueueInit(ctrl, &parts, nvtxs, tmp); idxset(nvtxs, -1, moved); ASSERT(ComputeCut(graph, where) == graph->mincut); ASSERT(CheckBnd(graph)); /* Insert the boundary nodes of the proper partition whose size is OK in the priority queue */ nbnd = graph->nbnd; RandomPermute(nbnd, perm, 1); for (ii=0; ii 0 || id[bndind[i]] == 0); ASSERT(bndptr[bndind[i]] != -1); if (where[bndind[i]] == from && vwgt[bndind[i]] <= mindiff) PQueueInsert(&parts, bndind[i], ed[bndind[i]]-id[bndind[i]]); } mincut = graph->mincut; for (nswaps=0; nswaps tpwgts[to]) break; mincut -= (ed[higain]-id[higain]); INC_DEC(pwgts[to], pwgts[from], vwgt[higain]); where[higain] = to; moved[higain] = nswaps; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("Moved %6ld from %ld. [%3ld %3ld] %5ld [%4ld %4ld]\n", higain, from, ed[higain]-id[higain], vwgt[higain], mincut, pwgts[0], pwgts[1])); /************************************************************** * Update the id[i]/ed[i] values of the affected nodes ***************************************************************/ SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0) { /* It will now become a boundary vertex */ BNDInsert(nbnd, bndind, bndptr, k); if (moved[k] == -1 && where[k] == from && vwgt[k] <= mindiff) PQueueInsert(&parts, k, ed[k]-id[k]); } } } } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\tMinimum cut: %6ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; PQueueFree(ctrl, &parts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function balances two partitions by moving the highest gain * (including negative gain) vertices to the other domain. * It is used only when tha unbalance is due to non contigous * subdomains. That is, the are no boundary vertices. * It moves vertices from the domain that is overweight to the one that * is underweight. **************************************************************************/ void General2WayBalance(CtrlType *ctrl, GraphType *graph, long *tpwgts) { long i, ii, j, k, kwgt, nvtxs, nbnd, nswaps, from, to, pass, me, tmp; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *where, *id, *ed, *bndptr, *bndind, *pwgts; idxtype *moved, *perm; PQueueType parts; long higain, oldgain, mincut, mindiff; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; id = graph->id; ed = graph->ed; pwgts = graph->pwgts; bndptr = graph->bndptr; bndind = graph->bndind; moved = idxwspacemalloc(ctrl, nvtxs); perm = idxwspacemalloc(ctrl, nvtxs); /* Determine from which domain you will be moving data */ mindiff = abs(tpwgts[0]-pwgts[0]); from = (pwgts[0] < tpwgts[0] ? 1 : 0); to = (from+1)%2; IFSET(ctrl->dbglvl, DBG_REFINE, printf("Partitions: [%6ld %6ld] T[%6ld %6ld], Nv-Nb[%6ld %6ld]. ICut: %6ld [B]\n", pwgts[0], pwgts[1], tpwgts[0], tpwgts[1], graph->nvtxs, graph->nbnd, graph->mincut)); tmp = graph->adjwgtsum[idxamax(nvtxs, graph->adjwgtsum)]; PQueueInit(ctrl, &parts, nvtxs, tmp); idxset(nvtxs, -1, moved); ASSERT(ComputeCut(graph, where) == graph->mincut); ASSERT(CheckBnd(graph)); /* Insert the nodes of the proper partition whose size is OK in the priority queue */ RandomPermute(nvtxs, perm, 1); for (ii=0; iimincut; nbnd = graph->nbnd; for (nswaps=0; nswaps tpwgts[to]) break; mincut -= (ed[higain]-id[higain]); INC_DEC(pwgts[to], pwgts[from], vwgt[higain]); where[higain] = to; moved[higain] = nswaps; IFSET(ctrl->dbglvl, DBG_MOVEINFO, printf("Moved %6ld from %ld. [%3ld %3ld] %5ld [%4ld %4ld]\n", higain, from, ed[higain]-id[higain], vwgt[higain], mincut, pwgts[0], pwgts[1])); /************************************************************** * Update the id[i]/ed[i] values of the affected nodes ***************************************************************/ SWAP(id[higain], ed[higain], tmp); if (ed[higain] == 0 && bndptr[higain] != -1 && xadj[higain] < xadj[higain+1]) BNDDelete(nbnd, bndind, bndptr, higain); if (ed[higain] > 0 && bndptr[higain] == -1) BNDInsert(nbnd, bndind, bndptr, higain); for (j=xadj[higain]; j 0 && bndptr[k] == -1) BNDInsert(nbnd, bndind, bndptr, k); } } IFSET(ctrl->dbglvl, DBG_REFINE, printf("\tMinimum cut: %6ld, PWGTS: [%6ld %6ld], NBND: %6ld\n", mincut, pwgts[0], pwgts[1], nbnd)); graph->mincut = mincut; graph->nbnd = nbnd; PQueueFree(ctrl, &parts); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } metis-edf-4.1/Lib/pmetis.c0000644000372500037370000002535711115455203015712 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * pmetis.c * * This file contains the top level routines for the multilevel recursive * bisection algorithm PMETIS. * * Started 7/24/97 * George * * $Id: pmetis.c,v 1.1 1998/11/27 17:59:28 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point for PMETIS **************************************************************************/ void METIS_PartGraphRecursive(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, long *options, long *edgecut, idxtype *part) { long i; float *tpwgts; tpwgts = fmalloc(*nparts, "KMETIS: tpwgts"); for (i=0; i<*nparts; i++) tpwgts[i] = 1.0/(1.0*(*nparts)); METIS_WPartGraphRecursive(nvtxs, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, tpwgts, options, edgecut, part); free(tpwgts); } /************************************************************************* * This function is the entry point for PWMETIS that accepts exact weights * for the target partitions **************************************************************************/ void METIS_WPartGraphRecursive(long *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, long *wgtflag, long *numflag, long *nparts, float *tpwgts, long *options, long *edgecut, idxtype *part) { long i, j; GraphType graph; CtrlType ctrl; float *mytpwgts; if (*numflag == 1) Change2CNumbering(*nvtxs, xadj, adjncy); SetUpGraph(&graph, OP_PMETIS, *nvtxs, 1, xadj, adjncy, vwgt, adjwgt, *wgtflag); if (options[0] == 0) { /* Use the default parameters */ ctrl.CType = PMETIS_CTYPE; ctrl.IType = PMETIS_ITYPE; ctrl.RType = PMETIS_RTYPE; ctrl.dbglvl = PMETIS_DBGLVL; } else { ctrl.CType = options[OPTION_CTYPE]; ctrl.IType = options[OPTION_ITYPE]; ctrl.RType = options[OPTION_RTYPE]; ctrl.dbglvl = options[OPTION_DBGLVL]; } ctrl.optype = OP_PMETIS; ctrl.CoarsenTo = 20; ctrl.maxvwgt = 1.5*(idxsum(*nvtxs, graph.vwgt)/ctrl.CoarsenTo); mytpwgts = fmalloc(*nparts, "PWMETIS: mytpwgts"); for (i=0; i<*nparts; i++) mytpwgts[i] = tpwgts[i]; InitRandom(-1); AllocateWorkSpace(&ctrl, &graph, *nparts); IFSET(ctrl.dbglvl, DBG_TIME, InitTimers(&ctrl)); IFSET(ctrl.dbglvl, DBG_TIME, starttimer(ctrl.TotalTmr)); *edgecut = MlevelRecursiveBisection(&ctrl, &graph, *nparts, part, mytpwgts, 1.000, 0); IFSET(ctrl.dbglvl, DBG_TIME, stoptimer(ctrl.TotalTmr)); IFSET(ctrl.dbglvl, DBG_TIME, PrintTimers(&ctrl)); FreeWorkSpace(&ctrl, &graph); free(mytpwgts); if (*numflag == 1) Change2FNumbering(*nvtxs, xadj, adjncy, part); } /************************************************************************* * This function takes a graph and produces a bisection of it **************************************************************************/ long MlevelRecursiveBisection(CtrlType *ctrl, GraphType *graph, long nparts, idxtype *part, float *tpwgts, float ubfactor, long fpart) { long i, j, nvtxs, cut, tvwgt, tpwgts2[2]; idxtype *label, *where; GraphType lgraph, rgraph; float wsum; nvtxs = graph->nvtxs; if (nvtxs == 0) { printf("\t***Cannot bisect a graph with 0 vertices!\n\t***You are trying to partition a graph into too many parts!\n"); return 0; } /* Determine the weights of the partitions */ tvwgt = idxsum(nvtxs, graph->vwgt); tpwgts2[0] = tvwgt*ssum(nparts/2, tpwgts); tpwgts2[1] = tvwgt-tpwgts2[0]; MlevelEdgeBisection(ctrl, graph, tpwgts2, ubfactor); cut = graph->mincut; /* printf("%5ld %5ld %5ld [%5ld %f]\n", tpwgts2[0], tpwgts2[1], cut, tvwgt, ssum(nparts/2, tpwgts));*/ label = graph->label; where = graph->where; for (i=0; i 2) { SplitGraphPart(ctrl, graph, &lgraph, &rgraph); /* printf("%ld %ld\n", lgraph.nvtxs, rgraph.nvtxs); */ } /* Free the memory of the top level graph */ GKfree(&graph->gdata, &graph->rdata, &graph->label, LTERM); /* Scale the fractions in the tpwgts according to the true weight */ wsum = ssum(nparts/2, tpwgts); sscale(nparts/2, 1.0/wsum, tpwgts); sscale(nparts-nparts/2, 1.0/(1.0-wsum), tpwgts+nparts/2); /* for (i=0; i 3) { cut += MlevelRecursiveBisection(ctrl, &lgraph, nparts/2, part, tpwgts, ubfactor, fpart); cut += MlevelRecursiveBisection(ctrl, &rgraph, nparts-nparts/2, part, tpwgts+nparts/2, ubfactor, fpart+nparts/2); } else if (nparts == 3) { cut += MlevelRecursiveBisection(ctrl, &rgraph, nparts-nparts/2, part, tpwgts+nparts/2, ubfactor, fpart+nparts/2); GKfree(&lgraph.gdata, &lgraph.label, LTERM); } return cut; } /************************************************************************* * This function performs multilevel bisection **************************************************************************/ void MlevelEdgeBisection(CtrlType *ctrl, GraphType *graph, long *tpwgts, float ubfactor) { GraphType *cgraph; cgraph = Coarsen2Way(ctrl, graph); Init2WayPartition(ctrl, cgraph, tpwgts, ubfactor); Refine2Way(ctrl, graph, cgraph, tpwgts, ubfactor); /* IsConnectedSubdomain(ctrl, graph, 0); IsConnectedSubdomain(ctrl, graph, 1); */ } /************************************************************************* * This function takes a graph and a bisection and splits it into two graphs. **************************************************************************/ void SplitGraphPart(CtrlType *ctrl, GraphType *graph, GraphType *lgraph, GraphType *rgraph) { long i, j, k, kk, l, istart, iend, mypart, nvtxs, ncon, snvtxs[2], snedges[2], sum; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *adjwgtsum, *label, *where, *bndptr; idxtype *sxadj[2], *svwgt[2], *sadjncy[2], *sadjwgt[2], *sadjwgtsum[2], *slabel[2]; idxtype *rename; idxtype *auxadjncy, *auxadjwgt; float *nvwgt, *snvwgt[2], *npwgts; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->SplitTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; vwgt = graph->vwgt; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; label = graph->label; where = graph->where; bndptr = graph->bndptr; npwgts = graph->npwgts; ASSERT(bndptr != NULL); rename = idxwspacemalloc(ctrl, nvtxs); snvtxs[0] = snvtxs[1] = snedges[0] = snedges[1] = 0; for (i=0; ixadj; svwgt[0] = lgraph->vwgt; snvwgt[0] = lgraph->nvwgt; sadjwgtsum[0] = lgraph->adjwgtsum; sadjncy[0] = lgraph->adjncy; sadjwgt[0] = lgraph->adjwgt; slabel[0] = lgraph->label; SetUpSplitGraph(graph, rgraph, snvtxs[1], snedges[1]); sxadj[1] = rgraph->xadj; svwgt[1] = rgraph->vwgt; snvwgt[1] = rgraph->nvwgt; sadjwgtsum[1] = rgraph->adjwgtsum; sadjncy[1] = rgraph->adjncy; sadjwgt[1] = rgraph->adjwgt; slabel[1] = rgraph->label; snvtxs[0] = snvtxs[1] = snedges[0] = snedges[1] = 0; sxadj[0][0] = sxadj[1][0] = 0; for (i=0; inedges = snedges[0]; rgraph->nedges = snedges[1]; IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->SplitTmr)); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * Setup the various arrays for the splitted graph **************************************************************************/ void SetUpSplitGraph(GraphType *graph, GraphType *sgraph, long snvtxs, long snedges) { InitGraph(sgraph); sgraph->nvtxs = snvtxs; sgraph->nedges = snedges; sgraph->ncon = graph->ncon; /* Allocate memory for the splitted graph */ if (graph->ncon == 1) { sgraph->gdata = idxmalloc(4*snvtxs+1 + 2*snedges, "SetUpSplitGraph: gdata"); sgraph->xadj = sgraph->gdata; sgraph->vwgt = sgraph->gdata + snvtxs+1; sgraph->adjwgtsum = sgraph->gdata + 2*snvtxs+1; sgraph->cmap = sgraph->gdata + 3*snvtxs+1; sgraph->adjncy = sgraph->gdata + 4*snvtxs+1; sgraph->adjwgt = sgraph->gdata + 4*snvtxs+1 + snedges; } else { sgraph->gdata = idxmalloc(3*snvtxs+1 + 2*snedges, "SetUpSplitGraph: gdata"); sgraph->xadj = sgraph->gdata; sgraph->adjwgtsum = sgraph->gdata + snvtxs+1; sgraph->cmap = sgraph->gdata + 2*snvtxs+1; sgraph->adjncy = sgraph->gdata + 3*snvtxs+1; sgraph->adjwgt = sgraph->gdata + 3*snvtxs+1 + snedges; sgraph->nvwgt = fmalloc(graph->ncon*snvtxs, "SetUpSplitGraph: nvwgt"); } sgraph->label = idxmalloc(snvtxs, "SetUpSplitGraph: sgraph->label"); } metis-edf-4.1/Lib/refine.c0000644000372500037370000001327111115455203015651 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * refine.c * * This file contains the driving routines for multilevel refinement * * Started 7/24/97 * George * * $Id: refine.c,v 1.1 1998/11/27 17:59:29 karypis Exp $ */ #include /************************************************************************* * This function is the entry point of refinement **************************************************************************/ void Refine2Way(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, long *tpwgts, float ubfactor) { IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); /* Compute the parameters of the coarsest graph */ Compute2WayPartitionParams(ctrl, graph); for (;;) { ASSERT(CheckBnd(graph)); IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); switch (ctrl->RType) { case 1: Balance2Way(ctrl, graph, tpwgts, ubfactor); FM_2WayEdgeRefine(ctrl, graph, tpwgts, 8); break; default: errexit("Unknown refinement type: %ld\n", ctrl->RType); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); Project2WayPartition(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } /************************************************************************* * This function allocates memory for 2-way edge refinement **************************************************************************/ void Allocate2WayPartitionMemory(CtrlType *ctrl, GraphType *graph) { long nvtxs; nvtxs = graph->nvtxs; graph->rdata = idxmalloc(5*nvtxs+2, "Allocate2WayPartitionMemory: rdata"); graph->pwgts = graph->rdata; graph->where = graph->rdata + 2; graph->id = graph->rdata + nvtxs + 2; graph->ed = graph->rdata + 2*nvtxs + 2; graph->bndptr = graph->rdata + 3*nvtxs + 2; graph->bndind = graph->rdata + 4*nvtxs + 2; } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void Compute2WayPartitionParams(CtrlType *ctrl, GraphType *graph) { long i, j, k, l, nvtxs, nbnd, mincut; idxtype *xadj, *vwgt, *adjncy, *adjwgt, *pwgts; idxtype *id, *ed, *where; idxtype *bndptr, *bndind; long me, other; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; pwgts = idxset(2, 0, graph->pwgts); id = idxset(nvtxs, 0, graph->id); ed = idxset(nvtxs, 0, graph->ed); bndptr = idxset(nvtxs, -1, graph->bndptr); bndind = graph->bndind; /*------------------------------------------------------------ / Compute now the id/ed degrees /------------------------------------------------------------*/ nbnd = mincut = 0; for (i=0; i= 0 && where[i] <= 1); me = where[i]; pwgts[me] += vwgt[i]; for (j=xadj[i]; j 0 || xadj[i] == xadj[i+1]) { mincut += ed[i]; bndptr[i] = nbnd; bndind[nbnd++] = i; } } graph->mincut = mincut/2; graph->nbnd = nbnd; ASSERT(pwgts[0]+pwgts[1] == idxsum(nvtxs, vwgt)); } /************************************************************************* * This function projects a partition, and at the same time computes the * parameters for refinement. **************************************************************************/ void Project2WayPartition(CtrlType *ctrl, GraphType *graph) { long i, j, k, nvtxs, nbnd, me; idxtype *xadj, *adjncy, *adjwgt, *adjwgtsum; idxtype *cmap, *where, *id, *ed, *bndptr, *bndind; idxtype *cwhere, *cid, *ced, *cbndptr; GraphType *cgraph; cgraph = graph->coarser; cwhere = cgraph->where; cid = cgraph->id; ced = cgraph->ed; cbndptr = cgraph->bndptr; nvtxs = graph->nvtxs; cmap = graph->cmap; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; adjwgtsum = graph->adjwgtsum; Allocate2WayPartitionMemory(ctrl, graph); where = graph->where; id = idxset(nvtxs, 0, graph->id); ed = idxset(nvtxs, 0, graph->ed); bndptr = idxset(nvtxs, -1, graph->bndptr); bndind = graph->bndind; /* Go through and project partition and compute id/ed for the nodes */ for (i=0; i 0 || xadj[i] == xadj[i+1]) { bndptr[i] = nbnd; bndind[nbnd++] = i; } } } } graph->mincut = cgraph->mincut; graph->nbnd = nbnd; idxcopy(2, cgraph->pwgts, graph->pwgts); FreeGraph(graph->coarser); graph->coarser = NULL; } metis-edf-4.1/Lib/proto.h0000644000372500037370000007105011302755431015554 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * proto.h * * This file contains header files * * Started 10/19/95 * George * * $Id: proto.h,v 1.1 1998/11/27 17:59:28 karypis Exp $ * */ /* balance.c */ void Balance2Way(CtrlType *, GraphType *, long *, float); void Bnd2WayBalance(CtrlType *, GraphType *, long *); void General2WayBalance(CtrlType *, GraphType *, long *); /* bucketsort.c */ void BucketSortKeysInc(long, long, idxtype *, idxtype *, idxtype *); /* ccgraph.c */ void CreateCoarseGraph(CtrlType *, GraphType *, long, idxtype *, idxtype *); void CreateCoarseGraphNoMask(CtrlType *, GraphType *, long, idxtype *, idxtype *); void CreateCoarseGraph_NVW(CtrlType *, GraphType *, long, idxtype *, idxtype *); GraphType *SetUpCoarseGraph(GraphType *, long, long); void ReAdjustMemory(GraphType *, GraphType *, long); /* coarsen.c */ GraphType *Coarsen2Way(CtrlType *, GraphType *); /* compress.c */ void CompressGraph(CtrlType *, GraphType *, long, idxtype *, idxtype *, idxtype *, idxtype *); void PruneGraph(CtrlType *, GraphType *, long, idxtype *, idxtype *, idxtype *, float); /* debug.c */ long ComputeCut(GraphType *, idxtype *); long CheckBnd(GraphType *); long CheckBnd2(GraphType *); long CheckNodeBnd(GraphType *, long); long CheckRInfo(RInfoType *); long CheckNodePartitionParams(GraphType *); long IsSeparable(GraphType *); /* estmem.c */ void METIS_EstimateMemory(long *, idxtype *, idxtype *, long *, long *, long *); void EstimateCFraction(long, idxtype *, idxtype *, float *, float *); long ComputeCoarseGraphSize(long, idxtype *, idxtype *, long, idxtype *, idxtype *, idxtype *); /* fm.c */ void FM_2WayEdgeRefine(CtrlType *, GraphType *, long *, long); /* fortran.c */ void Change2CNumbering(long, idxtype *, idxtype *); void Change2FNumbering(long, idxtype *, idxtype *, idxtype *); void Change2FNumbering2(long, idxtype *, idxtype *); void Change2FNumberingOrder(long, idxtype *, idxtype *, idxtype *, idxtype *); void ChangeMesh2CNumbering(long, idxtype *); void ChangeMesh2FNumbering(long, idxtype *, long, idxtype *, idxtype *); void ChangeMesh2FNumbering2(long, idxtype *, long, long, idxtype *, idxtype *); /* frename.c */ void METIS_PARTGRAPHRECURSIVE(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphrecursive(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphrecursive_(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphrecursive__(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPARTGRAPHRECURSIVE(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphrecursive(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphrecursive_(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphrecursive__(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void METIS_PARTGRAPHKWAY(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphkway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphkway_(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphkway__(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPARTGRAPHKWAY(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphkway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphkway_(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphkway__(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void METIS_EDGEND(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_edgend(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_edgend_(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_edgend__(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_NODEND(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_nodend(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_nodend_(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_nodend__(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_NODEWND(long *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_nodewnd(long *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_nodewnd_(long *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_nodewnd__(long *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_PARTMESHNODAL(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void metis_partmeshnodal(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void metis_partmeshnodal_(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void metis_partmeshnodal__(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void METIS_PARTMESHDUAL(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void metis_partmeshdual(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void metis_partmeshdual_(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void metis_partmeshdual__(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void METIS_MESHTONODAL(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_meshtonodal(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_meshtonodal_(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_meshtonodal__(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_MESHTODUAL(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_meshtodual(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_meshtodual_(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void metis_meshtodual__(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_ESTIMATEMEMORY(long *, idxtype *, idxtype *, long *, long *, long *); void metis_estimatememory(long *, idxtype *, idxtype *, long *, long *, long *); void metis_estimatememory_(long *, idxtype *, idxtype *, long *, long *, long *); void metis_estimatememory__(long *, idxtype *, idxtype *, long *, long *, long *); void METIS_MCPARTGRAPHRECURSIVE(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_mcpartgraphrecursive(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_mcpartgraphrecursive_(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_mcpartgraphrecursive__(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_MCPARTGRAPHKWAY(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_mcpartgraphkway(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_mcpartgraphkway_(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_mcpartgraphkway__(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void METIS_PARTGRAPHVKWAY(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphvkway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphvkway_(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void metis_partgraphvkway__(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPARTGRAPHVKWAY(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphvkway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphvkway_(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void metis_wpartgraphvkway__(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); /* graph.c */ void SetUpGraph(GraphType *, long, long, long, idxtype *, idxtype *, idxtype *, idxtype *, long); void SetUpGraphKway(GraphType *, long, idxtype *, idxtype *); void SetUpGraph2(GraphType *, long, long, idxtype *, idxtype *, float *, idxtype *); void VolSetUpGraph(GraphType *, long, long, long, idxtype *, idxtype *, idxtype *, idxtype *, long); void RandomizeGraph(GraphType *); long IsConnectedSubdomain(CtrlType *, GraphType *, long, long); long IsConnected(CtrlType *, GraphType *, long); long IsConnected2(GraphType *, long); long FindComponents(CtrlType *, GraphType *, idxtype *, idxtype *); /* initpart.c */ void Init2WayPartition(CtrlType *, GraphType *, long *, float); void InitSeparator(CtrlType *, GraphType *, float); void GrowBisection(CtrlType *, GraphType *, long *, float); void GrowBisectionNode(CtrlType *, GraphType *, float); void RandomBisection(CtrlType *, GraphType *, long *, float); /* kmetis.c */ void METIS_PartGraphKway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPartGraphKway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); long MlevelKWayPartitioning(CtrlType *, GraphType *, long, idxtype *, float *, float); /* kvmetis.c */ void METIS_PartGraphVKway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPartGraphVKway(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); long MlevelVolKWayPartitioning(CtrlType *, GraphType *, long, idxtype *, float *, float); /* kwayfm.c */ void Random_KWayEdgeRefine(CtrlType *, GraphType *, long, float *, float, long, long); void Greedy_KWayEdgeRefine(CtrlType *, GraphType *, long, float *, float, long); void Greedy_KWayEdgeBalance(CtrlType *, GraphType *, long, float *, float, long); /* kwayrefine.c */ void RefineKWay(CtrlType *, GraphType *, GraphType *, long, float *, float); void AllocateKWayPartitionMemory(CtrlType *, GraphType *, long); void ComputeKWayPartitionParams(CtrlType *, GraphType *, long); void ProjectKWayPartition(CtrlType *, GraphType *, long); long IsBalanced(idxtype *, long, float *, float); void ComputeKWayBoundary(CtrlType *, GraphType *, long); void ComputeKWayBalanceBoundary(CtrlType *, GraphType *, long); /* kwayvolfm.c */ void Random_KWayVolRefine(CtrlType *, GraphType *, long, float *, float, long, long); void Random_KWayVolRefineMConn(CtrlType *, GraphType *, long, float *, float, long, long); void Greedy_KWayVolBalance(CtrlType *, GraphType *, long, float *, float, long); void Greedy_KWayVolBalanceMConn(CtrlType *, GraphType *, long, float *, float, long); void KWayVolUpdate(CtrlType *, GraphType *, long, long, long, idxtype *, idxtype *, idxtype *); void ComputeKWayVolume(GraphType *, long, idxtype *, idxtype *, idxtype *); long ComputeVolume(GraphType *, idxtype *); void CheckVolKWayPartitionParams(CtrlType *, GraphType *, long); void ComputeVolSubDomainGraph(GraphType *, long, idxtype *, idxtype *); void EliminateVolSubDomainEdges(CtrlType *, GraphType *, long, float *); void EliminateVolComponents(CtrlType *, GraphType *, long, float *, float); /* kwayvolrefine.c */ void RefineVolKWay(CtrlType *, GraphType *, GraphType *, long, float *, float); void AllocateVolKWayPartitionMemory(CtrlType *, GraphType *, long); void ComputeVolKWayPartitionParams(CtrlType *, GraphType *, long); void ComputeKWayVolGains(CtrlType *, GraphType *, long); void ProjectVolKWayPartition(CtrlType *, GraphType *, long); void ComputeVolKWayBoundary(CtrlType *, GraphType *, long); void ComputeVolKWayBalanceBoundary(CtrlType *, GraphType *, long); /* match.c */ void Match_RM(CtrlType *, GraphType *); void Match_RM_NVW(CtrlType *, GraphType *); void Match_HEM(CtrlType *, GraphType *); void Match_SHEM(CtrlType *, GraphType *); /* mbalance.c */ void MocBalance2Way(CtrlType *, GraphType *, float *, float); void MocGeneral2WayBalance(CtrlType *, GraphType *, float *, float); /* mbalance2.c */ void MocBalance2Way2(CtrlType *, GraphType *, float *, float *); void MocGeneral2WayBalance2(CtrlType *, GraphType *, float *, float *); void SelectQueue3(long, float *, float *, long *, long *, PQueueType [MAXNCON][2], float *); /* mcoarsen.c */ GraphType *MCCoarsen2Way(CtrlType *, GraphType *); /* memory.c */ void AllocateWorkSpace(CtrlType *, GraphType *, long); void FreeWorkSpace(CtrlType *, GraphType *); long WspaceAvail(CtrlType *); idxtype *idxwspacemalloc(CtrlType *, long); void idxwspacefree(CtrlType *, long); float *fwspacemalloc(CtrlType *, long); void fwspacefree(CtrlType *, long); GraphType *CreateGraph(void); void InitGraph(GraphType *); void FreeGraph(GraphType *); /* mesh.c */ void METIS_MeshToDual(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_MeshToNodal(long *, long *, idxtype *, long *, long *, idxtype *, idxtype *); void GENDUALMETIS(long, long, long, idxtype *, idxtype *, idxtype *adjncy); void TRINODALMETIS(long, long, idxtype *, idxtype *, idxtype *adjncy); void TETNODALMETIS(long, long, idxtype *, idxtype *, idxtype *adjncy); void HEXNODALMETIS(long, long, idxtype *, idxtype *, idxtype *adjncy); void QUADNODALMETIS(long, long, idxtype *, idxtype *, idxtype *adjncy); /* meshpart.c */ void METIS_PartMeshNodal(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); void METIS_PartMeshDual(long *, long *, idxtype *, long *, long *, long *, long *, idxtype *, idxtype *); /* mfm.c */ void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, long); void SelectQueue(long, float *, float *, long *, long *, PQueueType [MAXNCON][2]); long BetterBalance(long, float *, float *, float *); float Compute2WayHLoadImbalance(long, float *, float *); void Compute2WayHLoadImbalanceVec(long, float *, float *, float *); /* mfm2.c */ void MocFM_2WayEdgeRefine2(CtrlType *, GraphType *, float *, float *, long); void SelectQueue2(long, float *, float *, long *, long *, PQueueType [MAXNCON][2], float *); long IsBetter2wayBalance(long, float *, float *, float *); /* mincover.o */ void MinCover(idxtype *, idxtype *, long, long, idxtype *, long *); long MinCover_Augment(idxtype *, idxtype *, long, idxtype *, idxtype *, idxtype *, long); void MinCover_Decompose(idxtype *, idxtype *, long, long, idxtype *, idxtype *, long *); void MinCover_ColDFS(idxtype *, idxtype *, long, idxtype *, idxtype *, long); void MinCover_RowDFS(idxtype *, idxtype *, long, idxtype *, idxtype *, long); /* minitpart.c */ void MocInit2WayPartition(CtrlType *, GraphType *, float *, float); void MocGrowBisection(CtrlType *, GraphType *, float *, float); void MocRandomBisection(CtrlType *, GraphType *, float *, float); void MocInit2WayBalance(CtrlType *, GraphType *, float *); long SelectQueueoneWay(long, float *, float *, long, PQueueType [MAXNCON][2]); /* minitpart2.c */ void MocInit2WayPartition2(CtrlType *, GraphType *, float *, float *); void MocGrowBisection2(CtrlType *, GraphType *, float *, float *); void MocGrowBisectionNew2(CtrlType *, GraphType *, float *, float *); void MocInit2WayBalance2(CtrlType *, GraphType *, float *, float *); long SelectQueueOneWay2(long, float *, PQueueType [MAXNCON][2], float *); /* mkmetis.c */ void METIS_mCPartGraphKway(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); long MCMlevelKWayPartitioning(CtrlType *, GraphType *, long, idxtype *, float *); /* mkwayfmh.c */ void MCRandom_KWayEdgeRefineHorizontal(CtrlType *, GraphType *, long, float *, long); void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *, GraphType *, long, float *, long); long AreAllHVwgtsBelow(long, float, float *, float, float *, float *); long AreAllHVwgtsAbove(long, float, float *, float, float *, float *); void ComputeHKWayLoadImbalance(long, long, float *, float *); long MocIsHBalanced(long, long, float *, float *); long IsHBalanceBetterFT(long, long, float *, float *, float *, float *); long IsHBalanceBetterTT(long, long, float *, float *, float *, float *); /* mkwayrefine.c */ void MocRefineKWayHorizontal(CtrlType *, GraphType *, GraphType *, long, float *); void MocAllocateKWayPartitionMemory(CtrlType *, GraphType *, long); void MocComputeKWayPartitionParams(CtrlType *, GraphType *, long); void MocProjectKWayPartition(CtrlType *, GraphType *, long); void MocComputeKWayBalanceBoundary(CtrlType *, GraphType *, long); /* mmatch.c */ void MCMatch_RM(CtrlType *, GraphType *); void MCMatch_HEM(CtrlType *, GraphType *); void MCMatch_SHEM(CtrlType *, GraphType *); void MCMatch_SHEBM(CtrlType *, GraphType *, long); void MCMatch_SBHEM(CtrlType *, GraphType *, long); float BetterVBalance(long, long, float *, float *, float *); long AreAllVwgtsBelowFast(long, float *, float *, float); /* mmd.c */ void genmmd(long, idxtype *, idxtype *, idxtype *, idxtype *, long , idxtype *, idxtype *, idxtype *, idxtype *, long, long *); void mmdelm(long, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, long, long); long mmdint(long, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *); void mmdnum(long, idxtype *, idxtype *, idxtype *); void mmdupd(long, long, idxtype *, idxtype *, long, long *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, long, long *tag); /* mpmetis.c */ void METIS_mCPartGraphRecursive(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_mCHPartGraphRecursive(long *, long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void METIS_mCPartGraphRecursiveInternal(long *, long *, idxtype *, idxtype *, float *, idxtype *, long *, long *, long *, idxtype *); void METIS_mCHPartGraphRecursiveInternal(long *, long *, idxtype *, idxtype *, float *, idxtype *, long *, float *, long *, long *, idxtype *); long MCMlevelRecursiveBisection(CtrlType *, GraphType *, long, idxtype *, float, long); long MCHMlevelRecursiveBisection(CtrlType *, GraphType *, long, idxtype *, float *, long); void MCMlevelEdgeBisection(CtrlType *, GraphType *, float *, float); void MCHMlevelEdgeBisection(CtrlType *, GraphType *, float *, float *); /* mrefine.c */ void MocRefine2Way(CtrlType *, GraphType *, GraphType *, float *, float); void MocAllocate2WayPartitionMemory(CtrlType *, GraphType *); void MocCompute2WayPartitionParams(CtrlType *, GraphType *); void MocProject2WayPartition(CtrlType *, GraphType *); /* mrefine2.c */ void MocRefine2Way2(CtrlType *, GraphType *, GraphType *, float *, float *); /* mutil.c */ long AreAllVwgtsBelow(long, float, float *, float, float *, float); long AreAnyVwgtsBelow(long, float, float *, float, float *, float); long AreAllVwgtsAbove(long, float, float *, float, float *, float); float ComputeLoadImbalance(long, long, float *, float *); long AreAllBelow(long, float *, float *); /* myqsort.c */ void iidxsort(long, idxtype *); void iintsort(long, long *); void ikeysort(long, KeyValueType *); void ikeyvalsort(long, KeyValueType *); /* ometis.c */ void METIS_EdgeND(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_NodeND(long *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void METIS_NodeWND(long *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *, idxtype *); void MlevelNestedDissection(CtrlType *, GraphType *, idxtype *, float, long); void MlevelNestedDissectionCC(CtrlType *, GraphType *, idxtype *, float, long); void MlevelNodeBisectionMultiple(CtrlType *, GraphType *, long *, float); void MlevelNodeBisection(CtrlType *, GraphType *, long *, float); void SplitGraphOrder(CtrlType *, GraphType *, GraphType *, GraphType *); void MMDOrder(CtrlType *, GraphType *, idxtype *, long); long SplitGraphOrderCC(CtrlType *, GraphType *, GraphType *, long, idxtype *, idxtype *); /* parmetis.c */ void METIS_PartGraphKway2(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPartGraphKway2(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); void METIS_NodeNDP(long, idxtype *, idxtype *, long, long *, idxtype *, idxtype *, idxtype *); void MlevelNestedDissectionP(CtrlType *, GraphType *, idxtype *, long, long, long, idxtype *); void METIS_NodeComputeSeparator(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *); void METIS_EdgeComputeSeparator(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, idxtype *); /* pmetis.c */ void METIS_PartGraphRecursive(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, long *, long *, idxtype *); void METIS_WPartGraphRecursive(long *, idxtype *, idxtype *, idxtype *, idxtype *, long *, long *, long *, float *, long *, long *, idxtype *); long MlevelRecursiveBisection(CtrlType *, GraphType *, long, idxtype *, float *, float, long); void MlevelEdgeBisection(CtrlType *, GraphType *, long *, float); void SplitGraphPart(CtrlType *, GraphType *, GraphType *, GraphType *); void SetUpSplitGraph(GraphType *, GraphType *, long, long); /* pqueue.c */ void PQueueInit(CtrlType *ctrl, PQueueType *, long, long); void PQueueReset(PQueueType *); void PQueueFree(CtrlType *ctrl, PQueueType *); long PQueueGetSize(PQueueType *); long PQueueInsert(PQueueType *, long, long); long PQueueDelete(PQueueType *, long, long); long PQueueUpdate(PQueueType *, long, long, long); void PQueueUpdateUp(PQueueType *, long, long, long); long PQueueGetMax(PQueueType *); long PQueueSeeMax(PQueueType *); long PQueueGetKey(PQueueType *); long CheckHeap(PQueueType *); /* refine.c */ void Refine2Way(CtrlType *, GraphType *, GraphType *, long *, float ubfactor); void Allocate2WayPartitionMemory(CtrlType *, GraphType *); void Compute2WayPartitionParams(CtrlType *, GraphType *); void Project2WayPartition(CtrlType *, GraphType *); /* separator.c */ void ConstructSeparator(CtrlType *, GraphType *, float); void ConstructMinCoverSeparator0(CtrlType *, GraphType *, float); void ConstructMinCoverSeparator(CtrlType *, GraphType *, float); /* sfm.c */ void FM_2WayNodeRefine(CtrlType *, GraphType *, float, long); void FM_2WayNodeRefineEqWgt(CtrlType *, GraphType *, long); void FM_2WayNodeRefine_OneSided(CtrlType *, GraphType *, float, long); void FM_2WayNodeBalance(CtrlType *, GraphType *, float); long ComputeMaxNodeGain(long, idxtype *, idxtype *, idxtype *); /* srefine.c */ void Refine2WayNode(CtrlType *, GraphType *, GraphType *, float); void Allocate2WayNodePartitionMemory(CtrlType *, GraphType *); void Compute2WayNodePartitionParams(CtrlType *, GraphType *); void Project2WayNodePartition(CtrlType *, GraphType *); /* stat.c */ void ComputePartitionInfo(GraphType *, long, idxtype *); void ComputePartitionInfoBipartite(GraphType *, long, idxtype *); void ComputePartitionBalance(GraphType *, long, idxtype *, float *); float ComputeElementBalance(long, long, idxtype *); /* subdomains.c */ void Random_KWayEdgeRefineMConn(CtrlType *, GraphType *, long, float *, float, long, long); void Greedy_KWayEdgeBalanceMConn(CtrlType *, GraphType *, long, float *, float, long); void PrintSubDomainGraph(GraphType *, long, idxtype *); void ComputeSubDomainGraph(GraphType *, long, idxtype *, idxtype *); void EliminateSubDomainEdges(CtrlType *, GraphType *, long, float *); void MoveGroupMConn(CtrlType *, GraphType *, idxtype *, idxtype *, long, long, long, idxtype *); void EliminateComponents(CtrlType *, GraphType *, long, float *, float); void MoveGroup(CtrlType *, GraphType *, long, long, long, idxtype *, idxtype *); /* timing.c */ void InitTimers(CtrlType *); void PrintTimers(CtrlType *); double seconds(void); /* util.c */ void errexit(char *,...); #ifndef DMALLOC long *imalloc(long, char *); idxtype *idxmalloc(long, char *); float *fmalloc(long, char *); long *ismalloc(long, long, char *); idxtype *idxsmalloc(long, idxtype, char *); void *GKmalloc(long, char *); #endif /*void GKfree(void **,...); */ long *iset(long n, long val, long *x); idxtype *idxset(long n, idxtype val, idxtype *x); float *sset(long n, float val, float *x); long iamax(long, long *); long idxamax(long, idxtype *); long idxamax_strd(long, idxtype *, long); long samax(long, float *); long samax2(long, float *); long idxamin(long, idxtype *); long samin(long, float *); long idxsum(long, idxtype *); long idxsum_strd(long, idxtype *, long); void idxadd(long, idxtype *, idxtype *); long charsum(long, char *); long isum(long, long *); float ssum(long, float *); float ssum_strd(long n, float *x, long); void sscale(long n, float, float *x); float snorm2(long, float *); float sdot(long n, float *, float *); void saxpy(long, float, float *, long, float *, long); void RandomPermute(long, idxtype *, long); double drand48(); void srand48(long); long ispow2(long); void InitRandom(long); long ilog2(long); /*************************************************************** * Programs Directory ****************************************************************/ /* io.c */ void ReadGraph(GraphType *, char *, long *); void WritePartition(char *, idxtype *, long, long); void WriteMeshPartition(char *, long, long, idxtype *, long, idxtype *); void WritePermutation(char *, idxtype *, long); long CheckGraph(GraphType *); idxtype *ReadMesh(char *, long *, long *, long *); void WriteGraph(char *, long, idxtype *, idxtype *); /* smbfactor.c */ void ComputeFillIn(GraphType *, idxtype *); idxtype ComputeFillIn2(GraphType *, idxtype *); long smbfct(long, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, long *, idxtype *, idxtype *, long *); /*************************************************************** * Test Directory ****************************************************************/ void Test_PartGraph(long, idxtype *, idxtype *); long VerifyPart(long, idxtype *, idxtype *, idxtype *, idxtype *, long, long, idxtype *); long VerifyWPart(long, idxtype *, idxtype *, idxtype *, idxtype *, long, float *, long, idxtype *); void Test_PartGraphV(long, idxtype *, idxtype *); long VerifyPartV(long, idxtype *, idxtype *, idxtype *, idxtype *, long, long, idxtype *); long VerifyWPartV(long, idxtype *, idxtype *, idxtype *, idxtype *, long, float *, long, idxtype *); void Test_PartGraphmC(long, idxtype *, idxtype *); long VerifyPartmC(long, long, idxtype *, idxtype *, idxtype *, idxtype *, long, float *, long, idxtype *); void Test_ND(long, idxtype *, idxtype *); long VerifyND(long, idxtype *, idxtype *); metis-edf-4.1/Lib/memory.c0000644000372500037370000001736511115455203015721 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * memory.c * * This file contains routines that deal with memory allocation * * Started 2/24/96 * George * * $Id: memory.c,v 1.2 1998/11/27 18:16:18 karypis Exp $ * */ #include /************************************************************************* * This function allocates memory for the workspace **************************************************************************/ void AllocateWorkSpace(CtrlType *ctrl, GraphType *graph, long nparts) { ctrl->wspace.pmat = NULL; if (ctrl->optype == OP_KMETIS) { ctrl->wspace.edegrees = (EDegreeType *)GKmalloc(graph->nedges*sizeof(EDegreeType), "AllocateWorkSpace: edegrees"); ctrl->wspace.vedegrees = NULL; ctrl->wspace.auxcore = (idxtype *)ctrl->wspace.edegrees; ctrl->wspace.pmat = idxmalloc(nparts*nparts, "AllocateWorkSpace: pmat"); /* Memory requirements for different phases Coarsening Matching: 4*nvtxs vectors Contraction: 2*nvtxs vectors (from the above 4), 1*nparts, 1*Nedges Total = MAX(4*nvtxs, 2*nvtxs+nparts+nedges) Refinement Random Refinement/Balance: 5*nparts + 1*nvtxs + 2*nedges Greedy Refinement/Balance: 5*nparts + 2*nvtxs + 2*nedges + 1*PQueue(==Nvtxs) Total = 5*nparts + 3*nvtxs + 2*nedges Total = 5*nparts + 3*nvtxs + 2*nedges */ ctrl->wspace.maxcore = 3*(graph->nvtxs+1) + /* Match/Refinement vectors */ 5*(nparts+1) + /* Partition weights etc */ graph->nvtxs*(sizeof(ListNodeType)/sizeof(idxtype)) + /* Greedy k-way balance/refine */ 20 /* padding for 64 bit machines */ ; } else if (ctrl->optype == OP_KVMETIS) { ctrl->wspace.edegrees = NULL; ctrl->wspace.vedegrees = (VEDegreeType *)GKmalloc(graph->nedges*sizeof(VEDegreeType), "AllocateWorkSpace: vedegrees"); ctrl->wspace.auxcore = (idxtype *)ctrl->wspace.vedegrees; ctrl->wspace.pmat = idxmalloc(nparts*nparts, "AllocateWorkSpace: pmat"); /* Memory requirements for different phases are identical to KMETIS */ ctrl->wspace.maxcore = 3*(graph->nvtxs+1) + /* Match/Refinement vectors */ 3*(nparts+1) + /* Partition weights etc */ graph->nvtxs*(sizeof(ListNodeType)/sizeof(idxtype)) + /* Greedy k-way balance/refine */ 20 /* padding for 64 bit machines */ ; } else { ctrl->wspace.edegrees = (EDegreeType *)idxmalloc(graph->nedges, "AllocateWorkSpace: edegrees"); ctrl->wspace.vedegrees = NULL; ctrl->wspace.auxcore = (idxtype *)ctrl->wspace.edegrees; ctrl->wspace.maxcore = 5*(graph->nvtxs+1) + /* Refinement vectors */ 4*(nparts+1) + /* Partition weights etc */ 2*graph->ncon*graph->nvtxs*(sizeof(ListNodeType)/sizeof(idxtype)) + /* 2-way refinement */ 2*graph->ncon*(NEG_GAINSPAN+PLUS_GAINSPAN+1)*(sizeof(ListNodeType *)/sizeof(idxtype)) + /* 2-way refinement */ 20 /* padding for 64 bit machines */ ; } ctrl->wspace.maxcore += HTLENGTH; ctrl->wspace.core = idxmalloc(ctrl->wspace.maxcore, "AllocateWorkSpace: maxcore"); ctrl->wspace.ccore = 0; } /************************************************************************* * This function allocates memory for the workspace **************************************************************************/ void FreeWorkSpace(CtrlType *ctrl, GraphType *graph) { GKfree(&ctrl->wspace.edegrees, &ctrl->wspace.vedegrees, &ctrl->wspace.core, &ctrl->wspace.pmat, LTERM); } /************************************************************************* * This function returns how may words are left in the workspace **************************************************************************/ long WspaceAvail(CtrlType *ctrl) { return ctrl->wspace.maxcore - ctrl->wspace.ccore; } /************************************************************************* * This function allocate space from the core **************************************************************************/ idxtype *idxwspacemalloc(CtrlType *ctrl, long n) { n += n%2; /* This is a fix for 64 bit machines that require 8-byte pointer allignment */ ctrl->wspace.ccore += n; ASSERT(ctrl->wspace.ccore <= ctrl->wspace.maxcore); return ctrl->wspace.core + ctrl->wspace.ccore - n; } /************************************************************************* * This function frees space from the core **************************************************************************/ void idxwspacefree(CtrlType *ctrl, long n) { n += n%2; /* This is a fix for 64 bit machines that require 8-byte pointer allignment */ ctrl->wspace.ccore -= n; ASSERT(ctrl->wspace.ccore >= 0); } /************************************************************************* * This function allocate space from the core **************************************************************************/ float *fwspacemalloc(CtrlType *ctrl, long n) { n += n%2; /* This is a fix for 64 bit machines that require 8-byte pointer allignment */ ctrl->wspace.ccore += n; ASSERT(ctrl->wspace.ccore <= ctrl->wspace.maxcore); return (float *) (ctrl->wspace.core + ctrl->wspace.ccore - n); } /************************************************************************* * This function frees space from the core **************************************************************************/ void fwspacefree(CtrlType *ctrl, long n) { n += n%2; /* This is a fix for 64 bit machines that require 8-byte pointer allignment */ ctrl->wspace.ccore -= n; ASSERT(ctrl->wspace.ccore >= 0); } /************************************************************************* * This function creates a CoarseGraphType data structure and initializes * the various fields **************************************************************************/ GraphType *CreateGraph(void) { GraphType *graph; graph = (GraphType *)GKmalloc(sizeof(GraphType), "CreateCoarseGraph: graph"); InitGraph(graph); return graph; } /************************************************************************* * This function creates a CoarseGraphType data structure and initializes * the various fields **************************************************************************/ void InitGraph(GraphType *graph) { graph->gdata = graph->rdata = NULL; graph->nvtxs = graph->nedges = -1; graph->mincut = graph->minvol = -1; graph->xadj = graph->vwgt = graph->adjncy = graph->adjwgt = NULL; graph->adjwgtsum = NULL; graph->label = NULL; graph->cmap = NULL; graph->where = graph->pwgts = NULL; graph->id = graph->ed = NULL; graph->bndptr = graph->bndind = NULL; graph->rinfo = NULL; graph->vrinfo = NULL; graph->nrinfo = NULL; graph->ncon = -1; graph->nvwgt = NULL; graph->npwgts = NULL; graph->vsize = NULL; graph->coarser = graph->finer = NULL; } /************************************************************************* * This function deallocates any memory stored in a graph **************************************************************************/ void FreeGraph(GraphType *graph) { GKfree(&graph->gdata, &graph->nvwgt, &graph->rdata, &graph->npwgts, LTERM); free(graph); } metis-edf-4.1/Lib/srefine.c0000644000372500037370000001167111115455203016036 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * srefine.c * * This file contains code for the separator refinement algortihms * * Started 8/1/97 * George * * $Id: srefine.c,v 1.1 1998/11/27 17:59:30 karypis Exp $ * */ #include /************************************************************************* * This function is the entry point of the separator refinement **************************************************************************/ void Refine2WayNode(CtrlType *ctrl, GraphType *orggraph, GraphType *graph, float ubfactor) { IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->UncoarsenTmr)); for (;;) { IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->RefTmr)); if (ctrl->RType != 15) FM_2WayNodeBalance(ctrl, graph, ubfactor); switch (ctrl->RType) { case 1: FM_2WayNodeRefine(ctrl, graph, ubfactor, 8); break; case 2: FM_2WayNodeRefine_OneSided(ctrl, graph, ubfactor, 8); break; case 3: FM_2WayNodeRefine(ctrl, graph, ubfactor, 8); FM_2WayNodeRefine_OneSided(ctrl, graph, ubfactor, 8); break; case 4: FM_2WayNodeRefine_OneSided(ctrl, graph, ubfactor, 8); FM_2WayNodeRefine(ctrl, graph, ubfactor, 8); break; case 5: FM_2WayNodeRefineEqWgt(ctrl, graph, 8); break; } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->RefTmr)); if (graph == orggraph) break; graph = graph->finer; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->ProjectTmr)); Project2WayNodePartition(ctrl, graph); IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->ProjectTmr)); } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->UncoarsenTmr)); } /************************************************************************* * This function allocates memory for 2-way edge refinement **************************************************************************/ void Allocate2WayNodePartitionMemory(CtrlType *ctrl, GraphType *graph) { long nvtxs, pad64; nvtxs = graph->nvtxs; pad64 = (3*nvtxs+3)%2; graph->rdata = idxmalloc(3*nvtxs+3+(sizeof(NRInfoType)/sizeof(idxtype))*nvtxs+pad64, "Allocate2WayPartitionMemory: rdata"); graph->pwgts = graph->rdata; graph->where = graph->rdata + 3; graph->bndptr = graph->rdata + nvtxs + 3; graph->bndind = graph->rdata + 2*nvtxs + 3; graph->nrinfo = (NRInfoType *)(graph->rdata + 3*nvtxs + 3 + pad64); } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void Compute2WayNodePartitionParams(CtrlType *ctrl, GraphType *graph) { long i, j, k, l, nvtxs, nbnd; idxtype *xadj, *adjncy, *adjwgt, *vwgt; idxtype *where, *pwgts, *bndind, *bndptr, *edegrees; NRInfoType *rinfo; long me, other; nvtxs = graph->nvtxs; xadj = graph->xadj; vwgt = graph->vwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; where = graph->where; rinfo = graph->nrinfo; pwgts = idxset(3, 0, graph->pwgts); bndind = graph->bndind; bndptr = idxset(nvtxs, -1, graph->bndptr); /*------------------------------------------------------------ / Compute now the separator external degrees /------------------------------------------------------------*/ nbnd = 0; for (i=0; i=0 && me <= 2); if (me == 2) { /* If it is on the separator do some computations */ BNDInsert(nbnd, bndind, bndptr, i); edegrees = rinfo[i].edegrees; edegrees[0] = edegrees[1] = 0; for (j=xadj[i]; jmincut = pwgts[2]; graph->nbnd = nbnd; } /************************************************************************* * This function computes the initial id/ed **************************************************************************/ void Project2WayNodePartition(CtrlType *ctrl, GraphType *graph) { long i, j, nvtxs; idxtype *cmap, *where, *cwhere; GraphType *cgraph; cgraph = graph->coarser; cwhere = cgraph->where; nvtxs = graph->nvtxs; cmap = graph->cmap; Allocate2WayNodePartitionMemory(ctrl, graph); where = graph->where; /* Project the partition */ for (i=0; i= 0 && where[i] <= 2, ("%ld %ld %ld %ld\n", i, cmap[i], where[i], cwhere[cmap[i]])); } FreeGraph(graph->coarser); graph->coarser = NULL; Compute2WayNodePartitionParams(ctrl, graph); } metis-edf-4.1/Lib/mmatch.c0000644000372500037370000003346311115455203015657 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mmatch.c * * This file contains the code that computes matchings and creates the next * level coarse graph. * * Started 7/23/97 * George * * $Id: mmatch.c,v 1.3 1998/11/30 14:50:44 karypis Exp $ * */ #include /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void MCMatch_RM(CtrlType *ctrl, GraphType *graph) { long i, ii, j, k, nvtxs, ncon, cnvtxs, maxidx; idxtype *xadj, *adjncy, *adjwgt; idxtype *match, *cmap, *perm; float *nvwgt; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, perm, 1); cnvtxs = 0; for (ii=0; iinmaxvwgt)) { maxidx = k; break; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void MCMatch_HEM(CtrlType *ctrl, GraphType *graph) { long i, ii, j, k, l, nvtxs, cnvtxs, ncon, maxidx, maxwgt; idxtype *xadj, *adjncy, *adjwgt; idxtype *match, *cmap, *perm; float *nvwgt; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, perm, 1); cnvtxs = 0; for (ii=0; iinmaxvwgt)) { maxwgt = adjwgt[j]; maxidx = adjncy[j]; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void MCMatch_SHEM(CtrlType *ctrl, GraphType *graph) { long i, ii, j, k, nvtxs, cnvtxs, ncon, maxidx, maxwgt, avgdegree; idxtype *xadj, *adjncy, *adjwgt; idxtype *match, *cmap, *degrees, *perm, *tperm; float *nvwgt; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); tperm = idxwspacemalloc(ctrl, nvtxs); degrees = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, tperm, 1); avgdegree = 0.7*(xadj[nvtxs]/nvtxs); for (i=0; i avgdegree ? avgdegree : xadj[i+1]-xadj[i]); BucketSortKeysInc(nvtxs, avgdegree, degrees, tperm, perm); cnvtxs = 0; /* Take care any islands. Islands are matched with non-islands due to coarsening */ for (ii=0; iiii; j--) { k = perm[j]; if (match[k] == UNMATCHED && xadj[k] < xadj[k+1]) { maxidx = k; break; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } /* Continue with normal matching */ for (; iinmaxvwgt)) { maxwgt = adjwgt[j]; maxidx = adjncy[j]; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); idxwspacefree(ctrl, nvtxs); /* degrees */ idxwspacefree(ctrl, nvtxs); /* tperm */ CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void MCMatch_SHEBM(CtrlType *ctrl, GraphType *graph, long norm) { long i, ii, j, k, nvtxs, cnvtxs, ncon, maxidx, maxwgt, avgdegree; idxtype *xadj, *adjncy, *adjwgt; idxtype *match, *cmap, *degrees, *perm, *tperm; float *nvwgt; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); tperm = idxwspacemalloc(ctrl, nvtxs); degrees = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, tperm, 1); avgdegree = 0.7*(xadj[nvtxs]/nvtxs); for (i=0; i avgdegree ? avgdegree : xadj[i+1]-xadj[i]); BucketSortKeysInc(nvtxs, avgdegree, degrees, tperm, perm); cnvtxs = 0; /* Take care any islands. Islands are matched with non-islands due to coarsening */ for (ii=0; iiii; j--) { k = perm[j]; if (match[k] == UNMATCHED && xadj[k] < xadj[k+1]) { maxidx = k; break; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } /* Continue with normal matching */ for (; iinmaxvwgt) && (maxwgt < adjwgt[j] || (maxwgt == adjwgt[j] && BetterVBalance(ncon, norm, nvwgt+i*ncon, nvwgt+maxidx*ncon, nvwgt+k*ncon) >= 0 ) ) ) { maxwgt = adjwgt[j]; maxidx = k; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); idxwspacefree(ctrl, nvtxs); /* degrees */ idxwspacefree(ctrl, nvtxs); /* tperm */ CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function finds a matching using the HEM heuristic **************************************************************************/ void MCMatch_SBHEM(CtrlType *ctrl, GraphType *graph, long norm) { long i, ii, j, k, nvtxs, cnvtxs, ncon, maxidx, maxwgt, avgdegree; idxtype *xadj, *adjncy, *adjwgt; idxtype *match, *cmap, *degrees, *perm, *tperm; float *nvwgt, vbal; IFSET(ctrl->dbglvl, DBG_TIME, starttimer(ctrl->MatchTmr)); nvtxs = graph->nvtxs; ncon = graph->ncon; xadj = graph->xadj; nvwgt = graph->nvwgt; adjncy = graph->adjncy; adjwgt = graph->adjwgt; cmap = graph->cmap; match = idxset(nvtxs, UNMATCHED, idxwspacemalloc(ctrl, nvtxs)); perm = idxwspacemalloc(ctrl, nvtxs); tperm = idxwspacemalloc(ctrl, nvtxs); degrees = idxwspacemalloc(ctrl, nvtxs); RandomPermute(nvtxs, tperm, 1); avgdegree = 0.7*(xadj[nvtxs]/nvtxs); for (i=0; i avgdegree ? avgdegree : xadj[i+1]-xadj[i]); BucketSortKeysInc(nvtxs, avgdegree, degrees, tperm, perm); cnvtxs = 0; /* Take care any islands. Islands are matched with non-islands due to coarsening */ for (ii=0; iiii; j--) { k = perm[j]; if (match[k] == UNMATCHED && xadj[k] < xadj[k+1]) { maxidx = k; break; } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } /* Continue with normal matching */ for (; iinmaxvwgt)) { if (maxidx != i) vbal = BetterVBalance(ncon, norm, nvwgt+i*ncon, nvwgt+maxidx*ncon, nvwgt+k*ncon); if (vbal > 0 || (vbal > -.01 && maxwgt < adjwgt[j])) { maxwgt = adjwgt[j]; maxidx = k; } } } cmap[i] = cmap[maxidx] = cnvtxs++; match[i] = maxidx; match[maxidx] = i; } } IFSET(ctrl->dbglvl, DBG_TIME, stoptimer(ctrl->MatchTmr)); idxwspacefree(ctrl, nvtxs); /* degrees */ idxwspacefree(ctrl, nvtxs); /* tperm */ CreateCoarseGraph(ctrl, graph, cnvtxs, match, perm); idxwspacefree(ctrl, nvtxs); idxwspacefree(ctrl, nvtxs); } /************************************************************************* * This function checks if v+u2 provides a better balance in the weight * vector that v+u1 **************************************************************************/ float BetterVBalance(long ncon, long norm, float *vwgt, float *u1wgt, float *u2wgt) { long i; float sum1, sum2, max1, max2, min1, min2, diff1, diff2; if (norm == -1) { max1 = min1 = vwgt[0]+u1wgt[0]; max2 = min2 = vwgt[0]+u2wgt[0]; sum1 = vwgt[0]+u1wgt[0]; sum2 = vwgt[0]+u2wgt[0]; for (i=1; i vwgt[i]+u1wgt[i]) min1 = vwgt[i]+u1wgt[i]; if (max2 < vwgt[i]+u2wgt[i]) max2 = vwgt[i]+u2wgt[i]; if (min2 > vwgt[i]+u2wgt[i]) min2 = vwgt[i]+u2wgt[i]; sum1 += vwgt[i]+u1wgt[i]; sum2 += vwgt[i]+u2wgt[i]; } if (sum1 == 0.0) return 1; else if (sum2 == 0.0) return -1; else return ((max1-min1)/sum1) - ((max2-min2)/sum2); } else if (norm == 1) { sum1 = sum2 = 0.0; for (i=0; i limit) return 0; return 1; } metis-edf-4.1/Test/0000755000372500037370000000000011115456155014451 5ustar courtoisastergrpmetis-edf-4.1/Test/Makefile0000644000372500037370000000055211115455203016104 0ustar courtoisastergrpinclude ../Makefile.in default: fort.85 vers_check vers_check: @echo "### Test 2 : test --version option, onmetis returns :" (../onmetis --version ; exit 0) @echo " " fort.85 : fort.81 @echo "### Test 1 : data file produced by Code_Aster" ../onmetis fort.81 @echo " " clean: rm -f fort.81.iperm fort.85 distclean: rm -f fort.81.iperm fort.85 metis-edf-4.1/Test/README0000644000372500037370000000036111115455203015322 0ustar courtoisastergrpThis directory contains a fort.81 file as it would have been produced by a Code_Aster execution. Type "make" in this directory or start Metis by "../onmetis fort.81" Compare fort.81.iperm and fort.85 files to the reference files ".ref". metis-edf-4.1/Test/fort.85.ref0000644000372500037370000153516111115455203016361 0ustar courtoisastergrp 6828 0.391038E+08 534449 117557 1476 1451 1446 1458 1445 1475 1477 1497 1517 1509 1443 1518 1519 1431 1426 1865 1875 1648 1872 1694 1452 1441 1450 1428 1487 1439 1448 1860 1647 1665 1876 1701 1639 1429 1440 1449 1444 1447 1457 1488 1489 1491 1498 1471 1499 1514 1516 1470 1520 1522 1469 1456 1523 1524 1438 1455 1504 1661 1873 1652 1673 1711 1667 1695 1693 1730 1683 1723 1685 1710 1712 1682 1716 1735 1736 1737 1681 1724 1738 1739 1680 1740 1598 1578 1560 1592 1870 1754 1879 1855 1546 1638 1640 1427 1863 1871 1752 1751 1854 1856 1651 1646 1686 1684 1672 1593 1565 1544 1591 1608 1631 1506 1636 1437 1463 1507 1508 1479 1495 1513 1468 1515 1503 1500 1505 1467 1510 1525 1526 1462 1436 1521 1501 1493 1502 1466 1570 1616 1615 1569 1601 1617 1721 1720 1660 1678 1731 1732 1671 1713 1729 1676 1734 1741 1703 1697 1733 658 1659 1690 1939 1714 1700 1715 1691 1717 1658 1718 1677 1742 1670 1743 1722 1705 1725 1726 1679 1719 1744 1708 1600 1564 1618 1619 1554 1858 1597 1543 1599 1575 1576 1537 1574 1534 1762 1772 1773 1774 1877 1867 1778 1780 1796 1857 1850 1760 1851 1763 1650 1938 483 1936 911 14436 14450 14453 14423 14411 14392 14396 14408 14489 14417 14451 14449 14410 14681 14455 14470 14488 14490 14432 14471 14431 14460 14472 14416 14415 14404 14485 14444 14462 14461 14463 14424 14403 14445 14443 14602 1607 1562 1542 1609 1548 1642 1480 1635 1435 1461 1478 1496 1459 1485 1490 1494 1465 1527 1464 1528 1511 1482 1512 1460 1434 1492 1483 1481 1589 1595 1604 1568 1605 1606 1621 1611 1622 1620 1583 1623 1624 1567 13532 14692 13537 13554 1668 1702 1657 1935 672 705 1934 1656 1933 657 1931 1663 1698 1696 673 680 706 704 719 727 478 681 913 916 1675 1666 1692 1645 1669 1709 1707 1655 1750 1859 1852 1704 1654 1688 1706 1699 1674 1727 1728 1577 1559 1590 1588 1541 1807 1878 1749 1874 1862 1784 1808 1809 1771 1767 1836 1869 1861 1797 1759 1833 1864 1758 1779 1781 1770 1795 1782 1930 625 597 1929 499 528 548 549 547 1572 2996 2994 3708 3868 3634 14413 14433 14402 14454 14401 14434 14435 14452 14611 14524 14543 14604 14559 14406 13528 14688 14690 14414 14412 14394 13559 13555 13560 13558 14610 14523 13567 13595 13570 13590 3728 3125 2957 2889 3120 2880 2878 3121 3127 3650 3798 3633 3864 3832 14430 14494 14493 14495 14429 14496 14464 14486 14487 14428 14478 14497 14498 14465 14422 14484 14400 14427 14466 14458 14481 14418 14482 14483 14405 14605 14506 14608 14560 14534 14540 14558 14528 14535 1553 1582 1533 1584 1433 1632 1633 1473 1442 1474 1472 1484 1486 1454 1432 1529 1552 1594 1596 1540 1903 1114 1625 1556 1558 1626 1627 1586 1603 1566 1628 1612 1580 1602 1610 1629 1630 1561 5679 5320 5366 5371 5439 5406 5391 5299 5354 13589 13557 13546 13581 13582 13591 13727 13545 13553 13596 13597 1653 1662 1643 759 758 753 760 1928 674 1926 747 699 752 754 698 669 726 728 697 735 748 746 505 906 920 736 1911 502 1924 495 1664 1920 1923 477 1573 1837 1849 1853 1689 1649 1687 1644 1536 1532 1571 1545 1757 1868 1766 1866 1814 1790 1838 1820 1839 1787 1815 1813 1788 1827 1794 1826 1828 1840 1822 1835 1791 1834 1832 531 596 514 626 624 606 607 608 554 476 553 513 555 1901 1079 1900 1109 1091 1110 1115 1116 1072 3789 3799 3663 3800 3709 3688 3683 3710 3651 3636 3787 3790 3681 3744 3680 3791 3011 3044 3118 3006 3025 3026 3017 3024 3060 3684 3850 3863 3624 3682 3635 3621 3903 3022 3016 3085 3122 2993 3023 3021 2877 3004 14570 14607 14596 14606 14518 14590 14612 14517 14577 14568 14578 14576 14547 14569 14516 14567 14616 13602 14686 14689 14505 13601 13566 13603 13544 14552 14542 14551 14553 14554 14571 14572 14527 13634 13626 13664 13728 13730 13605 13543 13565 13598 13606 13607 13569 13608 13609 13653 13667 5110 5398 5665 5666 5399 5397 5319 5400 5401 5375 5423 5424 5425 5332 5440 5441 5390 5407 5408 5383 5392 5331 5298 5309 5308 5384 5382 5220 5163 5175 5176 5177 3729 3722 3727 3658 3737 3758 3792 3793 3679 3745 3078 3019 3015 3119 2941 2893 3005 3114 2876 3115 2910 2942 2911 2894 2940 2978 2887 3126 2915 2956 2950 2908 2958 2925 2886 2926 2924 3857 3643 3856 1117 14473 14456 14438 14499 14474 14441 14468 14475 14426 14467 14491 14500 14425 14479 14480 14447 14421 14448 14446 14457 14399 14631 14221 14295 14632 14378 14409 14439 14393 14437 14609 14520 14603 14508 14504 14533 14220 14629 14628 1547 1430 1637 1634 1425 1453 1136 1099 1549 1898 1897 1137 1135 1078 1531 1557 1551 1555 1563 1587 1539 1585 1550 1613 1614 1538 1581 1579 14246 5157 5142 5178 5174 5671 5672 5297 5343 5344 5342 5367 5368 5330 5372 5370 5329 5442 5443 5405 5380 5409 5328 5393 5394 5335 5296 5313 5355 5356 5353 13686 13633 13531 13556 13536 13666 13625 13651 13668 13652 13616 13615 13650 13534 13723 13729 765 662 1921 660 764 696 766 774 771 770 695 772 778 678 779 780 685 661 656 737 670 891 790 912 914 563 512 564 565 1925 498 1918 637 1198 962 1895 1894 1805 1910 1905 482 959 1888 1887 1748 1756 1806 1804 1789 1802 1769 1801 1803 1824 1842 1843 1844 1821 1841 1845 1846 1847 1793 638 641 628 642 643 546 644 545 645 646 511 647 648 789 904 610 922 3054 3395 1130 1067 1093 1108 1082 1131 1090 1129 1195 1020 1047 1197 973 3905 2484 2478 3896 2451 3801 3736 3700 3802 3661 3701 3632 3699 3898 2504 2440 3902 3754 3781 3794 3723 3795 3678 3761 3786 3788 3677 3803 3676 3804 2477 2439 2457 2479 2474 3028 3029 3045 3046 3061 3003 3032 3059 3009 3866 3865 2992 3885 3894 2446 3086 3071 3087 3065 3076 3084 3074 3014 3088 3113 3124 3102 3057 3116 3002 3037 3058 3038 3056 3079 3072 3027 3080 3055 3036 3001 3053 2461 14583 14595 14597 14548 14591 14580 14582 14589 14546 14581 14515 14579 14613 14219 14334 14617 14244 14296 14286 14294 13610 14683 14687 14522 13599 13564 13604 13542 14503 14562 14561 14563 14550 14584 14526 14585 13665 13643 13663 13624 13674 13720 13732 13584 13541 13563 13583 13585 13593 13600 13587 13669 13687 13703 13704 13702 13672 13623 13685 13642 5246 5241 5247 5248 5217 5249 5250 5162 5295 5662 5661 5339 5340 5341 5411 5410 5412 5327 5426 5427 5417 5444 5438 5418 5419 5326 5429 5430 5431 5294 5432 5433 5434 5349 5226 5130 5170 5225 5227 5251 5252 5253 5229 5254 5167 5221 5219 5230 5231 5232 3620 3759 3649 3760 3697 3631 3662 3698 3696 3706 3746 3675 3747 3753 3740 3674 3755 3146 3158 3177 2995 3020 2991 3018 3399 3398 3191 3144 3117 2932 2899 2933 2931 2954 3123 2892 2947 2979 2949 2980 2981 2972 2963 2982 2920 2962 2959 2919 2964 2951 2898 2946 2952 2943 3854 3853 1141 1150 1155 1156 1107 1157 14420 14476 14477 14398 14419 14442 14440 14397 14459 14469 14407 14492 14395 14379 14266 14321 14380 14245 14292 14285 14293 14243 14291 14218 14622 14623 1530 1641 1535 1144 1145 1143 1089 1139 1085 1893 1892 1883 1891 1071 1889 1890 1066 14373 14361 14265 14381 14382 14325 5161 5233 5228 5141 5118 5143 5097 5651 5676 5358 5284 5357 5359 5305 5369 5365 5293 5373 5374 5445 5446 5318 5292 5381 5379 5395 5396 5314 5282 5286 5315 5303 5302 13706 13746 13491 13349 13736 13745 13399 13740 13751 13330 13524 13533 13529 13411 13355 13437 13410 13737 13752 13742 13739 13329 773 694 768 775 755 750 722 686 756 757 776 668 739 815 708 693 777 781 683 709 667 707 890 788 894 892 803 848 799 895 816 810 814 522 527 639 598 475 523 521 510 995 1005 1006 1004 1919 1765 1825 1912 977 1881 1886 1830 1786 1816 1819 1823 1755 1817 1829 1831 1848 1792 622 544 649 604 650 635 627 634 636 611 630 543 651 494 539 599 609 840 900 619 905 3134 3178 3143 3176 7572 4902 3063 3380 3132 3400 1174 1175 1077 1098 1176 1189 976 1191 970 997 1021 1019 985 1052 1051 1053 1011 2462 2483 2480 2485 2460 2481 2438 2482 3764 3765 3630 3763 3899 2445 2437 3891 2456 2505 2486 2503 3776 3782 3673 3743 3672 3783 3777 3770 3796 3797 3671 3805 3806 3807 3670 3739 3648 3808 3642 3657 3694 2475 2472 2469 2476 2436 2427 2471 2473 2453 3051 3066 3043 3067 3033 3052 3050 3010 3886 3878 2828 3068 3075 3042 3077 3090 3082 3095 3096 3097 3041 3103 3104 3105 3106 3093 3107 3040 3092 3064 3094 3031 3008 2990 3062 2626 2612 2587 2543 2615 2553 14592 14598 14586 14599 14545 14600 14514 14601 14618 14217 14225 14624 14239 14333 14303 14335 14264 14326 14362 14363 13588 13548 14684 14670 13580 13577 13586 13568 13527 14678 14671 14593 14513 14574 14594 14549 13675 13641 13673 13622 13707 13726 13733 13594 13540 13592 13562 13708 13649 13690 13709 13710 13711 13705 13712 13648 13689 13640 13621 13713 5255 5172 4901 5274 5129 5166 5256 5257 5216 5242 5243 5194 5218 5165 5109 5195 5196 5413 5656 5653 5414 5415 5317 5325 5416 5402 5447 5448 5449 5428 5450 5324 5435 5436 5421 5323 5437 5386 5291 5307 5306 5350 5348 5191 5204 5258 5214 5259 5128 5260 5236 5213 5127 5237 5238 5164 5234 5223 5224 5222 5108 3734 3830 3815 3823 3493 2885 2891 3852 3851 2875 3846 3619 3707 3848 3623 3637 3652 3705 3756 3629 3660 3757 3647 3784 3785 3618 3695 3693 3819 3535 3596 3506 3828 5190 5126 3199 5275 7571 7547 5091 5103 5138 5272 5116 5140 5146 5152 3167 3180 3192 3190 3200 3142 3166 3201 3202 3233 3234 3141 3232 3165 3394 2874 3382 2904 2897 2905 2903 2907 2955 2953 2935 2975 2983 2918 2984 2971 2969 2973 2917 2968 2965 2916 2970 2960 2938 2944 2961 2927 2922 2945 1106 1149 1138 1151 1161 1168 1167 1169 1105 1173 1164 1170 1177 1104 14298 14209 14615 14630 14614 14203 14263 14374 14322 14345 14375 14311 14323 14262 14324 14289 14320 14299 14227 14284 14297 1069 1885 1080 1103 1133 1112 1140 1113 1111 1102 14310 14383 14384 14261 14385 14260 14309 14327 14259 14354 14350 14377 14368 5684 5687 5709 4024 5706 5708 3969 5710 5705 4036 5703 5692 3968 5700 5702 4013 5697 5699 4442 5694 5696 4329 5688 5693 4358 5682 5681 4328 5686 5711 4363 4315 5704 5685 5691 4319 13661 13744 13423 13345 13743 13366 13454 13492 13358 13493 13438 13413 13436 13354 13398 13400 13469 13470 13468 13390 13484 13445 13483 13418 13404 13485 13350 13333 13738 13346 13412 767 692 761 769 749 691 729 738 740 690 742 732 751 730 684 741 666 689 731 721 820 841 824 798 839 677 782 665 783 887 802 832 896 812 819 833 834 850 851 852 831 1747 595 533 623 621 1914 1922 504 1811 984 1010 1012 958 1776 1783 1812 1810 1899 1764 1902 1785 1818 1799 570 542 605 558 603 541 652 615 653 631 612 629 632 620 601 540 633 493 538 594 618 801 902 592 908 7569 4922 4910 7567 4924 4921 4925 4923 7559 7430 4900 7564 1055 1165 1088 1159 1166 1121 1185 1199 957 1028 983 1029 1030 982 1056 1057 1058 1003 1059 1060 2498 2499 2435 2497 2620 2546 2541 2621 3809 3883 2426 3887 2491 2450 2492 2493 2509 2510 2449 2511 3721 3767 3778 3779 3669 3742 3668 3780 3771 3741 3762 3772 3667 3749 3810 3811 3654 3639 3617 3812 3628 3659 3735 3733 2470 2616 2535 2533 2619 2442 2429 2468 2425 2634 2638 2826 2832 3013 2989 3069 3070 3884 3880 2718 3091 3000 3035 3089 3083 2999 3034 3073 3081 3108 3039 3109 3110 3048 3098 3111 3012 3099 2998 3100 7563 6781 6779 7562 2565 2566 2540 2564 2601 2556 2592 2591 2593 2560 2602 2551 2603 14573 14587 14544 14588 14512 14207 14627 14625 14278 14279 14233 14280 14329 14328 14258 14330 14312 14351 14364 14365 13575 13561 13576 13574 13578 13539 13579 13572 13552 14675 14679 14541 14511 14565 14556 14575 13671 13637 13714 13620 13629 13725 13734 13683 13677 13715 13647 13716 13717 13691 13694 13718 13646 13695 13662 13696 13636 13628 13614 13660 13741 5125 5154 5185 5124 5192 5171 5173 5160 5090 5149 5150 5148 5151 5153 5107 5068 4957 5262 5276 4920 5106 5240 5261 5245 5188 5244 5105 5189 5187 5144 5193 5197 5096 5290 5652 5668 5336 5337 5338 5403 5404 5361 5451 5452 5322 5420 5453 5454 5321 5422 5377 5351 5387 5388 5289 5334 5333 5352 5310 5198 5168 5123 5205 5206 5169 5215 5209 5122 5210 5158 5135 5208 5115 5239 5235 5102 5690 5683 3976 1158 1153 1122 1142 1160 3725 3544 3584 3813 3641 3814 3522 3514 3543 3545 2906 2896 2923 2921 2901 3842 3495 3821 3844 3549 3502 3817 3827 3561 3501 3826 3818 3575 3500 3831 3517 3536 3513 3534 3589 3586 3597 3598 5121 5199 5200 5120 3219 5093 7539 7561 5099 5139 5112 5137 5132 5147 5145 3220 3230 3231 3229 3204 3140 3164 3218 3172 3222 3235 3205 3236 3216 3152 3217 3215 3207 3392 2936 3397 2884 2914 2934 2976 2883 2909 2948 2974 2929 2977 2985 2895 2986 2882 2913 2987 2966 2881 2912 2967 2937 2902 2939 1132 1097 1162 1163 1076 1179 1095 1180 1178 1124 1181 1182 1101 1171 1172 1100 14372 14268 14267 14216 14257 14308 14376 14256 14344 14346 14255 14235 14290 14288 1086 1073 1068 1119 1118 1134 14254 14386 14307 14387 14355 14317 14287 14356 14339 14253 14306 14352 14252 14251 14369 14370 14336 3959 4008 4009 4010 4023 4025 4019 4027 4026 4028 4030 4037 4038 4014 4029 4031 3958 4012 4005 4317 4451 4450 4337 4338 4339 4359 4360 4348 4351 4357 4361 4344 4362 4364 4327 4333 4332 4343 4345 13407 13504 13344 13750 13365 13416 13424 13422 13453 13446 13389 13455 13494 13447 13495 13388 13486 13387 13487 13472 13473 13386 13474 13471 13385 13364 13488 13489 13343 13417 13426 723 679 762 763 702 717 714 724 725 688 733 734 687 743 744 711 682 712 710 720 664 787 856 857 846 858 809 845 847 830 671 897 786 888 813 808 811 863 864 865 862 866 807 474 1909 1761 1917 571 569 509 1753 1777 1768 1775 1013 1884 1896 1746 1800 1798 559 525 524 515 557 537 616 492 617 536 640 491 654 600 613 490 614 593 589 508 602 489 535 587 591 903 503 585 909 4940 4941 4926 4942 4943 4965 5069 5070 6826 7502 4912 7501 969 990 1014 1015 993 1092 1081 1070 1120 1065 1193 1044 1188 1061 1023 981 1049 1062 1002 1054 1048 2522 2622 2532 2613 2571 2550 2572 2573 3879 2523 2516 3881 2448 2515 2464 2517 2521 2459 2434 2524 3726 3731 3768 3766 3666 3773 3665 3774 3748 3750 3751 3646 3738 3627 3752 3907 2444 2433 3870 3656 3714 3720 3724 3691 2827 2822 2721 2830 2804 2831 2650 2824 2656 2652 2791 2829 2649 2670 2719 2681 2648 2717 2742 3873 3872 2647 2766 3892 3877 2646 2715 3871 3101 3890 2997 3030 3112 3007 2988 3047 3049 7557 6850 6791 7555 6804 6827 6789 6825 2633 2595 2820 2823 2539 2596 2586 2555 2594 2578 2581 2598 2597 2599 2559 2600 2589 2604 13353 13342 13392 13394 13408 13409 14539 14566 14536 14564 14510 14331 14619 14621 14215 14302 14238 14332 14276 14250 14313 14314 14300 14366 14270 14360 13573 13550 13571 13538 13613 13731 13721 13547 13549 14521 14672 14676 14502 14525 14555 14557 13670 13638 13684 13682 13658 13645 13678 13676 13679 13699 13644 13719 13688 13655 13692 13693 13632 13697 13619 13698 13391 13748 13735 5155 5089 5100 5113 5156 5184 5186 5095 4909 4960 5270 5271 4958 4952 4930 4956 4939 5071 5008 5072 4981 5267 5268 5269 4908 5273 5280 4955 5265 5264 4919 5263 5279 5000 5362 5660 5655 5363 5360 5283 5346 5364 5304 5347 5345 5288 5316 5455 5456 5378 5376 5287 5311 5389 5385 5281 5301 5300 5312 5285 5180 5119 5181 5182 5183 5207 5203 5111 5104 5211 5212 5136 5134 5088 5698 4016 3999 5701 1152 1147 1127 1154 1096 1148 1075 1146 1186 3616 3692 3645 3690 3583 3578 3516 3499 3585 3822 3829 3566 3530 3590 3529 3591 2888 2879 2873 2900 3391 3258 3841 3492 3843 3503 3550 3519 3548 3554 3560 3518 3562 3564 3576 3574 3569 3587 3528 3588 3592 3599 3600 5114 5201 5117 5094 5202 3185 5133 7529 7552 5087 5131 5101 3186 3237 3238 3239 3139 3163 3184 3171 3223 3240 3170 3241 3242 3210 3208 3243 3203 3159 3138 3206 3147 3383 3384 3131 3371 3401 2890 3389 2872 2928 2930 3393 3349 3330 3402 3381 3264 3269 3396 3388 3255 3387 3386 1421 1301 1308 1422 1408 1290 1420 1419 1084 1064 1125 1123 1087 1183 1094 1074 1184 14249 14348 14388 14389 14226 14234 14208 14390 14242 14391 1292 1411 1330 14248 14349 14357 14358 14247 14318 14282 14319 14304 14340 14337 14341 14273 14232 14367 14371 14231 14237 14301 14338 14214 3967 4017 4015 4003 4011 4020 4021 4033 4034 4032 4039 4040 3966 4006 4041 4035 3975 4007 3957 4389 4452 4445 4390 4391 4350 4392 4393 4381 4383 4394 4388 4382 4384 4356 4326 4411 4412 4413 4414 13477 13444 13505 13506 13384 13507 13383 13508 13512 13443 13513 13514 13382 13515 13442 13381 13516 13425 13419 13427 13380 13428 13475 13460 13363 13341 13490 13420 13415 13421 13379 676 655 703 701 700 718 716 663 675 715 713 745 659 567 473 907 878 901 867 806 871 872 873 829 879 880 826 881 797 898 886 497 975 1745 1908 1906 1880 1882 481 472 516 517 947 338 946 945 944 409 354 943 942 377 346 941 590 940 340 939 584 534 488 588 532 579 582 586 568 566 507 576 577 556 551 575 487 4899 4947 4948 4949 4982 4980 4918 4983 6844 6902 7500 7499 956 980 991 989 1024 1000 1022 968 972 994 1190 1194 967 1038 1187 966 1046 999 1040 1045 1043 1050 979 1017 3712 2519 2625 2582 2618 2538 2557 2580 2455 2513 2525 2526 2463 2518 2527 2512 2458 2432 2520 3664 3717 3730 3732 3655 3769 3775 3640 3889 2424 3901 2488 2447 2489 2490 3713 3703 3715 3716 3689 3686 3711 3626 2726 2674 2727 2728 2671 2664 2722 2682 2720 2805 2806 2769 2735 2792 2775 2793 2697 2762 2776 2734 2777 2743 2680 2741 2765 2752 2679 2767 2716 2673 2655 2637 2714 2632 3869 3888 7551 6793 6788 7549 6806 6849 6835 6851 6824 6843 6802 6845 2653 2545 2821 2834 2639 2531 2549 2577 2579 2568 2558 2590 2569 2588 2554 2544 2530 2570 2606 2548 2607 2608 2584 2575 2605 2609 13433 13378 13478 13377 13479 13449 13332 13348 13340 13357 13393 13352 13450 13451 14537 14532 14530 14538 14509 14224 14626 14620 14206 14230 14275 14277 14315 14236 14213 14316 14222 14269 14205 14271 13530 13535 13551 13526 13630 13722 13724 13525 13776 14664 12912 14673 12909 14519 14666 14680 13612 13659 13631 13657 13680 13618 13639 13681 13700 13617 13635 13701 13627 13611 13654 13656 13328 13747 13749 4907 5060 5278 5277 5021 5266 4906 4961 4951 4929 4959 5007 4938 4979 4937 5009 4936 5065 5073 5074 4905 4927 4966 4984 4911 4928 5022 5020 4989 4987 5023 5024 4988 4986 4976 4904 5001 5002 5635 5659 5657 5637 5644 5475 5633 5648 5535 5634 5646 5474 5638 5647 5611 5640 5643 5473 5642 5639 5524 5458 5636 5641 5645 5462 5159 5098 5092 5179 5086 5707 3956 3993 5689 3974 3998 3995 4000 1083 1128 1063 1126 1192 961 955 1196 978 992 1018 1016 987 3498 3816 3820 3532 3491 3577 3572 3567 3579 3563 3552 3515 3565 3527 3601 3526 3595 3302 3284 3267 3390 3282 3283 3254 3281 3840 3505 3521 3837 3541 3555 3525 3556 3570 3524 3568 3580 3538 3593 3594 7469 7206 7449 7251 7452 7177 7473 7443 3244 7548 7554 7176 7207 3137 3162 3224 3245 3197 3188 3221 3169 3225 3226 3212 3168 3246 3209 3194 3182 3211 3160 3183 3181 3149 3375 3257 3253 3372 3325 3263 3385 3296 3348 3343 3280 3350 3331 3317 3303 3332 3288 3286 3301 1303 1304 1314 1331 1332 1418 1334 1313 1335 1333 1410 1369 1336 1300 1384 1416 1414 1299 1413 1366 1423 14241 14212 14305 14347 14648 14650 13983 1285 1302 1293 14240 14211 14359 14353 14229 14342 14343 14228 14283 14281 14210 14272 14223 14274 14204 14634 13897 14643 14649 14644 13907 14640 13941 3965 4004 4002 4001 4022 4018 3955 4175 4174 4180 4172 4176 4049 4168 4173 4074 4178 4170 4057 4325 4447 4441 4368 4369 4370 4399 4398 4400 4415 4416 4417 4418 4419 4355 4324 4347 4346 4420 4406 13465 13441 13466 13467 13376 13517 13375 13518 13519 13520 13521 13374 13463 13509 13373 13522 13459 13431 13372 13461 13429 13402 13430 13362 13339 13414 13403 13401 860 792 899 889 893 784 917 842 918 796 825 882 874 883 884 877 828 875 854 885 861 805 849 859 795 949 337 1907 1913 394 429 353 951 366 395 358 393 378 386 410 408 336 348 360 376 581 496 935 934 580 526 519 583 561 578 573 550 835 921 910 484 529 501 500 574 572 530 552 486 6787 6792 7498 7497 7496 7495 6778 6930 6903 6836 6805 6901 6910 403 1927 1915 352 335 1041 1916 1932 1037 1026 1031 1032 1033 1039 1001 965 1034 1042 1008 2054 3940 1027 964 1025 998 3685 3615 3825 3824 3897 2075 2495 2623 2583 2617 2501 2507 2496 2514 2454 2431 2494 2487 3644 3718 3614 3719 3875 2502 3876 2430 2466 2500 3622 3704 3625 3702 3653 3687 3638 2706 2663 2707 2705 2737 2770 2768 2733 2774 2696 2807 2808 2695 2790 2763 2794 2785 2694 2756 2693 2764 2778 2692 2779 2757 2691 2758 2759 2751 2677 2760 2645 2761 7545 6777 7543 6828 6801 6829 6830 6834 6867 6868 6869 6911 6912 6823 2748 2635 2833 2627 2825 2868 2864 1948 2865 2844 2838 1947 2847 1963 2871 2013 2004 2860 2547 2610 2537 2611 2863 1961 1957 2856 2536 2562 2567 2585 2552 2576 2574 1968 13396 13448 13434 13452 13356 13371 13480 13481 13370 13347 13331 13327 13397 13395 13753 12925 12978 13767 13766 13765 13764 12911 14507 14531 14501 14529 14642 14637 13788 14652 13800 14635 13847 14639 13798 14653 13803 14638 13785 13893 13975 14636 13763 12927 13010 13762 13761 12992 13759 12924 12948 12949 12940 12947 13001 14657 12926 14667 12923 13016 13023 13777 13756 12922 13060 13768 13758 12921 13032 13757 13779 13006 13770 12920 5059 5038 4950 5061 5062 4978 4935 5063 5075 5076 4934 5077 4933 4977 4932 5078 5064 4945 5003 4931 5066 4898 4944 4917 4946 6847 6871 7491 7490 6800 5031 5030 5032 5014 5033 5034 5015 5016 4975 4954 5017 5018 5460 5654 5678 5486 5487 5488 5502 5534 5536 5557 5558 5556 5501 5612 5613 5525 5526 5527 5496 5523 5517 5472 5479 5478 5495 5497 5680 3954 3961 5695 7258 3952 7459 7441 3971 3994 3990 3992 3991 3996 3973 3997 1298 1417 1307 1409 1289 971 1415 1424 2051 3931 988 3942 960 986 954 3533 3507 3531 3508 3497 3906 3874 3571 3557 3523 3573 3547 3553 3551 3512 3602 3511 3603 3279 3285 3262 3287 3836 3414 3610 3490 3834 3542 3510 3540 3581 3520 3582 3504 3489 3539 3537 7196 7249 7250 7231 7248 7252 7253 7232 7205 3196 7541 7550 7254 7257 7259 7244 3136 3174 3179 3198 3157 3189 3135 3161 3187 3227 3154 3156 3228 3151 3213 3150 3214 3195 3130 3193 3367 3272 3361 3266 3373 3290 3326 3324 3354 3355 3300 3356 3342 3319 3337 3344 3293 3338 3336 1402 1321 1260 1203 1406 1403 1337 1338 1297 1362 1368 1370 1323 1358 1312 1363 1364 1329 1381 1322 1385 1386 1367 1317 1357 1365 14645 13988 14034 14651 14002 14001 13996 1205 1397 1214 14633 13999 13995 14056 14654 14647 14188 14641 13986 13892 13904 14646 13935 13913 13911 13914 13912 13924 13915 13940 13942 3963 4167 4181 4164 4177 4179 4048 4077 4161 4070 4071 4076 4078 4067 4073 4075 4047 4068 4069 4401 4443 4453 4402 4403 4349 4354 4404 4395 4386 4421 4422 4387 4385 4353 4323 4336 4335 4407 4408 13482 13497 13498 13499 13440 13523 13369 13368 13439 13464 13462 13361 13510 13503 13338 13432 822 821 794 836 838 843 844 868 876 827 818 855 853 785 800 837 823 364 365 404 402 414 424 430 428 400 415 372 416 401 345 369 399 480 927 445 929 506 520 471 518 562 560 485 479 915 470 919 950 952 239 243 938 931 276 311 299 926 924 928 238 6909 6931 6799 6932 6848 6846 6838 6822 6866 6821 6913 6919 6920 6820 6921 6865 6878 391 357 392 390 432 1007 1940 1937 953 1035 963 1036 996 1009 974 2063 2076 2074 2066 2077 3938 3933 2092 3900 3893 2069 2443 2614 2563 2624 2452 2506 2423 2508 2050 2441 2428 2467 2465 2422 3882 3904 3895 2840 2749 2678 2747 2644 2736 2800 2801 2802 2809 2810 2690 2755 2811 2812 2689 2813 2688 2796 2687 2814 2753 2786 2787 2686 2788 2712 2789 2676 2713 2643 2711 7538 6841 7537 6786 6810 6842 6840 6819 6922 6923 2815 1950 2867 2846 1958 1989 1972 2845 1946 1970 1971 1969 2407 1974 1990 1976 1988 1995 2005 1997 2006 1979 2014 2010 2012 2542 2859 1945 2870 2001 1967 2002 2003 2529 2534 2528 2561 2019 2025 2024 1987 2026 13773 13201 13755 13337 13760 13457 13359 13458 13456 13367 13476 13435 13213 13261 13771 13215 13774 13199 13267 13319 13772 12908 12960 13007 12981 12979 13008 12930 12980 12954 12910 13784 14665 14663 13813 13814 13808 13812 13816 13819 13848 13846 13841 13840 13807 13842 13859 13932 13977 13976 12945 12964 12993 12963 12991 13011 13009 12952 13002 13000 12951 12939 12907 12946 12944 13012 13015 12938 13017 13018 13024 12962 13022 13061 13021 12961 13059 13019 13031 13033 13026 4974 5039 5037 5046 5047 5045 5050 5079 5067 4973 5080 5081 5040 5082 5083 4968 5084 5085 7489 7488 6785 6853 6870 6872 6879 6880 6864 5011 5035 5036 5012 5010 4972 4916 5019 5013 5490 5674 5663 5491 5489 5480 5565 5566 5567 5514 5568 5564 5583 5614 5615 5551 5584 5582 5552 5550 5513 5471 5587 5588 5589 5590 3981 3982 3972 3980 7264 3962 7445 7460 3987 3984 3978 3989 3970 3951 3985 3983 1349 1348 1311 1350 1340 1407 1288 1412 3921 3919 3494 3488 3546 3608 3509 3496 3558 3559 3613 3410 3607 3606 3426 3271 3860 3409 3835 3433 3432 3423 3434 3477 3609 3604 3447 3605 3418 7195 7357 7260 7243 7263 7265 7216 7255 7175 7256 7535 3175 7508 7261 7262 7215 3133 3129 3145 3173 3374 3270 3308 3378 3377 3252 3370 3148 3376 3128 3155 3153 3369 3251 3368 3322 3278 3323 3294 3321 3362 3299 3363 3360 3364 3277 3365 3320 3250 3318 1217 1253 1259 1261 1228 1248 1227 1249 1247 1213 1399 1398 1346 1328 1380 1374 1382 1327 1296 1320 1345 1347 1375 1376 1387 1360 1378 1383 1326 1341 1361 1359 14014 14052 14006 14035 14033 14050 14049 13994 1200 1206 1242 1243 14025 14026 14009 14024 14040 14057 14055 14069 14064 14022 13896 14197 14200 13906 13936 13934 13917 13903 13923 13931 13933 13947 13946 13948 13927 4162 4133 4166 4108 4134 4135 4117 4132 4136 4127 4122 4137 4138 4123 4124 4120 4125 4121 4080 4322 4444 4456 4365 4366 4367 4396 4397 4375 4423 4424 4352 4405 4425 4426 4321 4380 4379 4409 4340 13500 13360 13501 13406 13336 13511 804 817 791 869 793 870 948 937 10 933 433 426 434 435 420 436 371 437 421 344 368 422 231 233 449 450 936 237 280 925 293 930 236 230 6 453 923 272 312 302 310 252 277 268 278 263 251 264 262 300 301 282 6929 6894 6818 6933 6941 6942 6817 6943 6816 6944 6862 6945 6815 6935 6914 6946 6947 6814 6889 6890 6888 343 423 361 431 349 1904 1941 334 3944 2068 2062 3947 2079 2093 2094 2081 2099 2098 2100 2073 2835 2049 2854 2851 2119 2065 2137 2843 2850 2849 2061 2642 2816 2750 2817 2672 2803 2818 2685 2781 2754 2819 2684 2771 2745 2739 2772 2773 2795 2797 2683 2738 2662 2798 2641 2799 7533 6794 6936 7532 6855 6937 6807 2260 2836 2654 2866 1962 1966 1975 1973 1944 2415 2257 2421 2288 2287 2272 2289 2030 1996 1982 1956 1994 2031 2032 1965 2008 2018 1986 2020 2855 2143 2009 2842 1955 1981 2007 2053 2048 2853 2036 2037 1985 2038 2039 2034 1984 2040 13236 13198 13222 13237 13235 13335 13769 13780 13351 13502 13496 13246 13262 13263 13225 13264 13276 13268 13266 13221 13251 13252 13210 13229 13250 13321 13310 12919 12977 13025 12995 13027 12996 12994 12959 13959 14669 13832 13799 14691 13810 13833 13815 13831 13852 13853 13830 13854 13858 13797 13826 13860 13877 13974 13973 12986 12987 12985 12937 12976 13013 13014 13787 14661 13071 14668 13066 12975 13040 13065 13067 12974 13068 13047 13069 13048 13049 12973 13039 12972 13046 13028 13050 5048 5049 4971 5051 5052 5041 5026 5042 5043 4991 5044 4996 4997 4998 4915 7485 7484 6837 6784 6852 6854 6809 6881 6882 6891 6892 6860 5053 5054 5055 5056 5057 4967 5570 5669 5658 5571 5572 5500 5512 5573 5574 5616 5617 5618 5511 5619 5597 5591 5592 5586 5593 5594 5510 5470 5485 5484 5595 5579 3950 3964 3988 3986 4887 4676 7442 7438 4687 3979 3960 3953 3977 4169 4046 4065 4060 4163 4734 4685 1315 1291 1305 1339 3915 3917 3612 3408 3439 3611 3472 3431 3444 3471 3473 3481 3478 3482 3483 3855 3421 3441 3839 3474 3479 3442 7194 7285 7444 7458 7347 7242 7358 7359 7247 7348 7230 7318 7349 7204 7528 7534 7174 7540 3249 7530 3311 3276 3312 3292 3310 3309 3273 3307 3334 3352 3379 3275 3346 3298 3351 3353 3357 3274 3366 3358 3833 3412 3838 1218 1254 1255 1231 1268 1269 1267 1263 1277 1226 1278 1279 1212 1401 1400 1389 1390 1388 1391 1325 1295 1392 1319 1377 1371 1324 1379 1354 1372 1318 1373 1274 14065 14051 14020 14058 14066 14053 14013 14043 14054 14042 14005 14041 13993 14883 14004 13987 14003 13982 14182 14942 14941 14940 14079 14086 14008 14070 14071 14019 14023 13992 14021 14063 14062 14067 14018 14039 13953 14191 14199 13902 13952 13954 13922 9690 9587 9682 9554 13901 13965 13921 13960 13958 13966 13964 13967 13926 4072 4109 4107 4118 4119 4112 4087 4128 4126 4145 4146 4147 4088 4144 4148 4054 4089 4090 4376 4457 4446 4377 4374 4316 4372 4378 4334 4373 4371 4320 4341 4427 4410 4314 4331 4330 4342 4318 13326 13405 13334 19 932 8 24 41 42 43 427 370 417 425 438 363 411 439 229 440 351 441 281 269 241 279 283 294 295 322 291 245 56 464 465 275 323 324 305 274 304 306 292 267 290 260 6895 6896 6863 6934 6948 6940 6949 6925 6950 6861 6839 6904 6813 6951 6899 6812 6832 6857 6898 6900 6811 6915 6916 6798 6897 6893 412 356 418 419 397 3928 2047 3927 2072 2080 2078 2125 2071 2126 2108 2124 2089 2118 2120 2109 2131 2070 2110 2111 2083 2138 2136 2631 2708 2709 2710 2782 2783 2661 2780 2668 2784 2666 2660 2746 2659 2732 2744 2724 2740 2730 2704 2702 2699 2723 2725 2657 7527 6776 7524 6797 6833 6831 2319 2367 2861 2862 2269 2405 2256 2419 2399 2274 2348 2294 2420 2282 2318 2281 2320 2022 2041 1954 2042 1978 2412 2340 2325 2414 2033 2043 1953 1980 2044 2134 2151 2150 2021 2027 1983 2035 1999 2016 1964 2023 9494 9542 9576 9691 9566 9557 9493 9526 9543 9541 9506 13257 13258 13256 13228 13754 13778 13209 13234 13275 13277 13271 13285 13286 13270 13233 13287 13288 13232 13289 13284 13278 13208 13239 13290 12936 13029 13309 13318 12918 13030 13796 13883 13979 13980 13783 13806 13811 13809 13865 13864 13823 13866 13870 13871 13829 13872 13876 13878 13825 14674 13072 12917 12958 13073 12931 13057 14660 13020 13062 13074 13070 12971 13079 13080 13081 13082 13083 12970 13038 12969 13076 13084 13085 13078 13086 12935 9527 9560 13795 9505 9514 9518 9553 9555 5005 5058 4970 5027 5028 4969 4992 4993 4985 4963 4999 4995 7481 7480 6957 6604 6956 6968 6664 6966 6954 6964 6598 6970 6953 6967 6738 4914 5006 5004 5469 5664 5675 5531 5532 5533 5575 5569 5559 5509 5620 5610 5598 5599 5585 5600 5601 5508 5580 5602 5596 5468 5549 5548 5581 5519 3949 4873 4673 4888 4703 4698 4704 4702 4706 4735 4712 4733 4743 4717 4045 4063 4165 4171 4053 4061 4056 4059 4110 4111 4095 4744 7439 7181 7446 4684 4741 4711 4745 4727 1309 3929 3925 3413 3422 3440 3438 3475 3449 3484 3485 3480 3469 3430 3486 3470 3468 3407 7173 7200 7226 7286 7284 7350 7356 7353 7360 7246 7354 7270 7355 7214 7271 7269 7361 7521 3314 7542 3261 3295 3315 3313 3328 3333 3335 3297 3339 3345 3347 3291 3260 3359 3845 3867 3268 1211 1223 1273 1275 1230 1280 1265 1281 1271 1262 1225 1272 1270 1210 1405 1396 1393 1294 1316 1394 1355 1343 1352 1310 1356 1353 1351 1287 14089 14938 14937 1216 14072 14017 14073 14074 14059 14016 14046 14060 14044 14045 14031 14010 14032 14030 14000 14181 14184 14085 14109 14108 14110 14098 14007 14061 14028 13991 14012 14075 14076 14077 14037 14038 13968 14195 14194 13900 13962 13969 13920 9499 9695 9600 9696 9648 9624 9625 9623 9608 9661 13862 13794 13802 13782 14807 9684 9500 9640 9688 9687 9515 9513 9484 13899 13909 13971 13972 13919 13970 13961 13949 13955 13963 13925 4086 4113 4114 4149 4150 4151 4085 4152 4139 4153 4154 4140 4155 4156 4079 4438 4455 4458 4434 4428 4186 4431 4435 4235 4433 4439 4198 4430 4429 4257 4183 4436 4437 4432 4188 13202 13775 13279 36 40 18 17 69 54 55 57 388 406 398 413 333 389 355 387 325 244 448 442 271 326 320 288 308 314 321 319 250 228 261 259 463 466 92 317 249 273 327 328 316 318 266 16 6938 6939 6859 6796 6926 6924 6905 6906 6907 6927 6928 6858 6884 6908 6874 6856 6803 6875 6876 6917 6783 6873 6877 6808 6918 6782 6597 6960 6958 385 367 342 396 383 3924 2113 3920 2060 2088 2114 2112 2091 2132 2130 2059 2139 2087 2127 2135 2133 2140 2090 2331 2837 2658 2857 2630 2667 2665 2848 2259 2858 2731 2839 2675 2729 2640 2703 2636 2651 2669 2701 2629 2700 2698 7519 7390 7553 6978 2357 2368 2302 2369 2332 2301 2268 2330 2349 2280 2326 2297 2324 2342 2358 2359 2360 2310 2353 2309 2361 1998 1943 1960 2000 2409 2312 2267 2408 2313 2314 2341 2339 2015 2028 1952 1992 2029 2122 2146 2148 2011 1977 1951 2017 2417 2193 2169 2404 2403 9504 9565 9567 9563 9524 9564 10161 9577 9571 9578 9568 9483 9511 9503 9512 9510 9517 9550 9558 9556 9528 9572 9579 9580 9876 9885 9829 13231 13219 13280 13281 13291 13282 13292 13230 13272 13293 13248 13294 13220 13223 13265 13295 13212 13240 13200 13197 13238 13315 13312 13036 13884 13874 13885 13824 13793 14685 12906 14658 13886 13882 13822 13887 13879 13888 13828 12998 12934 12999 12955 12997 13052 13056 13058 12968 13037 13063 13064 13087 13088 12967 13053 12966 13089 13077 13090 12916 13075 12957 9539 9561 9521 9492 9562 9497 10173 10171 9548 9559 9533 9859 9818 9485 9482 10170 10172 13861 13855 13863 13818 13838 13805 13839 13837 13850 9540 14812 14804 9491 9538 9525 11047 10909 10819 10908 10902 5025 5029 4994 4913 4990 4962 4953 4964 4903 7479 7478 6592 6617 6618 6616 6629 6665 6663 6630 6726 6727 6728 6739 6740 6741 6742 6643 5560 5650 5677 5561 5562 5499 5507 5563 5553 5621 5622 5603 5623 5624 5506 5625 5626 5577 5505 5627 5628 5467 5483 5482 5520 5518 4042 4885 4731 4869 4683 4710 4732 4730 4736 4758 4759 4760 4716 4766 4767 4740 4768 4708 4737 4697 4742 4725 4064 4058 4050 4062 4084 4096 4094 4115 4116 4103 4724 7434 4705 4686 7448 4728 4729 4700 4722 4682 4719 4726 4718 3941 3429 3466 3930 3465 3476 3428 3487 3463 3248 3862 3861 4674 7447 7315 7351 7432 7213 7345 7245 7352 7344 7362 7363 7241 7193 7364 7317 7506 3316 7516 3259 3305 3327 3329 3340 3341 3289 9686 1202 1244 1221 1245 1246 1276 1282 1229 1264 1251 1266 1257 1241 1220 1258 1256 1209 1395 1404 1306 1342 1286 1344 3918 3417 3424 3932 14141 14162 14936 14935 14095 14078 14011 13990 14068 14047 14048 13989 14176 14150 14185 14120 14107 14140 14142 14106 14178 13998 14183 14186 14084 13985 14029 14015 14027 13984 14036 13997 14175 13950 14193 14190 13898 13943 13951 13918 9599 9672 9596 9683 9612 9649 9638 9650 9660 9658 9607 9662 9641 9611 9639 9595 13895 13891 13978 13981 9582 14813 14809 9652 9692 9590 13938 13956 13916 13957 13944 13945 13929 4083 4157 4158 4141 4142 4130 4098 4143 4082 4052 4099 4100 4200 4454 4449 4210 4211 4212 4227 4234 4236 4243 4244 4242 4220 4256 4258 4197 4204 4203 4219 4221 13207 13260 13259 34 53 15 35 74 28 93 91 68 62 39 70 407 362 382 405 227 443 350 446 289 287 248 307 254 265 309 303 285 297 315 313 257 459 460 60 235 258 256 247 329 330 61 14 59 33 6746 6955 6969 6596 6963 6965 6795 6885 6886 6645 6962 6952 6887 6780 6883 6790 7054 7392 6977 7391 7394 7389 7001 6747 6748 6628 2058 380 374 341 384 375 3914 2141 3913 2057 2085 2128 2142 2086 2107 2121 2123 2129 2116 2316 2291 2271 2841 2284 2285 2255 2283 2628 2852 2869 7091 7511 6993 7103 7513 7509 6999 7512 6992 7016 7018 7053 7055 2374 2352 2375 2376 2308 2377 2279 2378 2317 2293 2278 2315 2334 2343 2307 2344 2345 2362 2363 2364 2306 2373 2305 2379 2158 2390 2258 2401 2254 2270 2295 2311 2335 2277 2333 1959 1991 1949 1942 1993 2105 2149 2144 2406 2202 2164 2416 2194 2180 2178 2195 2176 2179 2177 9516 9502 9569 9570 9490 10175 9905 10164 9828 9851 9877 9875 9838 9890 9523 9581 9575 9508 9530 9655 9643 9586 9685 9689 9489 9520 9529 9531 9545 9536 9551 9552 9522 9573 9574 9488 9606 9621 9855 9889 9891 9860 9844 9832 9861 9816 11051 10812 11050 10936 10829 10900 10935 10937 10889 10921 10922 10923 10849 10924 13269 13227 13283 13253 13224 13206 13226 13273 13274 13247 13214 13249 13196 13301 13302 13099 13303 13160 13296 13098 13115 13299 13322 13325 13091 13873 13867 13875 13827 13792 14662 12982 14659 13880 13881 13820 12915 12942 12950 12983 12984 13034 13054 13051 13041 13055 12965 13042 12989 13004 13035 13043 12914 13092 12956 9549 9481 9519 9495 9547 9487 9534 9532 11059 10807 10802 11022 11046 11052 10790 13856 13835 13844 13857 13851 13791 13821 13849 13845 14803 14798 10824 10896 10848 10910 10818 10894 10991 10903 10827 10925 10926 10897 10873 10904 10603 5466 5673 5667 5541 5670 5649 7475 7474 6620 6698 6606 6619 6621 6678 6749 6750 6705 6706 6707 6683 6729 6725 6743 6744 6684 6682 6642 5528 5529 5530 5554 5555 5542 5604 5605 5504 5576 5606 5607 5503 5578 5546 5521 5629 5630 5465 5516 5515 5522 5492 4102 4894 4816 4866 4681 4709 4817 4777 4818 4715 4776 4772 4778 4714 4773 4713 4774 4747 4769 4680 4770 4864 4572 4599 4854 4852 4565 4573 4859 4844 4564 4631 4560 4104 4105 4044 4081 4106 4055 4129 4159 4160 7455 7180 7172 4675 4672 4860 4857 7457 7456 7171 7199 7282 4707 4696 4723 4721 4671 4701 4699 4679 4720 4688 3436 3462 3443 3467 3459 3416 3448 3464 3457 3265 3858 3847 7433 7309 7192 7468 7240 7311 7314 7316 7239 7191 7346 7312 7507 3306 7526 3256 3304 3247 9630 9635 9656 9605 9654 9644 9614 9642 1238 1219 14137 14934 14933 1283 1208 1284 1224 1252 1250 1236 1222 1239 1240 3406 3910 1215 3911 3427 3437 3435 14094 14115 14122 14168 14169 14170 14127 14136 14138 14101 14164 14177 14093 14126 14149 14151 14165 14171 14172 14129 14118 14119 14117 14105 14147 14097 14187 14180 14083 14179 14088 14134 13908 14201 14196 13890 13910 13939 13937 9667 9619 9673 9674 9665 9675 9618 9676 9653 9659 9657 13930 9615 9601 9651 9589 14810 14802 13905 13928 13894 4092 4131 4051 4093 4091 4066 4097 4101 4043 4185 4448 4440 4213 4214 4215 4237 4238 4224 4259 4260 4261 4254 4262 4233 4196 4223 4222 4255 4253 13205 13242 13244 13245 88 32 89 13 77 78 38 76 84 87 94 95 37 90 81 332 381 359 379 447 444 240 232 75 226 255 253 246 51 286 234 284 270 48 242 225 298 296 456 452 79 80 12 6646 6647 6648 6624 6644 6613 6614 6603 6615 6591 6959 6961 6775 7066 7379 7097 7385 7067 7065 7008 6699 6697 6674 2056 2096 2102 2106 2104 347 339 331 373 2117 3935 3945 2084 2115 2055 2290 2286 2266 2292 7536 7118 7520 6991 7026 7108 7007 7119 7120 7092 7082 7027 7090 7081 7102 7104 7088 7087 7089 7042 2371 2354 2370 2372 2304 2380 2337 2381 2299 2338 2265 2336 2346 2264 2300 2347 2365 2276 2351 2366 2328 2382 2303 2383 2213 2221 2394 2396 2163 2200 2389 2393 2145 2400 2157 2402 2097 2046 2147 2168 2187 2203 2204 2205 2214 2175 2212 9498 9480 9509 9507 10176 9833 10180 9827 9845 9899 9906 9907 9854 9904 9908 9902 9853 9901 9903 9895 9703 9324 9704 9705 9598 9585 9622 9620 9694 9693 9496 9479 9544 9546 9501 9537 9535 9486 9698 9396 9710 9337 9629 9610 9631 9594 9707 9335 9418 9711 9709 9850 9896 9897 9826 9916 9720 11044 11042 10789 10876 10817 10875 10877 10888 10901 10899 10847 10928 10938 10939 10846 10931 10932 10933 10895 10885 10823 10893 10801 10806 10996 10992 10590 10672 13241 13254 13255 13204 13308 13097 13297 13300 13306 13112 13305 13140 13114 13172 13298 13116 13131 13130 13161 13159 13151 13152 13119 13150 13185 13311 13314 13005 13804 13868 13790 13869 14682 12929 14677 12905 12943 12933 12941 13044 12932 13045 12990 12913 12953 12988 12904 13003 12928 13786 11062 14791 14799 10788 10863 10811 11058 10828 10862 10864 13817 13836 13834 13789 13781 13801 13843 10859 10816 10833 10898 10887 10614 10632 10673 10671 10695 10810 10980 10678 10993 10874 10787 10872 10679 10593 10634 10677 5543 5540 5459 6690 7472 7471 6716 6641 6700 6701 6627 6717 6718 6756 6757 6755 6719 6720 6640 6758 6759 6639 6760 6761 6762 6763 6730 5538 5544 5481 5539 5537 5464 5498 5608 5609 5547 5545 5463 5493 5631 5632 5457 5477 5476 5494 5461 4884 4882 4762 4763 4764 4746 4809 4819 4820 4821 4822 4757 4775 4771 4695 4848 4847 4563 4579 4580 4578 4600 4598 4586 7466 4632 4633 4634 7476 7467 4505 4605 4635 4566 7486 4658 4874 4879 4694 4883 4876 4834 4880 4892 4693 4470 7435 7436 7221 7212 7222 7220 7297 7279 7431 7437 7224 7283 7190 7238 7281 7291 4546 7482 7483 7189 7303 7188 7440 3460 3456 3446 3461 3454 3415 3451 3458 3450 3859 3405 3849 7236 7305 7308 7310 7228 7187 7313 7518 7565 7202 9646 9593 9647 9645 9609 9668 9669 9664 1233 1235 1237 1207 14100 14931 14930 1204 1201 1234 1232 3425 3923 3922 14104 14116 14114 14082 14131 14132 14130 14092 14163 14103 14167 14173 14158 14123 14156 14166 14161 14174 14128 14148 14139 14124 14146 14091 14133 14135 14152 14192 14198 14096 14087 13889 14202 14189 9617 9666 9616 9670 14795 9677 9613 9678 9663 14801 9597 4896 4872 4804 4890 4868 4692 4875 4897 4789 4264 4889 4891 4265 4263 4205 4272 4273 4271 4274 4275 4232 4195 4299 4300 4301 4302 12596 12699 14710 14709 13194 13203 13217 13216 13211 13195 13243 13218 64 25 63 7 11 14943 14821 12590 12597 12621 12620 12611 82 66 83 72 31 27 85 86 96 97 30 454 106 461 462 23 117 169 455 458 29 52 50 5 115 163 457 469 20 9 49 47 104 222 468 467 451 4 6691 6692 6693 6632 6694 6695 6590 7096 7383 7123 7378 6990 7098 7025 6676 6696 6650 2052 2064 2095 2082 2101 2045 2103 2067 3926 3946 103 7573 7150 7136 7566 7006 7083 7135 7133 7137 7041 7132 7128 7040 7134 7117 7111 7121 7112 7113 7039 7122 7124 7125 7038 2350 2322 2355 2356 2275 2384 2263 2385 7510 7063 6989 7514 2156 2395 2329 2397 2262 2298 2327 2386 2261 2296 2387 2224 2223 2185 2225 2201 2167 2199 2192 2411 2247 2219 2410 2174 2220 2218 2230 2229 2231 9322 10162 10181 9815 9872 9837 9873 9874 9887 9893 9900 9898 9852 9909 9910 9911 9848 9912 9913 9825 9349 9347 9350 9348 9334 9424 9713 9701 9333 9402 9714 9332 9360 9397 9395 9351 9453 9377 9460 9712 9708 9331 9359 9431 9454 9455 9363 9419 9410 9417 9362 9352 9925 9742 9919 9735 9761 9741 9762 9760 9734 11033 11056 10906 10800 10834 10905 10907 10927 10920 10929 10845 10947 10948 10949 10844 10919 10930 10934 10867 10815 10866 10868 10786 10988 10601 10987 10765 10631 10725 10766 10767 14705 13307 13096 13304 13102 13124 13127 13141 13142 13125 13123 13118 13144 13165 13171 13146 13173 13166 13139 13167 13184 13109 13138 13186 13188 13108 13317 13316 14656 13101 13323 14655 13111 13169 13313 13320 13178 13324 13107 10995 14786 10860 10805 14765 10822 10861 10857 10793 14808 13095 14789 10854 10799 10856 10858 10997 10989 10589 10655 10726 10654 10707 10706 10708 10760 10734 10768 10769 10653 10720 10602 10686 10986 10652 10613 10719 10721 6623 6638 6677 6675 7465 7464 6595 6708 6709 6710 6661 6662 6660 6764 6765 6637 6685 6721 6715 6766 6767 6731 6768 6769 6636 6770 6771 7462 7461 6672 7493 7492 6594 7504 7470 6667 7414 6188 7463 7487 6087 6093 7494 7503 7477 4751 4761 4765 4810 4811 4756 4823 4815 4806 4748 4807 4808 4850 4849 4582 4574 4581 4583 4479 4626 4625 4627 4496 4497 4495 4636 4637 4591 4465 4504 4506 4606 4604 4577 4665 4668 4750 4833 4835 4783 4784 4782 4749 4803 4805 4547 4548 4478 4488 4469 4489 4490 7294 7211 7296 7298 7237 7278 7280 7295 7276 7293 7292 7186 7235 7290 7277 7450 7451 7299 7273 7302 7304 3404 3445 3455 3453 3420 3419 3411 3403 3452 7170 7523 7560 7306 7307 7210 9330 9699 9679 9697 9592 9603 9671 9680 14924 8664 14718 14922 14921 8662 14919 8733 8677 14772 14773 8663 14788 14159 14769 14090 14125 14155 14160 14144 14153 14157 14112 14154 14121 14102 14081 14113 14111 14782 9584 14780 11106 9633 9637 9627 9681 9634 9632 9604 11094 9336 9323 9378 9376 4780 4781 4779 4678 4788 4790 4282 4877 4895 4283 4281 4226 4288 4289 4287 4290 4291 4231 4194 4209 4208 4303 4298 12650 12664 12665 12700 12626 12698 12605 12705 14702 14701 14700 12604 58 26 71 73 3 14894 12689 14923 12612 12651 12649 12638 22 2 65 67 45 220 102 221 213 127 125 128 126 122 214 212 184 129 170 168 141 114 175 219 216 164 132 162 119 223 113 6651 6602 6652 6589 7106 7377 7057 7381 6988 7126 7023 6610 6653 6649 6588 7058 2162 2171 2413 2418 2155 3943 3916 160 7024 7115 7151 7152 7037 7153 7141 7154 7036 7110 7142 7143 7035 7144 7034 7145 7109 7129 7130 7033 7131 7127 2273 2253 2321 2323 7558 6998 6987 7531 7015 7064 7062 2242 2233 2392 2391 2161 2197 2388 2398 2236 2243 2173 2244 2191 2235 2237 2190 2246 2248 2182 9383 10157 10182 9888 9824 9849 9886 9884 9879 9882 9894 9892 9847 9914 9915 9823 9922 9782 9921 9730 9384 9339 9385 9321 9425 9407 9423 9361 9401 9375 9403 9398 9399 9354 9400 9329 9449 9346 9450 9429 9451 9379 9461 9462 9440 9374 9441 9442 9373 9468 9469 9470 9434 9372 9435 9436 9412 8520 8499 11075 11108 9393 9770 9751 9771 9769 9775 9776 9777 9719 11049 10809 11041 10957 10826 10958 10959 10843 10946 10918 10950 10842 10964 10965 10966 10841 10967 10825 10968 10969 10808 10982 10984 10588 10669 10612 10668 10670 10681 10727 10723 10722 12625 12676 12677 12624 12678 12603 12683 14696 14697 13145 13106 13143 13135 13157 13158 13134 13105 13156 13189 13190 13191 13183 13137 13180 13187 13179 13175 13177 13136 13121 13117 13122 13120 13170 13168 13126 10657 10658 10656 10630 10798 10855 10785 10853 14776 13154 14760 10600 10985 10998 10651 10704 10650 10724 10729 10649 10703 10735 10736 10745 10761 10702 10762 10648 10744 10705 10746 10647 10770 10748 10771 10685 10682 10646 10687 10645 10688 10759 10763 10683 10644 10710 6601 6611 6612 6587 6711 6712 6713 6702 6714 6605 6626 6671 6673 6703 6704 6655 6686 6687 6635 6634 6732 6733 6745 6772 6773 6774 6723 6658 6659 6657 6116 6586 6666 6668 7421 7424 6319 6091 6170 6102 6117 6100 6115 6113 6153 6189 6138 6190 6104 6137 6103 6108 6139 6131 6090 6107 6101 4825 4836 4837 4813 4838 4839 4840 4841 4691 4858 4861 4648 4542 4585 4647 4649 4513 4549 4550 4639 4650 4651 4514 4515 4486 4629 4652 4653 4474 4516 4512 4654 4655 4571 4661 4666 4826 4827 4755 4792 4828 4829 4793 4794 4754 4543 4544 4492 4481 4473 4493 4494 4466 4459 4491 4487 7453 7179 7454 7234 7169 7198 7300 7301 7225 7275 7274 7272 7185 8678 14914 8758 14913 8676 14912 8739 8786 14910 14909 8661 14907 9320 9706 9588 9702 9700 9636 9602 8713 8734 8712 8732 8730 8731 8660 8729 8859 14785 14099 14764 14080 14143 14145 8492 14793 14796 8501 8500 11111 9628 11098 9591 9626 9583 8541 8575 8530 8574 8576 11096 11107 8622 4739 4795 4791 4193 4881 4870 4248 4249 4250 4304 4305 4306 4307 4308 4230 4192 4252 4251 4309 4292 12690 12680 12688 12691 12637 12706 12707 12708 12667 12636 12709 12710 21 1 46 44 14916 12608 14906 12602 12617 12662 12692 12635 195 201 215 224 112 118 217 218 124 135 186 194 196 111 139 159 161 183 181 140 185 171 146 172 173 176 174 7014 7376 6976 7382 6980 7056 6996 7368 7370 7373 7178 7157 7005 7158 7159 178 3948 2210 2186 2211 2209 3934 2165 7048 7105 7114 7116 7032 7147 7149 7155 7031 7160 7156 7161 7030 7107 7162 2154 7568 6975 7515 7047 7004 7049 2232 2226 2184 2234 2198 2166 2196 2249 2189 2238 2245 2241 2250 2188 9779 10166 9866 10158 9880 9836 9868 9878 9871 9846 9883 9881 9822 9920 9793 9917 9729 9746 9783 9781 10156 9842 10177 9821 9831 9371 9411 9413 9404 9357 9405 9406 9328 10165 10167 9820 9420 9327 9358 9392 9394 9415 9438 9448 9452 9370 9471 9472 9467 9369 9433 9473 9368 9444 9474 9463 9475 9443 9445 9367 8624 8627 8549 8628 8629 8516 11091 11104 9416 9750 9778 9780 9737 9805 11036 11048 10784 10870 10814 10869 10871 10886 10956 10960 10840 10961 10963 10970 10839 10917 10838 10971 10952 10953 10915 10954 10783 10983 10598 10981 10728 10628 10730 10731 10675 10663 10732 10694 12704 12702 12711 12634 12669 12633 12679 12675 12684 12623 12685 12601 14695 12658 14694 12600 13192 14706 12640 14708 13133 13104 13193 13181 13176 13129 13182 13148 13103 13132 13163 13174 13155 13153 10611 10587 10684 10680 14759 13164 14777 10643 10733 10709 10737 10642 10696 10666 10711 10641 10701 10749 10750 10772 10700 10773 10774 10775 10776 10640 10739 10699 10755 10777 10639 10660 10689 10690 10691 10764 10638 10778 10625 10619 10661 10659 10610 10626 10609 10629 10712 10713 10599 10667 10586 10665 11020 7218 7197 7371 7388 7327 7372 7374 7233 6656 7393 7387 6238 6291 6220 6622 6654 6607 6669 6688 6689 6722 6734 6735 6751 6752 6633 6724 6680 6312 6315 6239 6600 6670 6631 7412 7425 7223 6287 6296 6297 6298 6258 6292 6290 6211 6311 6310 6089 6171 6172 6144 6128 6145 6143 6154 6155 6114 6191 6192 6183 6162 6182 6184 6185 6186 6146 6133 6147 6148 6149 6099 4814 4812 4753 4824 4842 4843 4551 4846 4855 4570 4485 4552 4553 4596 4597 4595 4523 4554 4555 4640 4641 4590 4524 4522 4484 4630 4628 4589 4468 4525 4526 4638 4656 4657 4659 4670 4797 4830 4831 4798 4796 4752 4690 4799 4800 4464 4556 4557 4480 14902 8746 14900 14899 8755 8675 14898 14897 8801 8680 14895 8674 8720 8759 8735 8757 8695 8787 8760 8785 8714 8740 8741 8515 8599 11109 11092 8749 8748 8673 8750 8847 8504 8498 8858 8560 8523 14771 8535 8529 8536 8534 8514 11097 8570 8630 8559 8625 8619 8623 8626 8551 8621 8616 4310 4886 4865 4311 4312 4225 4285 4313 4277 4286 4284 4229 4191 4207 4206 4293 4294 12671 12632 12681 12682 12631 12693 12712 12713 12630 12668 12714 12629 101 14890 14830 12594 12647 12619 12646 12648 12656 12672 12670 12614 154 202 198 203 131 155 153 134 145 204 189 200 144 190 143 188 110 138 179 177 182 180 5926 7163 7367 7168 7366 7219 7209 7217 7267 7268 7266 7229 7288 5910 5919 7208 5901 7164 7022 6986 7165 206 2153 3939 3936 2251 2239 2252 2172 7139 7003 7138 7140 7085 7094 7146 7148 7029 7099 7166 2222 7570 7086 7575 2207 2160 2183 2227 2228 2240 2216 9787 9784 9788 9786 9749 9843 9863 9867 9865 9835 9869 9870 9819 9926 9766 9923 9728 9745 9792 9794 9840 9856 9857 9858 9830 9817 9841 9839 9814 9345 9421 9422 9326 10159 10169 9446 9430 9447 9356 9325 9353 9414 9408 9381 9427 9437 9439 9366 9456 9476 9477 9390 9365 9432 9478 9364 9464 9459 8635 8647 8558 8648 8649 8642 8613 8650 8651 8513 11064 11099 9338 9806 9744 9807 9727 9796 11031 11034 10912 10797 10832 10911 10913 10891 10944 10962 10837 10916 10972 10973 10951 10836 10941 10955 10813 10942 10994 10978 10585 10676 10674 10608 10662 10664 10622 12686 12701 12703 12628 12661 12653 12687 12659 12641 12642 12660 12615 12595 12593 12606 12639 13113 14698 14703 13094 13128 13149 13147 13110 13162 13100 13093 14761 14766 10597 10637 10742 10751 10752 10624 10616 10747 10753 10636 10756 10743 10757 10738 10715 10635 10740 10716 10717 10718 10607 10692 10606 10693 10779 10627 10780 10584 10620 10618 10596 11007 10377 11006 10394 10594 10591 10623 10583 10621 11011 11018 10376 11005 10393 10451 10500 11015 10401 10411 10452 10450 5968 7322 7326 7328 7184 7323 7324 6250 6260 6599 7375 7380 6251 6261 6259 6233 6231 6299 6295 6608 6609 6585 6210 6237 6226 6625 6736 6737 6753 6754 6681 6679 6593 7426 7422 7329 7330 7331 7335 7336 7337 7338 7408 5923 7416 7428 5937 5967 5969 5938 5936 5915 6281 6271 6282 6283 6276 6284 6280 6288 6289 6248 6300 6301 6293 6256 6294 6230 6318 6316 6110 6141 6173 6174 6164 6175 6176 6160 6177 6178 6193 6194 6127 6195 6196 6197 6198 6199 6126 6132 6134 6112 6111 6098 6244 4463 4472 4786 4832 4689 4498 4499 4500 4856 4845 4623 4558 4559 4532 4584 4622 4624 4537 4545 4483 4611 4642 4643 4538 4539 4528 4616 4644 4645 4540 4541 4477 4602 4646 4569 4664 4663 4787 4785 4738 4801 4802 4677 4190 4867 4893 8672 8777 14892 14891 8718 8747 8694 8745 8719 8754 8756 8802 8794 8803 8728 8774 8773 8693 8775 8795 8727 8796 8792 8600 8572 8598 8550 8852 8566 8518 8853 8561 8539 8562 8569 8571 8567 8652 8557 8636 8617 8653 8556 8631 8555 8632 8587 8620 8618 4245 4246 4247 4278 4279 4267 4276 4280 4240 4189 4295 4296 4297 4216 12673 12618 12674 12663 12644 12694 12695 12627 12666 12715 12716 12609 12836 12726 121 14825 14926 12610 12592 12657 12655 12830 12838 100 166 123 167 165 157 192 197 199 142 207 205 208 109 209 137 5917 5914 5925 5927 5992 5913 5970 5933 5993 5991 7100 7365 7203 7369 7289 7287 7167 5908 5891 5918 5916 7429 7402 7093 7021 6985 7101 210 108 3912 2208 3909 2181 2206 2159 6984 7020 7080 7084 7074 7077 7095 2170 7075 7546 7505 2217 2215 2152 8542 8646 8521 9797 9799 9808 9809 9790 9767 9798 9800 9748 9834 9813 9864 9862 9924 9756 9918 9726 9757 9768 9759 10152 9944 10145 10146 10007 9937 10141 10139 9940 9933 10163 9341 10179 9319 9344 9391 9389 9318 9380 9382 9343 9465 9428 9342 9426 9409 9387 9457 9458 9466 9355 8578 8643 8654 8554 8644 8645 8553 8614 8610 8615 8528 8611 11083 11090 8512 9785 9743 9795 9725 9772 11032 11028 10892 10796 10831 10890 10884 10882 10943 10945 10835 10974 10879 10975 10914 10830 10940 10795 10880 10990 10979 12616 12607 12717 12718 12622 12654 12599 12652 12834 12837 12737 12792 12833 14707 12728 14699 12725 14704 14693 12780 12821 14749 12742 14754 10633 10698 10605 10741 10617 10582 10615 10604 10754 10592 10758 10595 10581 10697 10714 12724 14816 14752 10525 11017 10385 10526 11002 10402 10437 10485 10524 10792 11012 11010 10183 11016 10580 10466 10392 11003 10409 10410 10467 10465 10501 10489 10433 10502 10531 10432 10532 10533 10496 6008 6009 6007 6564 6470 7325 7332 7333 6285 6228 6286 6471 6565 6562 7339 7384 7386 6241 6219 6242 6240 6227 6234 6249 7398 7397 7396 6302 6303 6235 6212 7403 7411 7413 6222 7340 7341 7342 5958 7319 7343 7201 6012 6013 6014 7410 7419 6022 6021 6023 6024 6025 5950 6218 6253 6254 6252 6272 6273 6247 6277 6275 6246 6304 6305 6306 6266 6307 6245 6257 6255 6225 6313 6317 6097 6142 6140 6125 6165 6166 6124 6161 6159 6123 6180 6200 6201 6157 6202 6122 6203 6204 6135 6118 6136 6130 6129 6096 6447 6557 6559 6461 6472 6473 6490 8671 8743 4462 14881 8682 14887 4533 4534 4535 4863 4853 4568 4527 4536 4476 4593 4594 4592 4529 4530 4518 4612 4613 4588 4508 4531 4482 4617 4615 4587 4467 4509 4510 4603 4601 4576 4667 4660 4862 4851 4608 4268 4878 4871 4269 4266 4184 8717 8778 8764 8776 8797 8804 8800 8726 8791 8798 8799 8716 8670 8793 8806 8527 8700 8849 8497 8851 8522 8588 8586 8543 8568 8601 8655 8526 8634 8656 8602 8590 8637 8638 8639 8640 8525 4228 4270 4199 4217 4241 4239 4182 4202 4201 4218 4187 5939 6010 6011 9279 9315 9278 7579 12591 12645 12643 12613 12696 12697 12598 12743 12765 12841 12835 12771 12772 12773 12754 14918 14904 12736 158 14885 14884 12727 107 136 156 187 133 191 193 148 211 151 5909 5900 5920 5897 5940 5941 6069 5754 5898 5724 5890 6082 6073 5892 5934 5935 5907 5994 5995 7407 7000 7078 7404 7017 7071 7028 7079 130 116 105 149 147 3908 3937 99 7517 7072 7019 7076 6983 7556 7059 6070 8633 8524 8496 8579 8577 9313 7587 7620 7590 9305 9773 9747 9789 9791 9764 9801 9810 9811 9736 9739 9812 9804 9732 9932 10153 10154 9722 9755 9718 9978 9950 9979 9956 9977 9953 10008 9998 10009 9975 9949 9974 9976 10174 9987 9967 10168 9936 9962 10178 9340 10160 8596 11088 11101 9388 9386 9317 8511 8548 8597 8595 8547 8546 8607 8641 8552 8612 8608 9758 9753 9774 9724 9754 11029 11023 10881 10794 10851 10883 10865 10820 10976 10977 10821 10804 10878 10782 12829 12723 12831 12832 12735 12738 12839 12756 12755 12793 12791 12781 12779 12749 12815 12759 12822 12823 12786 12787 12748 12785 10999 10375 10378 11009 14747 12722 14748 14746 12812 14806 12741 10457 10497 10431 10498 10435 10384 10436 10434 10456 10408 10458 10514 11014 10192 10196 11004 10191 10374 10563 10566 10448 10449 10400 10447 10487 10503 10430 10499 10530 10429 10495 10534 10548 10515 10549 10550 10428 10516 10491 6045 6046 6047 6468 6521 6498 6499 6500 6501 6497 6467 5977 6458 6469 6455 6508 6509 6510 7320 7334 7183 6450 6229 6558 6556 6441 6456 6457 7420 7406 6206 6223 6236 6209 6214 6215 6213 6224 6221 6016 6048 6049 7227 7321 7182 6050 6051 5957 7415 7423 5906 6026 6027 6005 6006 6004 6475 6561 6560 6263 6208 6262 6264 6232 6274 6270 6217 6278 6279 6308 6309 6243 6216 6267 6268 6265 6269 6207 6314 6320 6150 6088 6151 6152 6109 6167 6168 6095 6169 6163 6179 6181 6121 6094 6158 6156 6187 6205 6119 6092 6120 6106 6105 6086 6440 6474 6476 6452 6491 6492 6446 6493 6489 6522 6523 6460 6445 8703 8744 8742 8711 8659 8704 8692 8702 4519 14888 14878 4520 4517 4461 4562 4607 4609 4502 4521 4475 4575 4614 4610 4503 4501 4471 4567 4618 4619 4507 4511 4460 4620 4621 4561 4669 4662 14877 14876 14875 14874 14873 8990 14871 14870 8970 7623 8780 8805 8725 8788 8807 8808 8691 8809 8710 7589 8701 8679 8658 8699 8857 8850 8591 9301 8563 8510 9314 8564 8573 8603 8509 8589 8540 7578 9309 8681 9065 8901 14868 14867 8861 8867 14866 14865 14864 5730 6075 6065 6052 6053 5949 7605 7624 7604 7622 12803 12789 12776 12734 12840 12744 12770 12768 12774 12733 12769 12721 12767 14893 120 14862 152 150 98 5723 6067 5787 6071 5722 6072 5824 5738 5825 5823 5791 5739 5748 5750 5755 5756 5712 5749 5747 5737 6974 7400 7399 5889 6074 6077 7051 7052 7050 7002 7069 7073 7060 7522 6973 6979 7544 7574 6995 7044 6982 7525 7046 7061 7045 5817 5818 5819 8593 8544 8594 8508 8592 9311 7580 9316 7577 7600 7599 7601 7602 7603 7621 7619 7588 9738 9765 9723 9740 9763 9733 10149 9802 9803 9717 9995 10140 9931 10143 10142 9983 10148 9943 9948 9996 9994 9986 9989 10011 10012 9960 10013 9997 9992 9999 9959 9991 9970 9947 9993 9968 9963 9969 9951 9938 9934 9930 9961 11087 8584 11079 8507 8545 8585 8583 8605 8581 8609 9731 9721 9752 9716 11043 11019 11035 10852 10791 10781 10850 10803 11013 10213 10264 11000 12804 12800 12747 12802 12764 12814 12809 12816 12813 12806 12824 12825 12758 12801 12811 12795 12740 14743 14778 12796 12794 12757 10399 10391 10373 10517 10518 12720 14736 14739 10551 10552 10541 10398 10553 10230 10255 10256 10254 10218 10542 10578 10577 10383 10543 10415 10540 10490 10427 10544 10545 10546 10426 10554 10555 10494 10556 10425 5905 5978 5979 6528 6444 6481 6482 6480 6459 6529 6530 5997 6536 6537 6538 6539 6535 6466 5948 5996 5998 6511 6507 6465 6540 6541 6531 6015 6017 5956 6512 6439 6513 6487 6454 6488 6486 6583 7418 7417 6566 6578 6580 6584 6581 5896 5921 6579 6054 6055 6036 5929 7409 6037 6035 6038 5955 6039 6040 6495 6550 6339 6368 6336 6421 6335 6382 6330 6323 6563 8826 8810 8827 8821 8828 14858 14857 8690 14855 14854 8829 14852 14851 9265 8969 14848 14847 14846 14845 8977 8979 14842 14841 14840 14839 9000 9019 14836 14835 14834 8974 9013 9012 9014 9073 9024 9025 9026 9031 9070 8724 7617 7618 7616 7598 8830 8689 8766 8831 8832 8781 8779 8688 8789 8669 8790 8696 8697 8657 8698 8855 8503 9300 8495 8854 8848 8519 8565 8707 7708 8705 9280 9308 7647 8668 8687 8708 8706 8978 9037 8968 9075 8874 8865 9072 8944 8876 8895 8902 8903 8878 8938 8877 8882 8939 8937 8864 8881 8875 5871 5790 5872 5873 6076 6079 7625 7614 7634 7635 7636 12790 12778 12746 12788 12766 12775 12732 12777 12848 12482 12849 12845 12485 14824 14818 5757 5805 5806 5807 5743 5839 5840 5841 5874 5875 5876 5752 5758 5759 5742 5736 5753 5721 5751 7427 7070 7395 6981 7068 7013 12481 14889 6994 14826 6972 7010 7009 7011 6997 7043 7012 5797 5877 5844 8538 8582 8506 8580 9298 7763 7963 9306 7964 7965 7761 7576 7615 7597 7613 7961 7789 7909 7947 7833 9715 10144 10028 10151 10155 10040 10073 10147 10058 10074 10042 10024 10072 10138 9941 9965 10150 9984 9973 9985 9966 9964 9954 9981 9988 9958 9990 10000 10010 9957 10014 10015 10003 10016 9946 10004 9955 10005 9942 9971 9972 9929 11086 8494 11080 11076 8517 8606 11081 8531 8537 8505 8604 11045 10195 11055 10190 10277 11008 11001 10210 10209 10280 11021 10242 10261 10263 10265 12783 12763 12808 12798 12810 12762 12817 12820 12826 12784 12805 12807 12753 12782 12751 10474 10382 14724 12474 14742 14725 12739 12846 14737 10557 10528 10475 10510 10558 10469 10473 10414 10224 10189 10260 10262 10274 10570 10504 10390 10579 10407 10424 10505 10506 10507 10423 10535 10547 10493 10559 10422 5729 6066 6068 5821 6478 6479 6477 6438 6494 6496 6080 6063 5904 6503 6542 6543 6504 6505 6464 5975 5976 5974 6544 6545 6463 6515 6546 6525 6029 6030 6028 6449 6437 6532 6527 6533 6534 6524 6044 6056 5954 6568 6571 5895 5930 5931 5924 5932 5928 6019 6041 6042 6043 5981 6327 6554 6551 6348 6349 6350 6369 6370 6357 6360 6367 6371 6359 6420 6422 6383 6384 6385 6355 6381 6377 6343 6354 6356 6334 6342 8820 8814 8822 8723 8836 8837 8838 8667 8839 8840 8967 9271 9270 9036 9016 8980 8987 8988 8989 9020 9018 9021 9001 8999 8994 9007 9022 9002 9003 9004 8981 9038 9039 8998 9027 9028 9032 9030 8812 8833 8834 8722 7638 8721 7707 7632 7596 7709 8816 8815 8817 8686 8737 8783 8856 7648 8709 8685 8736 8738 7626 7609 7586 7646 7743 9284 8752 9285 8666 8753 8751 9259 8973 9053 9054 9055 9056 9057 9047 9015 9048 9046 9071 9068 8863 8886 8887 8885 8891 8943 8945 8933 8946 8947 8948 8949 8904 8930 8931 8929 8914 8940 8941 8942 8872 5843 5834 5845 5814 5815 5816 7611 7637 7610 7639 7640 7641 7585 7608 7642 12761 12797 12731 12799 12842 12562 12493 12851 12504 12502 12505 12503 5862 5878 5879 5880 5760 5798 5804 5808 5741 5857 5838 5842 5796 5870 5735 5761 5720 5762 7405 7401 6971 12538 12499 14880 14831 14932 14860 12480 5831 5863 5864 9295 7818 7772 9299 7784 7790 7788 7770 7864 7959 7957 7799 7783 7910 7911 7899 7792 7834 7832 7823 10212 10271 11057 10023 11053 10076 10047 10077 10075 10078 10046 10079 10080 10091 10135 9928 10133 9982 9945 9980 10001 9935 9952 10002 9939 9927 10006 10017 10134 10022 10130 10132 10027 11095 8502 11100 8493 8532 8533 7760 9288 9289 10243 10278 10229 10276 10266 10281 10279 10275 10273 10223 12719 12745 12752 12750 12760 12827 12730 12828 12818 12729 12819 10482 10480 10483 10381 10413 10484 12484 12486 14735 14741 12852 12483 12844 10527 10520 10421 10492 10529 10511 10512 10420 10303 10372 10575 10574 10282 10304 10208 10241 10302 10463 10464 10406 10462 10445 10419 10486 10508 10536 10537 10418 5822 5820 5789 5810 5811 5812 5728 6081 6064 6031 6451 6506 6502 6414 6553 6552 5947 6032 6033 6516 6514 6462 6443 6517 6518 5988 6034 5953 6448 6436 6526 6484 6453 6485 6483 6057 6058 6018 6569 6570 5912 6000 6020 5952 5982 5980 6415 6416 6362 6404 6417 6418 6423 6424 6425 6409 6426 6366 6396 6410 6411 6397 6395 6365 6398 6399 6390 6333 6400 8813 8841 8842 8765 8843 8835 9118 9109 8992 9267 9266 9108 9096 9110 9083 8983 9245 9244 8993 8991 8966 9033 9040 8965 8995 8996 8976 9029 9023 8997 9005 9006 9034 9035 7719 8818 8844 8845 7660 7720 7721 8784 8819 8811 7742 7744 7745 8770 8782 8762 7731 7746 7747 8763 8761 8715 7705 7748 7584 9277 9290 9173 9170 9174 9175 9126 9176 9172 9248 9256 9058 9050 9059 9017 9060 9061 9042 9043 9044 8972 9069 9066 8922 8893 8921 8923 8918 8924 8925 8934 8935 8898 8951 8952 8953 8954 8955 8897 8915 8913 8884 8883 8871 9193 5852 5861 5865 5795 5835 5833 7628 7722 7718 7629 7627 7612 7769 7956 7958 12847 12556 12492 12843 12516 12561 12554 12506 12563 12539 12512 12537 5794 5881 5882 5793 5832 5830 5792 5858 5846 5859 5828 5771 5860 5856 5847 5848 5719 5849 5727 5850 5788 14905 12547 12511 12498 14861 12548 12546 5853 5854 5826 7775 7819 7817 7795 7848 7863 7865 7810 7912 7913 7901 7903 7830 7904 7839 7905 7831 7829 7809 10272 10240 10207 10270 10306 11054 10082 11038 10036 10063 10081 10083 10084 10092 10062 10035 10090 10117 10129 10136 10034 10094 10128 10131 10033 10051 10039 10137 10049 10048 10021 10050 7836 11074 11073 10291 10253 10292 10290 12522 12523 12854 12850 12491 12540 12490 12853 10479 10477 10454 10471 10481 10412 10472 10455 10380 10453 14733 12479 12582 14734 12494 12521 12507 10488 10442 10417 10521 10522 10509 10513 10416 10321 10389 10567 10571 10206 10308 10309 10310 10252 10322 10323 10239 10371 10397 10446 10444 10538 10539 10405 5836 5837 5800 5801 5775 5802 5783 5766 5813 5809 6085 6083 5903 5984 5985 5986 6340 6549 6548 6373 6374 6375 5971 5989 5990 6442 6435 6519 6520 6547 6555 6328 6059 6060 5951 6573 6575 5999 5965 6001 6002 6003 5946 6413 6419 6406 6427 6428 6364 6408 6429 6430 6391 6412 6402 6392 6393 6363 6347 6394 6387 6332 6346 7736 7724 7737 7738 9206 9132 8824 8846 8684 9194 9177 9195 9190 9207 9208 9262 9268 9243 9178 9101 9179 9151 9152 9091 9150 9095 9254 9252 9249 9246 9229 9135 9250 9257 9253 9090 7711 7739 7740 8771 8825 8823 7749 7750 7659 8683 8772 8768 7732 7733 7704 8769 8767 8665 7679 7706 7631 9283 9291 9131 9196 9192 9169 9153 9171 9165 9166 9167 9094 9255 9247 8971 9008 9051 9049 9062 9063 9011 8985 9045 9041 9077 9074 8870 8906 8907 8905 8909 8919 8920 8927 8936 8932 8956 8957 8896 8958 8959 8916 8888 8917 8900 8899 8869 9209 9210 9198 9184 9211 9205 9220 5772 5866 5867 5868 5869 5773 7741 7735 7653 7798 7954 7966 7866 7867 7847 12515 12552 12555 12557 12520 12564 12519 12565 12566 12567 12535 12568 5855 5764 5851 5785 5781 5740 5883 5884 5777 5885 5886 5763 5726 5829 5718 5827 5734 5782 5780 12501 12478 14944 14832 12536 12534 5725 5786 5784 5717 7768 7835 7837 7797 7852 7902 7900 7914 7808 7915 7908 7854 7916 7807 7838 7906 7858 7907 7828 7840 7806 10305 10234 10205 10307 10217 11030 10100 11025 10032 10060 10101 10099 10120 10114 10121 10112 10122 10118 10061 10116 10095 10085 10055 10093 10067 10066 10031 10068 7859 11071 11067 10311 10251 10312 10313 12525 12489 12526 12514 12524 12527 12541 12542 10476 10460 10468 10439 10478 10403 10470 10379 10386 14815 14729 12386 14726 12400 12385 12431 14732 12388 12586 12588 10388 10370 10396 10443 10441 10519 10523 10404 10326 10560 10300 10565 10222 10327 10288 10325 10320 10318 10324 10204 10353 10564 10568 5803 5799 5768 5733 5716 5769 5770 5776 5774 5765 5732 5767 5715 6078 6084 5987 5894 5983 5972 5911 5973 5945 6321 6376 6372 6358 6331 6407 6405 6061 6062 5964 6574 6572 5902 5942 5966 5960 5961 5962 6431 6326 6432 6433 6338 6434 6361 6325 6388 6386 6401 6351 6403 6379 6341 6380 6378 6337 6352 6389 7595 7673 7674 7672 9130 9203 7725 7726 7658 9213 9221 9222 9214 9212 9129 7712 7710 7657 9191 9189 9128 9187 9223 9219 9264 9263 9082 9230 9231 9099 9232 9180 9233 9228 9106 9107 9105 9124 9234 9163 9114 9136 9137 9134 9138 7751 7752 7730 9112 9261 9269 7714 7734 7656 9093 9272 9260 7680 7678 7594 9307 9294 9123 9089 9199 9197 9200 9201 9122 9088 9154 9155 9168 9164 9081 9258 9251 8982 8964 9009 9010 9064 9052 8984 8975 8986 8963 9067 9076 8910 8862 8908 8911 8873 8912 8894 8928 8926 8892 8868 8960 8961 8950 8962 8889 8866 8890 8880 8879 8860 9185 9183 9121 9087 9224 9225 9226 9227 9204 9086 9202 9115 9100 14817 12283 12271 14849 14820 14838 14853 7923 7952 7955 7924 7925 7850 7917 7926 7922 12550 12569 12570 12571 12518 12558 12572 12517 12553 12510 12573 12574 5887 12497 5731 5888 5714 5745 5778 5779 5746 5744 5713 14828 14927 14823 12274 14829 12248 7767 7860 7861 7794 7827 7875 7918 7919 7815 7805 7920 7921 7804 7862 7845 10314 10315 10188 10316 11026 10041 10123 11040 10059 10108 10111 10124 10065 10115 10064 10113 10125 10103 10126 10045 10102 10030 10104 7774 11102 11063 10250 10317 10221 10319 12397 12457 12551 12579 12587 12488 12549 12513 10329 10387 10369 10395 10461 10459 10438 10440 10368 14763 12406 12440 12451 14723 12404 12412 12441 12439 12432 12430 12410 10203 10573 10216 10561 10187 10562 10569 10334 10233 10238 10287 10301 10299 10328 10249 10330 10343 10354 10355 12247 14827 14822 12307 12338 14920 14879 12255 14928 14859 12289 14886 14901 12365 14850 14856 11997 14911 14917 12012 14843 14844 11982 14903 14882 14837 14833 5922 6582 6577 5963 5899 5943 5944 5959 5893 6329 6576 6567 6322 6344 6345 6353 6324 7782 7950 7962 7702 9273 7996 7652 7701 7703 9080 9116 9117 7978 9293 9302 7692 7727 7728 9148 9215 9216 9149 9147 9125 7697 7729 7723 9188 9186 9127 9140 9217 9218 7753 7754 7655 9098 9133 9235 9236 9097 9237 9238 9113 9111 9102 9181 9182 9157 9144 9145 9146 9158 9159 7676 7715 7716 9103 9104 9079 7644 7717 7713 9292 9310 7987 8066 7986 8086 7985 8099 7984 8051 7979 7971 9274 12260 12280 12254 12282 12284 12272 12270 12259 7869 7870 7871 7931 7932 7933 7826 7873 7934 7935 12575 12487 12508 12576 12559 12529 12544 12560 12532 12275 12500 12533 12531 12477 12860 14939 12241 12273 12250 7759 7781 7816 7814 7936 7803 7928 7937 7930 7938 7780 10332 11037 10020 11027 10088 10044 10089 10087 10106 10097 10109 10110 10056 10053 10127 10119 11072 11110 10038 10331 10237 10202 10333 12444 12456 12394 12416 12458 12463 12399 12584 12580 10344 10345 10297 10342 10226 10572 10186 10576 14720 14730 12384 12398 12403 12407 12405 12408 12442 12452 12450 12445 12446 12420 10194 14719 10220 10227 10225 10211 10228 10335 10286 10336 10356 10348 10248 10357 10341 10247 10346 12285 12308 12309 12295 12266 12296 12294 12290 12339 12340 12333 12334 12332 12291 12292 12293 12246 12378 12375 11981 12008 12009 12007 12013 12011 12010 12066 12067 12065 12130 14819 14869 11996 14915 14908 12146 14929 14863 11979 11984 14872 14925 14896 7897 7849 7898 7896 7967 7948 7593 7670 7671 7669 8007 8008 8009 8026 8027 8025 7693 7691 7654 8038 9296 9286 8039 8037 7997 7698 7696 7633 9092 9141 9142 7991 9297 9303 7755 7756 7677 9239 9085 9240 9120 9143 9139 9078 7592 7675 7643 9241 9242 9119 9160 9161 9156 9084 9162 7630 7645 7583 9312 9281 8014 8065 8067 8048 8049 8047 8013 8087 8088 8045 8046 8044 8012 8100 8101 8052 8053 8054 8004 8050 8042 7995 8003 8005 7983 7994 12261 12277 12265 12279 12281 12286 12287 12264 7939 7940 7892 7853 7825 7941 7942 7872 7874 7802 12383 12583 12578 12495 12476 12530 12528 12509 12496 12475 12545 12543 12859 12856 12249 10026 7846 11070 11085 7766 7927 7929 7796 10298 11039 10107 11024 10029 10070 10086 10105 10057 10098 10043 10096 10019 10054 10052 10285 10232 10201 10296 12467 12468 12464 12419 12469 12454 12465 12411 12428 12402 12429 12427 10347 10358 10359 10360 11320 12902 14722 12393 12437 12438 12415 12436 12466 12470 12418 12471 11334 11343 11338 11344 11342 11371 14713 10268 14784 10200 10236 10269 10267 10283 10361 10246 10362 10340 10245 10349 12304 12306 12263 12310 12312 12302 12313 12311 12341 12342 12301 12335 12336 12325 12298 12326 12324 12373 12369 12076 12024 12075 12077 12078 12079 12061 12068 12069 12020 12131 12132 12025 12101 12102 12100 12147 12148 12018 11995 12017 12019 12001 12000 7893 7877 7894 7882 7883 7884 7779 7969 7968 7689 7651 7688 7690 7681 7694 7695 8040 8041 8010 8068 8069 8043 7649 7699 7700 7998 7999 7977 8056 8057 8055 8460 8480 8483 9287 8113 9276 8222 8116 8220 8215 8118 8467 8464 8119 9304 9282 8163 8478 8479 9275 8130 8075 8076 8077 8085 8089 8020 8102 8103 8104 8081 8105 8091 8061 8080 8082 8022 8062 8063 8023 8024 8011 7982 8021 12240 12253 12278 12276 12297 12303 12252 12305 7943 7887 7855 7895 7891 7944 7801 12443 12396 12589 12577 12387 12350 12382 12585 12581 12862 12863 11077 7945 11078 7771 7786 7844 7946 7791 10215 11060 10071 11061 10025 10018 10037 10069 7762 11105 11103 10289 10363 10185 10364 12434 12453 12459 12472 12417 12455 12448 12447 12425 12449 12409 10365 10338 10219 10366 12413 11383 12414 12901 12900 12392 12473 12462 12391 12435 12433 11326 11357 11384 11350 11382 11372 11356 11325 11370 11377 14738 10294 14781 10199 10235 10295 10293 10350 10244 10367 12268 12262 12314 12315 12317 12299 12316 12318 12328 12343 12337 12300 12344 12345 12346 12347 12256 12366 12381 11994 12059 12060 12058 12085 12086 12087 12037 12088 12089 12121 12133 12129 12134 12135 12036 12149 12150 12048 11993 12049 12050 12041 12040 7800 7888 7886 7851 7878 7879 7868 7842 7885 7881 7960 7951 7591 7682 7683 7684 7666 7685 7662 7663 7664 7606 8058 8059 8006 8078 8079 8029 8465 8461 8134 8112 8219 8221 8030 7976 8031 8032 8145 8144 8146 8141 8142 8140 8164 8162 8157 8158 8156 8093 8094 8095 8019 8106 8107 8083 8092 8090 8018 8084 8071 8034 8064 8060 8035 8036 8000 7981 8033 12166 12269 12353 12167 12354 12258 12245 12267 7812 7856 7857 7821 12422 12395 12423 12421 12857 12861 12187 7758 7778 7787 7785 7813 7793 7811 7765 11084 8232 11113 11082 8459 11089 8231 10339 11069 8230 11093 12401 12460 12390 12461 12424 12426 12389 10284 10258 10198 10337 12895 11319 12898 12899 11333 11392 11398 12896 11337 11399 11388 11400 11359 11389 11378 11390 11351 11328 11318 11376 11947 14811 10351 14717 10197 10231 10352 12319 12257 12244 12320 12322 12243 12321 12323 12288 12329 12330 12251 12331 12327 12348 12349 12242 12376 12370 12104 12023 12105 12106 12095 12107 12103 12109 12110 12108 12120 12122 12035 12151 12152 12145 12124 12153 12034 11992 12047 12051 12006 12005 7777 7889 7890 7880 7776 7876 7841 7824 7843 7764 7949 7953 7686 7582 7687 7667 7607 7668 7650 7665 7661 7581 8463 8462 8117 7990 7975 8028 8017 8096 8097 8016 8166 8167 8165 8227 8225 8171 8155 8168 8169 8172 8170 7989 7974 8108 8109 8110 8098 8015 7970 7993 7992 7988 7973 8072 8070 8073 8074 8001 7980 7972 8002 12173 12174 12180 12188 12186 12352 12193 12363 7773 7820 7822 7757 12175 12165 12855 12858 8239 8474 8485 8272 8238 8477 8466 8269 8246 8244 8247 8245 10257 11112 8266 11065 12868 11332 11364 12892 11346 10214 10193 10184 10259 11349 11365 11355 11363 14715 11366 11386 11391 11393 11358 11397 11394 11401 11336 11395 11324 11396 11957 11532 11530 11974 11563 11566 14744 12172 12356 12205 12357 12171 12183 12358 12355 12230 12351 12360 12179 12361 12362 12217 12364 12359 12371 12377 11991 12056 12057 12055 12096 12094 12033 12111 12112 12032 12154 12155 12156 12136 12157 12031 12123 12125 12090 11990 12043 12091 12092 12093 8476 8287 8489 8475 8251 8473 8490 8431 8487 8472 8366 8486 8488 8339 8491 8481 8419 8469 8471 8338 8470 8482 8374 8468 8457 8452 8450 8174 8226 8217 8129 8139 8175 8176 8177 8173 8214 8216 8186 8115 8218 8223 8224 8122 12190 12181 12189 12191 12184 12192 12194 8237 8236 8484 8318 12176 12889 11317 12886 8248 8273 8255 8271 8254 8268 8270 8235 8252 8267 8265 11345 11068 8241 8302 11066 11339 11347 11335 11348 11361 11323 11362 11360 8229 11539 11591 14711 14790 11374 11353 11375 11373 11546 11567 11554 11565 11368 11380 11385 11387 11354 11331 11316 11402 11403 11965 11594 11541 11940 11548 11564 11562 12195 12206 12202 12200 12204 12207 12208 12209 12231 12232 12211 12218 12219 12220 12210 12216 12170 12368 12374 12114 12022 12115 12116 12071 12117 12118 12081 12119 12113 12158 12159 12030 12127 12137 12138 12139 12140 12029 11989 12042 12044 12004 12003 8253 8288 8286 8275 8276 8277 8234 8435 8434 8333 8367 8365 8350 8394 8395 8396 8420 8421 8349 8362 8363 8364 8375 8373 8332 8449 8446 8183 8184 8182 8178 8187 8185 8153 8128 8152 8154 8138 8137 12197 12198 12164 12196 8289 8278 8319 8320 12870 11321 11327 12890 8294 8293 8260 8295 8250 8301 8259 8303 11322 11315 11340 11341 8263 8249 8264 8262 11510 11406 11507 11502 11413 8240 11425 11501 11330 11506 11538 11619 14712 14800 11581 11590 11553 11592 11314 11369 11352 11367 11568 11582 11558 11583 11329 11313 11381 11379 11969 11531 11952 11970 11540 11585 11634 11537 11958 11552 11595 11593 12185 12199 12178 12201 12214 12215 12213 12233 12234 12225 12212 12226 12227 12228 12224 12182 12372 12379 11988 12053 12054 12052 12072 12073 12028 12082 12080 12027 12160 12161 12126 12098 12128 12026 12141 12142 12045 11987 12014 12046 12039 12038 8297 8298 8299 8284 8261 8285 8283 8440 8438 8343 8384 8385 8386 8393 8397 8357 8422 8423 8402 8401 8403 8376 8352 8377 8341 8453 8444 8127 8194 8195 8193 8197 8198 8199 8126 8191 8200 8201 8196 12222 12864 11312 12884 8308 8321 8258 8322 11513 11405 11512 11503 8309 8291 8257 8310 11412 8274 8307 8256 8311 11422 11486 11428 11509 8228 8281 8282 8280 11418 11429 11423 11427 14740 11426 11421 11410 11424 11536 11588 11550 14770 11472 11420 11504 11505 11612 11620 11551 11621 11409 11613 11602 11557 11614 11459 11411 11508 11511 11573 11615 11556 11611 11404 11960 11529 11963 11635 11560 11561 11547 11559 11569 11586 11545 11584 11626 11555 11636 12169 12221 12223 12203 12235 12236 12177 12237 12229 12238 12239 12168 12367 12380 12063 11980 12062 12064 12002 12074 12070 11986 12083 12084 12162 12163 12021 11985 12099 12097 12143 12144 12015 11978 11983 12016 11999 11998 8292 8296 8300 8305 8306 8304 8432 8441 8337 8387 8383 8356 8405 8406 8404 8424 8425 8355 8411 8412 8413 8348 8414 8415 8445 8451 8205 8206 8207 8189 8202 8203 8188 8125 8192 8190 8148 8147 11446 12873 12891 8323 8324 8313 11447 11445 11438 8325 8326 8290 11440 11448 11449 8243 8327 8317 11477 11485 11487 11535 14762 14787 11435 11478 11476 11570 11571 11572 11439 11473 11474 11589 11587 11578 11460 11461 11462 11622 11623 11596 11433 11458 11455 11624 11625 11607 11432 11434 11431 11617 11637 11638 11956 11961 11544 11618 11616 11601 11598 11599 11597 11627 11628 11417 12872 12871 11493 12865 12869 11514 12883 12866 11173 12897 12875 11132 12867 12879 11280 12885 12903 11131 12894 12888 11288 12877 12874 11130 12878 12880 11264 12893 12876 11115 11119 12887 12881 12882 8314 8315 8242 8439 8437 8407 8347 8408 8409 8399 8410 8354 8418 8426 8416 8379 8417 8389 8390 8391 8336 8455 8456 8124 8160 8208 8209 8180 8210 8211 8123 8149 8212 8213 8204 11482 11483 11484 8316 8312 8279 11488 11489 11490 8328 8329 8233 11480 11491 11441 11576 14721 14751 11471 11481 11479 11577 11575 11534 11464 11475 11467 11579 11580 11549 11456 11463 11465 11608 11609 11610 11442 11457 11451 11600 11606 11543 11443 11444 11419 11629 11639 11633 11973 11959 11604 11630 11631 11542 11533 11603 11605 11632 11574 11494 11495 11408 11516 11526 11117 11174 11175 11155 11191 11192 11193 11281 11282 11154 11225 11226 11224 11289 11290 11153 11222 11223 11221 11265 11266 11147 11129 11146 11148 11138 11137 8433 8442 8335 8360 8361 8359 8369 8400 8398 8427 8428 8353 8380 8381 8358 8345 8392 8388 8447 8454 8161 8131 8159 8143 8181 8179 8150 8114 8121 8151 8136 8135 11496 11497 11430 8436 8443 8370 11498 11492 11416 11746 14768 14716 11437 11499 11500 11740 11742 11654 11468 11469 11415 11737 11745 11650 11436 11470 11466 11739 11738 11691 11452 11453 11414 11731 11734 11649 11454 11450 11407 11744 11732 11714 11977 11976 11730 11741 11735 11648 11644 11743 11736 11733 11653 11519 11527 11134 11157 11172 11176 11213 11212 11214 11283 11284 11244 11245 11246 11171 11291 11292 11241 11242 11243 11170 11267 11268 11187 11128 11188 11189 11180 11179 8331 8368 8371 8340 8372 8351 8429 8430 8382 8334 8378 8344 8342 8346 8330 8448 8458 8120 8111 8132 8133 14794 14758 14753 11748 11751 14757 14792 14750 11520 11525 11234 11643 14755 14745 11528 11524 11127 11662 11663 11664 11517 11515 11206 11673 11674 11672 11523 11522 11126 11670 11690 11692 11521 11518 11201 11696 11697 11695 11955 11954 11953 11713 11715 11709 11676 11966 11717 11718 11719 11720 11661 11721 11716 11722 11723 11152 11235 11236 11233 11237 11169 11285 11286 11168 11301 11302 11303 11304 11305 11167 11263 11269 11270 11231 11271 11166 11125 11190 11186 11142 11141 11686 14767 14727 11651 14797 14775 11931 14783 14756 11768 14805 14714 11818 14814 14774 11766 14728 14779 11857 14731 11772 11765 11771 11773 11770 11769 11198 11199 11197 11687 11685 11655 11151 11205 11207 11688 11689 11665 11195 11196 11194 11693 11694 11681 11116 11200 11202 11704 11705 11706 11951 11950 11642 11671 11710 11711 11658 11677 11678 11724 11725 11726 11666 11675 11679 11727 11699 11248 11249 11250 11228 11287 11279 11306 11307 11165 11308 11309 11272 11254 11273 11164 11230 11232 11208 11124 11182 11209 11210 11211 11656 11657 11641 11925 11926 11750 11786 11787 11785 11797 11819 11820 11821 11817 11802 11858 11856 11790 11764 11791 11792 11789 11788 11251 11252 11163 11682 11683 11684 11203 11253 11247 11669 11680 11647 11133 11204 11156 11668 11707 11703 11946 11949 11652 11712 11708 11646 11640 11659 11660 11667 11728 11729 11700 11701 11702 11698 11645 11229 11227 11162 11293 11310 11300 11274 11311 11161 11239 11255 11256 11257 11258 11160 11123 11183 11181 11140 11139 11924 11929 11877 11801 11878 11879 11851 11880 11881 11882 11883 11863 11864 11865 11826 11763 11827 11828 11823 11822 11294 11295 11296 11930 11935 11762 11297 11298 11150 11932 11934 11906 11942 11944 11923 11927 11921 11761 11767 11928 11936 11939 11938 11901 11813 11933 11937 11922 11760 11219 11299 11159 11275 11276 11238 11216 11240 11158 11259 11260 11184 11122 11143 11185 11178 11177 11839 11840 11838 11852 11850 11811 11884 11876 11810 11866 11867 11809 11759 11829 11825 11781 11780 11121 11220 11218 11800 11907 11908 11968 11943 11749 11836 11837 11835 11783 11784 11782 11799 11902 11903 11796 11814 11815 11812 11816 11277 11278 11149 11120 11217 11215 11261 11262 11144 11114 11118 11145 11136 11135 11848 11909 11910 11911 11912 11894 11874 11895 11896 11758 11845 11897 11898 11899 11962 11941 11886 11849 11847 11808 11798 11887 11888 11854 11904 11900 11889 11890 11853 11855 11807 11972 11971 11757 11967 11945 11831 11747 11975 11964 11948 11752 11913 11905 11806 11875 11873 11805 11756 11846 11844 11779 11778 11832 11833 11834 11891 11914 11915 11868 11892 11893 11885 11804 11794 11830 11824 11755 11775 11774 11793 11795 11869 11916 11917 11754 11842 11918 11919 11920 11860 11870 11871 11872 11803 11753 11861 11859 11862 11843 11777 11776 11841 8700 8198 8189 7701 7687 4861 7655 5371 7693 4835 7656 7126 7087 6535 6494 5964 5924 5923 5369 7692 8699 8197 7679 5372 7653 8186 7669 6497 7684 7674 7668 7085 6537 6492 6495 5921 7096 7090 6502 5922 5373 5374 5375 8702 8201 8701 7695 7117 7694 7686 7112 7685 6493 5926 5927 5398 5928 8185 6536 6527 6534 6501 7654 7652 8199 7665 8200 6500 5925 6503 8187 7667 8188 6496 7107 7091 7088 7089 7124 7125 7098 7664 7666 7092 7670 7671 7093 7084 7086 7097 6499 5955 6498 7094 7095 7672 7673 10598 10199 9693 9195 8203 7729 7696 10194 7676 10155 9737 9706 9223 8724 8715 8227 8218 7688 10193 7680 8716 8225 10594 9684 8210 9695 8719 8207 8209 8206 8208 8214 10192 9211 8223 10159 9214 8720 10156 9708 9224 8725 8730 8217 9702 9221 9219 9215 8733 10196 10162 10195 10597 10164 10596 9213 9207 9212 10157 9698 10151 8726 8251 8727 8224 7689 8222 9697 9694 9696 8216 7681 8215 8732 8734 8735 8737 8219 8736 9226 8753 9225 9228 8729 9227 8728 8213 8731 8721 10158 9222 9217 9220 10160 9699 10161 8722 8711 8723 9700 9209 9701 9218 8712 9208 9210 9216 9704 9250 9703 9705 9707 9736 10163 8212 8205 8211 8713 8221 8717 8718 8220 8202 8204 7697 8226 8714 7119 7108 6508 5950 5384 4860 4849 7106 4850 7114 6528 4859 4854 4322 4312 7105 5390 7118 4313 5938 5397 7111 6531 6514 5957 5949 4873 4868 7110 6516 7109 6530 6524 6529 5952 5411 5951 4875 4872 4874 6517 5963 5409 4870 5389 7116 5941 4864 5958 5405 5401 4316 4869 4871 5391 4855 5388 4878 5392 7115 6520 7113 6513 5944 6512 5410 5396 5408 4857 5393 5394 7121 6521 7120 4318 4876 4877 4866 6519 5406 5404 5407 6515 5945 6518 4867 4317 4865 6523 5946 6522 5961 5956 5962 5948 5943 5947 5395 5402 5403 5937 5942 5959 5960 6532 6533 7157 7099 5933 4907 3748 3703 3688 3105 7156 3118 6567 5996 4900 4846 4292 3114 7155 3704 4904 6510 5386 3747 3693 3110 5935 5439 4341 3697 7101 3705 4902 6505 5381 4279 4280 3695 5995 4847 4293 5377 4843 4289 7158 6566 6569 3706 3113 3699 7102 6565 7100 6506 5998 6568 5994 3700 5936 5929 5934 4343 4340 4342 3698 3691 3696 5997 5442 5931 4294 4287 4291 4282 3744 4281 6507 5930 6504 3702 3109 3701 5382 5438 5932 4283 4288 4290 5378 5440 5441 4841 4845 4848 4901 4284 5379 4838 5376 4286 3692 4285 4903 4344 4837 4839 4840 4842 4844 5380 5383 5385 5387 5940 6509 7104 4297 6511 7103 5939 4851 4852 7700 7123 4862 7675 7682 7122 7690 7683 6525 6526 7677 7678 5953 5399 5400 5954 7699 7698 7691 4308 4301 3101 3076 2505 1373 596 551 316 4306 4295 3100 927 211 3722 4305 3730 3136 3122 2543 2537 2533 2529 1956 1412 547 3708 3093 917 371 3725 3724 545 2548 1923 540 4299 3130 2541 2511 1376 960 913 598 589 2525 3102 3103 4302 3713 4300 1375 1369 1374 2524 2523 3712 1370 372 3723 3728 587 3124 1918 3121 2544 2531 2527 1957 1413 1954 1944 1940 1410 1400 957 955 375 373 374 3718 3134 3729 597 595 599 3133 2526 1942 2522 4304 3715 4303 912 914 915 3129 3075 3128 2510 1939 2509 3727 3717 3726 3135 3131 3132 3716 3125 3711 3707 3126 3714 3120 2549 3127 2545 3123 2540 3116 2546 1962 2539 1958 1917 588 369 1372 1414 2535 1953 2542 1943 1402 1941 592 593 594 1415 965 1408 1949 2536 2538 1946 2528 2530 1959 1418 1952 1920 1399 1919 591 368 590 1405 952 1950 1409 1948 1951 1955 1406 1404 1407 919 950 1371 2532 951 953 954 956 958 959 961 962 1401 1403 1411 1945 1947 2534 3063 905 305 158 3074 890 904 888 3069 2482 1902 1891 1356 1347 533 907 2492 300 310 526 3070 3062 1900 900 2463 311 317 2478 1354 1889 903 1343 2474 2471 1892 1884 1880 1876 1351 1337 897 892 536 532 529 3066 3065 2466 3064 313 301 312 1357 1350 1355 2480 2477 2479 3072 2468 3071 3068 2467 3067 314 2481 1894 1342 2462 2469 2470 534 315 535 1881 1888 1893 1886 2472 2473 537 543 906 1882 1348 1883 1890 1885 2475 2476 3073 539 528 538 1879 1341 1887 530 523 531 1340 1344 1345 522 521 524 1877 2464 2465 891 887 893 1875 1338 1878 896 895 898 1336 894 1339 1346 1352 899 901 902 1353 1901 1903 3667 4275 2494 2483 1359 963 909 4829 3663 4831 4264 3686 3671 3090 1898 1364 4276 1960 1905 1362 4827 3683 3081 2504 2497 2488 1367 2498 1908 2496 1368 1349 1366 4828 4272 1909 1895 4263 4262 4278 1897 3672 3088 4271 3678 3085 2491 1915 1906 1910 1911 3719 4265 4277 4266 1899 1416 1896 3669 4267 4268 2489 2486 2490 1363 3684 1912 1913 1914 4274 3680 4273 2484 2485 2487 3685 3662 3682 2502 2499 2500 2501 2503 3080 4269 4830 4832 3082 3083 3084 3674 3679 4270 3677 3078 3086 3087 3089 3673 3675 3676 3681 3092 1904 2495 3665 1358 908 1361 3666 1360 1365 1907 2493 3091 3664 1417 3079 1961 2547 964 1419 541 3077 1963 2550 3721 213 910 318 911 4307 319 3668 3670 4309 542 3720 966 4863 4320 4856 4319 4296 4321 4298 4858 4315 5370 4836 3710 3709 4853 4834 4314 3119 3117 3115 3112 3111 3108 3107 3106 3104 4833 3687 4310 3694 4311 4348 4057 3441 3149 1984 1928 928 4055 3440 921 4350 3766 3759 3164 3161 3156 2563 1438 4048 3157 981 4354 3094 1436 1385 3443 3171 3150 2578 1989 1986 1925 1442 4056 3447 4053 3152 2564 3151 3444 2567 3158 1377 4352 1439 3768 3166 3154 3758 2581 1993 1380 1378 1379 4345 3762 4353 1926 1446 1927 2516 2565 2566 3446 3172 3445 1441 978 1440 3155 2577 3153 3767 3753 3765 1985 1987 1988 3754 3755 3756 3760 4349 4351 3752 3162 3757 3167 3749 3761 3169 2574 3168 3165 979 2583 2579 3170 1444 1443 1445 2582 1976 1990 1991 1992 1994 1995 2576 2580 3437 2950 2572 1274 970 2371 1785 2570 1271 608 2370 2956 2840 2343 1432 825 601 1787 2569 973 3435 2949 1266 2369 2953 1978 1264 975 604 2568 971 2955 2345 2838 2340 1433 819 2354 2351 1794 1788 1763 1758 1750 1230 972 603 605 1793 1790 1792 481 606 607 772 2373 2372 2571 1981 2239 2952 2348 2951 3438 2836 3436 976 969 974 2339 1789 2374 824 818 823 1752 1265 1791 1226 2240 1263 1261 1262 2841 2835 2839 1751 1227 1753 2834 2238 2837 1228 1229 1231 2237 1979 2241 1754 2341 2342 1760 1977 1980 1756 1755 1757 1761 2352 2353 1759 1430 1431 1434 1762 2347 2344 2346 2349 2350 2954 2957 1982 2842 3163 2575 1435 3159 1437 3439 2573 3160 977 3442 980 920 1983 4753 7563 6357 4153 7562 4183 4754 7558 6975 6373 5791 5778 5252 4722 4185 6986 5809 4713 5240 6970 6370 6359 6981 5779 6977 5788 5249 4719 4717 6364 5782 5243 7565 7555 7564 7556 6980 7557 6969 6982 6983 6369 4755 4756 6358 6360 6361 4721 4718 4720 6979 6366 6978 4714 5241 5242 6372 6368 6371 4715 4152 4716 5787 5247 6365 5784 6367 5246 5244 5245 5790 5786 5789 5780 5271 5781 6362 5248 5250 5251 5783 5785 6363 6974 6976 3569 6378 5805 4632 4047 2946 5172 2968 3571 5795 5260 4731 4158 4043 3558 3554 2942 3570 3541 3542 5173 6376 4045 2943 5723 5801 4628 4164 3548 3543 5171 5796 4173 5269 5262 4732 4151 4169 4162 5265 5259 4741 4730 4726 4167 2970 3544 3545 3550 3547 3549 3553 4156 4157 5174 4630 4742 6377 5799 6379 4733 4725 4734 4627 4626 4629 5804 5800 5803 5267 5798 5802 4174 4163 4744 4738 4743 4159 4165 4166 4175 3560 4172 4160 3552 4161 5264 5268 5270 4728 4735 4736 5263 4739 5266 4727 4168 4729 4740 3555 4170 4171 4737 5257 5255 5256 5258 5261 5794 5797 6374 5793 4184 4724 4723 5254 5253 4150 4155 6375 5792 4154 4631 2945 4046 3551 2969 4633 3559 3557 4049 3556 4044 3546 2948 2947 2941 2944 3561 4050 816 15 94 24 34 813 14 474 464 274 258 131 114 55 26 35 22 468 11 37 5 3 38 27 36 23 2 21 817 473 56 52 39 4 262 273 259 130 115 268 266 136 126 121 51 48 44 470 467 469 6 1 7 260 118 256 277 271 276 471 263 472 25 40 41 264 42 275 134 265 119 261 8 43 45 124 133 135 123 57 125 112 116 117 10 127 270 272 120 46 122 47 9 12 13 49 132 50 53 54 128 129 267 269 475 1258 826 561 462 194 1260 560 192 837 832 479 343 252 188 108 563 91 812 254 820 834 828 476 460 185 829 483 827 484 340 85 497 251 830 182 107 489 291 281 140 137 562 376 552 193 190 191 339 84 839 492 838 461 288 463 833 487 831 342 278 341 109 86 106 477 279 478 187 83 189 181 141 493 488 280 282 283 250 110 253 494 285 491 835 836 139 138 142 183 184 287 284 286 289 290 482 485 486 490 495 496 111 465 466 815 257 113 814 92 33 93 1259 255 520 559 323 102 29 18 557 209 101 60 518 332 327 303 298 167 159 145 58 519 307 548 30 321 63 296 324 171 149 105 61 336 320 152 169 146 177 81 77 72 67 104 69 103 558 333 556 160 165 322 65 20 64 309 156 308 335 163 32 297 155 331 174 334 326 180 325 70 62 71 150 162 164 73 166 168 178 144 143 173 68 78 175 176 337 338 151 66 147 148 157 153 74 75 76 79 80 82 154 170 172 179 3095 2519 1916 931 346 328 98 97 2512 88 1393 932 564 361 358 206 2507 195 208 1934 1382 566 353 2514 937 364 352 196 197 198 2515 1929 2513 201 362 202 363 366 1930 349 1936 1389 573 576 935 569 584 1398 949 578 365 203 357 2521 1938 2520 938 936 939 934 924 933 344 350 351 1932 1924 1931 575 568 574 1390 1394 1937 1391 571 944 582 1392 940 1383 579 577 580 1395 1388 1396 586 359 585 583 354 553 570 572 581 945 941 942 943 946 947 948 1397 554 205 207 330 555 99 90 100 204 186 329 28 356 348 95 360 16 567 200 565 355 87 96 19 59 347 17 31 199 345 89 3098 1386 3099 1269 2517 1786 1387 930 929 1272 1273 1270 1268 1267 923 922 2518 822 821 1933 602 600 1935 480 4905 926 3097 3689 3096 2506 925 544 1384 3690 1921 3746 3750 2508 918 1381 549 889 1922 550 546 916 527 3745 525 370 367 306 3751 304 302 299 212 4347 210 161 4346 4906 6645 6066 4971 4452 4433 3862 3858 6644 4426 6087 6079 5524 5515 4995 4982 3875 4429 6642 6067 3874 4967 3864 5536 4986 4968 4455 3884 4436 4434 4435 4431 4970 4438 4969 4440 6086 5517 4446 5525 4996 4981 5532 5007 5003 4989 4465 4441 4430 4439 6643 6080 6646 4983 4442 4980 4444 6065 5534 6068 4454 4456 4457 3867 4443 4445 4997 4987 4993 4448 6085 4449 3866 4447 6077 5535 6088 4988 4462 4990 5530 5513 5537 4464 4463 4466 5531 6078 6081 4979 4984 4985 5522 5006 5533 5001 5002 5004 5005 5008 5514 5516 5523 5526 7724 7226 5444 4999 4921 4374 4051 7719 4998 3763 7164 7150 6573 6564 6009 6002 4930 4910 4355 7720 4925 4358 7726 4909 4365 5459 5450 5446 4919 4357 3774 4356 4359 5448 4912 5447 4915 7722 5462 7162 6574 6577 6011 6003 5454 6016 6006 4362 4913 4914 7721 7151 7225 4917 4916 4918 7723 7152 7725 7154 6647 7153 6578 5452 5457 5460 5461 6005 6000 6004 7163 6582 7159 5455 4924 5456 6579 6082 6580 5453 5449 5451 6012 6575 6581 6008 5458 6007 6014 5527 6013 5464 4926 5463 6010 6015 6571 6576 4992 6649 7221 6083 7227 6084 6648 5529 5528 9757 9251 8776 8248 7766 7223 6631 9743 9274 8289 8244 7217 6652 8760 8788 7782 7228 6091 9751 8245 9257 8295 7789 7234 6658 6660 6656 6659 6655 9741 8303 9275 8785 7779 8756 7229 8796 8791 8300 8297 7784 6090 6654 6657 8789 8290 8787 7783 7218 7781 6651 7230 7231 7232 9742 9273 9739 8758 8755 8757 7235 7213 7233 9756 9279 9755 7791 7787 7790 7214 9269 7778 7777 7780 8784 9276 9277 7793 7792 7794 8783 8286 8786 8298 8293 8299 8792 9255 9278 8794 8285 8294 8296 8793 8301 7786 8302 8790 8795 9254 9256 8275 6635 6589 5502 4973 6633 6025 4963 7774 7770 7760 7202 7199 7167 6071 6050 5500 6636 6585 4977 8274 5505 7758 7206 6640 6617 6613 6053 5511 5509 6590 6587 6588 7166 4976 4975 4978 7165 6584 7168 6616 5507 6637 7775 6055 7771 7197 7203 6049 6046 7211 7193 6629 6627 6621 6611 6063 6061 6638 6070 6073 6074 6618 6583 6615 5510 5496 5512 8276 7755 8277 6056 5520 6054 7772 7209 7768 6051 6017 6048 6641 6619 6639 7200 7195 7198 6076 5519 6075 6057 6620 6622 6623 7201 7204 5506 6052 7754 7207 6608 6062 7190 7756 7757 6044 6058 6059 6060 6064 6624 6625 6626 7205 7208 5497 6045 6047 7191 7189 7192 6628 6607 6609 6610 6612 6614 6630 7194 7196 7210 7212 7759 7761 7773 7776 8291 7219 6632 8288 8287 7220 7215 7767 7216 7769 8292 5504 7222 6634 7224 6093 6092 5501 6650 4437 6072 6069 7788 7785 5518 8246 5521 4972 6653 6089 8247 5503 5508 4974 4379 4372 3201 2048 2006 1493 4376 2046 3794 3784 3190 2621 2602 1998 1492 1461 1453 1013 997 4375 2045 4366 2620 1460 1031 3204 2596 2014 2009 986 4370 1496 3783 3181 1463 1014 3189 2601 1451 1059 1447 3185 2598 4378 3795 4377 2047 1490 2040 1494 1489 1495 1016 1488 1491 1012 984 1015 1449 1452 1454 1448 983 1450 1465 3786 3203 3205 3206 2008 2010 2011 3785 3775 3781 1999 1996 1997 3796 3779 3792 1466 996 1464 4371 3780 4373 2012 2013 2015 3188 3182 3782 2597 2594 2599 3186 3174 3191 2600 2584 2593 2603 3183 3184 3187 4460 4458 3279 3268 2586 2043 4459 2042 3877 3871 3178 2677 2086 2002 4450 1535 3278 3264 2001 3869 3282 3269 2589 2095 3881 1537 3277 2680 2089 3179 3273 2687 2093 4461 3878 4368 2087 2084 2085 3879 3272 3275 3280 2588 2590 2591 3883 3286 3882 3270 2682 3271 3180 2683 3176 3777 3285 3880 2679 1534 3276 2689 3274 2091 2090 2092 2681 2674 2678 2685 2684 2686 2688 2088 2094 2096 2690 3287 3281 3283 3284 3288 3870 3872 1533 2587 4367 1536 2041 3778 3177 2044 2000 2003 2585 3776 4369 3175 1532 3854 6591 6037 6021 5465 3248 2673 2049 3852 6033 3246 2050 3267 6031 4954 4931 4413 4387 3835 2653 2649 2644 2640 2634 6034 2637 3263 4965 3245 2636 5489 6019 5478 5476 5471 4952 3805 3220 6023 5475 6022 5473 6035 2641 3219 4935 3244 3216 6029 4411 3833 4385 3241 3237 2643 3222 4950 4942 4938 4407 4402 4400 4398 4394 3829 3826 3823 3821 3816 3813 3231 6039 5486 6038 6036 5485 6032 5484 3807 3804 3806 5466 5467 5468 4414 4409 4412 3247 2654 3243 2645 2059 2642 3223 2630 3221 5487 5481 5488 3215 3217 3218 6030 5483 6027 5479 3811 3234 3227 4388 3808 4951 4945 5482 3238 2646 3236 5480 4944 5477 4386 3851 4384 4933 3832 3240 4404 4940 4395 3822 3828 3830 3831 3834 3836 3232 3818 3824 3239 2650 3242 3810 3226 3809 4943 4946 4947 3812 3229 3233 3235 3825 3827 5472 4939 5469 5470 5474 3820 4405 4406 4408 4410 3817 2638 3228 3230 3819 4948 4401 4949 4953 4955 4389 4390 4391 4936 2632 3224 3225 3814 3815 4392 4393 4396 4397 4399 4403 4425 4932 4934 4937 4941 2675 3265 2629 2676 2635 3855 2051 2628 1507 2639 2631 2633 2052 3853 3266 4920 4964 6018 3861 6028 4383 6586 4994 4927 3860 4432 4428 3863 6024 4929 4928 4923 6592 5000 4922 4991 3876 6020 6026 4451 3868 5498 5499 3873 3857 3859 4966 4427 3856 6593 4453 3865 2926 2861 1721 1668 750 649 418 2860 417 2333 2329 2320 2316 1664 766 758 2859 415 2924 1665 1205 747 755 2327 2253 1724 1220 1200 2862 2256 2337 1726 1723 1725 2252 1727 763 2321 752 754 2334 2330 2317 760 1741 1738 1733 1217 1214 2255 1748 2254 768 765 767 1747 2927 2324 2928 1202 1199 1201 2318 1730 2314 2336 1744 2338 756 746 753 1223 1745 1749 1221 1206 2322 1208 762 1219 1222 1729 1203 1728 761 414 764 1216 1743 1746 1215 1212 1218 1740 2332 2335 1739 1736 1742 1735 1211 1737 2323 1731 2319 2325 757 1207 1209 1210 1213 1732 1734 2326 2328 2331 2662 2054 1530 1192 1028 646 378 1190 377 2658 2078 2065 2061 1057 1046 1022 650 748 628 2661 1529 1025 1504 625 2076 2053 1039 744 643 631 1193 743 1191 648 642 647 632 629 630 1053 1017 1018 2659 1528 1023 1501 2066 2062 1056 1047 1049 2070 1524 1517 1510 1499 626 1019 1020 2663 2073 2664 1503 1497 1502 1058 967 1055 1050 1044 1048 1024 633 1021 1531 1426 1526 1035 1498 1500 1508 2055 2056 1033 1052 2067 1038 1509 1036 1511 742 1051 1054 2068 1513 2064 1037 644 1032 1034 1040 2063 1512 2060 1525 1522 1527 1514 1515 1516 2074 2077 2079 2656 1043 1518 1519 1520 1521 1523 2069 2071 2072 2075 2660 1041 749 751 1045 1198 627 745 416 419 645 1204 1042 413 759 420 4692 4680 4129 2921 1428 4679 1420 4117 4111 3501 2916 2902 2300 1717 1711 1422 1197 4681 1187 2918 4690 3521 4126 4124 2309 4694 4121 4693 4122 4115 1188 2915 3518 4118 3502 2903 2301 1719 1712 1706 3512 3508 2908 2905 2303 4682 4112 4674 1423 1189 1421 4113 1707 3520 3516 3519 2904 2891 2898 4119 3506 4116 1709 1196 1708 4130 3515 4128 4104 3505 4114 1694 1710 1713 1714 2914 2299 2306 2917 2312 2912 3514 2911 3517 3511 4125 4127 2311 2308 2310 2302 2284 2295 3507 2304 2906 3503 3509 3510 4120 4123 2298 2296 2297 1718 1715 1716 2305 2307 2899 2900 2901 2907 2909 2910 2913 3496 3504 3513 6960 6327 5215 4711 4696 4688 3524 3471 2938 6958 3523 2864 6349 5773 5761 4078 3527 2934 6940 4134 3467 5777 2935 4684 4649 4132 5223 5234 5228 5218 4708 4699 4076 3532 3472 3469 3470 3466 4077 3539 4079 3538 6355 4136 5772 5220 4147 4701 5762 3529 5768 5230 4704 4141 3540 3465 3536 6959 6350 6956 5224 4685 5222 5221 5217 5219 5764 5759 5763 6347 3535 4712 4144 4710 4702 4698 4700 4138 3526 4137 6351 5765 6352 2931 3534 3537 5766 5225 5767 4149 4145 4148 5769 6353 6354 4143 3531 4146 5770 5229 5771 3530 2930 3533 5231 5226 5232 4139 4140 4142 5233 5236 5774 4706 4133 4703 4705 4707 4709 5235 4131 4697 4695 4689 2922 3525 4135 4683 3522 4691 4687 4686 5227 1427 2933 1722 2919 2920 3528 2940 2939 2937 2925 3468 2863 2313 2929 1720 968 2936 2315 1195 1194 1429 2923 2932 8089 8082 7535 6984 5740 5178 4651 4645 8088 5238 5726 4081 7530 6936 6381 4662 8087 8086 5191 5727 4655 6382 7566 4648 6988 6324 6319 5736 5182 4654 4653 4656 6990 6931 6989 5729 5179 5728 5192 5196 6933 5183 8083 7527 4660 6937 5731 7533 7531 8090 8085 7529 8084 7526 6939 7532 6935 7525 7528 6932 6326 6938 6322 6320 6934 5739 5735 5738 5184 5181 5185 5194 5730 6323 4657 5187 5195 5734 5186 5188 5189 5732 5733 5737 6325 4637 4092 4083 3452 2866 1663 4636 2258 4641 4062 3448 2850 2270 2266 2262 2868 4091 3474 1690 4059 4061 4640 4086 4074 4072 2274 2249 3459 2849 2272 2874 2870 4089 3475 2248 4067 3482 3479 3463 3461 2881 2857 2855 4060 3451 4058 2275 1688 2273 4094 3485 4093 4087 3477 4085 2250 2243 2251 4638 4069 2871 2261 2869 4071 3458 4070 2872 3478 3480 4066 4642 4643 2873 2265 2875 3457 2876 3460 2854 3455 3483 2879 3481 4065 3454 4068 2878 2269 2877 3453 2848 3456 3484 4088 4090 2847 2244 2851 2277 2880 2882 2276 2856 2858 2883 3486 3487 3464 1689 2278 2279 2884 2885 3462 4073 4075 4659 4661 4647 4646 4639 4658 4082 5180 5177 4644 3789 3770 2843 2034 1684 1670 1170 640 3797 1673 637 3799 3214 2617 2036 1678 1457 1175 993 423 381 639 618 1674 3803 2033 3199 2246 1485 770 3787 2845 2615 1681 1483 1172 421 617 1675 3801 2032 3196 2623 1486 735 2037 1679 991 1176 611 3192 2610 2608 2028 2022 2020 1481 1477 1471 1469 1185 1181 1010 1008 1004 740 623 621 638 615 634 3769 3212 3802 614 3211 2846 2627 2844 1686 1487 1685 1178 1174 1177 994 989 992 3800 3208 3798 1676 1179 1671 379 613 616 3213 3173 3207 2624 3209 3210 3193 3788 3790 2625 2016 733 1002 2626 2242 2604 734 412 732 3194 2605 3195 2039 1659 2038 988 736 2616 1482 1184 2025 2021 1470 622 741 1180 1182 2612 2029 2613 2614 2618 1183 999 1186 1677 1680 737 1171 1173 1005 2026 1458 1455 1456 2607 2017 2606 3197 1474 2024 2027 2609 2611 3198 1467 1473 2018 2019 2023 1000 1468 1472 1682 1683 1006 619 1007 609 620 624 738 739 1001 1003 1475 1476 422 610 612 987 990 1009 1011 1478 1479 1480 1484 2004 2030 2031 2035 2245 2247 1661 3449 2263 2268 1687 3450 2259 2852 1662 3772 3771 2267 2264 1691 2853 1660 2271 425 5237 4084 4652 4080 3476 5239 5193 3473 2865 2257 2867 2260 5775 1669 6942 1672 7536 635 1667 1666 1225 1224 5190 771 769 6941 7534 4650 6329 6328 636 424 1027 1026 5776 380 3249 2622 2655 2648 2647 4064 3791 3793 2652 1506 2592 2058 2595 4380 2005 2057 1029 1505 2007 3250 3200 2657 1462 2651 4364 1030 4382 985 3773 995 1459 4363 3202 998 641 4381 982 4063 2619 10197 9740 6985 6987 9738 6572 6570 5175 8250 5176 6380 4635 6001 4634 7568 7567 5999 5725 7727 5445 5443 5724 6321 4052 6383 4361 8759 7160 9253 10198 4360 9252 3764 6318 4054 8249 4908 7161 7728 4911 8754 5689 5151 4623 4032 5162 4028 3601 3428 3010 2408 2392 5161 4029 4615 4207 5152 3595 3004 2992 1820 1814 4622 4035 4612 4041 3431 3008 2236 5163 4620 5160 4613 4610 4611 4625 4619 4624 5154 4618 5153 4621 4037 4039 4038 3429 4036 3433 4040 4042 3432 2832 3434 3598 3597 2995 3596 2410 3005 3009 2393 2394 2395 2996 2409 1823 2405 2994 2831 2993 3600 2398 2997 2998 3599 2396 1811 2397 2400 2399 2401 2406 2402 2407 3001 2999 3000 3007 1817 2403 2404 3002 3003 3006 6273 7059 6902 5703 5165 4223 4213 3607 6297 7053 6466 5707 5343 6905 5709 3613 6296 5710 5167 5708 6298 5704 6295 5166 7056 4220 4224 4225 4216 4217 5328 4221 3610 4222 4218 4214 4219 5897 4800 6903 6465 6457 6299 5889 5883 5334 5340 5344 5345 7055 7051 7054 6301 5713 6300 7057 6463 6467 6468 7058 6867 6304 6900 6901 6904 5330 4785 5329 5711 5712 5333 5884 5885 6302 6303 4788 5331 5332 4797 4799 4792 4795 4796 4798 5336 4791 5335 6906 6462 7052 4789 4783 4786 4787 4790 4793 4794 5891 5894 6460 6461 6464 5341 5337 5338 5339 5342 5886 5887 5888 5890 5892 5893 5895 5896 6458 6459 6907 6908 4215 4782 5168 4210 5705 4784 4208 3608 5164 3612 5706 3605 3609 3603 3602 3606 4211 3611 4212 3604 4209 10121 5913 10077 7060 5903 10125 5917 9665 9604 9178 8682 8670 8168 7635 7075 6484 5909 10117 6469 10123 10122 6486 6485 7628 9180 9179 8170 8169 6472 6473 6474 7063 7064 7065 9669 10118 10124 6487 6481 6488 7077 7076 7068 9171 8161 6475 10115 9177 8681 8167 7634 7074 6476 5906 6477 7066 7067 10120 9664 10119 6480 6478 6479 9656 9657 9658 8673 8674 8675 8684 8683 7079 7072 7078 6482 5912 6483 7069 7070 7071 7073 7627 7623 7626 10076 9661 10072 10075 10116 7631 7629 7630 7632 7633 9662 9174 9659 9660 9663 8160 8156 8159 9176 9172 9175 8164 8162 8163 8165 8166 8686 9181 9182 9666 9667 9668 8172 7636 7637 7638 7639 8171 8676 8677 8678 8679 8680 8685 9166 9169 9170 9173 5361 1839 5351 2411 5365 1843 5357 4816 4801 4241 3629 3614 3026 2426 1835 1829 5363 5362 2428 2427 5354 4243 4242 2414 2415 2416 4820 5358 5364 2429 2423 2430 3631 3630 2419 4231 3016 2420 4812 4240 4232 3628 3025 2421 1832 2417 2418 2422 2424 1838 2425 4804 4805 4806 3617 3618 3619 5356 5352 5355 5350 4809 5346 5349 5353 4818 4817 3019 3023 3020 3024 4239 4235 4238 3022 3011 3014 3015 3017 3018 3021 4234 4807 4808 3621 3620 3622 4226 4229 4230 4233 4813 3633 4244 4245 4819 5360 3027 3028 3029 3030 3623 3624 3625 3626 3627 3632 4236 4237 4810 4811 4814 4815 5359 5902 5911 5910 5904 5916 5907 5901 5905 5914 5915 5898 5908 7062 3616 1826 4227 4802 3013 5348 3615 7061 6471 2413 2412 3012 4228 6470 5899 4803 5347 5900 8598 10515 10497 10033 9561 9108 8037 8597 10061 9091 8058 7501 10509 9562 8594 8573 10503 10045 9592 8056 8027 9111 8593 10057 9580 9087 9073 8569 8600 8057 8059 8060 8599 8592 8595 8596 8033 8031 8032 9566 9567 9568 10508 10501 10507 8038 7486 8039 10513 10055 10062 10063 10514 8575 8561 8567 8568 8574 10496 10051 10492 10495 10502 9086 9079 9085 9092 9093 10043 9586 10049 10050 10056 9574 10037 10038 10039 10044 9578 9584 9585 9590 9591 8557 8590 8591 9579 7518 8054 8055 8562 8563 9069 9074 9075 9080 9081 9109 9110 9572 9573 6899 10518 10498 7473 6897 6893 7489 10510 10042 9595 9072 8578 6889 6894 8024 10504 10066 8042 7476 7474 7475 8025 8023 8026 9575 8558 7479 10060 10054 9090 9084 8036 10048 10046 10047 9078 9076 9077 7478 6890 7477 10065 9593 10064 8041 7487 8040 10499 10071 10500 10506 9581 10052 10053 10505 10059 9587 10058 10511 10512 10516 10517 9576 9571 9577 8029 8028 8030 9089 8570 9088 6898 7481 7482 7483 7488 8034 8035 9094 8564 9082 9083 9582 9583 9588 9589 9594 8559 8556 8560 8565 8566 8571 8572 8576 8577 9095 9096 7491 9097 10068 8579 10520 9597 9596 8043 8580 10067 8044 10519 9098 6925 6913 5691 6330 6912 5156 9603 8153 6928 6886 6871 6314 6277 5718 5170 6308 5159 6930 9565 9105 8553 7619 7500 7494 7470 6922 6292 5694 6927 6312 6926 5696 5693 5695 6307 5697 6921 6290 6872 6278 5720 5699 6882 6880 6876 6285 5702 6317 6315 6929 6924 6313 6923 6305 6294 6316 5722 6310 6311 6280 6275 6279 5700 5169 5698 6281 6291 9600 8667 6288 5719 6293 5701 5714 5721 7461 6884 8018 8051 8045 8009 9104 9065 8589 8583 8014 7467 6282 6283 6284 8010 7458 7459 7460 8011 6286 6287 6289 6885 6887 7469 6878 6881 6883 7468 6877 6874 6879 8152 8150 8151 8050 8048 8049 9599 9563 9598 8154 7622 8155 8669 8584 8587 8588 8668 9103 9099 9102 9106 9107 9601 9602 8052 7616 8053 8017 8019 8020 7462 8012 8013 9064 8548 9063 8016 6869 6873 6875 7463 7464 7465 7466 8015 9066 8545 8581 8582 8585 8586 9100 9101 9564 8046 7497 8047 8546 8547 8549 8550 8551 8552 9067 9068 6896 9570 9070 7472 7471 8022 8021 10070 6892 10041 6891 9071 9569 6915 8554 6895 6914 8555 10069 10040 6888 9168 6870 9605 7618 6276 8672 10074 7615 5690 7492 7620 7496 8157 10073 7493 7498 8671 7457 7495 7456 6274 9167 5155 5692 7624 7617 7625 7499 9606 6868 8158 7614 7621 3980 3137 1974 1600 1425 6228 3393 3378 3364 3358 2780 2764 1966 3382 2561 6223 5660 5106 4581 3982 3143 2786 2177 1969 1965 1971 1968 1970 2553 3379 3383 3367 2770 3978 3973 3971 3969 3965 3374 3372 3370 2772 2551 2552 2554 2555 3981 3976 3983 3138 3139 3140 3961 3366 2769 6226 3998 2783 2771 2174 2768 3368 2765 3365 6225 5642 6227 2556 3380 5124 4563 5638 5635 5094 4580 4557 4548 3997 3392 3972 3964 3371 3142 2776 3141 3144 3381 5641 3391 3387 3390 3386 6224 5101 5639 5640 6222 5644 5103 5104 5105 5643 2789 3394 3395 3977 5662 5633 5661 3369 2774 3373 4579 4575 4578 4583 3992 3995 3996 3999 4000 4582 3385 3362 3384 3388 3389 6220 5098 5636 5637 6221 3990 3989 3991 3993 3994 4576 4577 4550 3960 4549 4560 5097 5099 5100 5102 4553 4551 4552 5092 5093 4554 5095 5096 5119 5120 5121 5122 5123 5634 3959 3359 3962 3963 3966 3975 3375 3979 4556 2173 2557 2558 2773 2775 3376 3377 3967 3968 3970 3974 4555 4558 4559 4561 4562 4564 4565 3426 2895 2829 2757 2166 1698 3424 2285 2889 2763 2190 1287 3423 2288 2758 2897 2233 1699 2824 2184 2178 2172 1658 1612 700 2823 2290 2759 2886 2230 1702 2888 1285 2817 2283 2280 2225 2219 2161 2158 1693 1650 1646 1602 1155 2896 2292 2892 2828 2228 2827 2291 1700 2289 1703 1284 842 1286 2187 2294 1704 2293 2169 2167 2168 2170 1705 2171 2159 2756 2760 841 2227 3422 2165 1281 1127 728 1653 1611 1603 1164 2218 2222 1156 2163 1599 2164 844 729 730 731 843 3425 2816 2818 2819 2820 2761 2160 2762 2186 2182 2185 1692 1641 2162 2188 1609 1613 1614 2189 2217 2281 2282 2887 2890 2822 1642 2220 2221 2821 2229 2224 2226 2825 2826 1649 1644 2223 1606 1124 1610 1166 727 1165 1657 1655 1656 1157 1154 1158 1283 1162 1167 1168 1169 1282 1654 2232 1648 1651 1652 2231 2179 1121 1607 1608 2183 2181 1120 1122 1123 1125 1126 1159 1160 1161 1163 1598 1604 1605 1643 1645 1647 2180 2175 2787 2785 2784 3363 2777 2778 2779 2766 2767 1701 2781 1601 1695 2176 3361 3360 2788 2782 2811 1309 2795 1291 2815 1310 2807 2801 2212 2191 1636 1303 1297 1149 1128 866 847 722 505 2813 2812 1313 1312 2798 1294 1638 1637 724 723 2216 2808 2814 867 1308 1311 2802 1620 1302 706 499 2206 2202 1633 1629 1621 1145 1137 862 856 853 721 713 2214 2213 865 2194 2195 2196 1131 1132 1133 850 848 849 2800 2796 2799 1640 1153 1639 2209 2215 870 506 868 869 1292 1290 1293 2794 2199 2790 2793 2797 1296 500 851 852 1295 855 501 854 1298 1299 709 2806 2208 2805 1305 860 1304 726 719 725 2810 1635 2210 2211 2809 716 504 720 863 864 1306 1307 705 701 704 707 708 1623 2197 2198 859 503 717 718 861 1135 1134 1136 1615 1618 1619 1622 1140 1143 1144 2203 1632 2207 710 711 712 1138 1139 1627 1146 1147 1148 1150 1151 1152 1630 1631 1634 1142 502 714 715 857 858 1141 1300 1301 1624 1625 1626 1628 2200 2201 2204 2205 2803 2804 7451 3417 7411 4001 7455 3421 7447 7441 6862 6817 6268 5684 5663 5146 4605 4022 3413 3407 3401 7453 7452 4024 4023 4589 7438 6270 6269 5148 5147 4004 4005 4006 4588 4584 4587 6866 7448 7454 4025 4019 4026 7442 6252 5130 4013 4007 6856 6852 6265 6261 6253 5680 5672 5145 5137 5131 4604 4593 6864 6863 4021 6272 5688 6271 6859 6865 4020 3416 4016 4017 4018 6844 6845 6846 5666 5667 5668 4008 3404 4009 7440 7436 7439 7410 6820 6849 7409 7437 7446 6858 7445 5686 5685 4603 4599 4602 6255 6847 6848 4012 4010 4011 5671 6247 6250 6251 6254 4595 4590 4591 4592 4594 5670 5125 5128 5129 5132 5133 5669 6853 6264 6857 5150 5681 5687 4601 4596 4600 5677 5142 4606 4607 4608 4609 5140 5141 5143 5144 5149 5683 5139 5675 5676 5678 5679 5682 6258 6850 6851 6854 6855 7443 7444 5674 3410 4014 4015 4597 4598 5134 5135 5136 5138 5673 6256 6257 6259 6260 6262 6263 6266 6267 6860 6861 7449 7450 3402 3405 3396 3418 3399 3408 3415 3411 3419 3414 3412 3400 3420 3406 3409 3403 6822 6248 1288 2192 1617 4002 2792 1616 3398 5127 3397 2791 1130 1129 4586 5664 702 703 6819 2193 5126 6821 845 846 6818 4585 5665 1289 6249 4003 498 4027 1834 1833 2235 1808 1841 1836 1809 1830 3430 2234 1842 1819 1831 1827 4030 1828 1824 2830 1825 1821 2833 1822 1818 1840 1816 1812 3427 1813 1810 1815 1837 10615 12431 12425 12222 12214 12102 12088 11748 11393 11003 10603 10599 10174 12099 12086 11750 11538 11165 10570 12423 12220 12213 12090 11391 11001 10618 10606 10610 12079 11385 11000 10990 12430 12426 12429 10617 10611 10616 10612 11004 10997 11002 10172 10613 10614 10986 10998 10999 11381 11392 11394 12085 12075 12219 11880 12221 12212 12215 12216 11743 12047 12052 12218 11877 12217 12082 12427 12428 12092 12078 12091 11879 12101 12077 12100 10601 11752 11534 10961 10609 11738 11735 11732 11708 11389 11022 11382 12211 11875 11876 11878 12210 11383 10987 10988 10989 11384 11882 11535 11536 11537 11881 11353 11354 11355 10644 10645 10646 11533 11168 11532 10608 10605 10607 11762 12089 11742 12087 11737 11405 11736 11710 11351 11709 11873 11874 11387 10991 10992 10993 11388 11350 11024 11352 11740 11746 11747 11749 11751 12076 11705 11760 11761 12074 11745 11386 11739 11741 11744 11706 11377 11406 11407 11707 12048 12049 12050 12051 11390 10960 10962 10963 10994 10995 10996 11023 11378 11379 11380 11733 11734 12080 12081 12083 12084 12421 12424 10622 10175 9727 10178 12566 12226 11208 10836 10168 10173 12562 10166 9245 12244 11885 11177 10791 10417 10181 9726 10165 9242 12229 11572 9714 9710 9517 9729 9709 9728 9243 10167 10837 12558 9509 11211 9711 9229 9712 11213 10842 11209 11210 11212 9716 10179 10180 9516 9512 9515 10126 10169 10170 12245 12563 12564 12231 11915 11548 10809 10575 9978 11907 11575 11559 11205 10847 10820 10414 9964 12565 12247 12248 12249 12561 12241 11911 12246 9513 9466 9514 9715 11895 12228 12230 11186 11184 11185 10378 10792 10793 11577 11218 11576 12227 11886 11887 11888 12225 11557 11896 11897 9718 9713 9717 10182 10183 10810 10802 10811 11910 11573 11912 11913 11914 10422 10420 10421 9928 9926 9927 10127 10128 9968 9969 9970 10818 10406 10819 11569 11214 11574 9974 9973 9975 9976 9977 10418 10419 11195 11193 11194 11541 11549 11550 11558 10845 10841 10844 10846 10848 10849 11215 11216 11217 11203 10367 10368 10369 10407 10408 10412 10413 10573 10574 10839 10840 11204 11567 11568 11905 11906 12239 12240 11176 11540 10572 11166 10600 11167 10171 10207 10602 10604 10177 10623 10571 10964 10624 12223 10965 11175 11539 10176 11884 12224 11883 10470 8004 10448 9039 8542 8525 10466 8005 10460 10454 10023 10000 9559 9062 8529 8544 8527 8538 8536 10469 10468 8543 8539 10451 9536 9558 9557 8531 9048 8530 8518 8528 10019 10465 10467 10459 10015 10009 10006 10003 9554 9548 9043 10022 10021 8541 9555 9058 9556 10018 10020 8537 8534 8540 10002 9537 10001 9045 9042 9044 9057 9059 9060 9061 10447 10449 10450 8532 9046 9047 10462 10013 10461 10008 9543 10007 9052 10456 9540 10004 10005 10452 10453 10455 8526 9040 9041 9538 9539 9541 9542 9544 9545 10457 10010 10458 9053 9051 9054 9055 9056 10463 8001 8533 8535 9049 9050 9546 9547 9549 9550 9551 9552 9553 10011 10012 10014 10016 10017 10464 10397 10444 10427 10400 9488 9036 9956 10403 10401 10402 10439 10433 9979 9944 9005 10405 9960 10398 10404 9997 9490 9947 9935 10389 9533 9482 10430 9481 9948 9955 10399 9489 9003 9022 9946 9943 9945 10438 9560 9994 9988 9985 9527 9949 9473 9478 9982 9980 9981 9996 9531 9995 9033 9480 9474 9479 10428 10426 10429 10442 9992 10440 10441 10443 10432 9519 9983 9984 10431 9987 9522 9986 10434 10435 9524 9518 9520 9521 9523 9934 9936 9029 9525 9526 9035 9004 9034 9530 9532 9484 9030 9031 9032 9483 9528 9529 9953 9954 9989 9990 9991 9993 10436 10437 9038 9037 9020 9998 10445 9021 9535 9999 9534 8524 10446 12232 12570 10859 12574 12257 12251 11219 11904 12567 10858 12236 11934 11599 11243 10856 10854 12267 12254 10852 11889 12264 11244 11240 12571 12572 11935 11931 11222 11223 11224 12261 12268 12573 11241 11237 11242 11227 12235 11231 11228 12256 11580 11930 11921 11595 11589 11229 10853 11225 11226 11230 12234 11892 11893 11894 12233 11239 12266 12263 12265 11238 10857 11234 11235 11236 12259 11933 12258 12269 11598 11925 11928 11929 11932 11594 11590 11593 11596 11597 11600 12260 11927 12262 11581 12238 11918 12237 11922 11587 11591 11592 11926 11916 11545 11578 11579 11582 11583 11917 11232 10855 11233 11584 11585 11586 11588 11919 11920 11923 11924 12250 12252 12253 12255 11899 11561 11197 11172 10822 10471 10392 11898 11554 10795 10483 10477 10024 11560 11196 10388 11542 10474 11564 10825 10381 10393 10394 10379 10799 10482 10027 11553 11189 11183 10814 10808 10377 10370 10380 9930 9937 10028 10029 10472 10423 10473 11171 11169 11170 10798 10796 10797 11566 11563 11565 10827 10824 10826 10479 10030 10475 10476 10478 11173 10850 11174 10376 10372 10373 10374 10375 11544 11178 11181 11182 11543 10813 10382 10383 10384 10812 10821 10823 11552 11190 11551 11555 11556 11900 11901 10371 10480 10481 11202 11192 11562 11199 10794 10800 10801 10817 11198 11200 11201 10807 10803 10804 10805 10806 10815 10816 11179 11180 11187 11188 11191 11902 11891 11890 10851 11221 11547 11546 11220 11903 10391 10025 10390 10026 10425 10424 9939 10860 9929 9938 10831 12569 11206 11570 11571 11207 12243 11908 12242 11909 12568 12560 10832 10838 10833 10835 12559 10828 10834 9487 8519 8491 8242 8231 7708 7136 6231 9498 7996 7970 6541 5991 5655 9475 9023 8488 8229 7134 5648 8497 6827 9008 9485 9486 8239 8489 8490 7132 7133 7135 6234 6232 6233 6828 6825 6829 9006 7964 7130 9491 8498 7419 6563 6235 6238 9025 7705 9017 8507 8506 7988 7979 7965 7430 7427 7416 6843 6246 7131 6547 7127 7128 7129 8241 7718 8228 8230 8240 9007 8503 9000 8517 8515 8516 7976 7974 7975 6237 5651 6236 8520 7999 8521 9009 9024 8499 7993 8500 7149 7967 7716 7966 6830 9497 9019 9496 6842 6836 6841 7980 8504 8505 9010 9011 7412 7702 7703 7704 7706 7707 7717 7148 6826 7147 7417 7418 8495 8501 8502 6833 6834 6835 7971 7972 7973 8492 8493 8494 8496 7982 7415 7420 7421 7425 7426 7981 9012 8514 9018 6838 6239 6240 6241 6837 7435 7985 8508 8509 9013 9014 9492 9493 5659 6242 6243 6244 6245 6839 6840 8510 6538 6561 6562 6831 6832 9015 9016 9494 9495 7424 7422 7423 7428 7429 7431 7432 7433 7434 7977 7978 7983 7984 7986 7987 7989 7990 8511 8512 8513 7139 5491 3838 3737 2082 6551 2081 5990 5985 5110 4568 4418 3731 3253 2671 6553 2667 3732 3252 4957 6544 5968 5493 5435 4325 3988 3841 3261 5981 2669 3741 3255 4962 5988 5113 4419 5432 5427 5424 4896 4891 4887 4885 4881 4422 4336 4332 4330 3850 3259 2672 2559 2670 3840 3842 3843 5495 5428 5494 3844 3257 3740 5109 4329 5422 4421 4416 4420 3260 3145 3262 4328 3984 4327 3256 2666 3258 5111 4569 5112 4960 5980 5429 5976 5967 5118 5421 4889 5414 4574 4338 4331 3845 3846 3847 4570 3985 4571 5986 5979 5982 5983 5987 4339 4572 4573 5114 5115 6552 5977 6545 6546 6550 4899 4897 4898 5116 5117 5437 4880 5412 5413 5436 5430 5426 5431 3742 3146 3739 5423 5971 5972 5973 5978 4323 3743 3848 3849 4333 4893 5433 5434 5984 5989 4334 4335 4337 4423 4424 5970 5419 5969 5974 5975 4879 3738 4324 4326 4882 5415 4892 4958 4961 5965 5966 5417 4883 4884 4886 4888 4890 4894 4895 5416 5418 5420 5425 6549 5657 5653 6539 5649 5647 5993 7137 5992 7138 6548 6542 5654 6543 5652 5658 5650 6540 5656 11397 11015 10633 10619 8778 8740 6556 6043 10634 8742 11008 10639 10204 9744 9734 9248 8280 8236 7764 7713 7172 6602 6596 11013 10637 8744 11019 8279 6600 10185 6560 10628 9259 8781 8750 7734 7175 7146 11017 11016 11018 11021 11010 8738 8282 6603 10188 6604 10202 9745 9733 9247 8238 8252 7715 7173 7180 10190 9266 8773 8769 8765 8271 8266 8264 8260 8256 7753 7749 7742 7739 7188 11020 10638 10643 10641 8780 8761 8782 10627 10625 10626 6605 6554 6606 8743 8234 8243 10206 10631 10642 8284 7763 8283 7145 7140 7144 11009 10629 11006 10189 10201 10630 9748 9752 10203 9749 10186 10191 9746 7182 7179 7735 9747 9262 9271 7186 7185 7187 7181 6594 7178 9732 9263 9750 7709 7142 7714 9267 9719 9735 7183 6597 7184 8762 8232 8774 7174 8268 8261 7745 7747 7748 8763 8253 8764 7744 7170 7176 7177 7746 7750 7711 7751 7752 8237 8273 7741 8269 8270 8272 7740 7737 7743 7736 7732 7738 9260 9258 9261 8258 8262 8263 8265 8267 9264 8766 9265 8767 7731 8254 8255 8257 8259 8768 8771 8749 8751 8752 8770 8772 8775 9230 9246 9249 9268 9725 9232 8605 8091 6918 6911 5741 5213 4671 3499 3493 8748 8602 6910 5716 10411 10387 9470 8613 8072 7542 7523 7521 7514 6952 6945 6343 5197 4663 4095 8993 8606 6919 5742 9967 7546 9721 5210 4103 3489 3500 9244 9235 8096 8062 7505 6335 5754 4678 4669 9236 8992 9234 7507 7504 7506 9028 7512 8609 5743 10409 7541 9240 5207 4098 4102 8999 8604 8073 7537 8065 7515 6951 6947 6342 5202 4666 4110 6337 5750 5205 4099 4096 4097 3491 4100 4101 4107 4670 4672 4108 4031 4109 4665 4676 4677 4667 4614 4668 9239 9237 9238 5756 5752 5755 8612 8079 8611 8610 8069 8075 8066 7509 8067 7516 6920 7513 5745 5198 5744 9724 9241 9723 8074 7517 8071 8070 8061 8068 8063 7508 8064 8078 8607 8608 8080 7522 8081 7538 8094 8095 7539 6944 7540 6948 6954 7543 6949 6332 6950 6345 5208 9965 10385 10410 9467 9471 9472 9931 9468 8996 9469 9501 9502 9503 9932 9933 10386 9504 9505 9506 9507 9940 9961 9962 9963 9966 6339 6336 6953 5201 5206 5209 5746 6333 6338 5748 5751 5753 5747 4664 5203 5204 5749 5757 6340 6341 6344 9720 9233 9231 8745 9722 8746 8994 8997 8747 8998 9476 8739 8233 7712 7141 9477 8235 8741 7710 9941 7143 9942 9002 8995 6559 6041 6557 6555 9001 6558 11007 9952 9951 9950 10621 10620 11396 9731 9957 10187 11395 10396 10184 9508 10843 9971 9958 9026 9959 8000 10415 9510 10830 10829 9972 10395 8522 9500 10416 8523 9027 9499 11005 9511 9730 1973 7510 6334 6943 6306 7502 7503 7511 5158 5715 7524 4034 5157 3495 5199 4616 5717 6331 6309 3490 8076 8077 3492 8601 8603 6909 6917 6916 5200 4033 4617 7992 7991 8002 7969 7968 7480 7485 6946 3488 7998 7414 7413 3494 6824 6823 7484 8008 6230 6229 5646 5645 7519 7520 5108 5107 7490 8003 4567 4566 3987 3986 7995 7994 8006 3736 3735 3734 3733 3148 3147 2562 2560 8007 7997 9754 6346 6955 4675 6599 7762 6595 6601 6598 7765 8779 6348 10200 7544 6040 7171 5758 10632 8092 5492 10640 6957 5490 5211 2893 5216 8281 4959 4956 5212 4673 7169 4417 4415 2286 5214 4105 5760 3839 10635 3837 9753 1697 3497 3254 4106 3251 2894 6042 3498 2668 10205 2665 8278 1972 8093 2287 2083 2080 1975 7545 7733 1967 8777 1964 9270 1696 1424 7730 10636 9272 11036 10655 10558 10132 10653 13472 13464 12870 11659 11362 11307 10214 10663 10540 10216 13275 12857 12819 12329 12270 11291 11038 10905 10657 10656 10658 10659 10660 10578 10576 13284 13467 11363 11306 11358 11356 11716 11039 10967 11037 10904 10902 10903 10662 10215 10661 10579 10530 10577 10966 11305 11715 11711 11714 12868 11992 11290 12840 10968 10969 10970 11357 11287 11359 11360 11361 11364 12859 12635 12869 11308 10934 11300 13072 13469 13060 12581 12055 12831 12610 12323 12287 12278 11980 11639 13471 13281 13282 13283 13470 13279 13466 13468 12822 12820 12821 12273 12271 12272 12858 12629 12849 12328 11990 12327 13063 13276 13277 13278 13280 13463 13465 13061 13059 13062 12830 12590 12829 13064 13065 12839 12599 12838 13073 13074 12582 12578 12583 11986 11657 11991 11289 10930 11292 12286 11972 12285 12637 12321 12630 12631 12636 11713 11635 11640 11641 11712 12601 11937 12276 12277 12591 12592 12600 12317 11651 11984 11985 12322 12054 11936 11938 11939 11973 11974 12053 11645 11309 11646 11647 11652 11653 11658 11978 11979 12315 12316 12608 12609 12847 12848 13525 13351 12688 11467 11035 13167 11030 13460 13358 12936 12438 12103 11717 11415 13154 11410 13522 12476 11763 13455 13451 13352 13056 12698 12689 12575 11420 11412 13354 13155 13353 11414 11041 11413 13158 11424 13356 12441 11766 12939 12106 12056 11419 13263 13139 12916 12693 12450 12447 12123 12116 12111 11781 11770 13357 13340 13355 12691 12446 12690 11765 11409 11764 13523 13343 13524 11427 13458 12911 12665 12442 12121 11780 11775 11779 11426 11044 11425 12104 11814 12105 12117 11777 12122 13457 13270 13459 13156 12452 12933 12061 11767 12814 12405 13266 12107 12910 12114 13135 13341 13342 12119 12152 12439 12440 12451 11768 11416 11769 12059 12060 13269 12659 12660 12661 12914 12666 12915 12443 13456 13051 13267 13268 13454 13272 13053 13054 13055 13271 13265 13134 13264 13452 13453 13137 12909 13050 13052 13136 12816 12813 12815 11423 12109 11773 12108 11774 11776 11778 12118 12120 12113 11042 11421 11422 11771 11772 12110 12112 12115 12406 12444 12445 12448 12449 12408 12400 12403 12404 12407 12937 12694 12938 12696 12662 12663 12664 12667 12668 12692 12695 12697 12907 12908 12912 12913 13133 13138 13152 13157 11043 12818 13461 12576 13274 12401 13462 12057 12402 11718 11418 11719 11417 13273 11040 12577 11031 11033 11034 12058 12817 13058 13057 13501 12649 13512 13505 13495 13477 13298 13077 12587 12648 13511 13330 13123 12897 12646 12644 12642 12640 13504 13494 13476 12844 13503 13502 12898 12894 12580 12837 13075 13076 13329 13510 13513 12895 12891 12896 13287 12823 12824 12825 13068 13122 12885 12879 12873 13500 13482 13479 13321 13315 13107 13124 13117 13120 13121 12828 12826 12827 13478 13290 13297 13299 13300 13331 13324 13327 13328 12836 12832 12835 13066 13067 12893 13071 12884 12882 12883 12878 12876 12877 12892 12647 12888 12889 12890 13080 13078 13079 13285 13286 13326 13114 13118 13119 13325 12874 12641 12875 13069 13070 13507 13323 13506 13508 13509 13102 13103 13104 13288 13289 13115 13111 13116 13318 13322 13105 12643 12880 12881 13106 13320 13113 13319 13312 13313 13314 13480 13481 13499 12645 12886 12887 13108 13109 13110 13112 13316 13317 13496 13497 13498 14480 13294 13085 14375 13661 13088 13475 13091 13094 14479 14376 13665 14252 14245 14117 13962 13955 13811 13652 13101 14369 14481 14482 13293 14379 14378 13815 13814 13653 13306 13304 13305 14371 13302 13301 13303 14121 14120 14253 14374 14377 13812 13810 13813 13489 13311 13309 13310 14370 14246 14368 13308 13097 13307 13485 13483 13484 13490 13491 13493 13488 13492 13657 13649 13654 13655 13656 13807 14373 14249 14372 13806 13804 13805 13809 13660 13808 14116 14113 14119 13963 14118 13958 13956 13957 13966 13959 13960 13961 13964 13965 14114 14115 14256 14110 14111 14112 14247 14248 14250 14251 14254 14255 13658 13090 13659 13651 13662 13295 13089 13296 13087 13663 13664 13487 13650 13486 13992 13705 13368 13365 13360 14268 13783 13688 13674 13673 13534 13530 13849 13694 14224 14137 13539 13541 13538 13540 13681 13841 13832 13626 13689 13777 13685 13683 13986 13981 13973 13834 13830 13932 13843 13840 13842 13691 13544 13690 13686 13537 13687 13684 13533 13682 13984 13780 13781 13782 13821 14262 13995 13993 13994 13934 13931 13933 13779 13623 13778 13820 14133 13980 14084 13829 13828 13831 14085 13928 13929 13930 14086 13833 13695 13835 14089 14087 14088 13985 13971 13979 13982 13987 14261 14127 14222 14223 14260 14139 13676 13822 13823 13972 13974 14125 14126 14131 14132 14138 14266 14267 14476 14462 13801 13786 14471 14350 14242 14092 13641 13635 14465 13952 14474 13937 14473 14363 14475 14228 14105 13795 13789 14467 13950 14359 14233 14101 14095 13943 14362 14353 14351 14352 13796 13797 13798 13788 13632 13787 14463 14354 14385 14464 14466 13800 13644 13799 13949 13951 14472 14237 14360 14361 14470 14094 13938 13939 13940 14093 14365 14239 14240 14241 14364 13941 13790 13791 13792 13942 14356 14231 14355 13947 13946 13948 14098 14096 14097 14227 14229 14230 14232 14102 14103 14104 14106 14107 14236 14238 14234 13638 13793 13794 13944 13945 14099 14100 14235 14357 14358 14468 14469 13629 14090 14348 13785 13784 14383 14226 13936 14225 13935 14091 14349 14384 13954 14108 13803 14366 14477 13802 13648 14109 13647 13953 14367 14243 14244 13646 14478 13363 13081 13292 13474 13473 13093 13291 13536 13092 13645 13639 13642 13640 13631 13627 13531 13625 13622 13535 13098 13099 13082 13637 13643 13083 13675 13532 13633 13630 13634 13624 13628 13636 8648 11464 11088 10924 10210 10096 9145 8362 8652 8651 11462 10922 9144 11096 11027 10710 10650 10555 10550 10265 9826 9347 9154 9135 8862 11091 9636 10927 8361 9760 10098 9148 10209 10114 10105 10093 9822 9151 8661 11094 11465 11466 9153 9150 9152 11095 11025 9639 10557 8659 9758 10101 10648 10711 10270 10269 10266 8859 9633 9163 10273 9818 9815 9651 9649 9645 9340 9158 9147 9638 9640 10549 10552 10928 9635 9643 10102 9641 9156 9642 9631 10553 8662 8660 8663 10212 9812 10211 11028 10715 11026 10713 10708 10712 10100 9653 10099 10556 10109 10547 10651 10647 10649 10268 10259 10267 9632 9136 9630 10103 10108 10554 11097 10714 11092 10271 10275 10716 9820 9823 10274 9344 9819 9821 9165 9647 9655 9160 9654 9164 8666 9161 8857 9159 9162 8858 8860 8861 9157 9650 9652 10208 10106 9338 9646 10110 10111 10112 10113 10272 9343 9813 9816 9817 9759 9339 9341 9342 9345 9346 9644 9648 9814 10104 10107 10919 10543 10488 8639 8624 8110 8116 8106 11989 11313 11252 10935 10915 10090 10031 9607 9141 9123 9117 8618 8113 8614 10542 9121 10560 10035 11981 11944 11302 11296 10936 10913 10907 10868 10537 10490 9624 9613 9128 10917 10918 10920 10544 10094 10541 10491 10484 10489 10931 10938 10929 10937 11301 10539 10487 8635 8633 9132 11656 10089 10078 9611 9615 9124 11288 11286 11248 10901 10533 10085 9627 9621 8640 8637 8638 8636 8112 8634 9126 11303 11297 11304 8620 9133 9134 10486 10032 10485 9614 9113 9612 9140 9139 9142 11315 11311 11314 9616 9116 9617 9127 8616 9125 9130 11655 11650 11654 10080 11604 10908 11988 11983 11987 11648 11975 11982 9623 9622 9625 10081 9608 10079 10912 10531 10911 11649 11298 11642 9131 8621 9129 10534 10914 10916 10086 9629 10091 9619 9626 9628 10082 10087 10088 10084 9120 9618 9620 10083 10532 10092 10535 10536 10538 10862 11644 11283 11601 11246 11294 11293 11295 11636 11643 11245 10864 11247 11977 11942 11976 10861 10863 10865 10871 10906 10909 10910 11284 11285 11606 11249 11250 11251 11253 11254 11602 11603 11605 11637 11638 11943 9143 10926 10095 10546 10097 9634 9637 10925 10921 11299 10545 9146 8641 12379 10565 12360 11329 10957 10944 12375 10566 12369 12039 12019 11703 11349 12363 10943 10959 10947 10953 10951 12378 12377 10958 10954 11702 11701 11332 11330 11331 12035 12374 12376 11333 12368 11684 12365 10948 12031 11698 11692 12038 12037 10562 10949 10950 11341 12022 12020 12021 12361 12023 12359 12362 12364 11700 11345 11699 12034 12036 11687 12024 12025 11685 11683 11686 11688 11689 12367 12026 12366 11344 11342 11343 12028 11336 11690 11691 12027 10956 10952 10955 11346 11347 11348 11334 10946 11335 11337 11338 11339 11340 12372 11693 11694 11695 11696 11697 12029 12030 12032 12033 12370 12371 12373 12356 12348 11624 11621 11255 10941 10875 10529 12007 11680 11317 10891 12354 11627 10880 10939 10881 11260 11275 12347 11616 12353 12014 12355 11261 11262 11263 10526 11620 11609 11619 11269 11625 11626 11630 11278 11268 10886 11267 11272 11273 11274 11631 11632 11270 12008 12349 12350 12013 10893 10892 10894 11324 11259 11674 11265 10887 11264 11266 11271 11629 10896 10897 10898 11279 11280 11628 11282 10899 11281 11622 11633 11634 11258 10940 11276 11277 11623 12016 11677 11678 11679 12015 11326 11323 11325 12010 11672 12009 12352 11318 11319 11320 11321 11322 11671 11673 11675 11676 12011 12012 12351 10561 11682 12357 11328 11681 10900 11327 10945 10895 12018 10942 12358 12017 12856 12634 12584 12344 12296 11615 12866 12851 12389 12383 12339 12333 11971 11959 12841 12324 12004 11961 11613 12615 12611 12299 12392 11955 12620 12632 12633 12306 12304 12305 11612 11608 11614 12619 12318 12618 12310 12391 12585 12586 11607 12862 12853 12382 12338 12332 12307 12598 11666 12604 12290 12284 12274 11995 11941 12612 12313 11967 12311 12312 12314 12855 12605 12842 12843 12854 12624 12625 12626 12597 12593 12596 11960 11957 11958 11999 12340 12341 12865 12623 12627 12628 12863 12864 12867 12309 12343 12001 12002 12003 12342 11998 11663 12000 11668 11662 11664 11665 11667 11946 11954 11956 12301 12621 12622 12381 12043 12380 12603 12291 12602 12289 11948 12288 11997 11704 11945 11947 11996 12335 12042 12334 12336 12337 12390 12275 12388 12045 11940 11949 11950 12040 12041 12044 12283 12279 12282 12594 12595 12606 12607 12293 12046 12280 12281 12292 12384 12385 12386 12387 12303 11966 12297 12298 12300 12302 12308 12613 12614 12616 12617 12850 12852 12860 12861 11953 11618 11617 11965 12006 11669 11964 11968 12346 11963 11970 11962 12005 11670 11969 12345 11316 12326 12319 11951 12295 12294 10874 11611 11610 11952 12320 11257 11256 12325 12579 12650 13100 13086 11660 10131 10129 10932 12872 13096 11993 11310 11312 12834 13084 11468 11469 11661 11994 12638 12588 12331 11408 12833 12845 11029 11411 10923 10548 12589 12846 13095 10217 11032 12330 10933 10559 12639 10652 12871 10213 10551 10130 10654 10264 9798 9794 8626 8327 7795 8147 7257 9319 9312 8834 8829 8339 8097 7836 7826 7823 7819 7283 8146 7277 9350 8325 10257 9792 9804 9801 9795 9309 8341 7816 7818 7815 7817 7830 7846 9320 8337 9811 9318 8826 8835 7837 7827 8331 7845 7841 9335 9332 9327 8856 8849 8846 8842 8822 8357 8352 8349 8333 8149 7832 8148 8345 9799 9323 9800 8304 8324 8326 10263 9807 10262 9797 9331 9796 8836 8365 8837 7829 7275 7828 8335 8336 8338 8332 7824 8334 8825 8827 8828 8329 9322 9806 7843 8823 8360 8824 9321 8838 8865 7844 7284 7842 8833 9310 9311 8330 7820 8328 9805 9324 9803 8343 9316 7838 9333 8847 8356 8358 8359 9325 8839 9326 8348 8350 8351 8854 8850 8855 9315 9317 8840 8340 8342 8344 8841 7831 7839 7840 9328 9808 9809 9337 7833 8346 8347 8852 9336 9802 9810 8845 8353 8354 8355 8843 8844 8848 8851 8853 9329 9330 9334 7267 7237 6777 6197 6105 5871 6196 7273 6781 6696 6685 6665 6212 6186 5544 5538 6779 7266 6188 7236 5849 5865 7270 6662 6107 6094 5628 5548 7239 6678 7238 6109 6106 6108 5870 5629 5869 6661 6110 5630 6778 6686 6185 6693 6675 6098 6214 5545 5625 6114 6687 6679 6688 6783 6193 6782 7272 6690 7271 6213 6183 6209 5547 5539 5546 7268 6689 7269 6780 6191 6776 6111 6691 6692 5631 5318 5632 6113 5543 6112 6192 5626 6184 6187 6097 6099 6095 5542 6096 6104 6663 6664 6102 6115 6694 6695 6677 5540 6101 6103 6116 6117 6676 6444 8658 8135 7261 6682 5316 8628 7045 6449 8656 8101 7548 7281 6439 6426 7613 7260 6424 5851 7043 8632 8102 8144 6964 6697 6434 5857 7551 7279 6437 6428 7609 6967 7042 7605 7603 7036 7031 7263 6698 7262 5856 5854 5855 8657 8140 8654 7278 6961 7280 8143 8138 8142 6962 8631 8139 6430 6438 5866 6436 6968 6681 6966 7550 7547 7549 5853 6429 6431 7044 6447 7038 6965 6680 6963 7040 6433 7039 6432 5858 6435 7611 7554 7034 7604 7030 7552 7553 7606 8103 6425 7032 7033 7035 7037 7608 7610 8099 8104 8141 5317 6427 5864 6683 6356 5868 5867 6684 5315 5541 6448 7265 7264 5850 5852 8100 7274 8098 8630 7822 8629 7256 7258 7259 8627 7282 7835 7286 7276 7285 7834 7821 7825 11045 10720 10673 10236 8373 7292 10718 10234 10666 10279 9830 9777 9354 9296 8813 8323 10717 10230 10669 7855 7850 10226 8869 10664 10227 10667 7852 7848 9828 9352 9297 8814 10219 9769 9284 8866 8367 10719 10277 10280 10235 9775 9778 10276 9780 7854 7851 7853 10668 10222 10665 9294 9766 9779 8369 8366 8368 9831 10218 10278 8370 8371 8372 8867 8797 8868 8816 8321 8815 9281 9827 9283 9280 9282 10220 9765 10221 9298 8811 9299 9829 9355 9761 9767 9762 9768 10223 10671 10672 10229 8870 9351 9353 9763 9764 10224 10225 10228 9771 9308 7798 6706 9305 6195 9292 8832 8820 8809 8319 8308 7814 7290 7243 6669 6120 9304 8821 6704 7241 9770 9289 8802 7800 6673 9307 9300 9306 8818 9285 6703 7244 8806 8316 7811 8309 7287 6670 7807 7252 7248 6699 9301 9302 9303 6194 6702 6705 9773 9286 9772 9288 8799 9287 8803 9290 9291 8805 7799 7801 7802 6672 6118 6671 8804 8312 8801 8808 8313 8807 8311 6119 8310 7803 8307 6700 6674 6701 8315 7804 8314 7255 7288 7289 7806 7245 7805 7253 7251 7254 7249 6667 7246 7247 7250 7808 7809 7810 7812 7813 8317 8318 7291 8812 9776 7849 8810 8322 8320 9295 9774 7847 9293 11453 11443 11086 10705 10676 10231 9790 10704 11449 10254 9786 10703 11452 9789 11059 11083 10681 9782 11446 11079 10697 10682 10247 10238 10702 11450 10242 11067 11081 10240 11074 11070 10694 10689 10706 10255 10700 11066 11060 11065 10252 10699 10701 10696 11084 11085 11063 10248 10246 10249 10241 10237 10239 11447 11068 11445 10679 11062 11064 10685 10251 11069 10686 11071 10695 10692 10698 10684 10674 10683 10691 10244 10693 11072 11448 11451 11077 11080 11082 11454 9785 10243 10245 11073 10687 10688 10690 11075 11076 11078 11455 13164 12952 12701 11812 11457 11431 11056 13163 12932 11460 11047 12944 12474 12150 12132 11806 11802 11797 11790 13165 12717 11808 11050 12458 11055 12950 12704 12472 11438 11434 11811 11810 11813 11807 12954 12712 12953 12146 12711 12948 11053 12461 12133 12142 11796 11791 12467 12465 12149 12148 12151 13166 12945 13161 11057 11051 11054 11436 11433 11435 11437 11439 11440 11792 11788 11793 11794 12145 12946 12706 12703 12705 11798 11441 11795 12147 11803 12144 12951 12708 12949 12135 12130 12134 12473 12470 12475 12947 12707 12942 12462 12709 12710 12463 12139 12468 12137 12466 12143 11799 12141 12714 12136 12138 12140 12459 12464 12469 12471 12713 11804 11800 11458 11805 11459 11444 11456 11442 11801 11809 11058 9788 10675 9787 10678 10677 11046 9783 9784 11052 10680 10670 11061 11048 9781 10232 10233 11049 8817 8305 8800 9313 10258 6100 7796 9791 6668 8830 8798 8831 10253 9314 6198 6190 6199 6189 10250 6666 7240 8819 10256 9793 7242 7797 8306 9907 13553 13172 12737 12516 12455 11146 11101 10344 10341 13552 12753 11099 10342 13405 13379 13213 12996 12957 12720 12512 12206 12126 11858 11784 11518 11106 11105 12758 11428 10730 13551 13159 12514 12128 10772 13187 12755 12481 12199 11479 11145 12757 12735 12756 12759 11472 10768 13406 12956 12520 12125 13214 12997 12719 12521 11865 11783 11519 11109 11470 13218 13005 13002 12768 12765 12526 12479 12156 11862 11818 10771 10769 10770 13542 13378 13554 11147 11110 11148 11111 10731 11112 11474 12999 12994 12998 11785 11429 11782 11478 11149 11477 11473 11102 11471 11476 11107 11475 11516 13000 13377 12955 12761 12522 12201 13170 11820 11817 11819 13216 13211 13215 12958 12733 12940 12524 12197 12523 11520 11512 11517 12124 11786 12127 11859 11860 11861 12155 12157 12158 12453 12454 12456 12480 12204 12482 12203 11854 11863 11864 12205 12202 12195 12200 12525 12491 12527 12718 12699 12721 12519 12760 12762 13380 13186 13366 13004 12767 12734 12528 12731 12732 12769 12971 12764 13006 13217 13403 13407 12207 12529 12530 12763 12766 12972 12973 12974 13001 13003 13171 13173 13185 13188 13219 12499 12493 12188 11866 11513 10757 10345 10318 9456 9446 10319 12174 11837 11494 11129 10776 10333 9897 12175 12492 12187 11855 11152 10756 9911 9458 9448 12494 12189 11867 10766 10755 10350 9462 9900 12172 12194 11872 11523 11154 10337 9913 9914 9463 11834 11495 11144 10778 11853 11848 11531 11526 11511 11506 11164 11159 11155 10790 10785 10781 10364 10357 10354 10330 9922 9919 10335 10332 10334 9901 12497 12170 12498 12191 11847 12190 11869 11525 11868 10351 10348 10349 9465 9459 9464 11838 11831 11836 10336 10328 10338 12496 12168 12495 11524 11521 11522 9916 9910 9915 12169 11142 12173 11832 11835 11143 11128 11139 12167 11830 12171 11829 11492 11833 11491 11493 11496 9902 11527 10352 11846 9918 10780 10366 11507 11162 10788 10358 9925 10329 10331 10355 9460 9917 9920 10353 11151 11156 11157 11158 11528 11851 11140 11509 11510 11852 10339 10361 10365 10758 10759 12192 11505 11849 11850 12193 9903 9895 9898 11504 11138 11508 10356 9921 9923 9924 10359 11160 11529 11530 11870 11871 10779 10765 10773 10777 10782 10783 10784 11161 10360 10362 10363 10763 10764 10767 10786 10787 10789 11137 11141 11163 12196 12515 12517 10346 12208 12198 10347 11856 12209 12518 11150 11857 12736 12513 11515 11514 12738 10775 10774 11153 9909 9889 9882 9452 9441 9378 8989 8940 8397 7944 7319 9450 9886 7406 9449 9888 9444 9414 8895 8987 8453 7880 7957 6816 9884 9879 9436 9434 9381 8983 8981 8939 8399 7961 7393 9883 9420 9881 9443 8978 9442 9453 9384 9451 9419 8977 8982 9439 8898 8984 8445 7883 7394 9877 7407 9429 9423 9415 8975 8969 8964 8954 8950 8946 8486 8481 8479 8473 8469 8461 8458 8456 7960 7955 7947 7945 8444 8442 8443 8980 8970 8979 9382 8902 9383 8990 8952 8988 8400 8398 8401 7396 7320 7395 9380 8901 9379 7408 7400 7405 8942 8402 8478 8485 8941 8477 7958 8480 8482 8971 8972 8973 9435 9437 8904 7397 8951 9890 9878 8966 8959 8955 8467 8462 8457 8471 7949 7948 7950 8948 8487 8953 8985 8986 9891 9428 9431 9432 9433 7962 7956 7963 8405 8404 8459 7884 7946 8403 8897 8460 8899 8900 8903 8947 7952 8463 8464 8949 9427 8965 9430 9880 9416 9425 8470 8465 8472 9421 8475 8956 8957 9417 9418 9422 9885 8967 9424 9426 9887 8483 7951 8466 8468 8484 8974 7882 7885 7886 7953 7954 8474 8476 8958 8960 8961 8962 8963 8968 8976 9438 9440 10726 10294 8893 8873 8448 7878 7403 7374 7295 6790 10725 9904 7934 10284 9849 9835 9359 8446 7939 7859 7315 6786 10728 10292 7929 7316 6785 8394 8375 7398 7376 6708 9374 8875 7875 7389 7297 6806 6217 10288 10291 7931 7313 6802 8391 8378 6810 7378 6711 9847 9836 9360 7390 7860 9842 9371 9366 8887 8885 8881 8389 8385 8381 7870 7866 7307 7303 6804 6719 10727 10285 10724 8449 7938 8447 7940 7933 7941 7388 7928 7932 7379 7375 7380 10287 7876 7874 7877 8876 8874 8877 7404 6814 7402 7298 7296 7299 10293 9844 9850 10283 9839 10286 9838 7312 8878 7392 7300 6715 9837 9363 9834 7314 6807 7311 6803 6813 7391 7302 6712 7301 6219 6809 6815 7861 7858 7862 6218 6216 6805 9361 9358 9362 9846 8891 9367 8886 8383 7871 7864 6716 6717 6718 6720 6811 6812 7863 7304 7865 7872 7308 7309 7310 7873 6713 6710 6714 7305 7306 9848 9372 9375 9840 9364 9841 8382 7867 7868 7869 8384 9370 8889 8890 8892 9373 8879 8377 8379 8380 8880 8882 9365 8883 8386 8387 8388 8390 8392 8393 8884 8888 9368 9369 9843 9845 10289 10290 9377 9852 7399 8896 8395 8894 8396 8454 7959 7881 7879 7943 9851 6808 7318 7401 9376 7926 7317 7942 8455 10317 10732 11104 9899 9912 10343 9457 9447 9445 11103 10320 9906 9454 9905 10729 10340 9461 9908 9896 9455 10722 8991 11108 6787 10282 12943 12131 12457 12702 9833 10281 12129 9356 9832 7856 9357 10723 8871 12700 11789 12941 12460 8376 7294 10721 7293 11098 6788 6215 8872 8374 6709 6707 6789 11432 11787 11100 7857 11430 7377 6784 13160 13162 7371 12478 9348 13545 13696 12154 13693 13367 12934 12153 12715 11816 11815 8363 11090 13151 13153 10709 11089 11093 13362 9824 13359 12935 11087 10707 10260 13364 9825 8863 9138 13369 8145 11461 8664 9155 8655 9349 11463 10261 12477 13169 8864 13168 8137 8665 8364 9137 12716 8653 13543 13361 14847 14217 14608 14321 14848 14218 14841 14815 14793 14727 14649 14559 14511 14499 14457 14343 14211 14205 14199 14689 14435 14851 14850 14347 14346 14731 14730 14563 14562 14794 14846 14849 14344 14342 14345 14840 14760 14596 14538 14336 14330 14324 14691 14436 14789 14783 14726 14720 14714 14679 14645 14639 14558 14552 14546 14543 14453 14447 14437 14196 14322 14323 14438 14797 14796 14461 14460 14729 14650 14728 14792 14795 14561 14456 14458 14459 14560 14325 14326 14327 14604 14602 14603 14592 14590 14591 14609 14517 14610 14683 14690 14597 14505 14598 14648 14651 14652 14653 14440 14439 14441 14843 14787 14842 14817 14781 14816 14339 14337 14338 14333 14331 14332 14713 14634 14712 14646 14556 14647 14541 14493 14539 14540 14542 14786 14721 14788 14450 14451 14452 14444 14445 14446 14685 14631 14632 14633 14677 14678 14684 14643 14722 14723 14724 14725 14790 14791 14844 14845 14553 14214 14340 14341 14454 14455 14554 14555 14557 14642 14644 14718 14784 14785 14838 14839 14636 14202 14328 14329 14442 14443 14544 14545 14635 14208 14334 14335 14448 14449 14715 14752 14753 14754 14758 14759 14782 14717 14547 14548 14549 14550 14551 14637 14638 14640 14641 14716 14719 13969 13871 13862 13837 13724 13679 13399 13382 12975 13825 13836 13702 13570 13207 13200 13826 13398 13870 13852 13723 13547 13385 12987 13699 13568 13389 12989 13697 13838 13839 12991 12988 12990 13692 13550 13698 13700 13555 13203 13397 13864 13711 13722 13557 13206 13201 13564 13393 13704 13701 13703 13558 13548 13556 13560 13865 13718 13863 13208 12992 13205 13713 13710 13712 13400 13209 13395 13873 13719 13872 13204 13190 13202 13720 13561 13721 13391 13394 13396 13562 13386 13563 13566 13569 13571 13565 13387 13390 13392 13567 13725 13726 14030 13976 13845 14418 14318 14017 14003 14023 13983 13848 14412 14400 14388 14187 13996 14301 14010 14002 13988 13998 14004 13850 14001 13999 13990 13997 14382 14172 14170 14164 14171 14146 14404 14392 14130 14152 14134 14271 14293 14299 14300 14129 14122 14128 14135 14136 14417 14295 14410 14411 14416 14166 14287 14294 14165 14022 14158 14159 14160 14288 14281 14289 14406 14283 14398 14399 14405 14275 14009 14153 14154 14282 14148 14140 14147 14277 14269 14276 14257 14258 14259 14141 13989 14142 14263 14264 14265 14270 14387 14190 14316 14317 14380 14381 14386 14393 14394 13851 13847 13978 14011 14012 13853 13846 14024 13991 13844 14025 13977 13975 14193 14504 14319 14503 14516 14433 14491 14515 14510 14509 14498 14492 14320 14434 14497 14032 13574 13875 13573 14311 14280 14143 14005 13881 13854 13706 13878 13729 14310 14298 14178 14041 13714 14037 13731 14286 14007 14015 13883 13860 13716 14044 14028 14020 13868 14038 14035 14036 13733 13576 13732 13717 13577 13715 13866 14039 14149 14150 14151 14026 14315 14279 14272 14278 14157 14284 14285 13858 13867 13869 14042 13879 14040 14156 14006 14155 13859 13707 13861 13885 13728 13884 14163 14184 14182 14183 14296 14181 14019 14312 14307 14313 14297 14169 14290 14291 14292 14029 14013 14018 14021 14027 14180 14173 14179 13855 14014 14016 14161 14162 14167 14168 14043 14185 14186 14302 14308 14309 14314 14304 13880 14034 14045 14174 14175 14303 14701 14656 14616 14494 14428 14711 14700 14688 14427 14415 14403 14567 14697 14432 14397 14595 14654 14655 14620 14702 14703 14533 14500 14501 14502 14601 14626 14704 14692 14686 14512 14617 14508 14506 14507 14627 14527 14621 14622 14628 14687 14607 14680 14681 14682 14594 14564 14593 14599 14600 14513 14409 14514 14605 14606 14520 14518 14519 14710 14630 14707 14708 14709 14694 14611 14612 14613 14693 14699 14526 14618 14619 14698 14524 14421 14525 14535 14529 14530 14531 14532 14534 14536 14537 14623 14624 14625 14629 14705 14706 14424 14413 14420 14431 14414 14426 14430 14401 14408 14407 14395 14425 14396 14429 14419 14402 14389 14889 14486 14823 14659 14487 14893 14937 14927 14919 14900 14885 14861 14810 14780 14769 14757 14747 14672 14585 14579 14770 14573 14589 14588 14586 14584 14587 14921 14920 14943 14942 14904 14903 14814 14813 14829 14827 14828 14662 14660 14661 14676 14675 14671 14673 14674 14922 14916 14923 14833 14663 14872 14830 14818 14735 14668 14936 14915 14899 14896 14882 14871 14809 14806 14803 14836 14776 14834 14835 14837 14667 14576 14664 14665 14666 14751 14750 14918 14812 14746 14748 14749 14811 14917 14888 14905 14906 14907 14826 14824 14825 14800 14798 14799 14944 14928 14941 14902 14862 14901 14870 14852 14869 14802 14738 14801 14880 14875 14881 14670 14582 14669 14939 14932 14938 14940 14743 14744 14745 14807 14808 14911 14924 14933 14934 14935 14898 14858 14897 14805 14734 14736 14737 14739 14740 14741 14742 14804 14914 14868 14873 14874 14878 14879 14908 14912 14913 14857 14859 14860 14863 14864 14865 14877 14775 14831 14832 14876 14895 14763 14819 14820 14853 14854 14855 14856 14894 14909 14910 14925 14926 14929 14930 14931 14768 14779 14766 14732 14657 14658 14767 14771 14733 14755 14570 14761 14777 14762 14756 14772 14778 14774 14773 13730 14867 14764 14822 14765 14887 14695 13401 14892 14696 14615 14614 13876 14523 14522 14521 14176 13572 13882 14306 14031 14177 14866 14033 14891 13727 14528 14886 14821 13874 13877 14884 14883 14305 13575 14890 14423 14422 14079 12808 14061 12789 12553 14080 12809 14073 14067 13923 13904 13772 13617 13598 13446 13258 13239 13045 12802 12547 14083 14082 13049 13048 14064 13776 13775 13450 13449 12792 12790 12791 12795 12794 12550 12793 13924 14078 14081 13046 13044 13047 13035 14072 13754 13428 13027 13038 13919 13913 13910 13771 13765 13613 13607 13604 13445 13439 13254 13246 13927 13926 13262 13261 13773 13618 13774 13922 13925 13447 13257 13259 13260 13448 13907 13905 13906 13601 13599 13600 13242 13240 13241 13032 14062 14060 14063 12798 12796 12797 13033 13034 14066 13757 13908 13909 14065 13028 13026 13029 13030 13031 13912 13760 13911 14068 14069 13243 13244 13245 13247 13248 13616 13619 13620 13621 13603 13431 13602 14075 13917 14074 13041 13039 13040 13433 13427 13429 13430 13432 13436 13434 13435 13605 13606 13762 13753 13755 13756 13758 13759 13761 13437 13249 13438 13614 13443 13615 13916 13766 13918 13251 12799 13036 13037 13250 13252 13253 13611 13767 13768 13769 13770 13920 13921 14076 14077 13442 12805 13042 13043 13255 13256 13440 13441 13444 13608 13609 13610 13612 13763 13764 13914 13915 14070 14071 13818 13527 13332 13335 14057 14046 13750 13583 13579 13514 13515 13526 13677 14052 13888 13590 13516 13667 13901 13584 13670 13886 13518 13350 13517 13668 13666 13669 13671 13520 13672 13734 13819 13816 13817 13887 13737 13889 13736 14049 13738 13581 13735 13739 13740 13741 13748 13744 13896 13892 13890 13891 13749 13593 13745 13746 13747 14047 13967 14048 13900 13895 13897 13898 13899 14054 13587 13742 13743 13893 13894 14050 14051 14053 14055 14056 13125 12685 13424 13413 13410 13338 12786 12531 12437 12931 12687 13419 13131 13126 12653 12538 13236 13409 13337 12658 12651 12899 13221 13009 12906 12901 12774 13339 13220 13333 12657 12395 12656 12686 12435 12678 13128 12900 13127 12902 12652 12903 12654 12394 12655 12770 12904 12905 13416 12541 12777 12783 12784 12785 12776 12773 12775 13129 13021 13225 13231 13017 13012 13130 13007 13132 13008 12534 12771 12772 13010 13014 13011 13013 13222 13223 13226 13224 13227 13408 13411 13414 13412 13415 13023 13020 13022 13421 13228 13417 13418 13420 12782 12780 12781 13018 13019 13230 12535 12778 12779 13015 13016 13229 13232 13233 13234 13235 13422 13423 13145 13588 13519 13334 13336 13586 13580 13582 13585 13595 13589 13591 13592 13521 13594 12544 13237 14058 13751 13025 13426 13596 13902 13024 13752 12788 13425 13597 12787 13903 14059 13238 13146 12917 12741 12181 12178 13144 12184 13376 13372 13197 13194 12978 12724 13345 13141 12483 12742 12728 12180 13370 12968 12743 12505 12745 12501 12744 12746 13184 12511 12966 12506 13189 13191 12981 12725 13178 12985 12962 12752 13347 13344 13346 13374 13182 13375 12970 12967 12969 12510 12182 12509 13199 13174 13198 12982 12979 12980 12508 12502 12507 12747 13140 12722 12750 12751 13181 13180 13183 12749 12503 12748 13175 12964 13179 12723 12484 12726 13176 13371 13373 13196 12727 12961 12965 12983 12959 12960 12963 12984 12986 13177 13195 11131 12926 12921 12682 12094 11840 11404 11011 10980 11502 11497 10983 11498 12670 12488 12160 11827 11825 11722 11371 11843 12920 12925 12422 11756 11399 12679 12093 11374 11376 11373 11375 11727 11845 12671 12924 12418 11755 11730 12490 12162 12062 11724 12416 12413 12068 12066 11844 11821 11822 12163 12159 12161 12164 12923 12674 12922 12681 12677 12680 12098 12072 12097 11731 11398 11729 11826 12165 12166 12928 12675 12927 11759 11754 11758 12489 12409 12485 12063 12417 11726 12064 11721 12065 12414 12673 12676 11725 11370 11728 12067 12069 12070 12071 12073 12410 12411 12412 12415 12419 12420 12669 12672 13143 12919 12486 12730 13148 11841 12918 12729 13147 12185 12487 12186 13142 7659 10133 9688 9398 9198 9397 7640 7660 10139 9859 8920 8916 8706 8411 8184 8179 9399 9854 8704 9681 9687 7663 8193 10136 9206 9396 9853 8707 9671 9200 7662 7661 9857 8914 8409 8406 8177 9677 9388 9194 9191 9187 9184 8910 8908 8710 8696 8691 8196 9400 8923 9393 9394 10135 9674 10134 9201 9199 9202 8195 8173 8194 9860 9390 9858 9690 9203 9689 8918 9392 9395 9389 8708 9673 8174 8175 9678 8695 9192 8909 9205 9183 9204 9670 9672 8912 8407 8408 8410 8911 8688 9185 9186 8412 8913 8915 9385 9391 8689 8191 8687 8690 8709 9188 9675 9676 10137 10138 8178 7641 8176 9386 8906 9387 8905 8180 8692 8693 8694 8697 8698 8907 9189 9190 9193 9679 9680 9855 9856 11480 10760 10591 10322 10296 9892 9869 9683 10154 9867 11489 11486 11367 10977 10589 10583 10299 10150 9863 10300 11134 10749 10327 9875 10140 10585 11481 10973 10735 10315 10308 11483 11127 11482 11125 10147 10303 10302 10754 10745 10310 11484 11365 11118 11114 10737 10141 10975 10592 10587 10590 10586 10144 10145 10146 10588 10976 10582 10978 10972 10307 9872 10306 11126 11113 11122 10316 10313 10314 10974 10581 10971 10305 9864 10304 10753 10748 10752 11366 11116 11368 10734 10746 10736 10580 10733 11123 10742 11124 11115 10739 11117 10747 10325 10741 10738 10309 10740 11119 11488 11490 11120 9873 10311 10312 10743 10744 11121 11485 11487 10295 9691 10297 10298 9865 9861 10143 9682 9862 9692 10301 10584 10142 11369 11723 11503 10982 11135 11720 10979 10981 11824 11372 11501 11828 11823 13528 12930 13348 13529 12929 12683 13349 13149 13150 13968 14191 14195 14200 13546 14192 13824 14189 14188 14123 14210 14198 14216 14209 14212 14201 14213 14220 14221 14194 13970 14203 13680 14219 14207 13678 13827 14124 13549 14215 14206 13381 13388 14197 13383 13384 13193 13192 12976 14204 7367 7356 6151 4529 4488 3335 4497 3906 3333 7364 6773 6757 6180 5600 5577 5036 3958 3952 3948 3943 3934 3900 3941 3928 7369 7354 4494 5603 7361 7358 6161 5624 5573 5067 4534 4528 3937 7359 6758 7357 4531 4517 4530 3938 3935 3936 6759 4527 4524 7365 4496 6163 6775 6182 5601 5043 4489 4542 4538 4520 4518 6767 6176 6174 6168 5618 5616 5610 5088 5086 5080 5076 5068 5037 3901 4492 4495 4491 6752 6760 6761 5066 5064 5065 7366 6769 7363 4521 3932 4519 5042 5039 5041 6164 6160 6162 4526 3939 4525 7368 6770 7348 3956 4490 4493 4523 3929 4522 4532 5069 5070 4533 3944 4535 4536 4544 5606 4541 4539 3945 4537 5038 4547 5040 5090 5574 5578 4545 3953 4546 6762 6771 6144 6169 5617 5087 5077 6765 6768 6772 7360 7362 5089 5082 5084 5085 5091 6764 6165 6175 6763 6766 6166 5604 6167 4543 3949 4540 5607 6170 6171 5078 5075 5079 5081 5083 5609 5073 5599 5602 5608 6181 5619 6178 5622 5611 5612 5613 5614 5615 5620 5621 5623 6172 6173 6177 6179 6745 6774 9411 9404 7936 7889 7326 6740 6736 9410 7916 7891 8933 8926 8422 8416 7925 7912 7908 9408 7919 7330 9401 7333 6741 7336 8436 7898 7343 8438 8435 8437 7897 7892 7896 8441 7893 9405 8930 7338 7337 8934 8925 8421 8418 8434 8428 7909 7905 7332 7894 7895 8417 7899 8415 7902 9407 8932 9406 7344 7341 7342 8938 8451 8937 8423 8419 8420 7340 6738 7339 9409 8935 8944 7900 7904 7906 8440 7920 8439 7901 7334 7903 8936 8432 8929 8433 7923 8431 8429 8928 8931 8427 7907 7345 7910 8430 7911 8424 8425 8426 8921 8927 7644 7649 6733 6140 5010 4484 6139 4468 5918 7645 7324 7080 6726 6489 5570 5555 5031 7648 6137 4479 6731 4482 7647 7646 7651 6122 6133 5028 5011 6134 6725 5023 6727 6722 5552 5032 6128 6121 5566 5563 5556 5013 5009 5012 6141 5571 6138 7321 7081 7650 7082 7083 5020 6730 6131 6732 5033 5029 5030 6724 7322 7323 5551 5549 5550 6491 6490 4480 5021 5022 5024 6135 5027 4485 5026 6721 5562 5559 6129 6728 6729 5557 5025 5558 5569 5920 6123 6124 6126 6723 5568 5560 5561 5564 5565 5567 5572 6125 6127 6130 6132 6136 6739 7327 7335 6742 7328 6734 6735 6737 7890 7331 7329 7888 7325 5575 5035 7346 6143 7921 7347 6142 7914 7913 5576 4486 7922 5034 6743 7917 7924 6744 5366 3896 3355 1335 1323 3895 3295 1871 5368 5014 4825 4470 4260 3658 3297 3056 2692 2459 2433 1847 1873 3894 3296 1317 1870 5017 3300 2691 1857 1328 3889 3298 1852 4473 4822 4257 3657 3055 2456 2435 1849 4476 4253 4252 3893 3890 3652 3648 3645 3640 3638 3292 3290 3061 3051 3046 3043 3037 3035 2455 2452 2448 2446 2441 1863 2753 2693 3299 2694 3898 3885 3897 1858 1320 1859 3661 3655 3660 1868 5367 4824 2431 2695 2696 1330 1327 1874 1855 3659 3059 2436 2460 1867 3049 3058 3060 2438 1846 2437 3048 2461 3050 3052 3654 3656 3651 4261 3289 3887 4478 1856 1329 1854 4254 4250 3635 3045 3040 3032 1865 2440 2444 3886 3294 3301 3302 3888 2439 1850 2442 4475 4472 4474 3650 3054 3653 4256 3646 4255 3634 3636 3637 1862 1860 1861 2454 2450 2451 2453 3053 4477 3031 3291 3293 3891 3892 4246 1866 1864 1869 2447 2449 2457 2458 3057 1316 1851 1853 2443 2445 5019 4247 4248 4249 4821 4823 5018 4259 2432 3033 3034 3036 3038 3647 4258 4826 3039 3041 3042 3044 3047 3639 3641 3642 3643 3644 3649 4251 1324 3330 3326 1566 396 1326 3323 873 292 1325 884 3324 875 294 2720 2122 1582 1104 1087 690 675 514 509 2724 1559 2725 2718 3325 2125 515 295 403 874 508 405 402 404 2118 1584 1105 1085 691 673 408 1565 695 410 2719 2124 2717 2120 2117 2119 1563 2121 2123 1562 510 511 1106 1103 1107 1564 1110 1558 507 411 512 1583 1108 1581 409 516 517 692 1084 1109 672 668 674 1086 689 693 694 696 697 1080 3352 3339 2721 2155 882 881 3348 3344 2751 2136 1596 1577 1117 1099 877 685 3351 2154 2137 3327 3341 2749 872 684 3349 2153 2134 2734 3345 1595 1575 1119 1097 2743 2738 2149 2143 1593 1586 883 878 880 698 3353 2746 3354 3342 2737 3340 2156 1844 2151 1098 686 1096 876 699 879 1111 2733 2133 1116 1576 1100 1574 2740 2141 2739 2741 3343 3346 2736 2140 2735 1118 871 1112 2745 1594 1587 2146 2747 2748 2147 2150 2152 2750 2752 2742 3347 3350 1115 1113 1114 1591 1314 1578 1585 1588 1589 1590 1592 1597 2135 2142 2144 2145 2148 2744 1101 2723 3328 885 3329 2138 1579 513 687 886 688 2722 1102 1580 2139 2755 1318 1331 1872 1334 1321 2157 1333 1848 1845 1319 1315 3356 2754 3357 2434 1322 1332 3899 5553 4469 3947 3954 3951 3933 4471 3931 3930 3927 3905 3904 3903 3902 3950 5015 3957 4481 4487 4467 4483 5919 3331 3946 5554 3955 5016 7385 5862 5583 4498 3923 7370 5071 3913 7384 7351 6796 6750 6149 5860 5627 5579 5058 3919 5047 3915 7386 5861 3921 7349 6205 5584 4511 4503 5586 5049 5585 4504 4501 4502 5051 4505 7381 6203 4506 6756 6797 6155 5589 6148 5597 5059 6749 6159 5593 5055 5052 5046 5050 7383 6792 7382 6207 6204 6206 4510 4509 4512 7387 6793 6799 4508 3917 4507 6798 6208 6795 5053 5054 5056 6201 6791 6794 5057 4513 5060 6200 5859 6202 5588 5587 5590 6747 7350 7352 5591 5592 5594 6746 6146 6748 5595 5061 5596 6157 6754 6755 6154 5580 6145 6147 6153 6156 6158 7600 7026 6441 4195 3924 7050 6440 4767 3588 6420 5872 5845 5319 5311 4774 4196 7048 4770 3592 7023 5873 7027 4200 4202 4199 4201 4204 6452 4773 6423 5876 5848 5321 5314 4775 4203 5882 5327 4781 7049 6456 7041 4776 4514 4777 4772 4198 4771 7029 6450 7028 4205 3594 4206 6421 6454 6455 4779 4778 4780 5879 6417 6422 5312 5308 5313 5880 6451 6453 5323 5044 5322 5878 5846 5881 5325 5320 5324 5326 5842 5847 5877 5874 5875 5063 5062 3925 4516 4515 6442 5581 5582 6443 5289 3568 6413 6409 4194 5287 4177 6395 6391 5835 5301 5284 4752 4188 4182 6415 6405 4187 5824 4181 4180 5288 5286 5282 4747 5832 5296 4759 5821 6390 5836 5278 4745 6411 5815 5811 5306 5299 5274 5302 4766 5300 4760 4757 4758 6412 5834 6410 5823 5820 5822 4749 4178 4748 6414 5840 5841 5307 4761 5283 5281 5279 5818 5819 5816 6393 6394 4751 4750 5273 4746 5277 5280 4763 4189 4762 5275 5814 5817 5833 5304 5303 4765 5272 5276 5305 6392 4764 5297 5298 5810 5812 5813 5837 5838 5839 6389 5294 8645 8131 7572 7019 6408 5827 5295 7599 7021 5806 8120 7592 7576 7003 6991 6388 7598 7016 5831 8643 7559 7000 8130 7578 7569 7014 6403 6400 5829 5828 5830 8133 8127 8132 7571 6992 7570 7013 7011 7012 6399 8129 6993 7582 7590 8121 7004 6997 7587 7010 7575 7573 7574 7593 7022 7594 6998 6971 6999 7589 6401 6384 6402 8646 8124 8647 7591 7015 7588 7005 6397 7006 7595 8125 8128 8122 7583 8126 7581 8118 8123 7585 6385 7577 7001 7007 7584 7579 6994 6995 6996 7008 7009 7580 7586 6416 6396 7002 6404 7020 7018 5825 5290 6406 5826 6398 6407 7017 4192 7602 6419 5309 7596 6418 5844 5843 7025 4768 7597 5310 4769 7024 7601 1769 3586 3321 3311 2102 2964 1765 3582 3573 3563 3317 2991 2705 2358 1547 1255 1073 809 795 3319 3584 3308 1548 2962 1782 3579 3576 3312 2987 2984 2107 2963 2366 3316 2988 2707 1550 3572 3562 2966 1253 1076 1249 840 2975 2971 2958 2710 2388 2387 2384 2375 2365 2362 2359 2111 1803 1800 1798 1777 1770 1554 1277 1246 2357 2356 3320 2715 3322 3583 2983 3585 3313 2709 3314 2105 2106 2108 3581 2977 3580 1783 1251 1078 2381 2368 1779 2367 1254 1250 1252 1079 796 1077 1784 1764 1781 2713 2989 2706 1552 2979 3564 2385 2377 2360 1801 1795 1775 2113 2711 2712 3315 3318 2380 2976 2978 1780 1247 1772 1776 1778 1280 1555 1802 2110 2109 2112 2702 2708 1551 1074 1553 2391 2981 2990 2383 2980 2982 3577 3578 2363 1773 2364 3565 2959 2972 1805 2114 2386 3575 1804 2379 2382 2973 2974 3574 2716 1276 1556 1557 2115 2116 2714 2985 1807 2389 2390 2986 2355 1275 1771 1774 2361 1806 798 1245 1248 1278 1279 1796 1797 1799 2376 2378 2960 2961 2965 2967 219 801 401 1244 220 1239 1235 793 442 386 384 246 239 450 395 1242 221 799 226 218 400 382 399 238 237 223 447 1236 1232 789 440 217 245 785 781 443 435 430 426 234 232 383 387 388 214 802 775 800 1238 778 1237 248 241 247 791 788 790 225 215 224 389 216 385 228 774 792 445 1240 235 243 242 244 432 439 444 782 779 1241 229 233 236 773 777 780 1233 1234 436 786 787 446 448 449 441 240 433 434 230 222 231 783 1243 428 427 429 431 437 438 776 784 3909 2729 1088 807 671 452 3907 806 3307 2701 2129 2101 1570 1544 1070 665 658 655 3336 804 2726 1083 407 391 2730 1094 683 458 3910 3305 3908 3304 808 455 459 2699 3303 3306 2697 456 2128 677 392 2099 1542 1068 663 1063 1573 1092 678 676 679 680 2731 2131 2732 457 394 454 1090 1089 1091 2700 2130 2698 666 660 664 651 681 682 2097 1571 2132 662 659 661 1071 1065 1069 1066 1060 1093 1095 1540 2098 2100 1067 656 1064 1538 1569 1572 1061 653 1062 1539 1541 1543 1545 249 805 393 451 654 652 453 803 406 390 657 1072 1768 1766 667 1075 1546 2703 3310 2704 1256 1257 1549 2104 3309 2103 811 810 1767 794 797 4186 3587 3916 3926 3912 3922 3918 3593 4193 3911 3589 3591 4176 4197 4191 3566 3590 3567 4179 3914 3920 4190 7918 7915 3940 6152 6753 5605 5072 6751 4500 3332 4499 3337 3942 5074 5045 1561 1568 2727 3334 5598 2126 2728 7355 1567 2127 3338 227 7353 1081 1560 6150 669 1082 397 670 398 5048 293 9871 8919 8917 8413 8414 9402 9868 8183 8182 8181 9403 9870 7887 8922 9866 8924 7643 7642 13708 13856 12993 14575 13559 14391 13404 8107 12754 12739 14273 12977 12504 11130 11133 12179 14566 14580 12177 12740 14583 12183 11839 11842 11499 10761 11136 13210 10762 14000 11500 11132 10750 13578 14496 10324 10321 10323 9874 14490 14274 9894 14485 9876 14495 14572 14488 14484 8943 8452 9412 14144 12500 8644 7930 9413 14565 14390 8119 14008 9149 8114 8115 14578 14569 8450 8945 10751 14581 8136 13212 8134 14571 12995 8642 7927 14145 8117 7937 13709 7372 14489 8649 14483 7607 8650 14568 6801 7373 13857 7612 7047 6800 6211 14574 10326 5863 7935 6446 7046 13402 6210 6445 14577 12176 9893 12393 10985 12800 12397 7658 12533 12434 10984 9685 11014 12532 12432 12436 9197 11401 12096 12557 10890 10889 10888 12556 12398 10885 10884 10883 10882 12551 12552 10879 10878 10877 10876 12396 12545 10873 10872 12399 10870 10869 12546 10867 10866 12540 11403 11757 10595 12807 10569 10568 10567 10564 10563 12801 10528 10527 12810 10525 10524 10523 10522 10521 10494 12537 11400 10034 12555 5285 10153 10152 12542 10036 10493 11012 9196 9610 9609 10593 8190 9122 12812 9119 9118 9115 9114 12543 9112 12554 10149 11753 8705 8625 12804 8623 8622 12548 8619 8617 8615 12803 8703 12549 10148 8111 12536 8109 8108 8192 8105 12811 9686 12433 12539 12806 7561 7560 11402 6973 6972 6387 6386 5808 5807 12684 5293 5292 5291 7657 12095 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 44 47 50 53 55 58 59 62 63 65 68 71 74 75 76 81 84 87 91 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 150 153 156 159 162 165 168 171 174 177 180 183 186 187 188 191 194 197 200 205 212 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 256 259 262 265 266 267 268 269 270 271 272 273 274 275 276 279 282 283 284 287 290 293 296 299 302 303 304 307 310 313 316 319 322 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 376 379 382 385 386 387 390 393 396 399 402 405 408 411 414 417 420 423 424 425 428 431 440 451 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 518 521 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 550 553 556 557 560 563 566 569 572 575 578 581 584 587 588 591 594 595 596 597 598 599 600 603 606 609 612 615 618 621 624 627 628 629 634 637 640 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 704 707 710 713 716 719 720 722 723 726 729 732 735 738 742 746 749 752 755 758 761 764 767 770 773 777 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 814 817 819 820 821 823 824 825 826 827 828 829 830 831 832 835 838 839 842 845 848 849 850 853 856 859 862 867 868 871 874 877 886 900 923 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 989 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1007 1010 1013 1016 1019 1022 1025 1028 1031 1034 1037 1040 1043 1046 1047 1048 1051 1054 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1111 1114 1117 1118 1120 1123 1126 1129 1132 1135 1138 1141 1142 1143 1146 1149 1152 1155 1158 1161 1164 1167 1170 1173 1178 1185 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1235 1238 1241 1242 1244 1247 1250 1253 1256 1259 1262 1263 1264 1267 1270 1273 1276 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1333 1336 1339 1342 1345 1348 1351 1354 1357 1358 1359 1362 1365 1368 1371 1374 1377 1380 1383 1388 1395 1407 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1450 1453 1455 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1475 1478 1481 1484 1487 1490 1491 1492 1494 1497 1500 1503 1506 1509 1510 1513 1516 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1574 1577 1578 1579 1582 1585 1588 1591 1594 1597 1600 1601 1602 1603 1604 1607 1610 1615 1620 1631 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1687 1690 1693 1696 1699 1700 1701 1702 1704 1707 1710 1713 1716 1719 1720 1722 1723 1724 1729 1734 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1775 1778 1779 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1798 1801 1804 1807 1810 1813 1816 1819 1820 1821 1822 1823 1826 1829 1832 1835 1849 1860 1880 1904 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1972 1973 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1991 1994 1997 1998 2001 2004 2007 2010 2011 2012 2015 2018 2021 2024 2027 2030 2033 2036 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2077 2078 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2095 2098 2101 2104 2107 2108 2109 2112 2115 2118 2121 2124 2127 2130 2133 2136 2143 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2196 2199 2202 2205 2206 2209 2212 2215 2218 2221 2222 2223 2226 2229 2232 2235 2238 2241 2246 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2286 2287 2290 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2314 2315 2318 2321 2324 2327 2330 2333 2336 2339 2342 2345 2348 2349 2350 2351 2352 2353 2354 2357 2362 2367 2370 2373 2388 2399 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2468 2471 2474 2477 2480 2483 2486 2487 2488 2491 2494 2497 2500 2503 2506 2509 2512 2515 2518 2521 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2564 2567 2568 2571 2574 2577 2580 2583 2586 2587 2588 2591 2594 2597 2600 2605 2612 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2701 2704 2705 2708 2711 2714 2717 2720 2723 2726 2729 2732 2733 2734 2735 2736 2737 2738 2741 2744 2747 2750 2751 2752 2753 2754 2755 2756 2757 2762 2765 2768 2771 2774 2775 2780 2785 2790 2795 2800 2803 2820 2835 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2903 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2924 2927 2928 2931 2934 2937 2940 2943 2946 2947 2948 2949 2950 2953 2956 2959 2962 2965 2968 2971 2974 2977 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3021 3024 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3047 3050 3053 3056 3059 3062 3065 3068 3071 3072 3073 3074 3075 3078 3081 3084 3089 3092 3095 3098 3101 3113 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3176 3179 3180 3181 3184 3187 3190 3193 3196 3199 3202 3203 3204 3205 3206 3209 3212 3215 3218 3221 3222 3223 3226 3229 3232 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3284 3285 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3304 3307 3310 3313 3316 3317 3318 3321 3324 3327 3330 3333 3336 3339 3342 3345 3348 3351 3354 3357 3360 3367 3380 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3435 3438 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3453 3456 3459 3462 3465 3468 3471 3474 3475 3476 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3534 3537 3540 3543 3546 3548 3551 3554 3557 3560 3563 3564 3565 3568 3571 3574 3577 3580 3583 3586 3589 3592 3595 3604 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3685 3688 3689 3690 3693 3696 3699 3702 3705 3708 3711 3714 3717 3720 3721 3722 3723 3724 3727 3730 3733 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3748 3753 3758 3761 3762 3763 3766 3769 3776 3781 3786 3789 3798 3813 3832 3869 3908 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3980 3983 3986 3989 3992 3995 3998 4001 4002 4005 4008 4011 4012 4015 4018 4023 4026 4029 4032 4035 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4062 4065 4066 4067 4070 4071 4072 4073 4076 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4091 4094 4097 4102 4107 4112 4117 4120 4121 4126 4129 4132 4139 4144 4161 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4203 4205 4206 4208 4210 4213 4216 4219 4222 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4239 4242 4245 4248 4251 4253 4256 4263 4266 4271 4276 4281 4284 4287 4292 4298 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4332 4334 4335 4337 4340 4343 4346 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4362 4365 4368 4371 4374 4379 4381 4382 4385 4388 4395 4398 4405 4410 4428 4440 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4492 4495 4498 4501 4504 4507 4512 4517 4522 4527 4532 4537 4542 4545 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4581 4584 4585 4586 4587 4588 4589 4590 4591 4592 4595 4598 4601 4604 4607 4610 4615 4622 4625 4628 4631 4638 4647 4658 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4702 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4721 4724 4727 4730 4733 4736 4737 4738 4739 4740 4743 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4761 4766 4771 4776 4779 4782 4785 4788 4791 4796 4803 4806 4809 4812 4815 4824 4833 4844 4865 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4943 4944 4947 4950 4951 4952 4953 4954 4955 4956 4959 4962 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4985 4986 4989 4990 4995 5000 5003 5004 5007 5010 5013 5020 5025 5030 5037 5040 5045 5050 5059 5064 5067 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5134 5137 5140 5141 5144 5145 5148 5151 5154 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5174 5179 5184 5187 5190 5193 5198 5203 5208 5213 5216 5219 5222 5225 5228 5235 5240 5245 5262 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5302 5304 5305 5306 5308 5310 5313 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5335 5336 5339 5342 5345 5348 5353 5357 5360 5365 5370 5375 5376 5379 5382 5385 5390 5397 5402 5405 5410 5417 5420 5423 5428 5438 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5478 5480 5481 5482 5484 5486 5489 5492 5495 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5517 5518 5523 5528 5531 5534 5537 5540 5545 5548 5550 5553 5556 5559 5564 5569 5576 5579 5582 5585 5586 5596 5603 5610 5633 5649 5680 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5747 5750 5751 5754 5757 5760 5763 5764 5765 5768 5771 5772 5773 5774 5777 5780 5783 5784 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5804 5809 5814 5817 5820 5823 5826 5827 5830 5833 5838 5843 5846 5851 5856 5861 5870 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5919 5920 5921 5922 5923 5924 5925 5928 5933 5936 5939 5942 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5964 5967 5970 5971 5974 5977 5980 5983 5988 5991 5996 5999 6004 6007 6012 6015 6018 6021 6028 6035 6044 6063 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6107 6109 6110 6111 6113 6114 6115 6118 6121 6122 6123 6124 6125 6126 6127 6128 6129 6131 6132 6137 6140 6143 6146 6150 6153 6156 6159 6162 6163 6170 6179 6182 6187 6206 6207 6208 6209 6210 6211 6212 6213 6216 6217 6218 6219 6220 6221 6222 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6237 6240 6243 6244 6245 6246 6247 6248 6249 6252 6255 6258 6259 6262 6265 6270 6275 6280 6287 6290 6295 6310 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6344 6346 6348 6351 6354 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6372 6377 6378 6381 6386 6390 6395 6401 6404 6405 6408 6413 6420 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6474 6477 6480 6483 6486 6489 6494 6497 6502 6507 6514 6521 6524 6527 6547 6556 6566 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6610 6613 6616 6619 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6649 6654 6657 6660 6663 6666 6671 6674 6675 6678 6679 6682 6685 6690 6697 6702 6705 6708 6715 6722 6725 6730 6731 6738 6745 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6828 6831 6834 6835 6836 6837 6838 6839 6840 6843 6846 6849 6852 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6870 6873 6878 6883 6888 6893 6898 6901 6904 6909 6914 6919 6924 6929 6934 6952 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7046 7047 7050 7053 7056 7059 7062 7065 7068 7071 7074 7077 7080 7081 7082 7083 7084 7087 7090 7093 7096 7099 7102 7105 7106 7107 7108 7109 7110 7111 7114 7117 7122 7127 7132 7135 7138 7141 7146 7149 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7220 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7251 7254 7257 7260 7263 7266 7269 7272 7275 7278 7281 7284 7287 7290 7293 7296 7299 7302 7305 7308 7311 7314 7317 7318 7319 7322 7325 7326 7329 7334 7344 7347 7350 7353 7356 7365 7370 7395 7430 7431 7505 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7616 7619 7622 7625 7626 7627 7630 7631 7632 7633 7634 7637 7640 7643 7646 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7666 7669 7672 7675 7678 7681 7688 7691 7696 7701 7704 7707 7710 7713 7718 7723 7730 7735 7742 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7788 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7814 7817 7820 7823 7824 7825 7826 7827 7828 7829 7832 7835 7838 7841 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7858 7863 7868 7869 7872 7875 7876 7881 7886 7891 7896 7899 7900 7903 7908 7917 7922 7927 7930 7947 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7994 7996 7997 8000 8003 8006 8007 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8025 8028 8033 8037 8042 8043 8044 8047 8050 8055 8060 8065 8070 8075 8080 8085 8090 8093 8098 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8134 8135 8137 8139 8140 8143 8144 8147 8149 8152 8155 8156 8159 8162 8165 8170 8173 8178 8179 8182 8185 8188 8189 8190 8193 8196 8204 8214 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8265 8268 8271 8274 8275 8278 8279 8280 8283 8286 8289 8290 8291 8292 8293 8296 8301 8304 8307 8312 8317 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8362 8365 8368 8373 8378 8383 8388 8393 8398 8401 8404 8411 8418 8431 8444 8459 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8534 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8563 8566 8569 8572 8573 8574 8577 8580 8583 8586 8589 8592 8595 8598 8601 8604 8607 8610 8613 8616 8617 8618 8621 8624 8627 8630 8633 8634 8635 8636 8641 8646 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8699 8702 8705 8706 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8732 8735 8736 8739 8742 8745 8748 8751 8754 8757 8760 8761 8764 8765 8766 8767 8770 8773 8776 8779 8782 8785 8788 8791 8794 8797 8800 8805 8810 8811 8812 8813 8814 8815 8820 8823 8826 8829 8847 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8881 8883 8885 8888 8891 8892 8893 8894 8895 8896 8897 8898 8899 8901 8904 8905 8908 8913 8918 8921 8926 8929 8932 8937 8943 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8987 8990 8991 8994 8997 8998 8999 9002 9007 9008 9011 9012 9015 9016 9017 9018 9023 9030 9033 9036 9041 9046 9049 9052 9065 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9105 9108 9111 9114 9115 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9139 9144 9147 9150 9153 9156 9163 9164 9169 9172 9177 9180 9183 9186 9189 9192 9197 9202 9205 9212 9219 9228 9243 9260 9273 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9379 9380 9383 9386 9389 9392 9395 9398 9401 9404 9407 9408 9409 9410 9411 9414 9417 9420 9423 9426 9429 9430 9431 9432 9433 9434 9437 9440 9443 9448 9453 9456 9459 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9510 9513 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9532 9535 9538 9541 9544 9547 9550 9553 9556 9559 9562 9565 9568 9571 9572 9575 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9623 9626 9629 9632 9635 9636 9638 9639 9642 9645 9648 9651 9654 9657 9660 9663 9664 9665 9666 9671 9682 9697 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9755 9758 9759 9760 9763 9766 9769 9772 9775 9778 9781 9784 9785 9786 9789 9792 9795 9798 9801 9804 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9859 9862 9865 9868 9871 9872 9875 9878 9881 9884 9885 9886 9889 9892 9895 9898 9901 9904 9909 9916 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9964 9967 9970 9973 9974 9977 9980 9983 9986 9987 9988 9991 9994 9997 10000 10003 10006 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10051 10052 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10069 10072 10075 10078 10081 10084 10085 10086 10087 10090 10093 10096 10099 10102 10105 10108 10111 10112 10113 10116 10119 10128 10139 10156 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10257 10260 10263 10266 10267 10270 10273 10276 10279 10282 10283 10284 10285 10286 10287 10288 10289 10290 10293 10296 10299 10302 10305 10308 10311 10314 10317 10320 10325 10328 10331 10334 10337 10340 10341 10342 10347 10350 10353 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10437 10438 10441 10444 10447 10450 10453 10456 10459 10462 10465 10468 10469 10470 10473 10476 10479 10482 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10499 10504 10509 10514 10519 10524 10527 10530 10535 10540 10560 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10618 10621 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10659 10662 10665 10668 10671 10674 10677 10680 10681 10682 10685 10688 10691 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10709 10714 10719 10722 10725 10728 10733 10738 10741 10744 10747 10754 10759 10764 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10853 10856 10859 10862 10865 10866 10869 10872 10875 10878 10881 10884 10885 10886 10887 10888 10889 10890 10893 10896 10899 10902 10905 10908 10911 10914 10915 10916 10917 10918 10919 10920 10921 10924 10927 10930 10935 10940 10943 10946 10951 10956 10963 10978 10999 11022 11063 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11137 11139 11141 11143 11146 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11177 11179 11181 11186 11191 11194 11197 11200 11205 11208 11212 11215 11218 11221 11224 11227 11230 11233 11238 11241 11244 11247 11254 11263 11274 11279 11288 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11342 11345 11346 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11363 11366 11367 11370 11373 11376 11379 11382 11385 11388 11391 11394 11397 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11427 11430 11431 11432 11435 11436 11437 11438 11439 11440 11441 11442 11445 11450 11455 11458 11463 11466 11471 11476 11479 11482 11485 11492 11501 11514 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11562 11565 11568 11569 11570 11573 11574 11575 11578 11581 11584 11587 11590 11593 11596 11597 11600 11601 11602 11603 11606 11611 11616 11619 11626 11633 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11658 11661 11662 11665 11666 11667 11668 11669 11670 11671 11672 11675 11680 11685 11690 11695 11698 11703 11708 11713 11716 11730 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11771 11774 11776 11778 11780 11782 11785 11788 11790 11793 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11817 11822 11824 11825 11830 11835 11838 11841 11844 11847 11850 11853 11856 11859 11863 11868 11873 11876 11885 11894 11900 11905 11921 11940 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 12000 12002 12003 12005 12007 12010 12011 12014 12017 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12040 12042 12047 12052 12055 12058 12061 12062 12065 12070 12075 12080 12085 12090 12094 12097 12100 12103 12108 12113 12120 12123 12126 12129 12136 12145 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12189 12192 12195 12196 12199 12202 12203 12204 12207 12210 12211 12212 12213 12216 12221 12224 12229 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12270 12273 12276 12279 12282 12285 12288 12289 12290 12291 12294 12297 12298 12299 12300 12301 12302 12303 12306 12311 12316 12321 12324 12327 12332 12337 12350 12365 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12424 12427 12430 12433 12436 12439 12442 12443 12444 12447 12450 12453 12456 12459 12462 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12524 12527 12528 12531 12534 12537 12540 12543 12546 12549 12552 12553 12554 12555 12558 12561 12566 12577 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12642 12643 12646 12649 12652 12655 12658 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12675 12680 12683 12688 12693 12698 12701 12704 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12770 12775 12778 12779 12782 12785 12788 12791 12794 12797 12800 12801 12802 12805 12808 12811 12814 12817 12820 12829 12842 12855 12864 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12944 12947 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12981 12982 12985 12988 12991 12994 12997 13000 13003 13006 13009 13012 13015 13018 13019 13020 13021 13022 13025 13028 13031 13034 13035 13036 13037 13038 13039 13040 13041 13046 13051 13056 13059 13062 13065 13070 13075 13078 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13123 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13143 13146 13147 13150 13153 13156 13159 13162 13165 13168 13171 13174 13177 13180 13183 13184 13187 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13238 13241 13244 13246 13247 13250 13253 13256 13259 13261 13264 13265 13266 13269 13270 13271 13272 13275 13278 13296 13309 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13394 13395 13398 13401 13404 13405 13407 13410 13413 13414 13416 13417 13419 13422 13425 13428 13431 13433 13434 13435 13436 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13453 13456 13459 13462 13465 13468 13471 13476 13483 13491 13496 13503 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13552 13553 13554 13555 13556 13558 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13574 13577 13580 13581 13583 13586 13589 13592 13595 13598 13601 13604 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13653 13654 13657 13660 13663 13666 13669 13670 13671 13672 13673 13676 13679 13682 13685 13688 13689 13690 13691 13694 13699 13702 13705 13720 13735 13753 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13812 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13834 13837 13840 13843 13846 13849 13852 13855 13858 13861 13864 13867 13870 13873 13876 13879 13882 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13931 13934 13937 13940 13943 13946 13949 13952 13955 13958 13961 13964 13971 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14003 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14024 14027 14030 14033 14036 14039 14040 14041 14043 14046 14049 14051 14052 14055 14058 14061 14062 14063 14068 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14111 14114 14117 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14133 14136 14139 14140 14143 14146 14149 14152 14155 14158 14161 14162 14163 14175 14188 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14269 14272 14275 14278 14281 14284 14285 14286 14287 14288 14291 14294 14297 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14317 14320 14325 14328 14333 14336 14339 14344 14347 14350 14353 14360 14367 14372 14377 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14415 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14436 14437 14440 14443 14446 14449 14452 14455 14456 14457 14459 14460 14461 14464 14467 14470 14473 14478 14481 14484 14488 14501 14502 14503 14504 14505 14506 14507 14508 14509 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14532 14533 14536 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14554 14555 14558 14561 14564 14567 14570 14573 14576 14579 14582 14583 14586 14589 14592 14595 14602 14613 14633 14655 14693 14711 14944 14945 21 22 11 9 23 10 11 19 20 19 25 42 32 33 34 35 45 36 24 29 41 30 31 40 49 41 57 51 42 50 43 49 47 44 47 40 56 54 48 44 46 43 54 45 48 50 53 51 52 52 58 56 55 55 57 58 59 59 128 82 67 83 80 84 68 81 78 79 96 107 97 98 99 80 81 100 101 90 88 91 92 93 94 95 110 124 88 89 111 107 109 112 108 109 119 110 127 117 111 116 112 123 118 122 125 115 108 121 113 113 114 114 121 115 116 117 118 119 120 122 123 124 125 126 126 127 128 257 146 136 148 149 137 147 137 144 145 146 158 168 173 172 147 157 165 166 160 167 159 157 180 177 158 159 160 181 161 162 163 164 176 188 178 172 173 176 177 179 187 184 189 174 175 178 179 180 185 181 186 183 182 184 185 186 187 188 189 190 190 256 199 210 211 209 212 200 213 214 207 208 233 227 209 228 229 234 219 220 221 222 223 224 225 226 239 242 240 241 233 234 249 235 239 240 244 241 236 250 243 247 253 248 235 238 236 237 242 243 245 244 246 245 246 254 247 248 249 250 251 252 253 254 255 255 256 257 502 267 268 269 291 292 270 293 290 271 272 284 285 286 287 289 288 289 330 316 317 318 319 306 320 321 290 304 303 305 310 311 312 313 314 315 329 304 336 344 333 305 355 335 331 349 306 308 309 307 333 334 350 329 334 330 335 336 337 341 342 356 357 345 351 352 361 353 361 362 362 354 331 332 349 338 337 338 348 339 347 339 340 341 342 343 344 345 346 352 353 360 354 359 355 356 357 360 358 358 359 363 365 365 363 364 364 366 366 501 383 373 384 385 387 374 382 386 387 394 395 396 397 398 393 390 391 392 393 433 412 413 434 426 413 414 414 416 415 420 415 421 425 417 416 424 422 430 436 432 437 435 423 429 431 417 418 419 439 420 418 422 423 424 427 425 426 427 428 429 428 430 431 432 433 434 435 436 437 438 438 439 500 448 456 458 457 459 446 455 460 461 456 469 483 475 476 457 468 473 474 467 482 469 472 495 494 467 487 468 470 471 472 482 485 489 483 485 486 493 491 498 497 492 490 488 484 486 487 496 488 490 491 492 493 494 496 495 497 498 499 499 500 501 502 1002 524 510 511 525 526 527 512 521 522 523 524 544 551 545 540 546 525 526 536 540 541 542 537 543 550 536 562 537 563 553 558 552 555 538 539 554 553 554 550 551 555 557 561 556 559 566 567 552 560 565 556 557 558 564 559 565 560 561 562 563 564 566 567 568 568 640 589 590 576 577 578 579 586 587 586 588 592 589 602 603 604 605 614 591 598 599 600 601 615 618 620 619 625 622 616 619 614 621 620 621 634 635 624 631 637 615 623 633 636 630 632 616 618 617 622 623 627 639 629 624 625 626 628 628 629 630 631 632 633 634 635 636 637 638 638 639 640 757 647 645 657 655 656 655 659 673 665 666 667 657 668 669 658 663 664 677 677 674 675 678 673 678 680 682 688 679 679 686 687 681 674 675 676 680 681 689 683 682 683 684 685 686 687 688 689 690 690 756 699 711 714 697 712 713 710 708 708 711 724 725 726 712 727 728 713 709 719 720 721 722 735 723 739 738 740 736 735 738 739 741 742 755 740 737 748 749 743 752 746 751 753 747 736 737 745 741 742 745 744 743 750 746 747 748 749 750 751 752 753 754 754 755 756 757 1001 763 764 762 774 773 775 776 782 786 787 788 789 790 783 774 780 781 782 783 780 800 781 784 785 799 813 804 800 799 802 801 807 801 814 803 802 810 815 811 813 809 803 804 808 807 805 806 808 809 810 812 812 811 814 815 816 816 816 876 822 836 823 835 824 825 832 833 834 848 856 849 835 857 850 844 845 846 847 842 860 842 865 861 866 843 862 856 857 860 861 862 863 864 870 869 871 868 867 858 859 863 864 869 872 870 865 866 867 868 871 872 873 873 874 874 875 875 876 1000 887 883 884 885 885 895 897 899 898 895 896 918 899 909 896 910 919 911 900 901 907 917 908 920 921 927 926 929 917 920 918 919 921 930 925 931 934 933 928 934 924 922 923 924 925 926 927 928 932 933 929 930 931 932 935 936 935 936 937 937 999 946 957 958 959 960 956 947 947 954 955 972 976 977 967 978 956 966 965 971 972 973 974 975 966 984 968 986 967 970 968 969 982 983 982 983 987 984 988 985 985 993 989 998 995 986 987 988 994 991 989 992 990 994 995 996 997 996 997 998 998 999 1000 1001 1002 2011 1010 1021 1023 1022 1011 1024 1011 1020 1019 1020 1046 1037 1021 1038 1039 1022 1030 1034 1035 1036 1030 1045 1049 1061 1032 1050 1051 1031 1032 1033 1045 1046 1049 1050 1060 1052 1047 1056 1058 1062 1057 1059 1047 1054 1048 1051 1054 1052 1053 1055 1055 1056 1057 1058 1059 1060 1061 1062 1063 1063 1124 1086 1071 1087 1072 1072 1088 1073 1083 1084 1085 1086 1108 1100 1101 1102 1103 1104 1087 1093 1097 1098 1093 1099 1094 1107 1114 1115 1095 1109 1094 1095 1096 1107 1108 1114 1110 1116 1111 1118 1115 1117 1120 1121 1109 1110 1113 1111 1112 1116 1117 1122 1119 1118 1119 1120 1121 1122 1123 1123 1124 1262 1143 1138 1139 1144 1140 1141 1142 1143 1154 1155 1144 1156 1164 1157 1165 1166 1158 1150 1152 1153 1169 1179 1173 1171 1150 1151 1164 1169 1170 1172 1165 1166 1170 1167 1181 1177 1178 1180 1176 1167 1175 1174 1168 1171 1172 1183 1173 1175 1174 1176 1177 1178 1179 1180 1181 1182 1182 1183 1261 1204 1189 1190 1205 1191 1201 1202 1203 1204 1223 1224 1225 1215 1214 1236 1226 1227 1220 1214 1216 1221 1222 1240 1242 1244 1217 1238 1241 1239 1219 1215 1217 1219 1218 1238 1239 1236 1240 1241 1242 1245 1248 1243 1243 1251 1255 1253 1252 1247 1253 1254 1254 1237 1244 1245 1249 1251 1246 1252 1250 1246 1250 1247 1248 1249 1256 1258 1255 1257 1259 1256 1259 1257 1258 1260 1260 1261 1262 1490 1269 1284 1285 1270 1286 1287 1282 1283 1306 1284 1299 1285 1300 1301 1307 1286 1302 1287 1303 1293 1294 1295 1296 1297 1298 1315 1324 1318 1316 1310 1306 1307 1317 1315 1316 1308 1317 1325 1311 1309 1312 1323 1322 1314 1308 1309 1310 1311 1312 1313 1318 1319 1319 1320 1321 1320 1321 1322 1323 1324 1325 1326 1326 1377 1333 1333 1343 1344 1345 1334 1341 1342 1360 1343 1356 1344 1361 1345 1351 1352 1353 1354 1355 1365 1368 1363 1364 1373 1360 1361 1363 1366 1364 1367 1371 1374 1372 1362 1370 1365 1366 1367 1368 1369 1370 1376 1371 1372 1373 1374 1375 1375 1376 1377 1489 1386 1387 1408 1409 1405 1388 1407 1389 1390 1402 1406 1403 1404 1424 1425 1405 1426 1427 1406 1428 1429 1430 1431 1407 1418 1419 1420 1421 1422 1423 1447 1416 1458 1416 1451 1456 1450 1455 1417 1467 1447 1454 1450 1451 1453 1457 1448 1452 1452 1463 1453 1466 1454 1455 1465 1473 1469 1472 1472 1473 1474 1474 1470 1471 1475 1475 1481 1464 1477 1448 1449 1456 1457 1469 1470 1471 1461 1462 1458 1460 1459 1465 1468 1466 1481 1468 1479 1467 1478 1480 1479 1483 1476 1476 1484 1480 1487 1477 1478 1482 1482 1487 1483 1485 1484 1486 1485 1486 1488 1488 1489 1490 2010 1509 1498 1511 1510 1512 1513 1499 1507 1508 1527 1528 1509 1529 1510 1537 1530 1519 1523 1524 1536 1520 1525 1526 1539 1519 1520 1544 1540 1521 1522 1536 1541 1537 1539 1540 1543 1542 1554 1541 1551 1552 1555 1548 1549 1553 1538 1545 1542 1547 1543 1550 1544 1546 1545 1549 1550 1557 1556 1551 1557 1552 1553 1554 1555 1556 1558 1558 1631 1578 1581 1579 1566 1580 1582 1567 1576 1577 1578 1579 1599 1600 1601 1602 1580 1603 1589 1591 1595 1596 1597 1598 1590 1610 1617 1621 1589 1590 1591 1592 1593 1594 1612 1609 1609 1610 1615 1611 1611 1620 1624 1612 1613 1613 1630 1627 1628 1622 1616 1614 1629 1614 1615 1623 1616 1619 1617 1618 1622 1623 1624 1625 1625 1627 1626 1626 1628 1629 1630 1630 1631 1774 1652 1637 1653 1651 1638 1649 1650 1663 1675 1664 1651 1665 1666 1667 1668 1676 1669 1659 1660 1661 1657 1662 1683 1657 1690 1658 1692 1675 1676 1679 1679 1681 1684 1680 1680 1689 1685 1682 1691 1695 1696 1697 1696 1677 1678 1681 1682 1683 1688 1684 1685 1687 1695 1686 1694 1690 1694 1693 1691 1692 1693 1698 1699 1697 1699 1698 1700 1700 1773 1710 1722 1724 1725 1726 1727 1711 1712 1723 1719 1720 1721 1752 1722 1745 1735 1746 1723 1739 1740 1735 1741 1751 1742 1743 1744 1753 1771 1763 1754 1758 1759 1737 1762 1736 1737 1738 1751 1752 1760 1765 1753 1758 1759 1755 1760 1761 1767 1770 1766 1757 1756 1754 1755 1756 1761 1762 1764 1769 1768 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1772 1773 1774 2009 1783 1797 1791 1796 1784 1785 1786 1798 1791 1793 1794 1795 1816 1814 1796 1813 1792 1811 1807 1806 1804 1805 1812 1813 1805 1820 1821 1822 1806 1807 1809 1810 1808 1822 1819 1823 1816 1817 1823 1818 1826 1817 1818 1819 1820 1821 1825 1824 1825 1826 1826 1894 1833 1843 1844 1846 1834 1845 1836 1842 1848 1846 1854 1855 1856 1857 1858 1860 1859 1860 1861 1847 1870 1875 1873 1879 1872 1871 1874 1870 1883 1871 1880 1876 1872 1873 1874 1877 1884 1878 1885 1892 1890 1887 1891 1875 1886 1888 1876 1889 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1893 1894 2008 1921 1903 1922 1920 1923 1904 1924 1905 1919 1918 1916 1919 1964 1920 1940 1941 1942 1943 1917 1944 1963 1917 1932 1933 1934 1935 1936 1937 1938 1939 1971 1967 1987 1968 1988 1969 1982 1963 1972 1964 1987 1976 1967 1968 1979 1981 1989 1970 1969 1973 1975 1990 1983 1990 1991 1991 1988 1999 1992 1992 1989 1994 1985 1998 1980 1986 1993 1993 1965 1966 1970 1971 1974 1978 1972 1973 1974 1986 1985 1975 1976 1977 1981 1984 1982 1998 1983 1997 1984 2001 2000 1994 1995 2000 1996 1995 2001 2003 2005 1996 1999 1997 2004 2005 2002 2007 2002 2003 2004 2006 2006 2007 2008 2009 2010 2011 3472 2016 2025 2026 2024 2023 2024 2048 2037 2038 2038 2039 2033 2034 2035 2036 2040 2046 2059 2047 2053 2056 2040 2041 2041 2042 2045 2050 2051 2042 2043 2043 2044 2045 2046 2047 2048 2049 2054 2053 2054 2055 2058 2055 2056 2057 2059 2060 2060 2112 2069 2081 2074 2075 2080 2076 2083 2084 2077 2081 2088 2078 2089 2090 2078 2082 2079 2079 2080 2099 2098 2086 2087 2086 2102 2087 2106 2100 2097 2101 2098 2108 2099 2110 2103 2107 2105 2100 2101 2108 2102 2103 2104 2107 2106 2109 2109 2110 2111 2111 2112 2218 2118 2119 2130 2131 2131 2132 2133 2132 2143 2135 2135 2144 2136 2136 2141 2133 2145 2146 2137 2139 2140 2160 2157 2157 2138 2142 2153 2141 2158 2152 2155 2156 2152 2153 2163 2165 2166 2162 2158 2154 2161 2159 2161 2164 2167 2159 2160 2162 2163 2164 2165 2166 2167 2168 2168 2217 2173 2174 2187 2184 2185 2186 2187 2185 2194 2188 2188 2195 2192 2186 2196 2189 2190 2191 2206 2192 2193 2208 2203 2208 2202 2204 2205 2202 2206 2211 2213 2211 2210 2203 2210 2207 2209 2207 2213 2215 2212 2212 2215 2214 2214 2216 2216 2217 2218 2391 2226 2231 2235 2232 2232 2233 2234 2233 2237 2234 2238 2239 2235 2240 2241 2252 2251 2255 2253 2247 2249 2250 2247 2251 2257 2256 2260 2254 2248 2260 2252 2258 2253 2254 2255 2256 2257 2259 2258 2259 2261 2261 2304 2268 2278 2277 2274 2275 2275 2279 2277 2282 2278 2283 2279 2280 2284 2281 2295 2293 2294 2281 2292 2290 2291 2292 2293 2296 2300 2300 2294 2295 2298 2299 2297 2301 2296 2297 2298 2302 2301 2302 2303 2303 2304 2390 2308 2309 2310 2320 2322 2321 2356 2357 2322 2338 2339 2348 2340 2341 2342 2333 2334 2337 2356 2357 2362 2363 2364 2365 2361 2333 2350 2334 2335 2336 2349 2352 2348 2355 2360 2352 2351 2353 2361 2371 2376 2372 2358 2349 2350 2351 2355 2353 2354 2359 2358 2379 2380 2359 2372 2373 2374 2384 2377 2378 2373 2379 2386 2381 2386 2385 2375 2374 2385 2375 2376 2384 2380 2383 2382 2381 2382 2383 2388 2387 2387 2388 2389 2389 2390 2391 2715 2405 2406 2416 2396 2404 2439 2440 2405 2420 2421 2441 2422 2416 2419 2432 2439 2447 2448 2440 2434 2435 2441 2442 2417 2417 2418 2432 2434 2436 2437 2438 2467 2457 2457 2458 2458 2446 2459 2459 2445 2433 2435 2446 2445 2463 2443 2442 2444 2466 2462 2443 2469 2461 2460 2460 2468 2465 2464 2468 2477 2470 2476 2474 2470 2462 2480 2475 2469 2467 2464 2466 2472 2465 2473 2471 2480 2473 2479 2471 2472 2474 2476 2475 2477 2478 2478 2479 2481 2481 2570 2488 2497 2498 2496 2499 2489 2494 2495 2513 2496 2532 2514 2507 2508 2509 2510 2511 2512 2528 2532 2540 2534 2541 2542 2543 2539 2527 2536 2527 2528 2529 2539 2531 2548 2548 2533 2549 2549 2540 2535 2556 2538 2561 2551 2550 2529 2538 2530 2533 2537 2555 2534 2535 2536 2554 2552 2560 2553 2551 2564 2557 2552 2564 2555 2565 2563 2553 2559 2565 2554 2563 2558 2556 2557 2558 2562 2559 2560 2561 2567 2568 2566 2566 2568 2567 2569 2569 2570 2714 2575 2576 2592 2593 2590 2591 2598 2592 2590 2599 2594 2600 2593 2594 2601 2591 2602 2595 2595 2596 2597 2620 2623 2615 2622 2615 2616 2628 2617 2629 2618 2619 2628 2620 2621 2638 2634 2637 2639 2629 2626 2625 2630 2635 2621 2622 2624 2627 2623 2624 2631 2630 2625 2634 2626 2633 2633 2631 2632 2632 2638 2635 2636 2636 2637 2639 2640 2640 2641 2641 2713 2646 2647 2664 2660 2661 2662 2671 2664 2661 2672 2665 2665 2673 2666 2666 2662 2674 2675 2667 2669 2670 2668 2695 2688 2698 2668 2694 2688 2689 2697 2692 2693 2691 2694 2697 2695 2690 2705 2700 2708 2708 2706 2707 2703 2699 2701 2690 2691 2698 2699 2696 2702 2701 2696 2700 2705 2706 2707 2702 2703 2704 2704 2711 2711 2709 2709 2710 2710 2712 2712 2713 2714 2715 3470 2728 2748 2735 2736 2737 2760 2738 2739 2740 2741 2742 2743 2749 2756 2748 2768 2769 2770 2771 2763 2757 2758 2759 2754 2751 2749 2767 2752 2755 2778 2753 2778 2755 2750 2751 2752 2753 2754 2767 2763 2766 2762 2762 2764 2766 2779 2765 2764 2787 2779 2786 2780 2787 2781 2782 2783 2788 2788 2794 2789 2790 2791 2780 2781 2785 2784 2784 2785 2789 2790 2793 2792 2793 2791 2792 2795 2794 2795 2796 2796 2873 2800 2808 2809 2806 2807 2819 2820 2827 2826 2816 2828 2817 2818 2838 2839 2840 2841 2842 2833 2824 2826 2824 2837 2827 2854 2831 2834 2825 2831 2835 2832 2836 2853 2832 2833 2858 2834 2853 2854 2851 2855 2851 2859 2856 2857 2864 2852 2858 2860 2868 2864 2867 2866 2865 2852 2863 2861 2861 2859 2862 2862 2863 2860 2870 2865 2867 2868 2869 2866 2869 2870 2871 2871 2872 2872 2873 3074 2880 2881 2895 2896 2889 2890 2893 2894 2902 2895 2893 2896 2897 2897 2898 2894 2900 2911 2913 2901 2911 2917 2914 2910 2900 2918 2915 2910 2919 2919 2920 2920 2914 2912 2921 2915 2912 2913 2916 2916 2917 2918 2925 2922 2923 2924 2922 2925 2923 2924 2926 2926 2973 2933 2942 2949 2940 2943 2947 2934 2940 2954 2949 2955 2946 2952 2941 2946 2947 2948 2951 2953 2951 2962 2952 2965 2964 2953 2963 2960 2966 2961 2962 2968 2967 2970 2964 2965 2966 2971 2969 2967 2971 2968 2969 2970 2972 2972 2973 3073 2981 2977 2983 2982 2990 2991 2992 2993 2996 2995 3002 2997 2997 2995 3003 3004 2996 3005 2998 3006 2999 3000 2999 3016 3001 3014 3013 3011 3012 3015 3011 3019 3012 3014 3021 3017 3022 3020 3021 3015 3016 3018 3017 3018 3019 3022 3023 3023 3024 3024 3072 3032 3038 3039 3041 3044 3042 3040 3043 3041 3047 3048 3042 3049 3043 3044 3045 3064 3058 3061 3062 3046 3057 3059 3060 3057 3061 3070 3066 3062 3071 3065 3063 3058 3063 3064 3069 3068 3067 3065 3066 3067 3068 3069 3070 3071 3071 3072 3073 3074 3469 3089 3090 3091 3092 3092 3093 3093 3094 3105 3106 3107 3108 3109 3110 3097 3111 3098 3112 3099 3100 3126 3101 3102 3103 3104 3101 3129 3126 3125 3124 3135 3127 3128 3124 3134 3129 3130 3125 3135 3144 3137 3146 3140 3133 3146 3141 3139 3136 3136 3132 3133 3140 3130 3131 3141 3131 3137 3138 3138 3145 3144 3145 3143 3139 3142 3142 3143 3147 3148 3147 3148 3149 3149 3149 3242 3155 3169 3168 3167 3156 3165 3166 3183 3178 3184 3206 3185 3167 3168 3200 3178 3179 3180 3181 3182 3217 3218 3202 3219 3207 3211 3201 3210 3215 3200 3205 3201 3202 3216 3206 3209 3208 3216 3220 3214 3221 3221 3222 3223 3224 3224 3225 3225 3226 3204 3204 3203 3214 3209 3210 3234 3213 3211 3233 3212 3212 3227 3226 3227 3237 3228 3228 3230 3239 3231 3235 3241 3232 3229 3238 3236 3234 3229 3230 3231 3233 3232 3240 3235 3236 3237 3238 3239 3240 3241 3241 3242 3468 3269 3266 3251 3272 3270 3252 3273 3271 3266 3268 3269 3313 3289 3290 3291 3292 3270 3293 3294 3295 3296 3271 3297 3267 3281 3284 3282 3285 3286 3287 3288 3316 3330 3315 3339 3329 3332 3321 3282 3283 3313 3318 3315 3317 3316 3317 3319 3324 3325 3335 3318 3320 3334 3340 3328 3323 3333 3339 3352 3337 3341 3341 3342 3342 3344 3338 3343 3340 3348 3331 3314 3319 3320 3322 3321 3338 3322 3337 3327 3323 3324 3325 3326 3330 3331 3332 3349 3333 3334 3336 3335 3336 3350 3343 3344 3346 3353 3345 3347 3351 3345 3350 3346 3347 3348 3349 3351 3352 3353 3353 3467 3390 3365 3366 3389 3367 3367 3368 3391 3392 3393 3394 3384 3385 3386 3387 3388 3410 3416 3417 3418 3389 3419 3420 3421 3422 3423 3424 3425 3426 3427 3404 3408 3405 3409 3410 3411 3412 3413 3414 3431 3415 3444 3404 3439 3441 3405 3453 3438 3435 3433 3406 3407 3437 3442 3440 3443 3456 3450 3437 3438 3431 3432 3457 3439 3440 3449 3441 3442 3452 3451 3454 3443 3436 3434 3462 3465 3463 3432 3433 3434 3435 3436 3455 3444 3455 3448 3445 3447 3445 3464 3459 3446 3447 3448 3449 3450 3451 3452 3453 3454 3462 3463 3461 3459 3460 3460 3461 3467 3464 3465 3466 3466 3471 3468 3469 3470 3471 3472 6827 3485 3477 3486 3487 3484 3501 3502 3515 3516 3503 3504 3496 3497 3499 3500 3526 3515 3527 3516 3528 3517 3508 3509 3497 3498 3508 3509 3510 3524 3525 3514 3513 3520 3519 3514 3510 3511 3511 3512 3519 3523 3521 3522 3541 3523 3545 3520 3521 3548 3540 3548 3536 3536 3542 3538 3539 3544 3540 3541 3549 3549 3553 3551 3537 3542 3543 3546 3550 3547 3543 3544 3545 3546 3552 3550 3551 3552 3553 3554 3554 3555 3555 3652 3572 3561 3573 3574 3562 3570 3571 3611 3572 3591 3573 3592 3593 3594 3584 3585 3588 3589 3590 3611 3609 3584 3626 3623 3607 3627 3617 3585 3586 3587 3606 3608 3606 3607 3608 3623 3618 3624 3625 3632 3621 3630 3630 3622 3638 3615 3631 3631 3616 3644 3609 3622 3610 3621 3616 3620 3642 3637 3638 3619 3617 3618 3619 3633 3635 3632 3633 3650 3634 3634 3640 3636 3639 3645 3637 3646 3641 3644 3645 3639 3643 3650 3648 3640 3641 3642 3643 3649 3646 3647 3647 3648 3649 3651 3651 3652 3860 3663 3662 3663 3671 3672 3673 3673 3674 3677 3676 3675 3675 3684 3676 3685 3686 3687 3677 3688 3689 3690 3678 3679 3680 3682 3683 3697 3694 3696 3695 3698 3694 3703 3701 3702 3707 3712 3696 3705 3711 3708 3697 3698 3704 3699 3700 3703 3704 3710 3706 3705 3706 3707 3708 3709 3710 3711 3712 3713 3713 3762 3723 3719 3719 3724 3725 3722 3735 3735 3733 3734 3736 3737 3736 3747 3742 3742 3754 3737 3750 3739 3740 3741 3743 3744 3751 3746 3747 3748 3758 3753 3755 3749 3748 3753 3749 3750 3751 3752 3754 3761 3755 3759 3758 3759 3760 3760 3761 3762 3859 3775 3776 3767 3767 3774 3802 3784 3785 3786 3787 3788 3780 3782 3783 3802 3803 3780 3781 3796 3795 3795 3800 3796 3801 3797 3797 3808 3808 3809 3810 3806 3804 3799 3798 3798 3806 3803 3804 3805 3813 3812 3805 3811 3810 3815 3814 3811 3812 3813 3814 3815 3816 3816 3858 3829 3827 3828 3830 3829 3832 3833 3830 3834 3835 3836 3837 3831 3846 3843 3844 3851 3845 3846 3847 3848 3849 3853 3854 3850 3852 3849 3847 3848 3850 3853 3854 3851 3852 3856 3855 3855 3856 3857 3857 3858 3859 3860 4225 3870 3871 3871 3872 3890 3891 3873 3889 3870 3892 3886 3888 3887 3902 3909 3910 3911 3888 3926 3912 3913 3914 3915 3916 3889 3900 3925 3905 3906 3907 3908 3901 3932 3936 3940 3935 3943 3901 3931 3902 3904 3903 3933 3925 3926 3931 3932 3927 3933 3934 3937 3934 3938 3950 3928 3939 3942 3944 3954 3947 3946 3953 3954 3949 3927 3930 3928 3929 3935 3936 3948 3952 3937 3938 3939 3940 3941 3941 3945 3953 3942 3943 3944 3952 3947 3951 3948 3949 3950 3951 3955 3956 3955 3956 3957 3957 4061 3982 3980 3983 3964 3981 3965 3978 3979 4008 4008 4036 4000 3980 4009 4010 4011 4022 3981 4012 4013 4005 4006 3998 4007 3997 3999 4038 4036 4025 4043 4001 4037 4053 4051 3998 3999 4029 4028 4026 4000 4003 4004 4001 4002 4025 4045 4027 4022 4023 4026 4030 4046 4027 4028 4031 4032 4053 4055 4055 4057 4042 4048 4040 4047 4023 4024 4029 4030 4044 4041 4031 4032 4034 4035 4033 4040 4038 4041 4058 4042 4039 4043 4044 4049 4045 4052 4046 4050 4047 4048 4049 4050 4051 4059 4056 4056 4060 4057 4058 4059 4060 4060 4061 4224 4068 4069 4075 4076 4077 4078 4081 4082 4087 4081 4088 4083 4083 4089 4084 4082 4090 4096 4090 4085 4095 4094 4086 4094 4101 4102 4097 4098 4095 4106 4099 4104 4099 4105 4103 4098 4100 4103 4101 4102 4104 4105 4106 4106 4153 4119 4126 4127 4120 4121 4122 4123 4130 4126 4141 4127 4135 4128 4131 4129 4142 4130 4142 4146 4138 4147 4139 4131 4140 4132 4135 4136 4145 4136 4137 4144 4151 4149 4144 4149 4148 4151 4145 4146 4147 4148 4150 4150 4152 4152 4153 4223 4168 4169 4176 4170 4171 4172 4185 4186 4176 4187 4188 4189 4190 4177 4191 4178 4192 4179 4180 4199 4199 4207 4183 4204 4181 4181 4184 4182 4200 4203 4204 4206 4201 4213 4205 4213 4200 4201 4208 4214 4215 4214 4218 4216 4215 4212 4202 4203 4206 4218 4210 4208 4207 4212 4209 4210 4211 4216 4222 4217 4220 4219 4217 4219 4220 4221 4221 4222 4223 4224 4225 5123 4249 4247 4250 4232 4248 4233 4245 4246 4247 4264 4265 4261 4248 4283 4266 4267 4268 4269 4270 4259 4257 4260 4261 4262 4263 4287 4285 4288 4301 4289 4257 4258 4286 4283 4285 4286 4287 4288 4293 4289 4306 4290 4292 4297 4300 4307 4307 4310 4305 4308 4308 4304 4298 4309 4306 4311 4291 4284 4304 4295 4290 4296 4305 4299 4291 4292 4293 4294 4298 4299 4303 4300 4301 4303 4302 4302 4309 4310 4313 4312 4311 4315 4316 4312 4313 4314 4314 4315 4316 4316 4438 4334 4336 4333 4323 4337 4338 4335 4354 4333 4355 4334 4356 4357 4335 4358 4359 4351 4352 4353 4345 4346 4347 4363 4345 4346 4373 4347 4365 4348 4349 4350 4374 4361 4364 4362 4361 4362 4363 4376 4372 4364 4365 4369 4368 4366 4367 4366 4367 4370 4368 4369 4370 4371 4376 4372 4373 4374 4375 4377 4377 4437 4386 4387 4393 4394 4395 4396 4388 4386 4397 4398 4399 4405 4406 4407 4408 4409 4416 4410 4417 4411 4418 4422 4418 4425 4416 4424 4417 4426 4419 4424 4427 4420 4425 4428 4434 4433 4430 4434 4419 4423 4420 4421 4422 4426 4432 4427 4428 4429 4429 4431 4430 4433 4431 4432 4436 4435 4435 4436 4437 4438 4679 4445 4445 4457 4446 4458 4459 4455 4456 4457 4476 4467 4477 4468 4469 4470 4466 4462 4463 4464 4465 4466 4495 4485 4476 4477 4481 4480 4480 4484 4493 4482 4487 4491 4494 4490 4486 4483 4478 4479 4481 4482 4483 4484 4492 4485 4489 4486 4487 4488 4490 4491 4492 4493 4494 4495 4496 4496 4558 4518 4501 4517 4502 4514 4516 4528 4515 4524 4529 4530 4531 4532 4516 4517 4533 4539 4523 4523 4526 4527 4538 4540 4541 4544 4545 4524 4525 4538 4539 4544 4542 4547 4557 4546 4553 4545 4552 4555 4554 4551 4540 4549 4541 4542 4543 4546 4550 4549 4547 4548 4550 4551 4552 4553 4554 4555 4556 4556 4557 4558 4678 4571 4573 4574 4566 4575 4576 4572 4570 4571 4593 4572 4583 4584 4585 4586 4587 4594 4588 4600 4609 4595 4601 4598 4599 4593 4608 4598 4594 4596 4599 4610 4604 4605 4607 4595 4597 4596 4603 4600 4603 4606 4601 4602 4604 4605 4606 4607 4608 4609 4610 4610 4677 4618 4619 4634 4620 4620 4621 4635 4630 4631 4632 4633 4656 4655 4641 4649 4642 4650 4651 4652 4646 4643 4641 4647 4648 4657 4643 4664 4669 4659 4658 4642 4644 4645 4655 4667 4656 4657 4664 4668 4666 4665 4660 4674 4671 4662 4663 4658 4659 4660 4661 4665 4666 4667 4670 4668 4669 4670 4673 4675 4671 4672 4674 4675 4676 4676 4677 4678 4679 5122 4689 4690 4712 4691 4713 4714 4715 4692 4689 4693 4711 4708 4709 4710 4711 4750 4730 4731 4712 4732 4713 4733 4714 4734 4735 4736 4737 4738 4722 4724 4725 4726 4727 4728 4729 4749 4766 4722 4775 4770 4756 4751 4723 4754 4755 4749 4750 4762 4763 4772 4768 4754 4769 4764 4765 4755 4771 4752 4757 4761 4783 4783 4784 4784 4779 4776 4774 4773 4767 4751 4761 4752 4753 4756 4760 4757 4758 4758 4759 4767 4768 4782 4769 4781 4770 4777 4782 4771 4781 4780 4778 4772 4773 4774 4775 4776 4777 4778 4779 4780 4785 4787 4787 4786 4785 4786 4788 4788 4896 4807 4808 4809 4810 4811 4812 4813 4799 4814 4815 4806 4807 4833 4834 4835 4836 4855 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4857 4858 4859 4870 4880 4860 4861 4855 4857 4864 4858 4859 4865 4863 4860 4866 4861 4862 4862 4868 4879 4871 4881 4877 4875 4872 4881 4882 4882 4879 4883 4883 4884 4880 4884 4876 4885 4874 4878 4856 4863 4864 4877 4865 4866 4878 4869 4874 4867 4875 4876 4869 4870 4871 4873 4872 4873 4888 4885 4887 4886 4890 4886 4887 4889 4888 4892 4895 4893 4889 4891 4894 4890 4891 4892 4893 4894 4895 4895 4896 5121 4911 4912 4907 4913 4914 4915 4916 4917 4918 4919 4910 4943 4944 4933 4937 4931 4932 4938 4939 4940 4941 4966 4942 4983 4931 4979 4932 4968 4933 4969 4967 4970 4977 4971 4934 4935 4936 4984 4967 4968 4983 4972 4969 4966 4970 4971 4984 4973 4985 4985 4987 4986 4978 4986 4987 4982 4989 4980 4988 4976 4991 4988 4989 4990 4990 4992 4991 4981 4997 4974 4974 4972 4982 4975 4973 4980 4981 4976 4996 4977 4978 4979 4995 4993 4992 4993 4994 5001 4994 5000 5001 5002 4999 4996 5002 4995 4998 5000 5005 4997 4998 4999 5003 5004 5003 5005 5004 5006 5006 5120 5017 5018 5034 5035 5019 5032 5036 5037 5038 5033 5029 5030 5031 5076 5056 5057 5058 5077 5059 5060 5032 5033 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5103 5083 5082 5084 5085 5095 5093 5076 5086 5077 5082 5080 5103 5083 5084 5079 5085 5086 5087 5094 5078 5099 5104 5102 5104 5105 5105 5106 5107 5106 5108 5107 5108 5109 5097 5096 5098 5081 5078 5079 5080 5091 5087 5089 5090 5091 5092 5102 5088 5094 5095 5101 5096 5097 5100 5101 5110 5098 5099 5100 5111 5109 5115 5114 5114 5115 5117 5116 5112 5111 5110 5112 5113 5113 5116 5117 5118 5118 5119 5119 5120 5121 5122 5123 6827 5128 5129 5143 5144 5145 5146 5151 5152 5145 5147 5147 5148 5153 5154 5148 5146 5155 5156 5157 5158 5159 5149 5150 5175 5176 5175 5176 5186 5187 5180 5181 5188 5189 5174 5182 5174 5186 5187 5177 5193 5190 5190 5191 5201 5178 5194 5195 5185 5188 5189 5179 5177 5178 5184 5184 5185 5182 5183 5183 5192 5191 5192 5193 5199 5194 5195 5196 5197 5196 5197 5198 5200 5200 5198 5199 5201 5201 5304 5211 5219 5220 5212 5221 5222 5218 5223 5224 5212 5217 5244 5218 5240 5241 5229 5235 5236 5237 5238 5231 5239 5230 5232 5256 5255 5230 5231 5234 5232 5233 5244 5248 5250 5247 5247 5251 5245 5248 5252 5253 5254 5245 5246 5249 5249 5250 5251 5252 5253 5254 5255 5256 5257 5257 5303 5265 5266 5267 5273 5280 5274 5275 5281 5276 5277 5284 5285 5280 5286 5279 5281 5287 5278 5288 5278 5279 5283 5302 5282 5290 5297 5292 5296 5291 5294 5291 5299 5292 5300 5293 5294 5295 5296 5297 5298 5299 5301 5301 5302 5303 5304 5473 5307 5308 5316 5317 5342 5325 5326 5327 5328 5329 5330 5323 5324 5342 5352 5335 5346 5336 5335 5336 5343 5340 5347 5341 5348 5337 5358 5354 5354 5345 5339 5337 5338 5345 5346 5343 5349 5355 5344 5347 5348 5351 5350 5349 5357 5356 5355 5356 5358 5357 5360 5359 5359 5360 5361 5361 5399 5374 5373 5374 5376 5375 5383 5384 5385 5375 5386 5376 5377 5378 5397 5380 5381 5382 5389 5388 5390 5389 5394 5395 5390 5392 5396 5391 5394 5391 5392 5393 5395 5398 5396 5397 5398 5399 5472 5405 5404 5420 5421 5422 5424 5425 5425 5424 5426 5435 5426 5427 5436 5437 5438 5427 5430 5422 5439 5428 5429 5423 5430 5432 5457 5458 5451 5433 5434 5431 5451 5452 5449 5450 5454 5449 5455 5456 5450 5457 5465 5458 5466 5461 5459 5453 5464 5460 5461 5462 5453 5454 5462 5463 5459 5460 5463 5466 5470 5467 5468 5464 5465 5467 5468 5469 5469 5470 5471 5471 5472 5473 5905 5479 5480 5496 5493 5500 5494 5495 5505 5496 5494 5506 5497 5497 5507 5498 5498 5508 5495 5509 5499 5502 5503 5530 5522 5523 5501 5501 5529 5522 5523 5531 5538 5526 5527 5528 5539 5538 5534 5532 5524 5545 5544 5541 5537 5525 5543 5539 5535 5524 5525 5536 5536 5530 5537 5533 5531 5532 5533 5534 5535 5542 5540 5544 5540 5545 5546 5541 5542 5543 5546 5547 5547 5548 5548 5644 5561 5560 5552 5559 5567 5578 5567 5568 5569 5560 5565 5571 5566 5578 5575 5582 5571 5572 5581 5579 5573 5576 5572 5573 5574 5575 5576 5577 5579 5586 5580 5584 5585 5585 5587 5586 5587 5588 5588 5643 5598 5599 5605 5623 5606 5607 5624 5608 5609 5610 5610 5623 5616 5619 5617 5624 5629 5630 5616 5617 5618 5618 5633 5634 5622 5620 5627 5628 5621 5619 5620 5621 5622 5628 5638 5626 5627 5639 5635 5634 5639 5637 5640 5641 5636 5635 5636 5637 5638 5640 5641 5642 5642 5643 5644 5904 5650 5662 5661 5651 5663 5658 5660 5682 5674 5675 5676 5661 5677 5659 5670 5671 5668 5672 5673 5683 5684 5668 5688 5669 5687 5682 5685 5684 5685 5686 5686 5687 5695 5692 5697 5694 5691 5683 5690 5690 5688 5696 5693 5689 5691 5692 5693 5694 5695 5696 5697 5697 5761 5708 5720 5719 5721 5722 5710 5723 5709 5709 5708 5710 5717 5718 5719 5735 5736 5737 5743 5738 5727 5729 5730 5731 5732 5733 5734 5747 5748 5727 5728 5749 5743 5746 5746 5747 5748 5749 5753 5744 5750 5757 5755 5758 5756 5754 5744 5745 5750 5751 5751 5752 5752 5753 5755 5756 5754 5757 5758 5759 5759 5760 5760 5761 5903 5769 5781 5782 5767 5780 5778 5783 5784 5779 5793 5810 5794 5780 5795 5796 5797 5787 5788 5789 5790 5791 5792 5792 5812 5816 5810 5823 5813 5812 5813 5814 5815 5817 5822 5822 5824 5823 5818 5825 5825 5829 5820 5826 5826 5819 5824 5821 5814 5811 5815 5820 5816 5821 5817 5819 5818 5830 5827 5827 5831 5828 5832 5833 5834 5828 5829 5830 5831 5834 5832 5833 5835 5835 5902 5856 5857 5844 5858 5855 5859 5845 5860 5853 5854 5875 5876 5881 5861 5882 5861 5855 5869 5870 5871 5867 5872 5873 5874 5880 5880 5867 5881 5889 5888 5886 5868 5887 5882 5886 5890 5887 5891 5888 5900 5892 5896 5897 5899 5883 5884 5883 5884 5885 5889 5890 5891 5898 5892 5895 5894 5893 5895 5896 5897 5898 5899 5900 5901 5901 5902 5903 5904 5905 6826 5930 5931 5933 5912 5913 5914 5928 5932 5929 5930 5952 5931 5953 5954 5955 5932 5956 5957 5958 5959 5960 5974 5944 5945 5949 5943 5950 5951 5978 5943 5976 5998 5994 5977 5987 5944 5945 5946 5947 5948 5976 5977 5982 5978 5974 5981 5983 5998 5990 5980 5984 5991 5992 5979 5979 5996 5997 5999 5999 6000 6000 6008 6001 6001 6002 6002 5986 5993 5975 5980 5981 5982 5983 5985 5984 5996 5985 5997 5989 5986 5987 5988 5992 5993 6006 5995 6007 5994 5995 6004 6003 6003 6011 6005 6011 6004 6009 6005 6007 6006 6008 6009 6010 6010 6012 6012 6135 6020 6033 6021 6022 6034 6035 6036 6030 6031 6032 6048 6049 6050 6051 6052 6053 6054 6044 6040 6041 6045 6056 6046 6047 6040 6041 6060 6042 6043 6061 6056 6059 6059 6060 6063 6061 6070 6062 6057 6066 6069 6072 6065 6057 6058 6062 6064 6063 6064 6067 6065 6066 6067 6068 6072 6069 6070 6071 6073 6073 6134 6083 6091 6094 6080 6081 6095 6092 6093 6098 6091 6105 6096 6094 6106 6115 6107 6108 6096 6102 6114 6103 6104 6097 6116 6123 6119 6120 6114 6115 6119 6124 6121 6117 6122 6120 6128 6130 6129 6129 6130 6118 6126 6117 6121 6122 6126 6127 6123 6124 6128 6125 6127 6131 6132 6131 6133 6132 6133 6133 6134 6135 6364 6144 6141 6142 6156 6159 6157 6158 6156 6161 6169 6170 6166 6171 6172 6158 6173 6201 6174 6175 6176 6160 6166 6167 6168 6206 6207 6203 6208 6204 6209 6203 6201 6204 6221 6207 6218 6205 6211 6213 6212 6215 6221 6223 6224 6220 6225 6217 6226 6224 6227 6225 6228 6219 6205 6214 6226 6227 6230 6228 6216 6229 6229 6231 6230 6231 6202 6208 6220 6210 6211 6209 6223 6219 6213 6222 6214 6215 6222 6216 6233 6217 6218 6235 6232 6232 6234 6238 6236 6236 6237 6235 6244 6237 6239 6233 6238 6234 6242 6240 6239 6243 6240 6241 6241 6243 6242 6244 6244 6363 6250 6251 6255 6268 6257 6254 6255 6254 6257 6256 6267 6271 6272 6269 6286 6277 6278 6279 6280 6281 6282 6274 6269 6283 6270 6276 6274 6275 6275 6290 6290 6286 6288 6291 6292 6291 6297 6295 6287 6296 6293 6287 6288 6289 6292 6293 6294 6294 6295 6296 6297 6298 6298 6362 6315 6318 6317 6316 6304 6314 6315 6327 6316 6317 6328 6329 6330 6331 6338 6322 6323 6324 6325 6326 6341 6340 6344 6338 6340 6342 6347 6341 6351 6342 6349 6348 6343 6354 6350 6357 6356 6355 6356 6339 6343 6354 6346 6355 6344 6345 6349 6350 6352 6353 6353 6351 6352 6359 6360 6357 6358 6360 6358 6359 6361 6361 6362 6363 6364 6825 6370 6386 6371 6372 6387 6385 6383 6384 6385 6400 6401 6402 6403 6386 6404 6405 6406 6387 6393 6394 6397 6398 6399 6412 6413 6393 6414 6394 6395 6396 6411 6411 6412 6413 6414 6423 6415 6427 6422 6421 6426 6420 6419 6425 6424 6418 6416 6415 6417 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6428 6479 6434 6448 6435 6436 6437 6445 6449 6446 6447 6448 6449 6458 6459 6460 6461 6462 6454 6455 6452 6456 6457 6466 6452 6453 6467 6466 6468 6469 6475 6473 6476 6474 6467 6468 6471 6477 6472 6469 6470 6470 6471 6472 6473 6474 6475 6476 6477 6478 6478 6479 6595 6485 6486 6495 6496 6497 6498 6499 6506 6507 6508 6517 6500 6509 6510 6499 6511 6519 6518 6500 6502 6501 6520 6521 6533 6517 6518 6520 6527 6522 6525 6521 6519 6526 6529 6534 6534 6530 6523 6524 6522 6525 6528 6523 6533 6531 6526 6527 6528 6530 6532 6531 6532 6535 6536 6535 6536 6594 6544 6557 6545 6558 6546 6559 6544 6547 6554 6555 6556 6557 6581 6580 6576 6558 6577 6567 6574 6566 6575 6568 6569 6567 6590 6568 6569 6584 6570 6570 6571 6572 6573 6584 6585 6580 6586 6581 6585 6587 6582 6589 6593 6582 6583 6592 6586 6587 6588 6588 6592 6589 6590 6591 6593 6593 6594 6595 6824 6602 6616 6615 6617 6618 6619 6620 6632 6633 6634 6615 6616 6617 6627 6618 6635 6636 6637 6638 6628 6629 6630 6631 6627 6659 6664 6661 6662 6674 6660 6663 6659 6660 6661 6662 6663 6664 6678 6678 6666 6667 6670 6671 6686 6677 6680 6673 6668 6679 6679 6680 6669 6681 6681 6675 6682 6682 6683 6684 6683 6676 6688 6684 6665 6673 6674 6675 6676 6677 6669 6670 6671 6691 6672 6672 6690 6687 6685 6691 6685 6689 6686 6694 6695 6694 6693 6688 6699 6687 6689 6692 6693 6695 6690 6697 6692 6696 6699 6696 6697 6698 6698 6700 6700 6823 6705 6714 6715 6716 6717 6725 6726 6727 6728 6739 6729 6730 6722 6724 6721 6750 6722 6741 6721 6745 6723 6751 6739 6741 6742 6742 6744 6749 6743 6743 6757 6754 6744 6753 6760 6752 6751 6755 6740 6745 6748 6750 6746 6749 6746 6747 6752 6756 6753 6754 6755 6758 6757 6756 6759 6758 6759 6760 6760 6822 6767 6781 6782 6768 6783 6784 6779 6780 6789 6790 6781 6798 6795 6799 6800 6801 6797 6802 6789 6791 6795 6796 6805 6797 6792 6809 6812 6791 6790 6792 6794 6793 6807 6808 6807 6805 6808 6810 6818 6815 6811 6819 6813 6817 6806 6809 6810 6811 6812 6813 6814 6817 6818 6815 6816 6819 6820 6820 6821 6821 6822 6823 6824 6825 6826 6827 6828 0 metis-edf-4.1/Test/fort.810000644000372500037370000574477111115455203015617 0ustar courtoisastergrp 14944 86601 1 6 1 9 17 25 33 41 56 64 72 80 88 96 104 122 130 135 143 151 159 180 188 196 204 219 227 235 243 251 259 267 275 296 304 312 320 328 336 344 359 367 375 396 404 412 420 438 446 454 462 477 485 493 501 519 527 532 546 554 562 573 578 586 594 602 610 628 636 644 652 660 668 686 694 702 710 728 736 744 752 760 778 786 794 802 810 818 826 834 842 860 868 876 884 902 910 918 936 944 952 960 975 983 991 999 1017 1025 1033 1041 1049 1067 1075 1083 1091 1109 1117 1125 1133 1154 1162 1170 1178 1186 1207 1215 1223 1238 1246 1254 1272 1280 1288 1293 1307 1315 1323 1338 1346 1354 1362 1370 1378 1386 1404 1412 1423 1428 1436 1444 1462 1470 1478 1486 1494 1502 1520 1528 1536 1554 1562 1570 1578 1586 1594 1602 1620 1628 1636 1644 1662 1670 1678 1686 1704 1712 1720 1728 1743 1751 1759 1777 1785 1793 1801 1809 1827 1835 1843 1851 1859 1877 1885 1893 1901 1919 1927 1935 1943 1961 1969 1977 1995 2003 2011 2019 2037 2045 2053 2071 2079 2087 2095 2103 2121 2129 2137 2145 2153 2161 2169 2174 2182 2190 2198 2206 2214 2232 2240 2248 2256 2264 2272 2290 2298 2306 2314 2322 2340 2348 2362 2367 2375 2383 2391 2399 2417 2425 2433 2441 2456 2464 2472 2480 2488 2506 2514 2522 2530 2548 2556 2564 2579 2587 2595 2603 2611 2629 2637 2645 2653 2671 2679 2687 2705 2713 2718 2729 2737 2749 2757 2765 2773 2781 2799 2807 2815 2823 2841 2849 2857 2865 2883 2891 2896 2907 2915 2923 2931 2945 2950 2958 2966 2974 2992 3000 3008 3016 3034 3042 3050 3068 3076 3084 3092 3107 3115 3123 3131 3139 3147 3162 3170 3178 3196 3204 3212 3220 3238 3246 3254 3262 3280 3288 3296 3304 3322 3330 3338 3356 3364 3372 3380 3388 3406 3414 3422 3430 3438 3456 3464 3472 3480 3498 3506 3514 3522 3540 3548 3556 3564 3572 3590 3598 3606 3624 3632 3650 3658 3666 3674 3682 3700 3708 3716 3724 3732 3750 3758 3766 3774 3782 3790 3798 3806 3814 3822 3830 3838 3853 3861 3879 3887 3895 3903 3921 3929 3937 3945 3953 3974 3982 3997 4005 4013 4021 4039 4047 4055 4063 4071 4079 4087 4095 4103 4111 4119 4127 4135 4143 4151 4159 4174 4182 4190 4198 4216 4224 4232 4240 4248 4266 4274 4282 4290 4298 4313 4321 4329 4337 4355 4363 4371 4385 4390 4398 4413 4421 4429 4437 4445 4463 4471 4479 4487 4505 4513 4521 4529 4547 4555 4563 4571 4579 4587 4605 4613 4631 4639 4647 4655 4670 4678 4686 4701 4709 4714 4731 4739 4747 4765 4773 4781 4789 4797 4805 4813 4821 4839 4847 4855 4863 4881 4889 4897 4905 4923 4931 4946 4954 4966 4978 4990 5002 5014 5026 5038 5045 5057 5065 5073 5078 5089 5097 5115 5123 5131 5139 5157 5165 5173 5184 5189 5197 5205 5213 5234 5242 5250 5268 5276 5284 5292 5307 5315 5323 5331 5352 5360 5368 5383 5391 5399 5407 5425 5433 5441 5449 5467 5475 5483 5491 5509 5517 5525 5533 5541 5559 5567 5575 5593 5601 5609 5617 5635 5643 5651 5659 5667 5685 5693 5701 5709 5717 5735 5743 5751 5769 5777 5785 5793 5801 5819 5827 5835 5853 5861 5879 5887 5895 5903 5911 5919 5937 5945 5953 5971 5979 5987 5995 6003 6021 6029 6037 6055 6063 6071 6079 6087 6102 6110 6118 6126 6134 6152 6160 6168 6176 6194 6202 6210 6218 6226 6234 6242 6250 6268 6276 6284 6305 6313 6321 6329 6337 6355 6363 6371 6379 6397 6405 6423 6431 6439 6447 6455 6463 6471 6479 6487 6502 6510 6518 6526 6534 6542 6550 6571 6579 6587 6608 6616 6624 6632 6640 6658 6666 6674 6682 6700 6708 6716 6724 6745 6753 6761 6769 6787 6795 6803 6811 6826 6834 6842 6850 6865 6873 6881 6889 6897 6905 6923 6931 6939 6947 6955 6973 6981 6989 7007 7015 7023 7031 7043 7055 7075 7087 7099 7119 7131 7143 7163 7175 7187 7207 7219 7231 7251 7263 7275 7295 7307 7319 7339 7351 7358 7370 7382 7402 7414 7426 7438 7450 7470 7482 7490 7498 7513 7521 7529 7537 7545 7563 7571 7579 7587 7595 7603 7611 7619 7627 7635 7643 7651 7669 7677 7685 7693 7701 7719 7727 7735 7753 7761 7769 7777 7785 7803 7811 7819 7827 7845 7853 7861 7882 7890 7898 7906 7914 7935 7943 7951 7959 7974 7982 7990 7998 8016 8024 8032 8050 8058 8066 8078 8086 8097 8102 8110 8118 8126 8144 8152 8160 8168 8176 8194 8202 8210 8225 8233 8241 8259 8267 8282 8290 8298 8306 8327 8335 8340 8354 8362 8370 8378 8386 8407 8415 8433 8441 8449 8457 8465 8480 8488 8496 8504 8522 8530 8545 8553 8561 8579 8587 8595 8607 8619 8639 8651 8663 8683 8695 8707 8727 8739 8751 8771 8783 8795 8815 8827 8839 8859 8871 8883 8903 8915 8927 8947 8959 8966 8978 8998 9010 9022 9030 9038 9043 9057 9065 9073 9081 9089 9107 9115 9123 9131 9149 9157 9175 9183 9191 9199 9210 9215 9223 9231 9252 9260 9268 9276 9284 9302 9310 9318 9326 9344 9352 9360 9368 9389 9397 9405 9413 9421 9439 9447 9455 9473 9481 9489 9497 9515 9523 9531 9539 9557 9565 9573 9581 9602 9610 9618 9626 9644 9652 9660 9668 9683 9691 9699 9707 9725 9733 9741 9749 9757 9775 9783 9791 9809 9817 9835 9843 9851 9859 9867 9875 9893 9901 9909 9917 9935 9943 9951 9959 9977 9985 9993 10001 10019 10027 10035 10043 10051 10059 10077 10085 10093 10101 10119 10127 10135 10143 10161 10169 10177 10185 10193 10211 10219 10227 10235 10243 10261 10269 10277 10285 10303 10311 10319 10327 10345 10353 10361 10369 10377 10395 10403 10411 10419 10437 10445 10453 10461 10479 10487 10495 10503 10521 10529 10537 10545 10553 10571 10579 10587 10595 10613 10621 10639 10647 10655 10663 10681 10689 10697 10705 10723 10731 10739 10747 10755 10763 10778 10786 10807 10815 10823 10841 10849 10857 10865 10873 10888 10896 10904 10912 10930 10938 10946 10954 10972 10980 10988 10996 11014 11022 11030 11038 11046 11064 11072 11080 11088 11106 11114 11122 11130 11148 11156 11164 11172 11190 11198 11206 11224 11232 11240 11248 11266 11274 11282 11290 11308 11316 11324 11332 11340 11358 11366 11374 11392 11400 11408 11416 11434 11442 11450 11458 11473 11481 11489 11507 11515 11523 11531 11539 11557 11565 11573 11581 11599 11607 11619 11631 11643 11663 11675 11687 11707 11719 11731 11751 11763 11775 11795 11807 11819 11839 11851 11863 11883 11895 11907 11927 11939 11951 11971 11983 11995 12015 12027 12034 12046 12058 12078 12090 12100 12108 12118 12134 12146 12166 12178 12190 12202 12222 12234 12254 12266 12278 12298 12310 12318 12326 12334 12355 12363 12371 12379 12387 12402 12410 12418 12426 12447 12455 12463 12471 12486 12494 12502 12510 12518 12526 12534 12552 12560 12578 12586 12594 12602 12610 12618 12626 12644 12652 12670 12678 12686 12694 12702 12710 12728 12736 12744 12762 12770 12778 12786 12794 12812 12820 12828 12836 12854 12862 12870 12888 12896 12904 12912 12920 12928 12949 12957 12965 12983 12991 12999 13007 13022 13030 13038 13053 13061 13078 13083 13091 13099 13107 13128 13136 13144 13152 13160 13168 13186 13194 13218 13226 13231 13245 13253 13261 13269 13284 13292 13300 13308 13316 13337 13345 13360 13368 13376 13397 13405 13413 13421 13429 13447 13455 13463 13475 13487 13507 13519 13531 13551 13563 13575 13595 13607 13619 13639 13651 13663 13683 13695 13707 13727 13739 13751 13771 13783 13795 13815 13827 13839 13859 13871 13878 13890 13910 13922 13934 13942 13950 13958 13966 13974 13992 14000 14008 14023 14031 14036 14047 14055 14063 14071 14079 14087 14095 14116 14124 14142 14150 14158 14166 14174 14192 14200 14208 14216 14224 14242 14250 14264 14269 14277 14285 14293 14301 14309 14327 14335 14343 14351 14366 14374 14382 14390 14408 14416 14424 14432 14450 14458 14466 14484 14492 14500 14518 14526 14534 14542 14560 14568 14576 14584 14602 14610 14618 14626 14634 14652 14660 14668 14686 14694 14702 14710 14718 14736 14744 14752 14770 14778 14796 14804 14812 14820 14828 14836 14854 14862 14870 14878 14896 14904 14912 14920 14938 14946 14954 14962 14980 14988 14996 15004 15022 15030 15038 15046 15064 15072 15080 15088 15096 15104 15122 15130 15138 15146 15154 15172 15180 15188 15209 15217 15225 15233 15248 15256 15264 15272 15290 15298 15306 15314 15322 15340 15348 15356 15364 15382 15390 15398 15406 15424 15432 15440 15448 15466 15474 15482 15490 15508 15516 15524 15532 15540 15548 15566 15574 15582 15590 15608 15616 15624 15632 15650 15658 15666 15674 15692 15700 15708 15716 15724 15732 15740 15758 15766 15774 15782 15800 15808 15816 15824 15832 15850 15858 15876 15884 15892 15900 15918 15926 15934 15942 15950 15968 15976 15984 15992 16000 16018 16026 16034 16055 16063 16071 16079 16097 16105 16113 16121 16139 16147 16155 16163 16181 16189 16197 16205 16213 16231 16239 16247 16255 16263 16281 16289 16297 16305 16323 16331 16339 16347 16365 16373 16381 16389 16407 16415 16423 16431 16449 16457 16465 16483 16491 16499 16507 16525 16533 16541 16549 16567 16575 16583 16591 16609 16617 16625 16633 16651 16659 16667 16675 16693 16701 16709 16727 16735 16743 16751 16759 16777 16785 16793 16801 16819 16827 16835 16843 16851 16869 16877 16885 16893 16901 16909 16921 16940 16950 16962 16982 16994 17006 17026 17038 17050 17070 17082 17094 17114 17126 17138 17158 17170 17182 17202 17214 17226 17246 17258 17270 17290 17302 17314 17334 17346 17358 17378 17390 17397 17409 17421 17441 17453 17461 17469 17477 17485 17506 17514 17533 17543 17551 17559 17569 17588 17600 17620 17632 17644 17664 17676 17684 17692 17700 17715 17723 17731 17739 17747 17765 17773 17781 17789 17797 17815 17823 17831 17839 17857 17865 17873 17881 17899 17907 17925 17933 17941 17959 17967 17975 17983 17991 17999 18017 18025 18033 18041 18049 18057 18075 18083 18091 18099 18117 18125 18133 18141 18149 18157 18165 18173 18191 18199 18207 18215 18233 18241 18249 18257 18265 18283 18291 18299 18307 18328 18336 18344 18352 18367 18375 18383 18401 18409 18417 18425 18433 18451 18459 18467 18485 18493 18501 18509 18517 18535 18543 18551 18559 18577 18585 18593 18611 18619 18627 18635 18650 18658 18666 18674 18692 18700 18708 18716 18724 18742 18750 18758 18766 18784 18792 18806 18811 18819 18827 18835 18843 18861 18869 18884 18892 18900 18908 18923 18931 18939 18947 18965 18970 18981 18989 18997 19005 19013 19031 19039 19060 19068 19076 19084 19102 19110 19118 19126 19134 19152 19160 19168 19176 19194 19202 19214 19226 19246 19258 19270 19290 19302 19314 19334 19346 19358 19378 19390 19402 19422 19434 19446 19466 19478 19490 19510 19522 19534 19554 19566 19578 19598 19610 19622 19642 19654 19661 19673 19685 19705 19717 19725 19733 19741 19749 19767 19775 19783 19791 19799 19817 19825 19833 19848 19856 19874 19882 19890 19898 19913 19921 19929 19937 19945 19953 19961 19979 19987 19992 20003 20011 20032 20040 20048 20056 20074 20082 20090 20098 20106 20121 20129 20137 20145 20163 20171 20179 20193 20198 20206 20221 20229 20237 20245 20253 20261 20279 20287 20295 20303 20321 20329 20337 20345 20363 20371 20379 20387 20405 20413 20421 20439 20447 20455 20463 20471 20479 20497 20505 20523 20531 20539 20547 20555 20573 20581 20589 20597 20605 20626 20634 20642 20660 20668 20686 20694 20702 20710 20718 20726 20744 20752 20760 20768 20786 20794 20802 20810 20828 20836 20844 20852 20870 20878 20886 20894 20912 20920 20928 20936 20954 20962 20970 20978 20996 21004 21012 21020 21038 21046 21054 21062 21080 21088 21096 21104 21112 21130 21138 21146 21164 21172 21180 21188 21206 21214 21222 21230 21238 21256 21264 21282 21290 21298 21306 21314 21332 21340 21348 21356 21374 21382 21390 21398 21416 21424 21432 21440 21458 21466 21474 21482 21500 21508 21516 21524 21542 21550 21558 21566 21584 21592 21600 21608 21626 21634 21642 21650 21668 21676 21684 21692 21710 21718 21726 21734 21752 21760 21768 21776 21784 21802 21810 21818 21836 21844 21852 21860 21878 21886 21894 21902 21910 21931 21939 21954 21962 21970 21978 21986 22004 22012 22020 22028 22036 22054 22062 22070 22088 22096 22104 22112 22130 22138 22146 22154 22172 22180 22188 22196 22214 22222 22230 22238 22256 22264 22272 22280 22288 22306 22314 22322 22330 22348 22356 22364 22372 22390 22398 22406 22414 22432 22440 22448 22456 22474 22482 22490 22498 22516 22524 22532 22540 22558 22566 22574 22592 22600 22608 22616 22634 22642 22650 22658 22676 22684 22692 22700 22708 22726 22734 22742 22760 22768 22776 22794 22802 22810 22818 22826 22834 22852 22860 22868 22876 22894 22902 22910 22918 22936 22944 22952 22960 22978 22986 22994 23002 23010 23018 23039 23047 23062 23070 23078 23086 23094 23112 23120 23138 23146 23154 23162 23170 23188 23196 23204 23216 23235 23245 23257 23277 23289 23301 23321 23333 23345 23365 23377 23389 23409 23421 23433 23453 23465 23477 23497 23509 23521 23541 23553 23565 23585 23597 23609 23629 23641 23653 23673 23685 23692 23704 23716 23736 23748 23756 23764 23772 23780 23798 23806 23824 23832 23840 23848 23856 23864 23882 23890 23909 23919 23927 23935 23954 23964 23972 23980 23988 23996 24011 24019 24027 24035 24043 24051 24072 24080 24088 24106 24114 24122 24130 24138 24156 24164 24172 24180 24188 24206 24214 24222 24230 24248 24256 24264 24272 24290 24298 24306 24327 24335 24343 24351 24366 24374 24382 24390 24408 24416 24424 24442 24450 24458 24466 24474 24492 24500 24508 24516 24534 24542 24560 24568 24576 24584 24592 24610 24618 24626 24634 24652 24660 24668 24676 24684 24702 24710 24718 24726 24741 24749 24757 24765 24786 24794 24802 24820 24828 24836 24844 24852 24870 24878 24886 24904 24912 24920 24928 24936 24954 24962 24970 24978 24996 25004 25012 25030 25038 25046 25054 25075 25083 25091 25099 25114 25122 25130 25138 25156 25164 25172 25190 25198 25206 25214 25228 25233 25241 25249 25267 25275 25283 25301 25309 25317 25325 25343 25351 25359 25364 25375 25383 25401 25409 25417 25425 25443 25451 25459 25467 25485 25493 25501 25509 25527 25535 25543 25551 25569 25577 25585 25597 25613 25623 25635 25655 25667 25679 25699 25711 25723 25743 25755 25767 25787 25799 25811 25831 25843 25855 25875 25887 25899 25919 25931 25943 25963 25975 25987 26007 26019 26031 26051 26063 26070 26082 26094 26114 26126 26134 26142 26150 26168 26176 26184 26192 26210 26218 26226 26234 26249 26257 26265 26286 26294 26302 26310 26328 26336 26344 26352 26367 26375 26383 26391 26409 26417 26422 26436 26444 26452 26460 26468 26489 26497 26505 26513 26528 26536 26544 26552 26570 26578 26586 26604 26612 26620 26632 26640 26651 26656 26664 26672 26680 26688 26706 26714 26722 26740 26748 26756 26764 26772 26790 26798 26806 26821 26829 26837 26855 26863 26878 26886 26894 26902 26910 26925 26933 26951 26959 26967 26975 26983 26998 27006 27014 27032 27040 27058 27066 27074 27082 27090 27098 27116 27124 27132 27140 27158 27166 27174 27182 27200 27208 27216 27224 27242 27250 27258 27266 27284 27292 27300 27308 27326 27334 27342 27350 27368 27376 27384 27392 27410 27418 27426 27434 27455 27463 27471 27479 27497 27505 27513 27521 27539 27547 27555 27563 27571 27592 27600 27608 27616 27634 27642 27650 27658 27666 27684 27692 27710 27718 27726 27734 27742 27760 27768 27776 27784 27802 27810 27818 27826 27844 27852 27860 27868 27886 27894 27902 27910 27928 27936 27944 27952 27970 27978 27986 27994 28012 28020 28028 28043 28051 28059 28067 28085 28093 28101 28109 28127 28135 28143 28151 28169 28177 28185 28193 28201 28209 28217 28235 28243 28261 28269 28277 28285 28303 28311 28319 28327 28335 28343 28364 28372 28380 28398 28406 28414 28422 28440 28448 28456 28464 28472 28490 28498 28506 28524 28532 28540 28548 28566 28574 28582 28590 28608 28616 28624 28632 28650 28658 28666 28674 28692 28700 28708 28716 28724 28742 28750 28758 28766 28774 28792 28800 28808 28816 28834 28842 28850 28858 28866 28874 28892 28900 28908 28916 28934 28942 28950 28958 28976 28984 28992 29000 29018 29026 29034 29042 29060 29068 29076 29084 29102 29110 29118 29136 29144 29152 29160 29178 29186 29194 29202 29210 29228 29236 29244 29252 29270 29278 29286 29307 29315 29323 29331 29346 29354 29362 29370 29378 29396 29404 29412 29420 29438 29446 29454 29462 29480 29488 29506 29514 29522 29530 29538 29546 29564 29572 29590 29598 29606 29614 29622 29643 29651 29659 29667 29685 29693 29701 29709 29724 29732 29740 29752 29771 29781 29793 29813 29825 29837 29857 29869 29881 29901 29913 29925 29945 29957 29969 29989 30001 30013 30033 30045 30057 30077 30089 30101 30121 30133 30145 30165 30177 30189 30209 30221 30228 30240 30252 30272 30284 30292 30300 30308 30323 30331 30349 30357 30365 30373 30381 30396 30404 30422 30430 30438 30446 30454 30472 30480 30488 30496 30511 30519 30527 30535 30553 30561 30569 30577 30585 30603 30611 30619 30627 30635 30653 30661 30676 30684 30692 30700 30708 30726 30734 30742 30750 30768 30776 30784 30792 30800 30818 30826 30834 30842 30860 30868 30876 30884 30902 30910 30918 30936 30944 30952 30960 30978 30986 30994 31009 31017 31025 31033 31041 31062 31070 31078 31086 31104 31112 31130 31138 31146 31154 31162 31180 31188 31196 31211 31219 31227 31235 31243 31261 31269 31277 31285 31303 31311 31319 31327 31345 31353 31361 31379 31387 31395 31403 31411 31429 31437 31445 31463 31471 31479 31487 31495 31513 31521 31529 31537 31555 31563 31571 31589 31597 31605 31613 31631 31639 31647 31655 31673 31681 31689 31697 31715 31723 31731 31739 31747 31768 31776 31784 31799 31807 31815 31826 31831 31839 31847 31868 31873 31887 31895 31903 31911 31919 31937 31945 31953 31961 31979 31987 31995 32003 32021 32029 32037 32045 32063 32071 32079 32087 32105 32113 32121 32133 32152 32162 32174 32194 32206 32218 32238 32250 32262 32282 32294 32306 32326 32338 32350 32370 32382 32394 32414 32426 32438 32458 32470 32482 32502 32514 32526 32546 32558 32570 32590 32602 32609 32621 32633 32653 32665 32673 32681 32689 32707 32715 32723 32731 32749 32757 32765 32773 32794 32802 32810 32818 32826 32847 32855 32863 32878 32886 32894 32912 32920 32928 32933 32947 32955 32963 32978 32986 32994 33002 33020 33028 33036 33044 33059 33067 33075 33090 33098 33115 33120 33128 33136 33144 33152 33170 33178 33186 33194 33215 33223 33231 33239 33247 33255 33273 33281 33305 33313 33321 33329 33337 33358 33366 33374 33395 33403 33411 33426 33434 33442 33450 33458 33476 33484 33492 33500 33518 33526 33534 33542 33560 33568 33576 33584 33602 33610 33618 33626 33644 33652 33660 33668 33686 33694 33712 33720 33728 33736 33744 33752 33770 33778 33786 33794 33802 33820 33828 33846 33854 33862 33870 33878 33886 33904 33912 33920 33935 33943 33951 33959 33977 33985 33993 34001 34019 34027 34035 34043 34061 34069 34077 34085 34093 34111 34119 34137 34145 34153 34161 34169 34177 34185 34203 34211 34219 34234 34242 34250 34258 34276 34284 34292 34307 34315 34323 34331 34349 34357 34365 34373 34391 34399 34407 34425 34433 34441 34449 34467 34475 34483 34491 34509 34517 34525 34533 34551 34559 34567 34585 34593 34601 34609 34617 34635 34643 34651 34659 34667 34682 34690 34708 34716 34724 34732 34740 34758 34766 34774 34782 34790 34808 34816 34824 34842 34850 34858 34866 34884 34892 34900 34908 34916 34934 34942 34950 34968 34976 34984 34992 35010 35018 35026 35034 35052 35060 35068 35076 35094 35102 35110 35118 35136 35144 35152 35160 35168 35186 35194 35202 35210 35218 35236 35244 35252 35260 35278 35286 35294 35302 35320 35328 35336 35344 35362 35370 35378 35386 35394 35412 35420 35428 35436 35444 35452 35470 35478 35496 35504 35512 35520 35528 35546 35554 35562 35570 35588 35596 35604 35612 35630 35638 35646 35654 35672 35680 35688 35696 35714 35722 35730 35748 35756 35764 35772 35790 35798 35806 35814 35822 35840 35848 35856 35864 35882 35890 35898 35906 35924 35932 35940 35948 35966 35974 35982 35990 36008 36016 36024 36032 36050 36058 36076 36084 36092 36100 36108 36123 36131 36149 36157 36165 36173 36181 36199 36207 36215 36223 36231 36252 36260 36268 36276 36294 36302 36310 36318 36336 36344 36352 36364 36383 36393 36405 36425 36437 36449 36469 36481 36493 36513 36525 36537 36557 36569 36581 36601 36613 36625 36645 36657 36669 36689 36701 36713 36733 36745 36757 36777 36789 36801 36821 36833 36840 36852 36864 36884 36896 36904 36912 36920 36941 36949 36957 36965 36973 36994 37002 37010 37018 37036 37044 37052 37060 37078 37086 37094 37102 37120 37128 37136 37144 37162 37170 37178 37186 37204 37212 37220 37228 37236 37244 37259 37267 37275 37283 37304 37312 37320 37328 37346 37354 37362 37370 37388 37396 37404 37412 37427 37435 37443 37451 37469 37477 37485 37493 37511 37519 37527 37545 37553 37561 37569 37590 37598 37606 37614 37622 37640 37648 37666 37674 37682 37690 37711 37719 37727 37735 37743 37751 37772 37780 37788 37796 37804 37822 37830 37838 37846 37864 37872 37880 37888 37906 37914 37922 37940 37948 37956 37964 37972 37990 37998 38006 38024 38032 38040 38048 38056 38074 38082 38090 38098 38116 38124 38132 38150 38158 38166 38174 38192 38200 38208 38216 38224 38242 38250 38265 38273 38281 38289 38297 38315 38323 38331 38339 38347 38365 38373 38381 38389 38407 38415 38429 38434 38439 38450 38458 38466 38474 38482 38500 38508 38516 38531 38539 38547 38562 38570 38578 38586 38604 38612 38620 38628 38646 38654 38662 38670 38688 38696 38704 38716 38735 38745 38757 38777 38789 38801 38821 38833 38845 38865 38877 38889 38909 38921 38933 38953 38965 38977 38997 39009 39021 39041 39053 39065 39085 39097 39109 39129 39141 39153 39173 39185 39192 39204 39216 39236 39248 39256 39264 39272 39290 39298 39306 39314 39332 39340 39348 39363 39371 39379 39387 39395 39413 39421 39429 39437 39455 39463 39471 39489 39497 39502 39513 39521 39533 39541 39549 39567 39575 39589 39594 39602 39610 39628 39636 39644 39652 39660 39678 39686 39701 39709 39717 39725 39740 39748 39756 39764 39782 39790 39798 39806 39814 39835 39843 39851 39859 39877 39885 39893 39901 39919 39927 39935 39943 39961 39969 39977 39985 40003 40011 40019 40027 40045 40053 40061 40069 40087 40095 40113 40121 40129 40137 40145 40163 40171 40179 40187 40195 40203 40221 40229 40247 40255 40263 40271 40279 40300 40308 40323 40331 40339 40347 40355 40363 40381 40389 40397 40405 40423 40431 40439 40447 40465 40473 40481 40489 40497 40515 40523 40538 40546 40554 40562 40583 40591 40599 40607 40615 40623 40641 40649 40657 40665 40683 40691 40699 40707 40715 40723 40731 40752 40760 40768 40776 40797 40805 40813 40828 40836 40844 40852 40860 40881 40889 40897 40912 40920 40928 40946 40954 40962 40970 40988 40996 41011 41019 41027 41035 41053 41061 41069 41077 41095 41103 41111 41119 41127 41148 41156 41164 41172 41190 41198 41206 41214 41222 41237 41245 41253 41271 41279 41287 41295 41313 41321 41329 41337 41345 41363 41371 41379 41397 41405 41413 41421 41439 41447 41455 41463 41481 41489 41507 41515 41523 41531 41539 41547 41565 41573 41581 41589 41607 41615 41623 41631 41649 41657 41665 41673 41681 41699 41707 41715 41723 41741 41749 41757 41765 41783 41791 41799 41807 41825 41833 41841 41856 41864 41872 41880 41888 41906 41914 41922 41930 41948 41956 41964 41972 41980 41998 42006 42014 42022 42030 42038 42056 42064 42082 42090 42098 42106 42114 42132 42140 42148 42156 42174 42182 42190 42198 42216 42224 42232 42240 42258 42266 42274 42282 42300 42308 42316 42324 42332 42350 42358 42376 42384 42392 42400 42408 42426 42434 42442 42450 42468 42476 42484 42492 42500 42521 42529 42537 42545 42563 42571 42579 42587 42605 42613 42631 42639 42647 42655 42663 42684 42692 42700 42708 42726 42734 42742 42750 42765 42773 42781 42789 42807 42815 42823 42831 42839 42860 42868 42876 42884 42902 42910 42918 42926 42944 42952 42964 42980 42990 43002 43022 43034 43046 43066 43078 43090 43110 43122 43134 43154 43166 43178 43198 43210 43222 43242 43254 43266 43286 43298 43310 43330 43342 43354 43374 43386 43398 43418 43430 43437 43449 43461 43481 43493 43501 43509 43517 43535 43543 43551 43559 43577 43585 43593 43601 43619 43627 43635 43643 43661 43669 43677 43685 43703 43711 43719 43727 43745 43753 43761 43769 43787 43795 43813 43821 43829 43837 43855 43863 43871 43879 43900 43908 43916 43924 43942 43950 43965 43973 43981 43989 43997 44015 44023 44031 44039 44057 44065 44073 44081 44089 44110 44118 44126 44141 44149 44157 44175 44183 44191 44199 44217 44225 44233 44241 44249 44264 44272 44290 44298 44306 44314 44332 44340 44348 44356 44374 44382 44390 44398 44406 44424 44432 44440 44448 44456 44474 44482 44490 44498 44516 44524 44532 44540 44558 44566 44574 44592 44600 44608 44616 44624 44642 44650 44658 44676 44684 44692 44700 44715 44723 44731 44739 44757 44765 44773 44791 44799 44807 44815 44823 44831 44849 44857 44875 44883 44891 44899 44920 44928 44936 44944 44952 44970 44978 44986 44994 45002 45020 45028 45036 45044 45062 45070 45078 45086 45104 45112 45123 45128 45133 45144 45152 45160 45168 45176 45184 45205 45213 45221 45242 45250 45258 45266 45284 45292 45300 45308 45326 45334 45342 45350 45368 45376 45384 45396 45415 45425 45437 45457 45469 45481 45501 45513 45525 45545 45557 45569 45589 45601 45613 45633 45645 45657 45677 45689 45701 45721 45733 45745 45765 45777 45789 45809 45821 45833 45853 45865 45872 45884 45896 45916 45928 45936 45944 45952 45970 45978 45996 46004 46012 46020 46035 46043 46051 46066 46074 46079 46096 46104 46118 46123 46131 46139 46157 46165 46173 46191 46199 46207 46215 46233 46241 46249 46264 46272 46280 46288 46296 46314 46322 46330 46338 46356 46364 46372 46380 46398 46406 46414 46422 46440 46448 46456 46464 46482 46490 46498 46506 46524 46532 46550 46558 46566 46574 46582 46600 46608 46616 46624 46632 46650 46658 46666 46674 46682 46700 46708 46726 46734 46742 46750 46758 46779 46787 46802 46810 46818 46826 46834 46852 46860 46868 46876 46894 46902 46910 46918 46926 46934 46952 46960 46968 46986 46994 47002 47010 47018 47039 47047 47062 47070 47078 47086 47101 47109 47117 47135 47143 47151 47159 47180 47188 47196 47204 47212 47230 47238 47246 47254 47275 47283 47291 47299 47314 47322 47330 47351 47359 47377 47385 47393 47401 47419 47427 47435 47443 47461 47469 47477 47492 47500 47508 47516 47537 47545 47553 47561 47569 47577 47592 47600 47608 47629 47637 47645 47653 47671 47679 47687 47695 47710 47718 47726 47744 47752 47760 47768 47786 47794 47812 47820 47828 47836 47844 47859 47867 47875 47883 47901 47909 47917 47925 47943 47951 47959 47967 47975 47993 48001 48009 48017 48035 48043 48051 48059 48077 48085 48093 48101 48119 48127 48135 48143 48161 48169 48177 48185 48206 48214 48222 48230 48238 48256 48264 48272 48280 48288 48306 48314 48322 48330 48348 48356 48371 48379 48387 48395 48403 48411 48429 48437 48445 48453 48471 48479 48487 48495 48503 48511 48529 48537 48555 48563 48571 48579 48587 48605 48613 48621 48629 48647 48655 48663 48671 48689 48697 48705 48713 48731 48739 48747 48755 48773 48781 48789 48797 48805 48820 48828 48846 48854 48862 48880 48888 48896 48904 48912 48930 48938 48946 48954 48969 48977 48985 48993 49011 49019 49027 49035 49053 49061 49079 49087 49095 49107 49126 49136 49148 49167 49177 49189 49208 49218 49230 49249 49259 49271 49287 49297 49309 49328 49338 49350 49369 49379 49391 49410 49420 49432 49451 49461 49473 49493 49505 49517 49537 49549 49561 49581 49593 49605 49625 49637 49649 49669 49681 49693 49713 49725 49737 49757 49769 49781 49801 49813 49825 49845 49857 49869 49889 49901 49908 49920 49932 49952 49964 49972 49980 49988 50006 50014 50022 50030 50048 50056 50064 50072 50090 50098 50106 50114 50132 50140 50148 50156 50174 50182 50190 50198 50216 50224 50242 50250 50258 50266 50287 50295 50303 50321 50329 50337 50345 50363 50371 50379 50387 50395 50403 50421 50429 50437 50445 50460 50468 50476 50497 50505 50523 50531 50539 50547 50555 50563 50571 50589 50597 50605 50613 50634 50642 50650 50665 50673 50688 50696 50704 50712 50720 50738 50746 50754 50762 50770 50788 50796 50804 50812 50830 50838 50846 50861 50869 50877 50895 50903 50911 50919 50927 50945 50953 50961 50979 50987 50995 51003 51021 51029 51037 51055 51063 51071 51079 51100 51108 51116 51124 51132 51147 51155 51163 51184 51192 51200 51208 51216 51234 51242 51250 51258 51273 51281 51296 51304 51312 51320 51328 51346 51354 51362 51370 51388 51396 51404 51412 51420 51438 51446 51457 51462 51467 51475 51489 51497 51505 51513 51521 51536 51544 51562 51570 51578 51586 51594 51602 51623 51631 51639 51647 51665 51673 51681 51689 51707 51715 51723 51731 51749 51757 51765 51777 51796 51806 51818 51838 51850 51862 51882 51894 51906 51926 51938 51950 51970 51982 51994 52014 52026 52038 52058 52070 52082 52102 52114 52126 52146 52158 52170 52190 52202 52214 52234 52246 52253 52265 52277 52297 52309 52317 52325 52346 52354 52359 52373 52381 52392 52397 52405 52413 52434 52442 52450 52458 52476 52484 52492 52500 52518 52526 52534 52542 52560 52568 52576 52584 52602 52610 52618 52626 52644 52652 52660 52668 52686 52694 52712 52720 52728 52736 52744 52762 52770 52778 52786 52804 52812 52820 52828 52843 52851 52859 52874 52882 52890 52908 52916 52924 52932 52940 52961 52969 52977 52985 53003 53011 53019 53027 53045 53053 53061 53069 53077 53095 53103 53115 53131 53141 53149 53157 53165 53183 53191 53199 53217 53225 53233 53241 53249 53270 53278 53286 53307 53315 53323 53331 53349 53357 53365 53373 53381 53399 53407 53415 53423 53441 53449 53470 53478 53486 53494 53502 53523 53531 53539 53557 53565 53573 53581 53599 53607 53615 53623 53631 53639 53657 53665 53683 53691 53699 53707 53715 53723 53744 53752 53760 53768 53789 53797 53815 53823 53831 53839 53847 53868 53876 53884 53892 53910 53918 53926 53934 53952 53960 53968 53976 53991 53999 54007 54015 54023 54041 54049 54067 54075 54083 54091 54099 54117 54125 54133 54141 54159 54167 54175 54190 54198 54206 54221 54229 54237 54245 54260 54268 54276 54284 54302 54310 54318 54326 54334 54352 54360 54375 54383 54391 54409 54417 54425 54433 54448 54456 54464 54472 54480 54501 54509 54517 54525 54533 54541 54556 54564 54582 54590 54598 54606 54614 54632 54640 54658 54666 54674 54682 54690 54698 54716 54724 54732 54740 54758 54766 54774 54782 54800 54808 54816 54824 54842 54850 54868 54876 54884 54892 54907 54915 54923 54944 54952 54960 54968 54976 54994 55002 55010 55018 55026 55047 55055 55063 55071 55089 55097 55115 55123 55131 55139 55147 55155 55173 55185 55205 55217 55229 55249 55261 55273 55293 55305 55317 55337 55349 55361 55381 55393 55405 55425 55437 55449 55469 55481 55493 55513 55525 55537 55557 55569 55581 55601 55613 55625 55645 55657 55669 55689 55701 55713 55733 55745 55757 55777 55789 55801 55821 55833 55845 55865 55877 55889 55909 55921 55933 55953 55965 55972 55984 55996 56016 56028 56036 56044 56052 56070 56078 56086 56094 56115 56123 56131 56139 56147 56165 56173 56181 56189 56197 56218 56226 56234 56242 56250 56258 56276 56284 56302 56310 56318 56326 56347 56355 56363 56371 56389 56397 56405 56413 56421 56436 56444 56452 56460 56478 56486 56507 56515 56523 56531 56549 56557 56565 56573 56581 56599 56607 56615 56623 56631 56652 56660 56668 56689 56697 56705 56713 56731 56739 56747 56755 56763 56781 56789 56797 56812 56820 56828 56849 56857 56865 56873 56881 56899 56907 56915 56933 56941 56949 56957 56978 56986 56994 57009 57017 57025 57033 57051 57059 57067 57075 57083 57101 57109 57117 57135 57143 57151 57159 57177 57185 57193 57211 57219 57227 57235 57243 57261 57269 57277 57285 57303 57311 57319 57327 57335 57343 57361 57369 57377 57385 57406 57414 57422 57436 57441 57449 57457 57465 57476 57481 57489 57500 57508 57526 57534 57542 57550 57558 57579 57587 57595 57603 57615 57623 57631 57646 57654 57662 57670 57688 57696 57704 57712 57730 57738 57746 57754 57762 57770 57778 57786 57794 57812 57820 57828 57836 57854 57862 57874 57890 57900 57912 57932 57944 57956 57976 57988 58000 58020 58032 58044 58064 58076 58088 58108 58120 58132 58152 58164 58176 58196 58208 58220 58240 58252 58264 58284 58296 58308 58328 58340 58347 58359 58371 58391 58403 58408 58422 58430 58438 58452 58457 58465 58473 58481 58499 58507 58515 58523 58541 58549 58557 58565 58583 58591 58599 58607 58625 58633 58641 58649 58667 58675 58693 58701 58709 58717 58725 58733 58741 58762 58770 58778 58796 58804 58812 58820 58838 58846 58854 58875 58883 58895 58914 58924 58936 58955 58965 58973 58985 59004 59014 59022 59030 59038 59059 59067 59075 59083 59091 59099 59117 59125 59143 59151 59163 59183 59195 59203 59211 59219 59237 59245 59253 59261 59279 59287 59302 59310 59318 59326 59334 59342 59363 59371 59386 59394 59402 59410 59418 59426 59447 59455 59473 59481 59489 59497 59505 59520 59528 59546 59554 59562 59570 59588 59596 59604 59612 59620 59628 59646 59654 59672 59680 59688 59696 59704 59712 59730 59738 59746 59754 59772 59780 59798 59806 59814 59822 59830 59848 59856 59864 59872 59880 59898 59906 59914 59922 59940 59948 59956 59964 59982 59990 59998 60006 60024 60032 60040 60048 60056 60077 60085 60093 60101 60109 60130 60138 60146 60167 60175 60183 60191 60209 60217 60225 60233 60251 60259 60267 60275 60296 60304 60312 60320 60328 60336 60351 60359 60367 60375 60390 60398 60406 60427 60435 60443 60451 60472 60480 60488 60496 60504 60512 60527 60535 60543 60561 60569 60577 60585 60593 60611 60619 60627 60635 60653 60661 60679 60687 60695 60713 60721 60729 60737 60745 60763 60771 60779 60787 60805 60813 60821 60829 60847 60855 60873 60881 60889 60897 60905 60913 60934 60942 60950 60968 60976 60984 60992 61007 61015 61023 61031 61049 61057 61075 61083 61091 61099 61107 61115 61133 61141 61156 61164 61172 61180 61188 61196 61204 61212 61230 61238 61250 61270 61282 61294 61314 61326 61338 61358 61370 61382 61402 61414 61426 61446 61458 61470 61490 61502 61514 61534 61546 61558 61570 61590 61602 61622 61634 61646 61666 61678 61690 61710 61722 61734 61754 61766 61778 61798 61810 61822 61842 61854 61866 61886 61898 61910 61930 61942 61954 61974 61986 61993 62005 62017 62037 62049 62057 62065 62073 62091 62099 62107 62115 62133 62141 62149 62157 62175 62183 62191 62199 62207 62215 62233 62241 62249 62257 62272 62284 62303 62313 62321 62329 62337 62352 62360 62368 62376 62397 62405 62413 62421 62442 62450 62458 62473 62481 62489 62497 62505 62523 62531 62539 62547 62565 62573 62591 62599 62607 62615 62623 62631 62652 62660 62668 62676 62694 62702 62710 62718 62733 62741 62749 62767 62775 62783 62791 62809 62817 62825 62833 62848 62856 62864 62885 62893 62901 62909 62924 62932 62940 62958 62966 62981 62989 62997 63005 63013 63034 63042 63050 63058 63076 63084 63092 63100 63108 63126 63134 63142 63160 63168 63176 63184 63205 63213 63221 63229 63237 63255 63263 63278 63286 63294 63302 63320 63328 63336 63344 63352 63367 63375 63383 63391 63409 63417 63432 63440 63448 63456 63474 63482 63490 63511 63519 63527 63535 63550 63558 63566 63574 63582 63590 63598 63619 63627 63648 63656 63664 63672 63690 63698 63706 63714 63732 63740 63748 63756 63764 63785 63793 63801 63809 63824 63832 63840 63848 63856 63864 63872 63880 63888 63896 63904 63912 63933 63941 63956 63964 63972 63980 63988 64006 64014 64032 64040 64048 64056 64074 64082 64094 64114 64126 64138 64158 64170 64182 64202 64214 64226 64246 64258 64270 64290 64302 64314 64334 64346 64358 64378 64390 64402 64422 64434 64446 64466 64478 64490 64510 64522 64529 64541 64553 64573 64585 64590 64601 64609 64617 64628 64633 64641 64649 64657 64665 64683 64691 64699 64707 64725 64733 64741 64749 64767 64775 64783 64791 64809 64817 64835 64843 64851 64859 64867 64885 64893 64901 64909 64917 64932 64940 64958 64966 64974 64982 64990 64998 65016 65024 65045 65053 65061 65073 65093 65105 65117 65137 65149 65161 65177 65187 65199 65219 65231 65243 65262 65272 65282 65290 65307 65315 65323 65331 65339 65354 65362 65380 65388 65400 65420 65432 65440 65448 65456 65474 65482 65490 65498 65519 65527 65535 65543 65558 65566 65584 65592 65600 65608 65616 65624 65642 65650 65668 65676 65684 65692 65700 65724 65732 65740 65755 65763 65771 65779 65787 65805 65813 65831 65839 65847 65855 65863 65871 65889 65897 65912 65920 65928 65936 65957 65965 65973 65981 65989 66007 66015 66023 66031 66046 66054 66062 66070 66078 66096 66104 66112 66120 66138 66146 66154 66162 66180 66188 66196 66204 66219 66227 66235 66243 66261 66269 66277 66285 66303 66311 66319 66327 66335 66353 66361 66369 66387 66395 66403 66411 66429 66437 66445 66453 66461 66482 66490 66498 66516 66524 66532 66540 66548 66556 66564 66582 66590 66598 66606 66614 66629 66637 66645 66653 66671 66679 66687 66695 66713 66721 66729 66737 66745 66753 66761 66782 66790 66798 66806 66824 66832 66840 66848 66856 66871 66879 66887 66895 66916 66924 66932 66940 66948 66966 66974 66995 67003 67011 67019 67037 67045 67053 67061 67069 67087 67095 67103 67111 67129 67137 67155 67163 67171 67179 67187 67195 67213 67221 67229 67247 67255 67263 67271 67289 67297 67315 67323 67331 67339 67347 67355 67373 67381 67399 67407 67415 67423 67431 67439 67457 67465 67473 67491 67499 67517 67525 67533 67541 67549 67557 67565 67583 67591 67599 67617 67625 67633 67641 67659 67667 67675 67683 67691 67712 67720 67738 67746 67754 67762 67770 67778 67786 67798 67818 67830 67842 67862 67874 67886 67906 67918 67930 67950 67962 67974 67994 68006 68018 68030 68050 68062 68074 68094 68106 68118 68138 68150 68170 68182 68194 68214 68226 68238 68258 68270 68282 68302 68314 68326 68346 68358 68370 68390 68402 68414 68434 68446 68458 68478 68490 68497 68509 68521 68541 68553 68561 68569 68577 68595 68603 68611 68619 68637 68645 68653 68661 68679 68687 68695 68703 68711 68729 68737 68745 68753 68771 68779 68787 68795 68803 68821 68833 68852 68862 68874 68894 68906 68914 68922 68930 68938 68956 68964 68982 68990 68998 69006 69014 69032 69040 69048 69056 69064 69085 69093 69101 69109 69127 69135 69143 69151 69172 69180 69188 69196 69204 69222 69230 69238 69246 69264 69272 69280 69295 69303 69311 69329 69337 69345 69353 69371 69379 69387 69395 69416 69424 69445 69453 69461 69469 69477 69485 69503 69511 69519 69534 69542 69550 69558 69576 69584 69592 69600 69608 69626 69634 69642 69660 69668 69676 69684 69699 69707 69715 69723 69744 69752 69760 69778 69786 69794 69802 69810 69818 69836 69844 69862 69870 69878 69886 69907 69915 69923 69931 69949 69957 69965 69973 69981 69999 70007 70015 70023 70031 70046 70054 70072 70080 70088 70096 70114 70122 70130 70138 70156 70164 70172 70180 70188 70206 70214 70222 70230 70248 70256 70264 70272 70290 70298 70306 70321 70329 70337 70345 70353 70371 70379 70394 70402 70410 70431 70439 70447 70455 70463 70484 70492 70507 70515 70527 70547 70559 70571 70591 70603 70615 70635 70647 70659 70679 70691 70703 70723 70735 70747 70767 70779 70791 70811 70823 70835 70855 70867 70879 70899 70911 70918 70930 70942 70962 70974 70979 70990 70998 71006 71017 71022 71030 71038 71046 71054 71072 71080 71088 71096 71117 71125 71133 71141 71159 71167 71175 71183 71201 71209 71227 71235 71243 71251 71259 71277 71285 71293 71301 71319 71327 71335 71343 71364 71372 71380 71388 71400 71408 71426 71434 71442 71450 71465 71473 71485 71505 71517 71529 71549 71561 71573 71593 71605 71617 71637 71649 71659 71667 71686 71694 71702 71710 71718 71736 71744 71762 71770 71782 71802 71814 71822 71830 71838 71846 71864 71872 71880 71888 71906 71914 71922 71930 71951 71959 71967 71985 71993 72008 72016 72024 72032 72040 72064 72072 72080 72088 72103 72111 72129 72137 72145 72153 72161 72169 72177 72195 72203 72221 72229 72237 72245 72263 72271 72279 72287 72295 72313 72321 72329 72337 72355 72363 72371 72379 72394 72402 72410 72418 72436 72444 72452 72460 72478 72486 72494 72502 72520 72528 72536 72544 72562 72570 72578 72586 72604 72612 72620 72635 72643 72651 72659 72667 72685 72693 72701 72719 72727 72735 72743 72761 72769 72777 72785 72800 72808 72816 72831 72839 72847 72855 72876 72884 72892 72900 72918 72926 72934 72942 72957 72965 72973 72981 72989 73007 73015 73023 73031 73039 73047 73062 73070 73078 73086 73104 73112 73120 73128 73146 73154 73162 73170 73188 73196 73204 73212 73220 73228 73249 73257 73265 73273 73291 73299 73307 73315 73333 73341 73349 73357 73365 73383 73391 73399 73407 73425 73433 73441 73449 73457 73475 73483 73491 73499 73507 73528 73536 73544 73552 73570 73578 73586 73594 73602 73620 73628 73636 73644 73652 73670 73678 73696 73704 73712 73720 73738 73746 73754 73762 73770 73788 73796 73814 73822 73830 73838 73846 73854 73872 73880 73888 73906 73914 73932 73940 73948 73956 73964 73972 73990 73998 74016 74024 74032 74040 74048 74056 74074 74082 74103 74111 74119 74127 74135 74153 74161 74176 74184 74192 74200 74208 74229 74237 74245 74253 74268 74276 74294 74302 74310 74318 74326 74347 74355 74363 74371 74379 74387 74395 74413 74421 74429 74444 74452 74464 74484 74496 74508 74528 74540 74552 74572 74584 74596 74608 74628 74640 74652 74672 74684 74696 74716 74728 74740 74760 74772 74784 74804 74816 74836 74848 74860 74880 74892 74904 74924 74936 74948 74968 74980 74992 75012 75024 75036 75056 75068 75080 75100 75112 75119 75131 75143 75163 75175 75183 75191 75199 75217 75225 75233 75241 75249 75270 75278 75286 75294 75312 75320 75328 75336 75351 75359 75367 75375 75393 75401 75409 75417 75425 75446 75454 75462 75470 75488 75496 75504 75512 75524 75543 75553 75565 75585 75597 75609 75629 75641 75649 75657 75665 75673 75681 75699 75707 75715 75730 75738 75746 75754 75762 75770 75785 75793 75801 75819 75827 75835 75853 75861 75869 75877 75885 75903 75911 75919 75927 75945 75953 75961 75969 75987 75995 76003 76011 76026 76034 76042 76050 76068 76076 76084 76105 76113 76121 76129 76147 76155 76173 76181 76189 76197 76205 76213 76231 76239 76247 76265 76273 76281 76289 76297 76315 76323 76331 76349 76357 76375 76383 76391 76399 76414 76422 76430 76438 76446 76470 76478 76486 76501 76509 76517 76525 76533 76541 76559 76567 76585 76593 76601 76609 76630 76638 76646 76661 76669 76677 76685 76703 76711 76719 76727 76742 76750 76758 76766 76774 76792 76800 76818 76826 76834 76842 76860 76868 76876 76884 76902 76910 76918 76926 76934 76952 76960 76968 76976 76994 77002 77017 77025 77033 77041 77049 77067 77075 77083 77104 77112 77130 77138 77150 77170 77182 77194 77214 77226 77238 77258 77270 77282 77302 77314 77326 77346 77358 77370 77390 77402 77414 77434 77446 77458 77478 77490 77497 77509 77521 77541 77553 77558 77566 77580 77588 77596 77604 77618 77623 77631 77639 77647 77662 77670 77678 77686 77704 77712 77727 77735 77743 77751 77759 77777 77785 77803 77811 77819 77827 77835 77843 77861 77869 77877 77885 77893 77911 77919 77927 77935 77943 77961 77969 77977 77998 78006 78027 78035 78047 78067 78079 78091 78111 78123 78133 78141 78157 78167 78175 78194 78202 78210 78218 78226 78244 78252 78270 78278 78290 78310 78322 78330 78338 78346 78364 78372 78380 78388 78396 78414 78422 78437 78445 78453 78474 78482 78490 78498 78506 78524 78532 78540 78561 78569 78577 78585 78593 78611 78619 78627 78635 78643 78661 78669 78687 78695 78703 78711 78729 78737 78745 78753 78761 78779 78787 78795 78803 78821 78829 78837 78845 78863 78871 78879 78887 78905 78913 78921 78929 78947 78955 78963 78971 78989 78997 79005 79013 79031 79039 79047 79055 79076 79084 79092 79100 79115 79123 79131 79149 79157 79165 79173 79191 79199 79207 79215 79236 79244 79252 79267 79275 79283 79291 79309 79317 79325 79333 79351 79359 79367 79375 79393 79401 79409 79417 79432 79440 79448 79456 79474 79482 79490 79498 79513 79521 79529 79550 79558 79566 79574 79592 79600 79608 79623 79631 79639 79647 79665 79673 79681 79689 79704 79712 79720 79728 79736 79754 79762 79770 79778 79796 79804 79812 79820 79828 79849 79857 79865 79873 79891 79899 79907 79915 79930 79938 79946 79954 79972 79980 79988 79996 80014 80022 80030 80038 80056 80064 80072 80080 80095 80103 80111 80119 80127 80145 80153 80161 80169 80184 80192 80200 80208 80226 80234 80242 80250 80268 80276 80284 80292 80300 80318 80326 80334 80342 80357 80365 80373 80394 80402 80410 80418 80426 80444 80452 80460 80478 80486 80494 80502 80517 80525 80533 80554 80562 80570 80578 80593 80601 80619 80627 80635 80643 80651 80666 80674 80682 80690 80711 80719 80737 80745 80753 80761 80776 80784 80792 80800 80821 80829 80837 80845 80866 80874 80882 80890 80898 80916 80924 80932 80940 80948 80969 80977 80985 81003 81011 81019 81027 81042 81054 81074 81086 81098 81110 81130 81142 81154 81174 81186 81198 81218 81230 81242 81262 81274 81286 81306 81318 81330 81350 81362 81374 81394 81406 81426 81438 81450 81470 81482 81494 81514 81526 81538 81558 81570 81582 81602 81614 81626 81646 81658 81665 81677 81689 81709 81721 81733 81752 81762 81774 81790 81800 81812 81831 81841 81853 81872 81882 81894 81913 81923 81935 81954 81964 81976 81992 82002 82014 82033 82043 82053 82065 82084 82094 82104 82120 82132 82144 82163 82173 82192 82204 82216 82236 82248 82260 82280 82292 82304 82324 82336 82348 82367 82377 82385 82393 82414 82422 82430 82438 82446 82467 82475 82483 82491 82499 82517 82525 82537 82556 82566 82574 82582 82590 82614 82622 82630 82638 82656 82664 82672 82680 82698 82706 82714 82722 82740 82748 82756 82764 82782 82790 82798 82816 82824 82842 82850 82858 82866 82874 82892 82900 82908 82926 82934 82942 82950 82965 82973 82981 83002 83010 83018 83026 83034 83052 83060 83068 83086 83094 83102 83117 83125 83133 83141 83156 83164 83172 83180 83188 83209 83217 83225 83233 83254 83262 83277 83285 83293 83301 83309 83327 83335 83353 83361 83369 83377 83395 83403 83411 83419 83437 83445 83453 83461 83469 83487 83495 83503 83511 83532 83540 83561 83569 83581 83601 83613 83625 83645 83657 83669 83689 83701 83713 83733 83745 83757 83777 83789 83801 83821 83833 83845 83865 83877 83884 83896 83908 83928 83940 83945 83953 83961 83972 83977 83985 83996 84004 84012 84020 84038 84046 84054 84062 84073 84078 84086 84094 84105 84110 84118 84126 84140 84148 84156 84164 84182 84190 84198 84206 84214 84232 84240 84258 84266 84274 84282 84303 84311 84319 84327 84335 84350 84358 84366 84374 84392 84400 84408 84416 84434 84442 84450 84458 84466 84481 84489 84497 84515 84523 84541 84549 84561 84581 84593 84603 84611 84630 84638 84646 84654 84662 84683 84691 84709 84717 84729 84749 84761 84769 84777 84792 84800 84808 84816 84834 84842 84850 84871 84879 84887 84895 84903 84924 84932 84940 84948 84956 84974 84982 84990 84998 85006 85024 85032 85040 85055 85063 85081 85089 85097 85105 85123 85131 85139 85147 85155 85173 85181 85189 85197 85215 85223 85231 85239 85257 85265 85273 85281 85299 85307 85315 85330 85338 85346 85354 85372 85380 85388 85396 85414 85422 85430 85445 85453 85461 85469 85477 85498 85506 85514 85529 85537 85545 85563 85571 85579 85597 85605 85613 85621 85639 85647 85655 85663 85681 85689 85697 85705 85723 85731 85739 85747 85765 85773 85781 85789 85807 85815 85823 85831 85852 85860 85868 85876 85897 85905 85913 85921 85939 85947 85955 85963 85971 85979 85997 86005 86013 86021 86029 86047 86055 86063 86071 86089 86097 86105 86113 86121 86139 86147 86155 86163 86178 86186 86194 86202 86220 86228 86236 86244 86262 86270 86278 86286 86304 86312 86320 86328 86346 86354 86362 86370 86388 86396 86404 86412 86430 86438 86446 86454 86472 86480 86488 86496 86514 86522 86530 86538 86546 86564 86572 86580 86588 86606 86614 86622 86637 86645 86653 86661 86669 86677 86698 86706 86714 86729 86737 86745 86753 86771 86779 86787 86805 86813 86821 86829 86837 86858 86866 86874 86882 86903 86911 86929 86937 86945 86953 86961 86969 86987 86995 87013 87021 87029 87037 87045 87066 87074 87082 87090 87105 87113 87131 87139 87147 87155 87163 87171 87179 87197 87205 87213 87221 87242 87250 87258 87266 87274 87295 87303 87311 87319 87337 87349 87361 87381 87393 87405 87425 87437 87449 87469 87481 87493 87513 87525 87537 87557 87569 87581 87601 87613 87625 87645 87657 87669 87689 87701 87721 87733 87745 87765 87777 87789 87809 87821 87833 87853 87865 87877 87889 87914 87926 87933 87945 87965 87977 87989 88001 88021 88033 88045 88065 88077 88089 88109 88121 88133 88153 88165 88177 88197 88209 88221 88241 88253 88265 88277 88297 88309 88321 88341 88353 88365 88385 88397 88409 88429 88441 88453 88473 88485 88505 88517 88529 88549 88561 88573 88593 88605 88617 88637 88649 88661 88681 88693 88705 88717 88729 88749 88757 88765 88783 88791 88799 88814 88822 88830 88838 88853 88861 88869 88877 88892 88900 88919 88929 88937 88945 88953 88971 88979 88987 88995 89013 89021 89029 89037 89045 89066 89074 89082 89097 89105 89126 89134 89142 89150 89158 89176 89184 89192 89200 89221 89229 89237 89245 89266 89274 89282 89300 89308 89316 89324 89342 89350 89358 89366 89384 89392 89400 89408 89426 89434 89442 89460 89468 89486 89494 89502 89510 89528 89536 89544 89552 89570 89578 89586 89594 89602 89620 89628 89646 89654 89662 89670 89678 89686 89704 89716 89736 89748 89760 89780 89792 89804 89824 89836 89848 89868 89880 89892 89912 89924 89936 89956 89968 89975 89987 89999 90019 90031 90039 90047 90055 90063 90071 90092 90100 90108 90126 90134 90152 90160 90168 90176 90184 90205 90213 90221 90229 90247 90255 90263 90278 90286 90294 90302 90310 90331 90339 90347 90355 90376 90384 90392 90400 90418 90426 90434 90442 90457 90465 90473 90481 90499 90507 90515 90523 90531 90549 90557 90565 90583 90591 90609 90617 90627 90635 90654 90662 90670 90678 90686 90704 90712 90730 90738 90748 90756 90775 90783 90791 90799 90807 90825 90833 90841 90849 90870 90878 90886 90894 90902 90920 90928 90936 90944 90959 90967 90975 90983 91001 91009 91017 91025 91040 91048 91056 91077 91085 91093 91111 91119 91127 91135 91153 91161 91169 91177 91195 91203 91211 91226 91234 91242 91250 91271 91279 91287 91295 91313 91321 91329 91337 91358 91366 91374 91389 91397 91405 91426 91434 91442 91450 91468 91476 91484 91492 91510 91518 91526 91534 91552 91560 91568 91576 91594 91602 91610 91618 91636 91644 91652 91660 91678 91686 91694 91702 91720 91728 91736 91744 91762 91770 91778 91786 91804 91812 91820 91828 91836 91844 91862 91870 91878 91899 91907 91915 91923 91938 91946 91954 91962 91980 91988 91996 92004 92022 92030 92038 92046 92054 92072 92080 92088 92096 92114 92122 92130 92138 92156 92164 92172 92180 92198 92206 92214 92222 92240 92248 92256 92264 92282 92290 92298 92306 92324 92332 92340 92348 92366 92374 92382 92390 92408 92416 92424 92432 92450 92458 92466 92484 92492 92500 92508 92516 92524 92532 92550 92558 92566 92574 92595 92603 92611 92629 92637 92645 92653 92661 92669 92687 92695 92703 92721 92729 92737 92745 92763 92771 92779 92797 92805 92813 92821 92829 92847 92855 92873 92881 92889 92897 92912 92920 92928 92936 92944 92965 92973 92981 92996 93004 93012 93030 93038 93046 93054 93069 93077 93085 93093 93101 93119 93127 93135 93143 93161 93169 93177 93185 93200 93208 93216 93224 93242 93250 93258 93266 93284 93292 93300 93308 93326 93334 93342 93350 93358 93370 93386 93396 93408 93428 93440 93452 93472 93484 93496 93516 93528 93540 93560 93572 93584 93604 93616 93628 93648 93660 93672 93692 93704 93724 93736 93748 93768 93780 93792 93804 93824 93836 93848 93868 93876 93886 93894 93902 93910 93920 93942 93950 93958 93966 93976 93998 94006 94014 94022 94032 94054 94062 94067 94080 94088 94100 94120 94132 94144 94164 94176 94188 94208 94220 94232 94252 94264 94276 94288 94308 94320 94332 94352 94364 94376 94396 94408 94420 94440 94452 94464 94484 94496 94508 94528 94540 94552 94572 94584 94604 94616 94628 94648 94660 94672 94692 94704 94716 94736 94748 94760 94780 94792 94802 94810 94826 94836 94844 94852 94862 94881 94889 94897 94911 94919 94927 94935 94943 94964 94972 94993 95001 95016 95024 95032 95040 95048 95066 95074 95082 95090 95098 95116 95124 95132 95153 95161 95169 95177 95195 95203 95218 95226 95234 95242 95250 95271 95279 95287 95295 95313 95321 95329 95337 95355 95363 95371 95392 95400 95415 95423 95431 95439 95447 95455 95476 95484 95502 95510 95518 95526 95534 95542 95560 95568 95586 95594 95606 95626 95638 95650 95670 95682 95694 95714 95726 95738 95758 95770 95782 95802 95814 95821 95833 95845 95865 95877 95885 95893 95901 95919 95927 95935 95943 95958 95966 95974 95995 96003 96011 96019 96034 96042 96050 96058 96076 96084 96092 96100 96121 96129 96137 96145 96160 96168 96176 96184 96202 96210 96218 96226 96234 96255 96263 96271 96279 96297 96305 96313 96321 96329 96347 96355 96363 96381 96389 96407 96415 96423 96431 96439 96457 96465 96483 96491 96499 96507 96525 96533 96541 96549 96557 96572 96580 96588 96596 96604 96622 96630 96648 96656 96664 96672 96680 96698 96706 96714 96722 96740 96748 96756 96764 96782 96790 96798 96819 96827 96835 96843 96861 96869 96877 96895 96903 96911 96919 96937 96945 96953 96968 96976 96984 96992 97010 97018 97036 97044 97052 97060 97068 97086 97094 97102 97110 97128 97136 97144 97152 97170 97178 97186 97194 97212 97220 97228 97246 97254 97262 97270 97288 97296 97304 97312 97320 97338 97346 97354 97362 97380 97388 97396 97414 97422 97430 97438 97446 97461 97469 97477 97485 97493 97511 97519 97527 97545 97553 97561 97569 97587 97595 97603 97611 97619 97637 97645 97663 97671 97679 97687 97695 97703 97721 97729 97737 97755 97763 97771 97779 97797 97805 97813 97821 97839 97847 97855 97863 97881 97889 97897 97905 97923 97931 97939 97947 97965 97973 97981 97989 98007 98015 98023 98031 98049 98057 98065 98073 98091 98099 98107 98125 98133 98141 98149 98170 98178 98186 98194 98209 98217 98225 98233 98248 98256 98264 98272 98290 98298 98306 98314 98332 98340 98348 98356 98364 98382 98390 98398 98416 98424 98432 98440 98458 98466 98474 98482 98490 98508 98516 98534 98542 98550 98571 98579 98587 98595 98616 98624 98632 98640 98658 98666 98674 98682 98700 98708 98716 98724 98742 98750 98758 98766 98784 98792 98807 98815 98823 98831 98839 98857 98865 98873 98881 98899 98907 98915 98923 98941 98949 98957 98972 98980 98988 98996 99004 99012 99020 99038 99046 99054 99062 99080 99088 99096 99104 99116 99135 99145 99157 99177 99189 99201 99221 99233 99241 99249 99257 99269 99289 99301 99313 99333 99345 99357 99377 99389 99401 99421 99433 99453 99465 99477 99499 99509 99521 99541 99553 99565 99585 99593 99605 99615 99627 99643 99653 99665 99684 99694 99706 99722 99732 99744 99763 99773 99785 99801 99811 99823 99842 99852 99864 99880 99890 99902 99921 99931 99943 99959 99969 99981 100000 100010 100020 100027 100039 100059 100071 100083 100103 100115 100127 100139 100159 100171 100183 100203 100215 100227 100247 100259 100271 100291 100303 100315 100335 100347 100359 100379 100391 100403 100423 100435 100447 100467 100479 100491 100511 100523 100543 100555 100567 100587 100599 100611 100631 100643 100655 100675 100687 100695 100703 100722 100732 100740 100748 100756 100777 100785 100793 100801 100822 100830 100838 100859 100867 100875 100883 100891 100909 100917 100925 100933 100948 100956 100964 100982 100990 100998 101019 101027 101035 101043 101051 101069 101077 101085 101093 101111 101119 101127 101148 101156 101164 101172 101187 101195 101213 101221 101229 101237 101245 101253 101261 101279 101287 101305 101313 101325 101345 101357 101369 101389 101401 101413 101433 101445 101457 101477 101489 101496 101508 101520 101540 101552 101560 101568 101576 101594 101602 101610 101618 101636 101644 101652 101670 101678 101686 101694 101712 101720 101728 101736 101754 101762 101770 101785 101793 101801 101809 101817 101825 101843 101851 101859 101877 101885 101893 101901 101909 101924 101932 101940 101948 101966 101974 101982 102000 102008 102026 102034 102042 102050 102058 102066 102087 102095 102103 102121 102129 102137 102152 102160 102168 102176 102184 102192 102200 102208 102216 102224 102242 102250 102258 102273 102281 102289 102297 102318 102326 102334 102342 102350 102368 102376 102384 102392 102410 102418 102426 102444 102452 102460 102468 102489 102497 102505 102513 102534 102542 102560 102568 102576 102584 102592 102610 102618 102626 102634 102652 102660 102668 102676 102694 102702 102710 102718 102736 102744 102752 102770 102778 102786 102794 102812 102820 102828 102836 102844 102859 102867 102875 102883 102901 102909 102927 102935 102943 102951 102966 102974 102982 102990 103008 103016 103024 103032 103040 103058 103066 103074 103092 103100 103108 103116 103124 103142 103150 103168 103176 103184 103192 103200 103218 103226 103234 103242 103250 103268 103276 103284 103302 103310 103318 103326 103344 103352 103360 103368 103386 103394 103402 103410 103428 103436 103444 103452 103470 103478 103486 103494 103512 103520 103528 103536 103554 103562 103570 103578 103596 103604 103612 103630 103638 103646 103661 103669 103677 103685 103703 103711 103719 103727 103745 103753 103761 103769 103787 103795 103803 103811 103819 103837 103845 103853 103871 103879 103887 103895 103913 103921 103939 103947 103955 103963 103984 103992 104000 104008 104016 104034 104042 104050 104058 104076 104084 104092 104100 104118 104126 104134 104142 104163 104171 104179 104194 104202 104210 104218 104236 104244 104252 104267 104275 104290 104298 104306 104314 104322 104340 104348 104356 104364 104372 104380 104398 104406 104414 104422 104440 104448 104456 104464 104482 104490 104498 104506 104524 104532 104544 104563 104573 104585 104605 104617 104629 104641 104653 104673 104685 104695 104703 104719 104729 104737 104745 104764 104776 104796 104808 104820 104842 104852 104864 104884 104896 104908 104928 104940 104960 104972 104984 105004 105014 105033 105045 105055 105071 105083 105095 105105 105115 105127 105143 105153 105165 105184 105194 105213 105225 105237 105249 105269 105281 105293 105313 105325 105337 105357 105369 105381 105401 105413 105425 105445 105457 105469 105489 105501 105513 105533 105545 105557 105577 105589 105601 105621 105633 105645 105665 105677 105689 105709 105721 105733 105753 105765 105777 105797 105809 105821 105828 105840 105848 105856 105868 105888 105900 105912 105931 105941 105953 105973 105985 105997 106017 106029 106041 106061 106073 106085 106105 106117 106129 106149 106161 106173 106193 106205 106217 106237 106249 106261 106281 106293 106305 106325 106337 106357 106369 106381 106401 106413 106425 106445 106457 106469 106489 106501 106509 106517 106535 106543 106551 106559 106567 106582 106590 106605 106613 106621 106629 106650 106658 106666 106674 106682 106700 106708 106716 106734 106742 106750 106758 106776 106784 106792 106800 106808 106829 106837 106845 106863 106871 106889 106897 106905 106913 106921 106929 106947 106955 106963 106971 106989 106997 107015 107023 107035 107055 107067 107079 107099 107111 107123 107143 107155 107162 107174 107186 107206 107218 107226 107234 107252 107260 107268 107276 107294 107302 107310 107328 107336 107344 107352 107360 107368 107376 107394 107402 107410 107428 107436 107454 107462 107470 107478 107486 107494 107512 107520 107528 107536 107557 107565 107573 107581 107599 107607 107628 107636 107644 107652 107660 107675 107683 107691 107699 107707 107722 107730 107738 107746 107754 107775 107783 107801 107809 107817 107825 107843 107851 107859 107881 107889 107897 107905 107923 107931 107939 107947 107955 107976 107984 107999 108007 108015 108023 108031 108049 108057 108065 108083 108091 108099 108107 108125 108133 108151 108159 108167 108175 108183 108191 108199 108207 108225 108233 108241 108249 108267 108275 108283 108291 108309 108317 108325 108333 108351 108359 108367 108385 108393 108401 108409 108417 108438 108446 108454 108462 108480 108488 108496 108504 108512 108533 108541 108549 108567 108575 108583 108591 108609 108617 108625 108633 108641 108656 108664 108672 108690 108698 108716 108724 108732 108740 108755 108763 108771 108789 108797 108805 108813 108828 108836 108844 108862 108870 108878 108886 108894 108912 108920 108928 108936 108954 108962 108970 108978 108996 109004 109012 109020 109038 109046 109054 109062 109080 109088 109096 109111 109119 109127 109148 109156 109164 109172 109180 109201 109209 109217 109225 109243 109251 109259 109267 109275 109293 109301 109309 109327 109335 109353 109361 109369 109377 109385 109393 109414 109422 109430 109438 109456 109464 109472 109487 109495 109503 109511 109529 109537 109545 109553 109574 109582 109603 109611 109619 109627 109635 109643 109661 109669 109677 109685 109703 109711 109719 109727 109735 109753 109761 109769 109777 109795 109803 109811 109819 109837 109845 109853 109861 109879 109887 109895 109903 109921 109929 109939 109958 109970 109982 109994 110006 110026 110038 110050 110062 110082 110094 110106 110126 110138 110158 110170 110180 110188 110204 110214 110222 110230 110249 110261 110281 110293 110305 110327 110337 110349 110369 110381 110406 110418 110430 110450 110462 110474 110486 110506 110518 110530 110550 110562 110574 110594 110606 110618 110638 110650 110670 110682 110694 110706 110726 110738 110750 110770 110782 110794 110814 110826 110838 110858 110870 110882 110902 110914 110926 110946 110958 110970 110990 111002 111014 111034 111046 111058 111078 111090 111102 111122 111134 111146 111166 111178 111190 111210 111222 111234 111254 111266 111278 111298 111310 111322 111329 111341 111361 111373 111385 111405 111417 111429 111437 111445 111453 111461 111469 111490 111502 111518 111528 111540 111560 111572 111584 111604 111616 111628 111648 111660 111672 111692 111704 111716 111736 111748 111760 111780 111792 111804 111824 111836 111848 111868 111880 111892 111912 111924 111944 111956 111968 111988 112000 112012 112032 112044 112056 112076 112088 112096 112104 112112 112130 112138 112156 112164 112172 112180 112198 112206 112214 112222 112240 112248 112256 112264 112272 112280 112298 112306 112314 112332 112340 112358 112366 112374 112382 112390 112408 112416 112424 112432 112450 112458 112476 112484 112496 112516 112528 112540 112560 112572 112579 112591 112603 112623 112635 112645 112661 112673 112681 112689 112707 112715 112723 112731 112749 112757 112765 112783 112791 112799 112807 112822 112830 112838 112846 112861 112869 112877 112898 112906 112914 112922 112937 112945 112953 112961 112976 112984 112992 113000 113018 113026 113044 113052 113060 113068 113076 113086 113105 113117 113125 113133 113141 113149 113157 113172 113180 113188 113196 113217 113225 113249 113257 113265 113273 113281 113308 113316 113324 113332 113350 113358 113366 113374 113382 113400 113408 113426 113434 113442 113450 113458 113479 113487 113505 113513 113525 113533 113541 113549 113567 113575 113583 113591 113599 113607 113625 113633 113641 113649 113667 113675 113683 113691 113709 113717 113725 113740 113748 113756 113764 113772 113790 113798 113816 113824 113832 113840 113848 113856 113874 113882 113890 113898 113916 113924 113932 113940 113958 113966 113974 113982 114000 114008 114016 114024 114032 114053 114061 114069 114090 114098 114116 114124 114132 114140 114148 114163 114171 114179 114187 114211 114219 114237 114245 114253 114261 114279 114287 114295 114303 114321 114329 114337 114345 114363 114371 114379 114387 114405 114413 114421 114442 114450 114458 114466 114474 114489 114497 114505 114523 114531 114539 114547 114562 114570 114591 114599 114607 114615 114623 114638 114646 114654 114662 114680 114688 114696 114704 114725 114733 114741 114749 114767 114775 114793 114801 114809 114817 114825 114843 114851 114859 114867 114885 114893 114901 114916 114924 114932 114940 114948 114963 114971 114979 114987 115005 115013 115021 115029 115047 115055 115063 115071 115089 115097 115105 115113 115131 115139 115147 115155 115173 115181 115196 115204 115216 115236 115248 115260 115272 115284 115304 115316 115328 115348 115360 115372 115384 115404 115416 115428 115448 115460 115472 115492 115504 115514 115522 115530 115549 115557 115573 115583 115595 115615 115627 115639 115661 115671 115683 115703 115715 115735 115747 115759 115779 115791 115803 115823 115835 115847 115867 115879 115891 115911 115923 115935 115955 115967 115987 115999 116009 116017 116033 116043 116051 116067 116077 116085 116101 116111 116119 116135 116145 116153 116169 116179 116187 116203 116213 116221 116237 116247 116255 116271 116281 116289 116305 116315 116323 116339 116349 116357 116373 116383 116391 116407 116417 116425 116441 116451 116459 116475 116485 116493 116509 116519 116529 116534 116542 116558 116568 116576 116592 116602 116610 116626 116636 116644 116660 116670 116678 116686 116694 116709 116717 116725 116733 116741 116756 116768 116787 116797 116809 116829 116841 116853 116873 116885 116897 116917 116929 116941 116961 116973 116985 117005 117017 117029 117049 117061 117073 117093 117105 117117 117137 117149 117169 117181 117193 117213 117225 117237 117257 117269 117281 117301 117313 117321 117329 117337 117345 117353 117361 117385 117393 117411 117419 117427 117435 117443 117451 117466 117474 117495 117503 117511 117519 117527 117545 117553 117561 117579 117587 117605 117613 117621 117629 117637 117649 117661 117686 117698 117705 117717 117737 117749 117761 117773 117785 117805 117817 117837 117849 117857 117865 117873 117891 117899 117907 117915 117923 117947 117955 117963 117971 117989 117997 118005 118013 118034 118042 118050 118068 118076 118094 118102 118110 118118 118126 118144 118152 118171 118181 118189 118199 118215 118227 118235 118243 118251 118269 118277 118285 118293 118308 118316 118324 118332 118347 118355 118373 118381 118389 118397 118415 118423 118431 118446 118454 118462 118470 118478 118486 118504 118512 118520 118528 118549 118557 118575 118583 118595 118615 118627 118635 118643 118651 118659 118674 118682 118690 118708 118716 118724 118732 118747 118755 118763 118771 118789 118797 118805 118813 118821 118829 118847 118855 118863 118871 118889 118897 118905 118913 118921 118929 118950 118958 118979 118987 118995 119003 119018 119026 119034 119042 119050 119058 119079 119087 119095 119110 119118 119126 119134 119142 119163 119171 119179 119194 119202 119210 119218 119226 119244 119252 119260 119281 119289 119297 119305 119320 119328 119336 119357 119365 119373 119391 119399 119407 119415 119433 119441 119449 119457 119475 119483 119491 119499 119507 119528 119536 119544 119552 119573 119581 119589 119597 119618 119626 119634 119642 119660 119668 119676 119691 119699 119707 119715 119733 119741 119759 119767 119775 119783 119791 119799 119820 119828 119836 119854 119862 119870 119878 119886 119904 119912 119920 119928 119946 119954 119962 119970 119988 119996 120004 120012 120030 120038 120046 120054 120072 120080 120088 120096 120114 120122 120140 120148 120160 120180 120192 120200 120208 120218 120234 120246 120256 120272 120284 120296 120308 120328 120340 120352 120372 120384 120396 120416 120428 120440 120460 120472 120484 120504 120516 120528 120548 120560 120568 120576 120595 120605 120613 120629 120639 120651 120671 120683 120693 120715 120727 120739 120759 120771 120783 120803 120815 120835 120847 120859 120879 120891 120903 120923 120935 120955 120967 120975 120983 120991 120999 121007 121015 121023 121031 121039 121044 121142 121150 121158 121166 121174 121198 121210 121229 121239 121251 121271 121283 121295 121315 121327 121339 121359 121371 121383 121403 121415 121427 121447 121459 121471 121491 121503 121515 121535 121547 121567 121579 121591 121611 121623 121635 121647 121667 121679 121691 121711 121719 121727 121735 121753 121761 121769 121777 121785 121803 121811 121819 121834 121842 121850 121858 121876 121884 121892 121900 121912 121920 121928 121946 121954 121962 121980 121988 122006 122014 122022 122030 122038 122059 122067 122075 122083 122101 122109 122117 122127 122135 122143 122151 122161 122183 122191 122199 122207 122217 122239 122247 122255 122263 122273 122295 122303 122308 122321 122329 122341 122353 122373 122385 122405 122417 122425 122433 122441 122449 122470 122478 122486 122494 122509 122517 122525 122533 122551 122559 122567 122575 122593 122601 122609 122630 122638 122646 122654 122675 122683 122693 122712 122724 122736 122756 122768 122776 122784 122799 122807 122815 122823 122831 122849 122857 122865 122886 122894 122912 122920 122928 122936 122944 122959 122967 122975 122983 123001 123009 123027 123035 123047 123067 123079 123087 123095 123103 123118 123126 123134 123142 123163 123171 123189 123197 123205 123213 123221 123239 123247 123255 123263 123281 123289 123297 123305 123313 123321 123339 123347 123355 123373 123381 123389 123397 123405 123420 123428 123436 123444 123465 123473 123481 123496 123504 123519 123527 123535 123543 123551 123569 123577 123585 123593 123608 123616 123624 123642 123650 123658 123666 123681 123689 123697 123715 123723 123731 123739 123747 123765 123773 123781 123799 123807 123815 123823 123844 123852 123860 123878 123886 123894 123909 123917 123925 123933 123941 123959 123967 123975 123983 124001 124009 124017 124025 124033 124051 124059 124067 124075 124093 124101 124109 124127 124135 124156 124164 124172 124180 124188 124196 124204 124222 124230 124238 124256 124264 124272 124280 124288 124306 124314 124332 124340 124348 124356 124364 124382 124390 124398 124406 124414 124432 124440 124448 124456 124474 124482 124490 124498 124516 124524 124542 124550 124562 124582 124594 124606 124616 124632 124644 124654 124670 124682 124694 124714 124726 124738 124758 124770 124782 124802 124814 124826 124846 124858 124870 124890 124902 124914 124934 124946 124958 124978 124990 124998 125006 125025 125035 125043 125059 125069 125081 125101 125113 125123 125145 125157 125169 125189 125201 125213 125233 125245 125265 125277 125297 125309 125319 125335 125347 125357 125373 125385 125395 125411 125423 125433 125449 125461 125471 125487 125499 125509 125525 125537 125547 125563 125575 125585 125601 125613 125620 125630 125638 125646 125661 125669 125681 125700 125710 125722 125742 125754 125766 125786 125798 125806 125814 125822 125834 125854 125866 125878 125898 125910 125922 125942 125954 125966 125986 125998 126018 126030 126042 126064 126074 126086 126106 126118 126130 126150 126158 126166 126181 126189 126197 126205 126213 126221 126229 126250 126258 126266 126284 126292 126300 126308 126341 126349 126357 126365 126380 126388 126396 126404 126412 126430 126438 126446 126454 126472 126480 126488 126503 126515 126525 126537 126553 126563 126575 126594 126604 126616 126632 126642 126654 126673 126683 126695 126711 126721 126733 126752 126762 126774 126790 126800 126812 126831 126841 126853 126869 126879 126891 126910 126920 126930 126937 126949 126961 126981 126993 127013 127025 127033 127041 127049 127064 127072 127080 127088 127096 127117 127125 127133 127141 127159 127167 127175 127183 127201 127209 127217 127225 127246 127258 127270 127282 127302 127310 127318 127326 127344 127352 127364 127374 127393 127405 127425 127433 127441 127449 127467 127475 127496 127504 127512 127520 127528 127546 127554 127572 127580 127592 127612 127624 127632 127640 127648 127666 127674 127692 127700 127708 127716 127724 127742 127750 127758 127766 127784 127792 127800 127808 127826 127834 127842 127850 127858 127866 127884 127892 127900 127908 127929 127937 127945 127953 127968 127976 127984 127992 128010 128018 128026 128047 128055 128063 128071 128089 128097 128105 128113 128134 128142 128150 128158 128179 128187 128195 128203 128218 128226 128234 128252 128260 128275 128283 128291 128299 128307 128328 128336 128344 128359 128367 128385 128393 128401 128409 128424 128432 128440 128448 128456 128474 128482 128490 128511 128519 128527 128535 128543 128551 128569 128577 128585 128593 128611 128619 128627 128645 128653 128661 128669 128677 128695 128703 128721 128729 128737 128745 128753 128771 128779 128787 128795 128803 128821 128829 128837 128845 128863 128871 128879 128887 128905 128913 128931 128939 128951 128971 128983 128995 129007 129027 129039 129051 129071 129083 129095 129115 129127 129139 129159 129171 129183 129203 129215 129227 129247 129259 129271 129291 129303 129315 129335 129347 129355 129363 129382 129392 129400 129416 129426 129438 129458 129470 129480 129502 129514 129526 129546 129558 129583 129595 129607 129627 129639 129651 129671 129683 129695 129715 129727 129739 129759 129771 129783 129803 129815 129827 129847 129859 129871 129891 129903 129910 129922 129934 129953 129963 129975 129995 130007 130019 130031 130043 130063 130075 130085 130093 130109 130119 130127 130135 130154 130166 130186 130198 130210 130232 130242 130254 130274 130286 130298 130318 130330 130350 130362 130374 130394 130404 130414 130433 130445 130457 130476 130486 130496 130512 130524 130536 130555 130565 130577 130599 130609 130621 130637 130647 130659 130678 130688 130700 130719 130729 130748 130760 130772 130784 130804 130816 130828 130848 130860 130872 130892 130904 130916 130936 130948 130960 130980 130992 131004 131024 131036 131048 131068 131080 131092 131112 131124 131136 131156 131168 131180 131200 131212 131224 131244 131256 131268 131288 131300 131312 131332 131344 131356 131363 131375 131387 131399 131419 131431 131451 131463 131473 131492 131504 131514 131530 131542 131552 131571 131583 131591 131599 131607 131625 131633 131641 131649 131657 131678 131686 131694 131709 131721 131733 131753 131765 131777 131797 131809 131821 131833 131853 131863 131871 131887 131897 131905 131913 131921 131939 131947 131966 131976 131984 131992 132000 132008 132029 132037 132055 132067 132087 132099 132107 132115 132136 132144 132154 132173 132185 132193 132203 132222 132234 132242 132250 132258 132266 132287 132295 132310 132318 132326 132334 132342 132357 132365 132373 132381 132399 132407 132415 132423 132441 132449 132457 132465 132473 132494 132502 132510 132528 132536 132544 132552 132570 132578 132586 132594 132612 132620 132628 132636 132654 132662 132683 132691 132699 132707 132715 132739 132747 132755 132763 132781 132789 132797 132805 132823 132831 132839 132847 132855 132873 132881 132889 132897 132905 132920 132928 132936 132944 132962 132970 132991 132999 133007 133015 133023 133031 133049 133057 133075 133083 133091 133099 133107 133125 133133 133141 133149 133164 133172 133180 133198 133206 133214 133222 133230 133248 133256 133274 133282 133294 133314 133326 133338 133350 133370 133382 133394 133414 133426 133438 133458 133470 133482 133502 133514 133526 133546 133558 133570 133590 133602 133614 133634 133646 133654 133662 133681 133691 133699 133715 133725 133737 133757 133769 133779 133801 133813 133825 133845 133857 133877 133889 133901 133921 133933 133945 133965 133977 133989 134009 134021 134033 134053 134065 134077 134097 134109 134121 134141 134153 134160 134172 134184 134196 134216 134228 134240 134252 134264 134284 134296 134308 134320 134340 134352 134364 134384 134396 134416 134428 134438 134446 134462 134472 134480 134488 134507 134519 134539 134551 134563 134585 134595 134607 134627 134639 134664 134676 134688 134708 134720 134732 134752 134764 134776 134796 134808 134820 134840 134852 134864 134884 134896 134908 134928 134940 134952 134972 134984 135004 135016 135028 135040 135060 135072 135084 135104 135116 135128 135148 135160 135172 135192 135204 135216 135236 135248 135260 135280 135292 135304 135324 135336 135348 135368 135380 135392 135412 135424 135436 135456 135468 135480 135500 135512 135524 135544 135556 135568 135588 135600 135612 135632 135644 135656 135663 135675 135695 135707 135719 135739 135751 135763 135775 135787 135807 135819 135839 135851 135863 135883 135895 135907 135927 135939 135951 135971 135983 135991 135999 136007 136025 136033 136041 136049 136064 136072 136080 136088 136109 136119 136127 136143 136153 136161 136169 136188 136198 136206 136225 136233 136241 136249 136257 136265 136282 136290 136308 136316 136324 136332 136350 136358 136366 136384 136392 136400 136419 136429 136437 136445 136463 136471 136483 136503 136515 136525 136533 136549 136559 136567 136584 136592 136600 136608 136616 136631 136639 136657 136665 136673 136681 136689 136707 136715 136723 136731 136749 136757 136765 136773 136791 136799 136807 136815 136823 136841 136849 136857 136875 136883 136891 136899 136917 136925 136933 136941 136959 136967 136985 136993 137001 137009 137017 137035 137043 137051 137059 137067 137082 137090 137111 137119 137127 137135 137143 137151 137169 137177 137195 137203 137211 137219 137227 137235 137250 137258 137266 137274 137295 137303 137321 137329 137337 137345 137353 137361 137379 137387 137405 137413 137421 137429 137437 137455 137463 137471 137479 137494 137502 137510 137528 137536 137544 137565 137573 137585 137605 137617 137629 137641 137661 137673 137685 137705 137717 137729 137749 137761 137773 137793 137805 137817 137837 137849 137861 137881 137893 137901 137909 137928 137938 137946 137962 137972 137984 138004 138016 138026 138048 138060 138072 138092 138104 138124 138136 138144 138152 138171 138181 138189 138205 138215 138220 138230 138240 138248 138256 138275 138285 138293 138309 138319 138327 138335 138354 138366 138378 138398 138410 138422 138434 138446 138466 138478 138490 138510 138522 138534 138554 138566 138578 138598 138610 138622 138642 138654 138666 138686 138698 138710 138730 138742 138752 138760 138768 138787 138795 138811 138821 138833 138853 138865 138877 138899 138909 138921 138941 138953 138973 138985 138997 139017 139029 139041 139061 139073 139085 139105 139117 139129 139149 139161 139173 139193 139205 139225 139237 139247 139255 139271 139281 139289 139305 139315 139323 139339 139349 139357 139373 139383 139391 139407 139417 139425 139441 139451 139459 139475 139485 139493 139509 139519 139527 139543 139553 139561 139577 139587 139595 139611 139621 139629 139645 139655 139663 139679 139689 139697 139713 139723 139731 139747 139757 139767 139772 139780 139796 139806 139814 139830 139840 139848 139864 139874 139882 139898 139908 139916 139924 139932 139942 139961 139973 139993 140005 140017 140037 140049 140061 140081 140093 140105 140125 140137 140145 140153 140171 140179 140187 140195 140213 140221 140229 140237 140255 140263 140271 140279 140287 140305 140313 140321 140339 140347 140355 140367 140375 140383 140407 140415 140423 140441 140449 140457 140465 140483 140491 140501 140509 140528 140536 140544 140552 140560 140581 140589 140607 140615 140623 140631 140639 140657 140665 140673 140681 140699 140707 140715 140723 140741 140749 140757 140765 140780 140788 140796 140814 140822 140830 140838 140856 140864 140882 140890 140898 140906 140914 140932 140940 140948 140956 140964 140982 140990 141008 141016 141024 141032 141040 141048 141056 141074 141082 141100 141108 141116 141124 141132 141140 141158 141166 141174 141182 141200 141208 141226 141234 141242 141250 141258 141273 141281 141299 141307 141315 141323 141331 141339 141347 141365 141373 141381 141402 141410 141428 141436 141448 141468 141480 141492 141504 141524 141536 141548 141568 141580 141592 141612 141624 141636 141656 141668 141680 141700 141712 141724 141744 141756 141768 141788 141800 141812 141832 141844 141854 141876 141888 141900 141920 141932 141952 141964 141974 141996 142008 142015 142028 142038 142060 142072 142084 142096 142116 142128 142136 142144 142156 142176 142188 142198 142214 142226 142236 142252 142264 142276 142296 142308 142320 142340 142352 142364 142384 142396 142408 142428 142440 142452 142472 142484 142496 142516 142528 142540 142560 142572 142580 142588 142607 142617 142625 142641 142651 142663 142683 142695 142705 142727 142739 142751 142771 142783 142795 142815 142827 142847 142859 142871 142891 142903 142915 142935 142947 142967 142979 142987 142995 143003 143011 143019 143027 143035 143043 143051 143056 143154 143162 143170 143178 143186 143204 143212 143231 143241 143253 143273 143285 143297 143317 143329 143339 143347 143366 143374 143382 143390 143398 143419 143427 143435 143443 143461 143469 143477 143485 143493 143511 143519 143527 143551 143559 143574 143582 143590 143598 143616 143624 143632 143640 143648 143666 143674 143692 143700 143708 143716 143724 143742 143750 143758 143766 143784 143792 143800 143808 143826 143834 143842 143850 143871 143879 143897 143905 143913 143921 143929 143947 143955 143963 143971 143979 143997 144005 144013 144034 144042 144050 144058 144066 144081 144089 144097 144105 144123 144131 144149 144157 144165 144173 144181 144196 144204 144212 144220 144238 144246 144264 144272 144280 144288 144296 144304 144319 144327 144335 144343 144351 144375 144383 144391 144399 144414 144422 144430 144451 144459 144467 144486 144496 144504 144514 144530 144542 144554 144574 144586 144598 144618 144630 144642 144662 144674 144686 144706 144718 144730 144750 144762 144774 144794 144806 144818 144838 144850 144862 144882 144894 144906 144926 144938 144950 144975 144987 144994 145006 145026 145038 145050 145062 145074 145094 145106 145118 145138 145150 145162 145182 145194 145204 145220 145232 145242 145258 145270 145282 145302 145314 145326 145346 145358 145370 145390 145402 145414 145434 145446 145458 145478 145490 145502 145522 145534 145546 145566 145578 145586 145594 145613 145623 145631 145647 145657 145669 145689 145701 145711 145733 145745 145757 145777 145789 145801 145821 145833 145853 145865 145885 145897 145907 145923 145935 145945 145961 145973 145983 145999 146011 146021 146037 146049 146059 146075 146087 146097 146113 146125 146135 146151 146163 146173 146189 146201 146208 146218 146226 146234 146242 146250 146268 146276 146294 146302 146314 146334 146346 146354 146364 146372 146391 146399 146414 146422 146430 146438 146453 146461 146469 146477 146495 146503 146511 146519 146537 146545 146553 146574 146582 146590 146598 146616 146624 146632 146640 146661 146669 146677 146685 146693 146711 146719 146727 146735 146753 146761 146769 146777 146795 146803 146821 146829 146837 146845 146853 146871 146879 146887 146895 146903 146921 146929 146944 146952 146960 146968 146986 146994 147002 147010 147018 147036 147044 147052 147076 147084 147092 147100 147108 147126 147134 147152 147160 147168 147176 147184 147192 147200 147215 147223 147231 147239 147257 147265 147273 147281 147299 147307 147315 147323 147341 147349 147357 147375 147383 147391 147399 147417 147425 147435 147454 147466 147478 147498 147510 147522 147542 147554 147566 147586 147598 147610 147630 147642 147654 147674 147686 147698 147718 147730 147742 147762 147774 147786 147806 147818 147830 147850 147862 147874 147894 147906 147913 147925 147945 147957 147969 147981 147993 148013 148025 148037 148057 148069 148081 148101 148113 148125 148145 148157 148169 148189 148201 148213 148233 148245 148257 148277 148289 148301 148321 148333 148345 148365 148377 148389 148409 148421 148433 148453 148465 148473 148481 148500 148510 148518 148534 148544 148556 148576 148588 148598 148620 148632 148644 148664 148676 148701 148713 148725 148745 148757 148769 148789 148801 148813 148833 148845 148857 148877 148889 148901 148921 148933 148945 148965 148977 148989 149009 149021 149028 149040 149048 149056 149064 149079 149087 149095 149103 149124 149132 149142 149150 149169 149177 149195 149203 149211 149219 149237 149245 149253 149261 149269 149287 149295 149313 149321 149329 149337 149355 149363 149371 149379 149397 149405 149413 149421 149429 149447 149455 149463 149471 149489 149497 149515 149523 149531 149539 149547 149565 149573 149581 149589 149607 149615 149633 149641 149649 149657 149675 149683 149691 149699 149707 149725 149733 149741 149749 149757 149775 149783 149801 149809 149817 149832 149840 149848 149856 149864 149872 149890 149898 149906 149914 149932 149940 149948 149956 149974 149982 149990 149998 150016 150024 150032 150050 150058 150066 150074 150092 150100 150110 150129 150141 150153 150173 150185 150197 150217 150229 150241 150261 150273 150285 150305 150317 150329 150349 150361 150373 150393 150405 150417 150437 150449 150461 150481 150493 150505 150525 150537 150549 150569 150581 150588 150600 150620 150632 150644 150652 150662 150678 150690 150702 150722 150734 150746 150766 150778 150790 150810 150822 150834 150854 150866 150878 150898 150910 150922 150942 150954 150966 150986 150998 151010 151030 151042 151054 151074 151086 151094 151102 151121 151131 151139 151155 151165 151177 151197 151209 151219 151241 151253 151265 151285 151297 151317 151329 151341 151361 151373 151385 151405 151417 151429 151449 151461 151473 151493 151505 151517 151537 151549 151561 151581 151593 151600 151612 151620 151628 151636 151644 151665 151673 151681 151696 151704 151712 151733 151741 151749 151757 151765 151783 151791 151809 151817 151825 151833 151851 151859 151867 151875 151893 151901 151909 151917 151925 151943 151951 151969 151977 151985 151993 152001 152019 152027 152035 152043 152064 152072 152087 152095 152103 152111 152119 152137 152145 152153 152161 152176 152184 152192 152200 152224 152232 152240 152248 152263 152271 152279 152287 152305 152313 152321 152329 152347 152355 152363 152371 152389 152397 152405 152423 152431 152439 152447 152465 152473 152483 152502 152514 152526 152546 152558 152570 152590 152602 152614 152634 152646 152658 152678 152690 152702 152722 152734 152746 152766 152778 152790 152810 152822 152834 152854 152866 152878 152898 152910 152922 152942 152954 152961 152973 152993 153005 153017 153025 153035 153054 153066 153078 153098 153110 153122 153142 153154 153166 153186 153198 153210 153230 153242 153254 153274 153286 153298 153318 153330 153342 153362 153374 153382 153390 153409 153419 153427 153443 153453 153465 153485 153497 153507 153529 153541 153553 153573 153585 153605 153617 153625 153633 153652 153662 153670 153686 153696 153701 153711 153721 153729 153737 153756 153766 153774 153790 153800 153808 153816 153835 153843 153851 153859 153867 153885 153893 153901 153919 153927 153935 153953 153961 153969 153977 153985 154006 154014 154022 154040 154048 154056 154064 154082 154090 154098 154106 154114 154135 154143 154151 154159 154177 154185 154193 154201 154222 154230 154238 154246 154254 154272 154280 154288 154296 154317 154325 154333 154341 154349 154367 154375 154383 154391 154409 154417 154425 154433 154451 154459 154467 154475 154493 154501 154509 154530 154538 154546 154554 154572 154580 154590 154609 154621 154633 154653 154665 154677 154697 154709 154721 154741 154753 154765 154785 154797 154809 154829 154841 154853 154873 154885 154897 154917 154929 154941 154961 154973 154985 155005 155017 155029 155049 155061 155068 155080 155100 155112 155124 155132 155142 155161 155173 155185 155205 155217 155229 155249 155261 155273 155293 155305 155317 155337 155349 155361 155381 155393 155405 155425 155437 155449 155469 155481 155493 155513 155525 155535 155557 155569 155581 155601 155613 155633 155645 155655 155677 155689 155696 155709 155719 155741 155753 155761 155769 155777 155792 155800 155808 155826 155834 155842 155860 155868 155876 155884 155892 155910 155918 155926 155934 155952 155960 155975 155983 155991 155999 156007 156025 156033 156041 156049 156057 156075 156083 156091 156099 156120 156128 156136 156144 156159 156167 156175 156183 156191 156212 156220 156228 156236 156254 156262 156270 156278 156293 156301 156309 156317 156335 156343 156351 156359 156367 156388 156396 156404 156412 156430 156438 156446 156464 156472 156480 156488 156496 156517 156527 156543 156555 156567 156587 156599 156611 156631 156643 156655 156675 156687 156699 156719 156731 156743 156763 156775 156787 156807 156819 156831 156851 156863 156875 156895 156907 156919 156939 156951 156963 156983 156995 157002 157014 157034 157046 157058 157066 157076 157095 157107 157119 157139 157151 157163 157183 157195 157207 157227 157239 157251 157271 157283 157295 157315 157327 157339 157359 157371 157383 157403 157415 157427 157447 157459 157471 157491 157503 157515 157540 157552 157559 157571 157591 157603 157615 157623 157631 157639 157660 157668 157676 157694 157702 157710 157718 157726 157744 157752 157760 157768 157789 157797 157805 157813 157831 157839 157847 157855 157870 157878 157886 157894 157912 157920 157928 157936 157954 157962 157970 157978 157986 157994 158015 158023 158031 158039 158057 158065 158073 158081 158099 158107 158115 158123 158141 158149 158157 158165 158183 158191 158199 158207 158225 158233 158241 158249 158264 158272 158280 158288 158296 158317 158325 158333 158351 158359 158367 158375 158390 158400 158419 158431 158443 158463 158475 158487 158507 158519 158531 158551 158563 158575 158595 158607 158619 158639 158651 158663 158683 158695 158707 158727 158739 158751 158771 158783 158795 158815 158827 158839 158859 158871 158878 158890 158910 158922 158934 158942 158952 158971 158983 158995 159015 159027 159039 159059 159071 159083 159103 159115 159127 159147 159159 159171 159191 159203 159215 159235 159247 159259 159279 159291 159303 159323 159335 159347 159367 159379 159391 159411 159423 159430 159442 159462 159474 159486 159494 159502 159510 159528 159536 159544 159552 159570 159578 159586 159594 159612 159620 159628 159636 159654 159662 159670 159678 159686 159704 159712 159720 159728 159749 159757 159765 159773 159791 159799 159807 159815 159833 159841 159849 159857 159865 159880 159888 159896 159904 159922 159930 159938 159946 159964 159972 159980 159988 160006 160014 160022 160030 160038 160056 160064 160072 160080 160101 160109 160117 160125 160143 160151 160159 160167 160185 160193 160201 160209 160217 160235 160243 160251 160259 160274 160282 160290 160311 160321 160340 160352 160364 160384 160396 160408 160428 160440 160452 160472 160484 160496 160516 160528 160540 160560 160572 160584 160604 160616 160628 160648 160660 160672 160692 160704 160716 160736 160748 160760 160780 160792 160799 160811 160831 160843 160855 160865 160881 160893 160905 160925 160937 160949 160969 160981 160993 161013 161025 161037 161057 161069 161081 161101 161113 161125 161145 161157 161169 161189 161201 161213 161233 161245 161257 161277 161289 161301 161321 161333 161340 161352 161372 161384 161396 161406 161425 161437 161447 161466 161478 161488 161507 161519 161529 161548 161560 161570 161586 161598 161608 161627 161639 161649 161668 161680 161690 161709 161721 161731 161750 161762 161772 161788 161800 161810 161829 161841 161851 161870 161882 161892 161911 161923 161933 161952 161964 161974 161990 162002 162012 162031 162043 162055 162074 162084 162094 162113 162125 162137 162156 162166 162176 162192 162204 162216 162235 162245 162264 162276 162288 162308 162320 162332 162352 162364 162376 162396 162408 162420 162440 162452 162464 162484 162496 162508 162528 162540 162552 162572 162584 162596 162616 162628 162640 162660 162672 162684 162704 162716 162723 162735 162755 162767 162779 162791 162811 162823 162835 162855 162867 162879 162899 162911 162923 162943 162955 162967 162987 162999 163011 163031 163043 163055 163075 163087 163099 163119 163131 163143 163163 163175 163187 163207 163219 163226 163238 163258 163270 163282 163294 163314 163326 163338 163358 163370 163382 163402 163414 163426 163446 163458 163470 163490 163502 163514 163534 163546 163558 163578 163590 163602 163622 163634 163646 163666 163678 163690 163710 163722 163734 163754 163766 163778 163798 163810 163822 163842 163854 163866 163886 163898 163910 163930 163942 163954 163974 163986 163998 164018 164030 164042 164062 164074 164086 164106 164118 164138 164150 164162 164182 164194 164206 164226 164238 164250 164270 164282 164294 164314 164326 164338 164358 164370 164382 164402 164414 164426 164446 164458 164470 164490 164502 164514 164534 164546 164553 164565 164585 164597 164609 164621 164641 164653 164665 164685 164697 164709 164729 164741 164753 164773 164785 164797 164817 164829 164841 164861 164873 164885 164905 164917 164929 164949 164961 164973 164993 165005 165012 165024 165044 165056 165068 165080 165100 165112 165124 165144 165156 165168 165188 165200 165212 165232 165244 165256 165276 165288 165300 165320 165332 165344 165364 165376 165388 165408 165420 165432 165452 165464 165476 165496 165508 165520 165540 165552 165564 165584 165596 165608 165628 165640 165652 165672 165684 165696 165716 165728 165740 165760 165772 165784 165804 165816 165836 165848 165860 165880 165892 165904 165924 165936 165948 165968 165980 165992 166012 166024 166036 166056 166068 166080 166100 166112 166124 166144 166156 166168 166188 166200 166207 166219 166239 166251 166263 166275 166295 166307 166319 166339 166351 166363 166383 166395 166407 166427 166439 166451 166471 166483 166495 166515 166527 166539 166559 166571 166583 166603 166615 166622 166634 166654 166666 166678 166690 166710 166722 166734 166754 166766 166778 166798 166810 166822 166842 166854 166866 166886 166898 166910 166930 166942 166954 166974 166986 166998 167018 167030 167042 167062 167074 167086 167106 167118 167130 167150 167162 167174 167194 167206 167218 167238 167250 167262 167282 167294 167306 167326 167338 167358 167370 167382 167402 167414 167426 167446 167458 167470 167490 167502 167514 167534 167546 167558 167578 167590 167602 167622 167634 167646 167666 167678 167685 167697 167717 167729 167741 167753 167773 167785 167797 167817 167829 167841 167861 167873 167885 167905 167917 167929 167949 167961 167973 167993 168005 168017 168037 168049 168056 168068 168088 168100 168112 168124 168144 168156 168168 168188 168200 168212 168232 168244 168256 168276 168288 168300 168320 168332 168344 168364 168376 168388 168408 168420 168432 168452 168464 168476 168496 168508 168520 168540 168552 168564 168584 168596 168608 168628 168640 168652 168672 168684 168704 168716 168728 168748 168760 168772 168792 168804 168816 168836 168848 168860 168880 168892 168904 168924 168936 168948 168968 168980 168987 168999 169019 169031 169043 169055 169075 169087 169099 169119 169131 169143 169163 169175 169187 169207 169219 169231 169251 169263 169275 169295 169307 169314 169326 169346 169358 169370 169382 169402 169414 169426 169446 169458 169470 169490 169502 169514 169534 169546 169558 169578 169590 169602 169622 169634 169646 169666 169678 169690 169710 169722 169734 169754 169766 169778 169798 169810 169822 169842 169854 169874 169886 169898 169918 169930 169942 169962 169974 169986 170006 170018 170030 170050 170062 170074 170094 170106 170113 170125 170145 170157 170169 170181 170201 170213 170225 170245 170257 170269 170289 170301 170313 170333 170345 170357 170377 170389 170396 170408 170428 170440 170452 170464 170484 170496 170508 170528 170540 170552 170572 170584 170596 170616 170628 170640 170660 170672 170684 170704 170716 170728 170748 170760 170772 170792 170804 170816 170836 170848 170868 170880 170892 170912 170924 170936 170956 170968 170980 171000 171012 171024 171044 171056 171063 171075 171095 171107 171119 171131 171151 171163 171175 171195 171207 171219 171239 171251 171263 171283 171295 171302 171314 171334 171346 171358 171370 171390 171402 171414 171434 171446 171458 171478 171490 171502 171522 171534 171546 171566 171578 171590 171610 171622 171634 171654 171666 171686 171698 171710 171730 171742 171754 171774 171786 171798 171818 171830 171837 171849 171869 171881 171893 171905 171925 171937 171949 171969 171981 171993 172013 172025 172032 172044 172064 172076 172088 172100 172120 172132 172144 172164 172176 172188 172208 172220 172232 172252 172264 172276 172296 172308 172328 172340 172352 172372 172384 172396 172416 172428 172435 172447 172459 172479 172491 172503 172523 172535 172547 172567 172579 172586 172598 172618 172630 172642 172654 172674 172686 172698 172718 172730 172742 172762 172774 172794 172806 172818 172838 172850 172857 172869 172881 172901 172913 172925 172945 172957 172964 172976 172996 173008 173020 173032 173052 173064 173084 173096 173103 173115 173127 173147 173167 173179 173191 173203 2 3 5 6 12 13 19 23 1 3 6 16 19 23 24 31 1 2 4 6 19 21 23 41 3 6 7 21 23 40 41 45 1 6 7 8 12 13 19 45 1 2 3 4 5 7 8 12 13 19 21 23 40 41 45 4 5 6 8 13 40 41 45 5 6 7 9 13 44 45 49 8 10 13 44 45 48 49 53 9 11 13 48 49 52 53 56 10 12 13 14 19 52 53 56 1 5 6 11 13 14 19 56 1 5 6 7 8 9 10 11 12 14 19 44 45 48 49 52 53 56 11 12 13 15 17 19 56 59 14 17 19 56 59 2 18 19 20 23 24 31 65 14 15 18 19 56 58 59 65 16 17 19 20 31 58 59 65 1 2 3 5 6 11 12 13 14 15 16 17 18 20 23 24 31 56 58 59 65 16 18 19 31 32 61 65 71 3 4 6 22 23 26 41 89 21 23 24 26 28 31 41 89 1 2 3 4 6 16 19 21 22 24 26 28 31 41 89 2 16 19 22 23 28 31 89 26 27 37 38 41 87 89 96 21 22 23 25 41 87 89 96 25 34 37 38 41 93 94 96 22 23 24 29 31 89 90 100 28 30 31 89 90 100 101 104 29 31 32 69 71 100 101 104 2 16 18 19 20 22 23 24 28 29 30 32 61 65 69 71 89 90 100 101 104 20 30 31 61 65 69 71 104 34 35 38 86 93 108 109 113 27 33 35 38 93 94 96 113 33 34 36 38 93 112 113 117 35 37 38 39 41 112 113 117 25 27 36 38 39 41 96 117 25 27 33 34 35 36 37 39 41 93 94 96 112 113 117 36 37 38 40 41 42 45 117 4 6 7 39 41 42 45 117 3 4 6 7 21 22 23 25 26 27 36 37 38 39 40 42 45 87 89 96 117 39 40 41 43 45 116 117 122 42 44 45 46 49 116 117 122 8 9 13 43 45 46 49 122 4 5 6 7 8 9 13 39 40 41 42 43 44 46 49 116 117 122 43 44 45 47 49 121 122 128 46 48 49 50 53 121 122 128 9 10 13 47 49 50 53 128 8 9 10 13 43 44 45 46 47 48 50 53 121 122 128 47 48 49 51 53 123 125 128 50 53 54 57 123 125 128 132 10 11 13 53 54 55 56 132 9 10 11 13 47 48 49 50 51 52 54 55 56 57 123 125 128 132 51 52 53 55 56 57 125 132 52 53 54 56 132 10 11 12 13 14 15 17 19 52 53 54 55 59 132 51 53 54 124 125 130 132 135 17 18 19 59 60 63 65 144 14 15 17 18 19 56 58 60 63 65 144 58 59 63 65 144 20 31 32 62 64 65 71 148 61 64 65 66 71 72 75 148 58 59 60 64 65 143 144 148 61 62 63 65 71 143 144 148 16 17 18 19 20 31 32 58 59 60 61 62 63 64 71 143 144 148 62 67 71 72 75 147 148 157 66 68 75 76 80 147 148 157 67 75 76 80 81 151 154 157 30 31 32 70 71 104 105 168 69 71 72 73 75 104 105 168 20 30 31 32 61 62 64 65 66 69 70 72 73 75 104 105 148 168 62 66 70 71 73 75 148 168 70 71 72 74 75 168 169 172 73 75 76 77 80 168 169 172 62 66 67 68 70 71 72 73 74 76 77 80 147 148 157 168 169 172 67 68 74 75 77 80 157 172 74 75 76 78 80 172 173 176 77 79 80 172 173 176 177 179 78 80 81 82 154 176 177 179 67 68 74 75 76 77 78 79 81 82 151 154 157 172 173 176 177 179 68 79 80 82 151 154 157 179 79 80 81 149 154 162 164 179 84 106 109 138 142 184 185 189 83 85 106 109 142 189 190 193 84 86 91 93 109 189 190 193 33 85 91 93 108 109 113 193 25 26 41 88 89 96 97 197 87 89 90 96 97 98 100 197 21 22 23 24 25 26 28 29 31 41 87 88 90 96 97 98 100 197 28 29 31 88 89 98 100 197 85 86 92 93 109 193 194 200 91 93 94 95 96 193 194 200 27 33 34 35 38 85 86 91 92 94 95 96 108 109 113 193 194 200 27 34 38 92 93 95 96 200 92 93 94 96 97 195 197 200 25 26 27 34 37 38 41 87 88 89 92 93 94 95 97 195 197 200 87 88 89 95 96 195 197 200 88 89 90 99 100 197 198 204 98 100 101 102 104 197 198 204 28 29 30 31 88 89 90 98 99 101 102 104 197 198 204 29 30 31 99 100 102 104 204 99 100 101 103 104 204 205 207 102 104 105 166 168 204 205 207 29 30 31 32 69 70 71 99 100 101 102 103 105 166 168 204 205 207 69 70 71 103 104 166 168 207 83 84 107 109 141 142 189 253 106 108 109 110 113 141 142 253 33 86 93 107 109 110 113 253 33 83 84 85 86 91 93 106 107 108 110 113 141 142 189 190 193 253 107 108 109 111 113 252 253 257 110 112 113 114 117 252 253 257 35 36 38 111 113 114 117 257 33 34 35 36 38 86 93 107 108 109 110 111 112 114 117 252 253 257 111 112 113 115 117 256 257 260 114 116 117 118 122 256 257 260 42 43 45 115 117 118 122 260 35 36 37 38 39 40 41 42 43 45 111 112 113 114 115 116 118 122 256 257 260 115 116 117 119 122 259 260 265 118 120 122 259 260 264 265 269 119 121 122 128 129 264 265 269 46 47 49 120 122 128 129 269 42 43 44 45 46 47 49 115 116 117 118 119 120 121 128 129 259 260 264 265 269 50 51 53 125 126 127 128 272 57 125 126 130 132 133 135 272 50 51 53 54 57 123 124 126 127 128 130 132 133 135 272 123 124 125 127 128 133 135 272 123 125 126 128 129 268 269 272 46 47 48 49 50 51 53 120 121 122 123 125 126 127 129 268 269 272 120 121 122 127 128 268 269 272 57 124 125 131 132 134 135 275 130 132 134 135 275 51 52 53 54 55 56 57 124 125 130 131 134 135 275 124 125 126 135 136 271 272 277 130 131 132 135 136 275 276 277 57 124 125 126 130 131 132 133 134 136 271 272 275 276 277 133 134 135 271 272 275 276 277 138 139 142 181 184 280 282 286 83 137 139 142 184 185 189 286 137 138 140 142 184 284 286 290 139 141 142 250 253 284 286 290 106 107 109 140 142 250 253 290 83 84 106 107 109 137 138 139 140 141 184 185 189 250 253 284 286 290 63 64 65 144 145 146 148 297 58 59 60 63 64 65 143 145 146 148 297 143 144 146 148 297 143 144 145 147 148 155 157 297 66 67 75 146 148 155 157 297 61 62 63 64 65 66 67 71 72 75 143 144 145 146 147 155 157 297 82 150 153 154 162 164 179 306 149 153 154 159 164 299 302 306 68 80 81 152 154 156 157 309 151 153 154 156 157 303 306 309 149 150 152 154 164 303 306 309 68 79 80 81 82 149 150 151 152 153 156 157 162 164 179 303 306 309 146 147 148 156 157 296 297 309 151 152 154 155 157 296 297 309 66 67 68 75 76 80 81 146 147 148 151 152 154 155 156 296 297 309 161 212 213 301 302 310 313 319 150 160 164 165 299 302 306 322 159 161 164 165 209 212 302 322 158 160 209 212 301 302 313 322 82 149 154 163 164 179 180 326 162 164 165 179 180 320 322 326 82 149 150 153 154 159 160 162 163 165 179 180 299 302 306 320 322 326 159 160 163 164 302 320 322 326 103 104 105 167 168 186 207 330 166 168 169 170 172 186 207 330 69 70 71 72 73 74 75 103 104 105 166 167 169 170 172 186 207 330 73 74 75 167 168 170 172 330 167 168 169 171 172 330 331 334 170 172 173 174 176 330 331 334 73 74 75 76 77 78 80 167 168 169 170 171 173 174 176 330 331 334 77 78 80 171 172 174 176 334 171 172 173 175 176 334 335 337 174 176 177 178 179 334 335 337 77 78 79 80 171 172 173 174 175 177 178 179 334 335 337 78 79 80 175 176 178 179 337 175 176 177 179 180 324 326 337 78 79 80 81 82 149 154 162 163 164 175 176 177 178 180 324 326 337 162 163 164 178 179 324 326 337 137 182 184 278 280 282 286 342 181 183 184 278 282 342 343 347 182 184 185 187 189 342 343 347 83 137 138 139 142 181 182 183 185 187 189 278 280 282 286 342 343 347 83 138 142 183 184 187 189 347 166 167 168 207 208 328 330 351 183 184 185 188 189 347 348 355 187 189 190 191 193 347 348 355 83 84 85 106 109 138 142 183 184 185 187 188 190 191 193 347 348 355 84 85 109 188 189 191 193 355 188 189 190 192 193 355 356 360 191 193 194 199 200 355 356 360 84 85 86 91 92 93 109 188 189 190 191 192 194 199 200 355 356 360 91 92 93 192 193 199 200 360 95 96 97 196 197 200 201 363 195 197 198 200 201 202 204 363 87 88 89 90 95 96 97 98 99 100 195 196 198 200 201 202 204 363 98 99 100 196 197 202 204 363 192 193 194 200 201 360 361 363 91 92 93 94 95 96 97 192 193 194 195 196 197 199 201 360 361 363 195 196 197 199 200 360 361 363 196 197 198 203 204 363 364 365 202 204 205 206 207 363 364 365 98 99 100 101 102 103 104 196 197 198 202 203 205 206 207 363 364 365 102 103 104 203 204 206 207 365 203 204 205 207 208 349 351 365 102 103 104 105 166 167 168 186 203 204 205 206 208 328 330 349 351 365 186 206 207 328 330 349 351 365 160 161 210 212 302 322 323 370 209 211 212 322 323 370 371 375 210 212 213 316 319 370 371 375 158 160 161 209 210 211 213 301 302 310 313 316 319 322 323 370 371 375 158 211 212 310 313 316 319 375 215 216 223 225 244 387 388 389 214 216 218 225 228 231 244 389 214 215 217 225 241 244 248 389 216 241 244 247 248 384 389 393 215 222 224 225 228 231 244 398 220 227 238 293 398 219 221 222 227 231 238 293 398 220 222 229 231 236 237 238 398 218 220 221 224 225 231 238 398 214 225 226 382 387 388 389 400 218 222 225 226 231 398 399 400 214 215 216 218 222 223 224 226 228 231 244 382 387 388 389 398 399 400 223 224 225 382 387 398 399 400 219 220 238 293 294 396 398 404 215 218 225 230 231 242 244 429 221 230 231 232 236 237 238 429 228 229 231 232 236 242 244 429 215 218 220 221 222 224 225 228 229 230 232 236 237 238 242 244 398 429 229 230 231 233 236 427 429 438 232 234 236 427 429 433 434 438 233 235 236 240 433 434 438 441 234 236 237 238 239 240 434 441 221 229 230 231 232 233 234 235 237 238 239 240 427 429 433 434 438 441 221 229 231 235 236 238 239 441 219 220 221 222 227 229 231 235 236 237 239 293 398 441 235 236 237 238 441 234 235 236 432 434 440 441 444 216 217 243 244 245 248 389 449 228 230 231 243 244 426 429 449 241 242 244 245 248 426 429 449 214 215 216 217 218 225 228 230 231 241 242 243 245 248 389 426 429 449 241 243 244 246 248 448 449 453 245 247 248 249 393 448 449 453 217 246 248 249 384 389 393 453 216 217 241 243 244 245 246 247 249 384 389 393 448 449 453 246 247 248 391 393 452 453 457 140 141 142 251 253 288 290 463 250 252 253 254 257 288 290 463 110 111 113 251 253 254 257 463 106 107 108 109 110 111 113 140 141 142 250 251 252 254 257 288 290 463 251 252 253 255 257 462 463 465 254 256 257 258 260 462 463 465 114 115 117 255 257 258 260 465 110 111 112 113 114 115 117 251 252 253 254 255 256 258 260 462 463 465 255 256 257 259 260 261 265 465 118 119 122 258 260 261 265 465 114 115 116 117 118 119 122 255 256 257 258 259 261 265 465 258 259 260 262 265 464 465 469 261 263 265 464 465 467 469 472 262 264 265 266 269 467 469 472 119 120 122 263 265 266 269 472 118 119 120 122 258 259 260 261 262 263 264 266 269 464 465 467 469 472 263 264 265 267 269 471 472 475 266 268 269 270 272 471 472 475 127 128 129 267 269 270 272 475 119 120 121 122 127 128 129 263 264 265 266 267 268 270 272 471 472 475 267 268 269 271 272 273 277 475 133 135 136 270 272 273 277 475 123 124 125 126 127 128 129 133 135 136 267 268 269 270 271 273 277 475 270 271 272 274 275 276 277 475 273 275 276 277 475 130 131 132 134 135 136 273 274 276 277 475 134 135 136 273 274 275 277 475 133 134 135 136 270 271 272 273 274 275 276 475 181 182 184 279 282 339 342 478 278 282 283 339 342 476 478 486 137 181 184 281 282 286 287 490 280 282 283 286 287 485 486 490 137 181 182 184 278 279 280 281 283 286 287 339 342 476 478 485 486 490 279 281 282 476 478 485 486 490 139 140 142 285 286 290 291 494 284 286 287 290 291 489 490 494 137 138 139 140 142 181 184 280 281 282 284 285 287 290 291 489 490 494 280 281 282 285 286 489 490 494 250 251 253 289 290 460 463 496 288 290 291 460 463 493 494 496 139 140 141 142 250 251 253 284 285 286 288 289 291 460 463 493 494 496 284 285 286 289 290 493 494 496 293 294 295 404 510 219 220 227 238 292 294 295 396 398 404 510 227 292 293 295 396 398 404 510 292 293 294 402 404 510 511 512 155 156 157 297 298 307 309 519 143 144 145 146 147 148 155 156 157 296 298 307 309 519 296 297 307 309 519 150 159 164 300 302 305 306 524 299 301 302 305 306 311 313 524 158 161 212 300 302 311 313 524 150 158 159 160 161 164 165 209 212 299 300 301 305 306 311 313 322 524 152 153 154 304 306 308 309 527 303 305 306 308 309 521 524 527 299 300 302 304 306 521 524 527 149 150 152 153 154 159 164 299 300 302 303 304 305 308 309 521 524 527 296 297 298 308 309 518 519 527 303 304 306 307 309 518 519 527 151 152 153 154 155 156 157 296 297 298 303 304 306 307 308 518 519 527 158 212 213 312 313 317 319 535 300 301 302 312 313 314 524 535 310 311 313 314 317 319 524 535 158 161 212 213 300 301 302 310 311 312 314 317 319 524 535 311 312 313 315 523 524 531 535 314 523 524 528 531 535 536 538 211 212 213 318 319 373 375 542 310 312 313 318 319 533 535 542 316 317 319 373 375 533 535 542 158 211 212 213 310 312 313 316 317 318 373 375 533 535 542 163 164 165 321 322 326 327 546 320 322 323 326 327 367 370 546 159 160 161 163 164 165 209 210 212 302 320 321 323 326 327 367 370 546 209 210 212 321 322 367 370 546 178 179 180 325 326 337 338 550 324 326 327 337 338 544 546 550 162 163 164 165 178 179 180 320 321 322 324 325 327 337 338 544 546 550 320 321 322 325 326 544 546 550 186 207 208 329 330 344 351 555 328 330 331 332 334 344 351 555 166 167 168 169 170 171 172 186 207 208 328 329 331 332 334 344 351 555 170 171 172 329 330 332 334 555 329 330 331 333 334 555 556 558 332 334 335 336 337 555 556 558 170 171 172 173 174 175 176 329 330 331 332 333 335 336 337 555 556 558 174 175 176 333 334 336 337 558 333 334 335 337 338 548 550 558 174 175 176 177 178 179 180 324 325 326 333 334 335 336 338 548 550 558 324 325 326 336 337 548 550 558 278 279 282 340 342 376 478 562 339 341 342 376 478 562 563 567 340 342 343 345 347 562 563 567 181 182 183 184 278 279 282 339 340 341 343 345 347 376 478 562 563 567 182 183 184 341 342 345 347 567 328 329 330 351 352 553 555 572 341 342 343 346 347 567 568 575 345 347 348 353 355 567 568 575 182 183 184 185 187 188 189 341 342 343 345 346 348 353 355 567 568 575 187 188 189 346 347 353 355 575 206 207 208 350 351 357 365 580 349 351 352 357 365 571 572 580 186 206 207 208 328 329 330 344 349 350 352 357 365 553 555 571 572 580 344 350 351 553 555 571 572 580 346 347 348 354 355 575 576 583 353 355 356 358 360 575 576 583 187 188 189 190 191 192 193 346 347 348 353 354 356 358 360 575 576 583 191 192 193 354 355 358 360 583 349 350 351 365 366 579 580 585 354 355 356 359 360 583 584 585 358 360 361 362 363 583 584 585 191 192 193 194 199 200 201 354 355 356 358 359 361 362 363 583 584 585 199 200 201 359 360 362 363 585 359 360 361 363 364 365 366 585 195 196 197 198 199 200 201 202 203 204 359 360 361 362 364 365 366 585 202 203 204 362 363 365 366 585 202 203 204 205 206 207 208 349 350 351 357 362 363 364 366 579 580 585 357 362 363 364 365 579 580 585 321 322 323 368 370 546 547 591 367 369 370 546 547 589 591 594 368 370 371 372 375 589 591 594 209 210 211 212 321 322 323 367 368 369 371 372 375 546 547 589 591 594 210 211 212 369 370 372 375 594 369 370 371 374 375 594 595 599 316 318 319 374 375 540 542 599 372 373 375 540 542 594 595 599 210 211 212 213 316 318 319 369 370 371 372 373 374 540 542 594 595 599 339 340 342 478 479 552 562 602 378 416 419 420 424 627 628 632 377 380 419 420 424 630 632 636 380 381 423 424 611 612 616 636 378 379 381 424 616 630 632 636 379 380 424 615 616 634 636 638 223 225 226 383 387 395 400 654 382 386 387 395 400 652 654 657 217 247 248 385 389 390 393 657 384 386 387 388 389 390 393 657 383 385 387 388 389 652 654 657 214 223 225 226 382 383 385 386 388 389 395 400 652 654 657 214 223 225 385 386 387 389 657 214 215 216 217 223 225 241 244 247 248 384 385 386 387 388 390 393 657 384 385 389 392 393 657 658 662 249 392 393 394 452 453 457 662 390 391 393 394 457 657 658 662 217 246 247 248 249 384 385 389 390 391 392 394 452 453 457 657 658 662 391 392 393 456 457 660 662 666 382 383 387 400 401 406 654 670 227 293 294 397 398 404 405 670 396 398 399 400 401 404 405 670 218 219 220 221 222 224 225 226 227 231 238 293 294 396 397 399 400 401 404 405 670 224 225 226 397 398 400 401 670 223 224 225 226 382 383 387 395 397 398 399 401 406 654 670 395 397 398 399 400 406 654 670 295 403 404 411 510 511 512 674 402 404 405 411 512 668 670 674 227 292 293 294 295 396 397 398 402 403 405 411 510 511 512 668 670 674 396 397 398 403 404 668 670 674 395 400 401 407 654 670 671 678 406 651 654 670 671 678 679 682 409 514 516 688 689 693 694 696 408 410 507 512 516 693 694 696 409 411 507 512 516 672 674 696 402 403 404 410 512 672 674 696 421 609 612 620 624 733 734 739 414 625 627 646 647 758 759 764 413 415 627 758 759 763 764 768 414 416 417 420 627 763 764 768 377 415 417 420 627 628 632 768 415 416 418 420 627 767 768 771 417 419 420 424 425 767 768 771 377 378 418 420 424 425 632 771 377 378 415 416 417 418 419 424 425 627 628 632 767 768 771 412 422 609 612 624 732 734 771 421 423 424 425 612 732 734 771 379 422 424 425 611 612 616 771 377 378 379 380 381 418 419 420 422 423 425 611 612 616 630 632 636 771 418 419 420 422 423 424 612 771 242 243 244 428 429 446 449 776 232 233 236 428 429 430 438 776 426 427 429 430 438 446 449 776 228 229 230 231 232 233 236 242 243 244 426 427 428 430 438 446 449 776 427 428 429 431 437 438 776 784 430 437 438 773 776 780 781 784 240 434 435 439 440 441 444 787 233 234 236 434 435 436 438 787 233 234 235 236 240 432 433 435 436 438 439 440 441 444 787 432 433 434 436 438 439 444 787 433 434 435 437 438 784 785 787 430 431 436 438 776 784 785 787 232 233 234 236 427 428 429 430 431 433 434 435 436 437 776 784 785 787 432 434 435 443 444 787 788 790 240 432 434 441 442 444 445 792 234 235 236 237 238 239 240 432 434 440 442 444 445 792 440 441 444 445 792 439 444 445 787 788 790 791 792 240 432 434 435 439 440 441 442 443 445 787 788 790 791 792 440 441 442 443 444 790 791 792 426 428 429 447 449 775 776 802 446 448 449 450 453 775 776 802 245 246 248 447 449 450 453 802 241 242 243 244 245 246 248 426 428 429 446 447 448 450 453 775 776 802 447 448 449 451 453 801 802 805 450 452 453 454 457 801 802 805 249 391 393 451 453 454 457 805 245 246 247 248 249 391 393 447 448 449 450 451 452 454 457 801 802 805 451 452 453 455 457 804 805 808 454 456 457 458 666 804 805 808 394 455 457 458 660 662 666 808 249 391 392 393 394 451 452 453 454 455 456 458 660 662 666 804 805 808 455 456 457 459 664 666 797 808 458 664 666 794 797 807 808 810 288 289 290 461 463 495 496 814 460 462 463 465 466 495 496 814 254 255 257 461 463 465 466 814 250 251 252 253 254 255 257 288 289 290 460 461 462 465 466 495 496 814 261 262 265 465 466 469 470 814 254 255 256 257 258 259 260 261 262 265 461 462 463 464 466 469 470 814 461 462 463 464 465 469 470 814 262 263 265 468 469 472 473 817 467 469 470 472 473 813 814 817 261 262 263 265 464 465 466 467 468 470 472 473 813 814 817 464 465 466 468 469 813 814 817 266 267 269 472 473 474 475 817 262 263 264 265 266 267 269 467 468 469 471 473 474 475 817 467 468 469 471 472 474 475 817 471 472 473 475 817 266 267 268 269 270 271 272 273 274 275 276 277 471 472 473 474 817 279 282 283 477 478 482 486 822 476 478 479 480 482 486 602 822 278 279 282 283 339 340 342 376 476 477 479 480 482 486 552 562 602 822 376 477 478 480 552 562 602 822 477 478 479 481 601 602 607 822 480 601 602 604 607 822 823 824 476 477 478 483 486 820 822 829 482 484 486 820 822 828 829 833 483 485 486 487 490 828 829 833 281 282 283 484 486 487 490 833 279 281 282 283 476 477 478 482 483 484 485 487 490 820 822 828 829 833 484 485 486 488 490 830 833 835 487 489 490 491 494 830 833 835 285 286 287 488 490 491 494 835 280 281 282 283 285 286 287 484 485 486 487 488 489 491 494 830 833 835 488 489 490 492 494 834 835 838 491 493 494 496 497 834 835 838 289 290 291 492 494 496 497 838 284 285 286 287 289 290 291 488 489 490 491 492 493 496 497 834 835 838 460 461 463 496 497 812 814 838 288 289 290 291 460 461 463 492 493 494 495 497 812 814 838 492 493 494 495 496 812 814 838 499 700 701 702 705 730 731 843 844 846 847 849 498 500 701 702 704 705 708 846 847 849 850 852 499 501 704 705 707 708 711 849 850 852 853 855 500 502 707 708 710 711 714 852 853 855 856 858 501 503 710 711 713 714 717 855 856 858 859 861 502 504 713 714 716 717 720 858 859 861 862 864 503 506 716 717 719 720 725 861 862 864 865 868 506 723 724 725 868 869 870 504 505 719 720 723 724 725 864 865 868 869 870 409 410 508 512 515 516 696 874 507 509 510 511 512 515 516 874 508 510 511 512 874 292 293 294 295 402 404 508 509 511 512 874 295 402 404 508 509 510 512 874 295 402 403 404 409 410 411 507 508 509 510 511 515 516 672 674 696 874 514 516 517 685 688 882 883 885 408 513 516 517 688 689 693 885 507 508 512 516 517 874 875 885 408 409 410 507 508 512 513 514 515 517 688 689 693 694 696 874 875 885 513 514 515 516 688 874 875 885 307 308 309 519 520 525 527 889 296 297 298 307 308 309 518 520 525 527 889 518 519 525 527 889 304 305 306 522 524 526 527 893 521 523 524 526 527 529 531 893 314 315 522 524 529 531 535 893 299 300 301 302 304 305 306 311 312 313 314 315 521 522 523 526 527 529 531 535 893 518 519 520 526 527 888 889 893 521 522 524 525 527 888 889 893 303 304 305 306 307 308 309 518 519 520 521 522 524 525 526 888 889 893 315 530 531 532 535 536 538 898 522 523 524 530 531 887 893 898 528 529 531 532 538 887 893 898 314 315 522 523 524 528 529 530 532 535 536 538 887 893 898 528 530 531 538 539 895 898 902 317 318 319 534 535 542 543 906 533 535 536 537 538 542 543 906 310 311 312 313 314 315 317 318 319 523 524 528 531 533 534 536 537 538 542 543 906 315 528 531 534 535 537 538 906 534 535 536 538 539 900 902 906 315 528 530 531 532 534 535 536 537 539 895 898 900 902 906 532 537 538 895 898 900 902 906 373 374 375 541 542 596 599 911 540 542 543 596 599 904 906 911 316 317 318 319 373 374 375 533 534 535 540 541 543 596 599 904 906 911 533 534 535 541 542 904 906 911 325 326 327 545 546 550 551 914 544 546 547 550 551 587 591 914 320 321 322 323 325 326 327 367 368 370 544 545 547 550 551 587 591 914 367 368 370 545 546 587 591 914 336 337 338 549 550 558 559 918 548 550 551 558 559 912 914 918 324 325 326 327 336 337 338 544 545 546 548 549 551 558 559 912 914 918 544 545 546 549 550 912 914 918 376 478 479 560 562 600 602 922 344 351 352 554 555 564 572 926 553 555 556 557 558 564 572 926 328 329 330 331 332 333 334 344 351 352 553 554 556 557 558 564 572 926 332 333 334 554 555 557 558 926 554 555 556 558 559 916 918 926 332 333 334 335 336 337 338 548 549 550 554 555 556 557 559 916 918 926 548 549 550 557 558 916 918 926 552 561 562 600 602 922 923 930 560 562 563 565 567 922 923 930 339 340 341 342 376 478 479 552 560 561 563 565 567 600 602 922 923 930 340 341 342 561 562 565 567 930 553 554 555 569 572 924 926 934 561 562 563 566 567 930 931 938 565 567 568 573 575 930 931 938 340 341 342 343 345 346 347 561 562 563 565 566 568 573 575 930 931 938 345 346 347 566 567 573 575 938 564 570 572 924 926 933 934 943 569 571 572 577 580 933 934 943 350 351 352 570 572 577 580 943 344 350 351 352 553 554 555 564 569 570 571 577 580 924 926 933 934 943 566 567 568 574 575 938 939 946 573 575 576 581 583 938 939 946 345 346 347 348 353 354 355 566 567 568 573 574 576 581 583 938 939 946 353 354 355 574 575 581 583 946 570 571 572 578 580 942 943 948 577 579 580 585 586 942 943 948 357 365 366 578 580 585 586 948 349 350 351 352 357 365 366 570 571 572 577 578 579 585 586 942 943 948 574 575 576 582 583 946 947 948 581 583 584 585 586 946 947 948 353 354 355 356 358 359 360 574 575 576 581 582 584 585 586 946 947 948 358 359 360 582 583 585 586 948 357 358 359 360 361 362 363 364 365 366 578 579 580 582 583 584 586 948 578 579 580 582 583 584 585 948 545 546 547 588 591 914 915 954 587 590 591 914 915 951 954 958 368 369 370 590 591 592 594 958 588 589 591 592 594 951 954 958 367 368 369 370 545 546 547 587 588 589 590 592 594 914 915 951 954 958 589 590 591 593 594 955 958 962 592 594 595 598 599 955 958 962 368 369 370 371 372 374 375 589 590 591 592 593 595 598 599 955 958 962 372 374 375 593 594 598 599 962 540 541 542 597 599 910 911 966 596 598 599 910 911 959 962 966 593 594 595 597 599 959 962 966 372 373 374 375 540 541 542 593 594 595 596 597 598 910 911 959 962 966 552 560 562 602 603 608 922 972 480 481 602 603 605 607 822 972 376 477 478 479 480 481 552 560 562 600 601 603 605 607 608 822 922 972 600 601 602 605 607 608 922 972 481 606 607 772 822 823 824 976 601 602 603 606 607 971 972 976 604 605 607 772 824 971 972 976 480 481 601 602 603 604 605 606 772 822 823 824 971 972 976 600 602 603 920 922 970 972 980 412 421 610 612 623 624 734 990 609 611 612 613 616 623 624 990 379 423 424 610 612 613 616 990 379 412 421 422 423 424 425 609 610 611 613 616 623 624 732 734 771 990 610 611 612 614 616 989 990 994 613 615 616 617 638 989 990 994 381 614 616 617 634 636 638 994 379 380 381 423 424 610 611 612 613 614 615 617 634 636 638 989 990 994 614 615 616 618 638 993 994 998 617 638 639 982 985 993 994 998 620 621 624 738 739 1002 1003 1007 412 619 621 624 733 734 739 1007 619 620 622 624 739 1006 1007 1011 621 623 624 987 990 1006 1007 1011 609 610 612 622 624 987 990 1011 412 421 609 610 612 619 620 621 622 623 733 734 739 987 990 1006 1007 1011 413 626 627 642 646 647 759 1020 625 627 628 629 632 642 647 1020 377 413 414 415 416 417 420 625 626 628 629 632 642 646 647 758 759 763 764 768 1020 377 416 420 626 627 629 632 1020 626 627 628 631 632 1018 1020 1024 378 380 424 631 632 633 636 1024 629 630 632 633 636 1018 1020 1024 377 378 380 416 419 420 424 626 627 628 629 630 631 633 636 1018 1020 1024 630 631 632 635 636 1022 1024 1026 381 615 616 635 636 637 638 1026 633 634 636 637 638 1022 1024 1026 378 379 380 381 424 615 616 630 631 632 633 634 635 637 638 1022 1024 1026 634 635 636 638 639 640 985 1026 381 614 615 616 617 618 634 635 636 637 639 640 982 985 993 994 998 1026 618 637 638 640 982 985 998 1026 637 638 639 641 985 1026 1027 1030 640 984 985 1013 1015 1026 1027 1030 625 626 627 643 647 1017 1020 1034 642 644 647 648 1017 1020 1034 1042 643 647 648 1032 1034 1039 1040 1042 646 647 648 649 755 756 759 1042 413 625 627 645 647 648 759 1042 413 625 626 627 642 643 644 645 646 648 759 1017 1020 1034 1042 643 644 645 646 647 759 1034 1042 645 746 755 756 759 1041 1042 1045 742 745 751 1044 1045 1049 1050 1054 407 653 654 678 679 682 683 1062 383 386 387 653 654 655 657 1062 651 652 654 655 657 682 683 1062 382 383 386 387 395 400 401 406 407 651 652 653 655 657 670 671 678 679 682 683 1062 652 653 654 656 657 1062 1063 1067 655 657 658 659 662 1062 1063 1067 383 384 385 386 387 388 389 390 392 393 652 653 654 655 656 658 659 662 1062 1063 1067 390 392 393 656 657 659 662 1067 656 657 658 661 662 1065 1067 1071 394 456 457 661 662 663 666 1071 659 660 662 663 666 1065 1067 1071 390 391 392 393 394 456 457 656 657 658 659 660 661 663 666 1065 1067 1071 660 661 662 665 666 1069 1071 1075 458 459 665 666 667 797 808 1075 663 664 666 667 797 1069 1071 1075 394 455 456 457 458 459 660 661 662 663 664 665 667 797 808 1069 1071 1075 664 665 666 796 797 1073 1075 1079 403 404 405 669 670 674 675 1082 668 670 671 674 675 676 678 1082 395 396 397 398 399 400 401 403 404 405 406 407 654 668 669 671 674 675 676 678 1082 406 407 654 669 670 676 678 1082 410 411 512 673 674 696 697 1086 672 674 675 696 697 1080 1082 1086 402 403 404 405 410 411 512 668 669 670 672 673 675 696 697 1080 1082 1086 668 669 670 673 674 1080 1082 1086 669 670 671 677 678 1082 1083 1090 676 678 679 680 682 1082 1083 1090 406 407 651 654 669 670 671 676 677 679 680 682 1082 1083 1090 407 651 654 677 678 680 682 1090 677 678 679 681 682 1090 1091 1095 680 682 683 1060 1062 1090 1091 1095 407 651 653 654 677 678 679 680 681 683 1060 1062 1090 1091 1095 651 653 654 681 682 1060 1062 1095 685 686 688 698 878 879 883 1098 513 684 686 688 882 883 885 1098 684 685 687 688 883 1098 1099 1102 686 688 689 690 693 1098 1099 1102 408 513 514 516 517 684 685 686 687 689 690 693 882 883 885 1098 1099 1102 408 514 516 687 688 690 693 1102 687 688 689 691 693 1102 1103 1106 690 692 693 1102 1103 1106 1107 1109 691 693 694 695 696 1106 1107 1109 408 409 514 516 687 688 689 690 691 692 694 695 696 1102 1103 1106 1107 1109 408 409 516 692 693 695 696 1109 692 693 694 696 697 1084 1086 1109 408 409 410 411 507 512 516 672 673 674 692 693 694 695 697 1084 1086 1109 672 673 674 695 696 1084 1086 1109 684 699 878 879 883 1096 1098 1114 698 872 879 1096 1098 1112 1114 1118 498 702 703 728 730 731 843 844 846 1125 1126 1129 498 499 702 703 705 706 846 847 849 1128 1129 1132 498 499 700 701 703 705 706 728 730 731 843 844 846 847 849 1125 1126 1128 1129 1132 700 701 702 705 706 728 730 1125 1126 1128 1129 1132 499 500 705 706 708 709 849 850 852 1131 1132 1135 498 499 500 701 702 703 704 706 708 709 846 847 849 850 852 1128 1129 1131 1132 1135 701 702 703 704 705 708 709 1128 1129 1131 1132 1135 500 501 708 709 711 712 852 853 855 1134 1135 1138 499 500 501 704 705 706 707 709 711 712 849 850 852 853 855 1131 1132 1134 1135 1138 704 705 706 707 708 711 712 1131 1132 1134 1135 1138 501 502 711 712 714 715 855 856 858 1137 1138 1141 500 501 502 707 708 709 710 712 714 715 852 853 855 856 858 1134 1135 1137 1138 1141 707 708 709 710 711 714 715 1134 1135 1137 1138 1141 502 503 714 715 717 718 858 859 861 1140 1141 1144 501 502 503 710 711 712 713 715 717 718 855 856 858 859 861 1137 1138 1140 1141 1144 710 711 712 713 714 717 718 1137 1138 1140 1141 1144 503 504 717 718 720 721 861 862 864 1143 1144 1147 502 503 504 713 714 715 716 718 720 721 858 859 861 862 864 1140 1141 1143 1144 1147 713 714 715 716 717 720 721 1140 1141 1143 1144 1147 504 506 720 721 725 726 864 865 868 1146 1147 1152 503 504 506 716 717 718 719 721 725 726 861 862 864 865 868 1143 1144 1146 1147 1152 716 717 718 719 720 725 726 1143 1144 1146 1147 1152 723 724 725 726 1150 1151 1152 505 506 722 724 725 726 868 869 870 1150 1151 1152 505 506 722 723 725 726 868 869 870 1150 1151 1152 504 505 506 719 720 721 722 723 724 726 864 865 868 869 870 1146 1147 1150 1151 1152 719 720 721 722 723 724 725 1146 1147 1150 1151 1152 728 729 730 1120 1122 1123 1126 1159 1160 1163 1164 1165 700 702 703 727 729 730 1122 1123 1125 1126 1129 1165 727 728 730 731 841 843 1122 1123 1126 1165 1166 1168 498 700 702 703 727 728 729 731 841 843 844 846 1122 1123 1125 1126 1129 1165 1166 1168 498 700 702 729 730 841 843 844 846 1165 1166 1168 421 422 612 734 735 770 771 1173 412 620 624 734 735 737 739 1173 412 421 422 609 612 620 624 732 733 735 737 739 770 771 1173 732 733 734 737 739 770 771 1173 737 739 740 1172 1173 1177 1178 1182 733 734 735 736 739 740 1173 1182 619 739 740 741 1002 1003 1007 1182 412 619 620 621 624 733 734 735 736 737 738 740 741 1002 1003 1007 1173 1182 736 737 738 739 741 1003 1173 1182 738 739 740 999 1003 1181 1182 1186 650 743 748 751 1049 1050 1054 1193 742 744 748 751 1053 1054 1058 1193 743 967 1053 1054 1058 1191 1193 1195 650 747 750 751 1044 1045 1050 1202 649 747 752 756 1041 1042 1045 1202 745 746 750 751 752 756 1045 1202 742 743 749 751 1054 1190 1193 1204 748 750 751 1190 1193 1199 1202 1204 745 747 749 751 1045 1199 1202 1204 650 742 743 745 747 748 749 750 1044 1045 1049 1050 1054 1190 1193 1199 1202 1204 746 747 753 756 1045 1201 1202 1210 752 754 756 1201 1202 1209 1210 1213 753 755 756 757 759 1209 1210 1213 645 649 754 756 757 759 1042 1213 645 649 746 747 752 753 754 755 757 759 1041 1042 1045 1201 1202 1209 1210 1213 754 755 756 758 759 760 764 1213 413 414 627 757 759 760 764 1213 413 414 625 627 645 646 647 648 649 754 755 756 757 758 760 764 1042 1213 757 758 759 761 764 1212 1213 1218 760 762 764 1212 1213 1217 1218 1222 761 763 764 765 768 1217 1218 1222 414 415 627 762 764 765 768 1222 413 414 415 627 757 758 759 760 761 762 763 765 768 1212 1213 1217 1218 1222 762 763 764 766 768 1221 1222 1225 765 767 768 769 771 1221 1222 1225 417 418 420 766 768 769 771 1225 414 415 416 417 418 420 627 762 763 764 765 766 767 769 771 1221 1222 1225 766 767 768 770 771 1170 1173 1225 732 734 735 769 771 1170 1173 1225 417 418 419 420 421 422 423 424 425 612 732 734 735 766 767 768 769 770 1170 1173 1225 604 606 607 818 824 969 976 1231 431 774 776 777 780 781 784 1234 773 775 776 777 780 799 802 1234 446 447 449 774 776 799 802 1234 426 427 428 429 430 431 437 438 446 447 449 773 774 775 777 780 781 784 799 802 1234 773 774 776 778 780 1232 1234 1238 777 779 780 1232 1234 1236 1238 1241 778 780 781 782 784 1236 1238 1241 431 773 774 776 777 778 779 781 782 784 1232 1234 1236 1238 1241 431 773 776 779 780 782 784 1241 779 780 781 783 784 1241 1242 1243 782 784 785 786 787 1241 1242 1243 430 431 436 437 438 773 776 779 780 781 782 783 785 786 787 1241 1242 1243 436 437 438 783 784 786 787 1243 783 784 785 787 788 789 790 1243 432 433 434 435 436 437 438 439 443 444 783 784 785 786 788 789 790 1243 439 443 444 786 787 789 790 1243 786 787 788 790 791 792 793 1243 439 443 444 445 786 787 788 789 791 792 793 1243 443 444 445 789 790 792 793 1243 440 441 442 443 444 445 789 790 791 793 1243 789 790 791 792 1243 459 795 797 798 807 808 810 1248 794 796 797 798 810 840 1079 1248 667 795 797 840 1073 1075 1079 1248 458 459 664 665 666 667 794 795 796 798 807 808 810 840 1073 1075 1079 1248 794 795 797 809 810 1248 1249 1254 774 775 776 800 802 1233 1234 1256 799 801 802 803 805 1233 1234 1256 450 451 453 800 802 803 805 1256 446 447 448 449 450 451 453 774 775 776 799 800 801 803 805 1233 1234 1256 800 801 802 804 805 806 808 1256 454 455 457 803 805 806 808 1256 450 451 452 453 454 455 457 800 801 802 803 804 806 808 1256 803 804 805 807 808 810 811 1256 459 794 797 806 808 810 811 1256 454 455 456 457 458 459 664 666 794 797 803 804 805 806 807 810 811 1256 798 810 811 1248 1249 1252 1254 1256 459 794 795 797 798 806 807 808 809 811 1248 1249 1252 1254 1256 806 807 808 809 810 1252 1254 1256 495 496 497 814 815 837 838 1259 468 469 470 814 815 816 817 1259 460 461 462 463 464 465 466 468 469 470 495 496 497 812 813 815 816 817 837 838 1259 812 813 814 816 817 837 838 1259 813 814 815 817 1259 467 468 469 470 471 472 473 474 475 813 814 815 816 1259 772 819 824 969 976 1226 1231 1263 818 824 825 1226 1231 1262 1263 1268 482 483 486 821 822 826 829 1268 820 822 823 824 825 826 829 1268 476 477 478 479 480 481 482 483 486 601 602 604 607 820 821 823 824 825 826 829 1268 481 604 607 821 822 824 825 1268 481 604 606 607 772 818 819 821 822 823 825 969 976 1226 1231 1262 1263 1268 819 821 822 823 824 1262 1263 1268 820 821 822 827 829 1267 1268 1270 826 828 829 831 833 1267 1268 1270 483 484 486 827 829 831 833 1270 482 483 484 486 820 821 822 826 827 828 831 833 1267 1268 1270 487 488 490 832 833 835 836 1273 827 828 829 832 833 1269 1270 1273 830 831 833 835 836 1269 1270 1273 483 484 485 486 487 488 490 827 828 829 830 831 832 835 836 1269 1270 1273 491 492 494 835 836 838 839 1273 487 488 489 490 491 492 494 830 832 833 834 836 838 839 1273 830 832 833 834 835 838 839 1273 812 814 815 838 839 1259 1260 1273 491 492 493 494 495 496 497 812 814 815 834 835 836 837 839 1259 1260 1273 834 835 836 837 838 1259 1260 1273 795 796 797 1077 1079 1245 1248 1278 729 730 731 842 843 1165 1166 1168 1169 1283 1284 1286 841 843 844 845 846 1168 1169 1283 1284 1286 1287 1289 498 700 702 729 730 731 841 842 844 845 846 1165 1166 1168 1169 1283 1284 1286 1287 1289 498 700 702 730 731 842 843 845 846 1286 1287 1289 842 843 844 846 847 848 849 1286 1287 1289 1290 1292 498 499 700 701 702 705 730 731 842 843 844 845 847 848 849 1286 1287 1289 1290 1292 498 499 701 702 705 845 846 848 849 1289 1290 1292 845 846 847 849 850 851 852 1289 1290 1292 1293 1295 498 499 500 701 702 704 705 708 845 846 847 848 850 851 852 1289 1290 1292 1293 1295 499 500 704 705 708 848 849 851 852 1292 1293 1295 848 849 850 852 853 854 855 1292 1293 1295 1296 1298 499 500 501 704 705 707 708 711 848 849 850 851 853 854 855 1292 1293 1295 1296 1298 500 501 707 708 711 851 852 854 855 1295 1296 1298 851 852 853 855 856 857 858 1295 1296 1298 1299 1301 500 501 502 707 708 710 711 714 851 852 853 854 856 857 858 1295 1296 1298 1299 1301 501 502 710 711 714 854 855 857 858 1298 1299 1301 854 855 856 858 859 860 861 1298 1299 1301 1302 1304 501 502 503 710 711 713 714 717 854 855 856 857 859 860 861 1298 1299 1301 1302 1304 502 503 713 714 717 857 858 860 861 1301 1302 1304 857 858 859 861 862 863 864 1301 1302 1304 1305 1307 502 503 504 713 714 716 717 720 857 858 859 860 862 863 864 1301 1302 1304 1305 1307 503 504 716 717 720 860 861 863 864 1304 1305 1307 860 861 862 864 865 867 868 1304 1305 1307 1308 1311 503 504 506 716 717 719 720 725 860 861 862 863 865 867 868 1304 1305 1307 1308 1311 504 506 719 720 725 863 864 867 868 1307 1308 1311 867 868 869 870 1311 1312 1313 863 864 865 866 868 869 870 1307 1308 1311 1312 1313 504 505 506 719 720 723 724 725 863 864 865 866 867 869 870 1307 1308 1311 1312 1313 505 506 723 724 725 866 867 868 870 1311 1312 1313 505 506 723 724 725 866 867 868 869 1311 1312 1313 872 876 879 1117 1118 1318 1319 1322 699 871 876 879 1112 1114 1118 1322 874 875 884 885 1325 507 508 509 510 511 512 515 516 517 873 875 884 885 1325 515 516 517 873 874 884 885 1325 871 872 877 879 1118 1321 1322 1332 876 878 879 880 883 1321 1322 1332 684 698 877 879 880 883 1098 1332 684 698 699 871 872 876 877 878 880 883 1096 1098 1112 1114 1118 1321 1322 1332 877 878 879 881 883 1331 1332 1334 880 882 883 885 886 1331 1332 1334 513 685 688 881 883 885 886 1334 513 684 685 686 688 698 877 878 879 880 881 882 885 886 1098 1331 1332 1334 873 874 875 885 886 1325 1326 1334 513 514 515 516 517 685 688 873 874 875 881 882 883 884 886 1325 1326 1334 881 882 883 884 885 1325 1326 1334 529 530 531 892 893 896 898 1339 525 526 527 889 890 891 893 1346 518 519 520 525 526 527 888 890 891 893 1346 888 889 891 893 1346 888 889 890 892 893 894 1339 1346 887 891 893 894 896 898 1339 1346 521 522 523 524 525 526 527 529 530 531 887 888 889 890 891 892 894 896 898 1339 1346 891 892 893 1337 1339 1344 1345 1346 532 538 539 897 898 899 902 1353 887 892 893 897 898 1336 1339 1353 895 896 898 899 902 1336 1339 1353 528 529 530 531 532 538 539 887 892 893 895 896 897 899 902 1336 1339 1353 895 897 898 902 903 1350 1353 1357 537 538 539 901 902 906 907 1361 900 902 903 906 907 1356 1357 1361 532 537 538 539 895 897 898 899 900 901 903 906 907 1350 1353 1356 1357 1361 899 901 902 1350 1353 1356 1357 1361 541 542 543 905 906 908 911 1365 904 906 907 908 911 1360 1361 1365 533 534 535 536 537 538 539 541 542 543 900 901 902 904 905 907 908 911 1360 1361 1365 900 901 902 905 906 1360 1361 1365 904 905 906 909 911 1364 1365 1368 908 910 911 963 966 1364 1365 1368 596 597 599 909 911 963 966 1368 540 541 542 543 596 597 599 904 905 906 908 909 910 963 966 1364 1365 1368 549 550 551 913 914 918 919 1371 912 914 915 918 919 950 954 1371 544 545 546 547 549 550 551 587 588 591 912 913 915 918 919 950 954 1371 587 588 591 913 914 950 954 1371 557 558 559 917 918 926 927 1375 916 918 919 926 927 1369 1371 1375 548 549 550 551 557 558 559 912 913 914 916 917 919 926 927 1369 1371 1375 912 913 914 917 918 1369 1371 1375 608 921 922 970 972 980 981 1379 920 922 923 928 930 980 981 1379 552 560 561 562 600 602 603 608 920 921 923 928 930 970 972 980 981 1379 560 561 562 921 922 928 930 1379 564 569 572 925 926 932 934 1384 924 926 927 932 934 1373 1375 1384 553 554 555 556 557 558 559 564 569 572 916 917 918 924 925 927 932 934 1373 1375 1384 916 917 918 925 926 1373 1375 1384 921 922 923 929 930 1379 1380 1387 928 930 931 936 938 1379 1380 1387 560 561 562 563 565 566 567 921 922 923 928 929 931 936 938 1379 1380 1387 565 566 567 929 930 936 938 1387 924 925 926 934 935 1383 1384 1392 569 570 572 934 935 940 943 1392 564 569 570 572 924 925 926 932 933 935 940 943 1383 1384 1392 932 933 934 940 943 1383 1384 1392 929 930 931 937 938 1387 1388 1395 936 938 939 944 946 1387 1388 1395 565 566 567 568 573 574 575 929 930 931 936 937 939 944 946 1387 1388 1395 573 574 575 937 938 944 946 1395 933 934 935 941 943 1391 1392 1397 940 942 943 948 949 1391 1392 1397 577 578 580 941 943 948 949 1397 569 570 571 572 577 578 580 933 934 935 940 941 942 948 949 1391 1392 1397 937 938 939 945 946 1395 1396 1397 944 946 947 948 949 1395 1396 1397 573 574 575 576 581 582 583 937 938 939 944 945 947 948 949 1395 1396 1397 581 582 583 945 946 948 949 1397 577 578 579 580 581 582 583 584 585 586 941 942 943 945 946 947 949 1397 941 942 943 945 946 947 948 1397 913 914 915 953 954 1371 1372 1403 588 590 591 952 954 957 958 1407 951 953 954 957 958 1400 1403 1407 950 952 954 1371 1372 1400 1403 1407 587 588 590 591 913 914 915 950 951 952 953 957 958 1371 1372 1400 1403 1407 592 593 594 956 958 961 962 1411 955 957 958 961 962 1404 1407 1411 951 952 954 956 958 1404 1407 1411 588 589 590 591 592 593 594 951 952 954 955 956 957 961 962 1404 1407 1411 597 598 599 960 962 965 966 1415 959 961 962 965 966 1408 1411 1415 955 956 958 960 962 1408 1411 1415 592 593 594 595 597 598 599 955 956 958 959 960 961 965 966 1408 1411 1415 909 910 911 964 966 1349 1368 1419 963 965 966 1349 1368 1412 1415 1419 959 960 962 964 966 1412 1415 1419 596 597 598 599 909 910 911 959 960 962 963 964 965 1349 1368 1412 1415 1419 744 968 1057 1058 1191 1193 1195 1429 967 1057 1058 1187 1195 1420 1423 1429 772 818 824 975 976 1229 1231 1434 608 920 922 972 973 977 980 1437 605 606 607 972 973 974 976 1437 600 601 602 603 605 606 607 608 920 922 970 971 973 974 976 977 980 1437 970 971 972 974 976 977 980 1437 971 972 973 975 976 1431 1434 1437 969 974 976 1229 1231 1431 1434 1437 604 605 606 607 772 818 824 969 971 972 973 974 975 1229 1231 1431 1434 1437 970 972 973 978 980 1437 1438 1441 977 979 980 1437 1438 1441 1442 1445 978 980 981 1377 1379 1441 1442 1445 608 920 921 922 970 972 973 977 978 979 981 1377 1379 1437 1438 1441 1442 1445 920 921 922 979 980 1377 1379 1445 618 638 639 983 985 997 998 1450 982 984 985 986 997 998 1015 1450 641 983 985 986 1013 1015 1030 1450 618 637 638 639 640 641 982 983 984 986 997 998 1013 1015 1026 1027 1030 1450 983 984 985 1012 1015 1449 1450 1454 622 623 624 988 990 1010 1011 1458 987 989 990 991 994 1010 1011 1458 613 614 616 988 990 991 994 1458 609 610 611 612 613 614 616 622 623 624 987 988 989 991 994 1010 1011 1458 988 989 990 992 994 1457 1458 1462 991 993 994 995 998 1457 1458 1462 617 618 638 992 994 995 998 1462 613 614 615 616 617 618 638 988 989 990 991 992 993 995 998 1457 1458 1462 992 993 994 996 998 1461 1462 1466 995 997 998 1447 1450 1461 1462 1466 982 983 985 996 998 1447 1450 1466 617 618 638 639 982 983 985 992 993 994 995 996 997 1447 1450 1461 1462 1466 741 1000 1003 1181 1182 1185 1186 1472 999 1001 1003 1185 1186 1471 1472 1476 1000 1002 1003 1004 1007 1471 1472 1476 619 738 739 1001 1003 1004 1007 1476 619 738 739 740 741 999 1000 1001 1002 1004 1007 1181 1182 1185 1186 1471 1472 1476 1001 1002 1003 1005 1007 1475 1476 1480 1004 1006 1007 1008 1011 1475 1476 1480 621 622 624 1005 1007 1008 1011 1480 619 620 621 622 624 738 739 1001 1002 1003 1004 1005 1006 1008 1011 1475 1476 1480 1005 1006 1007 1009 1011 1479 1480 1484 1008 1010 1011 1455 1458 1479 1480 1484 987 988 990 1009 1011 1455 1458 1484 621 622 623 624 987 988 990 1005 1006 1007 1008 1009 1010 1455 1458 1479 1480 1484 986 1015 1016 1059 1449 1450 1454 1491 641 984 985 1014 1015 1030 1031 1495 1013 1015 1016 1030 1031 1489 1491 1495 641 983 984 985 986 1012 1013 1014 1016 1030 1031 1059 1449 1450 1454 1489 1491 1495 1012 1014 1015 1059 1454 1489 1491 1495 642 643 647 1019 1020 1034 1035 1500 629 631 632 1019 1020 1021 1024 1500 1017 1018 1020 1021 1024 1034 1035 1500 625 626 627 628 629 631 632 642 643 647 1017 1018 1019 1021 1024 1034 1035 1500 1018 1019 1020 1023 1024 1497 1500 1502 633 635 636 1023 1024 1025 1026 1502 1021 1022 1024 1025 1026 1497 1500 1502 629 630 631 632 633 635 636 1018 1019 1020 1021 1022 1023 1025 1026 1497 1500 1502 1022 1023 1024 1026 1027 1028 1030 1502 633 634 635 636 637 638 639 640 641 985 1022 1023 1024 1025 1027 1028 1030 1502 640 641 985 1025 1026 1028 1030 1502 1025 1026 1027 1029 1030 1502 1503 1506 1028 1030 1031 1493 1495 1502 1503 1506 640 641 984 985 1013 1014 1015 1025 1026 1027 1028 1029 1031 1493 1495 1502 1503 1506 1013 1014 1015 1029 1030 1493 1495 1506 644 1033 1034 1036 1039 1040 1042 1511 1032 1034 1035 1036 1040 1499 1500 1511 642 643 644 647 648 1017 1019 1020 1032 1033 1035 1036 1039 1040 1042 1499 1500 1511 1017 1019 1020 1033 1034 1499 1500 1511 1032 1033 1034 1037 1040 1510 1511 1516 1036 1038 1040 1510 1511 1515 1516 1519 1037 1039 1040 1042 1043 1515 1516 1519 644 1032 1034 1038 1040 1042 1043 1519 644 1032 1033 1034 1036 1037 1038 1039 1042 1043 1510 1511 1515 1516 1519 649 746 756 1042 1043 1045 1046 1519 643 644 645 646 647 648 649 746 755 756 759 1032 1034 1038 1039 1040 1041 1043 1045 1046 1519 1038 1039 1040 1041 1042 1045 1046 1519 650 745 751 1045 1046 1047 1050 1519 649 650 745 746 747 750 751 752 756 1041 1042 1043 1044 1046 1047 1050 1202 1519 1041 1042 1043 1044 1045 1047 1050 1519 1044 1045 1046 1048 1050 1518 1519 1523 1047 1049 1050 1051 1054 1518 1519 1523 650 742 751 1048 1050 1051 1054 1523 650 742 745 751 1044 1045 1046 1047 1048 1049 1051 1054 1518 1519 1523 1048 1049 1050 1052 1054 1522 1523 1527 1051 1053 1054 1055 1058 1522 1523 1527 743 744 1052 1054 1055 1058 1193 1527 650 742 743 744 748 751 1048 1049 1050 1051 1052 1053 1055 1058 1193 1522 1523 1527 1052 1053 1054 1056 1058 1526 1527 1531 1055 1057 1058 1426 1429 1526 1527 1531 967 968 1056 1058 1195 1426 1429 1531 743 744 967 968 1052 1053 1054 1055 1056 1057 1191 1193 1195 1426 1429 1526 1527 1531 1012 1015 1016 1453 1454 1488 1491 1536 681 682 683 1061 1062 1092 1095 1541 1060 1062 1063 1064 1067 1092 1095 1541 651 652 653 654 655 656 657 681 682 683 1060 1061 1063 1064 1067 1092 1095 1541 655 656 657 1061 1062 1064 1067 1541 1061 1062 1063 1066 1067 1539 1541 1545 659 661 662 1066 1067 1068 1071 1545 1064 1065 1067 1068 1071 1539 1541 1545 655 656 657 658 659 661 662 1061 1062 1063 1064 1065 1066 1068 1071 1539 1541 1545 1065 1066 1067 1070 1071 1543 1545 1549 663 665 666 1070 1071 1072 1075 1549 1068 1069 1071 1072 1075 1543 1545 1549 659 660 661 662 663 665 666 1065 1066 1067 1068 1069 1070 1072 1075 1543 1545 1549 1069 1070 1071 1074 1075 1547 1549 1553 667 796 797 1074 1075 1076 1079 1553 1072 1073 1075 1076 1079 1547 1549 1553 663 664 665 666 667 796 797 1069 1070 1071 1072 1073 1074 1076 1079 1547 1549 1553 1073 1074 1075 1078 1079 1551 1553 1557 840 1078 1079 1245 1248 1276 1278 1557 1076 1077 1079 1276 1278 1551 1553 1557 667 795 796 797 840 1073 1074 1075 1076 1077 1078 1245 1248 1276 1278 1551 1553 1557 673 674 675 1081 1082 1086 1087 1560 1080 1082 1083 1086 1087 1088 1090 1560 668 669 670 671 673 674 675 676 677 678 1080 1081 1083 1086 1087 1088 1090 1560 676 677 678 1081 1082 1088 1090 1560 695 696 697 1085 1086 1109 1110 1564 1084 1086 1087 1109 1110 1558 1560 1564 672 673 674 675 695 696 697 1080 1081 1082 1084 1085 1087 1109 1110 1558 1560 1564 1080 1081 1082 1085 1086 1558 1560 1564 1081 1082 1083 1089 1090 1560 1561 1568 1088 1090 1091 1094 1095 1560 1561 1568 676 677 678 679 680 681 682 1081 1082 1083 1088 1089 1091 1094 1095 1560 1561 1568 680 681 682 1089 1090 1094 1095 1568 1060 1061 1062 1093 1095 1538 1541 1572 1092 1094 1095 1538 1541 1568 1569 1572 1089 1090 1091 1093 1095 1568 1569 1572 680 681 682 683 1060 1061 1062 1089 1090 1091 1092 1093 1094 1538 1541 1568 1569 1572 698 699 879 1097 1098 1111 1114 1576 1096 1098 1099 1100 1102 1111 1114 1576 684 685 686 687 688 698 699 878 879 883 1096 1097 1099 1100 1102 1111 1114 1576 686 687 688 1097 1098 1100 1102 1576 1097 1098 1099 1101 1102 1576 1577 1580 1100 1102 1103 1104 1106 1576 1577 1580 686 687 688 689 690 691 693 1097 1098 1099 1100 1101 1103 1104 1106 1576 1577 1580 690 691 693 1101 1102 1104 1106 1580 1101 1102 1103 1105 1106 1580 1581 1583 1104 1106 1107 1108 1109 1580 1581 1583 690 691 692 693 1101 1102 1103 1104 1105 1107 1108 1109 1580 1581 1583 691 692 693 1105 1106 1108 1109 1583 1105 1106 1107 1109 1110 1562 1564 1583 691 692 693 694 695 696 697 1084 1085 1086 1105 1106 1107 1108 1110 1562 1564 1583 1084 1085 1086 1108 1109 1562 1564 1583 1096 1097 1098 1114 1115 1574 1576 1588 699 872 879 1113 1114 1116 1118 1592 1112 1114 1115 1116 1118 1586 1588 1592 698 699 872 879 1096 1097 1098 1111 1112 1113 1115 1116 1118 1574 1576 1586 1588 1592 1111 1113 1114 1574 1576 1586 1588 1592 1112 1113 1114 1118 1119 1591 1592 1597 871 1118 1119 1314 1318 1319 1322 1597 699 871 872 876 879 1112 1113 1114 1116 1117 1119 1314 1318 1319 1322 1591 1592 1597 1116 1117 1118 1314 1319 1591 1592 1597 727 1121 1123 1124 1159 1160 1163 1164 1165 1606 1607 1610 1120 1123 1124 1154 1157 1158 1159 1603 1604 1606 1607 1610 727 728 729 730 1123 1124 1126 1127 1165 1609 1610 1613 727 728 729 730 1120 1121 1122 1124 1126 1127 1159 1160 1163 1164 1165 1606 1607 1609 1610 1613 1120 1121 1122 1123 1126 1127 1159 1606 1607 1609 1610 1613 700 702 703 728 730 1126 1127 1129 1130 1612 1613 1616 700 702 703 727 728 729 730 1122 1123 1124 1125 1127 1129 1130 1165 1609 1610 1612 1613 1616 1122 1123 1124 1125 1126 1129 1130 1609 1610 1612 1613 1616 701 702 703 705 706 1129 1130 1132 1133 1615 1616 1619 700 701 702 703 705 706 728 730 1125 1126 1127 1128 1130 1132 1133 1612 1613 1615 1616 1619 1125 1126 1127 1128 1129 1132 1133 1612 1613 1615 1616 1619 704 705 706 708 709 1132 1133 1135 1136 1618 1619 1622 701 702 703 704 705 706 708 709 1128 1129 1130 1131 1133 1135 1136 1615 1616 1618 1619 1622 1128 1129 1130 1131 1132 1135 1136 1615 1616 1618 1619 1622 707 708 709 711 712 1135 1136 1138 1139 1621 1622 1625 704 705 706 707 708 709 711 712 1131 1132 1133 1134 1136 1138 1139 1618 1619 1621 1622 1625 1131 1132 1133 1134 1135 1138 1139 1618 1619 1621 1622 1625 710 711 712 714 715 1138 1139 1141 1142 1624 1625 1628 707 708 709 710 711 712 714 715 1134 1135 1136 1137 1139 1141 1142 1621 1622 1624 1625 1628 1134 1135 1136 1137 1138 1141 1142 1621 1622 1624 1625 1628 713 714 715 717 718 1141 1142 1144 1145 1627 1628 1631 710 711 712 713 714 715 717 718 1137 1138 1139 1140 1142 1144 1145 1624 1625 1627 1628 1631 1137 1138 1139 1140 1141 1144 1145 1624 1625 1627 1628 1631 716 717 718 720 721 1144 1145 1147 1148 1630 1631 1634 713 714 715 716 717 718 720 721 1140 1141 1142 1143 1145 1147 1148 1627 1628 1630 1631 1634 1140 1141 1142 1143 1144 1147 1148 1627 1628 1630 1631 1634 719 720 721 725 726 1147 1148 1152 1153 1633 1634 1639 716 717 718 719 720 721 725 726 1143 1144 1145 1146 1148 1152 1153 1630 1631 1633 1634 1639 1143 1144 1145 1146 1147 1152 1153 1630 1631 1633 1634 1639 1150 1151 1152 1153 1637 1638 1639 722 723 724 725 726 1149 1151 1152 1153 1637 1638 1639 722 723 724 725 726 1149 1150 1152 1153 1637 1638 1639 719 720 721 722 723 724 725 726 1146 1147 1148 1149 1150 1151 1153 1633 1634 1637 1638 1639 1146 1147 1148 1149 1150 1151 1152 1633 1634 1637 1638 1639 1121 1155 1157 1158 1159 1598 1603 1604 1607 1645 1154 1156 1157 1598 1604 1643 1645 1647 1155 1157 1158 1159 1160 1161 1163 1643 1645 1647 1121 1154 1155 1156 1158 1159 1160 1161 1163 1598 1603 1604 1607 1643 1645 1647 1121 1154 1156 1157 1159 1160 1161 1163 1603 1604 1607 1647 727 1120 1121 1123 1124 1154 1156 1157 1158 1160 1161 1163 1164 1165 1603 1604 1606 1607 1610 1647 727 1120 1123 1156 1157 1158 1159 1161 1163 1164 1165 1647 1156 1157 1158 1159 1160 1162 1163 1647 1648 1652 1653 1654 1161 1163 1164 1165 1166 1167 1168 1647 1648 1652 1653 1654 727 1120 1123 1156 1157 1158 1159 1160 1161 1162 1164 1165 1166 1167 1168 1647 1648 1652 1653 1654 727 1120 1123 1159 1160 1162 1163 1165 1166 1167 1168 1654 727 728 729 730 731 841 843 1120 1122 1123 1126 1159 1160 1162 1163 1164 1166 1167 1168 1654 729 730 731 841 843 1162 1163 1164 1165 1167 1168 1654 1162 1163 1164 1165 1166 1168 1169 1281 1283 1654 1655 1657 729 730 731 841 842 843 1162 1163 1164 1165 1166 1167 1169 1281 1283 1284 1286 1654 1655 1657 841 842 843 1167 1168 1281 1283 1284 1286 1654 1655 1657 769 770 771 1171 1173 1224 1225 1667 1170 1172 1173 1174 1178 1224 1225 1667 736 1171 1173 1174 1177 1178 1182 1667 732 733 734 735 736 737 739 740 769 770 771 1170 1171 1172 1174 1177 1178 1182 1224 1225 1667 1171 1172 1173 1175 1178 1666 1667 1672 1174 1176 1178 1666 1667 1671 1672 1676 1175 1177 1178 1179 1182 1671 1672 1676 736 1172 1173 1176 1178 1179 1182 1676 736 1171 1172 1173 1174 1175 1176 1177 1179 1182 1666 1667 1671 1672 1676 1176 1177 1178 1180 1182 1675 1676 1680 1179 1181 1182 1183 1186 1675 1676 1680 741 999 1003 1180 1182 1183 1186 1680 736 737 738 739 740 741 999 1003 1172 1173 1176 1177 1178 1179 1180 1181 1183 1186 1675 1676 1680 1180 1181 1182 1184 1186 1679 1680 1682 1183 1185 1186 1468 1472 1679 1680 1682 999 1000 1003 1184 1186 1468 1472 1682 741 999 1000 1003 1180 1181 1182 1183 1184 1185 1468 1472 1679 1680 1682 968 1188 1195 1196 1420 1423 1429 1709 1187 1189 1195 1196 1423 1707 1709 1713 1188 1422 1423 1694 1697 1707 1709 1713 748 749 751 1192 1193 1198 1204 1722 744 967 1058 1192 1193 1194 1195 1722 1190 1191 1193 1194 1195 1198 1204 1722 742 743 744 748 749 751 967 1053 1054 1058 1190 1191 1192 1194 1195 1198 1204 1722 1191 1192 1193 1195 1196 1197 1709 1722 744 967 968 1057 1058 1187 1188 1191 1192 1193 1194 1196 1197 1420 1423 1429 1709 1722 1187 1188 1194 1195 1197 1423 1709 1722 1194 1195 1196 1706 1709 1716 1718 1722 1190 1192 1193 1204 1205 1721 1722 1726 749 750 751 1200 1202 1203 1204 1729 1199 1201 1202 1203 1204 1206 1210 1729 752 753 756 1200 1202 1206 1210 1729 745 746 747 749 750 751 752 753 756 1045 1199 1200 1201 1203 1204 1206 1210 1729 1199 1200 1202 1204 1205 1725 1726 1729 748 749 750 751 1190 1192 1193 1198 1199 1200 1202 1203 1205 1721 1722 1725 1726 1729 1198 1203 1204 1721 1722 1725 1726 1729 1200 1201 1202 1207 1210 1728 1729 1734 1206 1208 1210 1728 1729 1733 1734 1737 1207 1209 1210 1211 1213 1733 1734 1737 753 754 756 1208 1210 1211 1213 1737 752 753 754 756 1200 1201 1202 1206 1207 1208 1209 1211 1213 1728 1729 1733 1734 1737 1208 1209 1210 1212 1213 1214 1218 1737 760 761 764 1211 1213 1214 1218 1737 753 754 755 756 757 758 759 760 761 764 1208 1209 1210 1211 1212 1214 1218 1737 1211 1212 1213 1215 1218 1736 1737 1742 1214 1216 1218 1736 1737 1741 1742 1746 1215 1217 1218 1219 1222 1741 1742 1746 761 762 764 1216 1218 1219 1222 1746 760 761 762 764 1211 1212 1213 1214 1215 1216 1217 1219 1222 1736 1737 1741 1742 1746 1216 1217 1218 1220 1222 1745 1746 1749 1219 1221 1222 1223 1225 1745 1746 1749 765 766 768 1220 1222 1223 1225 1749 761 762 763 764 765 766 768 1216 1217 1218 1219 1220 1221 1223 1225 1745 1746 1749 1220 1221 1222 1224 1225 1664 1667 1749 1170 1171 1173 1223 1225 1664 1667 1749 765 766 767 768 769 770 771 1170 1171 1173 1220 1221 1222 1223 1224 1664 1667 1749 818 819 824 1227 1231 1261 1263 1753 1226 1228 1231 1261 1263 1750 1753 1757 1227 1230 1231 1750 1753 1755 1757 1762 969 975 976 1230 1231 1430 1434 1762 1228 1229 1231 1430 1434 1755 1757 1762 772 818 819 824 969 975 976 1226 1227 1228 1229 1230 1261 1263 1430 1434 1750 1753 1755 1757 1762 777 778 780 1234 1235 1237 1238 1766 799 800 802 1234 1235 1256 1257 1766 773 774 775 776 777 778 780 799 800 802 1232 1233 1235 1237 1238 1256 1257 1766 1232 1233 1234 1237 1238 1256 1257 1766 778 779 780 1238 1239 1240 1241 1768 1232 1234 1235 1238 1239 1766 1767 1768 777 778 779 780 1232 1234 1235 1236 1237 1239 1240 1241 1766 1767 1768 1236 1237 1238 1240 1241 1766 1767 1768 1236 1238 1239 1241 1242 1243 1244 1768 778 779 780 781 782 783 784 1236 1238 1239 1240 1242 1243 1244 1768 782 783 784 1240 1241 1243 1244 1768 782 783 784 785 786 787 788 789 790 791 792 793 1240 1241 1242 1244 1768 1240 1241 1242 1243 1768 840 1077 1079 1246 1248 1275 1278 1774 1245 1247 1248 1275 1278 1774 1775 1776 1246 1248 1249 1250 1254 1774 1775 1776 794 795 796 797 798 809 810 840 1077 1079 1245 1246 1247 1249 1250 1254 1275 1278 1774 1775 1776 798 809 810 1247 1248 1250 1254 1776 1247 1248 1249 1251 1254 1772 1776 1780 1250 1253 1254 1772 1776 1780 1781 1784 809 810 811 1253 1254 1255 1256 1784 1251 1252 1254 1255 1256 1780 1781 1784 798 809 810 811 1247 1248 1249 1250 1251 1252 1253 1255 1256 1772 1776 1780 1781 1784 1252 1253 1254 1256 1257 1764 1766 1784 799 800 801 802 803 804 805 806 807 808 809 810 811 1233 1234 1235 1252 1253 1254 1255 1257 1764 1766 1784 1233 1234 1235 1255 1256 1764 1766 1784 1259 1260 1272 1273 1786 812 813 814 815 816 817 837 838 839 1258 1260 1272 1273 1786 837 838 839 1258 1259 1272 1273 1786 1226 1227 1231 1263 1264 1752 1753 1791 819 824 825 1263 1264 1265 1268 1791 818 819 824 825 1226 1227 1231 1261 1262 1264 1265 1268 1752 1753 1791 1261 1262 1263 1265 1268 1752 1753 1791 1262 1263 1264 1266 1268 1790 1791 1793 1265 1267 1268 1270 1271 1790 1791 1793 826 827 829 1266 1268 1270 1271 1793 819 820 821 822 823 824 825 826 827 829 1262 1263 1264 1265 1266 1267 1270 1271 1790 1791 1793 831 832 833 1270 1271 1273 1274 1793 826 827 828 829 831 832 833 1266 1267 1268 1269 1271 1273 1274 1793 1266 1267 1268 1269 1270 1273 1274 1793 1258 1259 1260 1273 1274 1786 1787 1793 830 831 832 833 834 835 836 837 838 839 1258 1259 1260 1269 1270 1271 1272 1274 1786 1787 1793 1269 1270 1271 1272 1273 1786 1787 1793 1245 1246 1248 1278 1279 1770 1774 1797 1077 1078 1079 1277 1278 1555 1557 1802 1276 1278 1279 1280 1555 1557 1797 1802 840 1077 1078 1079 1245 1246 1248 1275 1276 1277 1279 1280 1555 1557 1770 1774 1797 1802 1275 1277 1278 1280 1770 1774 1797 1802 1277 1278 1279 1796 1797 1802 1803 1806 1167 1168 1169 1282 1283 1654 1655 1657 1658 1809 1810 1813 1281 1283 1284 1285 1286 1657 1658 1809 1810 1812 1813 1816 841 842 843 1167 1168 1169 1281 1282 1284 1285 1286 1654 1655 1657 1658 1809 1810 1812 1813 1816 841 842 843 1168 1169 1282 1283 1285 1286 1812 1813 1816 1282 1283 1284 1286 1287 1288 1289 1812 1813 1815 1816 1819 841 842 843 844 845 846 1168 1169 1282 1283 1284 1285 1287 1288 1289 1812 1813 1815 1816 1819 842 843 844 845 846 1285 1286 1288 1289 1815 1816 1819 1285 1286 1287 1289 1290 1291 1292 1815 1816 1818 1819 1822 842 843 844 845 846 847 848 849 1285 1286 1287 1288 1290 1291 1292 1815 1816 1818 1819 1822 845 846 847 848 849 1288 1289 1291 1292 1818 1819 1822 1288 1289 1290 1292 1293 1294 1295 1818 1819 1821 1822 1825 845 846 847 848 849 850 851 852 1288 1289 1290 1291 1293 1294 1295 1818 1819 1821 1822 1825 848 849 850 851 852 1291 1292 1294 1295 1821 1822 1825 1291 1292 1293 1295 1296 1297 1298 1821 1822 1824 1825 1828 848 849 850 851 852 853 854 855 1291 1292 1293 1294 1296 1297 1298 1821 1822 1824 1825 1828 851 852 853 854 855 1294 1295 1297 1298 1824 1825 1828 1294 1295 1296 1298 1299 1300 1301 1824 1825 1827 1828 1831 851 852 853 854 855 856 857 858 1294 1295 1296 1297 1299 1300 1301 1824 1825 1827 1828 1831 854 855 856 857 858 1297 1298 1300 1301 1827 1828 1831 1297 1298 1299 1301 1302 1303 1304 1827 1828 1830 1831 1834 854 855 856 857 858 859 860 861 1297 1298 1299 1300 1302 1303 1304 1827 1828 1830 1831 1834 857 858 859 860 861 1300 1301 1303 1304 1830 1831 1834 1300 1301 1302 1304 1305 1306 1307 1830 1831 1833 1834 1837 857 858 859 860 861 862 863 864 1300 1301 1302 1303 1305 1306 1307 1830 1831 1833 1834 1837 860 861 862 863 864 1303 1304 1306 1307 1833 1834 1837 1303 1304 1305 1307 1308 1310 1311 1833 1834 1836 1837 1842 860 861 862 863 864 865 867 868 1303 1304 1305 1306 1308 1310 1311 1833 1834 1836 1837 1842 863 864 865 867 868 1306 1307 1310 1311 1836 1837 1842 1310 1311 1312 1313 1840 1841 1842 1306 1307 1308 1309 1311 1312 1313 1836 1837 1840 1841 1842 863 864 865 866 867 868 869 870 1306 1307 1308 1309 1310 1312 1313 1836 1837 1840 1841 1842 866 867 868 869 870 1309 1310 1311 1313 1840 1841 1842 866 867 868 869 870 1309 1310 1311 1312 1840 1841 1842 1117 1118 1119 1315 1319 1596 1597 1848 1314 1316 1319 1596 1597 1847 1848 1853 1315 1317 1319 1847 1848 1852 1853 1858 1316 1318 1319 1322 1323 1852 1853 1858 871 1117 1118 1317 1319 1322 1323 1858 871 1117 1118 1119 1314 1315 1316 1317 1318 1322 1323 1596 1597 1847 1848 1852 1853 1858 1321 1322 1323 1329 1332 1856 1857 1858 876 877 879 1320 1322 1323 1332 1858 871 872 876 877 879 1117 1118 1317 1318 1319 1320 1321 1323 1332 1858 1317 1318 1319 1320 1321 1322 1332 1858 1325 1326 1333 1334 1872 873 874 875 884 885 886 1324 1326 1333 1334 1872 884 885 886 1324 1325 1333 1334 1872 1328 1854 1856 1861 1862 1868 1869 1874 1327 1329 1330 1332 1854 1856 1862 1874 1320 1328 1330 1332 1856 1857 1858 1874 1328 1329 1331 1332 1334 1335 1856 1874 880 881 883 1330 1332 1334 1335 1874 876 877 878 879 880 881 883 1320 1321 1322 1323 1328 1329 1330 1331 1334 1335 1856 1857 1858 1874 1324 1325 1326 1334 1335 1872 1873 1874 880 881 882 883 884 885 886 1324 1325 1326 1330 1331 1332 1333 1335 1872 1873 1874 1330 1331 1332 1333 1334 1872 1873 1874 896 897 898 1338 1339 1351 1353 1878 894 1338 1339 1340 1344 1345 1346 1878 1336 1337 1339 1340 1344 1351 1353 1878 887 891 892 893 894 896 897 898 1336 1337 1338 1340 1344 1345 1346 1351 1353 1878 1337 1338 1339 1341 1344 1876 1878 1887 1340 1342 1344 1876 1878 1882 1883 1887 1341 1343 1344 1348 1882 1883 1887 1890 1342 1344 1345 1346 1347 1348 1883 1890 894 1337 1338 1339 1340 1341 1342 1343 1345 1346 1347 1348 1876 1878 1882 1883 1887 1890 894 1337 1339 1343 1344 1346 1347 1890 888 889 890 891 892 893 894 1337 1339 1343 1344 1345 1347 1890 1343 1344 1345 1346 1890 1342 1343 1344 1881 1883 1889 1890 1893 963 964 966 1367 1368 1416 1419 1899 899 902 903 1352 1353 1354 1357 1903 1336 1338 1339 1352 1353 1875 1878 1903 1350 1351 1353 1354 1357 1875 1878 1903 895 896 897 898 899 902 903 1336 1338 1339 1350 1351 1352 1354 1357 1875 1878 1903 1350 1352 1353 1355 1357 1902 1903 1907 1354 1356 1357 1358 1361 1902 1903 1907 901 902 903 1355 1357 1358 1361 1907 899 901 902 903 1350 1352 1353 1354 1355 1356 1358 1361 1902 1903 1907 1355 1356 1357 1359 1361 1906 1907 1911 1358 1360 1361 1362 1365 1906 1907 1911 905 906 907 1359 1361 1362 1365 1911 900 901 902 903 905 906 907 1355 1356 1357 1358 1359 1360 1362 1365 1906 1907 1911 1359 1360 1361 1363 1365 1910 1911 1914 1362 1364 1365 1366 1368 1910 1911 1914 908 909 911 1363 1365 1366 1368 1914 904 905 906 907 908 909 911 1359 1360 1361 1362 1363 1364 1366 1368 1910 1911 1914 1363 1364 1365 1367 1368 1895 1899 1914 1349 1366 1368 1416 1419 1895 1899 1914 908 909 910 911 963 964 966 1349 1363 1364 1365 1366 1367 1416 1419 1895 1899 1914 917 918 919 1370 1371 1375 1376 1920 1369 1371 1372 1375 1376 1399 1403 1920 912 913 914 915 917 918 919 950 953 954 1369 1370 1372 1375 1376 1399 1403 1920 950 953 954 1370 1371 1399 1403 1920 925 926 927 1374 1375 1381 1384 1922 1373 1375 1376 1381 1384 1919 1920 1922 916 917 918 919 925 926 927 1369 1370 1371 1373 1374 1376 1381 1384 1919 1920 1922 1369 1370 1371 1374 1375 1919 1920 1922 979 980 981 1378 1379 1445 1446 1927 1377 1379 1380 1385 1387 1445 1446 1927 920 921 922 923 928 929 930 979 980 981 1377 1378 1380 1385 1387 1445 1446 1927 928 929 930 1378 1379 1385 1387 1927 1373 1374 1375 1382 1384 1916 1922 1932 1381 1383 1384 1389 1392 1916 1922 1932 932 934 935 1382 1384 1389 1392 1932 924 925 926 927 932 934 935 1373 1374 1375 1381 1382 1383 1389 1392 1916 1922 1932 1378 1379 1380 1386 1387 1927 1928 1935 1385 1387 1388 1393 1395 1927 1928 1935 928 929 930 931 936 937 938 1378 1379 1380 1385 1386 1388 1393 1395 1927 1928 1935 936 937 938 1386 1387 1393 1395 1935 1382 1383 1384 1390 1392 1931 1932 1937 1389 1391 1392 1397 1398 1931 1932 1937 940 941 943 1390 1392 1397 1398 1937 932 933 934 935 940 941 943 1382 1383 1384 1389 1390 1391 1397 1398 1931 1932 1937 1386 1387 1388 1394 1395 1935 1936 1937 1393 1395 1396 1397 1398 1935 1936 1937 936 937 938 939 944 945 946 1386 1387 1388 1393 1394 1396 1397 1398 1935 1936 1937 944 945 946 1394 1395 1397 1398 1937 940 941 942 943 944 945 946 947 948 949 1390 1391 1392 1394 1395 1396 1398 1937 1390 1391 1392 1394 1395 1396 1397 1937 1370 1371 1372 1402 1403 1917 1920 1943 952 953 954 1401 1403 1406 1407 1947 1400 1402 1403 1406 1407 1940 1943 1947 1399 1401 1403 1917 1920 1940 1943 1947 950 952 953 954 1370 1371 1372 1399 1400 1401 1402 1406 1407 1917 1920 1940 1943 1947 956 957 958 1405 1407 1410 1411 1951 1404 1406 1407 1410 1411 1944 1947 1951 1400 1401 1403 1405 1407 1944 1947 1951 951 952 953 954 956 957 958 1400 1401 1403 1404 1405 1406 1410 1411 1944 1947 1951 960 961 962 1409 1411 1414 1415 1955 1408 1410 1411 1414 1415 1948 1951 1955 1404 1405 1407 1409 1411 1948 1951 1955 955 956 957 958 960 961 962 1404 1405 1407 1408 1409 1410 1414 1415 1948 1951 1955 964 965 966 1413 1415 1418 1419 1959 1412 1414 1415 1418 1419 1952 1955 1959 1408 1409 1411 1413 1415 1952 1955 1959 959 960 961 962 964 965 966 1408 1409 1411 1412 1413 1414 1418 1419 1952 1955 1959 1349 1367 1368 1417 1419 1898 1899 1963 1416 1418 1419 1898 1899 1956 1959 1963 1412 1413 1415 1417 1419 1956 1959 1963 963 964 965 966 1349 1367 1368 1412 1413 1415 1416 1417 1418 1898 1899 1956 1959 1963 968 1187 1195 1421 1423 1428 1429 1967 1420 1422 1423 1424 1428 1429 1697 1967 1189 1421 1423 1424 1694 1697 1713 1967 968 1187 1188 1189 1195 1196 1420 1421 1422 1424 1428 1429 1694 1697 1707 1709 1713 1967 1421 1422 1423 1425 1697 1966 1967 1971 1424 1600 1695 1697 1701 1966 1967 1971 1056 1057 1058 1427 1429 1530 1531 1975 1426 1428 1429 1530 1531 1964 1967 1975 1420 1421 1423 1427 1429 1964 1967 1975 967 968 1056 1057 1058 1187 1195 1420 1421 1423 1426 1427 1428 1530 1531 1964 1967 1975 1229 1230 1231 1433 1434 1760 1762 1980 974 975 976 1432 1434 1435 1437 1983 1431 1433 1434 1435 1437 1977 1980 1983 1430 1432 1434 1760 1762 1977 1980 1983 969 974 975 976 1229 1230 1231 1430 1431 1432 1433 1435 1437 1760 1762 1977 1980 1983 1431 1432 1434 1436 1437 1983 1984 1987 1435 1437 1438 1439 1441 1983 1984 1987 970 971 972 973 974 975 976 977 978 980 1431 1432 1434 1435 1436 1438 1439 1441 1983 1984 1987 977 978 980 1436 1437 1439 1441 1987 1436 1437 1438 1440 1441 1987 1988 1992 1439 1441 1442 1443 1445 1987 1988 1992 977 978 979 980 1436 1437 1438 1439 1440 1442 1443 1445 1987 1988 1992 978 979 980 1440 1441 1443 1445 1992 1440 1441 1442 1444 1445 1992 1993 1994 1443 1445 1446 1925 1927 1992 1993 1994 978 979 980 981 1377 1378 1379 1440 1441 1442 1443 1444 1446 1925 1927 1992 1993 1994 1377 1378 1379 1444 1445 1925 1927 1994 996 997 998 1448 1450 1465 1466 1999 1447 1449 1450 1451 1454 1465 1466 1999 986 1012 1015 1448 1450 1451 1454 1999 982 983 984 985 986 996 997 998 1012 1015 1447 1448 1449 1451 1454 1465 1466 1999 1448 1449 1450 1452 1454 1998 1999 2003 1451 1453 1454 1533 1536 1998 1999 2003 1059 1452 1454 1488 1491 1533 1536 2003 986 1012 1015 1016 1059 1448 1449 1450 1451 1452 1453 1488 1491 1533 1536 1998 1999 2003 1009 1010 1011 1456 1458 1483 1484 2007 1455 1457 1458 1459 1462 1483 1484 2007 991 992 994 1456 1458 1459 1462 2007 987 988 989 990 991 992 994 1009 1010 1011 1455 1456 1457 1459 1462 1483 1484 2007 1456 1457 1458 1460 1462 2006 2007 2011 1459 1461 1462 1463 1466 2006 2007 2011 995 996 998 1460 1462 1463 1466 2011 991 992 993 994 995 996 998 1456 1457 1458 1459 1460 1461 1463 1466 2006 2007 2011 1460 1461 1462 1464 1466 2010 2011 2015 1463 1465 1466 1996 1999 2010 2011 2015 1447 1448 1450 1464 1466 1996 1999 2015 995 996 997 998 1447 1448 1450 1460 1461 1462 1463 1464 1465 1996 1999 2010 2011 2015 1468 1469 1472 1487 1681 1682 1685 2019 1184 1185 1186 1467 1469 1472 1682 2019 1467 1468 1470 1472 1682 2018 2019 2023 1469 1471 1472 1473 1476 2018 2019 2023 1000 1001 1003 1470 1472 1473 1476 2023 999 1000 1001 1003 1184 1185 1186 1467 1468 1469 1470 1471 1473 1476 1682 2018 2019 2023 1470 1471 1472 1474 1476 2022 2023 2027 1473 1475 1476 1477 1480 2022 2023 2027 1004 1005 1007 1474 1476 1477 1480 2027 1000 1001 1002 1003 1004 1005 1007 1470 1471 1472 1473 1474 1475 1477 1480 2022 2023 2027 1474 1475 1476 1478 1480 2026 2027 2031 1477 1479 1480 1481 1484 2026 2027 2031 1008 1009 1011 1478 1480 1481 1484 2031 1004 1005 1006 1007 1008 1009 1011 1474 1475 1476 1477 1478 1479 1481 1484 2026 2027 2031 1478 1479 1480 1482 1484 2030 2031 2035 1481 1483 1484 2004 2007 2030 2031 2035 1455 1456 1458 1482 1484 2004 2007 2035 1008 1009 1010 1011 1455 1456 1458 1478 1479 1480 1481 1482 1483 2004 2007 2030 2031 2035 1486 1659 1660 1662 1684 1685 1691 2039 1485 1487 1659 1662 1685 2016 2019 2039 1467 1486 1681 1682 1685 2016 2019 2039 1059 1453 1454 1491 1492 1532 1536 2044 1014 1015 1016 1490 1491 1495 1496 2047 1489 1491 1492 1495 1496 2040 2044 2047 1012 1014 1015 1016 1059 1453 1454 1488 1489 1490 1492 1495 1496 1532 1536 2040 2044 2047 1488 1490 1491 1532 1536 2040 2044 2047 1029 1030 1031 1494 1495 1506 1507 2051 1493 1495 1496 1506 1507 2045 2047 2051 1013 1014 1015 1016 1029 1030 1031 1489 1490 1491 1493 1494 1496 1506 1507 2045 2047 2051 1489 1490 1491 1494 1495 2045 2047 2051 1021 1023 1024 1498 1500 1501 1502 2056 1497 1499 1500 1501 1502 1508 1511 2056 1033 1034 1035 1498 1500 1508 1511 2056 1017 1018 1019 1020 1021 1023 1024 1033 1034 1035 1497 1498 1499 1501 1502 1508 1511 2056 1497 1498 1500 1502 1503 1504 1506 2056 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1497 1498 1500 1501 1503 1504 1506 2056 1028 1029 1030 1501 1502 1504 1506 2056 1501 1502 1503 1505 1506 2054 2056 2058 1504 1506 1507 2049 2051 2054 2056 2058 1028 1029 1030 1031 1493 1494 1495 1501 1502 1503 1504 1505 1507 2049 2051 2054 2056 2058 1493 1494 1495 1505 1506 2049 2051 2058 1498 1499 1500 1509 1511 2053 2056 2063 1508 1510 1511 1512 1516 2053 2056 2063 1036 1037 1040 1509 1511 1512 1516 2063 1032 1033 1034 1035 1036 1037 1040 1498 1499 1500 1508 1509 1510 1512 1516 2053 2056 2063 1509 1510 1511 1513 1516 2062 2063 2068 1512 1514 1516 2062 2063 2067 2068 2071 1513 1515 1516 1517 1519 2067 2068 2071 1037 1038 1040 1514 1516 1517 1519 2071 1036 1037 1038 1040 1509 1510 1511 1512 1513 1514 1515 1517 1519 2062 2063 2067 2068 2071 1514 1515 1516 1518 1519 1520 1523 2071 1047 1048 1050 1517 1519 1520 1523 2071 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1050 1514 1515 1516 1517 1518 1520 1523 2071 1517 1518 1519 1521 1523 2070 2071 2075 1520 1522 1523 1524 1527 2070 2071 2075 1051 1052 1054 1521 1523 1524 1527 2075 1047 1048 1049 1050 1051 1052 1054 1517 1518 1519 1520 1521 1522 1524 1527 2070 2071 2075 1521 1522 1523 1525 1527 2074 2075 2079 1524 1526 1527 1528 1531 2074 2075 2079 1055 1056 1058 1525 1527 1528 1531 2079 1051 1052 1053 1054 1055 1056 1058 1521 1522 1523 1524 1525 1526 1528 1531 2074 2075 2079 1525 1526 1527 1529 1531 2078 2079 2083 1528 1530 1531 1972 1975 2078 2079 2083 1426 1427 1429 1529 1531 1972 1975 2083 1055 1056 1057 1058 1426 1427 1429 1525 1526 1527 1528 1529 1530 1972 1975 2078 2079 2083 1488 1491 1492 1535 1536 2042 2044 2087 1452 1453 1454 1534 1536 2002 2003 2092 1533 1535 1536 1537 2002 2003 2087 2092 1532 1534 1536 1537 2042 2044 2087 2092 1059 1452 1453 1454 1488 1491 1492 1532 1533 1534 1535 1537 2002 2003 2042 2044 2087 2092 1534 1535 1536 2085 2087 2091 2092 2096 1092 1093 1095 1540 1541 1572 1573 2100 1064 1066 1067 1540 1541 1542 1545 2100 1538 1539 1541 1542 1545 1572 1573 2100 1060 1061 1062 1063 1064 1066 1067 1092 1093 1095 1538 1539 1540 1542 1545 1572 1573 2100 1539 1540 1541 1544 1545 2098 2100 2104 1068 1070 1071 1544 1545 1546 1549 2104 1542 1543 1545 1546 1549 2098 2100 2104 1064 1065 1066 1067 1068 1070 1071 1539 1540 1541 1542 1543 1544 1546 1549 2098 2100 2104 1543 1544 1545 1548 1549 2102 2104 2108 1072 1074 1075 1548 1549 1550 1553 2108 1546 1547 1549 1550 1553 2102 2104 2108 1068 1069 1070 1071 1072 1074 1075 1543 1544 1545 1546 1547 1548 1550 1553 2102 2104 2108 1547 1548 1549 1552 1553 2106 2108 2112 1076 1078 1079 1552 1553 1554 1557 2112 1550 1551 1553 1554 1557 2106 2108 2112 1072 1073 1074 1075 1076 1078 1079 1547 1548 1549 1550 1551 1552 1554 1557 2106 2108 2112 1551 1552 1553 1556 1557 2110 2112 2116 1276 1277 1278 1556 1557 1800 1802 2116 1554 1555 1557 1800 1802 2110 2112 2116 1076 1077 1078 1079 1276 1277 1278 1551 1552 1553 1554 1555 1556 1800 1802 2110 2112 2116 1085 1086 1087 1559 1560 1564 1565 2119 1558 1560 1561 1564 1565 1566 1568 2119 1080 1081 1082 1083 1085 1086 1087 1088 1089 1090 1558 1559 1561 1564 1565 1566 1568 2119 1088 1089 1090 1559 1560 1566 1568 2119 1108 1109 1110 1563 1564 1583 1584 2123 1562 1564 1565 1583 1584 2117 2119 2123 1084 1085 1086 1087 1108 1109 1110 1558 1559 1560 1562 1563 1565 1583 1584 2117 2119 2123 1558 1559 1560 1563 1564 2117 2119 2123 1559 1560 1561 1567 1568 2119 2120 2127 1566 1568 1569 1570 1572 2119 2120 2127 1088 1089 1090 1091 1093 1094 1095 1559 1560 1561 1566 1567 1569 1570 1572 2119 2120 2127 1093 1094 1095 1567 1568 1570 1572 2127 1567 1568 1569 1571 1572 2127 2128 2132 1570 1572 1573 2097 2100 2127 2128 2132 1092 1093 1094 1095 1538 1540 1541 1567 1568 1569 1570 1571 1573 2097 2100 2127 2128 2132 1538 1540 1541 1571 1572 2097 2100 2132 1111 1114 1115 1575 1576 1585 1588 2135 1574 1576 1577 1578 1580 1585 1588 2135 1096 1097 1098 1099 1100 1101 1102 1111 1114 1115 1574 1575 1577 1578 1580 1585 1588 2135 1100 1101 1102 1575 1576 1578 1580 2135 1575 1576 1577 1579 1580 2135 2136 2138 1578 1580 1581 1582 1583 2135 2136 2138 1100 1101 1102 1103 1104 1105 1106 1575 1576 1577 1578 1579 1581 1582 1583 2135 2136 2138 1104 1105 1106 1579 1580 1582 1583 2138 1579 1580 1581 1583 1584 2121 2123 2138 1104 1105 1106 1107 1108 1109 1110 1562 1563 1564 1579 1580 1581 1582 1584 2121 2123 2138 1562 1563 1564 1582 1583 2121 2123 2138 1574 1575 1576 1588 1589 2133 2135 2144 1113 1114 1115 1587 1588 1590 1592 2148 1586 1588 1589 1590 1592 2143 2144 2148 1111 1113 1114 1115 1574 1575 1576 1585 1586 1587 1589 1590 1592 2133 2135 2143 2144 2148 1585 1587 1588 2133 2135 2143 2144 2148 1586 1587 1588 1592 1593 2147 2148 2152 1116 1118 1119 1592 1593 1594 1597 2152 1112 1113 1114 1115 1116 1118 1119 1586 1587 1588 1590 1591 1593 1594 1597 2147 2148 2152 1590 1591 1592 1594 1597 2147 2148 2152 1591 1592 1593 1595 1597 2151 2152 2156 1594 1596 1597 1844 1848 2151 2152 2156 1314 1315 1319 1595 1597 1844 1848 2156 1116 1117 1118 1119 1314 1315 1319 1591 1592 1593 1594 1595 1596 1844 1848 2151 2152 2156 1154 1155 1157 1599 1602 1604 1645 2164 1598 1602 1604 1641 1645 2161 2162 2164 1425 1601 1695 1697 1701 1970 1971 2176 1600 1699 1701 1970 1971 2166 2169 2176 1598 1599 1604 1605 1645 2163 2164 2180 1121 1154 1157 1158 1159 1604 1605 1607 1608 2179 2180 2183 1121 1154 1155 1157 1158 1159 1598 1599 1602 1603 1605 1607 1608 1645 2163 2164 2179 2180 2183 1602 1603 1604 1607 1608 2163 2164 2179 2180 2183 1120 1121 1123 1124 1159 1607 1608 1610 1611 2182 2183 2186 1120 1121 1123 1124 1154 1157 1158 1159 1603 1604 1605 1606 1608 1610 1611 2179 2180 2182 2183 2186 1603 1604 1605 1606 1607 1610 1611 2179 2180 2182 2183 2186 1122 1123 1124 1126 1127 1610 1611 1613 1614 2185 2186 2189 1120 1121 1122 1123 1124 1126 1127 1159 1606 1607 1608 1609 1611 1613 1614 2182 2183 2185 2186 2189 1606 1607 1608 1609 1610 1613 1614 2182 2183 2185 2186 2189 1125 1126 1127 1129 1130 1613 1614 1616 1617 2188 2189 2192 1122 1123 1124 1125 1126 1127 1129 1130 1609 1610 1611 1612 1614 1616 1617 2185 2186 2188 2189 2192 1609 1610 1611 1612 1613 1616 1617 2185 2186 2188 2189 2192 1128 1129 1130 1132 1133 1616 1617 1619 1620 2191 2192 2195 1125 1126 1127 1128 1129 1130 1132 1133 1612 1613 1614 1615 1617 1619 1620 2188 2189 2191 2192 2195 1612 1613 1614 1615 1616 1619 1620 2188 2189 2191 2192 2195 1131 1132 1133 1135 1136 1619 1620 1622 1623 2194 2195 2198 1128 1129 1130 1131 1132 1133 1135 1136 1615 1616 1617 1618 1620 1622 1623 2191 2192 2194 2195 2198 1615 1616 1617 1618 1619 1622 1623 2191 2192 2194 2195 2198 1134 1135 1136 1138 1139 1622 1623 1625 1626 2197 2198 2201 1131 1132 1133 1134 1135 1136 1138 1139 1618 1619 1620 1621 1623 1625 1626 2194 2195 2197 2198 2201 1618 1619 1620 1621 1622 1625 1626 2194 2195 2197 2198 2201 1137 1138 1139 1141 1142 1625 1626 1628 1629 2200 2201 2204 1134 1135 1136 1137 1138 1139 1141 1142 1621 1622 1623 1624 1626 1628 1629 2197 2198 2200 2201 2204 1621 1622 1623 1624 1625 1628 1629 2197 2198 2200 2201 2204 1140 1141 1142 1144 1145 1628 1629 1631 1632 2203 2204 2207 1137 1138 1139 1140 1141 1142 1144 1145 1624 1625 1626 1627 1629 1631 1632 2200 2201 2203 2204 2207 1624 1625 1626 1627 1628 1631 1632 2200 2201 2203 2204 2207 1143 1144 1145 1147 1148 1631 1632 1634 1635 2206 2207 2210 1140 1141 1142 1143 1144 1145 1147 1148 1627 1628 1629 1630 1632 1634 1635 2203 2204 2206 2207 2210 1627 1628 1629 1630 1631 1634 1635 2203 2204 2206 2207 2210 1146 1147 1148 1152 1153 1634 1635 1639 1640 2209 2210 2215 1143 1144 1145 1146 1147 1148 1152 1153 1630 1631 1632 1633 1635 1639 1640 2206 2207 2209 2210 2215 1630 1631 1632 1633 1634 1639 1640 2206 2207 2209 2210 2215 1637 1638 1639 1640 2213 2214 2215 1149 1150 1151 1152 1153 1636 1638 1639 1640 2213 2214 2215 1149 1150 1151 1152 1153 1636 1637 1639 1640 2213 2214 2215 1146 1147 1148 1149 1150 1151 1152 1153 1633 1634 1635 1636 1637 1638 1640 2209 2210 2213 2214 2215 1633 1634 1635 1636 1637 1638 1639 2209 2210 2213 2214 2215 1599 1642 1645 1693 2161 2162 2164 2221 1641 1644 1645 1693 2162 2219 2221 2223 1155 1156 1157 1644 1645 1646 1647 2223 1642 1643 1645 1646 1647 2219 2221 2223 1154 1155 1156 1157 1598 1599 1602 1604 1641 1642 1643 1644 1646 1647 1693 2161 2162 2164 2219 2221 2223 1643 1644 1645 1647 1648 1649 1652 2223 1155 1156 1157 1158 1159 1160 1161 1162 1163 1643 1644 1645 1646 1648 1649 1652 1653 1654 2223 1161 1162 1163 1646 1647 1649 1652 1653 1654 2223 1646 1647 1648 1650 1652 2223 2224 2229 1649 1651 1652 2223 2224 2227 2229 2231 1650 1652 1653 1654 1655 1656 1657 2227 2229 2231 1161 1162 1163 1646 1647 1648 1649 1650 1651 1653 1654 1655 1656 1657 2223 2224 2227 2229 2231 1161 1162 1163 1647 1648 1651 1652 1654 1655 1656 1657 2231 1161 1162 1163 1164 1165 1166 1167 1168 1169 1281 1283 1647 1648 1651 1652 1653 1655 1656 1657 2231 1167 1168 1169 1281 1283 1651 1652 1653 1654 1656 1657 2231 1651 1652 1653 1654 1655 1657 1658 1808 1810 2231 2232 2235 1167 1168 1169 1281 1282 1283 1651 1652 1653 1654 1655 1656 1658 1808 1809 1810 1813 2231 2232 2235 1281 1282 1283 1656 1657 1808 1809 1810 1813 2231 2232 2235 1485 1486 1661 1662 1685 2036 2039 2247 1485 1662 1663 1684 1685 1690 1691 2250 1659 1662 1663 2036 2039 2243 2247 2250 1485 1486 1659 1660 1661 1663 1684 1685 1690 1691 2036 2039 2243 2247 2250 1660 1661 1662 1690 1691 2243 2247 2250 1223 1224 1225 1665 1667 1748 1749 2255 1664 1666 1667 1668 1672 1748 1749 2255 1174 1175 1178 1665 1667 1668 1672 2255 1170 1171 1172 1173 1174 1175 1178 1223 1224 1225 1664 1665 1666 1668 1672 1748 1749 2255 1665 1666 1667 1669 1672 2254 2255 2260 1668 1670 1672 2254 2255 2259 2260 2264 1669 1671 1672 1673 1676 2259 2260 2264 1175 1176 1178 1670 1672 1673 1676 2264 1174 1175 1176 1178 1665 1666 1667 1668 1669 1670 1671 1673 1676 2254 2255 2259 2260 2264 1670 1671 1672 1674 1676 2263 2264 2268 1673 1675 1676 1677 1680 2263 2264 2268 1179 1180 1182 1674 1676 1677 1680 2268 1175 1176 1177 1178 1179 1180 1182 1670 1671 1672 1673 1674 1675 1677 1680 2263 2264 2268 1674 1675 1676 1678 1680 2267 2268 2271 1677 1679 1680 1682 1683 2267 2268 2271 1183 1184 1186 1678 1680 1682 1683 2271 1179 1180 1181 1182 1183 1184 1186 1674 1675 1676 1677 1678 1679 1682 1683 2267 2268 2271 1467 1487 1682 1683 1685 1686 2019 2271 1183 1184 1185 1186 1467 1468 1469 1472 1487 1678 1679 1680 1681 1683 1685 1686 2019 2271 1678 1679 1680 1681 1682 1685 1686 2271 1485 1660 1662 1685 1686 1687 1691 2271 1467 1485 1486 1487 1659 1660 1662 1681 1682 1683 1684 1686 1687 1691 2016 2019 2039 2271 1681 1682 1683 1684 1685 1687 1691 2271 1684 1685 1686 1688 1691 2270 2271 2275 1687 1689 1691 2270 2271 2274 2275 2279 1688 1690 1691 2248 2250 2274 2275 2279 1660 1662 1663 1689 1691 2248 2250 2279 1485 1660 1662 1663 1684 1685 1686 1687 1688 1689 1690 2248 2250 2270 2271 2274 2275 2279 1693 1705 2158 2162 2171 2217 2221 2282 1641 1642 1645 1692 2162 2217 2221 2282 1189 1422 1423 1696 1697 1711 1713 2287 1425 1600 1696 1697 1698 1701 1971 2287 1694 1695 1697 1698 1701 1711 1713 2287 1189 1421 1422 1423 1424 1425 1600 1694 1695 1696 1698 1701 1711 1713 1966 1967 1971 2287 1695 1696 1697 1700 1701 2285 2287 2291 1601 1700 1701 1702 2166 2169 2176 2291 1698 1699 1701 1702 2169 2285 2287 2291 1425 1600 1601 1695 1696 1697 1698 1699 1700 1702 1970 1971 2166 2169 2176 2285 2287 2291 1699 1700 1701 1703 2169 2289 2291 2293 1702 1704 2168 2169 2171 2289 2291 2293 1703 1705 2168 2169 2171 2280 2282 2293 1692 1704 2158 2162 2171 2280 2282 2293 1197 1708 1709 1714 1716 1718 1722 2298 1188 1189 1423 1708 1709 1710 1713 2298 1706 1707 1709 1710 1713 1714 1718 2298 1187 1188 1189 1194 1195 1196 1197 1423 1706 1707 1708 1710 1713 1714 1716 1718 1722 2298 1707 1708 1709 1712 1713 2295 2298 2302 1694 1696 1697 1712 1713 2284 2287 2302 1710 1711 1713 2284 2287 2295 2298 2302 1188 1189 1422 1423 1694 1696 1697 1707 1708 1709 1710 1711 1712 2284 2287 2295 2298 2302 1706 1708 1709 1715 1718 2297 2298 2307 1714 1718 1719 2297 2298 2306 2307 2311 1197 1706 1709 1717 1718 1720 1722 2315 1716 1718 1719 1720 1722 2310 2311 2315 1197 1706 1708 1709 1714 1715 1716 1717 1719 1720 1722 2297 2298 2306 2307 2310 2311 2315 1715 1717 1718 2306 2307 2310 2311 2315 1716 1717 1718 1721 1722 1723 1726 2315 1198 1204 1205 1720 1722 1723 1726 2315 1190 1191 1192 1193 1194 1195 1196 1197 1198 1204 1205 1706 1709 1716 1717 1718 1720 1721 1723 1726 2315 1720 1721 1722 1724 1726 2314 2315 2318 1723 1725 1726 1727 1729 2314 2315 2318 1203 1204 1205 1724 1726 1727 1729 2318 1198 1203 1204 1205 1720 1721 1722 1723 1724 1725 1727 1729 2314 2315 2318 1724 1725 1726 1728 1729 1730 1734 2318 1206 1207 1210 1727 1729 1730 1734 2318 1199 1200 1201 1202 1203 1204 1205 1206 1207 1210 1724 1725 1726 1727 1728 1730 1734 2318 1727 1728 1729 1731 1734 2317 2318 2323 1730 1732 1734 2317 2318 2322 2323 2326 1731 1733 1734 1735 1737 2322 2323 2326 1207 1208 1210 1732 1734 1735 1737 2326 1206 1207 1208 1210 1727 1728 1729 1730 1731 1732 1733 1735 1737 2317 2318 2322 2323 2326 1732 1733 1734 1736 1737 1738 1742 2326 1214 1215 1218 1735 1737 1738 1742 2326 1207 1208 1209 1210 1211 1212 1213 1214 1215 1218 1732 1733 1734 1735 1736 1738 1742 2326 1735 1736 1737 1739 1742 2325 2326 2331 1738 1740 1742 2325 2326 2330 2331 2335 1739 1741 1742 1743 1746 2330 2331 2335 1215 1216 1218 1740 1742 1743 1746 2335 1214 1215 1216 1218 1735 1736 1737 1738 1739 1740 1741 1743 1746 2325 2326 2330 2331 2335 1740 1741 1742 1744 1746 2334 2335 2338 1743 1745 1746 1747 1749 2334 2335 2338 1219 1220 1222 1744 1746 1747 1749 2338 1215 1216 1217 1218 1219 1220 1222 1740 1741 1742 1743 1744 1745 1747 1749 2334 2335 2338 1744 1745 1746 1748 1749 2252 2255 2338 1664 1665 1667 1747 1749 2252 2255 2338 1219 1220 1221 1222 1223 1224 1225 1664 1665 1667 1744 1745 1746 1747 1748 2252 2255 2338 1227 1228 1231 1751 1753 1754 1757 2342 1750 1752 1753 1754 1757 1788 1791 2342 1261 1263 1264 1751 1753 1788 1791 2342 1226 1227 1228 1231 1261 1263 1264 1750 1751 1752 1754 1757 1788 1791 2342 1750 1751 1753 1756 1757 2340 2342 2346 1228 1230 1231 1757 1758 1759 1762 2350 1754 1757 1758 2340 2342 2346 2347 2350 1227 1228 1230 1231 1750 1751 1753 1754 1755 1756 1758 1759 1762 2340 2342 2346 2347 2350 1755 1756 1757 1759 1762 2346 2347 2350 1755 1757 1758 1761 1762 2350 2351 2353 1430 1433 1434 1761 1762 1763 1980 2353 1759 1760 1762 1763 1980 2350 2351 2353 1228 1229 1230 1231 1430 1433 1434 1755 1757 1758 1759 1760 1761 1763 1980 2350 2351 2353 1760 1761 1762 1979 1980 2237 2241 2353 1255 1256 1257 1765 1766 1782 1784 2357 1764 1766 1767 1768 1769 1782 1784 2357 1232 1233 1234 1235 1237 1238 1239 1255 1256 1257 1764 1765 1767 1768 1769 1782 1784 2357 1237 1238 1239 1765 1766 1768 1769 2357 1236 1237 1238 1239 1240 1241 1242 1243 1244 1765 1766 1767 1769 2357 1765 1766 1767 1768 2357 1275 1278 1279 1771 1774 1795 1797 2361 1770 1773 1774 1795 1797 2361 2362 2364 1250 1251 1254 1776 1777 1778 1780 2364 1771 1774 1775 1776 1777 2361 2362 2364 1245 1246 1247 1248 1275 1278 1279 1770 1771 1773 1775 1776 1777 1795 1797 2361 2362 2364 1246 1247 1248 1773 1774 1776 1777 2364 1246 1247 1248 1249 1250 1251 1254 1772 1773 1774 1775 1777 1778 1780 2364 1772 1773 1774 1775 1776 1778 1780 2364 1772 1776 1777 1779 1780 2364 2365 2368 1778 1780 1781 1783 1784 2364 2365 2368 1250 1251 1253 1254 1772 1776 1777 1778 1779 1781 1783 1784 2364 2365 2368 1251 1253 1254 1779 1780 1783 1784 2368 1764 1765 1766 1783 1784 2356 2357 2368 1779 1780 1781 1782 1784 2356 2357 2368 1251 1252 1253 1254 1255 1256 1257 1764 1765 1766 1779 1780 1781 1782 1783 2356 2357 2368 1786 1787 1792 1793 2372 1258 1259 1260 1272 1273 1274 1785 1787 1792 1793 2372 1272 1273 1274 1785 1786 1792 1793 2372 1751 1752 1753 1789 1791 2339 2342 2374 1788 1790 1791 1793 1794 2339 2342 2374 1265 1266 1268 1789 1791 1793 1794 2374 1261 1262 1263 1264 1265 1266 1268 1751 1752 1753 1788 1789 1790 1793 1794 2339 2342 2374 1785 1786 1787 1793 1794 2372 2373 2374 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1785 1786 1787 1789 1790 1791 1792 1794 2372 2373 2374 1789 1790 1791 1792 1793 2372 2373 2374 1770 1771 1774 1797 1798 2355 2361 2378 1280 1797 1798 1799 1802 1803 1806 2378 1275 1277 1278 1279 1280 1770 1771 1774 1795 1796 1798 1799 1802 1803 1806 2355 2361 2378 1795 1796 1797 1799 1806 2355 2361 2378 1796 1797 1798 1804 1806 2375 2378 2382 1555 1556 1557 1801 1802 2114 2116 2386 1800 1802 1803 1805 1806 2114 2116 2386 1276 1277 1278 1279 1280 1555 1556 1557 1796 1797 1800 1801 1803 1805 1806 2114 2116 2386 1280 1796 1797 1801 1802 1805 1806 2386 1799 1806 1807 2375 2378 2381 2382 2390 1801 1802 1803 1806 1807 2386 2387 2390 1280 1796 1797 1798 1799 1801 1802 1803 1804 1805 1807 2375 2378 2381 2382 2386 2387 2390 1804 1805 1806 2381 2382 2386 2387 2390 1656 1657 1658 1810 1811 2231 2232 2235 2236 2393 2394 2397 1281 1282 1283 1657 1658 1810 1811 1813 1814 2396 2397 2400 1281 1282 1283 1656 1657 1658 1808 1809 1811 1813 1814 2231 2232 2235 2236 2393 2394 2396 2397 2400 1808 1809 1810 1813 1814 2235 2236 2393 2394 2396 2397 2400 1282 1283 1284 1285 1286 1813 1814 1816 1817 2399 2400 2403 1281 1282 1283 1284 1285 1286 1657 1658 1809 1810 1811 1812 1814 1816 1817 2396 2397 2399 2400 2403 1809 1810 1811 1812 1813 1816 1817 2396 2397 2399 2400 2403 1285 1286 1287 1288 1289 1816 1817 1819 1820 2402 2403 2406 1282 1283 1284 1285 1286 1287 1288 1289 1812 1813 1814 1815 1817 1819 1820 2399 2400 2402 2403 2406 1812 1813 1814 1815 1816 1819 1820 2399 2400 2402 2403 2406 1288 1289 1290 1291 1292 1819 1820 1822 1823 2405 2406 2409 1285 1286 1287 1288 1289 1290 1291 1292 1815 1816 1817 1818 1820 1822 1823 2402 2403 2405 2406 2409 1815 1816 1817 1818 1819 1822 1823 2402 2403 2405 2406 2409 1291 1292 1293 1294 1295 1822 1823 1825 1826 2408 2409 2412 1288 1289 1290 1291 1292 1293 1294 1295 1818 1819 1820 1821 1823 1825 1826 2405 2406 2408 2409 2412 1818 1819 1820 1821 1822 1825 1826 2405 2406 2408 2409 2412 1294 1295 1296 1297 1298 1825 1826 1828 1829 2411 2412 2415 1291 1292 1293 1294 1295 1296 1297 1298 1821 1822 1823 1824 1826 1828 1829 2408 2409 2411 2412 2415 1821 1822 1823 1824 1825 1828 1829 2408 2409 2411 2412 2415 1297 1298 1299 1300 1301 1828 1829 1831 1832 2414 2415 2418 1294 1295 1296 1297 1298 1299 1300 1301 1824 1825 1826 1827 1829 1831 1832 2411 2412 2414 2415 2418 1824 1825 1826 1827 1828 1831 1832 2411 2412 2414 2415 2418 1300 1301 1302 1303 1304 1831 1832 1834 1835 2417 2418 2421 1297 1298 1299 1300 1301 1302 1303 1304 1827 1828 1829 1830 1832 1834 1835 2414 2415 2417 2418 2421 1827 1828 1829 1830 1831 1834 1835 2414 2415 2417 2418 2421 1303 1304 1305 1306 1307 1834 1835 1837 1838 2420 2421 2424 1300 1301 1302 1303 1304 1305 1306 1307 1830 1831 1832 1833 1835 1837 1838 2417 2418 2420 2421 2424 1830 1831 1832 1833 1834 1837 1838 2417 2418 2420 2421 2424 1306 1307 1308 1310 1311 1837 1838 1842 1843 2423 2424 2429 1303 1304 1305 1306 1307 1308 1310 1311 1833 1834 1835 1836 1838 1842 1843 2420 2421 2423 2424 2429 1833 1834 1835 1836 1837 1842 1843 2420 2421 2423 2424 2429 1840 1841 1842 1843 2427 2428 2429 1309 1310 1311 1312 1313 1839 1841 1842 1843 2427 2428 2429 1309 1310 1311 1312 1313 1839 1840 1842 1843 2427 2428 2429 1306 1307 1308 1309 1310 1311 1312 1313 1836 1837 1838 1839 1840 1841 1843 2423 2424 2427 2428 2429 1836 1837 1838 1839 1840 1841 1842 2423 2424 2427 2428 2429 1595 1596 1597 1845 1848 2155 2156 2434 1844 1846 1848 2155 2156 2433 2434 2438 1845 1847 1848 1849 1853 2433 2434 2438 1315 1316 1319 1846 1848 1849 1853 2438 1314 1315 1316 1319 1595 1596 1597 1844 1845 1846 1847 1849 1853 2155 2156 2433 2434 2438 1846 1847 1848 1850 1853 2437 2438 2442 1849 1851 1853 2437 2438 2441 2442 2445 1850 1852 1853 1858 1859 2441 2442 2445 1316 1317 1319 1851 1853 1858 1859 2445 1315 1316 1317 1319 1846 1847 1848 1849 1850 1851 1852 1858 1859 2437 2438 2441 2442 2445 1327 1328 1855 1856 1860 1862 1874 2445 1854 1856 1857 1858 1859 1860 1862 2445 1320 1327 1328 1329 1330 1332 1854 1855 1857 1858 1859 1860 1862 1874 2445 1320 1329 1332 1855 1856 1858 1859 2445 1316 1317 1318 1319 1320 1321 1322 1323 1329 1332 1851 1852 1853 1855 1856 1857 1859 2445 1851 1852 1853 1855 1856 1857 1858 2445 1854 1855 1856 1862 1863 2444 2445 2449 1327 1862 1863 1864 1868 1869 1874 2449 1327 1328 1854 1855 1856 1860 1861 1863 1864 1868 1869 1874 2444 2445 2449 1860 1861 1862 1864 1869 2444 2445 2449 1861 1862 1863 1865 1869 2448 2449 2453 1864 1866 1869 2448 2449 2452 2453 2457 1865 1867 1869 2452 2453 2456 2457 2460 1866 1868 1869 1870 1874 2456 2457 2460 1327 1861 1862 1867 1869 1870 1874 2460 1327 1861 1862 1863 1864 1865 1866 1867 1868 1870 1874 2448 2449 2452 2453 2456 2457 2460 1867 1868 1869 1871 1872 1873 1874 2460 1870 1872 1873 1874 2460 1324 1325 1326 1333 1334 1335 1870 1871 1873 1874 2460 1333 1334 1335 1870 1871 1872 1874 2460 1327 1328 1329 1330 1331 1332 1333 1334 1335 1854 1856 1861 1862 1867 1868 1869 1870 1871 1872 1873 2460 1351 1352 1353 1877 1878 1900 1903 2465 1340 1341 1344 1877 1878 1879 1887 2465 1875 1876 1878 1879 1887 1900 1903 2465 1336 1337 1338 1339 1340 1341 1344 1351 1352 1353 1875 1876 1877 1879 1887 1900 1903 2465 1876 1877 1878 1880 1886 1887 2465 2473 1879 1886 1887 2462 2465 2469 2470 2473 1348 1883 1884 1888 1889 1890 1893 2476 1341 1342 1344 1883 1884 1885 1887 2476 1341 1342 1343 1344 1348 1881 1882 1884 1885 1887 1888 1889 1890 1893 2476 1881 1882 1883 1885 1887 1888 1893 2476 1882 1883 1884 1886 1887 2473 2474 2476 1879 1880 1885 1887 2465 2473 2474 2476 1340 1341 1342 1344 1876 1877 1878 1879 1880 1882 1883 1884 1885 1886 2465 2473 2474 2476 1881 1883 1884 1892 1893 2476 2477 2479 1348 1881 1883 1890 1891 1893 1894 2481 1342 1343 1344 1345 1346 1347 1348 1881 1883 1889 1891 1893 1894 2481 1889 1890 1893 1894 2481 1888 1893 1894 2476 2477 2479 2480 2481 1348 1881 1883 1884 1888 1889 1890 1891 1892 1894 2476 2477 2479 2480 2481 1889 1890 1891 1892 1893 2479 2480 2481 1366 1367 1368 1896 1899 1913 1914 2487 1895 1897 1899 1913 1914 2486 2487 2490 1896 1898 1899 1960 1963 2486 2487 2490 1416 1417 1419 1897 1899 1960 1963 2490 1349 1366 1367 1368 1416 1417 1419 1895 1896 1897 1898 1913 1914 1960 1963 2486 2487 2490 1875 1877 1878 1901 1903 2464 2465 2495 1900 1902 1903 1904 1907 2464 2465 2495 1354 1355 1357 1901 1903 1904 1907 2495 1350 1351 1352 1353 1354 1355 1357 1875 1877 1878 1900 1901 1902 1904 1907 2464 2465 2495 1901 1902 1903 1905 1907 2494 2495 2498 1904 1906 1907 1908 1911 2494 2495 2498 1358 1359 1361 1905 1907 1908 1911 2498 1354 1355 1356 1357 1358 1359 1361 1901 1902 1903 1904 1905 1906 1908 1911 2494 2495 2498 1905 1906 1907 1909 1911 2497 2498 2501 1908 1910 1911 1912 1914 2497 2498 2501 1362 1363 1365 1909 1911 1912 1914 2501 1358 1359 1360 1361 1362 1363 1365 1905 1906 1907 1908 1909 1910 1912 1914 2497 2498 2501 1909 1910 1911 1913 1914 1915 2487 2501 1895 1896 1899 1912 1914 1915 2487 2501 1362 1363 1364 1365 1366 1367 1368 1895 1896 1899 1909 1910 1911 1912 1913 1915 2487 2501 1912 1913 1914 2484 2487 2500 2501 2503 1381 1382 1384 1921 1922 1924 1932 2508 1399 1402 1403 1918 1920 1939 1943 2510 1917 1919 1920 1922 1923 1939 1943 2510 1374 1375 1376 1918 1920 1922 1923 2510 1369 1370 1371 1372 1374 1375 1376 1399 1402 1403 1917 1918 1919 1922 1923 1939 1943 2510 1916 1922 1923 1924 1932 2505 2508 2510 1373 1374 1375 1376 1381 1382 1384 1916 1918 1919 1920 1921 1923 1924 1932 2505 2508 2510 1918 1919 1920 1921 1922 2505 2508 2510 1916 1921 1922 1929 1932 2507 2508 2515 1444 1445 1446 1926 1927 1976 1994 2518 1925 1927 1928 1933 1935 1976 1994 2518 1377 1378 1379 1380 1385 1386 1387 1444 1445 1446 1925 1926 1928 1933 1935 1976 1994 2518 1385 1386 1387 1926 1927 1933 1935 2518 1924 1930 1932 2507 2508 2514 2515 2520 1929 1931 1932 1937 1938 2514 2515 2520 1389 1390 1392 1930 1932 1937 1938 2520 1381 1382 1383 1384 1389 1390 1392 1916 1921 1922 1924 1929 1930 1931 1937 1938 2507 2508 2514 2515 2520 1926 1927 1928 1934 1935 2518 2519 2520 1933 1935 1936 1937 1938 2518 2519 2520 1385 1386 1387 1388 1393 1394 1395 1926 1927 1928 1933 1934 1936 1937 1938 2518 2519 2520 1393 1394 1395 1934 1935 1937 1938 2520 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1930 1931 1932 1934 1935 1936 1938 2520 1930 1931 1932 1934 1935 1936 1937 2520 1917 1918 1920 1942 1943 2510 2511 2526 1401 1402 1403 1941 1943 1946 1947 2530 1940 1942 1943 1946 1947 2523 2526 2530 1939 1941 1943 2510 2511 2523 2526 2530 1399 1401 1402 1403 1917 1918 1920 1939 1940 1941 1942 1946 1947 2510 2511 2523 2526 2530 1405 1406 1407 1945 1947 1950 1951 2534 1944 1946 1947 1950 1951 2527 2530 2534 1940 1941 1943 1945 1947 2527 2530 2534 1400 1401 1402 1403 1405 1406 1407 1940 1941 1943 1944 1945 1946 1950 1951 2527 2530 2534 1409 1410 1411 1949 1951 1954 1955 2538 1948 1950 1951 1954 1955 2531 2534 2538 1944 1945 1947 1949 1951 2531 2534 2538 1404 1405 1406 1407 1409 1410 1411 1944 1945 1947 1948 1949 1950 1954 1955 2531 2534 2538 1413 1414 1415 1953 1955 1958 1959 2542 1952 1954 1955 1958 1959 2535 2538 2542 1948 1949 1951 1953 1955 2535 2538 2542 1408 1409 1410 1411 1413 1414 1415 1948 1949 1951 1952 1953 1954 1958 1959 2535 2538 2542 1417 1418 1419 1957 1959 1962 1963 2546 1956 1958 1959 1962 1963 2539 2542 2546 1952 1953 1955 1957 1959 2539 2542 2546 1412 1413 1414 1415 1417 1418 1419 1952 1953 1955 1956 1957 1958 1962 1963 2539 2542 2546 1897 1898 1899 1961 1963 2483 2490 2550 1960 1962 1963 2483 2490 2543 2546 2550 1956 1957 1959 1961 1963 2543 2546 2550 1416 1417 1418 1419 1897 1898 1899 1956 1957 1959 1960 1961 1962 2483 2490 2543 2546 2550 1427 1428 1429 1965 1967 1974 1975 2554 1964 1966 1967 1968 1971 1974 1975 2554 1424 1425 1697 1965 1967 1968 1971 2554 1420 1421 1422 1423 1424 1425 1427 1428 1429 1697 1964 1965 1966 1968 1971 1974 1975 2554 1965 1966 1967 1969 1971 2553 2554 2558 1968 1970 1971 2173 2176 2553 2554 2558 1600 1601 1701 1969 1971 2173 2176 2558 1424 1425 1600 1601 1695 1697 1701 1965 1966 1967 1968 1969 1970 2173 2176 2553 2554 2558 1529 1530 1531 1973 1975 2082 2083 2562 1972 1974 1975 2082 2083 2551 2554 2562 1964 1965 1967 1973 1975 2551 2554 2562 1426 1427 1428 1429 1529 1530 1531 1964 1965 1967 1972 1973 1974 2082 2083 2551 2554 2562 1925 1926 1927 1989 1994 2516 2518 2566 1432 1433 1434 1978 1980 1981 1983 2571 1977 1979 1980 1981 1983 2239 2241 2571 1763 1978 1980 2237 2239 2241 2353 2571 1430 1432 1433 1434 1760 1761 1762 1763 1977 1978 1979 1981 1983 2237 2239 2241 2353 2571 1977 1978 1980 1982 1983 2571 2572 2575 1981 1983 1984 1985 1987 2571 2572 2575 1431 1432 1433 1434 1435 1436 1437 1977 1978 1980 1981 1982 1984 1985 1987 2571 2572 2575 1435 1436 1437 1982 1983 1985 1987 2575 1982 1983 1984 1986 1987 2575 2576 2580 1985 1987 1988 1990 1992 2575 2576 2580 1435 1436 1437 1438 1439 1440 1441 1982 1983 1984 1985 1986 1988 1990 1992 2575 2576 2580 1439 1440 1441 1986 1987 1990 1992 2580 1976 1994 1995 2516 2518 2565 2566 2582 1986 1987 1988 1991 1992 2580 2581 2582 1990 1992 1993 1994 1995 2580 2581 2582 1439 1440 1441 1442 1443 1444 1445 1986 1987 1988 1990 1991 1993 1994 1995 2580 2581 2582 1443 1444 1445 1991 1992 1994 1995 2582 1443 1444 1445 1446 1925 1926 1927 1976 1989 1991 1992 1993 1995 2516 2518 2565 2566 2582 1989 1991 1992 1993 1994 2565 2566 2582 1464 1465 1466 1997 1999 2014 2015 2587 1996 1998 1999 2000 2003 2014 2015 2587 1451 1452 1454 1997 1999 2000 2003 2587 1447 1448 1449 1450 1451 1452 1454 1464 1465 1466 1996 1997 1998 2000 2003 2014 2015 2587 1997 1998 1999 2001 2003 2586 2587 2591 2000 2002 2003 2089 2092 2586 2587 2591 1533 1534 1536 2001 2003 2089 2092 2591 1451 1452 1453 1454 1533 1534 1536 1997 1998 1999 2000 2001 2002 2089 2092 2586 2587 2591 1482 1483 1484 2005 2007 2034 2035 2595 2004 2006 2007 2008 2011 2034 2035 2595 1459 1460 1462 2005 2007 2008 2011 2595 1455 1456 1457 1458 1459 1460 1462 1482 1483 1484 2004 2005 2006 2008 2011 2034 2035 2595 2005 2006 2007 2009 2011 2594 2595 2599 2008 2010 2011 2012 2015 2594 2595 2599 1463 1464 1466 2009 2011 2012 2015 2599 1459 1460 1461 1462 1463 1464 1466 2005 2006 2007 2008 2009 2010 2012 2015 2594 2595 2599 2009 2010 2011 2013 2015 2598 2599 2603 2012 2014 2015 2584 2587 2598 2599 2603 1996 1997 1999 2013 2015 2584 2587 2603 1463 1464 1465 1466 1996 1997 1999 2009 2010 2011 2012 2013 2014 2584 2587 2598 2599 2603 1486 1487 1685 2017 2019 2038 2039 2607 2016 2018 2019 2020 2023 2038 2039 2607 1469 1470 1472 2017 2019 2020 2023 2607 1467 1468 1469 1470 1472 1486 1487 1681 1682 1685 2016 2017 2018 2020 2023 2038 2039 2607 2017 2018 2019 2021 2023 2606 2607 2611 2020 2022 2023 2024 2027 2606 2607 2611 1473 1474 1476 2021 2023 2024 2027 2611 1469 1470 1471 1472 1473 1474 1476 2017 2018 2019 2020 2021 2022 2024 2027 2606 2607 2611 2021 2022 2023 2025 2027 2610 2611 2614 2024 2026 2027 2028 2031 2610 2611 2614 1477 1478 1480 2025 2027 2028 2031 2614 1473 1474 1475 1476 1477 1478 1480 2021 2022 2023 2024 2025 2026 2028 2031 2610 2611 2614 2025 2026 2027 2029 2031 2613 2614 2618 2028 2030 2031 2032 2035 2613 2614 2618 1481 1482 1484 2029 2031 2032 2035 2618 1477 1478 1479 1480 1481 1482 1484 2025 2026 2027 2028 2029 2030 2032 2035 2613 2614 2618 2029 2030 2031 2033 2035 2617 2618 2622 2032 2034 2035 2592 2595 2617 2618 2622 2004 2005 2007 2033 2035 2592 2595 2622 1481 1482 1483 1484 2004 2005 2007 2029 2030 2031 2032 2033 2034 2592 2595 2617 2618 2622 1659 1661 1662 2037 2039 2242 2247 2626 2036 2038 2039 2242 2247 2604 2607 2626 2016 2017 2019 2037 2039 2604 2607 2626 1485 1486 1487 1659 1661 1662 1685 2016 2017 2019 2036 2037 2038 2242 2247 2604 2607 2626 1490 1491 1492 2041 2044 2047 2048 2633 2040 2043 2044 2047 2048 2631 2633 2635 1532 1535 1536 2043 2044 2084 2087 2635 2041 2042 2044 2084 2087 2631 2633 2635 1488 1490 1491 1492 1532 1535 1536 2040 2041 2042 2043 2047 2048 2084 2087 2631 2633 2635 1494 1495 1496 2046 2047 2051 2052 2639 2045 2047 2048 2051 2052 2629 2633 2639 1489 1490 1491 1492 1494 1495 1496 2040 2041 2044 2045 2046 2048 2051 2052 2629 2633 2639 2040 2041 2044 2046 2047 2629 2633 2639 1505 1506 1507 2050 2051 2058 2059 2645 2049 2051 2052 2058 2059 2637 2639 2645 1493 1494 1495 1496 1505 1506 1507 2045 2046 2047 2049 2050 2052 2058 2059 2637 2639 2645 2045 2046 2047 2050 2051 2637 2639 2645 1508 1509 1511 2055 2056 2060 2063 2648 1504 1505 1506 2055 2056 2057 2058 2648 2053 2054 2056 2057 2058 2060 2063 2648 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1508 1509 1511 2053 2054 2055 2057 2058 2060 2063 2648 2054 2055 2056 2058 2059 2644 2645 2648 1504 1505 1506 1507 2049 2050 2051 2054 2055 2056 2057 2059 2644 2645 2648 2049 2050 2051 2057 2058 2644 2645 2648 2053 2055 2056 2061 2063 2647 2648 2652 2060 2062 2063 2064 2068 2647 2648 2652 1512 1513 1516 2061 2063 2064 2068 2652 1508 1509 1510 1511 1512 1513 1516 2053 2055 2056 2060 2061 2062 2064 2068 2647 2648 2652 2061 2062 2063 2065 2068 2651 2652 2657 2064 2066 2068 2651 2652 2656 2657 2660 2065 2067 2068 2069 2071 2656 2657 2660 1513 1514 1516 2066 2068 2069 2071 2660 1512 1513 1514 1516 2061 2062 2063 2064 2065 2066 2067 2069 2071 2651 2652 2656 2657 2660 2066 2067 2068 2070 2071 2072 2075 2660 1520 1521 1523 2069 2071 2072 2075 2660 1513 1514 1515 1516 1517 1518 1519 1520 1521 1523 2066 2067 2068 2069 2070 2072 2075 2660 2069 2070 2071 2073 2075 2659 2660 2664 2072 2074 2075 2076 2079 2659 2660 2664 1524 1525 1527 2073 2075 2076 2079 2664 1520 1521 1522 1523 1524 1525 1527 2069 2070 2071 2072 2073 2074 2076 2079 2659 2660 2664 2073 2074 2075 2077 2079 2663 2664 2668 2076 2078 2079 2080 2083 2663 2664 2668 1528 1529 1531 2077 2079 2080 2083 2668 1524 1525 1526 1527 1528 1529 1531 2073 2074 2075 2076 2077 2078 2080 2083 2663 2664 2668 2077 2078 2079 2081 2083 2667 2668 2672 2080 2082 2083 2559 2562 2667 2668 2672 1972 1973 1975 2081 2083 2559 2562 2672 1528 1529 1530 1531 1972 1973 1975 2077 2078 2079 2080 2081 2082 2559 2562 2667 2668 2672 2042 2043 2044 2086 2087 2628 2635 2676 1537 2086 2087 2088 2091 2092 2096 2676 2084 2085 2087 2088 2096 2628 2635 2676 1532 1534 1535 1536 1537 2042 2043 2044 2084 2085 2086 2088 2091 2092 2096 2628 2635 2676 2085 2086 2087 2095 2096 2674 2676 2681 2001 2002 2003 2090 2092 2590 2591 2686 2089 2091 2092 2093 2096 2590 2591 2686 1537 2085 2087 2090 2092 2093 2096 2686 1533 1534 1535 1536 1537 2001 2002 2003 2085 2087 2089 2090 2091 2093 2096 2590 2591 2686 2090 2091 2092 2094 2096 2685 2686 2690 2093 2095 2096 2678 2681 2685 2686 2690 2088 2094 2096 2674 2676 2678 2681 2690 1537 2085 2086 2087 2088 2090 2091 2092 2093 2094 2095 2674 2676 2678 2681 2685 2686 2690 1571 1572 1573 2099 2100 2130 2132 2700 1542 1544 1545 2099 2100 2101 2104 2700 2097 2098 2100 2101 2104 2130 2132 2700 1538 1539 1540 1541 1542 1544 1545 1571 1572 1573 2097 2098 2099 2101 2104 2130 2132 2700 2098 2099 2100 2103 2104 2698 2700 2704 1546 1548 1549 2103 2104 2105 2108 2704 2101 2102 2104 2105 2108 2698 2700 2704 1542 1543 1544 1545 1546 1548 1549 2098 2099 2100 2101 2102 2103 2105 2108 2698 2700 2704 2102 2103 2104 2107 2108 2702 2704 2708 1550 1552 1553 2107 2108 2109 2112 2708 2105 2106 2108 2109 2112 2702 2704 2708 1546 1547 1548 1549 1550 1552 1553 2102 2103 2104 2105 2106 2107 2109 2112 2702 2704 2708 2106 2107 2108 2111 2112 2706 2708 2712 1554 1556 1557 2111 2112 2113 2116 2712 2109 2110 2112 2113 2116 2706 2708 2712 1550 1551 1552 1553 1554 1556 1557 2106 2107 2108 2109 2110 2111 2113 2116 2706 2708 2712 2110 2111 2112 2115 2116 2710 2712 2716 1800 1801 1802 2115 2116 2384 2386 2716 2113 2114 2116 2384 2386 2710 2712 2716 1554 1555 1556 1557 1800 1801 1802 2110 2111 2112 2113 2114 2115 2384 2386 2710 2712 2716 1563 1564 1565 2118 2119 2123 2124 2719 2117 2119 2120 2123 2124 2125 2127 2719 1558 1559 1560 1561 1563 1564 1565 1566 1567 1568 2117 2118 2120 2123 2124 2125 2127 2719 1566 1567 1568 2118 2119 2125 2127 2719 1582 1583 1584 2122 2123 2138 2139 2723 2121 2123 2124 2138 2139 2717 2719 2723 1562 1563 1564 1565 1582 1583 1584 2117 2118 2119 2121 2122 2124 2138 2139 2717 2719 2723 2117 2118 2119 2122 2123 2717 2719 2723 2118 2119 2120 2126 2127 2719 2720 2728 2125 2127 2128 2129 2132 2719 2720 2728 1566 1567 1568 1569 1570 1571 1572 2118 2119 2120 2125 2126 2128 2129 2132 2719 2720 2728 1570 1571 1572 2126 2127 2129 2132 2728 2126 2127 2128 2131 2132 2726 2728 2732 2097 2099 2100 2131 2132 2697 2700 2732 2129 2130 2132 2697 2700 2726 2728 2732 1570 1571 1572 1573 2097 2099 2100 2126 2127 2128 2129 2130 2131 2697 2700 2726 2728 2732 1585 1588 1589 2134 2135 2140 2144 2735 2133 2135 2136 2137 2138 2140 2144 2735 1574 1575 1576 1577 1578 1579 1580 1585 1588 1589 2133 2134 2136 2137 2138 2140 2144 2735 1578 1579 1580 2134 2135 2137 2138 2735 2134 2135 2136 2138 2139 2721 2723 2735 1578 1579 1580 1581 1582 1583 1584 2121 2122 2123 2134 2135 2136 2137 2139 2721 2723 2735 2121 2122 2123 2137 2138 2721 2723 2735 2133 2134 2135 2141 2144 2733 2735 2739 2140 2142 2144 2733 2735 2738 2739 2744 2141 2143 2144 2145 2148 2738 2739 2744 1587 1588 1589 2142 2144 2145 2148 2744 1585 1587 1588 1589 2133 2134 2135 2140 2141 2142 2143 2145 2148 2733 2735 2738 2739 2744 2142 2143 2144 2146 2148 2743 2744 2748 2145 2147 2148 2149 2152 2743 2744 2748 1590 1592 1593 2146 2148 2149 2152 2748 1586 1587 1588 1589 1590 1592 1593 2142 2143 2144 2145 2146 2147 2149 2152 2743 2744 2748 2146 2147 2148 2150 2152 2747 2748 2752 2149 2151 2152 2153 2156 2747 2748 2752 1594 1595 1597 2150 2152 2153 2156 2752 1590 1591 1592 1593 1594 1595 1597 2146 2147 2148 2149 2150 2151 2153 2156 2747 2748 2752 2150 2151 2152 2154 2156 2751 2752 2754 2153 2155 2156 2157 2434 2751 2752 2754 1844 1845 1848 2154 2156 2157 2434 2754 1594 1595 1596 1597 1844 1845 1848 2150 2151 2152 2153 2154 2155 2157 2434 2751 2752 2754 2154 2155 2156 2431 2434 2692 2696 2754 1692 1705 2159 2162 2170 2171 2282 2760 2158 2160 2162 2170 2171 2759 2760 2762 2159 2161 2162 2164 2165 2759 2760 2762 1599 1641 1645 2160 2162 2164 2165 2762 1599 1641 1642 1645 1692 1693 1705 2158 2159 2160 2161 2164 2165 2170 2171 2217 2221 2282 2759 2760 2762 1602 1604 1605 2164 2165 2178 2180 2762 1598 1599 1602 1604 1605 1641 1645 2160 2161 2162 2163 2165 2178 2180 2762 2160 2161 2162 2163 2164 2178 2180 2762 1601 1699 1701 2167 2169 2175 2176 2767 2166 2168 2169 2171 2172 2175 2176 2767 1703 1704 2167 2169 2171 2172 2293 2767 1601 1699 1700 1701 1702 1703 1704 2166 2167 2168 2171 2172 2175 2176 2289 2291 2293 2767 2158 2159 2162 2171 2172 2756 2760 2767 1692 1703 1704 1705 2158 2159 2162 2167 2168 2169 2170 2172 2280 2282 2293 2756 2760 2767 2167 2168 2169 2170 2171 2756 2760 2767 1969 1970 1971 2174 2176 2177 2558 2771 2173 2175 2176 2177 2558 2764 2767 2771 2166 2167 2169 2174 2176 2764 2767 2771 1600 1601 1699 1701 1969 1970 1971 2166 2167 2169 2173 2174 2175 2177 2558 2764 2767 2771 2173 2174 2176 2557 2558 2768 2771 2775 2163 2164 2165 2180 2181 2761 2762 2779 1603 1604 1605 1607 1608 2180 2181 2183 2184 2778 2779 2782 1602 1603 1604 1605 1607 1608 2163 2164 2165 2178 2179 2181 2183 2184 2761 2762 2778 2779 2782 2178 2179 2180 2183 2184 2761 2762 2778 2779 2782 1606 1607 1608 1610 1611 2183 2184 2186 2187 2781 2782 2785 1603 1604 1605 1606 1607 1608 1610 1611 2179 2180 2181 2182 2184 2186 2187 2778 2779 2781 2782 2785 2179 2180 2181 2182 2183 2186 2187 2778 2779 2781 2782 2785 1609 1610 1611 1613 1614 2186 2187 2189 2190 2784 2785 2788 1606 1607 1608 1609 1610 1611 1613 1614 2182 2183 2184 2185 2187 2189 2190 2781 2782 2784 2785 2788 2182 2183 2184 2185 2186 2189 2190 2781 2782 2784 2785 2788 1612 1613 1614 1616 1617 2189 2190 2192 2193 2787 2788 2791 1609 1610 1611 1612 1613 1614 1616 1617 2185 2186 2187 2188 2190 2192 2193 2784 2785 2787 2788 2791 2185 2186 2187 2188 2189 2192 2193 2784 2785 2787 2788 2791 1615 1616 1617 1619 1620 2192 2193 2195 2196 2790 2791 2794 1612 1613 1614 1615 1616 1617 1619 1620 2188 2189 2190 2191 2193 2195 2196 2787 2788 2790 2791 2794 2188 2189 2190 2191 2192 2195 2196 2787 2788 2790 2791 2794 1618 1619 1620 1622 1623 2195 2196 2198 2199 2793 2794 2797 1615 1616 1617 1618 1619 1620 1622 1623 2191 2192 2193 2194 2196 2198 2199 2790 2791 2793 2794 2797 2191 2192 2193 2194 2195 2198 2199 2790 2791 2793 2794 2797 1621 1622 1623 1625 1626 2198 2199 2201 2202 2796 2797 2800 1618 1619 1620 1621 1622 1623 1625 1626 2194 2195 2196 2197 2199 2201 2202 2793 2794 2796 2797 2800 2194 2195 2196 2197 2198 2201 2202 2793 2794 2796 2797 2800 1624 1625 1626 1628 1629 2201 2202 2204 2205 2799 2800 2803 1621 1622 1623 1624 1625 1626 1628 1629 2197 2198 2199 2200 2202 2204 2205 2796 2797 2799 2800 2803 2197 2198 2199 2200 2201 2204 2205 2796 2797 2799 2800 2803 1627 1628 1629 1631 1632 2204 2205 2207 2208 2802 2803 2806 1624 1625 1626 1627 1628 1629 1631 1632 2200 2201 2202 2203 2205 2207 2208 2799 2800 2802 2803 2806 2200 2201 2202 2203 2204 2207 2208 2799 2800 2802 2803 2806 1630 1631 1632 1634 1635 2207 2208 2210 2211 2805 2806 2809 1627 1628 1629 1630 1631 1632 1634 1635 2203 2204 2205 2206 2208 2210 2211 2802 2803 2805 2806 2809 2203 2204 2205 2206 2207 2210 2211 2802 2803 2805 2806 2809 1633 1634 1635 1639 1640 2210 2211 2215 2216 2808 2809 2814 1630 1631 1632 1633 1634 1635 1639 1640 2206 2207 2208 2209 2211 2215 2216 2805 2806 2808 2809 2814 2206 2207 2208 2209 2210 2215 2216 2805 2806 2808 2809 2814 2213 2214 2215 2216 2812 2813 2814 1636 1637 1638 1639 1640 2212 2214 2215 2216 2812 2813 2814 1636 1637 1638 1639 1640 2212 2213 2215 2216 2812 2813 2814 1633 1634 1635 1636 1637 1638 1639 1640 2209 2210 2211 2212 2213 2214 2216 2808 2809 2812 2813 2814 2209 2210 2211 2212 2213 2214 2215 2808 2809 2812 2813 2814 1692 1693 2162 2218 2221 2282 2283 2819 2217 2220 2221 2282 2283 2817 2819 2821 1642 1644 1645 2220 2221 2222 2223 2821 2218 2219 2221 2222 2223 2817 2819 2821 1641 1642 1644 1645 1692 1693 2162 2217 2218 2219 2220 2222 2223 2282 2283 2817 2819 2821 2219 2220 2221 2223 2224 2225 2229 2821 1642 1643 1644 1645 1646 1647 1648 1649 1650 1652 2219 2220 2221 2222 2224 2225 2229 2821 1649 1650 1652 2222 2223 2225 2229 2821 2222 2223 2224 2226 2229 2821 2822 2826 2225 2228 2229 2821 2822 2824 2826 2828 1650 1651 1652 2228 2229 2230 2231 2828 2226 2227 2229 2230 2231 2824 2826 2828 1649 1650 1651 1652 2222 2223 2224 2225 2226 2227 2228 2230 2231 2821 2822 2824 2826 2828 2227 2228 2229 2231 2232 2233 2235 2828 1650 1651 1652 1653 1654 1655 1656 1657 1658 1808 1810 2227 2228 2229 2230 2232 2233 2235 2828 1656 1657 1658 1808 1810 2230 2231 2233 2235 2828 2230 2231 2232 2234 2235 2828 2829 2833 2233 2235 2236 2392 2394 2828 2829 2833 1656 1657 1658 1808 1810 1811 2230 2231 2232 2233 2234 2236 2392 2393 2394 2397 2828 2829 2833 1808 1810 1811 2234 2235 2392 2393 2394 2397 2833 1763 1979 1980 2238 2241 2353 2354 2837 2237 2240 2241 2353 2354 2835 2837 2841 1978 1979 1980 2240 2241 2568 2571 2841 2238 2239 2241 2568 2571 2835 2837 2841 1763 1978 1979 1980 2237 2238 2239 2240 2353 2354 2568 2571 2835 2837 2841 2036 2037 2039 2246 2247 2623 2626 2846 1661 1662 1663 2244 2247 2249 2250 2851 2243 2245 2247 2249 2250 2850 2851 2853 2244 2246 2247 2843 2846 2850 2851 2853 2242 2245 2247 2623 2626 2843 2846 2853 1659 1661 1662 1663 2036 2037 2039 2242 2243 2244 2245 2246 2249 2250 2623 2626 2843 2846 2850 2851 2853 1689 1690 1691 2250 2251 2276 2279 2858 2243 2244 2247 2250 2251 2847 2851 2858 1660 1661 1662 1663 1689 1690 1691 2243 2244 2247 2248 2249 2251 2276 2279 2847 2851 2858 2248 2249 2250 2276 2279 2847 2851 2858 1747 1748 1749 2253 2255 2337 2338 2862 2252 2254 2255 2256 2260 2337 2338 2862 1668 1669 1672 2253 2255 2256 2260 2862 1664 1665 1666 1667 1668 1669 1672 1747 1748 1749 2252 2253 2254 2256 2260 2337 2338 2862 2253 2254 2255 2257 2260 2861 2862 2867 2256 2258 2260 2861 2862 2866 2867 2871 2257 2259 2260 2261 2264 2866 2867 2871 1669 1670 1672 2258 2260 2261 2264 2871 1668 1669 1670 1672 2253 2254 2255 2256 2257 2258 2259 2261 2264 2861 2862 2866 2867 2871 2258 2259 2260 2262 2264 2870 2871 2875 2261 2263 2264 2265 2268 2870 2871 2875 1673 1674 1676 2262 2264 2265 2268 2875 1669 1670 1671 1672 1673 1674 1676 2258 2259 2260 2261 2262 2263 2265 2268 2870 2871 2875 2262 2263 2264 2266 2268 2874 2875 2878 2265 2267 2268 2269 2271 2874 2875 2878 1677 1678 1680 2266 2268 2269 2271 2878 1673 1674 1675 1676 1677 1678 1680 2262 2263 2264 2265 2266 2267 2269 2271 2874 2875 2878 2266 2267 2268 2270 2271 2272 2275 2878 1687 1688 1691 2269 2271 2272 2275 2878 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1691 2266 2267 2268 2269 2270 2272 2275 2878 2269 2270 2271 2273 2275 2877 2878 2882 2272 2274 2275 2277 2279 2877 2878 2882 1688 1689 1691 2273 2275 2277 2279 2882 1687 1688 1689 1691 2269 2270 2271 2272 2273 2274 2277 2279 2877 2878 2882 2248 2250 2251 2278 2279 2855 2858 2885 2273 2274 2275 2278 2279 2881 2882 2885 2276 2277 2279 2855 2858 2881 2882 2885 1688 1689 1690 1691 2248 2250 2251 2273 2274 2275 2276 2277 2278 2855 2858 2881 2882 2885 1704 1705 2171 2281 2282 2293 2294 2890 2280 2282 2283 2293 2294 2816 2819 2890 1692 1693 1704 1705 2158 2162 2171 2217 2218 2221 2280 2281 2283 2293 2294 2816 2819 2890 2217 2218 2221 2281 2282 2816 2819 2890 1711 1712 1713 2286 2287 2300 2302 2894 1698 1700 1701 2286 2287 2288 2291 2894 2284 2285 2287 2288 2291 2300 2302 2894 1694 1695 1696 1697 1698 1700 1701 1711 1712 1713 2284 2285 2286 2288 2291 2300 2302 2894 2285 2286 2287 2290 2291 2892 2894 2896 1702 1703 2169 2290 2291 2292 2293 2896 2288 2289 2291 2292 2293 2892 2894 2896 1698 1699 1700 1701 1702 1703 2169 2285 2286 2287 2288 2289 2290 2292 2293 2892 2894 2896 2289 2290 2291 2293 2294 2886 2890 2896 1702 1703 1704 1705 2168 2169 2171 2280 2281 2282 2289 2290 2291 2292 2294 2886 2890 2896 2280 2281 2282 2292 2293 2886 2890 2896 1710 1712 1713 2296 2298 2299 2302 2901 2295 2297 2298 2299 2302 2303 2307 2901 1714 1715 1718 2296 2298 2303 2307 2901 1706 1707 1708 1709 1710 1712 1713 1714 1715 1718 2295 2296 2297 2299 2302 2303 2307 2901 2295 2296 2298 2301 2302 2898 2901 2904 2284 2286 2287 2301 2302 2891 2894 2904 2299 2300 2302 2891 2894 2898 2901 2904 1710 1711 1712 1713 2284 2286 2287 2295 2296 2298 2299 2300 2301 2891 2894 2898 2901 2904 2296 2297 2298 2304 2307 2900 2901 2909 2303 2305 2307 2900 2901 2908 2909 2913 2304 2306 2307 2308 2311 2908 2909 2913 1715 1718 1719 2305 2307 2308 2311 2913 1714 1715 1718 1719 2296 2297 2298 2303 2304 2305 2306 2308 2311 2900 2901 2908 2909 2913 2305 2306 2307 2309 2311 2912 2913 2917 2308 2310 2311 2312 2315 2912 2913 2917 1717 1718 1719 2309 2311 2312 2315 2917 1715 1717 1718 1719 2305 2306 2307 2308 2309 2310 2312 2315 2912 2913 2917 2309 2310 2311 2313 2315 2916 2917 2920 2312 2314 2315 2316 2318 2916 2917 2920 1723 1724 1726 2313 2315 2316 2318 2920 1716 1717 1718 1719 1720 1721 1722 1723 1724 1726 2309 2310 2311 2312 2313 2314 2316 2318 2916 2917 2920 2313 2314 2315 2317 2318 2319 2323 2920 1730 1731 1734 2316 2318 2319 2323 2920 1723 1724 1725 1726 1727 1728 1729 1730 1731 1734 2313 2314 2315 2316 2317 2319 2323 2920 2316 2317 2318 2320 2323 2919 2920 2925 2319 2321 2323 2919 2920 2924 2925 2928 2320 2322 2323 2324 2326 2924 2925 2928 1731 1732 1734 2321 2323 2324 2326 2928 1730 1731 1732 1734 2316 2317 2318 2319 2320 2321 2322 2324 2326 2919 2920 2924 2925 2928 2321 2322 2323 2325 2326 2327 2331 2928 1738 1739 1742 2324 2326 2327 2331 2928 1731 1732 1733 1734 1735 1736 1737 1738 1739 1742 2321 2322 2323 2324 2325 2327 2331 2928 2324 2325 2326 2328 2331 2927 2928 2933 2327 2329 2331 2927 2928 2932 2933 2937 2328 2330 2331 2332 2335 2932 2933 2937 1739 1740 1742 2329 2331 2332 2335 2937 1738 1739 1740 1742 2324 2325 2326 2327 2328 2329 2330 2332 2335 2927 2928 2932 2933 2937 2329 2330 2331 2333 2335 2936 2937 2940 2332 2334 2335 2336 2338 2936 2937 2940 1743 1744 1746 2333 2335 2336 2338 2940 1739 1740 1741 1742 1743 1744 1746 2329 2330 2331 2332 2333 2334 2336 2338 2936 2937 2940 2333 2334 2335 2337 2338 2859 2862 2940 2252 2253 2255 2336 2338 2859 2862 2940 1743 1744 1745 1746 1747 1748 1749 2252 2253 2255 2333 2334 2335 2336 2337 2859 2862 2940 1788 1789 1791 2341 2342 2369 2374 2944 1754 1756 1757 2342 2343 2344 2346 2948 2339 2342 2343 2369 2374 2944 2945 2948 1750 1751 1752 1753 1754 1756 1757 1788 1789 1791 2339 2340 2341 2343 2344 2346 2369 2374 2944 2945 2948 2340 2341 2342 2344 2346 2944 2945 2948 2340 2342 2343 2345 2346 2948 2949 2952 2344 2346 2347 2348 2350 2948 2949 2952 1754 1756 1757 1758 2340 2342 2343 2344 2345 2347 2348 2350 2948 2949 2952 1756 1757 1758 2345 2346 2348 2350 2952 2345 2346 2347 2349 2350 2952 2953 2957 2348 2350 2351 2352 2353 2952 2953 2957 1755 1756 1757 1758 1759 1761 1762 2345 2346 2347 2348 2349 2351 2352 2353 2952 2953 2957 1759 1761 1762 2349 2350 2352 2353 2957 2349 2350 2351 2353 2354 2834 2837 2957 1759 1760 1761 1762 1763 1979 1980 2237 2238 2241 2349 2350 2351 2352 2354 2834 2837 2957 2237 2238 2241 2352 2353 2834 2837 2957 1795 1797 1798 2359 2361 2376 2378 2960 1782 1783 1784 2357 2358 2366 2368 2963 1764 1765 1766 1767 1768 1769 1782 1783 1784 2356 2358 2366 2368 2963 2356 2357 2366 2368 2963 2355 2360 2361 2376 2378 2960 2961 2967 2359 2361 2362 2363 2364 2960 2961 2967 1770 1771 1773 1774 1795 1797 1798 2355 2359 2360 2362 2363 2364 2376 2378 2960 2961 2967 1771 1773 1774 2360 2361 2363 2364 2967 2360 2361 2362 2364 2365 2367 2368 2967 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 2360 2361 2362 2363 2365 2367 2368 2967 1778 1779 1780 2363 2364 2367 2368 2967 2356 2357 2358 2367 2368 2962 2963 2967 2363 2364 2365 2366 2368 2962 2963 2967 1778 1779 1780 1781 1782 1783 1784 2356 2357 2358 2363 2364 2365 2366 2367 2962 2963 2967 2339 2341 2342 2370 2374 2941 2944 2969 2369 2371 2372 2373 2374 2941 2944 2969 2370 2372 2373 2374 2969 1785 1786 1787 1792 1793 1794 2370 2371 2373 2374 2969 1792 1793 1794 2370 2371 2372 2374 2969 1788 1789 1790 1791 1792 1793 1794 2339 2341 2342 2369 2370 2371 2372 2373 2941 2944 2969 1799 1804 1806 2377 2378 2379 2382 2974 2355 2359 2361 2377 2378 2958 2960 2974 2375 2376 2378 2379 2382 2958 2960 2974 1795 1796 1797 1798 1799 1804 1806 2355 2359 2361 2375 2376 2377 2379 2382 2958 2960 2974 2375 2377 2378 2380 2382 2971 2974 2978 2379 2382 2383 2971 2974 2975 2978 2982 1804 1806 1807 2382 2383 2388 2390 2982 1799 1804 1806 1807 2375 2377 2378 2379 2380 2381 2383 2388 2390 2971 2974 2975 2978 2982 2380 2381 2382 2388 2390 2975 2978 2982 2114 2115 2116 2385 2386 2714 2716 2986 2384 2386 2387 2389 2390 2714 2716 2986 1800 1801 1802 1803 1805 1806 1807 2114 2115 2116 2384 2385 2387 2389 2390 2714 2716 2986 1805 1806 1807 2385 2386 2389 2390 2986 2381 2382 2383 2390 2391 2981 2982 2990 2385 2386 2387 2390 2391 2986 2987 2990 1804 1805 1806 1807 2381 2382 2383 2385 2386 2387 2388 2389 2391 2981 2982 2986 2987 2990 2388 2389 2390 2981 2982 2986 2987 2990 2234 2235 2236 2394 2395 2831 2833 2994 1808 1810 1811 2235 2236 2394 2395 2397 2398 2993 2994 2997 1808 1810 1811 2234 2235 2236 2392 2393 2395 2397 2398 2831 2833 2993 2994 2997 2392 2393 2394 2397 2398 2831 2833 2993 2994 2997 1809 1810 1811 1813 1814 2397 2398 2400 2401 2996 2997 3000 1808 1809 1810 1811 1813 1814 2235 2236 2393 2394 2395 2396 2398 2400 2401 2993 2994 2996 2997 3000 2393 2394 2395 2396 2397 2400 2401 2993 2994 2996 2997 3000 1812 1813 1814 1816 1817 2400 2401 2403 2404 2999 3000 3003 1809 1810 1811 1812 1813 1814 1816 1817 2396 2397 2398 2399 2401 2403 2404 2996 2997 2999 3000 3003 2396 2397 2398 2399 2400 2403 2404 2996 2997 2999 3000 3003 1815 1816 1817 1819 1820 2403 2404 2406 2407 3002 3003 3006 1812 1813 1814 1815 1816 1817 1819 1820 2399 2400 2401 2402 2404 2406 2407 2999 3000 3002 3003 3006 2399 2400 2401 2402 2403 2406 2407 2999 3000 3002 3003 3006 1818 1819 1820 1822 1823 2406 2407 2409 2410 3005 3006 3009 1815 1816 1817 1818 1819 1820 1822 1823 2402 2403 2404 2405 2407 2409 2410 3002 3003 3005 3006 3009 2402 2403 2404 2405 2406 2409 2410 3002 3003 3005 3006 3009 1821 1822 1823 1825 1826 2409 2410 2412 2413 3008 3009 3012 1818 1819 1820 1821 1822 1823 1825 1826 2405 2406 2407 2408 2410 2412 2413 3005 3006 3008 3009 3012 2405 2406 2407 2408 2409 2412 2413 3005 3006 3008 3009 3012 1824 1825 1826 1828 1829 2412 2413 2415 2416 3011 3012 3015 1821 1822 1823 1824 1825 1826 1828 1829 2408 2409 2410 2411 2413 2415 2416 3008 3009 3011 3012 3015 2408 2409 2410 2411 2412 2415 2416 3008 3009 3011 3012 3015 1827 1828 1829 1831 1832 2415 2416 2418 2419 3014 3015 3018 1824 1825 1826 1827 1828 1829 1831 1832 2411 2412 2413 2414 2416 2418 2419 3011 3012 3014 3015 3018 2411 2412 2413 2414 2415 2418 2419 3011 3012 3014 3015 3018 1830 1831 1832 1834 1835 2418 2419 2421 2422 3017 3018 3021 1827 1828 1829 1830 1831 1832 1834 1835 2414 2415 2416 2417 2419 2421 2422 3014 3015 3017 3018 3021 2414 2415 2416 2417 2418 2421 2422 3014 3015 3017 3018 3021 1833 1834 1835 1837 1838 2421 2422 2424 2425 3020 3021 3024 1830 1831 1832 1833 1834 1835 1837 1838 2417 2418 2419 2420 2422 2424 2425 3017 3018 3020 3021 3024 2417 2418 2419 2420 2421 2424 2425 3017 3018 3020 3021 3024 1836 1837 1838 1842 1843 2424 2425 2429 2430 3023 3024 3029 1833 1834 1835 1836 1837 1838 1842 1843 2420 2421 2422 2423 2425 2429 2430 3020 3021 3023 3024 3029 2420 2421 2422 2423 2424 2429 2430 3020 3021 3023 3024 3029 2427 2428 2429 2430 3027 3028 3029 1839 1840 1841 1842 1843 2426 2428 2429 2430 3027 3028 3029 1839 1840 1841 1842 1843 2426 2427 2429 2430 3027 3028 3029 1836 1837 1838 1839 1840 1841 1842 1843 2423 2424 2425 2426 2427 2428 2430 3023 3024 3027 3028 3029 2423 2424 2425 2426 2427 2428 2429 3023 3024 3027 3028 3029 2157 2432 2434 2691 2692 2696 2754 3034 2431 2433 2434 2435 2438 2691 2696 3034 1845 1846 1848 2432 2434 2435 2438 3034 1844 1845 1846 1848 2154 2155 2156 2157 2431 2432 2433 2435 2438 2691 2692 2696 2754 3034 2432 2433 2434 2436 2438 3033 3034 3038 2435 2437 2438 2439 2442 3033 3034 3038 1849 1850 1853 2436 2438 2439 2442 3038 1845 1846 1847 1848 1849 1850 1853 2432 2433 2434 2435 2436 2437 2439 2442 3033 3034 3038 2436 2437 2438 2440 2442 3037 3038 3042 2439 2441 2442 2443 2445 3037 3038 3042 1850 1851 1853 2440 2442 2443 2445 3042 1849 1850 1851 1853 2436 2437 2438 2439 2440 2441 2443 2445 3037 3038 3042 2440 2441 2442 2444 2445 2446 2449 3042 1860 1862 1863 2443 2445 2446 2449 3042 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1862 1863 2440 2441 2442 2443 2444 2446 2449 3042 2443 2444 2445 2447 2449 3041 3042 3047 2446 2448 2449 2450 2453 3041 3042 3047 1864 1865 1869 2447 2449 2450 2453 3047 1860 1861 1862 1863 1864 1865 1869 2443 2444 2445 2446 2447 2448 2450 2453 3041 3042 3047 2447 2448 2449 2451 2453 3046 3047 3053 2450 2452 2453 2454 2457 3046 3047 3053 1865 1866 1869 2451 2453 2454 2457 3053 1864 1865 1866 1869 2447 2448 2449 2450 2451 2452 2454 2457 3046 3047 3053 2451 2452 2453 2455 2457 3048 3050 3053 2454 2457 2458 2461 3048 3050 3053 3057 1866 1867 1869 2457 2458 2459 2460 3057 1865 1866 1867 1869 2451 2452 2453 2454 2455 2456 2458 2459 2460 2461 3048 3050 3053 3057 2455 2456 2457 2459 2460 2461 3050 3057 2456 2457 2458 2460 3057 1866 1867 1868 1869 1870 1871 1872 1873 1874 2456 2457 2458 2459 3057 2455 2457 2458 3049 3050 3055 3057 3060 1880 2463 2465 2466 2469 2470 2473 3064 2462 2464 2465 2466 2469 2492 2495 3064 1900 1901 1903 2463 2465 2492 2495 3064 1875 1876 1877 1878 1879 1880 1886 1887 1900 1901 1903 2462 2463 2464 2466 2469 2470 2473 2492 2495 3064 2462 2463 2465 2467 2469 3062 3064 3068 2466 2468 2469 3062 3064 3066 3068 3071 2467 2469 2470 2471 2473 3066 3068 3071 1880 2462 2463 2465 2466 2467 2468 2470 2471 2473 3062 3064 3066 3068 3071 1880 2462 2465 2468 2469 2471 2473 3071 2468 2469 2470 2472 2473 3071 3072 3073 2471 2473 2474 2475 2476 3071 3072 3073 1879 1880 1885 1886 1887 2462 2465 2468 2469 2470 2471 2472 2474 2475 2476 3071 3072 3073 1885 1886 1887 2472 2473 2475 2476 3073 2472 2473 2474 2476 2477 2478 2479 3073 1881 1882 1883 1884 1885 1886 1887 1888 1892 1893 2472 2473 2474 2475 2477 2478 2479 3073 1888 1892 1893 2475 2476 2478 2479 3073 2475 2476 2477 2479 2480 2481 2482 3073 1888 1892 1893 1894 2475 2476 2477 2478 2480 2481 2482 3073 1892 1893 1894 2478 2479 2481 2482 3073 1889 1890 1891 1892 1893 1894 2478 2479 2480 2482 3073 2478 2479 2480 2481 3073 1960 1961 1963 2489 2490 2547 2550 3079 1915 2485 2487 2491 2500 2501 2503 3083 2484 2486 2487 2488 2490 2491 2503 3083 1896 1897 1899 2485 2487 2488 2490 3083 1895 1896 1897 1899 1912 1913 1914 1915 2484 2485 2486 2488 2490 2491 2500 2501 2503 3083 2485 2486 2487 2489 2490 3079 3080 3083 2483 2488 2490 2547 2550 3079 3080 3083 1896 1897 1898 1899 1960 1961 1963 2483 2485 2486 2487 2488 2489 2547 2550 3079 3080 3083 2484 2485 2487 2502 2503 3083 3084 3089 2463 2464 2465 2493 2495 3063 3064 3091 2492 2494 2495 2496 2498 3063 3064 3091 1904 1905 1907 2493 2495 2496 2498 3091 1900 1901 1902 1903 1904 1905 1907 2463 2464 2465 2492 2493 2494 2496 2498 3063 3064 3091 2493 2494 2495 2497 2498 2499 2501 3091 1908 1909 1911 2496 2498 2499 2501 3091 1904 1905 1906 1907 1908 1909 1911 2493 2494 2495 2496 2497 2499 2501 3091 2496 2497 2498 2500 2501 2503 2504 3091 1915 2484 2487 2499 2501 2503 2504 3091 1908 1909 1910 1911 1912 1913 1914 1915 2484 2487 2496 2497 2498 2499 2500 2503 2504 3091 2491 2503 2504 3083 3084 3087 3089 3091 1915 2484 2485 2487 2491 2499 2500 2501 2502 2504 3083 3084 3087 3089 3091 2499 2500 2501 2502 2503 3087 3089 3091 1921 1922 1923 2506 2508 2509 2510 3096 2505 2507 2508 2509 2510 2512 2515 3096 1924 1929 1932 2506 2508 2512 2515 3096 1916 1921 1922 1923 1924 1929 1932 2505 2506 2507 2509 2510 2512 2515 3096 2505 2506 2508 2510 2511 2522 2526 3096 1917 1918 1919 1920 1921 1922 1923 1939 1942 1943 2505 2506 2508 2509 2511 2522 2526 3096 1939 1942 1943 2509 2510 2522 2526 3096 2506 2507 2508 2513 2515 3095 3096 3099 2512 2514 2515 2520 2521 3095 3096 3099 1929 1930 1932 2513 2515 2520 2521 3099 1924 1929 1930 1932 2506 2507 2508 2512 2513 2514 2520 2521 3095 3096 3099 1976 1989 1994 2517 2518 2563 2566 3099 2516 2518 2519 2520 2521 2563 2566 3099 1925 1926 1927 1928 1933 1934 1935 1976 1989 1994 2516 2517 2519 2520 2521 2563 2566 3099 1933 1934 1935 2517 2518 2520 2521 3099 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 2513 2514 2515 2517 2518 2519 2521 3099 2513 2514 2515 2517 2518 2519 2520 3099 2509 2510 2511 2525 2526 3093 3096 3102 1941 1942 1943 2524 2526 2529 2530 3107 2523 2525 2526 2529 2530 3102 3103 3107 2522 2524 2526 3093 3096 3102 3103 3107 1939 1941 1942 1943 2509 2510 2511 2522 2523 2524 2525 2529 2530 3093 3096 3102 3103 3107 1945 1946 1947 2528 2530 2533 2534 3111 2527 2529 2530 2533 2534 3104 3107 3111 2523 2524 2526 2528 2530 3104 3107 3111 1940 1941 1942 1943 1945 1946 1947 2523 2524 2526 2527 2528 2529 2533 2534 3104 3107 3111 1949 1950 1951 2532 2534 2537 2538 3115 2531 2533 2534 2537 2538 3108 3111 3115 2527 2528 2530 2532 2534 3108 3111 3115 1944 1945 1946 1947 1949 1950 1951 2527 2528 2530 2531 2532 2533 2537 2538 3108 3111 3115 1953 1954 1955 2536 2538 2541 2542 3119 2535 2537 2538 2541 2542 3112 3115 3119 2531 2532 2534 2536 2538 3112 3115 3119 1948 1949 1950 1951 1953 1954 1955 2531 2532 2534 2535 2536 2537 2541 2542 3112 3115 3119 1957 1958 1959 2540 2542 2545 2546 3123 2539 2541 2542 2545 2546 3116 3119 3123 2535 2536 2538 2540 2542 3116 3119 3123 1952 1953 1954 1955 1957 1958 1959 2535 2536 2538 2539 2540 2541 2545 2546 3116 3119 3123 1961 1962 1963 2544 2546 2549 2550 3127 2543 2545 2546 2549 2550 3120 3123 3127 2539 2540 2542 2544 2546 3120 3123 3127 1956 1957 1958 1959 1961 1962 1963 2539 2540 2542 2543 2544 2545 2549 2550 3120 3123 3127 2483 2489 2490 2548 2550 3076 3079 3129 2547 2549 2550 3076 3079 3124 3127 3129 2543 2544 2546 2548 2550 3124 3127 3129 1960 1961 1962 1963 2483 2489 2490 2543 2544 2546 2547 2548 2549 3076 3079 3124 3127 3129 1973 1974 1975 2552 2554 2561 2562 3140 2551 2553 2554 2555 2558 2561 2562 3140 1968 1969 1971 2552 2554 2555 2558 3140 1964 1965 1966 1967 1968 1969 1971 1973 1974 1975 2551 2552 2553 2555 2558 2561 2562 3140 2552 2553 2554 2556 2558 3139 3140 3142 2555 2557 2558 2772 2775 3139 3140 3142 2177 2556 2558 2768 2771 2772 2775 3142 1968 1969 1970 1971 2173 2174 2176 2177 2552 2553 2554 2555 2556 2557 2768 2771 2772 2775 3139 3140 3142 2081 2082 2083 2560 2562 2671 2672 3148 2559 2561 2562 2671 2672 3137 3140 3148 2551 2552 2554 2560 2562 3137 3140 3148 1972 1973 1974 1975 2081 2082 2083 2551 2552 2554 2559 2560 2561 2671 2672 3137 3140 3148 2516 2517 2518 2564 2566 3094 3099 3151 2563 2566 2567 3094 3099 3150 3151 3155 1989 1994 1995 2566 2567 2577 2582 3155 1976 1989 1994 1995 2516 2517 2518 2563 2564 2565 2567 2577 2582 3094 3099 3150 3151 3155 2564 2565 2566 2577 2582 3150 3151 3155 2239 2240 2241 2569 2571 2839 2841 3159 2568 2570 2571 2839 2841 3159 3160 3163 2569 2571 2572 2573 2575 3159 3160 3163 1977 1978 1979 1980 1981 1982 1983 2239 2240 2241 2568 2569 2570 2572 2573 2575 2839 2841 3159 3160 3163 1981 1982 1983 2570 2571 2573 2575 3163 2570 2571 2572 2574 2575 3163 3164 3168 2573 2575 2576 2578 2580 3163 3164 3168 1981 1982 1983 1984 1985 1986 1987 2570 2571 2572 2573 2574 2576 2578 2580 3163 3164 3168 1985 1986 1987 2574 2575 2578 2580 3168 2565 2566 2567 2582 2583 3154 3155 3170 2574 2575 2576 2579 2580 3168 3169 3170 2578 2580 2581 2582 2583 3168 3169 3170 1985 1986 1987 1988 1990 1991 1992 2574 2575 2576 2578 2579 2581 2582 2583 3168 3169 3170 1990 1991 1992 2579 2580 2582 2583 3170 1989 1990 1991 1992 1993 1994 1995 2565 2566 2567 2577 2579 2580 2581 2583 3154 3155 3170 2577 2579 2580 2581 2582 3154 3155 3170 2013 2014 2015 2585 2587 2602 2603 3177 2584 2586 2587 2588 2591 2602 2603 3177 2000 2001 2003 2585 2587 2588 2591 3177 1996 1997 1998 1999 2000 2001 2003 2013 2014 2015 2584 2585 2586 2588 2591 2602 2603 3177 2585 2586 2587 2589 2591 3176 3177 3180 2588 2590 2591 2683 2686 3176 3177 3180 2089 2090 2092 2589 2591 2683 2686 3180 2000 2001 2002 2003 2089 2090 2092 2585 2586 2587 2588 2589 2590 2683 2686 3176 3177 3180 2033 2034 2035 2593 2595 2621 2622 3184 2592 2594 2595 2596 2599 2621 2622 3184 2008 2009 2011 2593 2595 2596 2599 3184 2004 2005 2006 2007 2008 2009 2011 2033 2034 2035 2592 2593 2594 2596 2599 2621 2622 3184 2593 2594 2595 2597 2599 3183 3184 3187 2596 2598 2599 2600 2603 3183 3184 3187 2012 2013 2015 2597 2599 2600 2603 3187 2008 2009 2010 2011 2012 2013 2015 2593 2594 2595 2596 2597 2598 2600 2603 3183 3184 3187 2597 2598 2599 2601 2603 3186 3187 3191 2600 2602 2603 3174 3177 3186 3187 3191 2584 2585 2587 2601 2603 3174 3177 3191 2012 2013 2014 2015 2584 2585 2587 2597 2598 2599 2600 2601 2602 3174 3177 3186 3187 3191 2037 2038 2039 2605 2607 2625 2626 3195 2604 2606 2607 2608 2611 2625 2626 3195 2020 2021 2023 2605 2607 2608 2611 3195 2016 2017 2018 2019 2020 2021 2023 2037 2038 2039 2604 2605 2606 2608 2611 2625 2626 3195 2605 2606 2607 2609 2611 3194 3195 3198 2608 2610 2611 2612 2614 3194 3195 3198 2024 2025 2027 2609 2611 2612 2614 3198 2020 2021 2022 2023 2024 2025 2027 2605 2606 2607 2608 2609 2610 2612 2614 3194 3195 3198 2609 2610 2611 2613 2614 2615 2618 3198 2028 2029 2031 2612 2614 2615 2618 3198 2024 2025 2026 2027 2028 2029 2031 2609 2610 2611 2612 2613 2615 2618 3198 2612 2613 2614 2616 2618 3197 3198 3202 2615 2617 2618 2619 2622 3197 3198 3202 2032 2033 2035 2616 2618 2619 2622 3202 2028 2029 2030 2031 2032 2033 2035 2612 2613 2614 2615 2616 2617 2619 2622 3197 3198 3202 2616 2617 2618 2620 2622 3201 3202 3206 2619 2621 2622 3181 3184 3201 3202 3206 2592 2593 2595 2620 2622 3181 3184 3206 2032 2033 2034 2035 2592 2593 2595 2616 2617 2618 2619 2620 2621 3181 3184 3201 3202 3206 2242 2246 2247 2624 2626 2627 2846 3210 2623 2625 2626 2627 2846 3192 3195 3210 2604 2605 2607 2624 2626 3192 3195 3210 2036 2037 2038 2039 2242 2246 2247 2604 2605 2607 2623 2624 2625 2627 2846 3192 3195 3210 2623 2624 2626 2845 2846 3207 3210 3213 2084 2086 2087 2635 2636 2673 2676 3218 2046 2047 2048 2630 2633 2639 2640 3223 2629 2632 2633 2639 2640 3220 3223 3225 2041 2043 2044 2632 2633 2634 2635 3225 2630 2631 2633 2634 2635 3220 3223 3225 2040 2041 2043 2044 2046 2047 2048 2629 2630 2631 2632 2634 2635 2639 2640 3220 3223 3225 2631 2632 2633 2635 2636 3216 3218 3225 2041 2042 2043 2044 2084 2086 2087 2628 2631 2632 2633 2634 2636 2673 2676 3216 3218 3225 2628 2634 2635 2673 2676 3216 3218 3225 2050 2051 2052 2638 2639 2641 2645 3230 2637 2639 2640 2641 2645 3222 3223 3230 2045 2046 2047 2048 2050 2051 2052 2629 2630 2633 2637 2638 2640 2641 2645 3222 3223 3230 2629 2630 2633 2638 2639 3222 3223 3230 2637 2638 2639 2642 2645 3229 3230 3235 2641 2643 2645 3229 3230 3234 3235 3238 2642 2644 2645 2646 2648 3234 3235 3238 2057 2058 2059 2643 2645 2646 2648 3238 2049 2050 2051 2052 2057 2058 2059 2637 2638 2639 2641 2642 2643 2644 2646 2648 3229 3230 3234 3235 3238 2643 2644 2645 2647 2648 2649 2652 3238 2060 2061 2063 2646 2648 2649 2652 3238 2053 2054 2055 2056 2057 2058 2059 2060 2061 2063 2643 2644 2645 2646 2647 2649 2652 3238 2646 2647 2648 2650 2652 3237 3238 3242 2649 2651 2652 2653 2657 3237 3238 3242 2064 2065 2068 2650 2652 2653 2657 3242 2060 2061 2062 2063 2064 2065 2068 2646 2647 2648 2649 2650 2651 2653 2657 3237 3238 3242 2650 2651 2652 2654 2657 3241 3242 3247 2653 2655 2657 3241 3242 3246 3247 3250 2654 2656 2657 2658 2660 3246 3247 3250 2065 2066 2068 2655 2657 2658 2660 3250 2064 2065 2066 2068 2650 2651 2652 2653 2654 2655 2656 2658 2660 3241 3242 3246 3247 3250 2655 2656 2657 2659 2660 2661 2664 3250 2072 2073 2075 2658 2660 2661 2664 3250 2065 2066 2067 2068 2069 2070 2071 2072 2073 2075 2655 2656 2657 2658 2659 2661 2664 3250 2658 2659 2660 2662 2664 3249 3250 3254 2661 2663 2664 2665 2668 3249 3250 3254 2076 2077 2079 2662 2664 2665 2668 3254 2072 2073 2074 2075 2076 2077 2079 2658 2659 2660 2661 2662 2663 2665 2668 3249 3250 3254 2662 2663 2664 2666 2668 3253 3254 3258 2665 2667 2668 2669 2672 3253 3254 3258 2080 2081 2083 2666 2668 2669 2672 3258 2076 2077 2078 2079 2080 2081 2083 2662 2663 2664 2665 2666 2667 2669 2672 3253 3254 3258 2666 2667 2668 2670 2672 3257 3258 3262 2669 2671 2672 3145 3148 3257 3258 3262 2559 2560 2562 2670 2672 3145 3148 3262 2080 2081 2082 2083 2559 2560 2562 2666 2667 2668 2669 2670 2671 3145 3148 3257 3258 3262 2628 2635 2636 2675 2676 3215 3218 3266 2088 2095 2096 2675 2676 2677 2681 3266 2673 2674 2676 2677 2681 3215 3218 3266 2084 2085 2086 2087 2088 2095 2096 2628 2635 2636 2673 2674 2675 2677 2681 3215 3218 3266 2674 2675 2676 2680 2681 3264 3266 3271 2094 2095 2096 2679 2681 2689 2690 3276 2678 2680 2681 2682 2689 2690 3271 3276 2677 2679 2681 2682 3264 3266 3271 3276 2088 2094 2095 2096 2674 2675 2676 2677 2678 2679 2680 2682 2689 2690 3264 3266 3271 3276 2679 2680 2681 3269 3271 3275 3276 3280 2589 2590 2591 2684 2686 3179 3180 3284 2683 2685 2686 2687 2690 3179 3180 3284 2093 2094 2096 2684 2686 2687 2690 3284 2089 2090 2091 2092 2093 2094 2096 2589 2590 2591 2683 2684 2685 2687 2690 3179 3180 3284 2684 2685 2686 2688 2690 3283 3284 3288 2687 2689 2690 3273 3276 3283 3284 3288 2678 2679 2681 2688 2690 3273 3276 3288 2093 2094 2095 2096 2678 2679 2681 2684 2685 2686 2687 2688 2689 3273 3276 3283 3284 3288 2431 2432 2434 2695 2696 3031 3034 3293 2157 2431 2434 2693 2696 2753 2754 3299 2692 2694 2696 2753 2754 3298 3299 3301 2693 2695 2696 3289 3293 3298 3299 3301 2691 2694 2696 3031 3034 3289 3293 3301 2157 2431 2432 2434 2691 2692 2693 2694 2695 2753 2754 3031 3034 3289 3293 3298 3299 3301 2130 2131 2132 2699 2700 2730 2732 3306 2101 2103 2104 2699 2700 2701 2704 3306 2697 2698 2700 2701 2704 2730 2732 3306 2097 2098 2099 2100 2101 2103 2104 2130 2131 2132 2697 2698 2699 2701 2704 2730 2732 3306 2698 2699 2700 2703 2704 3304 3306 3310 2105 2107 2108 2703 2704 2705 2708 3310 2701 2702 2704 2705 2708 3304 3306 3310 2101 2102 2103 2104 2105 2107 2108 2698 2699 2700 2701 2702 2703 2705 2708 3304 3306 3310 2702 2703 2704 2707 2708 3308 3310 3314 2109 2111 2112 2707 2708 2709 2712 3314 2705 2706 2708 2709 2712 3308 3310 3314 2105 2106 2107 2108 2109 2111 2112 2702 2703 2704 2705 2706 2707 2709 2712 3308 3310 3314 2706 2707 2708 2711 2712 3312 3314 3318 2113 2115 2116 2711 2712 2713 2716 3318 2709 2710 2712 2713 2716 3312 3314 3318 2109 2110 2111 2112 2113 2115 2116 2706 2707 2708 2709 2710 2711 2713 2716 3312 3314 3318 2710 2711 2712 2715 2716 3316 3318 3322 2384 2385 2386 2715 2716 2984 2986 3322 2713 2714 2716 2984 2986 3316 3318 3322 2113 2114 2115 2116 2384 2385 2386 2710 2711 2712 2713 2714 2715 2984 2986 3316 3318 3322 2122 2123 2124 2718 2719 2723 2724 3325 2717 2719 2720 2723 2724 2725 2728 3325 2117 2118 2119 2120 2122 2123 2124 2125 2126 2127 2717 2718 2720 2723 2724 2725 2728 3325 2125 2126 2127 2718 2719 2725 2728 3325 2137 2138 2139 2722 2723 2735 2736 3329 2721 2723 2724 2735 2736 3323 3325 3329 2121 2122 2123 2124 2137 2138 2139 2717 2718 2719 2721 2722 2724 2735 2736 3323 3325 3329 2717 2718 2719 2722 2723 3323 3325 3329 2718 2719 2720 2727 2728 3325 3326 3334 2129 2131 2132 2727 2728 2729 2732 3334 2725 2726 2728 2729 2732 3325 3326 3334 2125 2126 2127 2128 2129 2131 2132 2718 2719 2720 2725 2726 2727 2729 2732 3325 3326 3334 2726 2727 2728 2731 2732 3332 3334 3338 2697 2699 2700 2731 2732 3303 3306 3338 2729 2730 2732 3303 3306 3332 3334 3338 2129 2130 2131 2132 2697 2699 2700 2726 2727 2728 2729 2730 2731 3303 3306 3332 3334 3338 2140 2141 2144 2734 2735 2737 2739 3342 2733 2735 2736 2737 2739 3327 3329 3342 2133 2134 2135 2136 2137 2138 2139 2140 2141 2144 2721 2722 2723 2733 2734 2736 2737 2739 3327 3329 3342 2721 2722 2723 2734 2735 3327 3329 3342 2733 2734 2735 2739 2740 3341 3342 3346 2141 2142 2144 2739 2740 2741 2744 3346 2140 2141 2142 2144 2733 2734 2735 2737 2738 2740 2741 2744 3341 3342 3346 2737 2738 2739 2741 2744 3341 3342 3346 2738 2739 2740 2742 2744 3345 3346 3350 2741 2743 2744 2745 2748 3345 3346 3350 2145 2146 2148 2742 2744 2745 2748 3350 2141 2142 2143 2144 2145 2146 2148 2738 2739 2740 2741 2742 2743 2745 2748 3345 3346 3350 2742 2743 2744 2746 2748 3349 3350 3354 2745 2747 2748 2749 2752 3349 3350 3354 2149 2150 2152 2746 2748 2749 2752 3354 2145 2146 2147 2148 2149 2150 2152 2742 2743 2744 2745 2746 2747 2749 2752 3349 3350 3354 2746 2747 2748 2750 2752 3353 3354 3356 2749 2751 2752 2754 2755 3353 3354 3356 2153 2154 2156 2750 2752 2754 2755 3356 2149 2150 2151 2152 2153 2154 2156 2746 2747 2748 2749 2750 2751 2754 2755 3353 3354 3356 2692 2693 2696 2754 2755 3295 3299 3356 2153 2154 2155 2156 2157 2431 2434 2692 2693 2696 2750 2751 2752 2753 2755 3295 3299 3356 2750 2751 2752 2753 2754 3295 3299 3356 2170 2171 2172 2757 2760 2766 2767 3361 2756 2758 2760 2766 2767 3360 3361 3363 2757 2759 2760 2762 2763 3360 3361 3363 2159 2160 2162 2758 2760 2762 2763 3363 2158 2159 2160 2162 2170 2171 2172 2756 2757 2758 2759 2762 2763 2766 2767 3360 3361 3363 2178 2180 2181 2762 2763 2777 2779 3363 2159 2160 2161 2162 2163 2164 2165 2178 2180 2181 2758 2759 2760 2761 2763 2777 2779 3363 2758 2759 2760 2761 2762 2777 2779 3363 2174 2175 2176 2765 2767 2770 2771 3368 2764 2766 2767 2770 2771 3358 3361 3368 2756 2757 2760 2765 2767 3358 3361 3368 2166 2167 2168 2169 2170 2171 2172 2174 2175 2176 2756 2757 2760 2764 2765 2766 2770 2771 3358 3361 3368 2177 2557 2558 2769 2771 2774 2775 3373 2768 2770 2771 2774 2775 3365 3368 3373 2764 2765 2767 2769 2771 3365 3368 3373 2173 2174 2175 2176 2177 2557 2558 2764 2765 2767 2768 2769 2770 2774 2775 3365 3368 3373 2556 2557 2558 2773 2775 2776 3142 3377 2772 2774 2775 2776 3142 3370 3373 3377 2768 2769 2771 2773 2775 3370 3373 3377 2177 2556 2557 2558 2768 2769 2771 2772 2773 2774 2776 3142 3370 3373 3377 2772 2773 2775 3141 3142 3374 3377 3381 2761 2762 2763 2779 2780 3362 3363 3385 2179 2180 2181 2183 2184 2779 2780 2782 2783 3384 3385 3388 2178 2179 2180 2181 2183 2184 2761 2762 2763 2777 2778 2780 2782 2783 3362 3363 3384 3385 3388 2777 2778 2779 2782 2783 3362 3363 3384 3385 3388 2182 2183 2184 2186 2187 2782 2783 2785 2786 3387 3388 3391 2179 2180 2181 2182 2183 2184 2186 2187 2778 2779 2780 2781 2783 2785 2786 3384 3385 3387 3388 3391 2778 2779 2780 2781 2782 2785 2786 3384 3385 3387 3388 3391 2185 2186 2187 2189 2190 2785 2786 2788 2789 3390 3391 3394 2182 2183 2184 2185 2186 2187 2189 2190 2781 2782 2783 2784 2786 2788 2789 3387 3388 3390 3391 3394 2781 2782 2783 2784 2785 2788 2789 3387 3388 3390 3391 3394 2188 2189 2190 2192 2193 2788 2789 2791 2792 3393 3394 3397 2185 2186 2187 2188 2189 2190 2192 2193 2784 2785 2786 2787 2789 2791 2792 3390 3391 3393 3394 3397 2784 2785 2786 2787 2788 2791 2792 3390 3391 3393 3394 3397 2191 2192 2193 2195 2196 2791 2792 2794 2795 3396 3397 3400 2188 2189 2190 2191 2192 2193 2195 2196 2787 2788 2789 2790 2792 2794 2795 3393 3394 3396 3397 3400 2787 2788 2789 2790 2791 2794 2795 3393 3394 3396 3397 3400 2194 2195 2196 2198 2199 2794 2795 2797 2798 3399 3400 3403 2191 2192 2193 2194 2195 2196 2198 2199 2790 2791 2792 2793 2795 2797 2798 3396 3397 3399 3400 3403 2790 2791 2792 2793 2794 2797 2798 3396 3397 3399 3400 3403 2197 2198 2199 2201 2202 2797 2798 2800 2801 3402 3403 3406 2194 2195 2196 2197 2198 2199 2201 2202 2793 2794 2795 2796 2798 2800 2801 3399 3400 3402 3403 3406 2793 2794 2795 2796 2797 2800 2801 3399 3400 3402 3403 3406 2200 2201 2202 2204 2205 2800 2801 2803 2804 3405 3406 3409 2197 2198 2199 2200 2201 2202 2204 2205 2796 2797 2798 2799 2801 2803 2804 3402 3403 3405 3406 3409 2796 2797 2798 2799 2800 2803 2804 3402 3403 3405 3406 3409 2203 2204 2205 2207 2208 2803 2804 2806 2807 3408 3409 3412 2200 2201 2202 2203 2204 2205 2207 2208 2799 2800 2801 2802 2804 2806 2807 3405 3406 3408 3409 3412 2799 2800 2801 2802 2803 2806 2807 3405 3406 3408 3409 3412 2206 2207 2208 2210 2211 2806 2807 2809 2810 3411 3412 3415 2203 2204 2205 2206 2207 2208 2210 2211 2802 2803 2804 2805 2807 2809 2810 3408 3409 3411 3412 3415 2802 2803 2804 2805 2806 2809 2810 3408 3409 3411 3412 3415 2209 2210 2211 2215 2216 2809 2810 2814 2815 3414 3415 3420 2206 2207 2208 2209 2210 2211 2215 2216 2805 2806 2807 2808 2810 2814 2815 3411 3412 3414 3415 3420 2805 2806 2807 2808 2809 2814 2815 3411 3412 3414 3415 3420 2812 2813 2814 2815 3418 3419 3420 2212 2213 2214 2215 2216 2811 2813 2814 2815 3418 3419 3420 2212 2213 2214 2215 2216 2811 2812 2814 2815 3418 3419 3420 2209 2210 2211 2212 2213 2214 2215 2216 2808 2809 2810 2811 2812 2813 2815 3414 3415 3418 3419 3420 2808 2809 2810 2811 2812 2813 2814 3414 3415 3418 3419 3420 2281 2282 2283 2818 2819 2888 2890 3425 2218 2220 2221 2818 2819 2820 2821 3425 2816 2817 2819 2820 2821 2888 2890 3425 2217 2218 2220 2221 2281 2282 2283 2816 2817 2818 2820 2821 2888 2890 3425 2817 2818 2819 2821 2822 2823 2826 3425 2218 2219 2220 2221 2222 2223 2224 2225 2226 2229 2817 2818 2819 2820 2822 2823 2826 3425 2225 2226 2229 2820 2821 2823 2826 3425 2820 2821 2822 2825 2826 3423 3425 3430 2226 2228 2229 2825 2826 2827 2828 3430 2823 2824 2826 2827 2828 3423 3425 3430 2225 2226 2228 2229 2820 2821 2822 2823 2824 2825 2827 2828 3423 3425 3430 2824 2825 2826 2828 2829 2830 2833 3430 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2824 2825 2826 2827 2829 2830 2833 3430 2233 2234 2235 2827 2828 2830 2833 3430 2827 2828 2829 2832 2833 3428 3430 3434 2392 2394 2395 2832 2833 2992 2994 3434 2830 2831 2833 2992 2994 3428 3430 3434 2233 2234 2235 2236 2392 2394 2395 2827 2828 2829 2830 2831 2832 2992 2994 3428 3430 3434 2352 2353 2354 2836 2837 2955 2957 3438 2238 2240 2241 2836 2837 2838 2841 3438 2834 2835 2837 2838 2841 2955 2957 3438 2237 2238 2240 2241 2352 2353 2354 2834 2835 2836 2838 2841 2955 2957 3438 2835 2836 2837 2840 2841 3436 3438 3442 2568 2569 2571 2840 2841 2842 3159 3442 2838 2839 2841 2842 3159 3436 3438 3442 2238 2239 2240 2241 2568 2569 2571 2835 2836 2837 2838 2839 2840 2842 3159 3436 3438 3442 2839 2840 2841 3157 3159 3440 3442 3446 2245 2246 2247 2844 2846 2852 2853 3450 2843 2845 2846 2852 2853 3173 3213 3450 2627 2844 2846 3173 3207 3210 3213 3450 2242 2245 2246 2247 2623 2624 2626 2627 2843 2844 2845 2852 2853 3173 3207 3210 3213 3450 2249 2250 2251 2848 2851 2857 2858 3456 2847 2849 2851 2857 2858 3455 3456 3460 2848 2850 2851 2853 2854 3455 3456 3460 2244 2245 2247 2849 2851 2853 2854 3460 2243 2244 2245 2247 2249 2250 2251 2847 2848 2849 2850 2853 2854 2857 2858 3455 3456 3460 2843 2844 2846 2853 2854 3448 3450 3460 2244 2245 2246 2247 2843 2844 2846 2849 2850 2851 2852 2854 3448 3450 3460 2849 2850 2851 2852 2853 3448 3450 3460 2276 2278 2279 2856 2858 2884 2885 3464 2855 2857 2858 2884 2885 3453 3456 3464 2847 2848 2851 2856 2858 3453 3456 3464 2248 2249 2250 2251 2276 2278 2279 2847 2848 2851 2855 2856 2857 2884 2885 3453 3456 3464 2336 2337 2338 2860 2862 2939 2940 3468 2859 2861 2862 2863 2867 2939 2940 3468 2256 2257 2260 2860 2862 2863 2867 3468 2252 2253 2254 2255 2256 2257 2260 2336 2337 2338 2859 2860 2861 2863 2867 2939 2940 3468 2860 2861 2862 2864 2867 3467 3468 3472 2863 2865 2867 3467 3468 3471 3472 3476 2864 2866 2867 2868 2871 3471 3472 3476 2257 2258 2260 2865 2867 2868 2871 3476 2256 2257 2258 2260 2860 2861 2862 2863 2864 2865 2866 2868 2871 3467 3468 3471 3472 3476 2865 2866 2867 2869 2871 3475 3476 3480 2868 2870 2871 2872 2875 3475 3476 3480 2261 2262 2264 2869 2871 2872 2875 3480 2257 2258 2259 2260 2261 2262 2264 2865 2866 2867 2868 2869 2870 2872 2875 3475 3476 3480 2869 2870 2871 2873 2875 3479 3480 3483 2872 2874 2875 2876 2878 3479 3480 3483 2265 2266 2268 2873 2875 2876 2878 3483 2261 2262 2263 2264 2265 2266 2268 2869 2870 2871 2872 2873 2874 2876 2878 3479 3480 3483 2873 2874 2875 2877 2878 2879 2882 3483 2272 2273 2275 2876 2878 2879 2882 3483 2265 2266 2267 2268 2269 2270 2271 2272 2273 2275 2873 2874 2875 2876 2877 2879 2882 3483 2876 2877 2878 2880 2882 3482 3483 3487 2879 2881 2882 2883 2885 3482 3483 3487 2277 2278 2279 2880 2882 2883 2885 3487 2272 2273 2274 2275 2277 2278 2279 2876 2877 2878 2879 2880 2881 2883 2885 3482 3483 3487 2880 2881 2882 2884 2885 3461 3464 3487 2855 2856 2858 2883 2885 3461 3464 3487 2276 2277 2278 2279 2855 2856 2858 2880 2881 2882 2883 2884 3461 3464 3487 2292 2293 2294 2887 2890 2896 2897 3492 2886 2889 2890 2896 2897 3490 3492 3494 2816 2818 2819 2889 2890 3422 3425 3494 2887 2888 2890 3422 3425 3490 3492 3494 2280 2281 2282 2283 2292 2293 2294 2816 2818 2819 2886 2887 2888 2889 2896 2897 3422 3425 3490 3492 3494 2300 2301 2302 2893 2894 2902 2904 3498 2288 2290 2291 2893 2894 2895 2896 3498 2891 2892 2894 2895 2896 2902 2904 3498 2284 2285 2286 2287 2288 2290 2291 2300 2301 2302 2891 2892 2893 2895 2896 2902 2904 3498 2892 2893 2894 2896 2897 3488 3492 3498 2288 2289 2290 2291 2292 2293 2294 2886 2887 2890 2892 2893 2894 2895 2897 3488 3492 3498 2886 2887 2890 2895 2896 3488 3492 3498 2299 2301 2302 2899 2901 2903 2904 3504 2898 2900 2901 2903 2904 2905 2909 3504 2303 2304 2307 2899 2901 2905 2909 3504 2295 2296 2297 2298 2299 2301 2302 2303 2304 2307 2898 2899 2900 2903 2904 2905 2909 3504 2891 2893 2894 2903 2904 3496 3498 3504 2898 2899 2901 2902 2904 3496 3498 3504 2299 2300 2301 2302 2891 2893 2894 2898 2899 2901 2902 2903 3496 3498 3504 2899 2900 2901 2906 2909 3503 3504 3509 2905 2907 2909 3503 3504 3508 3509 3513 2906 2908 2909 2910 2913 3508 3509 3513 2304 2305 2307 2907 2909 2910 2913 3513 2303 2304 2305 2307 2899 2900 2901 2905 2906 2907 2908 2910 2913 3503 3504 3508 3509 3513 2907 2908 2909 2911 2913 3512 3513 3517 2910 2912 2913 2914 2917 3512 3513 3517 2308 2309 2311 2911 2913 2914 2917 3517 2304 2305 2306 2307 2308 2309 2311 2907 2908 2909 2910 2911 2912 2914 2917 3512 3513 3517 2911 2912 2913 2915 2917 3516 3517 3520 2914 2916 2917 2918 2920 3516 3517 3520 2312 2313 2315 2915 2917 2918 2920 3520 2308 2309 2310 2311 2312 2313 2315 2911 2912 2913 2914 2915 2916 2918 2920 3516 3517 3520 2915 2916 2917 2919 2920 2921 2925 3520 2319 2320 2323 2918 2920 2921 2925 3520 2312 2313 2314 2315 2316 2317 2318 2319 2320 2323 2915 2916 2917 2918 2919 2921 2925 3520 2918 2919 2920 2922 2925 3519 3520 3525 2921 2923 2925 3519 3520 3524 3525 3528 2922 2924 2925 2926 2928 3524 3525 3528 2320 2321 2323 2923 2925 2926 2928 3528 2319 2320 2321 2323 2918 2919 2920 2921 2922 2923 2924 2926 2928 3519 3520 3524 3525 3528 2923 2924 2925 2927 2928 2929 2933 3528 2327 2328 2331 2926 2928 2929 2933 3528 2320 2321 2322 2323 2324 2325 2326 2327 2328 2331 2923 2924 2925 2926 2927 2929 2933 3528 2926 2927 2928 2930 2933 3527 3528 3533 2929 2931 2933 3527 3528 3532 3533 3537 2930 2932 2933 2934 2937 3532 3533 3537 2328 2329 2331 2931 2933 2934 2937 3537 2327 2328 2329 2331 2926 2927 2928 2929 2930 2931 2932 2934 2937 3527 3528 3532 3533 3537 2931 2932 2933 2935 2937 3536 3537 3540 2934 2936 2937 2938 2940 3536 3537 3540 2332 2333 2335 2935 2937 2938 2940 3540 2328 2329 2330 2331 2332 2333 2335 2931 2932 2933 2934 2935 2936 2938 2940 3536 3537 3540 2935 2936 2937 2939 2940 3465 3468 3540 2859 2860 2862 2938 2940 3465 3468 3540 2332 2333 2334 2335 2336 2337 2338 2859 2860 2862 2935 2936 2937 2938 2939 3465 3468 3540 2369 2370 2374 2942 2944 2969 2970 3544 2941 2943 2944 2969 2970 3544 3545 3549 2942 2944 2945 2946 2948 3544 3545 3549 2339 2341 2342 2343 2369 2370 2374 2941 2942 2943 2945 2946 2948 2969 2970 3544 3545 3549 2341 2342 2343 2943 2944 2946 2948 3549 2943 2944 2945 2947 2948 3549 3550 3551 2946 2948 2949 2950 2952 3549 3550 3551 2340 2341 2342 2343 2344 2345 2346 2943 2944 2945 2946 2947 2949 2950 2952 3549 3550 3551 2344 2345 2346 2947 2948 2950 2952 3551 2947 2948 2949 2951 2952 3546 3551 3556 2950 2952 2953 2954 2957 3546 3551 3556 2344 2345 2346 2347 2348 2349 2350 2947 2948 2949 2950 2951 2953 2954 2957 3546 3551 3556 2348 2349 2350 2951 2952 2954 2957 3556 2951 2952 2953 2956 2957 3556 3557 3561 2834 2836 2837 2956 2957 3435 3438 3561 2954 2955 2957 3435 3438 3556 3557 3561 2348 2349 2350 2351 2352 2353 2354 2834 2836 2837 2951 2952 2953 2954 2955 2956 3435 3438 3556 3557 3561 2376 2377 2378 2959 2960 2972 2974 3565 2958 2960 2961 2966 2967 2972 2974 3565 2355 2359 2360 2361 2376 2377 2378 2958 2959 2961 2966 2967 2972 2974 3565 2359 2360 2361 2959 2960 2966 2967 3565 2366 2367 2368 2963 2964 2965 2967 3567 2356 2357 2358 2366 2367 2368 2962 2964 2965 2967 3567 2962 2963 2965 2967 3567 2962 2963 2964 2966 2967 3563 3565 3567 2959 2960 2961 2965 2967 3563 3565 3567 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2959 2960 2961 2962 2963 2964 2965 2966 3563 3565 3567 2969 2970 3541 3544 3570 2369 2370 2371 2372 2373 2374 2941 2942 2944 2968 2970 3541 3544 3570 2941 2942 2944 2968 2969 3541 3544 3570 2379 2380 2382 2973 2974 2978 2979 3575 2958 2959 2960 2973 2974 3562 3565 3575 2971 2972 2974 2978 2979 3562 3565 3575 2375 2376 2377 2378 2379 2380 2382 2958 2959 2960 2971 2972 2973 2978 2979 3562 3565 3575 2380 2382 2383 2976 2978 2980 2982 3578 2975 2977 2978 2980 2982 3578 3579 3581 2976 2978 2979 3572 3575 3578 3579 3581 2379 2380 2382 2383 2971 2973 2974 2975 2976 2977 2979 2980 2982 3572 3575 3578 3579 3581 2971 2973 2974 2977 2978 3572 3575 3581 2975 2976 2978 2982 2983 3576 3578 3585 2388 2390 2391 2982 2983 2988 2990 3585 2380 2381 2382 2383 2388 2390 2391 2975 2976 2978 2980 2981 2983 2988 2990 3576 3578 3585 2980 2981 2982 2988 2990 3576 3578 3585 2714 2715 2716 2985 2986 3320 3322 3589 2984 2986 2987 2989 2990 3320 3322 3589 2384 2385 2386 2387 2389 2390 2391 2714 2715 2716 2984 2985 2987 2989 2990 3320 3322 3589 2389 2390 2391 2985 2986 2989 2990 3589 2981 2982 2983 2990 2991 3584 3585 3593 2985 2986 2987 2990 2991 3589 3590 3593 2388 2389 2390 2391 2981 2982 2983 2985 2986 2987 2988 2989 2991 3584 3585 3589 3590 3593 2988 2989 2990 3584 3585 3589 3590 3593 2831 2832 2833 2994 2995 3432 3434 3597 2393 2394 2395 2397 2398 2994 2995 2997 2998 3596 3597 3600 2392 2393 2394 2395 2397 2398 2831 2832 2833 2992 2993 2995 2997 2998 3432 3434 3596 3597 3600 2992 2993 2994 2997 2998 3432 3434 3596 3597 3600 2396 2397 2398 2400 2401 2997 2998 3000 3001 3599 3600 3603 2393 2394 2395 2396 2397 2398 2400 2401 2993 2994 2995 2996 2998 3000 3001 3596 3597 3599 3600 3603 2993 2994 2995 2996 2997 3000 3001 3596 3597 3599 3600 3603 2399 2400 2401 2403 2404 3000 3001 3003 3004 3602 3603 3606 2396 2397 2398 2399 2400 2401 2403 2404 2996 2997 2998 2999 3001 3003 3004 3599 3600 3602 3603 3606 2996 2997 2998 2999 3000 3003 3004 3599 3600 3602 3603 3606 2402 2403 2404 2406 2407 3003 3004 3006 3007 3605 3606 3609 2399 2400 2401 2402 2403 2404 2406 2407 2999 3000 3001 3002 3004 3006 3007 3602 3603 3605 3606 3609 2999 3000 3001 3002 3003 3006 3007 3602 3603 3605 3606 3609 2405 2406 2407 2409 2410 3006 3007 3009 3010 3608 3609 3612 2402 2403 2404 2405 2406 2407 2409 2410 3002 3003 3004 3005 3007 3009 3010 3605 3606 3608 3609 3612 3002 3003 3004 3005 3006 3009 3010 3605 3606 3608 3609 3612 2408 2409 2410 2412 2413 3009 3010 3012 3013 3611 3612 3615 2405 2406 2407 2408 2409 2410 2412 2413 3005 3006 3007 3008 3010 3012 3013 3608 3609 3611 3612 3615 3005 3006 3007 3008 3009 3012 3013 3608 3609 3611 3612 3615 2411 2412 2413 2415 2416 3012 3013 3015 3016 3614 3615 3618 2408 2409 2410 2411 2412 2413 2415 2416 3008 3009 3010 3011 3013 3015 3016 3611 3612 3614 3615 3618 3008 3009 3010 3011 3012 3015 3016 3611 3612 3614 3615 3618 2414 2415 2416 2418 2419 3015 3016 3018 3019 3617 3618 3621 2411 2412 2413 2414 2415 2416 2418 2419 3011 3012 3013 3014 3016 3018 3019 3614 3615 3617 3618 3621 3011 3012 3013 3014 3015 3018 3019 3614 3615 3617 3618 3621 2417 2418 2419 2421 2422 3018 3019 3021 3022 3620 3621 3624 2414 2415 2416 2417 2418 2419 2421 2422 3014 3015 3016 3017 3019 3021 3022 3617 3618 3620 3621 3624 3014 3015 3016 3017 3018 3021 3022 3617 3618 3620 3621 3624 2420 2421 2422 2424 2425 3021 3022 3024 3025 3623 3624 3627 2417 2418 2419 2420 2421 2422 2424 2425 3017 3018 3019 3020 3022 3024 3025 3620 3621 3623 3624 3627 3017 3018 3019 3020 3021 3024 3025 3620 3621 3623 3624 3627 2423 2424 2425 2429 2430 3024 3025 3029 3030 3626 3627 3632 2420 2421 2422 2423 2424 2425 2429 2430 3020 3021 3022 3023 3025 3029 3030 3623 3624 3626 3627 3632 3020 3021 3022 3023 3024 3029 3030 3623 3624 3626 3627 3632 3027 3028 3029 3030 3630 3631 3632 2426 2427 2428 2429 2430 3026 3028 3029 3030 3630 3631 3632 2426 2427 2428 2429 2430 3026 3027 3029 3030 3630 3631 3632 2423 2424 2425 2426 2427 2428 2429 2430 3023 3024 3025 3026 3027 3028 3030 3626 3627 3630 3631 3632 3023 3024 3025 3026 3027 3028 3029 3626 3627 3630 3631 3632 2691 2695 2696 3032 3034 3292 3293 3637 3031 3033 3034 3035 3038 3292 3293 3637 2435 2436 2438 3032 3034 3035 3038 3637 2431 2432 2433 2434 2435 2436 2438 2691 2695 2696 3031 3032 3033 3035 3038 3292 3293 3637 3032 3033 3034 3036 3038 3636 3637 3641 3035 3037 3038 3039 3042 3636 3637 3641 2439 2440 2442 3036 3038 3039 3042 3641 2435 2436 2437 2438 2439 2440 2442 3032 3033 3034 3035 3036 3037 3039 3042 3636 3637 3641 3036 3037 3038 3040 3042 3640 3641 3644 3039 3041 3042 3043 3047 3640 3641 3644 2446 2447 2449 3040 3042 3043 3047 3644 2439 2440 2441 2442 2443 2444 2445 2446 2447 2449 3036 3037 3038 3039 3040 3041 3043 3047 3640 3641 3644 3040 3041 3042 3044 3047 3643 3644 3649 3043 3045 3047 3643 3644 3648 3649 3653 3044 3046 3047 3053 3054 3648 3649 3653 2450 2451 2453 3045 3047 3053 3054 3653 2446 2447 2448 2449 2450 2451 2453 3040 3041 3042 3043 3044 3045 3046 3053 3054 3643 3644 3648 3649 3653 2454 2455 2457 3050 3051 3052 3053 3656 2461 3050 3051 3055 3057 3058 3060 3656 2454 2455 2457 2458 2461 3048 3049 3051 3052 3053 3055 3057 3058 3060 3656 3048 3049 3050 3052 3053 3058 3060 3656 3048 3050 3051 3053 3054 3652 3653 3656 2450 2451 2452 2453 2454 2455 2457 3045 3046 3047 3048 3050 3051 3052 3054 3652 3653 3656 3045 3046 3047 3052 3053 3652 3653 3656 2461 3049 3050 3056 3057 3059 3060 3659 3055 3057 3059 3060 3659 2455 2456 2457 2458 2459 2460 2461 3049 3050 3055 3056 3059 3060 3659 3049 3050 3051 3060 3061 3655 3656 3661 3055 3056 3057 3060 3061 3659 3660 3661 2461 3049 3050 3051 3055 3056 3057 3058 3059 3061 3655 3656 3659 3660 3661 3058 3059 3060 3655 3656 3659 3660 3661 2466 2467 2469 3064 3065 3067 3068 3664 2492 2493 2495 3064 3065 3091 3092 3664 2462 2463 2464 2465 2466 2467 2469 2492 2493 2495 3062 3063 3065 3067 3068 3091 3092 3664 3062 3063 3064 3067 3068 3091 3092 3664 2467 2468 2469 3068 3069 3070 3071 3666 3062 3064 3065 3068 3069 3664 3665 3666 2466 2467 2468 2469 3062 3064 3065 3066 3067 3069 3070 3071 3664 3665 3666 3066 3067 3068 3070 3071 3664 3665 3666 3066 3068 3069 3071 3072 3073 3074 3666 2467 2468 2469 2470 2471 2472 2473 3066 3068 3069 3070 3072 3073 3074 3666 2471 2472 2473 3070 3071 3073 3074 3666 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 3070 3071 3072 3074 3666 3070 3071 3072 3073 3666 3076 3077 3079 3129 3130 3131 3135 3670 2547 2548 2550 3075 3077 3079 3129 3670 3075 3076 3078 3079 3129 3670 3671 3675 3077 3079 3080 3081 3083 3670 3671 3675 2483 2488 2489 2490 2547 2548 2550 3075 3076 3077 3078 3080 3081 3083 3129 3670 3671 3675 2488 2489 2490 3078 3079 3081 3083 3675 3078 3079 3080 3082 3083 3675 3676 3677 3081 3083 3084 3085 3089 3675 3676 3677 2484 2485 2486 2487 2488 2489 2490 2491 2502 2503 3078 3079 3080 3081 3082 3084 3085 3089 3675 3676 3677 2491 2502 2503 3082 3083 3085 3089 3677 3082 3083 3084 3086 3089 3673 3677 3681 3085 3088 3089 3673 3677 3681 3682 3685 2502 2503 2504 3088 3089 3090 3091 3685 3086 3087 3089 3090 3091 3681 3682 3685 2491 2502 2503 2504 3082 3083 3084 3085 3086 3087 3088 3090 3091 3673 3677 3681 3682 3685 3087 3088 3089 3091 3092 3662 3664 3685 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 3063 3064 3065 3087 3088 3089 3090 3092 3662 3664 3685 3063 3064 3065 3090 3091 3662 3664 3685 2522 2525 2526 3096 3097 3100 3102 3690 2563 2564 2566 3098 3099 3149 3151 3690 2512 2513 2515 3096 3097 3098 3099 3690 2505 2506 2507 2508 2509 2510 2511 2512 2513 2515 2522 2525 2526 3093 3095 3097 3098 3099 3100 3102 3690 3093 3095 3096 3098 3099 3100 3102 3690 3094 3095 3096 3097 3099 3149 3151 3690 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2563 2564 2566 3094 3095 3096 3097 3098 3149 3151 3690 3093 3096 3097 3101 3102 3687 3690 3694 3100 3102 3103 3106 3107 3687 3690 3694 2522 2524 2525 2526 3093 3096 3097 3100 3101 3103 3106 3107 3687 3690 3694 2524 2525 2526 3101 3102 3106 3107 3694 2528 2529 2530 3105 3107 3110 3111 3698 3104 3106 3107 3110 3111 3691 3694 3698 3101 3102 3103 3105 3107 3691 3694 3698 2523 2524 2525 2526 2528 2529 2530 3101 3102 3103 3104 3105 3106 3110 3111 3691 3694 3698 2532 2533 2534 3109 3111 3114 3115 3702 3108 3110 3111 3114 3115 3695 3698 3702 3104 3105 3107 3109 3111 3695 3698 3702 2527 2528 2529 2530 2532 2533 2534 3104 3105 3107 3108 3109 3110 3114 3115 3695 3698 3702 2536 2537 2538 3113 3115 3118 3119 3706 3112 3114 3115 3118 3119 3699 3702 3706 3108 3109 3111 3113 3115 3699 3702 3706 2531 2532 2533 2534 2536 2537 2538 3108 3109 3111 3112 3113 3114 3118 3119 3699 3702 3706 2540 2541 2542 3117 3119 3122 3123 3710 3116 3118 3119 3122 3123 3703 3706 3710 3112 3113 3115 3117 3119 3703 3706 3710 2535 2536 2537 2538 2540 2541 2542 3112 3113 3115 3116 3117 3118 3122 3123 3703 3706 3710 2544 2545 2546 3121 3123 3126 3127 3714 3120 3122 3123 3126 3127 3707 3710 3714 3116 3117 3119 3121 3123 3707 3710 3714 2539 2540 2541 2542 2544 2545 2546 3116 3117 3119 3120 3121 3122 3126 3127 3707 3710 3714 2548 2549 2550 3125 3127 3128 3129 3716 3124 3126 3127 3128 3129 3711 3714 3716 3120 3121 3123 3125 3127 3711 3714 3716 2543 2544 2545 2546 2548 2549 2550 3120 3121 3123 3124 3125 3126 3128 3129 3711 3714 3716 3124 3125 3127 3129 3130 3132 3135 3716 2547 2548 2549 2550 3075 3076 3077 3079 3124 3125 3127 3128 3130 3131 3132 3135 3670 3716 3075 3128 3129 3131 3132 3135 3670 3716 3075 3129 3130 3135 3136 3668 3670 3721 3128 3129 3130 3133 3135 3716 3717 3727 3132 3134 3135 3716 3717 3727 3728 3729 3133 3135 3136 3718 3721 3727 3728 3729 3075 3128 3129 3130 3131 3132 3133 3134 3136 3668 3670 3716 3717 3718 3721 3727 3728 3729 3131 3134 3135 3668 3670 3718 3721 3729 2560 2561 2562 3138 3140 3147 3148 3734 3137 3139 3140 3142 3143 3147 3148 3734 2555 2556 2558 3138 3140 3142 3143 3734 2551 2552 2553 2554 2555 2556 2558 2560 2561 2562 3137 3138 3139 3142 3143 3147 3148 3734 2776 3142 3143 3144 3374 3377 3381 3734 2555 2556 2557 2558 2772 2773 2775 2776 3138 3139 3140 3141 3143 3144 3374 3377 3381 3734 3138 3139 3140 3141 3142 3144 3381 3734 3141 3142 3143 3378 3381 3733 3734 3736 2670 2671 2672 3146 3148 3261 3262 3742 3145 3147 3148 3261 3262 3731 3734 3742 3137 3138 3140 3146 3148 3731 3734 3742 2559 2560 2561 2562 2670 2671 2672 3137 3138 3140 3145 3146 3147 3261 3262 3731 3734 3742 3094 3098 3099 3151 3152 3689 3690 3746 2564 2566 2567 3151 3152 3153 3155 3746 2563 2564 2566 2567 3094 3098 3099 3149 3150 3152 3153 3155 3689 3690 3746 3149 3150 3151 3153 3155 3689 3690 3746 3150 3151 3152 3155 3156 3745 3746 3750 2577 2582 2583 3155 3156 3165 3170 3750 2564 2565 2566 2567 2577 2582 2583 3150 3151 3152 3153 3154 3156 3165 3170 3745 3746 3750 3153 3154 3155 3165 3170 3745 3746 3750 2842 3158 3159 3172 3440 3442 3446 3755 3157 3159 3160 3161 3163 3172 3446 3755 2568 2569 2570 2571 2839 2840 2841 2842 3157 3158 3160 3161 3163 3172 3440 3442 3446 3755 2569 2570 2571 3158 3159 3161 3163 3755 3158 3159 3160 3162 3163 3755 3756 3757 3161 3163 3164 3166 3168 3755 3756 3757 2569 2570 2571 2572 2573 2574 2575 3158 3159 3160 3161 3162 3164 3166 3168 3755 3756 3757 2573 2574 2575 3162 3163 3166 3168 3757 3154 3155 3156 3170 3171 3749 3750 3761 3162 3163 3164 3167 3168 3752 3757 3761 3166 3168 3169 3170 3171 3752 3757 3761 2573 2574 2575 2576 2578 2579 2580 3162 3163 3164 3166 3167 3169 3170 3171 3752 3757 3761 2578 2579 2580 3167 3168 3170 3171 3761 2577 2578 2579 2580 2581 2582 2583 3154 3155 3156 3165 3167 3168 3169 3171 3749 3750 3761 3165 3167 3168 3169 3170 3749 3750 3761 3157 3158 3159 3444 3446 3753 3755 3767 2844 2845 2846 3213 3214 3449 3450 3771 2601 2602 2603 3175 3177 3190 3191 3778 3174 3176 3177 3178 3180 3190 3191 3778 2588 2589 2591 3175 3177 3178 3180 3778 2584 2585 2586 2587 2588 2589 2591 2601 2602 2603 3174 3175 3176 3178 3180 3190 3191 3778 3175 3176 3177 3179 3180 3281 3284 3778 2683 2684 2686 3178 3180 3281 3284 3778 2588 2589 2590 2591 2683 2684 2686 3175 3176 3177 3178 3179 3281 3284 3778 2620 2621 2622 3182 3184 3205 3206 3782 3181 3183 3184 3185 3187 3205 3206 3782 2596 2597 2599 3182 3184 3185 3187 3782 2592 2593 2594 2595 2596 2597 2599 2620 2621 2622 3181 3182 3183 3185 3187 3205 3206 3782 3182 3183 3184 3186 3187 3188 3191 3782 2600 2601 2603 3185 3187 3188 3191 3782 2596 2597 2598 2599 2600 2601 2603 3182 3183 3184 3185 3186 3188 3191 3782 3185 3186 3187 3189 3191 3781 3782 3785 3188 3190 3191 3775 3778 3781 3782 3785 3174 3175 3177 3189 3191 3775 3778 3785 2600 2601 2602 2603 3174 3175 3177 3185 3186 3187 3188 3189 3190 3775 3778 3781 3782 3785 2624 2625 2626 3193 3195 3209 3210 3790 3192 3194 3195 3196 3198 3209 3210 3790 2608 2609 2611 3193 3195 3196 3198 3790 2604 2605 2606 2607 2608 2609 2611 2624 2625 2626 3192 3193 3194 3196 3198 3209 3210 3790 3193 3194 3195 3197 3198 3199 3202 3790 2615 2616 2618 3196 3198 3199 3202 3790 2608 2609 2610 2611 2612 2613 2614 2615 2616 2618 3193 3194 3195 3196 3197 3199 3202 3790 3196 3197 3198 3200 3202 3789 3790 3793 3199 3201 3202 3203 3206 3789 3790 3793 2619 2620 2622 3200 3202 3203 3206 3793 2615 2616 2617 2618 2619 2620 2622 3196 3197 3198 3199 3200 3201 3203 3206 3789 3790 3793 3200 3201 3202 3204 3206 3792 3793 3796 3203 3205 3206 3779 3782 3792 3793 3796 3181 3182 3184 3204 3206 3779 3782 3796 2619 2620 2621 2622 3181 3182 3184 3200 3201 3202 3203 3204 3205 3779 3782 3792 3793 3796 2627 2845 2846 3208 3210 3211 3213 3800 3207 3209 3210 3211 3213 3787 3790 3800 3192 3193 3195 3208 3210 3787 3790 3800 2623 2624 2625 2626 2627 2845 2846 3192 3193 3195 3207 3208 3209 3211 3213 3787 3790 3800 3207 3208 3210 3212 3213 3800 3801 3802 3211 3213 3214 3769 3771 3800 3801 3802 2627 2844 2845 2846 3173 3207 3208 3210 3211 3212 3214 3449 3450 3769 3771 3800 3801 3802 3173 3212 3213 3449 3450 3769 3771 3802 2673 2675 2676 3218 3219 3263 3266 3806 2634 2635 2636 3217 3218 3225 3226 3810 3216 3218 3219 3225 3226 3804 3806 3810 2628 2634 2635 2636 2673 2675 2676 3215 3216 3217 3219 3225 3226 3263 3266 3804 3806 3810 3215 3217 3218 3263 3266 3804 3806 3810 2630 2632 2633 3221 3223 3224 3225 3815 3220 3222 3223 3224 3225 3227 3230 3815 2638 2639 2640 3221 3223 3227 3230 3815 2629 2630 2632 2633 2638 2639 2640 3220 3221 3222 3224 3225 3227 3230 3815 3220 3221 3223 3225 3226 3808 3810 3815 2630 2631 2632 2633 2634 2635 2636 3216 3217 3218 3220 3221 3223 3224 3226 3808 3810 3815 3216 3217 3218 3224 3225 3808 3810 3815 3221 3222 3223 3228 3230 3812 3815 3819 3227 3229 3230 3231 3235 3812 3815 3819 2641 2642 2645 3228 3230 3231 3235 3819 2637 2638 2639 2640 2641 2642 2645 3221 3222 3223 3227 3228 3229 3231 3235 3812 3815 3819 3228 3229 3230 3232 3235 3818 3819 3824 3231 3233 3235 3818 3819 3823 3824 3827 3232 3234 3235 3236 3238 3823 3824 3827 2642 2643 2645 3233 3235 3236 3238 3827 2641 2642 2643 2645 3228 3229 3230 3231 3232 3233 3234 3236 3238 3818 3819 3823 3824 3827 3233 3234 3235 3237 3238 3239 3242 3827 2649 2650 2652 3236 3238 3239 3242 3827 2642 2643 2644 2645 2646 2647 2648 2649 2650 2652 3233 3234 3235 3236 3237 3239 3242 3827 3236 3237 3238 3240 3242 3826 3827 3831 3239 3241 3242 3243 3247 3826 3827 3831 2653 2654 2657 3240 3242 3243 3247 3831 2649 2650 2651 2652 2653 2654 2657 3236 3237 3238 3239 3240 3241 3243 3247 3826 3827 3831 3240 3241 3242 3244 3247 3830 3831 3836 3243 3245 3247 3830 3831 3835 3836 3839 3244 3246 3247 3248 3250 3835 3836 3839 2654 2655 2657 3245 3247 3248 3250 3839 2653 2654 2655 2657 3240 3241 3242 3243 3244 3245 3246 3248 3250 3830 3831 3835 3836 3839 3245 3246 3247 3249 3250 3251 3254 3839 2661 2662 2664 3248 3250 3251 3254 3839 2654 2655 2656 2657 2658 2659 2660 2661 2662 2664 3245 3246 3247 3248 3249 3251 3254 3839 3248 3249 3250 3252 3254 3838 3839 3843 3251 3253 3254 3255 3258 3838 3839 3843 2665 2666 2668 3252 3254 3255 3258 3843 2661 2662 2663 2664 2665 2666 2668 3248 3249 3250 3251 3252 3253 3255 3258 3838 3839 3843 3252 3253 3254 3256 3258 3842 3843 3847 3255 3257 3258 3259 3262 3842 3843 3847 2669 2670 2672 3256 3258 3259 3262 3847 2665 2666 2667 2668 2669 2670 2672 3252 3253 3254 3255 3256 3257 3259 3262 3842 3843 3847 3256 3257 3258 3260 3262 3846 3847 3849 3259 3261 3262 3739 3742 3846 3847 3849 3145 3146 3148 3260 3262 3739 3742 3849 2669 2670 2671 2672 3145 3146 3148 3256 3257 3258 3259 3260 3261 3739 3742 3846 3847 3849 3215 3218 3219 3265 3266 3267 3806 3855 2677 2680 2681 3265 3266 3268 3271 3855 3263 3264 3266 3267 3268 3271 3806 3855 2673 2674 2675 2676 2677 2680 2681 3215 3218 3219 3263 3264 3265 3267 3268 3271 3806 3855 3263 3265 3266 3806 3807 3852 3855 3859 3264 3265 3266 3270 3271 3853 3855 3863 2682 3270 3271 3272 3275 3276 3280 3863 3268 3269 3271 3272 3280 3853 3855 3863 2677 2679 2680 2681 2682 3264 3265 3266 3268 3269 3270 3272 3275 3276 3280 3853 3855 3863 3269 3270 3271 3279 3280 3861 3863 3868 2688 2689 2690 3274 3276 3287 3288 3872 3273 3275 3276 3277 3280 3287 3288 3872 2682 3269 3271 3274 3276 3277 3280 3872 2678 2679 2680 2681 2682 2688 2689 2690 3269 3271 3273 3274 3275 3277 3280 3287 3288 3872 3274 3275 3276 3278 3280 3871 3872 3876 3277 3279 3280 3865 3868 3871 3872 3876 3272 3278 3280 3861 3863 3865 3868 3876 2682 3269 3270 3271 3272 3274 3275 3276 3277 3278 3279 3861 3863 3865 3868 3871 3872 3876 3178 3179 3180 3282 3284 3777 3778 3880 3281 3283 3284 3285 3288 3777 3778 3880 2687 2688 2690 3282 3284 3285 3288 3880 2683 2684 2685 2686 2687 2688 2690 3178 3179 3180 3281 3282 3283 3285 3288 3777 3778 3880 3282 3283 3284 3286 3288 3879 3880 3883 3285 3287 3288 3869 3872 3879 3880 3883 3273 3274 3276 3286 3288 3869 3872 3883 2687 2688 2689 2690 3273 3274 3276 3282 3283 3284 3285 3286 3287 3869 3872 3879 3880 3883 2694 2695 2696 3290 3293 3294 3301 3888 3289 3291 3293 3294 3301 3886 3888 3892 3290 3292 3293 3634 3637 3886 3888 3892 3031 3032 3034 3291 3293 3634 3637 3892 2691 2694 2695 2696 3031 3032 3034 3289 3290 3291 3292 3294 3301 3634 3637 3886 3888 3892 3289 3290 3293 3300 3301 3885 3888 3897 2753 2754 2755 3296 3299 3355 3356 3903 3295 3297 3299 3355 3356 3902 3903 3905 3296 3298 3299 3301 3302 3902 3903 3905 2693 2694 2696 3297 3299 3301 3302 3905 2692 2693 2694 2696 2753 2754 2755 3295 3296 3297 3298 3301 3302 3355 3356 3902 3903 3905 3294 3301 3302 3885 3888 3897 3898 3905 2693 2694 2695 2696 3289 3290 3293 3294 3297 3298 3299 3300 3302 3885 3888 3897 3898 3905 3297 3298 3299 3300 3301 3897 3898 3905 2730 2731 2732 3305 3306 3336 3338 3910 2701 2703 2704 3305 3306 3307 3310 3910 3303 3304 3306 3307 3310 3336 3338 3910 2697 2698 2699 2700 2701 2703 2704 2730 2731 2732 3303 3304 3305 3307 3310 3336 3338 3910 3304 3305 3306 3309 3310 3908 3910 3914 2705 2707 2708 3309 3310 3311 3314 3914 3307 3308 3310 3311 3314 3908 3910 3914 2701 2702 2703 2704 2705 2707 2708 3304 3305 3306 3307 3308 3309 3311 3314 3908 3910 3914 3308 3309 3310 3313 3314 3912 3914 3918 2709 2711 2712 3313 3314 3315 3318 3918 3311 3312 3314 3315 3318 3912 3914 3918 2705 2706 2707 2708 2709 2711 2712 3308 3309 3310 3311 3312 3313 3315 3318 3912 3914 3918 3312 3313 3314 3317 3318 3916 3918 3922 2713 2715 2716 3317 3318 3319 3322 3922 3315 3316 3318 3319 3322 3916 3918 3922 2709 2710 2711 2712 2713 2715 2716 3312 3313 3314 3315 3316 3317 3319 3322 3916 3918 3922 3316 3317 3318 3321 3322 3920 3922 3926 2984 2985 2986 3321 3322 3587 3589 3926 3319 3320 3322 3587 3589 3920 3922 3926 2713 2714 2715 2716 2984 2985 2986 3316 3317 3318 3319 3320 3321 3587 3589 3920 3922 3926 2722 2723 2724 3324 3325 3329 3330 3931 3323 3325 3326 3329 3330 3331 3334 3931 2717 2718 2719 2720 2722 2723 2724 2725 2727 2728 3323 3324 3326 3329 3330 3331 3334 3931 2725 2727 2728 3324 3325 3331 3334 3931 2734 2735 2736 3328 3329 3339 3342 3933 3327 3329 3330 3339 3342 3930 3931 3933 2721 2722 2723 2724 2734 2735 2736 3323 3324 3325 3327 3328 3330 3339 3342 3930 3931 3933 3323 3324 3325 3328 3329 3930 3931 3933 3324 3325 3326 3333 3334 3928 3931 3938 2729 2731 2732 3333 3334 3335 3338 3938 3331 3332 3334 3335 3338 3928 3931 3938 2725 2726 2727 2728 2729 2731 2732 3324 3325 3326 3331 3332 3333 3335 3338 3928 3931 3938 3332 3333 3334 3337 3338 3936 3938 3942 3303 3305 3306 3337 3338 3907 3910 3942 3335 3336 3338 3907 3910 3936 3938 3942 2729 2730 2731 2732 3303 3305 3306 3332 3333 3334 3335 3336 3337 3907 3910 3936 3938 3942 3327 3328 3329 3340 3342 3927 3933 3947 3339 3341 3342 3343 3346 3927 3933 3947 2737 2739 2740 3340 3342 3343 3346 3947 2733 2734 2735 2736 2737 2739 2740 3327 3328 3329 3339 3340 3341 3343 3346 3927 3933 3947 3340 3341 3342 3344 3346 3946 3947 3951 3343 3345 3346 3347 3350 3946 3947 3951 2741 2742 2744 3344 3346 3347 3350 3951 2737 2738 2739 2740 2741 2742 2744 3340 3341 3342 3343 3344 3345 3347 3350 3946 3947 3951 3344 3345 3346 3348 3350 3950 3951 3955 3347 3349 3350 3351 3354 3950 3951 3955 2745 2746 2748 3348 3350 3351 3354 3955 2741 2742 2743 2744 2745 2746 2748 3344 3345 3346 3347 3348 3349 3351 3354 3950 3951 3955 3348 3349 3350 3352 3354 3954 3955 3957 3351 3353 3354 3356 3357 3954 3955 3957 2749 2750 2752 3352 3354 3356 3357 3957 2745 2746 2747 2748 2749 2750 2752 3348 3349 3350 3351 3352 3353 3356 3357 3954 3955 3957 3295 3296 3299 3356 3357 3899 3903 3957 2749 2750 2751 2752 2753 2754 2755 3295 3296 3299 3352 3353 3354 3355 3357 3899 3903 3957 3352 3353 3354 3355 3356 3899 3903 3957 2765 2766 2767 3359 3361 3367 3368 3962 3358 3360 3361 3363 3364 3367 3368 3962 2757 2758 2760 3359 3361 3363 3364 3962 2756 2757 2758 2760 2765 2766 2767 3358 3359 3360 3363 3364 3367 3368 3962 2777 2779 2780 3363 3364 3383 3385 3962 2757 2758 2759 2760 2761 2762 2763 2777 2779 2780 3359 3360 3361 3362 3364 3383 3385 3962 3359 3360 3361 3362 3363 3383 3385 3962 2769 2770 2771 3366 3368 3369 3373 3966 3365 3367 3368 3369 3373 3959 3962 3966 3358 3359 3361 3366 3368 3959 3962 3966 2764 2765 2766 2767 2769 2770 2771 3358 3359 3361 3365 3366 3367 3369 3373 3959 3962 3966 3365 3366 3368 3372 3373 3963 3966 3970 2773 2774 2775 3371 3373 3376 3377 3974 3370 3372 3373 3376 3377 3967 3970 3974 3369 3371 3373 3963 3966 3967 3970 3974 2768 2769 2770 2771 2773 2774 2775 3365 3366 3368 3369 3370 3371 3372 3376 3377 3963 3966 3967 3970 3974 2776 3141 3142 3375 3377 3380 3381 3979 3374 3376 3377 3380 3381 3971 3974 3979 3370 3371 3373 3375 3377 3971 3974 3979 2772 2773 2774 2775 2776 3141 3142 3370 3371 3373 3374 3375 3376 3380 3381 3971 3974 3979 3144 3379 3381 3382 3733 3734 3736 3983 3378 3380 3381 3382 3736 3976 3979 3983 3374 3375 3377 3379 3381 3976 3979 3983 2776 3141 3142 3143 3144 3374 3375 3377 3378 3379 3380 3382 3733 3734 3736 3976 3979 3983 3378 3379 3381 3735 3736 3980 3983 3987 3362 3363 3364 3385 3386 3961 3962 3990 2778 2779 2780 2782 2783 3385 3386 3388 3389 3989 3990 3993 2777 2778 2779 2780 2782 2783 3362 3363 3364 3383 3384 3386 3388 3389 3961 3962 3989 3990 3993 3383 3384 3385 3388 3389 3961 3962 3989 3990 3993 2781 2782 2783 2785 2786 3388 3389 3391 3392 3992 3993 3996 2778 2779 2780 2781 2782 2783 2785 2786 3384 3385 3386 3387 3389 3391 3392 3989 3990 3992 3993 3996 3384 3385 3386 3387 3388 3391 3392 3989 3990 3992 3993 3996 2784 2785 2786 2788 2789 3391 3392 3394 3395 3995 3996 3999 2781 2782 2783 2784 2785 2786 2788 2789 3387 3388 3389 3390 3392 3394 3395 3992 3993 3995 3996 3999 3387 3388 3389 3390 3391 3394 3395 3992 3993 3995 3996 3999 2787 2788 2789 2791 2792 3394 3395 3397 3398 3998 3999 4002 2784 2785 2786 2787 2788 2789 2791 2792 3390 3391 3392 3393 3395 3397 3398 3995 3996 3998 3999 4002 3390 3391 3392 3393 3394 3397 3398 3995 3996 3998 3999 4002 2790 2791 2792 2794 2795 3397 3398 3400 3401 4001 4002 4005 2787 2788 2789 2790 2791 2792 2794 2795 3393 3394 3395 3396 3398 3400 3401 3998 3999 4001 4002 4005 3393 3394 3395 3396 3397 3400 3401 3998 3999 4001 4002 4005 2793 2794 2795 2797 2798 3400 3401 3403 3404 4004 4005 4008 2790 2791 2792 2793 2794 2795 2797 2798 3396 3397 3398 3399 3401 3403 3404 4001 4002 4004 4005 4008 3396 3397 3398 3399 3400 3403 3404 4001 4002 4004 4005 4008 2796 2797 2798 2800 2801 3403 3404 3406 3407 4007 4008 4011 2793 2794 2795 2796 2797 2798 2800 2801 3399 3400 3401 3402 3404 3406 3407 4004 4005 4007 4008 4011 3399 3400 3401 3402 3403 3406 3407 4004 4005 4007 4008 4011 2799 2800 2801 2803 2804 3406 3407 3409 3410 4010 4011 4014 2796 2797 2798 2799 2800 2801 2803 2804 3402 3403 3404 3405 3407 3409 3410 4007 4008 4010 4011 4014 3402 3403 3404 3405 3406 3409 3410 4007 4008 4010 4011 4014 2802 2803 2804 2806 2807 3409 3410 3412 3413 4013 4014 4017 2799 2800 2801 2802 2803 2804 2806 2807 3405 3406 3407 3408 3410 3412 3413 4010 4011 4013 4014 4017 3405 3406 3407 3408 3409 3412 3413 4010 4011 4013 4014 4017 2805 2806 2807 2809 2810 3412 3413 3415 3416 4016 4017 4020 2802 2803 2804 2805 2806 2807 2809 2810 3408 3409 3410 3411 3413 3415 3416 4013 4014 4016 4017 4020 3408 3409 3410 3411 3412 3415 3416 4013 4014 4016 4017 4020 2808 2809 2810 2814 2815 3415 3416 3420 3421 4019 4020 4025 2805 2806 2807 2808 2809 2810 2814 2815 3411 3412 3413 3414 3416 3420 3421 4016 4017 4019 4020 4025 3411 3412 3413 3414 3415 3420 3421 4016 4017 4019 4020 4025 3418 3419 3420 3421 4023 4024 4025 2811 2812 2813 2814 2815 3417 3419 3420 3421 4023 4024 4025 2811 2812 2813 2814 2815 3417 3418 3420 3421 4023 4024 4025 2808 2809 2810 2811 2812 2813 2814 2815 3414 3415 3416 3417 3418 3419 3421 4019 4020 4023 4024 4025 3414 3415 3416 3417 3418 3419 3420 4019 4020 4023 4024 4025 2888 2889 2890 3424 3425 3426 3494 4030 2823 2825 2826 3424 3425 3427 3430 4030 3422 3423 3425 3426 3427 3430 3494 4030 2816 2817 2818 2819 2820 2821 2822 2823 2825 2826 2888 2889 2890 3422 3423 3424 3426 3427 3430 3494 4030 3422 3424 3425 3494 3495 4027 4030 4034 3423 3424 3425 3429 3430 4028 4030 4038 2830 2832 2833 3429 3430 3431 3434 4038 3427 3428 3430 3431 3434 4028 4030 4038 2823 2824 2825 2826 2827 2828 2829 2830 2832 2833 3423 3424 3425 3427 3428 3429 3431 3434 4028 4030 4038 3428 3429 3430 3433 3434 4036 4038 4042 2992 2994 2995 3433 3434 3595 3597 4042 3431 3432 3434 3595 3597 4036 4038 4042 2830 2831 2832 2833 2992 2994 2995 3428 3429 3430 3431 3432 3433 3595 3597 4036 4038 4042 2955 2956 2957 3437 3438 3559 3561 4046 2838 2840 2841 3437 3438 3439 3442 4046 3435 3436 3438 3439 3442 3559 3561 4046 2834 2835 2836 2837 2838 2840 2841 2955 2956 2957 3435 3436 3437 3439 3442 3559 3561 4046 3436 3437 3438 3441 3442 4044 4046 4050 2842 3157 3159 3441 3442 3445 3446 4050 3439 3440 3442 3445 3446 4044 4046 4050 2838 2839 2840 2841 2842 3157 3159 3436 3437 3438 3439 3440 3441 3445 3446 4044 4046 4050 3444 3446 3447 3765 3767 4053 4054 4056 3172 3443 3446 3447 3753 3755 3767 4056 3440 3441 3442 3446 3447 4048 4050 4056 2842 3157 3158 3159 3172 3440 3441 3442 3443 3444 3445 3447 3753 3755 3767 4048 4050 4056 3443 3444 3445 3446 3767 4048 4050 4056 2852 2853 2854 3450 3451 3459 3460 4060 3173 3213 3214 3450 3451 3452 3771 4060 2843 2844 2845 2846 2852 2853 2854 3173 3213 3214 3448 3449 3451 3452 3459 3460 3771 4060 3448 3449 3450 3452 3459 3460 3771 4060 3449 3450 3451 3771 3772 4059 4060 4064 2856 2857 2858 3454 3456 3463 3464 4068 3453 3455 3456 3457 3460 3463 3464 4068 2848 2849 2851 3454 3456 3457 3460 4068 2847 2848 2849 2851 2856 2857 2858 3453 3454 3455 3457 3460 3463 3464 4068 3454 3455 3456 3458 3460 4067 4068 4070 3457 3459 3460 4058 4060 4067 4068 4070 3448 3450 3451 3458 3460 4058 4060 4070 2848 2849 2850 2851 2852 2853 2854 3448 3450 3451 3454 3455 3456 3457 3458 3459 4058 4060 4067 4068 4070 2883 2884 2885 3462 3464 3486 3487 4075 3461 3463 3464 3486 3487 4065 4068 4075 3453 3454 3456 3462 3464 4065 4068 4075 2855 2856 2857 2858 2883 2884 2885 3453 3454 3456 3461 3462 3463 3486 3487 4065 4068 4075 2938 2939 2940 3466 3468 3539 3540 4079 3465 3467 3468 3469 3472 3539 3540 4079 2863 2864 2867 3466 3468 3469 3472 4079 2859 2860 2861 2862 2863 2864 2867 2938 2939 2940 3465 3466 3467 3469 3472 3539 3540 4079 3466 3467 3468 3470 3472 4078 4079 4084 3469 3471 3472 3473 3476 4078 4079 4084 2864 2865 2867 3470 3472 3473 3476 4084 2863 2864 2865 2867 3466 3467 3468 3469 3470 3471 3473 3476 4078 4079 4084 3470 3471 3472 3474 3476 4083 4084 4087 3473 3475 3476 3477 3480 4083 4084 4087 2868 2869 2871 3474 3476 3477 3480 4087 2864 2865 2866 2867 2868 2869 2871 3470 3471 3472 3473 3474 3475 3477 3480 4083 4084 4087 3474 3475 3476 3478 3480 4086 4087 4090 3477 3479 3480 3481 3483 4086 4087 4090 2872 2873 2875 3478 3480 3481 3483 4090 2868 2869 2870 2871 2872 2873 2875 3474 3475 3476 3477 3478 3479 3481 3483 4086 4087 4090 3478 3479 3480 3482 3483 3484 3487 4090 2879 2880 2882 3481 3483 3484 3487 4090 2872 2873 2874 2875 2876 2877 2878 2879 2880 2882 3478 3479 3480 3481 3482 3484 3487 4090 3481 3482 3483 3485 3487 4089 4090 4094 3484 3486 3487 4072 4075 4089 4090 4094 3461 3462 3464 3485 3487 4072 4075 4094 2879 2880 2881 2882 2883 2884 2885 3461 3462 3464 3481 3482 3483 3484 3485 3486 4072 4075 4089 4090 4094 2895 2896 2897 3489 3492 3498 3499 4099 3488 3491 3492 3498 3499 4097 4099 4101 2887 2889 2890 3491 3492 3493 3494 4101 3489 3490 3492 3493 3494 4097 4099 4101 2886 2887 2889 2890 2895 2896 2897 3488 3489 3490 3491 3493 3494 3498 3499 4097 4099 4101 3490 3491 3492 3494 3495 3500 4034 4101 2887 2888 2889 2890 3422 3424 3425 3426 3490 3491 3492 3493 3495 3500 4027 4030 4034 4101 3426 3493 3494 3500 4027 4030 4034 4101 2902 2903 2904 3497 3498 3501 3504 4105 3496 3498 3499 3501 3504 4096 4099 4105 2891 2892 2893 2894 2895 2896 2897 2902 2903 2904 3488 3489 3492 3496 3497 3499 3501 3504 4096 4099 4105 3488 3489 3492 3497 3498 4096 4099 4105 3493 3494 3495 4031 4034 4101 4102 4109 3496 3497 3498 3502 3504 4104 4105 4114 3501 3503 3504 3505 3509 4104 4105 4114 2905 2906 2909 3502 3504 3505 3509 4114 2898 2899 2900 2901 2902 2903 2904 2905 2906 2909 3496 3497 3498 3501 3502 3503 3505 3509 4104 4105 4114 3502 3503 3504 3506 3509 4113 4114 4119 3505 3507 3509 4113 4114 4118 4119 4123 3506 3508 3509 3510 3513 4118 4119 4123 2906 2907 2909 3507 3509 3510 3513 4123 2905 2906 2907 2909 3502 3503 3504 3505 3506 3507 3508 3510 3513 4113 4114 4118 4119 4123 3507 3508 3509 3511 3513 4122 4123 4127 3510 3512 3513 3514 3517 4122 4123 4127 2910 2911 2913 3511 3513 3514 3517 4127 2906 2907 2908 2909 2910 2911 2913 3507 3508 3509 3510 3511 3512 3514 3517 4122 4123 4127 3511 3512 3513 3515 3517 4126 4127 4130 3514 3516 3517 3518 3520 4126 4127 4130 2914 2915 2917 3515 3517 3518 3520 4130 2910 2911 2912 2913 2914 2915 2917 3511 3512 3513 3514 3515 3516 3518 3520 4126 4127 4130 3515 3516 3517 3519 3520 3521 3525 4130 2921 2922 2925 3518 3520 3521 3525 4130 2914 2915 2916 2917 2918 2919 2920 2921 2922 2925 3515 3516 3517 3518 3519 3521 3525 4130 3518 3519 3520 3522 3525 4129 4130 4135 3521 3523 3525 4129 4130 4134 4135 4138 3522 3524 3525 3526 3528 4134 4135 4138 2922 2923 2925 3523 3525 3526 3528 4138 2921 2922 2923 2925 3518 3519 3520 3521 3522 3523 3524 3526 3528 4129 4130 4134 4135 4138 3523 3524 3525 3527 3528 3529 3533 4138 2929 2930 2933 3526 3528 3529 3533 4138 2922 2923 2924 2925 2926 2927 2928 2929 2930 2933 3523 3524 3525 3526 3527 3529 3533 4138 3526 3527 3528 3530 3533 4137 4138 4142 3529 3531 3533 4137 4138 4141 4142 4146 3530 3532 3533 3534 3537 4141 4142 4146 2930 2931 2933 3531 3533 3534 3537 4146 2929 2930 2931 2933 3526 3527 3528 3529 3530 3531 3532 3534 3537 4137 4138 4141 4142 4146 3531 3532 3533 3535 3537 4145 4146 4149 3534 3536 3537 3538 3540 4145 4146 4149 2934 2935 2937 3535 3537 3538 3540 4149 2930 2931 2932 2933 2934 2935 2937 3531 3532 3533 3534 3535 3536 3538 3540 4145 4146 4149 3535 3536 3537 3539 3540 4076 4079 4149 3465 3466 3468 3538 3540 4076 4079 4149 2934 2935 2936 2937 2938 2939 2940 3465 3466 3468 3535 3536 3537 3538 3539 4076 4079 4149 2968 2969 2970 3542 3544 3570 3571 4155 3541 3543 3544 3570 3571 4155 4156 4157 3542 3544 3545 3547 3549 4155 4156 4157 2941 2942 2943 2944 2968 2969 2970 3541 3542 3543 3545 3547 3549 3570 3571 4155 4156 4157 2942 2943 2944 3543 3544 3547 3549 4157 2950 2951 2952 3551 3552 3554 3556 4161 3543 3544 3545 3548 3549 3553 4157 4161 3547 3549 3550 3551 3552 3553 4157 4161 2942 2943 2944 2945 2946 2947 2948 3543 3544 3545 3547 3548 3550 3551 3552 3553 4157 4161 2946 2947 2948 3548 3549 3551 3552 4161 2946 2947 2948 2949 2950 2951 2952 3546 3548 3549 3550 3552 3554 3556 4161 3546 3548 3549 3550 3551 3554 3556 4161 3547 3548 3549 4151 4157 4159 4161 4166 3546 3551 3552 3555 3556 4161 4162 4171 3554 3556 3557 3558 3561 4161 4162 4171 2950 2951 2952 2953 2954 2956 2957 3546 3551 3552 3554 3555 3557 3558 3561 4161 4162 4171 2954 2956 2957 3555 3556 3558 3561 4171 3555 3556 3557 3560 3561 4169 4171 4175 3435 3437 3438 3560 3561 4043 4046 4175 3558 3559 3561 4043 4046 4169 4171 4175 2954 2955 2956 2957 3435 3437 3438 3555 3556 3557 3558 3559 3560 4043 4046 4169 4171 4175 2972 2973 2974 3564 3565 3573 3575 4179 2965 2966 2967 3564 3565 3566 3567 4179 3562 3563 3565 3566 3567 3573 3575 4179 2958 2959 2960 2961 2965 2966 2967 2972 2973 2974 3562 3563 3564 3566 3567 3573 3575 4179 3563 3564 3565 3567 3568 4177 4179 4181 2962 2963 2964 2965 2966 2967 3563 3564 3565 3566 3568 4177 4179 4181 3566 3567 4177 4179 4181 3570 3571 4150 4155 4184 2968 2969 2970 3541 3542 3544 3569 3571 4150 4155 4184 3541 3542 3544 3569 3570 4150 4155 4184 2977 2978 2979 3574 3575 3581 3582 4190 3562 3564 3565 3574 3575 4176 4179 4190 3572 3573 3575 3581 3582 4176 4179 4190 2971 2972 2973 2974 2977 2978 2979 3562 3564 3565 3572 3573 3574 3581 3582 4176 4179 4190 2980 2982 2983 3577 3578 3583 3585 4193 3576 3578 3579 3580 3581 3583 3585 4193 2975 2976 2977 2978 2980 2982 2983 3576 3577 3579 3580 3581 3583 3585 4193 2976 2977 2978 3577 3578 3580 3581 4193 3577 3578 3579 3581 3582 4186 4190 4193 2976 2977 2978 2979 3572 3574 3575 3577 3578 3579 3580 3582 4186 4190 4193 3572 3574 3575 3580 3581 4186 4190 4193 3576 3577 3578 3585 3586 4191 4193 4197 2988 2990 2991 3585 3586 3591 3593 4197 2980 2981 2982 2983 2988 2990 2991 3576 3577 3578 3583 3584 3586 3591 3593 4191 4193 4197 3583 3584 3585 3591 3593 4191 4193 4197 3320 3321 3322 3588 3589 3924 3926 4201 3587 3589 3590 3592 3593 3924 3926 4201 2984 2985 2986 2987 2989 2990 2991 3320 3321 3322 3587 3588 3590 3592 3593 3924 3926 4201 2989 2990 2991 3588 3589 3592 3593 4201 3584 3585 3586 3593 3594 4196 4197 4205 3588 3589 3590 3593 3594 4201 4202 4205 2988 2989 2990 2991 3584 3585 3586 3588 3589 3590 3591 3592 3594 4196 4197 4201 4202 4205 3591 3592 3593 4196 4197 4201 4202 4205 3432 3433 3434 3597 3598 4040 4042 4209 2993 2994 2995 2997 2998 3597 3598 3600 3601 4208 4209 4212 2992 2993 2994 2995 2997 2998 3432 3433 3434 3595 3596 3598 3600 3601 4040 4042 4208 4209 4212 3595 3596 3597 3600 3601 4040 4042 4208 4209 4212 2996 2997 2998 3000 3001 3600 3601 3603 3604 4211 4212 4215 2993 2994 2995 2996 2997 2998 3000 3001 3596 3597 3598 3599 3601 3603 3604 4208 4209 4211 4212 4215 3596 3597 3598 3599 3600 3603 3604 4208 4209 4211 4212 4215 2999 3000 3001 3003 3004 3603 3604 3606 3607 4214 4215 4218 2996 2997 2998 2999 3000 3001 3003 3004 3599 3600 3601 3602 3604 3606 3607 4211 4212 4214 4215 4218 3599 3600 3601 3602 3603 3606 3607 4211 4212 4214 4215 4218 3002 3003 3004 3006 3007 3606 3607 3609 3610 4217 4218 4221 2999 3000 3001 3002 3003 3004 3006 3007 3602 3603 3604 3605 3607 3609 3610 4214 4215 4217 4218 4221 3602 3603 3604 3605 3606 3609 3610 4214 4215 4217 4218 4221 3005 3006 3007 3009 3010 3609 3610 3612 3613 4220 4221 4224 3002 3003 3004 3005 3006 3007 3009 3010 3605 3606 3607 3608 3610 3612 3613 4217 4218 4220 4221 4224 3605 3606 3607 3608 3609 3612 3613 4217 4218 4220 4221 4224 3008 3009 3010 3012 3013 3612 3613 3615 3616 4223 4224 4227 3005 3006 3007 3008 3009 3010 3012 3013 3608 3609 3610 3611 3613 3615 3616 4220 4221 4223 4224 4227 3608 3609 3610 3611 3612 3615 3616 4220 4221 4223 4224 4227 3011 3012 3013 3015 3016 3615 3616 3618 3619 4226 4227 4230 3008 3009 3010 3011 3012 3013 3015 3016 3611 3612 3613 3614 3616 3618 3619 4223 4224 4226 4227 4230 3611 3612 3613 3614 3615 3618 3619 4223 4224 4226 4227 4230 3014 3015 3016 3018 3019 3618 3619 3621 3622 4229 4230 4233 3011 3012 3013 3014 3015 3016 3018 3019 3614 3615 3616 3617 3619 3621 3622 4226 4227 4229 4230 4233 3614 3615 3616 3617 3618 3621 3622 4226 4227 4229 4230 4233 3017 3018 3019 3021 3022 3621 3622 3624 3625 4232 4233 4236 3014 3015 3016 3017 3018 3019 3021 3022 3617 3618 3619 3620 3622 3624 3625 4229 4230 4232 4233 4236 3617 3618 3619 3620 3621 3624 3625 4229 4230 4232 4233 4236 3020 3021 3022 3024 3025 3624 3625 3627 3628 4235 4236 4239 3017 3018 3019 3020 3021 3022 3024 3025 3620 3621 3622 3623 3625 3627 3628 4232 4233 4235 4236 4239 3620 3621 3622 3623 3624 3627 3628 4232 4233 4235 4236 4239 3023 3024 3025 3029 3030 3627 3628 3632 3633 4238 4239 4244 3020 3021 3022 3023 3024 3025 3029 3030 3623 3624 3625 3626 3628 3632 3633 4235 4236 4238 4239 4244 3623 3624 3625 3626 3627 3632 3633 4235 4236 4238 4239 4244 3630 3631 3632 3633 4242 4243 4244 3026 3027 3028 3029 3030 3629 3631 3632 3633 4242 4243 4244 3026 3027 3028 3029 3030 3629 3630 3632 3633 4242 4243 4244 3023 3024 3025 3026 3027 3028 3029 3030 3626 3627 3628 3629 3630 3631 3633 4238 4239 4242 4243 4244 3626 3627 3628 3629 3630 3631 3632 4238 4239 4242 4243 4244 3291 3292 3293 3635 3637 3890 3892 4249 3634 3636 3637 3638 3641 3890 3892 4249 3035 3036 3038 3635 3637 3638 3641 4249 3031 3032 3033 3034 3035 3036 3038 3291 3292 3293 3634 3635 3636 3638 3641 3890 3892 4249 3635 3636 3637 3639 3641 4248 4249 4251 3638 3640 3641 3642 3644 4248 4249 4251 3039 3040 3042 3639 3641 3642 3644 4251 3035 3036 3037 3038 3039 3040 3042 3635 3636 3637 3638 3639 3640 3642 3644 4248 4249 4251 3639 3640 3641 3643 3644 3645 3649 4251 3043 3044 3047 3642 3644 3645 3649 4251 3039 3040 3041 3042 3043 3044 3047 3639 3640 3641 3642 3643 3645 3649 4251 3642 3643 3644 3646 3649 4250 4251 4255 3645 3647 3649 4250 4251 4253 4255 4258 3646 3648 3649 3650 3653 4253 4255 4258 3044 3045 3047 3647 3649 3650 3653 4258 3043 3044 3045 3047 3642 3643 3644 3645 3646 3647 3648 3650 3653 4250 4251 4253 4255 4258 3647 3648 3649 3651 3653 4257 4258 4261 3650 3652 3653 3654 3656 4257 4258 4261 3052 3053 3054 3651 3653 3654 3656 4261 3044 3045 3046 3047 3052 3053 3054 3647 3648 3649 3650 3651 3652 3654 3656 4257 4258 4261 3651 3652 3653 3655 3656 3657 3661 4261 3058 3060 3061 3654 3656 3657 3661 4261 3048 3049 3050 3051 3052 3053 3054 3058 3060 3061 3651 3652 3653 3654 3655 3657 3661 4261 3654 3655 3656 3658 3659 3660 3661 4261 3657 3659 3660 3661 4261 3055 3056 3057 3059 3060 3061 3657 3658 3660 3661 4261 3059 3060 3061 3657 3658 3659 3661 4261 3058 3059 3060 3061 3654 3655 3656 3657 3658 3659 3660 4261 3090 3091 3092 3663 3664 3683 3685 4263 3662 3664 3665 3666 3667 3683 3685 4263 3062 3063 3064 3065 3067 3068 3069 3090 3091 3092 3662 3663 3665 3666 3667 3683 3685 4263 3067 3068 3069 3663 3664 3666 3667 4263 3066 3067 3068 3069 3070 3071 3072 3073 3074 3663 3664 3665 3667 4263 3663 3664 3665 3666 4263 3131 3135 3136 3669 3670 3686 3721 4267 3668 3670 3671 3672 3675 3686 3721 4267 3075 3076 3077 3078 3079 3129 3130 3131 3135 3136 3668 3669 3671 3672 3675 3686 3721 4267 3077 3078 3079 3669 3670 3672 3675 4267 3669 3670 3671 3674 3675 4267 4268 4270 3085 3086 3089 3677 3678 3679 3681 4270 3672 3675 3676 3677 3678 4267 4268 4270 3077 3078 3079 3080 3081 3082 3083 3669 3670 3671 3672 3674 3676 3677 3678 4267 4268 4270 3081 3082 3083 3674 3675 3677 3678 4270 3081 3082 3083 3084 3085 3086 3089 3673 3674 3675 3676 3678 3679 3681 4270 3673 3674 3675 3676 3677 3679 3681 4270 3673 3677 3678 3680 3681 4270 4271 4274 3679 3681 3682 3684 3685 4270 4271 4274 3085 3086 3088 3089 3673 3677 3678 3679 3680 3682 3684 3685 4270 4271 4274 3086 3088 3089 3680 3681 3684 3685 4274 3662 3663 3664 3684 3685 4262 4263 4274 3680 3681 3682 3683 3685 4262 4263 4274 3086 3087 3088 3089 3090 3091 3092 3662 3663 3664 3680 3681 3682 3683 3684 4262 4263 4274 3668 3669 3670 3719 3721 4265 4267 4277 3100 3101 3102 3688 3690 3693 3694 4282 3687 3689 3690 3693 3694 3744 3746 4282 3149 3151 3152 3688 3690 3744 3746 4282 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3149 3151 3152 3687 3688 3689 3693 3694 3744 3746 4282 3105 3106 3107 3692 3694 3697 3698 4286 3691 3693 3694 3697 3698 4280 4282 4286 3687 3688 3690 3692 3694 4280 4282 4286 3100 3101 3102 3103 3105 3106 3107 3687 3688 3690 3691 3692 3693 3697 3698 4280 4282 4286 3109 3110 3111 3696 3698 3701 3702 4290 3695 3697 3698 3701 3702 4283 4286 4290 3691 3692 3694 3696 3698 4283 4286 4290 3104 3105 3106 3107 3109 3110 3111 3691 3692 3694 3695 3696 3697 3701 3702 4283 4286 4290 3113 3114 3115 3700 3702 3705 3706 4294 3699 3701 3702 3705 3706 4287 4290 4294 3695 3696 3698 3700 3702 4287 4290 4294 3108 3109 3110 3111 3113 3114 3115 3695 3696 3698 3699 3700 3701 3705 3706 4287 4290 4294 3117 3118 3119 3704 3706 3709 3710 4298 3703 3705 3706 3709 3710 4291 4294 4298 3699 3700 3702 3704 3706 4291 4294 4298 3112 3113 3114 3115 3117 3118 3119 3699 3700 3702 3703 3704 3705 3709 3710 4291 4294 4298 3121 3122 3123 3708 3710 3713 3714 4302 3707 3709 3710 3713 3714 4295 4298 4302 3703 3704 3706 3708 3710 4295 4298 4302 3116 3117 3118 3119 3121 3122 3123 3703 3704 3706 3707 3708 3709 3713 3714 4295 4298 4302 3125 3126 3127 3712 3714 3715 3716 4304 3711 3713 3714 3715 3716 4299 4302 4304 3707 3708 3710 3712 3714 4299 4302 4304 3120 3121 3122 3123 3125 3126 3127 3707 3708 3710 3711 3712 3713 3715 3716 4299 4302 4304 3711 3712 3714 3716 3717 3723 3727 4304 3124 3125 3126 3127 3128 3129 3130 3132 3133 3135 3711 3712 3714 3715 3717 3723 3727 4304 3132 3133 3135 3715 3716 3723 3727 4304 3134 3135 3136 3720 3721 3722 3729 4309 3686 3720 3721 4265 4267 4275 4277 4309 3718 3719 3721 3722 3729 4275 4277 4309 3131 3134 3135 3136 3668 3669 3670 3686 3718 3719 3720 3722 3729 4265 4267 4275 4277 4309 3718 3720 3721 3724 3729 4306 4309 4314 3715 3716 3717 3725 3727 4304 4305 4319 3722 3729 3730 4306 4309 4311 4314 4321 3723 3726 3727 4304 4305 4319 4320 4321 3725 3727 3728 3729 3730 4319 4320 4321 3132 3133 3134 3135 3715 3716 3717 3723 3725 3726 3728 3729 3730 4304 4305 4319 4320 4321 3133 3134 3135 3726 3727 3729 3730 4321 3133 3134 3135 3136 3718 3720 3721 3722 3724 3726 3727 3728 3730 4306 4309 4311 4314 4321 3724 3726 3727 3728 3729 4311 4314 4321 3146 3147 3148 3732 3734 3741 3742 4326 3731 3733 3734 3736 3737 3741 3742 4326 3144 3378 3381 3732 3734 3736 3737 4326 3137 3138 3139 3140 3141 3142 3143 3144 3146 3147 3148 3378 3381 3731 3732 3733 3736 3737 3741 3742 4326 3382 3736 3737 3738 3980 3983 3987 4326 3144 3378 3379 3381 3382 3732 3733 3734 3735 3737 3738 3980 3983 3987 4326 3732 3733 3734 3735 3736 3738 3987 4326 3735 3736 3737 3984 3987 4325 4326 4328 3260 3261 3262 3740 3742 3743 3849 4333 3739 3741 3742 3743 3849 4323 4326 4333 3731 3732 3734 3740 3742 4323 4326 4333 3145 3146 3147 3148 3260 3261 3262 3731 3732 3734 3739 3740 3741 3743 3849 4323 4326 4333 3739 3740 3742 3848 3849 4330 4333 4337 3688 3689 3690 3746 3747 4279 4282 4343 3153 3155 3156 3746 3747 3748 3750 4343 3149 3150 3151 3152 3153 3155 3156 3688 3689 3690 3744 3745 3747 3748 3750 4279 4282 4343 3744 3745 3746 3748 3750 4279 4282 4343 3745 3746 3747 3750 3751 4342 4343 4346 3165 3170 3171 3750 3751 3759 3761 4346 3153 3154 3155 3156 3165 3170 3171 3745 3746 3747 3748 3749 3751 3759 3761 4342 4343 4346 3748 3749 3750 3759 3761 4342 4343 4346 3166 3167 3168 3757 3758 3760 3761 4351 3172 3444 3446 3754 3755 3767 3768 4351 3753 3755 3756 3757 3758 3767 3768 4351 3157 3158 3159 3160 3161 3162 3163 3172 3444 3446 3753 3754 3756 3757 3758 3767 3768 4351 3161 3162 3163 3754 3755 3757 3758 4351 3161 3162 3163 3164 3166 3167 3168 3752 3754 3755 3756 3758 3760 3761 4351 3752 3754 3755 3756 3757 3760 3761 4351 3749 3750 3751 3761 3762 4345 4346 4353 3752 3757 3758 3761 3762 4351 4352 4353 3165 3166 3167 3168 3169 3170 3171 3749 3750 3751 3752 3757 3758 3759 3760 3762 4345 4346 4351 4352 4353 3759 3760 3761 4345 4346 4351 4352 4353 3764 3774 4051 4054 4064 4357 4358 4360 3763 3765 3766 3767 4054 4357 4358 4360 3443 3764 3766 3767 4053 4054 4056 4360 3764 3765 3767 3768 4054 4349 4351 4360 3172 3443 3444 3446 3447 3753 3754 3755 3764 3765 3766 3768 4053 4054 4056 4349 4351 4360 3753 3754 3755 3766 3767 4349 4351 4360 3212 3213 3214 3770 3771 3797 3802 4364 3769 3771 3772 3773 3797 3802 4064 4364 3173 3212 3213 3214 3449 3450 3451 3452 3769 3770 3772 3773 3797 3802 4059 4060 4064 4364 3452 3770 3771 3773 4059 4060 4064 4364 3770 3771 3772 3774 4064 4355 4357 4364 3763 3773 4051 4054 4064 4355 4357 4364 3189 3190 3191 3776 3778 3784 3785 4369 3775 3777 3778 3784 3785 3877 3880 4369 3281 3282 3284 3776 3778 3877 3880 4369 3174 3175 3176 3177 3178 3179 3180 3189 3190 3191 3281 3282 3284 3775 3776 3777 3784 3785 3877 3880 4369 3204 3205 3206 3780 3782 3786 3796 4373 3779 3781 3782 3783 3785 3786 3796 4373 3188 3189 3191 3780 3782 3783 3785 4373 3181 3182 3183 3184 3185 3186 3187 3188 3189 3191 3204 3205 3206 3779 3780 3781 3783 3785 3786 3796 4373 3780 3781 3782 3784 3785 4366 4369 4373 3775 3776 3778 3783 3785 4366 4369 4373 3188 3189 3190 3191 3775 3776 3778 3780 3781 3782 3783 3784 4366 4369 4373 3779 3780 3782 3795 3796 4370 4373 4377 3208 3209 3210 3788 3790 3798 3800 4380 3787 3789 3790 3791 3793 3798 3800 4380 3199 3200 3202 3788 3790 3791 3793 4380 3192 3193 3194 3195 3196 3197 3198 3199 3200 3202 3208 3209 3210 3787 3788 3789 3791 3793 3798 3800 4380 3788 3789 3790 3792 3793 3794 3796 4380 3203 3204 3206 3791 3793 3794 3796 4380 3199 3200 3201 3202 3203 3204 3206 3788 3789 3790 3791 3792 3794 3796 4380 3791 3792 3793 3795 3796 4377 4378 4380 3786 3794 3796 4370 4373 4377 4378 4380 3203 3204 3205 3206 3779 3780 3782 3786 3791 3792 3793 3794 3795 4370 4373 4377 4378 4380 3769 3770 3771 3802 3803 4363 4364 4382 3787 3788 3790 3799 3800 4380 4381 4382 3798 3800 3801 3802 3803 4380 4381 4382 3207 3208 3209 3210 3211 3212 3213 3787 3788 3790 3798 3799 3801 3802 3803 4380 4381 4382 3211 3212 3213 3799 3800 3802 3803 4382 3211 3212 3213 3214 3769 3770 3771 3797 3799 3800 3801 3803 4363 4364 4382 3797 3799 3800 3801 3802 4363 4364 4382 3217 3218 3219 3805 3806 3810 3811 4386 3804 3806 3807 3810 3811 3851 3859 4386 3215 3217 3218 3219 3263 3265 3266 3267 3804 3805 3807 3810 3811 3851 3852 3855 3859 4386 3267 3805 3806 3851 3852 3855 3859 4386 3224 3225 3226 3809 3810 3813 3815 4390 3808 3810 3811 3813 3815 4384 4386 4390 3216 3217 3218 3219 3224 3225 3226 3804 3805 3806 3808 3809 3811 3813 3815 4384 4386 4390 3804 3805 3806 3809 3810 4384 4386 4390 3227 3228 3230 3814 3815 3816 3819 4393 3808 3809 3810 3814 3815 4389 4390 4393 3812 3813 3815 3816 3819 4389 4390 4393 3220 3221 3222 3223 3224 3225 3226 3227 3228 3230 3808 3809 3810 3812 3813 3814 3816 3819 4389 4390 4393 3812 3814 3815 3817 3819 4392 4393 4397 3816 3818 3819 3821 3824 4392 4393 4397 3231 3232 3235 3817 3819 3821 3824 4397 3227 3228 3229 3230 3231 3232 3235 3812 3814 3815 3816 3817 3818 3821 3824 4392 4393 4397 3821 3822 3824 4396 4397 4402 4403 4406 3817 3818 3819 3820 3822 3824 4397 4406 3820 3821 3823 3824 3825 3827 4397 4406 3232 3233 3235 3822 3824 3825 3827 4406 3231 3232 3233 3235 3817 3818 3819 3820 3821 3822 3823 3825 3827 4397 4406 3822 3823 3824 3826 3827 3828 3831 4406 3239 3240 3242 3825 3827 3828 3831 4406 3232 3233 3234 3235 3236 3237 3238 3239 3240 3242 3822 3823 3824 3825 3826 3828 3831 4406 3825 3826 3827 3829 3831 4405 4406 4410 3828 3830 3831 3832 3836 4405 4406 4410 3243 3244 3247 3829 3831 3832 3836 4410 3239 3240 3241 3242 3243 3244 3247 3825 3826 3827 3828 3829 3830 3832 3836 4405 4406 4410 3829 3830 3831 3833 3836 4409 4410 4414 3832 3834 3836 4409 4410 4413 4414 4417 3833 3835 3836 3837 3839 4413 4414 4417 3244 3245 3247 3834 3836 3837 3839 4417 3243 3244 3245 3247 3829 3830 3831 3832 3833 3834 3835 3837 3839 4409 4410 4413 4414 4417 3834 3835 3836 3838 3839 3840 3843 4417 3251 3252 3254 3837 3839 3840 3843 4417 3244 3245 3246 3247 3248 3249 3250 3251 3252 3254 3834 3835 3836 3837 3838 3840 3843 4417 3837 3838 3839 3841 3843 4416 4417 4421 3840 3842 3843 3844 3847 4416 4417 4421 3255 3256 3258 3841 3843 3844 3847 4421 3251 3252 3253 3254 3255 3256 3258 3837 3838 3839 3840 3841 3842 3844 3847 4416 4417 4421 3841 3842 3843 3845 3847 4420 4421 4423 3844 3846 3847 3849 3850 4420 4421 4423 3259 3260 3262 3845 3847 3849 3850 4423 3255 3256 3257 3258 3259 3260 3262 3841 3842 3843 3844 3845 3846 3849 3850 4420 4421 4423 3743 3849 3850 4330 4333 4335 4337 4423 3259 3260 3261 3262 3739 3740 3742 3743 3845 3846 3847 3848 3850 4330 4333 4335 4337 4423 3845 3846 3847 3848 3849 4335 4337 4423 3805 3806 3807 3856 3859 4386 4387 4428 3267 3806 3807 3854 3855 3857 3859 4432 3268 3270 3271 3854 3855 3860 3863 4432 3852 3853 3855 3857 3859 3860 3863 4432 3263 3264 3265 3266 3267 3268 3270 3271 3806 3807 3852 3853 3854 3857 3859 3860 3863 4432 3851 3858 3859 4386 4387 4426 4428 4436 3852 3854 3855 3858 3859 4429 4432 4436 3856 3857 3859 4426 4428 4429 4432 4436 3267 3805 3806 3807 3851 3852 3854 3855 3856 3857 3858 4386 4387 4426 4428 4429 4432 4436 3853 3854 3855 3862 3863 4430 4432 4441 3272 3279 3280 3862 3863 3864 3868 4441 3860 3861 3863 3864 3868 4430 4432 4441 3268 3269 3270 3271 3272 3279 3280 3853 3854 3855 3860 3861 3862 3864 3868 4430 4432 4441 3861 3862 3863 3867 3868 4439 4441 4445 3278 3279 3280 3866 3868 3875 3876 4449 3865 3867 3868 3875 3876 3884 4445 4449 3864 3866 3868 3884 4439 4441 4445 4449 3272 3278 3279 3280 3861 3862 3863 3864 3865 3866 3867 3875 3876 3884 4439 4441 4445 4449 3286 3287 3288 3870 3872 3882 3883 4453 3869 3871 3872 3873 3876 3882 3883 4453 3277 3278 3280 3870 3872 3873 3876 4453 3273 3274 3275 3276 3277 3278 3280 3286 3287 3288 3869 3870 3871 3873 3876 3882 3883 4453 3870 3871 3872 3874 3876 4452 4453 4457 3873 3875 3876 4446 4449 4452 4453 4457 3865 3866 3868 3874 3876 4446 4449 4457 3277 3278 3279 3280 3865 3866 3868 3870 3871 3872 3873 3874 3875 4446 4449 4452 4453 4457 3776 3777 3778 3878 3880 4368 4369 4461 3877 3879 3880 3881 3883 4368 4369 4461 3285 3286 3288 3878 3880 3881 3883 4461 3281 3282 3283 3284 3285 3286 3288 3776 3777 3778 3877 3878 3879 3881 3883 4368 4369 4461 3878 3879 3880 3882 3883 4450 4453 4461 3869 3870 3872 3881 3883 4450 4453 4461 3285 3286 3287 3288 3869 3870 3872 3878 3879 3880 3881 3882 4450 4453 4461 3866 3867 3868 4443 4445 4448 4449 4466 3294 3300 3301 3888 3889 3894 3897 4471 3290 3291 3293 3887 3888 3892 3893 4475 3886 3888 3889 3892 3893 4470 4471 4475 3289 3290 3291 3293 3294 3300 3301 3885 3886 3887 3889 3892 3893 3894 3897 4470 4471 4475 3885 3887 3888 3894 3897 4470 4471 4475 3634 3635 3637 3891 3892 4246 4249 4477 3890 3892 3893 4246 4249 4474 4475 4477 3290 3291 3292 3293 3634 3635 3637 3886 3887 3888 3890 3891 3893 4246 4249 4474 4475 4477 3886 3887 3888 3891 3892 4474 4475 4477 3885 3888 3889 3895 3897 4467 4471 4483 3894 3896 3897 4467 4471 4481 4483 4487 3895 3897 3898 3904 3905 4481 4483 4487 3294 3300 3301 3302 3885 3888 3889 3894 3895 3896 3898 3904 3905 4467 4471 4481 4483 4487 3300 3301 3302 3896 3897 3904 3905 4487 3355 3356 3357 3900 3903 3956 3957 4493 3899 3901 3903 3956 3957 4492 4493 4495 3900 3902 3903 3905 3906 4492 4493 4495 3296 3297 3299 3901 3903 3905 3906 4495 3295 3296 3297 3299 3355 3356 3357 3899 3900 3901 3902 3905 3906 3956 3957 4492 4493 4495 3896 3897 3898 3905 3906 4487 4488 4495 3296 3297 3298 3299 3300 3301 3302 3896 3897 3898 3901 3902 3903 3904 3906 4487 4488 4495 3901 3902 3903 3904 3905 4487 4488 4495 3336 3337 3338 3909 3910 3940 3942 4500 3307 3309 3310 3909 3910 3911 3914 4500 3907 3908 3910 3911 3914 3940 3942 4500 3303 3304 3305 3306 3307 3309 3310 3336 3337 3338 3907 3908 3909 3911 3914 3940 3942 4500 3908 3909 3910 3913 3914 4498 4500 4504 3311 3313 3314 3913 3914 3915 3918 4504 3911 3912 3914 3915 3918 4498 4500 4504 3307 3308 3309 3310 3311 3313 3314 3908 3909 3910 3911 3912 3913 3915 3918 4498 4500 4504 3912 3913 3914 3917 3918 4502 4504 4508 3315 3317 3318 3917 3918 3919 3922 4508 3915 3916 3918 3919 3922 4502 4504 4508 3311 3312 3313 3314 3315 3317 3318 3912 3913 3914 3915 3916 3917 3919 3922 4502 4504 4508 3916 3917 3918 3921 3922 4506 4508 4512 3319 3321 3322 3921 3922 3923 3926 4512 3919 3920 3922 3923 3926 4506 4508 4512 3315 3316 3317 3318 3319 3321 3322 3916 3917 3918 3919 3920 3921 3923 3926 4506 4508 4512 3920 3921 3922 3925 3926 4510 4512 4516 3587 3588 3589 3925 3926 4199 4201 4516 3923 3924 3926 4199 4201 4510 4512 4516 3319 3320 3321 3322 3587 3588 3589 3920 3921 3922 3923 3924 3925 4199 4201 4510 4512 4516 3339 3340 3342 3932 3933 3943 3947 4521 3331 3333 3334 3929 3931 3935 3938 4523 3928 3930 3931 3933 3934 3935 3938 4523 3328 3329 3330 3929 3931 3933 3934 4523 3323 3324 3325 3326 3328 3329 3330 3331 3333 3334 3928 3929 3930 3933 3934 3935 3938 4523 3927 3933 3934 3943 3947 4518 4521 4523 3327 3328 3329 3330 3339 3340 3342 3927 3929 3930 3931 3932 3934 3943 3947 4518 4521 4523 3929 3930 3931 3932 3933 4518 4521 4523 3928 3929 3931 3937 3938 4523 4524 4526 3335 3337 3338 3937 3938 3939 3942 4526 3935 3936 3938 3939 3942 4523 4524 4526 3331 3332 3333 3334 3335 3337 3338 3928 3929 3931 3935 3936 3937 3939 3942 4523 4524 4526 3936 3937 3938 3941 3942 4517 4526 4531 3907 3909 3910 3941 3942 4497 4500 4531 3939 3940 3942 4497 4500 4517 4526 4531 3335 3336 3337 3338 3907 3909 3910 3936 3937 3938 3939 3940 3941 4497 4500 4517 4526 4531 3927 3932 3933 3944 3947 4520 4521 4535 3943 3945 3947 4520 4521 4534 4535 4539 3944 3946 3947 3948 3951 4534 4535 4539 3343 3344 3346 3945 3947 3948 3951 4539 3339 3340 3341 3342 3343 3344 3346 3927 3932 3933 3943 3944 3945 3946 3948 3951 4520 4521 4534 4535 4539 3945 3946 3947 3949 3951 4538 4539 4543 3948 3950 3951 3952 3955 4538 4539 4543 3347 3348 3350 3949 3951 3952 3955 4543 3343 3344 3345 3346 3347 3348 3350 3945 3946 3947 3948 3949 3950 3952 3955 4538 4539 4543 3949 3950 3951 3953 3955 4542 4543 4545 3952 3954 3955 3957 3958 4542 4543 4545 3351 3352 3354 3953 3955 3957 3958 4545 3347 3348 3349 3350 3351 3352 3354 3949 3950 3951 3952 3953 3954 3957 3958 4542 4543 4545 3899 3900 3903 3957 3958 4489 4493 4545 3351 3352 3353 3354 3355 3356 3357 3899 3900 3903 3953 3954 3955 3956 3958 4489 4493 4545 3953 3954 3955 3956 3957 4489 4493 4545 3366 3367 3368 3960 3962 3965 3966 4549 3959 3961 3962 3965 3966 3990 3991 4549 3383 3385 3386 3960 3962 3990 3991 4549 3358 3359 3360 3361 3362 3363 3364 3366 3367 3368 3383 3385 3386 3959 3960 3961 3965 3966 3990 3991 4549 3369 3372 3373 3964 3966 3969 3970 4552 3963 3965 3966 3969 3970 4549 4550 4552 3959 3960 3962 3964 3966 4549 4550 4552 3365 3366 3367 3368 3369 3372 3373 3959 3960 3962 3963 3964 3965 3969 3970 4549 4550 4552 3371 3372 3373 3968 3970 3973 3974 4555 3967 3969 3970 3973 3974 4552 4553 4555 3963 3964 3966 3968 3970 4552 4553 4555 3369 3371 3372 3373 3963 3964 3966 3967 3968 3969 3973 3974 4552 4553 4555 3375 3376 3377 3972 3974 3975 3979 4558 3971 3973 3974 3975 3979 4555 4556 4558 3967 3968 3970 3972 3974 4555 4556 4558 3370 3371 3372 3373 3375 3376 3377 3967 3968 3970 3971 3972 3973 3975 3979 4555 4556 4558 3971 3972 3974 3978 3979 4558 4559 4561 3379 3380 3381 3977 3979 3982 3983 4564 3976 3978 3979 3982 3983 4561 4562 4564 3975 3977 3979 4558 4559 4561 4562 4564 3374 3375 3376 3377 3379 3380 3381 3971 3972 3974 3975 3976 3977 3978 3982 3983 4558 4559 4561 4562 4564 3382 3735 3736 3981 3983 3986 3987 4567 3980 3982 3983 3986 3987 4564 4565 4567 3976 3977 3979 3981 3983 4564 4565 4567 3378 3379 3380 3381 3382 3735 3736 3976 3977 3979 3980 3981 3982 3986 3987 4564 4565 4567 3738 3985 3987 3988 4325 4326 4328 4570 3984 3986 3987 3988 4328 4567 4568 4570 3980 3981 3983 3985 3987 4567 4568 4570 3382 3735 3736 3737 3738 3980 3981 3983 3984 3985 3986 3988 4325 4326 4328 4567 4568 4570 3984 3985 3987 4327 4328 4570 4571 4573 3384 3385 3386 3388 3389 3990 3991 3993 3994 4548 4549 4576 3383 3384 3385 3386 3388 3389 3960 3961 3962 3989 3991 3993 3994 4548 4549 4576 3960 3961 3962 3989 3990 3993 3994 4548 4549 4576 3387 3388 3389 3391 3392 3993 3994 3996 3997 4575 4576 4579 3384 3385 3386 3387 3388 3389 3391 3392 3989 3990 3991 3992 3994 3996 3997 4548 4549 4575 4576 4579 3989 3990 3991 3992 3993 3996 3997 4548 4549 4575 4576 4579 3390 3391 3392 3394 3395 3996 3997 3999 4000 4578 4579 4582 3387 3388 3389 3390 3391 3392 3394 3395 3992 3993 3994 3995 3997 3999 4000 4575 4576 4578 4579 4582 3992 3993 3994 3995 3996 3999 4000 4575 4576 4578 4579 4582 3393 3394 3395 3397 3398 3999 4000 4002 4003 4581 4582 4585 3390 3391 3392 3393 3394 3395 3397 3398 3995 3996 3997 3998 4000 4002 4003 4578 4579 4581 4582 4585 3995 3996 3997 3998 3999 4002 4003 4578 4579 4581 4582 4585 3396 3397 3398 3400 3401 4002 4003 4005 4006 4584 4585 4588 3393 3394 3395 3396 3397 3398 3400 3401 3998 3999 4000 4001 4003 4005 4006 4581 4582 4584 4585 4588 3998 3999 4000 4001 4002 4005 4006 4581 4582 4584 4585 4588 3399 3400 3401 3403 3404 4005 4006 4008 4009 4587 4588 4591 3396 3397 3398 3399 3400 3401 3403 3404 4001 4002 4003 4004 4006 4008 4009 4584 4585 4587 4588 4591 4001 4002 4003 4004 4005 4008 4009 4584 4585 4587 4588 4591 3402 3403 3404 3406 3407 4008 4009 4011 4012 4590 4591 4594 3399 3400 3401 3402 3403 3404 3406 3407 4004 4005 4006 4007 4009 4011 4012 4587 4588 4590 4591 4594 4004 4005 4006 4007 4008 4011 4012 4587 4588 4590 4591 4594 3405 3406 3407 3409 3410 4011 4012 4014 4015 4593 4594 4597 3402 3403 3404 3405 3406 3407 3409 3410 4007 4008 4009 4010 4012 4014 4015 4590 4591 4593 4594 4597 4007 4008 4009 4010 4011 4014 4015 4590 4591 4593 4594 4597 3408 3409 3410 3412 3413 4014 4015 4017 4018 4596 4597 4600 3405 3406 3407 3408 3409 3410 3412 3413 4010 4011 4012 4013 4015 4017 4018 4593 4594 4596 4597 4600 4010 4011 4012 4013 4014 4017 4018 4593 4594 4596 4597 4600 3411 3412 3413 3415 3416 4017 4018 4020 4021 4599 4600 4603 3408 3409 3410 3411 3412 3413 3415 3416 4013 4014 4015 4016 4018 4020 4021 4596 4597 4599 4600 4603 4013 4014 4015 4016 4017 4020 4021 4596 4597 4599 4600 4603 3414 3415 3416 3420 3421 4020 4021 4025 4026 4602 4603 4608 3411 3412 3413 3414 3415 3416 3420 3421 4016 4017 4018 4019 4021 4025 4026 4599 4600 4602 4603 4608 4016 4017 4018 4019 4020 4025 4026 4599 4600 4602 4603 4608 4023 4024 4025 4026 4606 4607 4608 3417 3418 3419 3420 3421 4022 4024 4025 4026 4606 4607 4608 3417 3418 3419 3420 3421 4022 4023 4025 4026 4606 4607 4608 3414 3415 3416 3417 3418 3419 3420 3421 4019 4020 4021 4022 4023 4024 4026 4602 4603 4606 4607 4608 4019 4020 4021 4022 4023 4024 4025 4602 4603 4606 4607 4608 3426 3494 3495 4029 4030 4032 4034 4613 3427 3429 3430 4029 4030 4035 4038 4613 4027 4028 4030 4032 4034 4035 4038 4613 3422 3423 3424 3425 3426 3427 3429 3430 3494 3495 4027 4028 4029 4032 4034 4035 4038 4613 3500 4033 4034 4095 4101 4102 4109 4617 4027 4029 4030 4033 4034 4610 4613 4617 4031 4032 4034 4095 4109 4610 4613 4617 3426 3493 3494 3495 3500 4027 4029 4030 4031 4032 4033 4095 4101 4102 4109 4610 4613 4617 4028 4029 4030 4037 4038 4611 4613 4621 3431 3433 3434 4037 4038 4039 4042 4621 4035 4036 4038 4039 4042 4611 4613 4621 3427 3428 3429 3430 3431 3433 3434 4028 4029 4030 4035 4036 4037 4039 4042 4611 4613 4621 4036 4037 4038 4041 4042 4619 4621 4625 3595 3597 3598 4041 4042 4207 4209 4625 4039 4040 4042 4207 4209 4619 4621 4625 3431 3432 3433 3434 3595 3597 3598 4036 4037 4038 4039 4040 4041 4207 4209 4619 4621 4625 3559 3560 3561 4045 4046 4173 4175 4629 3439 3441 3442 4045 4046 4047 4050 4629 4043 4044 4046 4047 4050 4173 4175 4629 3435 3436 3437 3438 3439 3441 3442 3559 3560 3561 4043 4044 4045 4047 4050 4173 4175 4629 4044 4045 4046 4049 4050 4627 4629 4633 3445 3446 3447 4049 4050 4055 4056 4633 4047 4048 4050 4055 4056 4627 4629 4633 3439 3440 3441 3442 3445 3446 3447 4044 4045 4046 4047 4048 4049 4055 4056 4627 4629 4633 3763 3774 4052 4054 4063 4064 4357 4635 4051 4053 4054 4056 4057 4063 4064 4635 3443 3765 3767 4052 4054 4056 4057 4635 3443 3763 3764 3765 3766 3767 3774 4051 4052 4053 4056 4057 4063 4064 4357 4358 4360 4635 4048 4049 4050 4056 4057 4631 4633 4635 3443 3444 3445 3446 3447 3765 3767 4048 4049 4050 4052 4053 4054 4055 4057 4631 4633 4635 4052 4053 4054 4055 4056 4631 4633 4635 3458 3459 3460 4060 4061 4069 4070 4639 3452 3771 3772 4060 4061 4062 4064 4639 3448 3449 3450 3451 3452 3458 3459 3460 3771 3772 4058 4059 4061 4062 4064 4069 4070 4639 4058 4059 4060 4062 4064 4069 4070 4639 4059 4060 4061 4063 4064 4635 4636 4639 4051 4052 4054 4062 4064 4635 4636 4639 3452 3763 3770 3771 3772 3773 3774 4051 4052 4054 4059 4060 4061 4062 4063 4355 4357 4364 4635 4636 4639 3462 3463 3464 4066 4068 4074 4075 4642 4065 4067 4068 4070 4071 4074 4075 4642 3457 3458 3460 4066 4068 4070 4071 4642 3453 3454 3455 3456 3457 3458 3460 3462 3463 3464 4065 4066 4067 4070 4071 4074 4075 4642 4058 4060 4061 4070 4071 4639 4640 4642 3457 3458 3459 3460 4058 4060 4061 4066 4067 4068 4069 4071 4639 4640 4642 4066 4067 4068 4069 4070 4639 4640 4642 3485 3486 3487 4073 4075 4093 4094 4646 4072 4074 4075 4093 4094 4642 4643 4646 4065 4066 4068 4073 4075 4642 4643 4646 3461 3462 3463 3464 3485 3486 3487 4065 4066 4068 4072 4073 4074 4093 4094 4642 4643 4646 3538 3539 3540 4077 4079 4148 4149 4652 4076 4078 4079 4080 4084 4148 4149 4652 3469 3470 3472 4077 4079 4080 4084 4652 3465 3466 3467 3468 3469 3470 3472 3538 3539 3540 4076 4077 4078 4080 4084 4148 4149 4652 4077 4078 4079 4081 4084 4651 4652 4656 4080 4082 4084 4651 4652 4655 4656 4659 4081 4083 4084 4085 4087 4655 4656 4659 3473 3474 3476 4082 4084 4085 4087 4659 3469 3470 3471 3472 3473 3474 3476 4077 4078 4079 4080 4081 4082 4083 4085 4087 4651 4652 4655 4656 4659 4082 4083 4084 4086 4087 4088 4090 4659 3477 3478 3480 4085 4087 4088 4090 4659 3473 3474 3475 3476 3477 3478 3480 4082 4083 4084 4085 4086 4088 4090 4659 4085 4086 4087 4089 4090 4091 4094 4659 3484 3485 3487 4088 4090 4091 4094 4659 3477 3478 3479 3480 3481 3482 3483 3484 3485 3487 4085 4086 4087 4088 4089 4091 4094 4659 4088 4089 4090 4092 4094 4658 4659 4661 4091 4093 4094 4646 4647 4658 4659 4661 4072 4073 4075 4092 4094 4646 4647 4661 3484 3485 3486 3487 4072 4073 4075 4088 4089 4090 4091 4092 4093 4646 4647 4658 4659 4661 4031 4033 4034 4109 4110 4614 4617 4668 3497 3498 3499 4098 4099 4103 4105 4672 3489 3491 3492 4098 4099 4100 4101 4672 4096 4097 4099 4100 4101 4103 4105 4672 3488 3489 3491 3492 3497 3498 3499 4096 4097 4098 4100 4101 4103 4105 4672 4097 4098 4099 4101 4102 4107 4109 4672 3489 3490 3491 3492 3493 3494 3495 3500 4031 4034 4097 4098 4099 4100 4102 4107 4109 4672 3500 4031 4034 4100 4101 4107 4109 4672 4096 4098 4099 4105 4106 4671 4672 4675 3501 3502 3504 4105 4106 4111 4114 4675 3496 3497 3498 3499 3501 3502 3504 4096 4098 4099 4103 4104 4106 4111 4114 4671 4672 4675 4103 4104 4105 4111 4114 4671 4672 4675 4100 4101 4102 4108 4109 4669 4672 4677 4107 4109 4110 4665 4668 4669 4672 4677 3500 4031 4033 4034 4095 4100 4101 4102 4107 4108 4110 4614 4617 4665 4668 4669 4672 4677 4095 4108 4109 4614 4617 4665 4668 4677 4104 4105 4106 4112 4114 4674 4675 4682 4111 4113 4114 4115 4119 4674 4675 4682 3505 3506 3509 4112 4114 4115 4119 4682 3501 3502 3503 3504 3505 3506 3509 4104 4105 4106 4111 4112 4113 4115 4119 4674 4675 4682 4112 4113 4114 4116 4119 4681 4682 4687 4115 4117 4119 4681 4682 4686 4687 4691 4116 4118 4119 4120 4123 4686 4687 4691 3506 3507 3509 4117 4119 4120 4123 4691 3505 3506 3507 3509 4112 4113 4114 4115 4116 4117 4118 4120 4123 4681 4682 4686 4687 4691 4117 4118 4119 4121 4123 4690 4691 4694 4120 4122 4123 4124 4127 4690 4691 4694 3510 3511 3513 4121 4123 4124 4127 4694 3506 3507 3508 3509 3510 3511 3513 4117 4118 4119 4120 4121 4122 4124 4127 4690 4691 4694 4121 4122 4123 4125 4127 4693 4694 4697 4124 4126 4127 4128 4130 4693 4694 4697 3514 3515 3517 4125 4127 4128 4130 4697 3510 3511 3512 3513 3514 3515 3517 4121 4122 4123 4124 4125 4126 4128 4130 4693 4694 4697 4125 4126 4127 4129 4130 4131 4135 4697 3521 3522 3525 4128 4130 4131 4135 4697 3514 3515 3516 3517 3518 3519 3520 3521 3522 3525 4125 4126 4127 4128 4129 4131 4135 4697 4128 4129 4130 4132 4135 4696 4697 4702 4131 4133 4135 4696 4697 4701 4702 4705 4132 4134 4135 4136 4138 4701 4702 4705 3522 3523 3525 4133 4135 4136 4138 4705 3521 3522 3523 3525 4128 4129 4130 4131 4132 4133 4134 4136 4138 4696 4697 4701 4702 4705 4133 4134 4135 4137 4138 4139 4142 4705 3529 3530 3533 4136 4138 4139 4142 4705 3522 3523 3524 3525 3526 3527 3528 3529 3530 3533 4133 4134 4135 4136 4137 4139 4142 4705 4136 4137 4138 4140 4142 4704 4705 4709 4139 4141 4142 4143 4146 4704 4705 4709 3530 3531 3533 4140 4142 4143 4146 4709 3529 3530 3531 3533 4136 4137 4138 4139 4140 4141 4143 4146 4704 4705 4709 4140 4141 4142 4144 4146 4708 4709 4712 4143 4145 4146 4147 4149 4708 4709 4712 3534 3535 3537 4144 4146 4147 4149 4712 3530 3531 3532 3533 3534 3535 3537 4140 4141 4142 4143 4144 4145 4147 4149 4708 4709 4712 4144 4145 4146 4148 4149 4649 4652 4712 4076 4077 4079 4147 4149 4649 4652 4712 3534 3535 3536 3537 3538 3539 3540 4076 4077 4079 4144 4145 4146 4147 4148 4649 4652 4712 3569 3570 3571 4153 4155 4184 4185 4716 3553 4157 4158 4159 4161 4163 4166 4724 4153 4154 4155 4716 4717 4721 4722 4724 4150 4152 4154 4155 4184 4185 4716 4724 4152 4153 4155 4156 4157 4158 4716 4724 3541 3542 3543 3544 3569 3570 3571 4150 4152 4153 4154 4156 4157 4158 4184 4185 4716 4724 3542 3543 3544 4154 4155 4157 4158 4724 3542 3543 3544 3545 3547 3548 3549 3553 4151 4154 4155 4156 4158 4159 4161 4163 4166 4724 4151 4154 4155 4156 4157 4163 4166 4724 3553 4151 4157 4160 4161 4166 4167 4729 4159 4161 4162 4166 4167 4168 4171 4729 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 4151 4157 4159 4160 4162 4166 4167 4168 4171 4729 3554 3555 3556 4160 4161 4168 4171 4729 4151 4157 4158 4164 4166 4724 4725 4733 4163 4165 4166 4724 4725 4733 4734 4735 4164 4166 4167 4728 4729 4733 4734 4735 3553 4151 4157 4158 4159 4160 4161 4163 4164 4165 4167 4724 4725 4728 4729 4733 4734 4735 4159 4160 4161 4165 4166 4728 4729 4735 4160 4161 4162 4170 4171 4726 4729 4740 3558 3560 3561 4170 4171 4172 4175 4740 4168 4169 4171 4172 4175 4726 4729 4740 3554 3555 3556 3557 3558 3560 3561 4160 4161 4162 4168 4169 4170 4172 4175 4726 4729 4740 4169 4170 4171 4174 4175 4738 4740 4744 4043 4045 4046 4174 4175 4626 4629 4744 4172 4173 4175 4626 4629 4738 4740 4744 3558 3559 3560 3561 4043 4045 4046 4169 4170 4171 4172 4173 4174 4626 4629 4738 4740 4744 3573 3574 3575 4178 4179 4188 4190 4749 3566 3567 3568 4178 4179 4180 4181 4749 4176 4177 4179 4180 4181 4188 4190 4749 3562 3563 3564 3565 3566 3567 3568 3573 3574 3575 4176 4177 4178 4180 4181 4188 4190 4749 4177 4178 4179 4181 4182 4747 4749 4751 3566 3567 3568 4177 4178 4179 4180 4182 4747 4749 4751 4180 4181 4747 4749 4751 4184 4185 4713 4716 4755 3569 3570 3571 4150 4153 4155 4183 4185 4713 4716 4755 4150 4153 4155 4183 4184 4713 4716 4755 3580 3581 3582 4187 4190 4193 4194 4760 4186 4189 4190 4193 4194 4758 4760 4762 4176 4178 4179 4189 4190 4745 4749 4762 4187 4188 4190 4745 4749 4758 4760 4762 3572 3573 3574 3575 3580 3581 3582 4176 4178 4179 4186 4187 4188 4189 4193 4194 4745 4749 4758 4760 4762 3583 3585 3586 4192 4193 4195 4197 4768 4191 4193 4194 4195 4197 4757 4760 4768 3576 3577 3578 3579 3580 3581 3582 3583 3585 3586 4186 4187 4190 4191 4192 4194 4195 4197 4757 4760 4768 4186 4187 4190 4192 4193 4757 4760 4768 4191 4192 4193 4197 4198 4767 4768 4772 3591 3593 3594 4197 4198 4203 4205 4772 3583 3584 3585 3586 3591 3593 3594 4191 4192 4193 4195 4196 4198 4203 4205 4767 4768 4772 4195 4196 4197 4203 4205 4767 4768 4772 3924 3925 3926 4200 4201 4514 4516 4776 4199 4201 4202 4204 4205 4514 4516 4776 3587 3588 3589 3590 3592 3593 3594 3924 3925 3926 4199 4200 4202 4204 4205 4514 4516 4776 3592 3593 3594 4200 4201 4204 4205 4776 4196 4197 4198 4205 4206 4771 4772 4780 4200 4201 4202 4205 4206 4776 4777 4780 3591 3592 3593 3594 4196 4197 4198 4200 4201 4202 4203 4204 4206 4771 4772 4776 4777 4780 4203 4204 4205 4771 4772 4776 4777 4780 4040 4041 4042 4209 4210 4623 4625 4784 3596 3597 3598 3600 3601 4209 4210 4212 4213 4783 4784 4787 3595 3596 3597 3598 3600 3601 4040 4041 4042 4207 4208 4210 4212 4213 4623 4625 4783 4784 4787 4207 4208 4209 4212 4213 4623 4625 4783 4784 4787 3599 3600 3601 3603 3604 4212 4213 4215 4216 4786 4787 4790 3596 3597 3598 3599 3600 3601 3603 3604 4208 4209 4210 4211 4213 4215 4216 4783 4784 4786 4787 4790 4208 4209 4210 4211 4212 4215 4216 4783 4784 4786 4787 4790 3602 3603 3604 3606 3607 4215 4216 4218 4219 4789 4790 4793 3599 3600 3601 3602 3603 3604 3606 3607 4211 4212 4213 4214 4216 4218 4219 4786 4787 4789 4790 4793 4211 4212 4213 4214 4215 4218 4219 4786 4787 4789 4790 4793 3605 3606 3607 3609 3610 4218 4219 4221 4222 4792 4793 4796 3602 3603 3604 3605 3606 3607 3609 3610 4214 4215 4216 4217 4219 4221 4222 4789 4790 4792 4793 4796 4214 4215 4216 4217 4218 4221 4222 4789 4790 4792 4793 4796 3608 3609 3610 3612 3613 4221 4222 4224 4225 4795 4796 4799 3605 3606 3607 3608 3609 3610 3612 3613 4217 4218 4219 4220 4222 4224 4225 4792 4793 4795 4796 4799 4217 4218 4219 4220 4221 4224 4225 4792 4793 4795 4796 4799 3611 3612 3613 3615 3616 4224 4225 4227 4228 4798 4799 4802 3608 3609 3610 3611 3612 3613 3615 3616 4220 4221 4222 4223 4225 4227 4228 4795 4796 4798 4799 4802 4220 4221 4222 4223 4224 4227 4228 4795 4796 4798 4799 4802 3614 3615 3616 3618 3619 4227 4228 4230 4231 4801 4802 4805 3611 3612 3613 3614 3615 3616 3618 3619 4223 4224 4225 4226 4228 4230 4231 4798 4799 4801 4802 4805 4223 4224 4225 4226 4227 4230 4231 4798 4799 4801 4802 4805 3617 3618 3619 3621 3622 4230 4231 4233 4234 4804 4805 4808 3614 3615 3616 3617 3618 3619 3621 3622 4226 4227 4228 4229 4231 4233 4234 4801 4802 4804 4805 4808 4226 4227 4228 4229 4230 4233 4234 4801 4802 4804 4805 4808 3620 3621 3622 3624 3625 4233 4234 4236 4237 4807 4808 4811 3617 3618 3619 3620 3621 3622 3624 3625 4229 4230 4231 4232 4234 4236 4237 4804 4805 4807 4808 4811 4229 4230 4231 4232 4233 4236 4237 4804 4805 4807 4808 4811 3623 3624 3625 3627 3628 4236 4237 4239 4240 4810 4811 4814 3620 3621 3622 3623 3624 3625 3627 3628 4232 4233 4234 4235 4237 4239 4240 4807 4808 4810 4811 4814 4232 4233 4234 4235 4236 4239 4240 4807 4808 4810 4811 4814 3626 3627 3628 3632 3633 4239 4240 4244 4245 4813 4814 4819 3623 3624 3625 3626 3627 3628 3632 3633 4235 4236 4237 4238 4240 4244 4245 4810 4811 4813 4814 4819 4235 4236 4237 4238 4239 4244 4245 4810 4811 4813 4814 4819 4242 4243 4244 4245 4817 4818 4819 3629 3630 3631 3632 3633 4241 4243 4244 4245 4817 4818 4819 3629 3630 3631 3632 3633 4241 4242 4244 4245 4817 4818 4819 3626 3627 3628 3629 3630 3631 3632 3633 4238 4239 4240 4241 4242 4243 4245 4813 4814 4817 4818 4819 4238 4239 4240 4241 4242 4243 4244 4813 4814 4817 4818 4819 3890 3891 3892 4247 4249 4476 4477 4823 4246 4248 4249 4251 4252 4476 4477 4823 3638 3639 3641 4247 4249 4251 4252 4823 3634 3635 3636 3637 3638 3639 3641 3890 3891 3892 4246 4247 4248 4251 4252 4476 4477 4823 3645 3646 3649 4251 4252 4255 4256 4823 3638 3639 3640 3641 3642 3643 3644 3645 3646 3649 4247 4248 4249 4250 4252 4255 4256 4823 4247 4248 4249 4250 4251 4255 4256 4823 3646 3647 3649 4254 4255 4258 4259 4826 4253 4255 4256 4258 4259 4822 4823 4826 3645 3646 3647 3649 4250 4251 4252 4253 4254 4256 4258 4259 4822 4823 4826 4250 4251 4252 4254 4255 4822 4823 4826 3650 3651 3653 4258 4259 4260 4261 4826 3646 3647 3648 3649 3650 3651 3653 4253 4254 4255 4257 4259 4260 4261 4826 4253 4254 4255 4257 4258 4260 4261 4826 4257 4258 4259 4261 4826 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 4257 4258 4259 4260 4826 3683 3684 3685 4263 4264 4272 4274 4828 3662 3663 3664 3665 3666 3667 3683 3684 3685 4262 4264 4272 4274 4828 4262 4263 4272 4274 4828 3686 3719 3721 4266 4267 4277 4278 4832 4265 4267 4268 4269 4270 4277 4278 4832 3668 3669 3670 3671 3672 3674 3675 3686 3719 3721 4265 4266 4268 4269 4270 4277 4278 4832 3672 3674 3675 4266 4267 4269 4270 4832 4266 4267 4268 4270 4271 4273 4274 4832 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 4266 4267 4268 4269 4271 4273 4274 4832 3679 3680 3681 4269 4270 4273 4274 4832 4262 4263 4264 4273 4274 4827 4828 4832 4269 4270 4271 4272 4274 4827 4828 4832 3679 3680 3681 3682 3683 3684 3685 4262 4263 4264 4269 4270 4271 4272 4273 4827 4828 4832 3719 3720 3721 4276 4277 4307 4309 4836 4275 4277 4278 4307 4309 4831 4832 4836 3686 3719 3720 3721 4265 4266 4267 4275 4276 4278 4307 4309 4831 4832 4836 4265 4266 4267 4276 4277 4831 4832 4836 3744 3746 3747 4281 4282 4340 4343 4840 3692 3693 3694 4281 4282 4285 4286 4840 4279 4280 4282 4285 4286 4340 4343 4840 3687 3688 3689 3690 3692 3693 3694 3744 3746 3747 4279 4280 4281 4285 4286 4340 4343 4840 3696 3697 3698 4284 4286 4289 4290 4844 4283 4285 4286 4289 4290 4837 4840 4844 4280 4281 4282 4284 4286 4837 4840 4844 3691 3692 3693 3694 3696 3697 3698 4280 4281 4282 4283 4284 4285 4289 4290 4837 4840 4844 3700 3701 3702 4288 4290 4293 4294 4848 4287 4289 4290 4293 4294 4841 4844 4848 4283 4284 4286 4288 4290 4841 4844 4848 3695 3696 3697 3698 3700 3701 3702 4283 4284 4286 4287 4288 4289 4293 4294 4841 4844 4848 3704 3705 3706 4292 4294 4297 4298 4852 4291 4293 4294 4297 4298 4845 4848 4852 4287 4288 4290 4292 4294 4845 4848 4852 3699 3700 3701 3702 3704 3705 3706 4287 4288 4290 4291 4292 4293 4297 4298 4845 4848 4852 3708 3709 3710 4296 4298 4301 4302 4856 4295 4297 4298 4301 4302 4849 4852 4856 4291 4292 4294 4296 4298 4849 4852 4856 3703 3704 3705 3706 3708 3709 3710 4291 4292 4294 4295 4296 4297 4301 4302 4849 4852 4856 3712 3713 3714 4300 4302 4303 4304 4858 4299 4301 4302 4303 4304 4853 4856 4858 4295 4296 4298 4300 4302 4853 4856 4858 3707 3708 3709 3710 3712 3713 3714 4295 4296 4298 4299 4300 4301 4303 4304 4853 4856 4858 4299 4300 4302 4304 4305 4310 4319 4858 3711 3712 3713 3714 3715 3716 3717 3723 3725 3727 4299 4300 4302 4303 4305 4310 4319 4858 3723 3725 3727 4303 4304 4310 4319 4858 3722 3724 3729 4308 4309 4314 4315 4863 4275 4276 4277 4308 4309 4833 4836 4863 4306 4307 4309 4314 4315 4833 4836 4863 3718 3719 3720 3721 3722 3724 3729 4275 4276 4277 4306 4307 4308 4314 4315 4833 4836 4863 4303 4304 4305 4317 4319 4858 4859 4867 3724 3729 3730 4312 4314 4316 4321 4871 4311 4313 4314 4316 4321 4871 4872 4874 4312 4314 4315 4860 4863 4871 4872 4874 3722 3724 3729 3730 4306 4308 4309 4311 4312 4313 4315 4316 4321 4860 4863 4871 4872 4874 4306 4308 4309 4313 4314 4860 4863 4874 4311 4312 4314 4321 4322 4869 4871 4877 4310 4318 4319 4858 4859 4867 4868 4877 4317 4319 4320 4321 4322 4867 4868 4877 3723 3725 3726 3727 4303 4304 4305 4310 4317 4318 4320 4321 4322 4858 4859 4867 4868 4877 3725 3726 3727 4318 4319 4321 4322 4877 3724 3725 3726 3727 3728 3729 3730 4311 4312 4314 4316 4318 4319 4320 4322 4869 4871 4877 4316 4318 4319 4320 4321 4869 4871 4877 3740 3741 3742 4324 4326 4332 4333 4882 4323 4325 4326 4328 4329 4332 4333 4882 3738 3984 3987 4324 4326 4328 4329 4882 3731 3732 3733 3734 3735 3736 3737 3738 3740 3741 3742 3984 3987 4323 4324 4325 4328 4329 4332 4333 4882 3988 4328 4329 4339 4570 4571 4573 4882 3738 3984 3985 3987 3988 4324 4325 4326 4327 4329 4339 4570 4571 4573 4882 4324 4325 4326 4327 4328 4339 4573 4882 3743 3848 3849 4331 4333 4334 4337 4886 4330 4332 4333 4334 4337 4879 4882 4886 4323 4324 4326 4331 4333 4879 4882 4886 3739 3740 3741 3742 3743 3848 3849 4323 4324 4326 4330 4331 4332 4334 4337 4879 4882 4886 4330 4331 4333 4336 4337 4883 4886 4890 3848 3849 3850 4337 4338 4422 4423 4895 4334 4337 4338 4883 4886 4888 4890 4895 3743 3848 3849 3850 4330 4331 4333 4334 4335 4336 4338 4422 4423 4883 4886 4888 4890 4895 4335 4336 4337 4422 4423 4888 4890 4895 4327 4328 4329 4573 4574 4881 4882 4898 4279 4281 4282 4341 4343 4839 4840 4903 4340 4342 4343 4344 4346 4839 4840 4903 3748 3750 3751 4341 4343 4344 4346 4903 3744 3745 3746 3747 3748 3750 3751 4279 4281 4282 4340 4341 4342 4344 4346 4839 4840 4903 4341 4342 4343 4346 4347 4900 4903 4906 3759 3761 3762 4346 4347 4348 4353 4906 3748 3749 3750 3751 3759 3761 3762 4341 4342 4343 4344 4345 4347 4348 4353 4900 4903 4906 4344 4345 4346 4348 4353 4900 4903 4906 4345 4346 4347 4353 4354 4905 4906 4911 3766 3767 3768 4350 4351 4360 4361 4911 4349 4351 4352 4353 4354 4360 4361 4911 3752 3753 3754 3755 3756 3757 3758 3760 3761 3762 3766 3767 3768 4349 4350 4352 4353 4354 4360 4361 4911 3760 3761 3762 4350 4351 4353 4354 4911 3759 3760 3761 3762 4345 4346 4347 4348 4350 4351 4352 4354 4905 4906 4911 4348 4350 4351 4352 4353 4905 4906 4911 3773 3774 4064 4356 4357 4362 4364 4914 4355 4357 4358 4359 4360 4362 4364 4914 3763 3764 3773 3774 4051 4054 4064 4355 4356 4358 4359 4360 4362 4364 4914 3763 3764 4054 4356 4357 4359 4360 4914 4356 4357 4358 4360 4361 4910 4911 4914 3763 3764 3765 3766 3767 3768 4054 4349 4350 4351 4356 4357 4358 4359 4361 4910 4911 4914 4349 4350 4351 4359 4360 4910 4911 4914 4355 4356 4357 4364 4365 4913 4914 4918 3797 3802 3803 4364 4365 4374 4382 4918 3769 3770 3771 3772 3773 3774 3797 3802 3803 4064 4355 4356 4357 4362 4363 4365 4374 4382 4913 4914 4918 4362 4363 4364 4374 4382 4913 4914 4918 3783 3784 3785 4367 4369 4372 4373 4923 4366 4368 4369 4372 4373 4458 4461 4923 3877 3878 3880 4367 4369 4458 4461 4923 3775 3776 3777 3778 3783 3784 3785 3877 3878 3880 4366 4367 4368 4372 4373 4458 4461 4923 3786 3795 3796 4371 4373 4375 4377 4927 4370 4372 4373 4375 4377 4920 4923 4927 4366 4367 4369 4371 4373 4920 4923 4927 3779 3780 3781 3782 3783 3784 3785 3786 3795 3796 4366 4367 4369 4370 4371 4372 4375 4377 4920 4923 4927 4363 4364 4365 4382 4383 4917 4918 4929 4370 4371 4373 4376 4377 4927 4928 4929 4375 4377 4378 4379 4380 4927 4928 4929 3786 3794 3795 3796 4370 4371 4373 4375 4376 4378 4379 4380 4927 4928 4929 3794 3795 3796 4376 4377 4379 4380 4929 4376 4377 4378 4380 4381 4382 4383 4929 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3798 3799 3800 4376 4377 4378 4379 4381 4382 4383 4929 3798 3799 3800 4379 4380 4382 4383 4929 3797 3798 3799 3800 3801 3802 3803 4363 4364 4365 4374 4379 4380 4381 4383 4917 4918 4929 4374 4379 4380 4381 4382 4917 4918 4929 3809 3810 3811 4385 4386 4388 4390 4934 4384 4386 4387 4388 4390 4425 4428 4934 3804 3805 3806 3807 3809 3810 3811 3851 3856 3859 4384 4385 4387 4388 4390 4425 4428 4934 3851 3856 3859 4385 4386 4425 4428 4934 4384 4385 4386 4390 4391 4932 4934 4937 3813 3814 3815 4390 4391 4393 4394 4937 3808 3809 3810 3811 3813 3814 3815 4384 4385 4386 4388 4389 4391 4393 4394 4932 4934 4937 4388 4389 4390 4393 4394 4932 4934 4937 3816 3817 3819 4393 4394 4395 4397 4937 3812 3813 3814 3815 3816 3817 3819 4389 4390 4391 4392 4394 4395 4397 4937 4389 4390 4391 4392 4393 4395 4397 4937 4392 4393 4394 4397 4398 4936 4937 4941 3820 4397 4398 4399 4402 4403 4406 4941 3816 3817 3818 3819 3820 3821 3822 3824 4392 4393 4394 4395 4396 4398 4399 4402 4403 4406 4936 4937 4941 4395 4396 4397 4399 4403 4936 4937 4941 4396 4397 4398 4400 4403 4940 4941 4947 4399 4401 4403 4940 4941 4946 4947 4949 4400 4402 4403 4404 4406 4946 4947 4949 3820 4396 4397 4401 4403 4404 4406 4949 3820 4396 4397 4398 4399 4400 4401 4402 4404 4406 4940 4941 4946 4947 4949 4401 4402 4403 4405 4406 4407 4410 4949 3828 3829 3831 4404 4406 4407 4410 4949 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3831 4396 4397 4401 4402 4403 4404 4405 4407 4410 4949 4404 4405 4406 4408 4410 4948 4949 4955 4407 4409 4410 4411 4414 4948 4949 4955 3832 3833 3836 4408 4410 4411 4414 4955 3828 3829 3830 3831 3832 3833 3836 4404 4405 4406 4407 4408 4409 4411 4414 4948 4949 4955 4408 4409 4410 4412 4414 4954 4955 4959 4411 4413 4414 4415 4417 4954 4955 4959 3833 3834 3836 4412 4414 4415 4417 4959 3832 3833 3834 3836 4408 4409 4410 4411 4412 4413 4415 4417 4954 4955 4959 4412 4413 4414 4416 4417 4418 4421 4959 3840 3841 3843 4415 4417 4418 4421 4959 3833 3834 3835 3836 3837 3838 3839 3840 3841 3843 4412 4413 4414 4415 4416 4418 4421 4959 4415 4416 4417 4419 4421 4958 4959 4961 4418 4420 4421 4423 4424 4958 4959 4961 3844 3845 3847 4419 4421 4423 4424 4961 3840 3841 3842 3843 3844 3845 3847 4415 4416 4417 4418 4419 4420 4423 4424 4958 4959 4961 4335 4337 4338 4423 4424 4892 4895 4961 3844 3845 3846 3847 3848 3849 3850 4335 4337 4338 4419 4420 4421 4422 4424 4892 4895 4961 4419 4420 4421 4422 4423 4892 4895 4961 4385 4386 4387 4427 4428 4931 4934 4966 3856 3858 3859 4427 4428 4433 4436 4966 4425 4426 4428 4433 4436 4931 4934 4966 3851 3856 3858 3859 4385 4386 4387 4425 4426 4427 4433 4436 4931 4934 4966 3857 3858 3859 4431 4432 4434 4436 4970 3860 3862 3863 4431 4432 4438 4441 4970 4429 4430 4432 4434 4436 4438 4441 4970 3852 3853 3854 3855 3857 3858 3859 3860 3862 3863 4429 4430 4431 4434 4436 4438 4441 4970 4426 4427 4428 4435 4436 4437 4966 4974 4429 4431 4432 4435 4436 4967 4970 4974 4433 4434 4436 4437 4966 4967 4970 4974 3856 3857 3858 3859 4426 4427 4428 4429 4431 4432 4433 4434 4435 4437 4966 4967 4970 4974 4433 4435 4436 4963 4966 4973 4974 4978 4430 4431 4432 4440 4441 4968 4970 4983 3864 3867 3868 4440 4441 4442 4445 4983 4438 4439 4441 4442 4445 4968 4970 4983 3860 3861 3862 3863 3864 3867 3868 4430 4431 4432 4438 4439 4440 4442 4445 4968 4970 4983 4439 4440 4441 4444 4445 4981 4983 4985 3884 4444 4445 4448 4449 4463 4466 4985 4442 4443 4445 4463 4466 4981 4983 4985 3864 3866 3867 3868 3884 4439 4440 4441 4442 4443 4444 4448 4449 4463 4466 4981 4983 4985 3874 3875 3876 4447 4449 4456 4457 4990 4446 4448 4449 4456 4457 4462 4466 4990 3884 4443 4445 4447 4449 4462 4466 4990 3865 3866 3867 3868 3874 3875 3876 3884 4443 4445 4446 4447 4448 4456 4457 4462 4466 4990 3881 3882 3883 4451 4453 4460 4461 4994 4450 4452 4453 4454 4457 4460 4461 4994 3873 3874 3876 4451 4453 4454 4457 4994 3869 3870 3871 3872 3873 3874 3876 3881 3882 3883 4450 4451 4452 4454 4457 4460 4461 4994 4451 4452 4453 4455 4457 4993 4994 4997 4454 4456 4457 4987 4990 4993 4994 4997 4446 4447 4449 4455 4457 4987 4990 4997 3873 3874 3875 3876 4446 4447 4449 4451 4452 4453 4454 4455 4456 4987 4990 4993 4994 4997 4367 4368 4369 4459 4461 4922 4923 5000 4458 4460 4461 4922 4923 4991 4994 5000 4450 4451 4453 4459 4461 4991 4994 5000 3877 3878 3879 3880 3881 3882 3883 4367 4368 4369 4450 4451 4453 4458 4459 4460 4922 4923 4991 4994 5000 4447 4448 4449 4464 4466 4989 4990 5004 4443 4444 4445 4465 4466 4979 4985 5008 4462 4465 4466 4989 4990 5001 5004 5008 4463 4464 4466 4979 4985 5001 5004 5008 3884 4443 4444 4445 4447 4448 4449 4462 4463 4464 4465 4979 4985 4989 4990 5001 5004 5008 3894 3895 3897 4468 4471 4479 4483 5013 4467 4469 4471 4479 4483 5010 5013 5015 4468 4470 4471 4472 4475 5010 5013 5015 3887 3888 3889 4469 4471 4472 4475 5015 3885 3887 3888 3889 3894 3895 3897 4467 4468 4469 4470 4472 4475 4479 4483 5010 5013 5015 4469 4470 4471 4473 4475 5014 5015 5018 4472 4474 4475 4477 4478 5014 5015 5018 3891 3892 3893 4473 4475 4477 4478 5018 3886 3887 3888 3889 3891 3892 3893 4469 4470 4471 4472 4473 4474 4477 4478 5014 5015 5018 4246 4247 4249 4477 4478 4821 4823 5018 3890 3891 3892 3893 4246 4247 4249 4473 4474 4475 4476 4478 4821 4823 5018 4473 4474 4475 4476 4477 4821 4823 5018 4467 4468 4471 4480 4483 5009 5013 5022 4479 4482 4483 5009 5013 5022 5023 5027 3895 3896 3897 4482 4483 4484 4487 5027 4480 4481 4483 4484 4487 5022 5023 5027 3894 3895 3896 3897 4467 4468 4471 4479 4480 4481 4482 4484 4487 5009 5013 5022 5023 5027 4481 4482 4483 4485 4486 4487 5027 5035 4484 4486 4487 5027 5028 5030 5033 5035 4484 4485 4487 4488 4494 4495 5027 5035 3895 3896 3897 3898 3904 3905 3906 4481 4482 4483 4484 4485 4486 4488 4494 4495 5027 5035 3904 3905 3906 4486 4487 4494 4495 5035 3956 3957 3958 4490 4493 4544 4545 5040 4489 4491 4493 4544 4545 5039 5040 5042 4490 4492 4493 4495 4496 5039 5040 5042 3900 3901 3903 4491 4493 4495 4496 5042 3899 3900 3901 3903 3956 3957 3958 4489 4490 4491 4492 4495 4496 4544 4545 5039 5040 5042 4486 4487 4488 4495 4496 5035 5036 5042 3900 3901 3902 3903 3904 3905 3906 4486 4487 4488 4491 4492 4493 4494 4496 5035 5036 5042 4491 4492 4493 4494 4495 5035 5036 5042 3940 3941 3942 4499 4500 4529 4531 5048 3911 3913 3914 4499 4500 4501 4504 5048 4497 4498 4500 4501 4504 4529 4531 5048 3907 3908 3909 3910 3911 3913 3914 3940 3941 3942 4497 4498 4499 4501 4504 4529 4531 5048 4498 4499 4500 4503 4504 5046 5048 5052 3915 3917 3918 4503 4504 4505 4508 5052 4501 4502 4504 4505 4508 5046 5048 5052 3911 3912 3913 3914 3915 3917 3918 4498 4499 4500 4501 4502 4503 4505 4508 5046 5048 5052 4502 4503 4504 4507 4508 5050 5052 5056 3919 3921 3922 4507 4508 4509 4512 5056 4505 4506 4508 4509 4512 5050 5052 5056 3915 3916 3917 3918 3919 3921 3922 4502 4503 4504 4505 4506 4507 4509 4512 5050 5052 5056 4506 4507 4508 4511 4512 5054 5056 5060 3923 3925 3926 4511 4512 4513 4516 5060 4509 4510 4512 4513 4516 5054 5056 5060 3919 3920 3921 3922 3923 3925 3926 4506 4507 4508 4509 4510 4511 4513 4516 5054 5056 5060 4510 4511 4512 4515 4516 5058 5060 5062 4199 4200 4201 4515 4516 4774 4776 5062 4513 4514 4516 4774 4776 5058 5060 5062 3923 3924 3925 3926 4199 4200 4201 4510 4511 4512 4513 4514 4515 4774 4776 5058 5060 5062 3939 3941 3942 4526 4527 4528 4531 5066 3932 3933 3934 4519 4521 4522 4523 5069 4518 4520 4521 4522 4523 4532 4535 5069 3943 3944 3947 4519 4521 4532 4535 5069 3927 3932 3933 3934 3943 3944 3947 4518 4519 4520 4522 4523 4532 4535 5069 4518 4519 4521 4523 4524 4525 4526 5069 3928 3929 3930 3931 3932 3933 3934 3935 3937 3938 4518 4519 4521 4522 4524 4525 4526 5069 3935 3937 3938 4522 4523 4525 4526 5069 4522 4523 4524 4526 4527 5065 5066 5069 3935 3936 3937 3938 3939 3941 3942 4517 4522 4523 4524 4525 4527 4528 4531 5065 5066 5069 4517 4525 4526 4528 4531 5065 5066 5069 4517 4526 4527 4530 4531 5064 5066 5074 4497 4499 4500 4530 4531 5045 5048 5074 4528 4529 4531 5045 5048 5064 5066 5074 3939 3940 3941 3942 4497 4499 4500 4517 4526 4527 4528 4529 4530 5045 5048 5064 5066 5074 4519 4520 4521 4533 4535 5068 5069 5079 4532 4534 4535 4536 4539 5068 5069 5079 3944 3945 3947 4533 4535 4536 4539 5079 3943 3944 3945 3947 4519 4520 4521 4532 4533 4534 4536 4539 5068 5069 5079 4533 4534 4535 4537 4539 5078 5079 5083 4536 4538 4539 4540 4543 5078 5079 5083 3948 3949 3951 4537 4539 4540 4543 5083 3944 3945 3946 3947 3948 3949 3951 4533 4534 4535 4536 4537 4538 4540 4543 5078 5079 5083 4537 4538 4539 4541 4543 5082 5083 5085 4540 4542 4543 4545 4546 5082 5083 5085 3952 3953 3955 4541 4543 4545 4546 5085 3948 3949 3950 3951 3952 3953 3955 4537 4538 4539 4540 4541 4542 4545 4546 5082 5083 5085 4489 4490 4493 4545 4546 4547 5040 5085 3952 3953 3954 3955 3956 3957 3958 4489 4490 4493 4541 4542 4543 4544 4546 4547 5040 5085 4541 4542 4543 4544 4545 4547 5040 5085 4544 4545 4546 5037 5040 5084 5085 5091 3989 3990 3991 3993 3994 4549 4550 4551 4552 4576 4577 5093 3959 3960 3961 3962 3964 3965 3966 3989 3990 3991 3993 3994 4548 4550 4551 4552 4576 4577 5093 3964 3965 3966 4548 4549 4551 4552 4576 4577 5093 4548 4549 4550 4552 4553 4554 4555 4576 4577 5093 5094 5096 3963 3964 3965 3966 3968 3969 3970 4548 4549 4550 4551 4553 4554 4555 4576 4577 5093 5094 5096 3968 3969 3970 4551 4552 4554 4555 5093 5094 5096 4551 4552 4553 4555 4556 4557 4558 5093 5094 5096 5097 5099 3967 3968 3969 3970 3972 3973 3974 4551 4552 4553 4554 4556 4557 4558 5093 5094 5096 5097 5099 3972 3973 3974 4554 4555 4557 4558 5096 5097 5099 4554 4555 4556 4558 4559 4560 4561 5096 5097 5099 5100 5102 3971 3972 3973 3974 3975 3978 3979 4554 4555 4556 4557 4559 4560 4561 5096 5097 5099 5100 5102 3975 3978 3979 4557 4558 4560 4561 5099 5100 5102 4557 4558 4559 4561 4562 4563 4564 5099 5100 5102 5103 5105 3975 3977 3978 3979 4557 4558 4559 4560 4562 4563 4564 5099 5100 5102 5103 5105 3977 3978 3979 4560 4561 4563 4564 5102 5103 5105 4560 4561 4562 4564 4565 4566 4567 5102 5103 5105 5106 5108 3976 3977 3978 3979 3981 3982 3983 4560 4561 4562 4563 4565 4566 4567 5102 5103 5105 5106 5108 3981 3982 3983 4563 4564 4566 4567 5105 5106 5108 4563 4564 4565 4567 4568 4569 4570 5105 5106 5108 5109 5111 3980 3981 3982 3983 3985 3986 3987 4563 4564 4565 4566 4568 4569 4570 5105 5106 5108 5109 5111 3985 3986 3987 4566 4567 4569 4570 5108 5109 5111 4566 4567 4568 4570 4571 4572 4573 5108 5109 5111 5112 5114 3984 3985 3986 3987 3988 4327 4328 4566 4567 4568 4569 4571 4572 4573 5108 5109 5111 5112 5114 3988 4327 4328 4569 4570 4572 4573 5111 5112 5114 4569 4570 4571 4573 4574 4897 4898 5111 5112 5114 5115 5117 3988 4327 4328 4329 4339 4569 4570 4571 4572 4574 4881 4882 4897 4898 5111 5112 5114 5115 5117 4339 4572 4573 4881 4882 4897 4898 5114 5115 5117 3992 3993 3994 3996 3997 4576 4577 4579 4580 5092 5093 5120 3989 3990 3991 3992 3993 3994 3996 3997 4548 4549 4550 4551 4552 4575 4577 4579 4580 5092 5093 5120 4548 4549 4550 4551 4552 4575 4576 4579 4580 5092 5093 5120 3995 3996 3997 3999 4000 4579 4580 4582 4583 5119 5120 5123 3992 3993 3994 3995 3996 3997 3999 4000 4575 4576 4577 4578 4580 4582 4583 5092 5093 5119 5120 5123 4575 4576 4577 4578 4579 4582 4583 5092 5093 5119 5120 5123 3998 3999 4000 4002 4003 4582 4583 4585 4586 5122 5123 5126 3995 3996 3997 3998 3999 4000 4002 4003 4578 4579 4580 4581 4583 4585 4586 5119 5120 5122 5123 5126 4578 4579 4580 4581 4582 4585 4586 5119 5120 5122 5123 5126 4001 4002 4003 4005 4006 4585 4586 4588 4589 5125 5126 5129 3998 3999 4000 4001 4002 4003 4005 4006 4581 4582 4583 4584 4586 4588 4589 5122 5123 5125 5126 5129 4581 4582 4583 4584 4585 4588 4589 5122 5123 5125 5126 5129 4004 4005 4006 4008 4009 4588 4589 4591 4592 5128 5129 5132 4001 4002 4003 4004 4005 4006 4008 4009 4584 4585 4586 4587 4589 4591 4592 5125 5126 5128 5129 5132 4584 4585 4586 4587 4588 4591 4592 5125 5126 5128 5129 5132 4007 4008 4009 4011 4012 4591 4592 4594 4595 5131 5132 5135 4004 4005 4006 4007 4008 4009 4011 4012 4587 4588 4589 4590 4592 4594 4595 5128 5129 5131 5132 5135 4587 4588 4589 4590 4591 4594 4595 5128 5129 5131 5132 5135 4010 4011 4012 4014 4015 4594 4595 4597 4598 5134 5135 5138 4007 4008 4009 4010 4011 4012 4014 4015 4590 4591 4592 4593 4595 4597 4598 5131 5132 5134 5135 5138 4590 4591 4592 4593 4594 4597 4598 5131 5132 5134 5135 5138 4013 4014 4015 4017 4018 4597 4598 4600 4601 5137 5138 5141 4010 4011 4012 4013 4014 4015 4017 4018 4593 4594 4595 4596 4598 4600 4601 5134 5135 5137 5138 5141 4593 4594 4595 4596 4597 4600 4601 5134 5135 5137 5138 5141 4016 4017 4018 4020 4021 4600 4601 4603 4604 5140 5141 5144 4013 4014 4015 4016 4017 4018 4020 4021 4596 4597 4598 4599 4601 4603 4604 5137 5138 5140 5141 5144 4596 4597 4598 4599 4600 4603 4604 5137 5138 5140 5141 5144 4019 4020 4021 4025 4026 4603 4604 4608 4609 5143 5144 5149 4016 4017 4018 4019 4020 4021 4025 4026 4599 4600 4601 4602 4604 4608 4609 5140 5141 5143 5144 5149 4599 4600 4601 4602 4603 4608 4609 5140 5141 5143 5144 5149 4606 4607 4608 4609 5147 5148 5149 4022 4023 4024 4025 4026 4605 4607 4608 4609 5147 5148 5149 4022 4023 4024 4025 4026 4605 4606 4608 4609 5147 5148 5149 4019 4020 4021 4022 4023 4024 4025 4026 4602 4603 4604 4605 4606 4607 4609 5143 5144 5147 5148 5149 4602 4603 4604 4605 4606 4607 4608 5143 5144 5147 5148 5149 4032 4033 4034 4612 4613 4615 4617 5154 4035 4037 4038 4612 4613 4618 4621 5154 4610 4611 4613 4615 4617 4618 4621 5154 4027 4028 4029 4030 4032 4033 4034 4035 4037 4038 4610 4611 4612 4615 4617 4618 4621 5154 4095 4109 4110 4616 4617 4663 4668 5158 4610 4612 4613 4616 4617 5151 5154 5158 4614 4615 4617 4663 4668 5151 5154 5158 4031 4032 4033 4034 4095 4109 4110 4610 4612 4613 4614 4615 4616 4663 4668 5151 5154 5158 4611 4612 4613 4620 4621 5152 5154 5163 4039 4041 4042 4620 4621 4622 4625 5163 4618 4619 4621 4622 4625 5152 5154 5163 4035 4036 4037 4038 4039 4041 4042 4611 4612 4613 4618 4619 4620 4622 4625 5152 5154 5163 4619 4620 4621 4624 4625 5161 5163 5168 4207 4209 4210 4624 4625 4782 4784 5168 4622 4623 4625 4782 4784 5161 5163 5168 4039 4040 4041 4042 4207 4209 4210 4619 4620 4621 4622 4623 4624 4782 4784 5161 5163 5168 4173 4174 4175 4628 4629 4742 4744 5174 4047 4049 4050 4628 4629 4630 4633 5174 4626 4627 4629 4630 4633 4742 4744 5174 4043 4044 4045 4046 4047 4049 4050 4173 4174 4175 4626 4627 4628 4630 4633 4742 4744 5174 4627 4628 4629 4632 4633 5172 5174 5176 4055 4056 4057 4632 4633 4634 4635 5176 4630 4631 4633 4634 4635 5172 5174 5176 4047 4048 4049 4050 4055 4056 4057 4627 4628 4629 4630 4631 4632 4634 4635 5172 5174 5176 4631 4632 4633 4635 4636 4637 4639 5176 4051 4052 4053 4054 4055 4056 4057 4062 4063 4064 4631 4632 4633 4634 4636 4637 4639 5176 4062 4063 4064 4634 4635 4637 4639 5176 4634 4635 4636 4638 4639 5176 5177 5180 4637 4639 4640 4641 4642 5176 5177 5180 4058 4059 4060 4061 4062 4063 4064 4069 4070 4071 4634 4635 4636 4637 4638 4640 4641 4642 5176 5177 5180 4069 4070 4071 4638 4639 4641 4642 5180 4638 4639 4640 4642 4643 4644 4646 5180 4065 4066 4067 4068 4069 4070 4071 4073 4074 4075 4638 4639 4640 4641 4643 4644 4646 5180 4073 4074 4075 4641 4642 4644 4646 5180 4641 4642 4643 4645 4646 5180 5181 5184 4644 4646 4647 4648 4661 5180 5181 5184 4072 4073 4074 4075 4092 4093 4094 4641 4642 4643 4644 4645 4647 4648 4661 5180 5181 5184 4092 4093 4094 4645 4646 4648 4661 5184 4645 4646 4647 4660 4661 5184 5185 5189 4147 4148 4149 4650 4652 4711 4712 5193 4649 4651 4652 4653 4656 4711 4712 5193 4080 4081 4084 4650 4652 4653 4656 5193 4076 4077 4078 4079 4080 4081 4084 4147 4148 4149 4649 4650 4651 4653 4656 4711 4712 5193 4650 4651 4652 4654 4656 5192 5193 5195 4653 4655 4656 4657 4659 5192 5193 5195 4081 4082 4084 4654 4656 4657 4659 5195 4080 4081 4082 4084 4650 4651 4652 4653 4654 4655 4657 4659 5192 5193 5195 4654 4655 4656 4658 4659 4661 4662 5195 4091 4092 4094 4657 4659 4661 4662 5195 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4094 4654 4655 4656 4657 4658 4661 4662 5195 4648 4661 4662 5184 5185 5187 5189 5195 4091 4092 4093 4094 4645 4646 4647 4648 4657 4658 4659 4660 4662 5184 5185 5187 5189 5195 4657 4658 4659 4660 4661 5187 5189 5195 4614 4616 4617 4664 4666 4668 5158 5204 4663 4666 4668 5157 5158 5197 5199 5204 4108 4109 4110 4667 4668 4677 4678 5209 4663 4664 4667 4668 5158 5201 5204 5209 4665 4666 4668 4677 4678 5201 5204 5209 4095 4108 4109 4110 4614 4616 4617 4663 4664 4665 4666 4667 4677 4678 5158 5201 5204 5209 4107 4108 4109 4670 4672 4676 4677 5212 4669 4671 4672 4673 4675 4676 4677 5212 4103 4105 4106 4670 4672 4673 4675 5212 4096 4097 4098 4099 4100 4101 4102 4103 4105 4106 4107 4108 4109 4669 4670 4671 4673 4675 4676 4677 5212 4670 4671 4672 4674 4675 4679 4682 5212 4111 4112 4114 4673 4675 4679 4682 5212 4103 4104 4105 4106 4111 4112 4114 4670 4671 4672 4673 4674 4679 4682 5212 4669 4670 4672 4677 4678 5208 5209 5212 4107 4108 4109 4110 4665 4667 4668 4669 4670 4672 4676 4678 5208 5209 5212 4665 4667 4668 4676 4677 5208 5209 5212 4673 4674 4675 4680 4682 5211 5212 5216 4679 4681 4682 4683 4687 5211 5212 5216 4115 4116 4119 4680 4682 4683 4687 5216 4111 4112 4113 4114 4115 4116 4119 4673 4674 4675 4679 4680 4681 4683 4687 5211 5212 5216 4680 4681 4682 4684 4687 5215 5216 5221 4683 4685 4687 5215 5216 5220 5221 5224 4684 4686 4687 4688 4691 5220 5221 5224 4116 4117 4119 4685 4687 4688 4691 5224 4115 4116 4117 4119 4680 4681 4682 4683 4684 4685 4686 4688 4691 5215 5216 5220 5221 5224 4685 4686 4687 4689 4691 5223 5224 5227 4688 4690 4691 4692 4694 5223 5224 5227 4120 4121 4123 4689 4691 4692 4694 5227 4116 4117 4118 4119 4120 4121 4123 4685 4686 4687 4688 4689 4690 4692 4694 5223 5224 5227 4689 4690 4691 4693 4694 4695 4697 5227 4124 4125 4127 4692 4694 4695 4697 5227 4120 4121 4122 4123 4124 4125 4127 4689 4690 4691 4692 4693 4695 4697 5227 4692 4693 4694 4696 4697 4698 4702 5227 4131 4132 4135 4695 4697 4698 4702 5227 4124 4125 4126 4127 4128 4129 4130 4131 4132 4135 4692 4693 4694 4695 4696 4698 4702 5227 4695 4696 4697 4699 4702 5226 5227 5232 4698 4700 4702 5226 5227 5231 5232 5235 4699 4701 4702 4703 4705 5231 5232 5235 4132 4133 4135 4700 4702 4703 4705 5235 4131 4132 4133 4135 4695 4696 4697 4698 4699 4700 4701 4703 4705 5226 5227 5231 5232 5235 4700 4701 4702 4704 4705 4706 4709 5235 4139 4140 4142 4703 4705 4706 4709 5235 4132 4133 4134 4135 4136 4137 4138 4139 4140 4142 4700 4701 4702 4703 4704 4706 4709 5235 4703 4704 4705 4707 4709 5234 5235 5239 4706 4708 4709 4710 4712 5234 5235 5239 4143 4144 4146 4707 4709 4710 4712 5239 4139 4140 4141 4142 4143 4144 4146 4703 4704 4705 4706 4707 4708 4710 4712 5234 5235 5239 4707 4708 4709 4711 4712 5190 5193 5239 4649 4650 4652 4710 4712 5190 5193 5239 4143 4144 4145 4146 4147 4148 4149 4649 4650 4652 4707 4708 4709 4710 4711 5190 5193 5239 4183 4184 4185 4714 4716 4755 4756 5242 4713 4715 4716 4755 4756 5242 5243 5246 4714 4716 4717 4718 4721 5242 5243 5246 4150 4152 4153 4154 4155 4183 4184 4185 4713 4714 4715 4717 4718 4721 4722 4724 4755 4756 5242 5243 5246 4152 4715 4716 4718 4721 4722 4724 5246 4715 4716 4717 4719 4721 5246 5247 5251 4718 4720 4721 5246 5247 5251 5252 5254 4719 4721 4722 4723 4724 5251 5252 5254 4152 4715 4716 4717 4718 4719 4720 4722 4723 4724 5246 5247 5251 5252 5254 4152 4716 4717 4720 4721 4723 4724 5254 4720 4721 4722 4724 4725 4731 4733 5254 4151 4152 4153 4154 4155 4156 4157 4158 4163 4164 4166 4716 4717 4720 4721 4722 4723 4725 4731 4733 5254 4163 4164 4166 4723 4724 4731 4733 5254 4168 4170 4171 4727 4729 4737 4740 5258 4726 4728 4729 4730 4735 4737 4740 5258 4165 4166 4167 4727 4729 4730 4735 5258 4159 4160 4161 4162 4165 4166 4167 4168 4170 4171 4726 4727 4728 4730 4735 4737 4740 5258 4727 4728 4729 4735 4736 5256 5258 5261 4723 4724 4725 4732 4733 5254 5255 5261 4731 4733 4734 4735 4736 5254 5255 5261 4163 4164 4165 4166 4723 4724 4725 4731 4732 4734 4735 4736 5254 5255 5261 4164 4165 4166 4732 4733 4735 4736 5261 4164 4165 4166 4167 4727 4728 4729 4730 4732 4733 4734 4736 5256 5258 5261 4730 4732 4733 4734 4735 5256 5258 5261 4726 4727 4729 4739 4740 5258 5259 5266 4172 4174 4175 4739 4740 4741 4744 5266 4737 4738 4740 4741 4744 5258 5259 5266 4168 4169 4170 4171 4172 4174 4175 4726 4727 4729 4737 4738 4739 4741 4744 5258 5259 5266 4738 4739 4740 4743 4744 5264 5266 5270 4626 4628 4629 4743 4744 5171 5174 5270 4741 4742 4744 5171 5174 5264 5266 5270 4172 4173 4174 4175 4626 4628 4629 4738 4739 4740 4741 4742 4743 5171 5174 5264 5266 5270 4188 4189 4190 4746 4748 4749 4762 5280 4745 4748 4749 4762 4763 5274 5276 5280 4180 4181 4182 4748 4749 4750 4751 5280 4745 4746 4747 4749 4750 4751 4762 5280 4176 4177 4178 4179 4180 4181 4182 4188 4189 4190 4745 4746 4747 4748 4750 4751 4762 5280 4747 4748 4749 4751 4752 5278 5280 5283 4180 4181 4182 4747 4748 4749 4750 4752 5278 5280 5283 4750 4751 5278 5280 5283 4754 4755 5291 5292 5293 4753 4755 4756 5240 5242 5291 5292 5293 4183 4184 4185 4713 4714 4716 4753 4754 4756 5240 5242 5291 5292 5293 4713 4714 4716 4754 4755 5240 5242 5293 4192 4193 4194 4759 4760 4764 4768 5298 4187 4189 4190 4759 4760 4761 4762 5298 4757 4758 4760 4761 4762 4764 4768 5298 4186 4187 4189 4190 4192 4193 4194 4757 4758 4759 4761 4762 4764 4768 5298 4758 4759 4760 4762 4763 4765 5276 5298 4187 4188 4189 4190 4745 4746 4748 4749 4758 4759 4760 4761 4763 4765 5274 5276 5280 5298 4746 4761 4762 4765 5274 5276 5280 5298 4757 4759 4760 4766 4768 5296 5298 5302 4761 4762 4763 5272 5276 5298 5299 5305 4764 4768 4769 5296 5298 5301 5302 5309 4195 4197 4198 4768 4769 4770 4772 5309 4191 4192 4193 4194 4195 4197 4198 4757 4759 4760 4764 4766 4767 4769 4770 4772 5296 5298 5301 5302 5309 4766 4767 4768 4770 4772 5301 5302 5309 4767 4768 4769 4772 4773 5308 5309 5313 4203 4205 4206 4772 4773 4778 4780 5313 4195 4196 4197 4198 4203 4205 4206 4767 4768 4769 4770 4771 4773 4778 4780 5308 5309 5313 4770 4771 4772 4778 4780 5308 5309 5313 4514 4515 4516 4775 4776 5044 5062 5322 4774 4776 4777 4779 4780 5044 5062 5322 4199 4200 4201 4202 4204 4205 4206 4514 4515 4516 4774 4775 4777 4779 4780 5044 5062 5322 4204 4205 4206 4775 4776 4779 4780 5322 4771 4772 4773 4780 4781 5312 5313 5326 4775 4776 4777 4780 4781 5322 5323 5326 4203 4204 4205 4206 4771 4772 4773 4775 4776 4777 4778 4779 4781 5312 5313 5322 5323 5326 4778 4779 4780 5312 5313 5322 5323 5326 4623 4624 4625 4784 4785 5165 5168 5329 4208 4209 4210 4212 4213 4784 4785 4787 4788 5328 5329 5332 4207 4208 4209 4210 4212 4213 4623 4624 4625 4782 4783 4785 4787 4788 5165 5168 5328 5329 5332 4782 4783 4784 4787 4788 5165 5168 5328 5329 5332 4211 4212 4213 4215 4216 4787 4788 4790 4791 5331 5332 5335 4208 4209 4210 4211 4212 4213 4215 4216 4783 4784 4785 4786 4788 4790 4791 5328 5329 5331 5332 5335 4783 4784 4785 4786 4787 4790 4791 5328 5329 5331 5332 5335 4214 4215 4216 4218 4219 4790 4791 4793 4794 5334 5335 5338 4211 4212 4213 4214 4215 4216 4218 4219 4786 4787 4788 4789 4791 4793 4794 5331 5332 5334 5335 5338 4786 4787 4788 4789 4790 4793 4794 5331 5332 5334 5335 5338 4217 4218 4219 4221 4222 4793 4794 4796 4797 5337 5338 5341 4214 4215 4216 4217 4218 4219 4221 4222 4789 4790 4791 4792 4794 4796 4797 5334 5335 5337 5338 5341 4789 4790 4791 4792 4793 4796 4797 5334 5335 5337 5338 5341 4220 4221 4222 4224 4225 4796 4797 4799 4800 5340 5341 5344 4217 4218 4219 4220 4221 4222 4224 4225 4792 4793 4794 4795 4797 4799 4800 5337 5338 5340 5341 5344 4792 4793 4794 4795 4796 4799 4800 5337 5338 5340 5341 5344 4223 4224 4225 4227 4228 4799 4800 4802 4803 5343 5344 5347 4220 4221 4222 4223 4224 4225 4227 4228 4795 4796 4797 4798 4800 4802 4803 5340 5341 5343 5344 5347 4795 4796 4797 4798 4799 4802 4803 5340 5341 5343 5344 5347 4226 4227 4228 4230 4231 4802 4803 4805 4806 5346 5347 5350 4223 4224 4225 4226 4227 4228 4230 4231 4798 4799 4800 4801 4803 4805 4806 5343 5344 5346 5347 5350 4798 4799 4800 4801 4802 4805 4806 5343 5344 5346 5347 5350 4229 4230 4231 4233 4234 4805 4806 4808 4809 5349 5350 5353 4226 4227 4228 4229 4230 4231 4233 4234 4801 4802 4803 4804 4806 4808 4809 5346 5347 5349 5350 5353 4801 4802 4803 4804 4805 4808 4809 5346 5347 5349 5350 5353 4232 4233 4234 4236 4237 4808 4809 4811 4812 5352 5353 5356 4229 4230 4231 4232 4233 4234 4236 4237 4804 4805 4806 4807 4809 4811 4812 5349 5350 5352 5353 5356 4804 4805 4806 4807 4808 4811 4812 5349 5350 5352 5353 5356 4235 4236 4237 4239 4240 4811 4812 4814 4815 5355 5356 5359 4232 4233 4234 4235 4236 4237 4239 4240 4807 4808 4809 4810 4812 4814 4815 5352 5353 5355 5356 5359 4807 4808 4809 4810 4811 4814 4815 5352 5353 5355 5356 5359 4238 4239 4240 4244 4245 4814 4815 4819 4820 5358 5359 5364 4235 4236 4237 4238 4239 4240 4244 4245 4810 4811 4812 4813 4815 4819 4820 5355 5356 5358 5359 5364 4810 4811 4812 4813 4814 4819 4820 5355 5356 5358 5359 5364 4817 4818 4819 4820 5362 5363 5364 4241 4242 4243 4244 4245 4816 4818 4819 4820 5362 5363 5364 4241 4242 4243 4244 4245 4816 4817 4819 4820 5362 5363 5364 4238 4239 4240 4241 4242 4243 4244 4245 4813 4814 4815 4816 4817 4818 4820 5358 5359 5362 5363 5364 4813 4814 4815 4816 4817 4818 4819 5358 5359 5362 5363 5364 4476 4477 4478 4823 4824 5017 5018 5367 4254 4255 4256 4823 4824 4825 4826 5367 4246 4247 4248 4249 4250 4251 4252 4254 4255 4256 4476 4477 4478 4821 4822 4824 4825 4826 5017 5018 5367 4821 4822 4823 4825 4826 5017 5018 5367 4822 4823 4824 4826 5367 4253 4254 4255 4256 4257 4258 4259 4260 4261 4822 4823 4824 4825 5367 4272 4273 4274 4828 4829 4830 4832 5370 4262 4263 4264 4272 4273 4274 4827 4829 4830 4832 5370 4827 4828 4830 4832 5370 4827 4828 4829 4831 4832 4834 4836 5370 4276 4277 4278 4830 4832 4834 4836 5370 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4276 4277 4278 4827 4828 4829 4830 4831 4834 4836 5370 4307 4308 4309 4835 4836 4861 4863 5375 4830 4831 4832 4835 4836 5369 5370 5375 4833 4834 4836 4861 4863 5369 5370 5375 4275 4276 4277 4278 4307 4308 4309 4830 4831 4832 4833 4834 4835 4861 4863 5369 5370 5375 4284 4285 4286 4838 4840 4843 4844 5379 4837 4839 4840 4843 4844 4901 4903 5379 4340 4341 4343 4838 4840 4901 4903 5379 4279 4280 4281 4282 4284 4285 4286 4340 4341 4343 4837 4838 4839 4843 4844 4901 4903 5379 4288 4289 4290 4842 4844 4847 4848 5383 4841 4843 4844 4847 4848 5376 5379 5383 4837 4838 4840 4842 4844 5376 5379 5383 4283 4284 4285 4286 4288 4289 4290 4837 4838 4840 4841 4842 4843 4847 4848 5376 5379 5383 4292 4293 4294 4846 4848 4851 4852 5387 4845 4847 4848 4851 4852 5380 5383 5387 4841 4842 4844 4846 4848 5380 5383 5387 4287 4288 4289 4290 4292 4293 4294 4841 4842 4844 4845 4846 4847 4851 4852 5380 5383 5387 4296 4297 4298 4850 4852 4855 4856 5391 4849 4851 4852 4855 4856 5384 5387 5391 4845 4846 4848 4850 4852 5384 5387 5391 4291 4292 4293 4294 4296 4297 4298 4845 4846 4848 4849 4850 4851 4855 4856 5384 5387 5391 4300 4301 4302 4854 4856 4857 4858 5393 4853 4855 4856 4857 4858 5388 5391 5393 4849 4850 4852 4854 4856 5388 5391 5393 4295 4296 4297 4298 4300 4301 4302 4849 4850 4852 4853 4854 4855 4857 4858 5388 5391 5393 4853 4854 4856 4858 4859 4864 4867 5393 4299 4300 4301 4302 4303 4304 4305 4310 4317 4319 4853 4854 4856 4857 4859 4864 4867 5393 4310 4317 4319 4857 4858 4864 4867 5393 4313 4314 4315 4862 4863 4874 4875 5400 4833 4835 4836 4862 4863 5372 5375 5400 4860 4861 4863 4874 4875 5372 5375 5400 4306 4307 4308 4309 4313 4314 4315 4833 4835 4836 4860 4861 4862 4874 4875 5372 5375 5400 4857 4858 4859 4865 4867 5393 5394 5403 4864 4866 4867 5393 5394 5403 5404 5407 4865 4867 4868 4876 4877 5403 5404 5407 4310 4317 4318 4319 4857 4858 4859 4864 4865 4866 4868 4876 4877 5393 5394 5403 5404 5407 4317 4318 4319 4866 4867 4876 4877 5407 4316 4321 4322 4870 4871 4877 4878 5410 4869 4871 4872 4873 4874 4877 4878 5410 4311 4312 4313 4314 4316 4321 4322 4869 4870 4872 4873 4874 4877 4878 5410 4312 4313 4314 4870 4871 4873 4874 5410 4870 4871 4872 4874 4875 5396 5400 5410 4312 4313 4314 4315 4860 4862 4863 4870 4871 4872 4873 4875 5396 5400 5410 4860 4862 4863 4873 4874 5396 5400 5410 4866 4867 4868 4877 4878 5407 5408 5410 4316 4317 4318 4319 4320 4321 4322 4866 4867 4868 4869 4870 4871 4876 4878 5407 5408 5410 4869 4870 4871 4876 4877 5407 5408 5410 4331 4332 4333 4880 4882 4885 4886 5413 4879 4881 4882 4885 4886 4898 4899 5413 4339 4573 4574 4880 4882 4898 4899 5413 4323 4324 4325 4326 4327 4328 4329 4331 4332 4333 4339 4573 4574 4879 4880 4881 4885 4886 4898 4899 5413 4334 4336 4337 4884 4886 4887 4890 5416 4883 4885 4886 4887 4890 5413 5414 5416 4879 4880 4882 4884 4886 5413 5414 5416 4330 4331 4332 4333 4334 4336 4337 4879 4880 4882 4883 4884 4885 4887 4890 5413 5414 5416 4883 4884 4886 4889 4890 5416 5417 5420 4336 4337 4338 4890 4891 4894 4895 5425 4887 4890 4891 5416 5417 5418 5420 5425 4334 4336 4337 4338 4883 4884 4886 4887 4888 4889 4891 4894 4895 5416 5417 5418 5420 5425 4888 4889 4890 4894 4895 5418 5420 5425 4422 4423 4424 4895 4896 4960 4961 5433 4894 4895 4896 5422 5425 5431 5432 5433 4888 4890 4891 4893 4895 4896 5425 5433 4335 4336 4337 4338 4422 4423 4424 4888 4890 4891 4892 4893 4894 4896 4960 4961 5425 5433 4892 4893 4894 4895 4960 4961 5425 5433 4572 4573 4574 4898 4899 5114 5115 5117 5118 5412 5413 5436 4339 4572 4573 4574 4880 4881 4882 4897 4899 5114 5115 5117 5118 5412 5413 5436 4880 4881 4882 4897 4898 5117 5118 5412 5413 5436 4344 4346 4347 4902 4903 4904 4906 5441 4838 4839 4840 4902 4903 5378 5379 5441 4900 4901 4903 4904 4906 5378 5379 5441 4340 4341 4342 4343 4344 4346 4347 4838 4839 4840 4900 4901 4902 4904 4906 5378 5379 5441 4900 4902 4903 4906 4907 5440 5441 5445 4348 4353 4354 4906 4907 4908 4911 5445 4344 4345 4346 4347 4348 4353 4354 4900 4902 4903 4904 4905 4907 4908 4911 5440 5441 5445 4904 4905 4906 4908 4911 5440 5441 5445 4905 4906 4907 4909 4911 5444 5445 5447 4908 4910 4911 4912 4914 5444 5445 5447 4359 4360 4361 4909 4911 4912 4914 5447 4348 4349 4350 4351 4352 4353 4354 4359 4360 4361 4905 4906 4907 4908 4909 4910 4912 4914 5444 5445 5447 4909 4910 4911 4914 4915 5446 5447 5453 4362 4364 4365 4914 4915 4916 4918 5453 4355 4356 4357 4358 4359 4360 4361 4362 4364 4365 4909 4910 4911 4912 4913 4915 4916 4918 5446 5447 5453 4912 4913 4914 4916 4918 5446 5447 5453 4913 4914 4915 4918 4919 5452 5453 5455 4374 4382 4383 4918 4919 4924 4929 5455 4362 4363 4364 4365 4374 4382 4383 4913 4914 4915 4916 4917 4919 4924 4929 5452 5453 5455 4916 4917 4918 4924 4929 5452 5453 5455 4371 4372 4373 4921 4923 4925 4927 5461 4920 4922 4923 4925 4927 4998 5000 5461 4458 4459 4461 4921 4923 4998 5000 5461 4366 4367 4368 4369 4371 4372 4373 4458 4459 4461 4920 4921 4922 4925 4927 4998 5000 5461 4917 4918 4919 4929 4930 5454 5455 5463 4920 4921 4923 4926 4927 5461 5462 5463 4925 4927 4928 4929 4930 5461 5462 5463 4370 4371 4372 4373 4375 4376 4377 4920 4921 4923 4925 4926 4928 4929 4930 5461 5462 5463 4375 4376 4377 4926 4927 4929 4930 5463 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4917 4918 4919 4924 4926 4927 4928 4930 5454 5455 5463 4924 4926 4927 4928 4929 5454 5455 5463 4425 4427 4428 4934 4935 4965 4966 5468 4388 4390 4391 4933 4934 4937 4938 5470 4932 4934 4935 4937 4938 5467 5468 5470 4384 4385 4386 4387 4388 4390 4391 4425 4427 4428 4931 4932 4933 4935 4937 4938 4965 4966 5467 5468 5470 4931 4933 4934 4965 4966 5467 5468 5470 4395 4397 4398 4937 4938 4939 4941 5470 4388 4389 4390 4391 4392 4393 4394 4395 4397 4398 4932 4933 4934 4936 4938 4939 4941 5470 4932 4933 4934 4936 4937 4939 4941 5470 4936 4937 4938 4941 4942 5469 5470 5474 4399 4400 4403 4941 4942 4943 4947 5474 4395 4396 4397 4398 4399 4400 4403 4936 4937 4938 4939 4940 4942 4943 4947 5469 5470 5474 4939 4940 4941 4943 4947 5469 5470 5474 4940 4941 4942 4944 4947 5473 5474 5480 4943 4945 4947 5473 5474 5479 5480 5482 4944 4946 4947 4949 4950 5479 5480 5482 4400 4401 4403 4945 4947 4949 4950 5482 4399 4400 4401 4403 4940 4941 4942 4943 4944 4945 4946 4949 4950 5473 5474 5479 5480 5482 4407 4408 4410 4949 4950 4951 4955 5482 4400 4401 4402 4403 4404 4405 4406 4407 4408 4410 4945 4946 4947 4948 4950 4951 4955 5482 4945 4946 4947 4948 4949 4951 4955 5482 4948 4949 4950 4952 4955 5481 5482 5488 4951 4953 4955 5481 5482 5487 5488 5492 4952 4954 4955 4956 4959 5487 5488 5492 4411 4412 4414 4953 4955 4956 4959 5492 4407 4408 4409 4410 4411 4412 4414 4948 4949 4950 4951 4952 4953 4954 4956 4959 5481 5482 5487 5488 5492 4953 4954 4955 4957 4959 5491 5492 5494 4956 4958 4959 4961 4962 5491 5492 5494 4418 4419 4421 4957 4959 4961 4962 5494 4411 4412 4413 4414 4415 4416 4417 4418 4419 4421 4953 4954 4955 4956 4957 4958 4961 4962 5491 5492 5494 4892 4895 4896 4961 4962 5428 5433 5494 4418 4419 4420 4421 4422 4423 4424 4892 4895 4896 4957 4958 4959 4960 4962 5428 5433 5494 4957 4958 4959 4960 4961 5428 5433 5494 4437 4964 4966 4973 4974 4977 4978 5499 4963 4965 4966 4977 4978 5465 5468 5499 4931 4934 4935 4964 4966 5465 5468 5499 4425 4426 4427 4428 4433 4435 4436 4437 4931 4934 4935 4963 4964 4965 4973 4974 4977 4978 5465 5468 5499 4434 4435 4436 4969 4970 4971 4974 5504 4438 4440 4441 4969 4970 4980 4983 5504 4967 4968 4970 4971 4974 4980 4983 5504 4429 4430 4431 4432 4434 4435 4436 4438 4440 4441 4967 4968 4969 4971 4974 4980 4983 5504 4967 4969 4970 4972 4974 5503 5504 5508 4971 4973 4974 4975 4978 5503 5504 5508 4437 4963 4966 4972 4974 4975 4978 5508 4433 4434 4435 4436 4437 4963 4966 4967 4969 4970 4971 4972 4973 4975 4978 5503 5504 5508 4972 4973 4974 4976 4978 5507 5508 5512 4975 4977 4978 5496 5499 5507 5508 5512 4963 4964 4966 4976 4978 5496 5499 5512 4437 4963 4964 4966 4972 4973 4974 4975 4976 4977 5496 5499 5507 5508 5512 4463 4465 4466 4985 4986 5005 5008 5516 4968 4969 4970 4982 4983 5501 5504 5521 4442 4444 4445 4982 4983 4984 4985 5521 4980 4981 4983 4984 4985 5501 5504 5521 4438 4439 4440 4441 4442 4444 4445 4968 4969 4970 4980 4981 4982 4984 4985 5501 5504 5521 4981 4982 4983 4985 4986 5514 5516 5521 4442 4443 4444 4445 4463 4465 4466 4979 4981 4982 4983 4984 4986 5005 5008 5514 5516 5521 4979 4984 4985 5005 5008 5514 5516 5521 4455 4456 4457 4988 4990 4996 4997 5526 4987 4989 4990 4996 4997 5002 5004 5526 4462 4464 4466 4988 4990 5002 5004 5526 4446 4447 4448 4449 4455 4456 4457 4462 4464 4466 4987 4988 4989 4996 4997 5002 5004 5526 4459 4460 4461 4992 4994 4999 5000 5529 4991 4993 4994 4995 4997 4999 5000 5529 4454 4455 4457 4992 4994 4995 4997 5529 4450 4451 4452 4453 4454 4455 4457 4459 4460 4461 4991 4992 4993 4995 4997 4999 5000 5529 4992 4993 4994 4996 4997 5523 5526 5529 4987 4988 4990 4995 4997 5523 5526 5529 4454 4455 4456 4457 4987 4988 4990 4992 4993 4994 4995 4996 5523 5526 5529 4921 4922 4923 4999 5000 5457 5461 5529 4991 4992 4994 4998 5000 5457 5461 5529 4458 4459 4460 4461 4921 4922 4923 4991 4992 4994 4998 4999 5457 5461 5529 4464 4465 4466 5003 5004 5006 5008 5533 4988 4989 4990 5003 5004 5522 5526 5533 5001 5002 5004 5006 5008 5522 5526 5533 4462 4464 4465 4466 4988 4989 4990 5001 5002 5003 5006 5008 5522 5526 5533 4979 4985 4986 5007 5008 5513 5516 5537 5001 5003 5004 5007 5008 5530 5533 5537 5005 5006 5008 5513 5516 5530 5533 5537 4463 4464 4465 4466 4979 4985 4986 5001 5003 5004 5005 5006 5007 5513 5516 5530 5533 5537 4479 4480 4483 5011 5013 5020 5022 5551 4468 4469 4471 5012 5013 5015 5016 5554 5009 5012 5013 5020 5022 5550 5551 5554 5010 5011 5013 5015 5016 5550 5551 5554 4467 4468 4469 4471 4479 4480 4483 5009 5010 5011 5012 5015 5016 5020 5022 5550 5551 5554 4472 4473 4475 5015 5016 5018 5019 5554 4468 4469 4470 4471 4472 4473 4475 5010 5012 5013 5014 5016 5018 5019 5554 5010 5012 5013 5014 5015 5018 5019 5554 4821 4823 4824 5018 5019 5367 5368 5554 4472 4473 4474 4475 4476 4477 4478 4821 4823 4824 5014 5015 5016 5017 5019 5367 5368 5554 5014 5015 5016 5017 5018 5367 5368 5554 5009 5011 5013 5021 5022 5549 5551 5558 5020 5022 5023 5024 5027 5549 5551 5558 4479 4480 4482 4483 5009 5011 5013 5020 5021 5023 5024 5027 5549 5551 5558 4480 4482 4483 5021 5022 5024 5027 5558 5021 5022 5023 5025 5026 5027 5558 5567 5024 5026 5027 5556 5558 5561 5564 5567 5024 5025 5027 5028 5029 5033 5558 5567 4480 4481 4482 4483 4484 4485 4486 4487 5021 5022 5023 5024 5025 5026 5028 5029 5030 5033 5035 5558 5567 4485 5026 5027 5029 5030 5033 5035 5567 5026 5027 5028 5032 5033 5565 5567 5572 4485 5027 5028 5031 5033 5034 5035 5576 5030 5032 5033 5034 5035 5569 5572 5576 5029 5031 5033 5565 5567 5569 5572 5576 4485 5026 5027 5028 5029 5030 5031 5032 5034 5035 5565 5567 5569 5572 5576 5030 5031 5033 5035 5036 5041 5042 5576 4484 4485 4486 4487 4488 4494 4495 4496 5027 5028 5030 5031 5033 5034 5036 5041 5042 5576 4494 4495 4496 5034 5035 5041 5042 5576 4547 5038 5040 5084 5085 5090 5091 5578 5037 5039 5040 5042 5043 5090 5091 5578 4490 4491 4493 5038 5040 5042 5043 5578 4489 4490 4491 4493 4544 4545 4546 4547 5037 5038 5039 5042 5043 5084 5085 5090 5091 5578 5034 5035 5036 5042 5043 5576 5577 5578 4490 4491 4492 4493 4494 4495 4496 5034 5035 5036 5038 5039 5040 5041 5043 5576 5577 5578 5038 5039 5040 5041 5042 5576 5577 5578 4774 4775 4776 5062 5063 5319 5322 5581 4529 4530 4531 5047 5048 5071 5074 5586 4501 4503 4504 5047 5048 5049 5052 5586 5045 5046 5048 5049 5052 5071 5074 5586 4497 4498 4499 4500 4501 4503 4504 4529 4530 4531 5045 5046 5047 5049 5052 5071 5074 5586 5046 5047 5048 5051 5052 5584 5586 5590 4505 4507 4508 5051 5052 5053 5056 5590 5049 5050 5052 5053 5056 5584 5586 5590 4501 4502 4503 4504 4505 4507 4508 5046 5047 5048 5049 5050 5051 5053 5056 5584 5586 5590 5050 5051 5052 5055 5056 5588 5590 5594 4509 4511 4512 5055 5056 5057 5060 5594 5053 5054 5056 5057 5060 5588 5590 5594 4505 4506 4507 4508 4509 4511 4512 5050 5051 5052 5053 5054 5055 5057 5060 5588 5590 5594 5054 5055 5056 5059 5060 5592 5594 5596 4513 4515 4516 5059 5060 5061 5062 5596 5057 5058 5060 5061 5062 5592 5594 5596 4509 4510 4511 4512 4513 4515 4516 5054 5055 5056 5057 5058 5059 5061 5062 5592 5594 5596 5058 5059 5060 5062 5063 5579 5581 5596 4513 4514 4515 4516 4774 4775 4776 5044 5058 5059 5060 5061 5063 5319 5322 5579 5581 5596 5044 5061 5062 5319 5322 5579 5581 5596 4528 4530 4531 5066 5067 5073 5074 5602 4525 4526 4527 5066 5067 5069 5070 5602 4517 4525 4526 4527 4528 4530 4531 5064 5065 5067 5069 5070 5073 5074 5602 5064 5065 5066 5069 5070 5073 5074 5602 4532 4533 4535 5069 5070 5075 5079 5602 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4532 4533 4535 5065 5066 5067 5068 5070 5075 5079 5602 5065 5066 5067 5068 5069 5075 5079 5602 5045 5047 5048 5072 5074 5583 5586 5605 5071 5073 5074 5583 5586 5600 5602 5605 5064 5066 5067 5072 5074 5600 5602 5605 4528 4529 4530 4531 5045 5047 5048 5064 5066 5067 5071 5072 5073 5583 5586 5600 5602 5605 5068 5069 5070 5076 5079 5599 5602 5609 5075 5077 5079 5599 5602 5608 5609 5613 5076 5078 5079 5080 5083 5608 5609 5613 4536 4537 4539 5077 5079 5080 5083 5613 4532 4533 4534 4535 4536 4537 4539 5068 5069 5070 5075 5076 5077 5078 5080 5083 5599 5602 5608 5609 5613 5077 5078 5079 5081 5083 5612 5613 5615 5080 5082 5083 5085 5086 5612 5613 5615 4540 4541 4543 5081 5083 5085 5086 5615 4536 4537 4538 4539 4540 4541 4543 5077 5078 5079 5080 5081 5082 5085 5086 5612 5613 5615 4547 5037 5040 5085 5086 5087 5091 5615 4540 4541 4542 4543 4544 4545 4546 4547 5037 5040 5081 5082 5083 5084 5086 5087 5091 5615 5081 5082 5083 5084 5085 5087 5091 5615 5084 5085 5086 5088 5091 5614 5615 5621 5087 5089 5091 5614 5615 5620 5621 5623 5088 5090 5091 5573 5578 5620 5621 5623 5037 5038 5040 5089 5091 5573 5578 5623 4547 5037 5038 5040 5084 5085 5086 5087 5088 5089 5090 5573 5578 5614 5615 5620 5621 5623 4575 4576 4577 4579 4580 5093 5094 5095 5096 5120 5121 5634 4548 4549 4550 4551 4552 4553 4554 4555 4575 4576 4577 4579 4580 5092 5094 5095 5096 5120 5121 5634 4551 4552 4553 4554 4555 5092 5093 5095 5096 5120 5121 5634 5092 5093 5094 5096 5097 5098 5099 5120 5121 5634 5635 5637 4551 4552 4553 4554 4555 4556 4557 4558 5092 5093 5094 5095 5097 5098 5099 5120 5121 5634 5635 5637 4554 4555 4556 4557 4558 5095 5096 5098 5099 5634 5635 5637 5095 5096 5097 5099 5100 5101 5102 5634 5635 5637 5638 5640 4554 4555 4556 4557 4558 4559 4560 4561 5095 5096 5097 5098 5100 5101 5102 5634 5635 5637 5638 5640 4557 4558 4559 4560 4561 5098 5099 5101 5102 5637 5638 5640 5098 5099 5100 5102 5103 5104 5105 5637 5638 5640 5641 5643 4557 4558 4559 4560 4561 4562 4563 4564 5098 5099 5100 5101 5103 5104 5105 5637 5638 5640 5641 5643 4560 4561 4562 4563 4564 5101 5102 5104 5105 5640 5641 5643 5101 5102 5103 5105 5106 5107 5108 5640 5641 5643 5644 5646 4560 4561 4562 4563 4564 4565 4566 4567 5101 5102 5103 5104 5106 5107 5108 5640 5641 5643 5644 5646 4563 4564 4565 4566 4567 5104 5105 5107 5108 5643 5644 5646 5104 5105 5106 5108 5109 5110 5111 5643 5644 5646 5647 5649 4563 4564 4565 4566 4567 4568 4569 4570 5104 5105 5106 5107 5109 5110 5111 5643 5644 5646 5647 5649 4566 4567 4568 4569 4570 5107 5108 5110 5111 5646 5647 5649 5107 5108 5109 5111 5112 5113 5114 5646 5647 5649 5650 5652 4566 4567 4568 4569 4570 4571 4572 4573 5107 5108 5109 5110 5112 5113 5114 5646 5647 5649 5650 5652 4569 4570 4571 4572 4573 5110 5111 5113 5114 5649 5650 5652 5110 5111 5112 5114 5115 5116 5117 5649 5650 5652 5653 5656 4569 4570 4571 4572 4573 4574 4897 4898 5110 5111 5112 5113 5115 5116 5117 5649 5650 5652 5653 5656 4572 4573 4574 4897 4898 5113 5114 5116 5117 5652 5653 5656 5113 5114 5115 5117 5118 5435 5436 5652 5653 5656 5657 5658 4572 4573 4574 4897 4898 4899 5113 5114 5115 5116 5118 5412 5413 5435 5436 5652 5653 5656 5657 5658 4897 4898 4899 5116 5117 5412 5413 5435 5436 5656 5657 5658 4578 4579 4580 4582 4583 5120 5121 5123 5124 5633 5634 5661 4575 4576 4577 4578 4579 4580 4582 4583 5092 5093 5094 5095 5096 5119 5121 5123 5124 5633 5634 5661 5092 5093 5094 5095 5096 5119 5120 5123 5124 5633 5634 5661 4581 4582 4583 4585 4586 5123 5124 5126 5127 5660 5661 5664 4578 4579 4580 4581 4582 4583 4585 4586 5119 5120 5121 5122 5124 5126 5127 5633 5634 5660 5661 5664 5119 5120 5121 5122 5123 5126 5127 5633 5634 5660 5661 5664 4584 4585 4586 4588 4589 5126 5127 5129 5130 5663 5664 5667 4581 4582 4583 4584 4585 4586 4588 4589 5122 5123 5124 5125 5127 5129 5130 5660 5661 5663 5664 5667 5122 5123 5124 5125 5126 5129 5130 5660 5661 5663 5664 5667 4587 4588 4589 4591 4592 5129 5130 5132 5133 5666 5667 5670 4584 4585 4586 4587 4588 4589 4591 4592 5125 5126 5127 5128 5130 5132 5133 5663 5664 5666 5667 5670 5125 5126 5127 5128 5129 5132 5133 5663 5664 5666 5667 5670 4590 4591 4592 4594 4595 5132 5133 5135 5136 5669 5670 5673 4587 4588 4589 4590 4591 4592 4594 4595 5128 5129 5130 5131 5133 5135 5136 5666 5667 5669 5670 5673 5128 5129 5130 5131 5132 5135 5136 5666 5667 5669 5670 5673 4593 4594 4595 4597 4598 5135 5136 5138 5139 5672 5673 5676 4590 4591 4592 4593 4594 4595 4597 4598 5131 5132 5133 5134 5136 5138 5139 5669 5670 5672 5673 5676 5131 5132 5133 5134 5135 5138 5139 5669 5670 5672 5673 5676 4596 4597 4598 4600 4601 5138 5139 5141 5142 5675 5676 5679 4593 4594 4595 4596 4597 4598 4600 4601 5134 5135 5136 5137 5139 5141 5142 5672 5673 5675 5676 5679 5134 5135 5136 5137 5138 5141 5142 5672 5673 5675 5676 5679 4599 4600 4601 4603 4604 5141 5142 5144 5145 5678 5679 5682 4596 4597 4598 4599 4600 4601 4603 4604 5137 5138 5139 5140 5142 5144 5145 5675 5676 5678 5679 5682 5137 5138 5139 5140 5141 5144 5145 5675 5676 5678 5679 5682 4602 4603 4604 4608 4609 5144 5145 5149 5150 5681 5682 5687 4599 4600 4601 4602 4603 4604 4608 4609 5140 5141 5142 5143 5145 5149 5150 5678 5679 5681 5682 5687 5140 5141 5142 5143 5144 5149 5150 5678 5679 5681 5682 5687 5147 5148 5149 5150 5685 5686 5687 4605 4606 4607 4608 4609 5146 5148 5149 5150 5685 5686 5687 4605 4606 4607 4608 4609 5146 5147 5149 5150 5685 5686 5687 4602 4603 4604 4605 4606 4607 4608 4609 5143 5144 5145 5146 5147 5148 5150 5681 5682 5685 5686 5687 5143 5144 5145 5146 5147 5148 5149 5681 5682 5685 5686 5687 4615 4616 4617 5153 5154 5155 5158 5692 4618 4620 4621 5153 5154 5160 5163 5692 5151 5152 5154 5155 5158 5160 5163 5692 4610 4611 4612 4613 4615 4616 4617 4618 4620 4621 5151 5152 5153 5155 5158 5160 5163 5692 5151 5153 5154 5156 5158 5691 5692 5696 5155 5157 5158 5159 5199 5691 5692 5696 4664 5156 5158 5159 5197 5199 5204 5696 4614 4615 4616 4617 4663 4664 4666 4668 5151 5153 5154 5155 5156 5157 5159 5197 5199 5204 5691 5692 5696 5156 5157 5158 5169 5199 5695 5696 5700 5152 5153 5154 5162 5163 5689 5692 5706 4622 4624 4625 5162 5163 5164 5168 5706 5160 5161 5163 5164 5168 5689 5692 5706 4618 4619 4620 4621 4622 4624 4625 5152 5153 5154 5160 5161 5162 5164 5168 5689 5692 5706 5161 5162 5163 5167 5168 5703 5706 5710 4782 4784 4785 5166 5168 5329 5330 5712 5165 5167 5168 5329 5330 5707 5710 5712 5164 5166 5168 5703 5706 5707 5710 5712 4622 4623 4624 4625 4782 4784 4785 5161 5162 5163 5164 5165 5166 5167 5329 5330 5703 5706 5707 5710 5712 5159 5170 5199 5200 5695 5696 5700 5717 5169 5199 5200 5699 5700 5714 5717 5721 4742 4743 4744 5173 5174 5268 5270 5725 4630 4632 4633 5173 5174 5175 5176 5725 5171 5172 5174 5175 5176 5268 5270 5725 4626 4627 4628 4629 4630 4632 4633 4742 4743 4744 5171 5172 5173 5175 5176 5268 5270 5725 5172 5173 5174 5176 5177 5178 5180 5725 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 5172 5173 5174 5175 5177 5178 5180 5725 4637 4638 4639 5175 5176 5178 5180 5725 5175 5176 5177 5179 5180 5725 5726 5728 5178 5180 5181 5182 5184 5725 5726 5728 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 5175 5176 5177 5178 5179 5181 5182 5184 5725 5726 5728 4644 4645 4646 5179 5180 5182 5184 5728 5179 5180 5181 5183 5184 5728 5729 5733 5182 5184 5185 5186 5189 5728 5729 5733 4644 4645 4646 4647 4648 4660 4661 5179 5180 5181 5182 5183 5185 5186 5189 5728 5729 5733 4648 4660 4661 5183 5184 5186 5189 5733 5183 5184 5185 5188 5189 5731 5733 5737 4660 4661 4662 5188 5189 5194 5195 5737 5186 5187 5189 5194 5195 5731 5733 5737 4648 4660 4661 4662 5183 5184 5185 5186 5187 5188 5194 5195 5731 5733 5737 4710 4711 4712 5191 5193 5238 5239 5739 5190 5192 5193 5195 5196 5238 5239 5739 4653 4654 4656 5191 5193 5195 5196 5739 4649 4650 4651 4652 4653 4654 4656 4710 4711 4712 5190 5191 5192 5195 5196 5238 5239 5739 5187 5188 5189 5195 5196 5735 5737 5739 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 5187 5188 5189 5191 5192 5193 5194 5196 5735 5737 5739 5191 5192 5193 5194 5195 5735 5737 5739 4664 5157 5158 5198 5199 5202 5204 5745 5197 5199 5200 5202 5204 5716 5717 5745 4664 5156 5157 5158 5159 5169 5170 5197 5198 5200 5202 5204 5695 5696 5700 5716 5717 5745 5169 5170 5198 5199 5700 5716 5717 5745 4666 4667 4668 5203 5204 5205 5209 5749 5197 5198 5199 5203 5204 5744 5745 5749 5201 5202 5204 5205 5209 5744 5745 5749 4663 4664 4666 4667 4668 5157 5158 5197 5198 5199 5201 5202 5203 5205 5209 5744 5745 5749 5201 5203 5204 5206 5209 5748 5749 5753 5205 5207 5209 5748 5749 5752 5753 5756 5206 5208 5209 5210 5212 5752 5753 5756 4676 4677 4678 5207 5209 5210 5212 5756 4665 4666 4667 4668 4676 4677 4678 5201 5203 5204 5205 5206 5207 5208 5210 5212 5748 5749 5752 5753 5756 5207 5208 5209 5211 5212 5213 5216 5756 4679 4680 4682 5210 5212 5213 5216 5756 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4682 5207 5208 5209 5210 5211 5213 5216 5756 5210 5211 5212 5214 5216 5755 5756 5760 5213 5215 5216 5217 5221 5755 5756 5760 4683 4684 4687 5214 5216 5217 5221 5760 4679 4680 4681 4682 4683 4684 4687 5210 5211 5212 5213 5214 5215 5217 5221 5755 5756 5760 5214 5215 5216 5218 5221 5759 5760 5764 5217 5219 5221 5759 5760 5763 5764 5767 5218 5220 5221 5222 5224 5763 5764 5767 4684 4685 4687 5219 5221 5222 5224 5767 4683 4684 4685 4687 5214 5215 5216 5217 5218 5219 5220 5222 5224 5759 5760 5763 5764 5767 5219 5220 5221 5223 5224 5225 5227 5767 4688 4689 4691 5222 5224 5225 5227 5767 4684 4685 4686 4687 4688 4689 4691 5219 5220 5221 5222 5223 5225 5227 5767 5222 5223 5224 5226 5227 5228 5232 5767 4698 4699 4702 5225 5227 5228 5232 5767 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4702 5222 5223 5224 5225 5226 5228 5232 5767 5225 5226 5227 5229 5232 5766 5767 5771 5228 5230 5232 5766 5767 5770 5771 5774 5229 5231 5232 5233 5235 5770 5771 5774 4699 4700 4702 5230 5232 5233 5235 5774 4698 4699 4700 4702 5225 5226 5227 5228 5229 5230 5231 5233 5235 5766 5767 5770 5771 5774 5230 5231 5232 5234 5235 5236 5239 5774 4706 4707 4709 5233 5235 5236 5239 5774 4699 4700 4701 4702 4703 4704 4705 4706 4707 4709 5230 5231 5232 5233 5234 5236 5239 5774 5233 5234 5235 5237 5239 5773 5774 5776 5236 5238 5239 5739 5740 5773 5774 5776 5190 5191 5193 5237 5239 5739 5740 5776 4706 4707 4708 4709 4710 4711 4712 5190 5191 5193 5233 5234 5235 5236 5237 5238 5739 5740 5773 5774 5776 4754 4755 4756 5241 5242 5271 5293 5781 5240 5242 5243 5244 5246 5271 5293 5781 4713 4714 4715 4716 4754 4755 4756 5240 5241 5243 5244 5246 5271 5293 5781 4714 4715 4716 5241 5242 5244 5246 5781 5241 5242 5243 5245 5246 5781 5782 5785 5244 5246 5247 5248 5251 5781 5782 5785 4714 4715 4716 4717 4718 4719 4721 5241 5242 5243 5244 5245 5247 5248 5251 5781 5782 5785 4718 4719 4721 5245 5246 5248 5251 5785 5245 5246 5247 5249 5251 5785 5786 5790 5248 5250 5251 5785 5786 5790 5791 5793 5249 5251 5252 5253 5254 5790 5791 5793 4718 4719 4720 4721 5245 5246 5247 5248 5249 5250 5252 5253 5254 5785 5786 5790 5791 5793 4719 4720 4721 5250 5251 5253 5254 5793 5250 5251 5252 5254 5255 5260 5261 5793 4719 4720 4721 4722 4723 4724 4725 4731 4732 4733 5250 5251 5252 5253 5255 5260 5261 5793 4731 4732 4733 5253 5254 5260 5261 5793 4730 4735 4736 5257 5258 5261 5262 5797 5256 5258 5259 5261 5262 5263 5266 5797 4726 4727 4728 4729 4730 4735 4736 4737 4739 4740 5256 5257 5259 5261 5262 5263 5266 5797 4737 4739 4740 5257 5258 5263 5266 5797 5253 5254 5255 5261 5262 5793 5794 5797 4730 4731 4732 4733 4734 4735 4736 5253 5254 5255 5256 5257 5258 5260 5262 5793 5794 5797 5256 5257 5258 5260 5261 5793 5794 5797 5257 5258 5259 5265 5266 5797 5798 5802 4741 4743 4744 5265 5266 5267 5270 5802 5263 5264 5266 5267 5270 5797 5798 5802 4737 4738 4739 4740 4741 4743 4744 5257 5258 5259 5263 5264 5265 5267 5270 5797 5798 5802 5264 5265 5266 5269 5270 5800 5802 5804 5171 5173 5174 5269 5270 5723 5725 5804 5267 5268 5270 5723 5725 5800 5802 5804 4741 4742 4743 4744 5171 5173 5174 5264 5265 5266 5267 5268 5269 5723 5725 5800 5802 5804 5240 5241 5242 5285 5293 5778 5781 5808 4765 5273 5276 5298 5299 5303 5305 5813 5272 5275 5276 5303 5305 5811 5813 5817 4746 4762 4763 5275 5276 5277 5280 5817 5273 5274 5276 5277 5280 5811 5813 5817 4746 4761 4762 4763 4765 5272 5273 5274 5275 5277 5280 5298 5299 5303 5305 5811 5813 5817 5274 5275 5276 5279 5280 5815 5817 5819 4750 4751 4752 5279 5280 5281 5283 5819 5277 5278 5280 5281 5283 5815 5817 5819 4745 4746 4747 4748 4749 4750 4751 4752 4762 4763 5274 5275 5276 5277 5278 5279 5281 5283 5815 5817 5819 5278 5279 5280 5282 5283 5819 5820 5823 5281 5283 5284 5286 5288 5819 5820 5823 4750 4751 4752 5278 5279 5280 5281 5282 5284 5286 5288 5819 5820 5823 5282 5283 5286 5288 5823 5271 5293 5294 5295 5778 5781 5808 5826 5282 5283 5284 5287 5288 5823 5824 5826 5286 5288 5289 5290 5291 5823 5824 5826 5282 5283 5284 5286 5287 5289 5290 5291 5823 5824 5826 5287 5288 5290 5291 5826 5287 5288 5289 5291 5292 5293 5294 5826 4753 4754 4755 5287 5288 5289 5290 5292 5293 5294 5826 4753 4754 4755 5290 5291 5293 5294 5826 4753 4754 4755 4756 5240 5241 5242 5271 5285 5290 5291 5292 5294 5295 5778 5781 5808 5826 5285 5290 5291 5292 5293 5295 5808 5826 5285 5293 5294 5806 5808 5826 5827 5830 4764 4766 4768 5297 5298 5300 5302 5837 5296 5298 5299 5300 5302 5304 5305 5837 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4768 5272 5276 5296 5297 5299 5300 5302 5304 5305 5837 4765 5272 5276 5297 5298 5304 5305 5837 5296 5297 5298 5301 5302 5307 5309 5837 4766 4768 4769 5300 5302 5307 5309 5837 4764 4766 4768 4769 5296 5297 5298 5300 5301 5307 5309 5837 5272 5273 5276 5305 5306 5810 5813 5839 5297 5298 5299 5305 5306 5837 5838 5839 4765 5272 5273 5276 5297 5298 5299 5303 5304 5306 5810 5813 5837 5838 5839 5303 5304 5305 5810 5813 5837 5838 5839 5300 5301 5302 5309 5310 5835 5837 5843 4770 4772 4773 5309 5310 5311 5313 5843 4766 4767 4768 4769 4770 4772 4773 5300 5301 5302 5307 5308 5310 5311 5313 5835 5837 5843 5307 5308 5309 5311 5313 5835 5837 5843 5308 5309 5310 5313 5314 5842 5843 5847 4778 4780 4781 5313 5314 5324 5326 5847 4770 4771 4772 4773 4778 4780 4781 5308 5309 5310 5311 5312 5314 5324 5326 5842 5843 5847 5311 5312 5313 5324 5326 5842 5843 5847 5316 5539 5541 5544 5547 5851 5852 5856 5315 5317 5541 5851 5852 5855 5856 5868 5316 5318 5538 5541 5631 5855 5856 5868 5317 5538 5541 5628 5631 5868 5869 5870 5044 5062 5063 5320 5321 5322 5581 5877 5319 5321 5322 5581 5582 5872 5875 5877 5319 5320 5322 5323 5325 5326 5581 5877 4774 4775 4776 4777 4779 4780 4781 5044 5062 5063 5319 5320 5321 5323 5325 5326 5581 5877 4779 4780 4781 5321 5322 5325 5326 5877 5312 5313 5314 5326 5327 5846 5847 5881 5321 5322 5323 5326 5327 5877 5878 5881 4778 4779 4780 4781 5312 5313 5314 5321 5322 5323 5324 5325 5327 5846 5847 5877 5878 5881 5324 5325 5326 5846 5847 5877 5878 5881 4783 4784 4785 4787 4788 5329 5330 5332 5333 5711 5712 5884 4782 4783 4784 4785 4787 4788 5165 5166 5168 5328 5330 5332 5333 5711 5712 5884 5165 5166 5168 5328 5329 5332 5333 5711 5712 5884 4786 4787 4788 4790 4791 5332 5333 5335 5336 5883 5884 5887 4783 4784 4785 4786 4787 4788 4790 4791 5328 5329 5330 5331 5333 5335 5336 5711 5712 5883 5884 5887 5328 5329 5330 5331 5332 5335 5336 5711 5712 5883 5884 5887 4789 4790 4791 4793 4794 5335 5336 5338 5339 5886 5887 5890 4786 4787 4788 4789 4790 4791 4793 4794 5331 5332 5333 5334 5336 5338 5339 5883 5884 5886 5887 5890 5331 5332 5333 5334 5335 5338 5339 5883 5884 5886 5887 5890 4792 4793 4794 4796 4797 5338 5339 5341 5342 5889 5890 5893 4789 4790 4791 4792 4793 4794 4796 4797 5334 5335 5336 5337 5339 5341 5342 5886 5887 5889 5890 5893 5334 5335 5336 5337 5338 5341 5342 5886 5887 5889 5890 5893 4795 4796 4797 4799 4800 5341 5342 5344 5345 5892 5893 5896 4792 4793 4794 4795 4796 4797 4799 4800 5337 5338 5339 5340 5342 5344 5345 5889 5890 5892 5893 5896 5337 5338 5339 5340 5341 5344 5345 5889 5890 5892 5893 5896 4798 4799 4800 4802 4803 5344 5345 5347 5348 5895 5896 5899 4795 4796 4797 4798 4799 4800 4802 4803 5340 5341 5342 5343 5345 5347 5348 5892 5893 5895 5896 5899 5340 5341 5342 5343 5344 5347 5348 5892 5893 5895 5896 5899 4801 4802 4803 4805 4806 5347 5348 5350 5351 5898 5899 5902 4798 4799 4800 4801 4802 4803 4805 4806 5343 5344 5345 5346 5348 5350 5351 5895 5896 5898 5899 5902 5343 5344 5345 5346 5347 5350 5351 5895 5896 5898 5899 5902 4804 4805 4806 4808 4809 5350 5351 5353 5354 5901 5902 5905 4801 4802 4803 4804 4805 4806 4808 4809 5346 5347 5348 5349 5351 5353 5354 5898 5899 5901 5902 5905 5346 5347 5348 5349 5350 5353 5354 5898 5899 5901 5902 5905 4807 4808 4809 4811 4812 5353 5354 5356 5357 5904 5905 5908 4804 4805 4806 4807 4808 4809 4811 4812 5349 5350 5351 5352 5354 5356 5357 5901 5902 5904 5905 5908 5349 5350 5351 5352 5353 5356 5357 5901 5902 5904 5905 5908 4810 4811 4812 4814 4815 5356 5357 5359 5360 5907 5908 5911 4807 4808 4809 4810 4811 4812 4814 4815 5352 5353 5354 5355 5357 5359 5360 5904 5905 5907 5908 5911 5352 5353 5354 5355 5356 5359 5360 5904 5905 5907 5908 5911 4813 4814 4815 4819 4820 5359 5360 5364 5365 5910 5911 5916 4810 4811 4812 4813 4814 4815 4819 4820 5355 5356 5357 5358 5360 5364 5365 5907 5908 5910 5911 5916 5355 5356 5357 5358 5359 5364 5365 5907 5908 5910 5911 5916 5362 5363 5364 5365 5914 5915 5916 4816 4817 4818 4819 4820 5361 5363 5364 5365 5914 5915 5916 4816 4817 4818 4819 4820 5361 5362 5364 5365 5914 5915 5916 4813 4814 4815 4816 4817 4818 4819 4820 5358 5359 5360 5361 5362 5363 5365 5910 5911 5914 5915 5916 5358 5359 5360 5361 5362 5363 5364 5910 5911 5914 5915 5916 5367 5368 5553 5554 5919 4821 4822 4823 4824 4825 4826 5017 5018 5019 5366 5368 5553 5554 5919 5017 5018 5019 5366 5367 5553 5554 5919 4834 4835 4836 5370 5371 5373 5375 5922 4827 4828 4829 4830 4831 4832 4834 4835 4836 5369 5371 5373 5375 5922 5369 5370 5373 5375 5922 4861 4862 4863 5374 5375 5398 5400 5928 5369 5370 5371 5374 5375 5921 5922 5928 5372 5373 5375 5398 5400 5921 5922 5928 4833 4834 4835 4836 4861 4862 4863 5369 5370 5371 5372 5373 5374 5398 5400 5921 5922 5928 4842 4843 4844 5377 5379 5382 5383 5932 5376 5378 5379 5382 5383 5438 5441 5932 4901 4902 4903 5377 5379 5438 5441 5932 4837 4838 4839 4840 4842 4843 4844 4901 4902 4903 5376 5377 5378 5382 5383 5438 5441 5932 4846 4847 4848 5381 5383 5386 5387 5936 5380 5382 5383 5386 5387 5929 5932 5936 5376 5377 5379 5381 5383 5929 5932 5936 4841 4842 4843 4844 4846 4847 4848 5376 5377 5379 5380 5381 5382 5386 5387 5929 5932 5936 4850 4851 4852 5385 5387 5390 5391 5940 5384 5386 5387 5390 5391 5933 5936 5940 5380 5381 5383 5385 5387 5933 5936 5940 4845 4846 4847 4848 4850 4851 4852 5380 5381 5383 5384 5385 5386 5390 5391 5933 5936 5940 4854 4855 4856 5389 5391 5392 5393 5942 5388 5390 5391 5392 5393 5937 5940 5942 5384 5385 5387 5389 5391 5937 5940 5942 4849 4850 4851 4852 4854 4855 4856 5384 5385 5387 5388 5389 5390 5392 5393 5937 5940 5942 5388 5389 5391 5393 5394 5395 5403 5942 4853 4854 4855 4856 4857 4858 4859 4864 4865 4867 5388 5389 5391 5392 5394 5395 5403 5942 4864 4865 4867 5392 5393 5395 5403 5942 5392 5393 5394 5401 5403 5942 5943 5947 4873 4874 4875 5397 5400 5410 5411 5952 5396 5399 5400 5410 5411 5950 5952 5954 5372 5374 5375 5399 5400 5924 5928 5954 5397 5398 5400 5924 5928 5950 5952 5954 4860 4861 4862 4863 4873 4874 4875 5372 5374 5375 5396 5397 5398 5399 5410 5411 5924 5928 5950 5952 5954 5395 5402 5403 5942 5943 5947 5948 5960 5401 5403 5404 5405 5407 5947 5948 5960 4864 4865 4866 4867 5392 5393 5394 5395 5401 5402 5404 5405 5407 5942 5943 5947 5948 5960 4865 4866 4867 5402 5403 5405 5407 5960 5402 5403 5404 5406 5407 5960 5961 5962 5405 5407 5408 5409 5410 5960 5961 5962 4865 4866 4867 4868 4876 4877 4878 5402 5403 5404 5405 5406 5408 5409 5410 5960 5961 5962 4876 4877 4878 5406 5407 5409 5410 5962 5406 5407 5408 5410 5411 5949 5952 5962 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 5396 5397 5400 5406 5407 5408 5409 5411 5949 5952 5962 5396 5397 5400 5409 5410 5949 5952 5962 4897 4898 4899 5117 5118 5413 5414 5415 5416 5436 5437 5966 4879 4880 4881 4882 4884 4885 4886 4897 4898 4899 5117 5118 5412 5414 5415 5416 5436 5437 5966 4884 4885 4886 5412 5413 5415 5416 5436 5437 5966 5412 5413 5414 5416 5417 5419 5420 5436 5437 5966 5967 5969 4883 4884 4885 4886 4887 4889 4890 5412 5413 5414 5415 5417 5419 5420 5436 5437 5966 5967 5969 4887 4889 4890 5415 5416 5419 5420 5966 5967 5969 4889 4890 4891 5420 5421 5424 5425 5972 5415 5416 5417 5420 5421 5966 5967 5969 5970 5971 5972 5975 4887 4889 4890 4891 5415 5416 5417 5418 5419 5421 5424 5425 5966 5967 5969 5970 5971 5972 5975 5418 5419 5420 5424 5425 5969 5970 5971 5972 5975 4893 5423 5425 5426 5431 5432 5433 5978 5422 5424 5425 5426 5431 5972 5973 5978 5418 5420 5421 5423 5425 5972 5973 5978 4888 4889 4890 4891 4893 4894 4895 4896 5418 5420 5421 5422 5423 5424 5426 5431 5432 5433 5972 5973 5978 5422 5423 5425 5427 5431 5978 5979 5982 5426 5429 5431 5978 5979 5982 5983 5987 4960 4961 4962 5433 5434 5493 5494 5989 5427 5430 5431 5982 5983 5987 5988 5989 5429 5431 5432 5433 5434 5987 5988 5989 4893 5422 5423 5425 5426 5427 5429 5430 5432 5433 5434 5978 5979 5982 5983 5987 5988 5989 4893 5422 5425 5430 5431 5433 5434 5989 4892 4893 4894 4895 4896 4960 4961 4962 5422 5425 5428 5430 5431 5432 5434 5493 5494 5989 5428 5430 5431 5432 5433 5493 5494 5989 5116 5117 5118 5436 5437 5654 5656 5657 5658 5965 5966 5992 4897 4898 4899 5116 5117 5118 5412 5413 5414 5415 5416 5435 5437 5654 5656 5657 5658 5965 5966 5992 5412 5413 5414 5415 5416 5435 5436 5654 5658 5965 5966 5992 5377 5378 5379 5439 5441 5931 5932 5997 5438 5440 5441 5442 5445 5931 5932 5997 4904 4906 4907 5439 5441 5442 5445 5997 4900 4901 4902 4903 4904 4906 4907 5377 5378 5379 5438 5439 5440 5442 5445 5931 5932 5997 5439 5440 5441 5443 5445 5996 5997 6001 5442 5444 5445 5447 5448 5996 5997 6001 4908 4909 4911 5443 5445 5447 5448 6001 4904 4905 4906 4907 4908 4909 4911 5439 5440 5441 5442 5443 5444 5447 5448 5996 5997 6001 4912 4914 4915 5447 5448 5449 5453 6001 4908 4909 4910 4911 4912 4914 4915 5443 5444 5445 5446 5448 5449 5453 6001 5443 5444 5445 5446 5447 5449 5453 6001 5446 5447 5448 5450 5453 6000 6001 6005 5449 5451 5453 6000 6001 6004 6005 6007 5450 5452 5453 5455 5456 6004 6005 6007 4916 4918 4919 5451 5453 5455 5456 6007 4912 4913 4914 4915 4916 4918 4919 5446 5447 5448 5449 5450 5451 5452 5455 5456 6000 6001 6004 6005 6007 4924 4929 4930 5455 5456 5458 5463 6007 4916 4917 4918 4919 4924 4929 4930 5451 5452 5453 5454 5456 5458 5463 6007 5451 5452 5453 5454 5455 5458 5463 6007 4998 4999 5000 5459 5461 5527 5529 6013 5454 5455 5456 5463 5464 6006 6007 6015 5457 5460 5461 5527 5529 6013 6014 6015 5459 5461 5462 5463 5464 6013 6014 6015 4920 4921 4922 4923 4925 4926 4927 4998 4999 5000 5457 5459 5460 5462 5463 5464 5527 5529 6013 6014 6015 4925 4926 4927 5460 5461 5463 5464 6015 4924 4925 4926 4927 4928 4929 4930 5454 5455 5456 5458 5460 5461 5462 5464 6006 6007 6015 5458 5460 5461 5462 5463 6006 6007 6015 4964 4965 4966 5466 5468 5498 5499 6020 5465 5467 5468 5470 5471 5498 5499 6020 4933 4934 4935 5466 5468 5470 5471 6020 4931 4933 4934 4935 4964 4965 4966 5465 5466 5467 5470 5471 5498 5499 6020 4939 4941 4942 5470 5471 5472 5474 6020 4932 4933 4934 4935 4936 4937 4938 4939 4941 4942 5466 5467 5468 5469 5471 5472 5474 6020 5466 5467 5468 5469 5470 5472 5474 6020 5469 5470 5471 5474 5475 6019 6020 6023 4943 4944 4947 5474 5475 5476 5480 6023 4939 4940 4941 4942 4943 4944 4947 5469 5470 5471 5472 5473 5475 5476 5480 6019 6020 6023 5472 5473 5474 5476 5480 6019 6020 6023 5473 5474 5475 5477 5480 6022 6023 6028 5476 5478 5480 6022 6023 6027 6028 6030 5477 5479 5480 5482 5483 6027 6028 6030 4944 4945 4947 5478 5480 5482 5483 6030 4943 4944 4945 4947 5473 5474 5475 5476 5477 5478 5479 5482 5483 6022 6023 6027 6028 6030 4951 4952 4955 5482 5483 5484 5488 6030 4944 4945 4946 4947 4948 4949 4950 4951 4952 4955 5478 5479 5480 5481 5483 5484 5488 6030 5478 5479 5480 5481 5482 5484 5488 6030 5481 5482 5483 5485 5488 6029 6030 6036 5484 5486 5488 6029 6030 6035 6036 6038 5485 5487 5488 5489 5492 6035 6036 6038 4952 4953 4955 5486 5488 5489 5492 6038 4951 4952 4953 4955 5481 5482 5483 5484 5485 5486 5487 5489 5492 6029 6030 6035 6036 6038 5486 5487 5488 5490 5492 6037 6038 6042 5489 5491 5492 5494 5495 6037 6038 6042 4956 4957 4959 5490 5492 5494 5495 6042 4952 4953 4954 4955 4956 4957 4959 5486 5487 5488 5489 5490 5491 5494 5495 6037 6038 6042 5428 5433 5434 5494 5495 5984 5989 6042 4956 4957 4958 4959 4960 4961 4962 5428 5433 5434 5490 5491 5492 5493 5495 5984 5989 6042 5490 5491 5492 5493 5494 5984 5989 6042 4976 4977 4978 5497 5499 5511 5512 6047 5496 5498 5499 5500 5511 5512 6020 6047 5465 5466 5468 5497 5499 5500 6020 6047 4963 4964 4965 4966 4976 4977 4978 5465 5466 5468 5496 5497 5498 5500 5511 5512 6020 6047 5497 5498 5499 6017 6020 6046 6047 6051 4980 4982 4983 5502 5504 5520 5521 6056 5501 5503 5504 5505 5508 5520 5521 6056 4971 4972 4974 5502 5504 5505 5508 6056 4967 4968 4969 4970 4971 4972 4974 4980 4982 4983 5501 5502 5503 5505 5508 5520 5521 6056 5502 5503 5504 5506 5508 6055 6056 6060 5505 5507 5508 5509 5512 6055 6056 6060 4975 4976 4978 5506 5508 5509 5512 6060 4971 4972 4973 4974 4975 4976 4978 5502 5503 5504 5505 5506 5507 5509 5512 6055 6056 6060 5506 5507 5508 5510 5512 6059 6060 6064 5509 5511 5512 6044 6047 6059 6060 6064 5496 5497 5499 5510 5512 6044 6047 6064 4975 4976 4977 4978 5496 5497 5499 5506 5507 5508 5509 5510 5511 6044 6047 6059 6060 6064 5005 5007 5008 5516 5517 5534 5537 6068 4984 4985 4986 5515 5516 5518 5521 6072 5514 5516 5517 5518 5521 6067 6068 6072 4979 4984 4985 4986 5005 5007 5008 5513 5514 5515 5517 5518 5521 5534 5537 6067 6068 6072 5513 5515 5516 5534 5537 6067 6068 6072 5514 5515 5516 5519 5521 6071 6072 6076 5518 5520 5521 6053 6056 6071 6072 6076 5501 5502 5504 5519 5521 6053 6056 6076 4980 4981 4982 4983 4984 4985 4986 5501 5502 5504 5514 5515 5516 5518 5519 5520 6053 6056 6071 6072 6076 5002 5003 5004 5525 5526 5531 5533 6081 4995 4996 4997 5524 5526 5528 5529 6084 5523 5525 5526 5528 5529 6078 6081 6084 5522 5524 5526 5531 5533 6078 6081 6084 4987 4988 4989 4990 4995 4996 4997 5002 5003 5004 5522 5523 5524 5525 5528 5529 5531 5533 6078 6081 6084 5457 5459 5461 5528 5529 6009 6013 6084 5523 5524 5526 5527 5529 6009 6013 6084 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5457 5459 5461 5523 5524 5526 5527 5528 6009 6013 6084 5006 5007 5008 5532 5533 5535 5537 6088 5522 5525 5526 5532 5533 6077 6081 6088 5530 5531 5533 5535 5537 6077 6081 6088 5001 5002 5003 5004 5006 5007 5008 5522 5525 5526 5530 5531 5532 5535 5537 6077 6081 6088 5513 5516 5517 5536 5537 6065 6068 6093 5530 5532 5533 5536 5537 6085 6088 6093 5534 5535 5537 6065 6068 6085 6088 6093 5005 5006 5007 5008 5513 5516 5517 5530 5532 5533 5534 5535 5536 6065 6068 6085 6088 6093 5317 5318 5541 5542 5625 5631 5868 6096 5315 5540 5541 5544 5547 5548 5852 6103 5539 5541 5542 5547 5548 6094 6096 6103 5315 5316 5317 5318 5538 5539 5540 5542 5544 5547 5548 5625 5631 5851 5852 5855 5856 5868 6094 6096 6103 5538 5540 5541 5625 5631 6094 6096 6103 5544 5545 5547 5849 5852 6108 6109 6112 5315 5539 5541 5543 5545 5547 5852 6112 5543 5544 5546 5547 5852 6112 6113 6116 5545 5547 5548 6101 6103 6112 6113 6116 5315 5539 5540 5541 5543 5544 5545 5546 5548 5852 6101 6103 6112 6113 6116 5539 5540 5541 5546 5547 6101 6103 6116 5020 5021 5022 5551 5552 5557 5558 6123 5011 5012 5013 5551 5552 5554 5555 6123 5009 5011 5012 5013 5020 5021 5022 5549 5550 5552 5554 5555 5557 5558 6123 5549 5550 5551 5554 5555 5557 5558 6123 5366 5367 5368 5554 5555 5919 5920 6123 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5366 5367 5368 5550 5551 5552 5553 5555 5919 5920 6123 5550 5551 5552 5553 5554 5919 5920 6123 5025 5558 5559 5560 5561 5564 5567 6127 5549 5551 5552 5558 5559 6121 6123 6127 5020 5021 5022 5023 5024 5025 5026 5027 5549 5551 5552 5556 5557 5559 5560 5561 5564 5567 6121 6123 6127 5556 5557 5558 5560 5564 6121 6123 6127 5556 5558 5559 5563 5564 6125 6127 6132 5025 5556 5558 5562 5564 5566 5567 6136 5561 5563 5564 5566 5567 6130 6132 6136 5560 5562 5564 6125 6127 6130 6132 6136 5025 5556 5558 5559 5560 5561 5562 5563 5566 5567 6125 6127 6130 6132 6136 5029 5032 5033 5566 5567 5568 5572 6136 5561 5562 5564 5565 5567 5568 5572 6136 5024 5025 5026 5027 5028 5029 5032 5033 5556 5558 5561 5562 5564 5565 5566 5568 5572 6136 5565 5566 5567 5571 5572 6134 6136 6141 5031 5032 5033 5570 5572 5575 5576 6143 5569 5571 5572 5575 5576 6138 6141 6143 5568 5570 5572 6134 6136 6138 6141 6143 5029 5031 5032 5033 5565 5566 5567 5568 5569 5570 5571 5575 5576 6134 6136 6138 6141 6143 5089 5090 5091 5574 5578 5622 5623 6143 5573 5575 5576 5577 5578 5622 5623 6143 5569 5570 5572 5574 5576 5577 5578 6143 5030 5031 5032 5033 5034 5035 5036 5041 5042 5043 5569 5570 5572 5574 5575 5577 5578 6143 5041 5042 5043 5574 5575 5576 5578 6143 5037 5038 5039 5040 5041 5042 5043 5089 5090 5091 5573 5574 5575 5576 5577 5622 5623 6143 5061 5062 5063 5580 5581 5596 5597 6147 5579 5581 5582 5596 5597 5627 5875 6147 5044 5061 5062 5063 5319 5320 5321 5322 5579 5580 5582 5596 5597 5627 5872 5875 5877 6147 5320 5580 5581 5627 5872 5875 5877 6147 5071 5072 5074 5585 5586 5598 5605 6152 5049 5051 5052 5585 5586 5587 5590 6152 5583 5584 5586 5587 5590 5598 5605 6152 5045 5046 5047 5048 5049 5051 5052 5071 5072 5074 5583 5584 5585 5587 5590 5598 5605 6152 5584 5585 5586 5589 5590 6149 6152 6156 5053 5055 5056 5589 5590 5591 5594 6156 5587 5588 5590 5591 5594 6149 6152 6156 5049 5050 5051 5052 5053 5055 5056 5584 5585 5586 5587 5588 5589 5591 5594 6149 6152 6156 5588 5589 5590 5593 5594 6154 6156 6158 5057 5059 5060 5593 5594 5595 5596 6158 5591 5592 5594 5595 5596 6154 6156 6158 5053 5054 5055 5056 5057 5059 5060 5588 5589 5590 5591 5592 5593 5595 5596 6154 6156 6158 5592 5593 5594 5596 5597 6145 6147 6158 5057 5058 5059 5060 5061 5062 5063 5579 5580 5581 5592 5593 5594 5595 5597 6145 6147 6158 5579 5580 5581 5595 5596 6145 6147 6158 5583 5585 5586 5603 5605 6151 6152 6164 5075 5076 5079 5601 5602 5606 5609 6167 5072 5073 5074 5601 5602 5604 5605 6167 5599 5600 5602 5604 5605 5606 5609 6167 5064 5065 5066 5067 5068 5069 5070 5072 5073 5074 5075 5076 5079 5599 5600 5601 5604 5605 5606 5609 6167 5598 5604 5605 6151 6152 6163 6164 6167 5600 5601 5602 5603 5605 6163 6164 6167 5071 5072 5073 5074 5583 5585 5586 5598 5600 5601 5602 5603 5604 6151 6152 6163 6164 6167 5599 5601 5602 5607 5609 6166 6167 6171 5606 5608 5609 5610 5613 6166 6167 6171 5076 5077 5079 5607 5609 5610 5613 6171 5075 5076 5077 5079 5599 5601 5602 5606 5607 5608 5610 5613 6166 6167 6171 5607 5608 5609 5611 5613 6170 6171 6173 5610 5612 5613 5615 5616 6170 6171 6173 5080 5081 5083 5611 5613 5615 5616 6173 5076 5077 5078 5079 5080 5081 5083 5607 5608 5609 5610 5611 5612 5615 5616 6170 6171 6173 5087 5088 5091 5615 5616 5617 5621 6173 5080 5081 5082 5083 5084 5085 5086 5087 5088 5091 5611 5612 5613 5614 5616 5617 5621 6173 5611 5612 5613 5614 5615 5617 5621 6173 5614 5615 5616 5618 5621 6172 6173 6179 5617 5619 5621 6172 6173 6178 6179 6181 5618 5620 5621 5623 5624 6178 6179 6181 5088 5089 5091 5619 5621 5623 5624 6181 5087 5088 5089 5091 5614 5615 5616 5617 5618 5619 5620 5623 5624 6172 6173 6178 6179 6181 5573 5574 5578 5623 5624 6143 6144 6181 5088 5089 5090 5091 5573 5574 5578 5619 5620 5621 5622 5624 6143 6144 6181 5619 5620 5621 5622 5623 6143 6144 6181 5538 5541 5542 5626 5631 5632 6096 6192 5625 5631 5632 6096 6097 6184 6187 6192 5580 5581 5582 5859 5875 6147 6148 6202 5318 5629 5630 5631 5868 5869 5870 6213 5628 5630 5631 5865 5870 6209 6211 6213 5628 5629 5631 5632 5870 6183 6192 6213 5317 5318 5538 5541 5542 5625 5626 5628 5629 5630 5632 5868 5869 5870 6096 6183 6192 6213 5625 5626 5630 5631 6096 6183 6192 6213 5119 5120 5121 5123 5124 5634 5635 5636 5637 5661 5662 6221 5092 5093 5094 5095 5096 5097 5098 5099 5119 5120 5121 5123 5124 5633 5635 5636 5637 5661 5662 6221 5095 5096 5097 5098 5099 5633 5634 5636 5637 5661 5662 6221 5633 5634 5635 5637 5638 5639 5640 5661 5662 6221 6222 6224 5095 5096 5097 5098 5099 5100 5101 5102 5633 5634 5635 5636 5638 5639 5640 5661 5662 6221 6222 6224 5098 5099 5100 5101 5102 5636 5637 5639 5640 6221 6222 6224 5636 5637 5638 5640 5641 5642 5643 6221 6222 6224 6225 6227 5098 5099 5100 5101 5102 5103 5104 5105 5636 5637 5638 5639 5641 5642 5643 6221 6222 6224 6225 6227 5101 5102 5103 5104 5105 5639 5640 5642 5643 6224 6225 6227 5639 5640 5641 5643 5644 5645 5646 6224 6225 6227 6228 6230 5101 5102 5103 5104 5105 5106 5107 5108 5639 5640 5641 5642 5644 5645 5646 6224 6225 6227 6228 6230 5104 5105 5106 5107 5108 5642 5643 5645 5646 6227 6228 6230 5642 5643 5644 5646 5647 5648 5649 6227 6228 6230 6231 6233 5104 5105 5106 5107 5108 5109 5110 5111 5642 5643 5644 5645 5647 5648 5649 6227 6228 6230 6231 6233 5107 5108 5109 5110 5111 5645 5646 5648 5649 6230 6231 6233 5645 5646 5647 5649 5650 5651 5652 6230 6231 6233 6234 6237 5107 5108 5109 5110 5111 5112 5113 5114 5645 5646 5647 5648 5650 5651 5652 6230 6231 6233 6234 6237 5110 5111 5112 5113 5114 5648 5649 5651 5652 6233 6234 6237 5648 5649 5650 5652 5653 5655 5656 6233 6234 6237 6238 6243 5110 5111 5112 5113 5114 5115 5116 5117 5648 5649 5650 5651 5653 5655 5656 6233 6234 6237 6238 6243 5113 5114 5115 5116 5117 5651 5652 5655 5656 6237 6238 6243 5435 5436 5437 5658 5659 5965 5966 5991 5992 6239 6240 6245 5651 5652 5653 5656 5657 5658 5659 6237 6238 6243 6244 6245 5113 5114 5115 5116 5117 5118 5435 5436 5651 5652 5653 5655 5657 5658 5659 6237 6238 6243 6244 6245 5116 5117 5118 5435 5436 5655 5656 5658 5659 6243 6244 6245 5116 5117 5118 5435 5436 5437 5654 5655 5656 5657 5659 5965 5966 5991 5992 6239 6240 6243 6244 6245 5654 5655 5656 5657 5658 5991 5992 6239 6240 6243 6244 6245 5122 5123 5124 5126 5127 5661 5662 5664 5665 6220 6221 6248 5119 5120 5121 5122 5123 5124 5126 5127 5633 5634 5635 5636 5637 5660 5662 5664 5665 6220 6221 6248 5633 5634 5635 5636 5637 5660 5661 5664 5665 6220 6221 6248 5125 5126 5127 5129 5130 5664 5665 5667 5668 6247 6248 6251 5122 5123 5124 5125 5126 5127 5129 5130 5660 5661 5662 5663 5665 5667 5668 6220 6221 6247 6248 6251 5660 5661 5662 5663 5664 5667 5668 6220 6221 6247 6248 6251 5128 5129 5130 5132 5133 5667 5668 5670 5671 6250 6251 6254 5125 5126 5127 5128 5129 5130 5132 5133 5663 5664 5665 5666 5668 5670 5671 6247 6248 6250 6251 6254 5663 5664 5665 5666 5667 5670 5671 6247 6248 6250 6251 6254 5131 5132 5133 5135 5136 5670 5671 5673 5674 6253 6254 6257 5128 5129 5130 5131 5132 5133 5135 5136 5666 5667 5668 5669 5671 5673 5674 6250 6251 6253 6254 6257 5666 5667 5668 5669 5670 5673 5674 6250 6251 6253 6254 6257 5134 5135 5136 5138 5139 5673 5674 5676 5677 6256 6257 6260 5131 5132 5133 5134 5135 5136 5138 5139 5669 5670 5671 5672 5674 5676 5677 6253 6254 6256 6257 6260 5669 5670 5671 5672 5673 5676 5677 6253 6254 6256 6257 6260 5137 5138 5139 5141 5142 5676 5677 5679 5680 6259 6260 6263 5134 5135 5136 5137 5138 5139 5141 5142 5672 5673 5674 5675 5677 5679 5680 6256 6257 6259 6260 6263 5672 5673 5674 5675 5676 5679 5680 6256 6257 6259 6260 6263 5140 5141 5142 5144 5145 5679 5680 5682 5683 6262 6263 6266 5137 5138 5139 5140 5141 5142 5144 5145 5675 5676 5677 5678 5680 5682 5683 6259 6260 6262 6263 6266 5675 5676 5677 5678 5679 5682 5683 6259 6260 6262 6263 6266 5143 5144 5145 5149 5150 5682 5683 5687 5688 6265 6266 6271 5140 5141 5142 5143 5144 5145 5149 5150 5678 5679 5680 5681 5683 5687 5688 6262 6263 6265 6266 6271 5678 5679 5680 5681 5682 5687 5688 6262 6263 6265 6266 6271 5685 5686 5687 5688 6269 6270 6271 5146 5147 5148 5149 5150 5684 5686 5687 5688 6269 6270 6271 5146 5147 5148 5149 5150 5684 5685 5687 5688 6269 6270 6271 5143 5144 5145 5146 5147 5148 5149 5150 5681 5682 5683 5684 5685 5686 5688 6265 6266 6269 6270 6271 5681 5682 5683 5684 5685 5686 5687 6265 6266 6269 6270 6271 5160 5162 5163 5690 5692 5705 5706 6276 5689 5691 5692 5693 5696 5705 5706 6276 5155 5156 5158 5690 5692 5693 5696 6276 5151 5152 5153 5154 5155 5156 5158 5160 5162 5163 5689 5690 5691 5693 5696 5705 5706 6276 5690 5691 5692 5694 5696 6275 6276 6280 5693 5695 5696 5697 5700 6275 6276 6280 5159 5169 5199 5694 5696 5697 5700 6280 5155 5156 5157 5158 5159 5169 5199 5690 5691 5692 5693 5694 5695 5697 5700 6275 6276 6280 5694 5695 5696 5698 5700 6279 6280 6284 5697 5699 5700 5701 5721 6279 6280 6284 5170 5698 5700 5701 5714 5717 5721 6284 5159 5169 5170 5199 5200 5694 5695 5696 5697 5698 5699 5701 5714 5717 5721 6279 6280 6284 5698 5699 5700 5702 5721 6283 6284 6289 5701 5719 5721 6283 6284 6288 6289 6293 5164 5167 5168 5704 5706 5709 5710 6298 5703 5705 5706 5709 5710 6273 6276 6298 5689 5690 5692 5704 5706 6273 6276 6298 5160 5161 5162 5163 5164 5167 5168 5689 5690 5692 5703 5704 5705 5709 5710 6273 6276 6298 5166 5167 5168 5708 5710 5712 5713 6300 5707 5709 5710 5712 5713 6295 6298 6300 5703 5704 5706 5708 5710 6295 6298 6300 5164 5166 5167 5168 5703 5704 5706 5707 5708 5709 5712 5713 6295 6298 6300 5328 5329 5330 5332 5333 5712 5713 5884 5885 6299 6300 6303 5165 5166 5167 5168 5328 5329 5330 5332 5333 5707 5708 5710 5711 5713 5884 5885 6299 6300 6303 5707 5708 5710 5711 5712 5884 5885 6299 6300 6303 5170 5699 5700 5715 5717 5718 5721 6309 5714 5716 5717 5718 5721 5741 5745 6309 5198 5199 5200 5715 5717 5741 5745 6309 5169 5170 5198 5199 5200 5699 5700 5714 5715 5716 5718 5721 5741 5745 6309 5714 5715 5717 5720 5721 6309 6310 6311 5702 5720 5721 5722 6288 6289 6293 6311 5718 5719 5721 5722 6293 6309 6310 6311 5170 5698 5699 5700 5701 5702 5714 5715 5717 5718 5719 5720 5722 6283 6284 6288 6289 6293 6309 6310 6311 5719 5720 5721 6292 6293 6305 6311 6316 5268 5269 5270 5724 5725 5804 5805 6321 5723 5725 5726 5727 5728 5804 5805 6321 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5268 5269 5270 5723 5724 5726 5727 5728 5804 5805 6321 5178 5179 5180 5724 5725 5727 5728 6321 5724 5725 5726 5728 5729 5730 5733 6321 5178 5179 5180 5181 5182 5183 5184 5724 5725 5726 5727 5729 5730 5733 6321 5182 5183 5184 5727 5728 5730 5733 6321 5727 5728 5729 5732 5733 6319 6321 6325 5186 5188 5189 5732 5733 5734 5737 6325 5730 5731 5733 5734 5737 6319 6321 6325 5182 5183 5184 5185 5186 5188 5189 5727 5728 5729 5730 5731 5732 5734 5737 6319 6321 6325 5731 5732 5733 5736 5737 6323 6325 6329 5194 5195 5196 5736 5737 5738 5739 6329 5734 5735 5737 5738 5739 6323 6325 6329 5186 5187 5188 5189 5194 5195 5196 5731 5732 5733 5734 5735 5736 5738 5739 6323 6325 6329 5735 5736 5737 5739 5740 5775 5776 6329 5190 5191 5192 5193 5194 5195 5196 5237 5238 5239 5735 5736 5737 5738 5740 5775 5776 6329 5237 5238 5239 5738 5739 5775 5776 6329 5715 5716 5717 5742 5745 6306 6309 6334 5741 5743 5745 6306 6309 6333 6334 6338 5742 5744 5745 5746 5749 6333 6334 6338 5202 5203 5204 5743 5745 5746 5749 6338 5197 5198 5199 5200 5202 5203 5204 5715 5716 5717 5741 5742 5743 5744 5746 5749 6306 6309 6333 6334 6338 5743 5744 5745 5747 5749 6337 6338 6341 5746 5748 5749 5750 5753 6337 6338 6341 5205 5206 5209 5747 5749 5750 5753 6341 5201 5202 5203 5204 5205 5206 5209 5743 5744 5745 5746 5747 5748 5750 5753 6337 6338 6341 5747 5748 5749 5751 5753 6340 6341 6344 5750 5752 5753 5754 5756 6340 6341 6344 5206 5207 5209 5751 5753 5754 5756 6344 5205 5206 5207 5209 5747 5748 5749 5750 5751 5752 5754 5756 6340 6341 6344 5751 5752 5753 5755 5756 5757 5760 6344 5213 5214 5216 5754 5756 5757 5760 6344 5206 5207 5208 5209 5210 5211 5212 5213 5214 5216 5751 5752 5753 5754 5755 5757 5760 6344 5754 5755 5756 5758 5760 6343 6344 6348 5757 5759 5760 5761 5764 6343 6344 6348 5217 5218 5221 5758 5760 5761 5764 6348 5213 5214 5215 5216 5217 5218 5221 5754 5755 5756 5757 5758 5759 5761 5764 6343 6344 6348 5758 5759 5760 5762 5764 6347 6348 6352 5761 5763 5764 5765 5767 6347 6348 6352 5218 5219 5221 5762 5764 5765 5767 6352 5217 5218 5219 5221 5758 5759 5760 5761 5762 5763 5765 5767 6347 6348 6352 5762 5763 5764 5766 5767 5768 5771 6352 5228 5229 5232 5765 5767 5768 5771 6352 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5232 5762 5763 5764 5765 5766 5768 5771 6352 5765 5766 5767 5769 5771 6351 6352 6354 5768 5770 5771 5772 5774 6351 6352 6354 5229 5230 5232 5769 5771 5772 5774 6354 5228 5229 5230 5232 5765 5766 5767 5768 5769 5770 5772 5774 6351 6352 6354 5769 5770 5771 5773 5774 5776 5777 6354 5236 5237 5239 5772 5774 5776 5777 6354 5229 5230 5231 5232 5233 5234 5235 5236 5237 5239 5769 5770 5771 5772 5773 5776 5777 6354 5738 5739 5740 5776 5777 6327 6329 6354 5236 5237 5238 5239 5738 5739 5740 5772 5773 5774 5775 5777 6327 6329 6354 5772 5773 5774 5775 5776 6327 6329 6354 5271 5285 5293 5779 5781 5808 5809 6360 5778 5780 5781 5808 5809 6360 6361 6363 5779 5781 5782 5783 5785 6360 6361 6363 5240 5241 5242 5243 5244 5245 5246 5271 5285 5293 5778 5779 5780 5782 5783 5785 5808 5809 6360 6361 6363 5244 5245 5246 5780 5781 5783 5785 6363 5780 5781 5782 5784 5785 6363 6364 6367 5783 5785 5786 5787 5790 6363 6364 6367 5244 5245 5246 5247 5248 5249 5251 5780 5781 5782 5783 5784 5786 5787 5790 6363 6364 6367 5248 5249 5251 5784 5785 5787 5790 6367 5784 5785 5786 5788 5790 6367 6368 6372 5787 5789 5790 6367 6368 6372 6373 6375 5788 5790 5791 5792 5793 6372 6373 6375 5248 5249 5250 5251 5784 5785 5786 5787 5788 5789 5791 5792 5793 6367 6368 6372 6373 6375 5249 5250 5251 5789 5790 5792 5793 6375 5789 5790 5791 5793 5794 5795 5797 6375 5249 5250 5251 5252 5253 5254 5255 5260 5261 5262 5789 5790 5791 5792 5794 5795 5797 6375 5260 5261 5262 5792 5793 5795 5797 6375 5792 5793 5794 5796 5797 6375 6376 6379 5795 5797 5798 5799 5802 6375 6376 6379 5256 5257 5258 5259 5260 5261 5262 5263 5265 5266 5792 5793 5794 5795 5796 5798 5799 5802 6375 6376 6379 5263 5265 5266 5796 5797 5799 5802 6379 5796 5797 5798 5801 5802 6377 6379 6383 5267 5269 5270 5801 5802 5803 5804 6383 5799 5800 5802 5803 5804 6377 6379 6383 5263 5264 5265 5266 5267 5269 5270 5796 5797 5798 5799 5800 5801 5803 5804 6377 6379 6383 5800 5801 5802 5804 5805 6318 6321 6383 5267 5268 5269 5270 5723 5724 5725 5800 5801 5802 5803 5805 6318 6321 6383 5723 5724 5725 5803 5804 6318 6321 6383 5295 5807 5808 5826 5827 5830 5831 6386 5806 5808 5809 5830 5831 6357 6360 6386 5271 5285 5293 5294 5295 5778 5779 5781 5806 5807 5809 5826 5827 5830 5831 6357 6360 6386 5778 5779 5781 5807 5808 6357 6360 6386 5303 5305 5306 5812 5813 5832 5839 6392 5273 5275 5276 5812 5813 5814 5817 6392 5810 5811 5813 5814 5817 5832 5839 6392 5272 5273 5275 5276 5303 5305 5306 5810 5811 5812 5814 5817 5832 5839 6392 5811 5812 5813 5816 5817 6390 6392 6394 5277 5279 5280 5816 5817 5818 5819 6394 5814 5815 5817 5818 5819 6390 6392 6394 5273 5274 5275 5276 5277 5279 5280 5811 5812 5813 5814 5815 5816 5818 5819 6390 6392 6394 5815 5816 5817 5819 5820 5821 5823 6394 5277 5278 5279 5280 5281 5282 5283 5815 5816 5817 5818 5820 5821 5823 6394 5281 5282 5283 5818 5819 5821 5823 6394 5818 5819 5820 5822 5823 6394 6395 6398 5821 5823 5824 5825 5826 6394 6395 6398 5281 5282 5283 5284 5286 5287 5288 5818 5819 5820 5821 5822 5824 5825 5826 6394 6395 6398 5286 5287 5288 5822 5823 5825 5826 6398 5822 5823 5824 5826 5827 5828 5830 6398 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5806 5808 5822 5823 5824 5825 5827 5828 5830 6398 5295 5806 5808 5825 5826 5828 5830 6398 5825 5826 5827 5829 5830 6398 6399 6402 5828 5830 5831 6384 6386 6398 6399 6402 5295 5806 5807 5808 5825 5826 5827 5828 5829 5831 6384 6386 6398 6399 6402 5806 5807 5808 5829 5830 6384 6386 6402 5810 5812 5813 5833 5839 6389 6392 6407 5832 5834 5839 6389 6392 6405 6407 6412 5833 5839 5840 6405 6407 6411 6412 6414 5307 5309 5310 5836 5837 5841 5843 6414 5835 5837 5838 5839 5840 5841 5843 6414 5296 5297 5298 5299 5300 5301 5302 5304 5305 5306 5307 5309 5310 5835 5836 5838 5839 5840 5841 5843 6414 5304 5305 5306 5836 5837 5839 5840 6414 5303 5304 5305 5306 5810 5812 5813 5832 5833 5834 5836 5837 5838 5840 6389 6392 6405 6407 6411 6412 6414 5834 5836 5837 5838 5839 6411 6412 6414 5835 5836 5837 5843 5844 6413 6414 6418 5311 5313 5314 5843 5844 5845 5847 6418 5307 5308 5309 5310 5311 5313 5314 5835 5836 5837 5841 5842 5844 5845 5847 6413 6414 6418 5841 5842 5843 5845 5847 6413 6414 6418 5842 5843 5844 5847 5848 6417 6418 6422 5324 5326 5327 5847 5848 5879 5881 6422 5311 5312 5313 5314 5324 5326 5327 5842 5843 5844 5845 5846 5848 5879 5881 6417 6418 6422 5845 5846 5847 5879 5881 6417 6418 6422 5543 5850 5852 6105 6108 6109 6112 6427 5849 5852 5853 6105 6108 6426 6427 6431 5315 5316 5541 5852 5853 5854 5856 6431 5315 5316 5539 5541 5543 5544 5545 5547 5849 5850 5851 5853 5854 5856 6105 6108 6109 6112 6426 6427 6431 5850 5851 5852 5854 5856 6426 6427 6431 5851 5852 5853 5856 5857 6430 6431 6435 5316 5317 5541 5856 5857 5858 5868 6435 5315 5316 5317 5541 5851 5852 5853 5854 5855 5857 5858 5868 6430 6431 6435 5854 5855 5856 5858 5868 6430 6431 6435 5855 5856 5857 5866 5868 6434 6435 6438 5627 5860 5874 5875 6147 6148 6202 6443 5859 5861 5874 5875 6202 6203 6206 6443 5860 5862 6202 6203 6206 6442 6443 6445 5861 5863 6206 6207 6211 6442 6443 6445 5862 5864 6206 6207 6211 6444 6445 6448 5863 5865 5870 5871 6211 6444 6445 6448 5629 5864 5870 5871 6209 6211 6213 6448 5858 5867 5868 6434 6435 6438 6439 6448 5866 5868 5869 5870 5871 6438 6439 6448 5316 5317 5318 5538 5541 5628 5631 5855 5856 5857 5858 5866 5867 5869 5870 5871 6434 6435 6438 6439 6448 5318 5628 5631 5867 5868 5870 5871 6448 5318 5628 5629 5630 5631 5864 5865 5867 5868 5869 5871 6209 6211 6213 6448 5864 5865 5867 5868 5869 5870 6211 6448 5320 5581 5582 5873 5875 5876 5877 6453 5872 5874 5875 5876 5877 6440 6443 6453 5859 5860 5873 5875 6202 6440 6443 6453 5320 5580 5581 5582 5627 5859 5860 5872 5873 5874 5876 5877 6147 6148 6202 6440 6443 6453 5872 5873 5875 5877 5878 5880 5881 6453 5319 5320 5321 5322 5323 5325 5326 5327 5581 5582 5872 5873 5875 5876 5878 5880 5881 6453 5325 5326 5327 5876 5877 5880 5881 6453 5846 5847 5848 5881 5882 6421 6422 6455 5876 5877 5878 5881 5882 6453 6454 6455 5324 5325 5326 5327 5846 5847 5848 5876 5877 5878 5879 5880 5882 6421 6422 6453 6454 6455 5879 5880 5881 6421 6422 6453 6454 6455 5331 5332 5333 5335 5336 5884 5885 5887 5888 6302 6303 6458 5328 5329 5330 5331 5332 5333 5335 5336 5711 5712 5713 5883 5885 5887 5888 6299 6300 6302 6303 6458 5711 5712 5713 5883 5884 5887 5888 6299 6300 6302 6303 6458 5334 5335 5336 5338 5339 5887 5888 5890 5891 6457 6458 6461 5331 5332 5333 5334 5335 5336 5338 5339 5883 5884 5885 5886 5888 5890 5891 6302 6303 6457 6458 6461 5883 5884 5885 5886 5887 5890 5891 6302 6303 6457 6458 6461 5337 5338 5339 5341 5342 5890 5891 5893 5894 6460 6461 6464 5334 5335 5336 5337 5338 5339 5341 5342 5886 5887 5888 5889 5891 5893 5894 6457 6458 6460 6461 6464 5886 5887 5888 5889 5890 5893 5894 6457 6458 6460 6461 6464 5340 5341 5342 5344 5345 5893 5894 5896 5897 6463 6464 6467 5337 5338 5339 5340 5341 5342 5344 5345 5889 5890 5891 5892 5894 5896 5897 6460 6461 6463 6464 6467 5889 5890 5891 5892 5893 5896 5897 6460 6461 6463 6464 6467 5343 5344 5345 5347 5348 5896 5897 5899 5900 6466 6467 6470 5340 5341 5342 5343 5344 5345 5347 5348 5892 5893 5894 5895 5897 5899 5900 6463 6464 6466 6467 6470 5892 5893 5894 5895 5896 5899 5900 6463 6464 6466 6467 6470 5346 5347 5348 5350 5351 5899 5900 5902 5903 6469 6470 6473 5343 5344 5345 5346 5347 5348 5350 5351 5895 5896 5897 5898 5900 5902 5903 6466 6467 6469 6470 6473 5895 5896 5897 5898 5899 5902 5903 6466 6467 6469 6470 6473 5349 5350 5351 5353 5354 5902 5903 5905 5906 6472 6473 6476 5346 5347 5348 5349 5350 5351 5353 5354 5898 5899 5900 5901 5903 5905 5906 6469 6470 6472 6473 6476 5898 5899 5900 5901 5902 5905 5906 6469 6470 6472 6473 6476 5352 5353 5354 5356 5357 5905 5906 5908 5909 6475 6476 6479 5349 5350 5351 5352 5353 5354 5356 5357 5901 5902 5903 5904 5906 5908 5909 6472 6473 6475 6476 6479 5901 5902 5903 5904 5905 5908 5909 6472 6473 6475 6476 6479 5355 5356 5357 5359 5360 5908 5909 5911 5912 6478 6479 6482 5352 5353 5354 5355 5356 5357 5359 5360 5904 5905 5906 5907 5909 5911 5912 6475 6476 6478 6479 6482 5904 5905 5906 5907 5908 5911 5912 6475 6476 6478 6479 6482 5358 5359 5360 5364 5365 5911 5912 5916 5917 6481 6482 6487 5355 5356 5357 5358 5359 5360 5364 5365 5907 5908 5909 5910 5912 5916 5917 6478 6479 6481 6482 6487 5907 5908 5909 5910 5911 5916 5917 6478 6479 6481 6482 6487 5914 5915 5916 5917 6485 6486 6487 5361 5362 5363 5364 5365 5913 5915 5916 5917 6485 6486 6487 5361 5362 5363 5364 5365 5913 5914 5916 5917 6485 6486 6487 5358 5359 5360 5361 5362 5363 5364 5365 5910 5911 5912 5913 5914 5915 5917 6481 6482 6485 6486 6487 5910 5911 5912 5913 5914 5915 5916 6481 6482 6485 6486 6487 5919 5920 6122 6123 6490 5366 5367 5368 5553 5554 5555 5918 5920 6122 6123 6490 5553 5554 5555 5918 5919 6122 6123 6490 5373 5374 5375 5922 5923 5926 5928 6493 5369 5370 5371 5373 5374 5375 5921 5923 5926 5928 6493 5921 5922 5926 5928 6493 5398 5399 5400 5925 5927 5928 5954 6503 5924 5927 5928 5954 5955 6497 6499 6503 5921 5922 5923 5927 5928 6492 6493 6503 5924 5925 5926 5928 5954 6492 6493 6503 5372 5373 5374 5375 5398 5399 5400 5921 5922 5923 5924 5925 5926 5927 5954 6492 6493 6503 5381 5382 5383 5930 5932 5935 5936 6507 5929 5931 5932 5935 5936 5994 5997 6507 5438 5439 5441 5930 5932 5994 5997 6507 5376 5377 5378 5379 5381 5382 5383 5438 5439 5441 5929 5930 5931 5935 5936 5994 5997 6507 5385 5386 5387 5934 5936 5939 5940 6511 5933 5935 5936 5939 5940 6504 6507 6511 5929 5930 5932 5934 5936 6504 6507 6511 5380 5381 5382 5383 5385 5386 5387 5929 5930 5932 5933 5934 5935 5939 5940 6504 6507 6511 5389 5390 5391 5938 5940 5941 5942 6513 5937 5939 5940 5941 5942 6508 6511 6513 5933 5934 5936 5938 5940 6508 6511 6513 5384 5385 5386 5387 5389 5390 5391 5933 5934 5936 5937 5938 5939 5941 5942 6508 6511 6513 5937 5938 5940 5942 5943 5944 5947 6513 5388 5389 5390 5391 5392 5393 5394 5395 5401 5403 5937 5938 5940 5941 5943 5944 5947 6513 5395 5401 5403 5941 5942 5944 5947 6513 5941 5942 5943 5945 5947 6513 6514 6518 5944 5946 5947 6513 6514 6518 6519 6522 5945 5947 5948 5958 5960 6518 6519 6522 5395 5401 5402 5403 5941 5942 5943 5944 5945 5946 5948 5958 5960 6513 6514 6518 6519 6522 5401 5402 5403 5946 5947 5958 5960 6522 5409 5410 5411 5951 5952 5956 5962 6526 5397 5399 5400 5951 5952 5953 5954 6526 5949 5950 5952 5953 5954 5956 5962 6526 5396 5397 5399 5400 5409 5410 5411 5949 5950 5951 5953 5954 5956 5962 6526 5950 5951 5952 5954 5955 5964 6499 6526 5397 5398 5399 5400 5924 5925 5927 5928 5950 5951 5952 5953 5955 5964 6497 6499 6503 6526 5925 5953 5954 5964 6497 6499 6503 6526 5949 5951 5952 5957 5962 6524 6526 6530 5956 5962 5963 6524 6526 6529 6530 6532 5946 5947 5948 5959 5960 6522 6523 6532 5958 5960 5961 5962 5963 6522 6523 6532 5401 5402 5403 5404 5405 5406 5407 5946 5947 5948 5958 5959 5961 5962 5963 6522 6523 6532 5405 5406 5407 5959 5960 5962 5963 6532 5405 5406 5407 5408 5409 5410 5411 5949 5951 5952 5956 5957 5959 5960 5961 5963 6524 6526 6529 6530 6532 5957 5959 5960 5961 5962 6529 6530 6532 5953 5954 5955 6495 6499 6526 6527 6536 5435 5436 5437 5654 5658 5966 5967 5968 5969 5992 5993 6539 5412 5413 5414 5415 5416 5417 5419 5420 5435 5436 5437 5654 5658 5965 5967 5968 5969 5992 5993 6539 5415 5416 5417 5419 5420 5965 5966 5968 5969 5992 5993 6539 5965 5966 5967 5969 5970 5974 5975 5992 5993 6539 6540 6542 5415 5416 5417 5419 5420 5421 5965 5966 5967 5968 5970 5971 5972 5974 5975 5992 5993 6539 6540 6542 5419 5420 5421 5968 5969 5971 5972 5974 5975 6539 6540 6542 5419 5420 5421 5969 5970 5972 5973 5975 5976 5977 5978 6545 5418 5419 5420 5421 5423 5424 5425 5969 5970 5971 5973 5975 5976 5977 5978 6545 5423 5424 5425 5971 5972 5975 5976 5977 5978 6545 5968 5969 5970 5975 5976 6539 6540 6542 6543 6544 6545 6548 5419 5420 5421 5968 5969 5970 5971 5972 5973 5974 5976 5977 5978 6539 6540 6542 6543 6544 6545 6548 5971 5972 5973 5974 5975 5977 5978 6542 6543 6544 6545 6548 5971 5972 5973 5975 5976 5978 5979 5980 5982 6545 6546 6552 5422 5423 5424 5425 5426 5427 5431 5971 5972 5973 5975 5976 5977 5979 5980 5982 6545 6546 6552 5426 5427 5431 5977 5978 5980 5982 6545 6546 6552 5977 5978 5979 5981 5982 6545 6546 6552 6553 6557 5980 5982 5983 5985 5987 6552 6553 6557 5426 5427 5429 5431 5977 5978 5979 5980 5981 5983 5985 5987 6545 6546 6552 6553 6557 5427 5429 5431 5981 5982 5985 5987 6557 5493 5494 5495 5989 5990 6041 6042 6559 5981 5982 5983 5986 5987 6557 6558 6559 5985 5987 5988 5989 5990 6557 6558 6559 5427 5429 5430 5431 5981 5982 5983 5985 5986 5988 5989 5990 6557 6558 6559 5429 5430 5431 5986 5987 5989 5990 6559 5428 5429 5430 5431 5432 5433 5434 5493 5494 5495 5984 5986 5987 5988 5990 6041 6042 6559 5984 5986 5987 5988 5989 6041 6042 6559 5654 5658 5659 5992 5993 6235 6239 6240 6245 6538 6539 6562 5435 5436 5437 5654 5658 5659 5965 5966 5967 5968 5969 5991 5993 6235 6239 6240 6245 6538 6539 6562 5965 5966 5967 5968 5969 5991 5992 6235 6240 6538 6539 6562 5930 5931 5932 5995 5997 6506 6507 6568 5994 5996 5997 5998 6001 6506 6507 6568 5442 5443 5445 5995 5997 5998 6001 6568 5438 5439 5440 5441 5442 5443 5445 5930 5931 5932 5994 5995 5996 5998 6001 6506 6507 6568 5995 5996 5997 5999 6001 6567 6568 6572 5998 6000 6001 6002 6005 6567 6568 6572 5449 5450 5453 5999 6001 6002 6005 6572 5442 5443 5444 5445 5446 5447 5448 5449 5450 5453 5995 5996 5997 5998 5999 6000 6002 6005 6567 6568 6572 5999 6000 6001 6003 6005 6571 6572 6576 6002 6004 6005 6007 6008 6571 6572 6576 5450 5451 5453 6003 6005 6007 6008 6576 5449 5450 5451 5453 5999 6000 6001 6002 6003 6004 6007 6008 6571 6572 6576 5458 5463 5464 6007 6008 6010 6015 6576 5450 5451 5452 5453 5454 5455 5456 5458 5463 5464 6003 6004 6005 6006 6008 6010 6015 6576 6003 6004 6005 6006 6007 6010 6015 6576 5527 5528 5529 6011 6013 6082 6084 6579 6006 6007 6008 6015 6016 6575 6576 6581 6009 6012 6013 6082 6084 6579 6580 6581 6011 6013 6014 6015 6016 6579 6580 6581 5457 5459 5460 5461 5527 5528 5529 6009 6011 6012 6014 6015 6016 6082 6084 6579 6580 6581 5459 5460 5461 6012 6013 6015 6016 6581 5458 5459 5460 5461 5462 5463 5464 6006 6007 6008 6010 6012 6013 6014 6016 6575 6576 6581 6010 6012 6013 6014 6015 6575 6576 6581 5500 6018 6020 6046 6047 6050 6051 6586 6017 6019 6020 6021 6023 6050 6051 6586 5472 5474 5475 6018 6020 6021 6023 6586 5465 5466 5467 5468 5469 5470 5471 5472 5474 5475 5497 5498 5499 5500 6017 6018 6019 6021 6023 6046 6047 6050 6051 6586 6018 6019 6020 6022 6023 6024 6028 6586 5476 5477 5480 6021 6023 6024 6028 6586 5472 5473 5474 5475 5476 5477 5480 6018 6019 6020 6021 6022 6024 6028 6586 6021 6022 6023 6025 6028 6585 6586 6590 6024 6026 6028 6585 6586 6589 6590 6592 6025 6027 6028 6030 6031 6589 6590 6592 5477 5478 5480 6026 6028 6030 6031 6592 5476 5477 5478 5480 6021 6022 6023 6024 6025 6026 6027 6030 6031 6585 6586 6589 6590 6592 5484 5485 5488 6030 6031 6032 6036 6592 5477 5478 5479 5480 5481 5482 5483 5484 5485 5488 6026 6027 6028 6029 6031 6032 6036 6592 6026 6027 6028 6029 6030 6032 6036 6592 6029 6030 6031 6033 6036 6591 6592 6599 6032 6034 6036 6591 6592 6598 6599 6601 6033 6035 6036 6038 6039 6598 6599 6601 5485 5486 5488 6034 6036 6038 6039 6601 5484 5485 5486 5488 6029 6030 6031 6032 6033 6034 6035 6038 6039 6591 6592 6598 6599 6601 5489 5490 5492 6038 6039 6040 6042 6601 5485 5486 5487 5488 5489 5490 5492 6034 6035 6036 6037 6039 6040 6042 6601 6034 6035 6036 6037 6038 6040 6042 6601 6037 6038 6039 6042 6043 6600 6601 6605 5984 5989 5990 6042 6043 6554 6559 6605 5489 5490 5491 5492 5493 5494 5495 5984 5989 5990 6037 6038 6039 6040 6041 6043 6554 6559 6600 6601 6605 6040 6041 6042 6554 6559 6600 6601 6605 5510 5511 5512 6045 6047 6063 6064 6610 6044 6046 6047 6048 6051 6063 6064 6610 5500 6017 6020 6045 6047 6048 6051 6610 5496 5497 5498 5499 5500 5510 5511 5512 6017 6020 6044 6045 6046 6048 6051 6063 6064 6610 6045 6046 6047 6049 6051 6609 6610 6614 6048 6050 6051 6052 6586 6609 6610 6614 6017 6018 6020 6049 6051 6052 6586 6614 5500 6017 6018 6020 6045 6046 6047 6048 6049 6050 6052 6586 6609 6610 6614 6049 6050 6051 6583 6586 6613 6614 6618 5519 5520 5521 6054 6056 6075 6076 6622 6053 6055 6056 6057 6060 6075 6076 6622 5505 5506 5508 6054 6056 6057 6060 6622 5501 5502 5503 5504 5505 5506 5508 5519 5520 5521 6053 6054 6055 6057 6060 6075 6076 6622 6054 6055 6056 6058 6060 6621 6622 6626 6057 6059 6060 6061 6064 6621 6622 6626 5509 5510 5512 6058 6060 6061 6064 6626 5505 5506 5507 5508 5509 5510 5512 6054 6055 6056 6057 6058 6059 6061 6064 6621 6622 6626 6058 6059 6060 6062 6064 6625 6626 6630 6061 6063 6064 6607 6610 6625 6626 6630 6044 6045 6047 6062 6064 6607 6610 6630 5509 5510 5511 5512 6044 6045 6047 6058 6059 6060 6061 6062 6063 6607 6610 6625 6626 6630 5534 5536 5537 6066 6068 6092 6093 6634 6065 6067 6068 6069 6072 6092 6093 6634 5515 5516 5517 6066 6068 6069 6072 6634 5513 5515 5516 5517 5534 5536 5537 6065 6066 6067 6069 6072 6092 6093 6634 6066 6067 6068 6070 6072 6633 6634 6638 6069 6071 6072 6073 6076 6633 6634 6638 5518 5519 5521 6070 6072 6073 6076 6638 5514 5515 5516 5517 5518 5519 5521 6066 6067 6068 6069 6070 6071 6073 6076 6633 6634 6638 6070 6071 6072 6074 6076 6637 6638 6641 6073 6075 6076 6619 6622 6637 6638 6641 6053 6054 6056 6074 6076 6619 6622 6641 5518 5519 5520 5521 6053 6054 6056 6070 6071 6072 6073 6074 6075 6619 6622 6637 6638 6641 5531 5532 5533 6080 6081 6086 6088 6646 5524 5525 5526 6079 6081 6083 6084 6649 6078 6080 6081 6083 6084 6643 6646 6649 6077 6079 6081 6086 6088 6643 6646 6649 5522 5524 5525 5526 5531 5532 5533 6077 6078 6079 6080 6083 6084 6086 6088 6643 6646 6649 6009 6011 6013 6083 6084 6564 6579 6649 6078 6079 6081 6082 6084 6564 6579 6649 5523 5524 5525 5526 5527 5528 5529 6009 6011 6013 6078 6079 6081 6082 6083 6564 6579 6649 5535 5536 5537 6087 6088 6089 6093 6653 6077 6080 6081 6087 6088 6642 6646 6653 6085 6086 6088 6089 6093 6642 6646 6653 5530 5531 5532 5533 5535 5536 5537 6077 6080 6081 6085 6086 6087 6089 6093 6642 6646 6653 6085 6087 6088 6090 6093 6652 6653 6657 6089 6091 6093 6652 6653 6656 6657 6660 6090 6092 6093 6631 6634 6656 6657 6660 6065 6066 6068 6091 6093 6631 6634 6660 5534 5535 5536 5537 6065 6066 6068 6085 6087 6088 6089 6090 6091 6092 6631 6634 6652 6653 6656 6657 6660 5540 5541 5542 6095 6096 6103 6104 6664 6094 6096 6097 6098 6103 6104 6187 6664 5538 5540 5541 5542 5625 5626 5631 5632 6094 6095 6097 6098 6103 6104 6184 6187 6192 6664 5626 6095 6096 6098 6184 6187 6192 6664 6095 6096 6097 6099 6187 6664 6665 6668 6098 6100 6186 6187 6190 6664 6665 6668 6099 6118 6186 6187 6190 6668 6669 6672 5546 5547 5548 6102 6103 6116 6117 6677 6101 6103 6104 6116 6117 6661 6664 6677 5539 5540 5541 5542 5546 5547 5548 6094 6095 6096 6101 6102 6104 6116 6117 6661 6664 6677 6094 6095 6096 6102 6103 6661 6664 6677 5849 5850 5852 6106 6108 6356 6427 6683 6105 6107 6108 6356 6427 6679 6683 6687 6106 6108 6109 6110 6112 6679 6683 6687 5543 5849 5850 5852 6105 6106 6107 6109 6110 6112 6356 6427 6679 6683 6687 5543 5849 5852 6107 6108 6110 6112 6687 6107 6108 6109 6111 6112 6687 6688 6691 6110 6112 6113 6114 6116 6687 6688 6691 5543 5544 5545 5546 5547 5849 5852 6107 6108 6109 6110 6111 6113 6114 6116 6687 6688 6691 5545 5546 5547 6111 6112 6114 6116 6691 6111 6112 6113 6115 6116 6691 6692 6695 6114 6116 6117 6675 6677 6691 6692 6695 5545 5546 5547 5548 6101 6102 6103 6111 6112 6113 6114 6115 6117 6675 6677 6691 6692 6695 6101 6102 6103 6115 6116 6675 6677 6695 6100 6119 6190 6668 6669 6672 6673 6701 6118 6120 6189 6190 6199 6672 6673 6701 6119 6189 6190 6194 6199 6701 6702 6705 5557 5558 5559 6123 6124 6126 6127 6723 5918 5919 5920 6123 6124 6490 6491 6723 5549 5550 5551 5552 5553 5554 5555 5557 5558 5559 5918 5919 5920 6121 6122 6124 6126 6127 6490 6491 6723 6121 6122 6123 6126 6127 6490 6491 6723 5560 5563 5564 6127 6128 6129 6132 6728 6121 6123 6124 6127 6128 6721 6723 6728 5556 5557 5558 5559 5560 5563 5564 6121 6123 6124 6125 6126 6128 6129 6132 6721 6723 6728 6125 6126 6127 6129 6132 6721 6723 6728 6125 6127 6128 6131 6132 6725 6728 6732 5562 5563 5564 6131 6132 6133 6136 6732 6129 6130 6132 6133 6136 6725 6728 6732 5560 5562 5563 5564 6125 6127 6128 6129 6130 6131 6133 6136 6725 6728 6732 6130 6131 6132 6135 6136 6730 6732 6737 5568 5571 5572 6135 6136 6137 6141 6737 6133 6134 6136 6137 6141 6730 6732 6737 5561 5562 5563 5564 5565 5566 5567 5568 5571 5572 6130 6131 6132 6133 6134 6135 6137 6141 6730 6732 6737 6134 6135 6136 6140 6141 6735 6737 6742 5570 5571 5572 6139 6141 6142 6143 6744 6138 6140 6141 6142 6143 6739 6742 6744 6137 6139 6141 6735 6737 6739 6742 6744 5568 5570 5571 5572 6134 6135 6136 6137 6138 6139 6140 6142 6143 6735 6737 6739 6742 6744 6138 6139 6141 6143 6144 6180 6181 6744 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5622 5623 5624 6138 6139 6141 6142 6144 6180 6181 6744 5622 5623 5624 6142 6143 6180 6181 6744 5595 5596 5597 6146 6147 6158 6159 6748 6145 6147 6148 6158 6159 6200 6202 6748 5579 5580 5581 5582 5595 5596 5597 5627 5859 5875 6145 6146 6148 6158 6159 6200 6202 6748 5627 5859 5875 6146 6147 6200 6202 6748 5587 5589 5590 6150 6152 6153 6156 6753 6149 6151 6152 6153 6156 6160 6164 6753 5598 5603 5605 6150 6152 6160 6164 6753 5583 5584 5585 5586 5587 5589 5590 5598 5603 5605 6149 6150 6151 6153 6156 6160 6164 6753 6149 6150 6152 6155 6156 6750 6753 6755 5591 5593 5594 6155 6156 6157 6158 6755 6153 6154 6156 6157 6158 6750 6753 6755 5587 5588 5589 5590 5591 5593 5594 6149 6150 6152 6153 6154 6155 6157 6158 6750 6753 6755 6154 6155 6156 6158 6159 6746 6748 6755 5591 5592 5593 5594 5595 5596 5597 6145 6146 6147 6154 6155 6156 6157 6159 6746 6748 6755 6145 6146 6147 6157 6158 6746 6748 6755 6150 6151 6152 6161 6164 6752 6753 6761 6160 6162 6164 6752 6753 6760 6761 6764 6161 6163 6164 6165 6167 6760 6761 6764 5603 5604 5605 6162 6164 6165 6167 6764 5598 5603 5604 5605 6150 6151 6152 6160 6161 6162 6163 6165 6167 6752 6753 6760 6761 6764 6162 6163 6164 6166 6167 6168 6171 6764 5606 5607 5609 6165 6167 6168 6171 6764 5599 5600 5601 5602 5603 5604 5605 5606 5607 5609 6162 6163 6164 6165 6166 6168 6171 6764 6165 6166 6167 6169 6171 6763 6764 6766 6168 6170 6171 6173 6174 6763 6764 6766 5610 5611 5613 6169 6171 6173 6174 6766 5606 5607 5608 5609 5610 5611 5613 6165 6166 6167 6168 6169 6170 6173 6174 6763 6764 6766 5617 5618 5621 6173 6174 6175 6179 6766 5610 5611 5612 5613 5614 5615 5616 5617 5618 5621 6169 6170 6171 6172 6174 6175 6179 6766 6169 6170 6171 6172 6173 6175 6179 6766 6172 6173 6174 6176 6179 6765 6766 6772 6175 6177 6179 6765 6766 6771 6772 6774 6176 6178 6179 6181 6182 6771 6772 6774 5618 5619 5621 6177 6179 6181 6182 6774 5617 5618 5619 5621 6172 6173 6174 6175 6176 6177 6178 6181 6182 6765 6766 6771 6772 6774 6142 6143 6144 6181 6182 6744 6745 6774 5618 5619 5620 5621 5622 5623 5624 6142 6143 6144 6177 6178 6179 6180 6182 6744 6745 6774 6177 6178 6179 6180 6181 6744 6745 6774 5630 5631 5632 6191 6192 6213 6214 6780 5626 6096 6097 6185 6187 6192 6193 6782 6184 6186 6187 6188 6190 6192 6193 6782 6099 6100 6185 6187 6188 6190 6668 6782 5626 6095 6096 6097 6098 6099 6100 6184 6185 6186 6188 6190 6192 6193 6664 6665 6668 6782 6185 6186 6187 6189 6190 6196 6199 6782 6119 6120 6188 6190 6196 6199 6701 6782 6099 6100 6118 6119 6120 6185 6186 6187 6188 6189 6196 6199 6668 6669 6672 6673 6701 6782 6183 6192 6193 6213 6214 6778 6780 6782 5625 5626 5630 5631 5632 6096 6097 6183 6184 6185 6187 6191 6193 6213 6214 6778 6780 6782 6184 6185 6187 6191 6192 6778 6780 6782 6120 6195 6198 6199 6701 6702 6705 6787 6194 6198 6199 6215 6705 6706 6709 6787 6188 6189 6190 6197 6199 6782 6783 6789 6196 6198 6199 6782 6783 6784 6787 6789 6194 6195 6197 6199 6705 6784 6787 6789 6119 6120 6188 6189 6190 6194 6195 6196 6197 6198 6701 6702 6705 6782 6783 6784 6787 6789 6146 6147 6148 6201 6202 6748 6749 6794 6200 6202 6203 6204 6206 6748 6749 6794 5627 5859 5860 5861 5874 5875 6146 6147 6148 6200 6201 6203 6204 6206 6443 6748 6749 6794 5860 5861 6201 6202 6204 6206 6443 6794 6201 6202 6203 6205 6206 6794 6795 6798 6204 6206 6207 6208 6211 6794 6795 6798 5860 5861 5862 5863 6201 6202 6203 6204 6205 6207 6208 6211 6442 6443 6445 6794 6795 6798 5862 5863 6205 6206 6208 6211 6445 6798 6205 6206 6207 6210 6211 6796 6798 6800 5629 5865 5870 6210 6211 6212 6213 6800 6208 6209 6211 6212 6213 6796 6798 6800 5629 5862 5863 5864 5865 5870 5871 6205 6206 6207 6208 6209 6210 6212 6213 6444 6445 6448 6796 6798 6800 6209 6210 6211 6213 6214 6776 6780 6800 5628 5629 5630 5631 5632 5865 5870 6183 6191 6192 6209 6210 6211 6212 6214 6776 6780 6800 6183 6191 6192 6212 6213 6776 6780 6800 6195 6216 6705 6706 6709 6786 6787 6805 6215 6217 6709 6710 6714 6786 6787 6805 6216 6218 6709 6710 6714 6715 6718 6805 6217 6219 6714 6715 6718 6804 6805 6815 6218 6718 6719 6804 6805 6809 6812 6815 5660 5661 5662 5664 5665 6221 6222 6223 6224 6248 6249 6818 5633 5634 5635 5636 5637 5638 5639 5640 5660 5661 5662 5664 5665 6220 6222 6223 6224 6248 6249 6818 5636 5637 5638 5639 5640 6220 6221 6223 6224 6248 6249 6818 6220 6221 6222 6224 6225 6226 6227 6248 6249 6818 6819 6821 5636 5637 5638 5639 5640 5641 5642 5643 6220 6221 6222 6223 6225 6226 6227 6248 6249 6818 6819 6821 5639 5640 5641 5642 5643 6223 6224 6226 6227 6818 6819 6821 6223 6224 6225 6227 6228 6229 6230 6818 6819 6821 6822 6824 5639 5640 5641 5642 5643 5644 5645 5646 6223 6224 6225 6226 6228 6229 6230 6818 6819 6821 6822 6824 5642 5643 5644 5645 5646 6226 6227 6229 6230 6821 6822 6824 6226 6227 6228 6230 6231 6232 6233 6821 6822 6824 6825 6828 5642 5643 5644 5645 5646 5647 5648 5649 6226 6227 6228 6229 6231 6232 6233 6821 6822 6824 6825 6828 5645 5646 5647 5648 5649 6229 6230 6232 6233 6824 6825 6828 6229 6230 6231 6233 6234 6236 6237 6824 6825 6828 6829 6834 5645 5646 5647 5648 5649 5650 5651 5652 6229 6230 6231 6232 6234 6236 6237 6824 6825 6828 6829 6834 5648 5649 5650 5651 5652 6232 6233 6236 6237 6828 6829 6834 5991 5992 5993 6240 6241 6538 6539 6561 6562 6830 6831 6837 6232 6233 6234 6237 6238 6242 6243 6828 6829 6834 6835 6840 5648 5649 5650 5651 5652 5653 5655 5656 6232 6233 6234 6236 6238 6242 6243 6828 6829 6834 6835 6840 5651 5652 5653 5655 5656 6236 6237 6242 6243 6834 6835 6840 5654 5658 5659 5991 5992 6240 6241 6245 6246 6836 6837 6842 5654 5658 5659 5991 5992 5993 6235 6239 6241 6245 6246 6538 6539 6561 6562 6830 6831 6836 6837 6842 6235 6239 6240 6245 6246 6561 6562 6830 6831 6836 6837 6842 6236 6237 6238 6243 6244 6245 6246 6834 6835 6840 6841 6842 5651 5652 5653 5655 5656 5657 5658 5659 6236 6237 6238 6242 6244 6245 6246 6834 6835 6840 6841 6842 5655 5656 5657 5658 5659 6242 6243 6245 6246 6840 6841 6842 5654 5655 5656 5657 5658 5659 5991 5992 6239 6240 6241 6242 6243 6244 6246 6836 6837 6840 6841 6842 6239 6240 6241 6242 6243 6244 6245 6836 6837 6840 6841 6842 5663 5664 5665 5667 5668 6248 6249 6251 6252 6817 6818 6845 5660 5661 5662 5663 5664 5665 5667 5668 6220 6221 6222 6223 6224 6247 6249 6251 6252 6817 6818 6845 6220 6221 6222 6223 6224 6247 6248 6251 6252 6817 6818 6845 5666 5667 5668 5670 5671 6251 6252 6254 6255 6844 6845 6848 5663 5664 5665 5666 5667 5668 5670 5671 6247 6248 6249 6250 6252 6254 6255 6817 6818 6844 6845 6848 6247 6248 6249 6250 6251 6254 6255 6817 6818 6844 6845 6848 5669 5670 5671 5673 5674 6254 6255 6257 6258 6847 6848 6851 5666 5667 5668 5669 5670 5671 5673 5674 6250 6251 6252 6253 6255 6257 6258 6844 6845 6847 6848 6851 6250 6251 6252 6253 6254 6257 6258 6844 6845 6847 6848 6851 5672 5673 5674 5676 5677 6257 6258 6260 6261 6850 6851 6854 5669 5670 5671 5672 5673 5674 5676 5677 6253 6254 6255 6256 6258 6260 6261 6847 6848 6850 6851 6854 6253 6254 6255 6256 6257 6260 6261 6847 6848 6850 6851 6854 5675 5676 5677 5679 5680 6260 6261 6263 6264 6853 6854 6857 5672 5673 5674 5675 5676 5677 5679 5680 6256 6257 6258 6259 6261 6263 6264 6850 6851 6853 6854 6857 6256 6257 6258 6259 6260 6263 6264 6850 6851 6853 6854 6857 5678 5679 5680 5682 5683 6263 6264 6266 6267 6856 6857 6860 5675 5676 5677 5678 5679 5680 5682 5683 6259 6260 6261 6262 6264 6266 6267 6853 6854 6856 6857 6860 6259 6260 6261 6262 6263 6266 6267 6853 6854 6856 6857 6860 5681 5682 5683 5687 5688 6266 6267 6271 6272 6859 6860 6865 5678 5679 5680 5681 5682 5683 5687 5688 6262 6263 6264 6265 6267 6271 6272 6856 6857 6859 6860 6865 6262 6263 6264 6265 6266 6271 6272 6856 6857 6859 6860 6865 6269 6270 6271 6272 6863 6864 6865 5684 5685 5686 5687 5688 6268 6270 6271 6272 6863 6864 6865 5684 5685 5686 5687 5688 6268 6269 6271 6272 6863 6864 6865 5681 5682 5683 5684 5685 5686 5687 5688 6265 6266 6267 6268 6269 6270 6272 6859 6860 6863 6864 6865 6265 6266 6267 6268 6269 6270 6271 6859 6860 6863 6864 6865 5704 5705 5706 6274 6276 6297 6298 6870 6273 6275 6276 6277 6280 6297 6298 6870 5693 5694 5696 6274 6276 6277 6280 6870 5689 5690 5691 5692 5693 5694 5696 5704 5705 5706 6273 6274 6275 6277 6280 6297 6298 6870 6274 6275 6276 6278 6280 6869 6870 6875 6277 6279 6280 6281 6284 6869 6870 6875 5697 5698 5700 6278 6280 6281 6284 6875 5693 5694 5695 5696 5697 5698 5700 6274 6275 6276 6277 6278 6279 6281 6284 6869 6870 6875 6278 6279 6280 6282 6284 6874 6875 6879 6281 6283 6284 6285 6289 6874 6875 6879 5701 5702 5721 6282 6284 6285 6289 6879 5697 5698 5699 5700 5701 5702 5721 6278 6279 6280 6281 6282 6283 6285 6289 6874 6875 6879 6282 6283 6284 6286 6289 6878 6879 6883 6285 6287 6289 6878 6879 6882 6883 6887 6286 6288 6289 6290 6293 6882 6883 6887 5702 5719 5721 6287 6289 6290 6293 6887 5701 5702 5719 5721 6282 6283 6284 6285 6286 6287 6288 6290 6293 6878 6879 6882 6883 6887 6287 6288 6289 6291 6293 6886 6887 6892 6290 6292 6293 6294 6316 6886 6887 6892 5722 6291 6293 6294 6305 6311 6316 6892 5702 5719 5720 5721 5722 6287 6288 6289 6290 6291 6292 6294 6305 6311 6316 6886 6887 6892 6291 6292 6293 6314 6316 6891 6892 6896 5708 5709 5710 6296 6298 6300 6301 6901 6295 6297 6298 6300 6301 6867 6870 6901 6273 6274 6276 6296 6298 6867 6870 6901 5703 5704 5705 5706 5708 5709 5710 6273 6274 6276 6295 6296 6297 6300 6301 6867 6870 6901 5711 5712 5713 5884 5885 6300 6301 6303 6304 6900 6901 6904 5707 5708 5709 5710 5711 5712 5713 5884 5885 6295 6296 6298 6299 6301 6303 6304 6900 6901 6904 6295 6296 6298 6299 6300 6303 6304 6900 6901 6904 5883 5884 5885 5887 5888 6303 6304 6458 6459 6903 6904 6907 5711 5712 5713 5883 5884 5885 5887 5888 6299 6300 6301 6302 6304 6458 6459 6900 6901 6903 6904 6907 6299 6300 6301 6302 6303 6458 6459 6900 6901 6903 6904 6907 5722 6292 6293 6307 6311 6313 6316 6923 5741 5742 5745 6308 6309 6330 6334 6926 6305 6311 6312 6313 6316 6922 6923 6926 6306 6309 6310 6311 6312 6330 6334 6926 5714 5715 5716 5717 5718 5720 5721 5741 5742 5745 6306 6308 6310 6311 6312 6330 6334 6926 5718 5720 5721 6308 6309 6311 6312 6926 5718 5719 5720 5721 5722 6292 6293 6305 6307 6308 6309 6310 6312 6313 6316 6922 6923 6926 6307 6308 6309 6310 6311 6922 6923 6926 6305 6307 6311 6315 6316 6921 6923 6929 6294 6315 6316 6317 6891 6892 6896 6929 6313 6314 6316 6317 6896 6921 6923 6929 5722 6291 6292 6293 6294 6305 6307 6311 6313 6314 6315 6317 6891 6892 6896 6921 6923 6929 6314 6315 6316 6895 6896 6912 6914 6929 5803 5804 5805 6320 6321 6381 6383 6934 5730 5732 5733 6320 6321 6322 6325 6934 6318 6319 6321 6322 6325 6381 6383 6934 5723 5724 5725 5726 5727 5728 5729 5730 5732 5733 5803 5804 5805 6318 6319 6320 6322 6325 6381 6383 6934 6319 6320 6321 6324 6325 6932 6934 6938 5734 5736 5737 6324 6325 6326 6329 6938 6322 6323 6325 6326 6329 6932 6934 6938 5730 5731 5732 5733 5734 5736 5737 6319 6320 6321 6322 6323 6324 6326 6329 6932 6934 6938 6323 6324 6325 6328 6329 6936 6938 6942 5775 5776 5777 6328 6329 6353 6354 6942 6326 6327 6329 6353 6354 6936 6938 6942 5734 5735 5736 5737 5738 5739 5740 5775 5776 5777 6323 6324 6325 6326 6327 6328 6353 6354 6936 6938 6942 6306 6308 6309 6331 6334 6925 6926 6946 6330 6332 6334 6925 6926 6945 6946 6950 6331 6333 6334 6335 6338 6945 6946 6950 5742 5743 5745 6332 6334 6335 6338 6950 5741 5742 5743 5745 6306 6308 6309 6330 6331 6332 6333 6335 6338 6925 6926 6945 6946 6950 6332 6333 6334 6336 6338 6949 6950 6953 6335 6337 6338 6339 6341 6949 6950 6953 5746 5747 5749 6336 6338 6339 6341 6953 5742 5743 5744 5745 5746 5747 5749 6332 6333 6334 6335 6336 6337 6339 6341 6949 6950 6953 6336 6337 6338 6340 6341 6342 6344 6953 5750 5751 5753 6339 6341 6342 6344 6953 5746 5747 5748 5749 5750 5751 5753 6336 6337 6338 6339 6340 6342 6344 6953 6339 6340 6341 6343 6344 6345 6348 6953 5757 5758 5760 6342 6344 6345 6348 6953 5750 5751 5752 5753 5754 5755 5756 5757 5758 5760 6339 6340 6341 6342 6343 6345 6348 6953 6342 6343 6344 6346 6348 6952 6953 6957 6345 6347 6348 6349 6352 6952 6953 6957 5761 5762 5764 6346 6348 6349 6352 6957 5757 5758 5759 5760 5761 5762 5764 6342 6343 6344 6345 6346 6347 6349 6352 6952 6953 6957 6346 6347 6348 6350 6352 6956 6957 6959 6349 6351 6352 6354 6355 6956 6957 6959 5768 5769 5771 6350 6352 6354 6355 6959 5761 5762 5763 5764 5765 5766 5767 5768 5769 5771 6346 6347 6348 6349 6350 6351 6354 6355 6956 6957 6959 6327 6328 6329 6354 6355 6940 6942 6959 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 6327 6328 6329 6350 6351 6352 6353 6355 6940 6942 6959 6350 6351 6352 6353 6354 6940 6942 6959 6105 6106 6108 6424 6427 6682 6683 6968 5807 5808 5809 6358 6360 6386 6387 6973 6357 6359 6360 6386 6387 6973 6974 6976 6358 6360 6361 6362 6363 6973 6974 6976 5778 5779 5780 5781 5807 5808 5809 6357 6358 6359 6361 6362 6363 6386 6387 6973 6974 6976 5779 5780 5781 6359 6360 6362 6363 6976 6359 6360 6361 6363 6364 6365 6367 6976 5779 5780 5781 5782 5783 5784 5785 6359 6360 6361 6362 6364 6365 6367 6976 5783 5784 5785 6362 6363 6365 6367 6976 6362 6363 6364 6366 6367 6976 6977 6978 6365 6367 6368 6369 6372 6976 6977 6978 5783 5784 5785 5786 5787 5788 5790 6362 6363 6364 6365 6366 6368 6369 6372 6976 6977 6978 5787 5788 5790 6366 6367 6369 6372 6978 6366 6367 6368 6370 6372 6969 6978 6982 6369 6371 6372 6969 6978 6982 6983 6987 6370 6372 6373 6374 6375 6982 6983 6987 5787 5788 5789 5790 6366 6367 6368 6369 6370 6371 6373 6374 6375 6969 6978 6982 6983 6987 5788 5789 5790 6371 6372 6374 6375 6987 6371 6372 6373 6375 6376 6378 6379 6987 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 6371 6372 6373 6374 6376 6378 6379 6987 5795 5796 5797 6374 6375 6378 6379 6987 5799 5801 5802 6378 6379 6380 6383 6987 6374 6375 6376 6377 6379 6380 6383 6987 5795 5796 5797 5798 5799 5801 5802 6374 6375 6376 6377 6378 6380 6383 6987 6377 6378 6379 6382 6383 6984 6987 6990 6318 6320 6321 6382 6383 6931 6934 6990 6380 6381 6383 6931 6934 6984 6987 6990 5799 5800 5801 5802 5803 5804 5805 6318 6320 6321 6377 6378 6379 6380 6381 6382 6931 6934 6984 6987 6990 5829 5830 5831 6385 6386 6402 6403 6996 6384 6386 6387 6388 6402 6403 6973 6996 5806 5807 5808 5809 5829 5830 5831 6357 6358 6360 6384 6385 6387 6388 6402 6403 6973 6996 6357 6358 6360 6385 6386 6388 6973 6996 6385 6386 6387 6971 6973 6996 6997 6998 5832 5833 5839 6391 6392 6404 6407 7002 5814 5816 5817 6391 6392 6393 6394 7002 6389 6390 6392 6393 6394 6404 6407 7002 5810 5811 5812 5813 5814 5816 5817 5832 5833 5839 6389 6390 6391 6393 6394 6404 6407 7002 6390 6391 6392 6394 6395 6396 6398 7002 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 6390 6391 6392 6393 6395 6396 6398 7002 5821 5822 5823 6393 6394 6396 6398 7002 6393 6394 6395 6397 6398 7002 7003 7005 6396 6398 6399 6400 6402 7002 7003 7005 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 6393 6394 6395 6396 6397 6399 6400 6402 7002 7003 7005 5828 5829 5830 6397 6398 6400 6402 7005 6397 6398 6399 6401 6402 7005 7006 7009 6400 6402 6403 6994 6996 7005 7006 7009 5828 5829 5830 5831 6384 6385 6386 6397 6398 6399 6400 6401 6403 6994 6996 7005 7006 7009 6384 6385 6386 6401 6402 6994 6996 7009 6389 6391 6392 6407 6408 7000 7002 7013 5833 5834 5839 6406 6407 6409 6412 7018 6405 6407 6408 6409 6412 7012 7013 7018 5832 5833 5834 5839 6389 6391 6392 6404 6405 6406 6408 6409 6412 7000 7002 7012 7013 7018 6404 6406 6407 7000 7002 7012 7013 7018 6405 6406 6407 6410 6412 7017 7018 7020 6409 6411 6412 6414 6415 7017 7018 7020 5834 5839 5840 6410 6412 6414 6415 7020 5833 5834 5839 5840 6405 6406 6407 6409 6410 6411 6414 6415 7017 7018 7020 5841 5843 5844 6414 6415 6416 6418 7020 5834 5835 5836 5837 5838 5839 5840 5841 5843 5844 6410 6411 6412 6413 6415 6416 6418 7020 6410 6411 6412 6413 6414 6416 6418 7020 6413 6414 6415 6418 6419 7019 7020 7024 5845 5847 5848 6418 6419 6420 6422 7024 5841 5842 5843 5844 5845 5847 5848 6413 6414 6415 6416 6417 6419 6420 6422 7019 7020 7024 6416 6417 6418 6420 6422 7019 7020 7024 6417 6418 6419 6422 6423 7023 7024 7028 5879 5881 5882 6422 6423 6450 6455 7028 5845 5846 5847 5848 5879 5881 5882 6417 6418 6419 6420 6421 6423 6450 6455 7023 7024 7028 6420 6421 6422 6450 6455 7023 7024 7028 6356 6425 6427 6682 6683 6967 6968 7033 6424 6426 6427 6428 6431 6967 6968 7033 5850 5852 5853 6425 6427 6428 6431 7033 5849 5850 5852 5853 6105 6106 6108 6356 6424 6425 6426 6428 6431 6682 6683 6967 6968 7033 6425 6426 6427 6429 6431 7032 7033 7037 6428 6430 6431 6432 6435 7032 7033 7037 5854 5856 5857 6429 6431 6432 6435 7037 5850 5851 5852 5853 5854 5856 5857 6425 6426 6427 6428 6429 6430 6432 6435 7032 7033 7037 6429 6430 6431 6433 6435 7036 7037 7039 6432 6434 6435 6436 6438 7036 7037 7039 5858 5866 5868 6433 6435 6436 6438 7039 5854 5855 5856 5857 5858 5866 5868 6429 6430 6431 6432 6433 6434 6436 6438 7036 7037 7039 6433 6434 6435 6437 6438 7038 7039 7044 6436 6438 6439 6447 6448 7038 7039 7044 5858 5866 5867 5868 6433 6434 6435 6436 6437 6439 6447 6448 7038 7039 7044 5866 5867 5868 6437 6438 6447 6448 7044 5873 5874 5875 6441 6443 6451 6453 7047 6440 6442 6443 6445 6446 6451 6453 7047 5861 5862 6206 6441 6443 6445 6446 7047 5859 5860 5861 5862 5873 5874 5875 6202 6203 6206 6440 6441 6442 6445 6446 6451 6453 7047 5863 5864 6211 6445 6446 6448 6449 7047 5861 5862 5863 5864 6206 6207 6211 6441 6442 6443 6444 6446 6448 6449 7047 6441 6442 6443 6444 6445 6448 6449 7047 6437 6438 6439 6448 6449 7044 7045 7047 5863 5864 5865 5866 5867 5868 5869 5870 5871 6211 6437 6438 6439 6444 6445 6446 6447 6449 7044 7045 7047 6444 6445 6446 6447 6448 7044 7045 7047 6421 6422 6423 6455 6456 7027 7028 7049 6440 6441 6443 6452 6453 7047 7048 7049 6451 6453 6454 6455 6456 7047 7048 7049 5872 5873 5874 5875 5876 5877 5878 5880 5881 5882 6440 6441 6443 6451 6452 6454 6455 6456 7047 7048 7049 5880 5881 5882 6452 6453 6455 6456 7049 5879 5880 5881 5882 6421 6422 6423 6450 6452 6453 6454 6456 7027 7028 7049 6450 6452 6453 6454 6455 7027 7028 7049 5886 5887 5888 5890 5891 6458 6459 6461 6462 6906 6907 7052 5883 5884 5885 5886 5887 5888 5890 5891 6302 6303 6304 6457 6459 6461 6462 6903 6904 6906 6907 7052 6302 6303 6304 6457 6458 6461 6462 6903 6904 6906 6907 7052 5889 5890 5891 5893 5894 6461 6462 6464 6465 7051 7052 7055 5886 5887 5888 5889 5890 5891 5893 5894 6457 6458 6459 6460 6462 6464 6465 6906 6907 7051 7052 7055 6457 6458 6459 6460 6461 6464 6465 6906 6907 7051 7052 7055 5892 5893 5894 5896 5897 6464 6465 6467 6468 7054 7055 7058 5889 5890 5891 5892 5893 5894 5896 5897 6460 6461 6462 6463 6465 6467 6468 7051 7052 7054 7055 7058 6460 6461 6462 6463 6464 6467 6468 7051 7052 7054 7055 7058 5895 5896 5897 5899 5900 6467 6468 6470 6471 7057 7058 7061 5892 5893 5894 5895 5896 5897 5899 5900 6463 6464 6465 6466 6468 6470 6471 7054 7055 7057 7058 7061 6463 6464 6465 6466 6467 6470 6471 7054 7055 7057 7058 7061 5898 5899 5900 5902 5903 6470 6471 6473 6474 7060 7061 7064 5895 5896 5897 5898 5899 5900 5902 5903 6466 6467 6468 6469 6471 6473 6474 7057 7058 7060 7061 7064 6466 6467 6468 6469 6470 6473 6474 7057 7058 7060 7061 7064 5901 5902 5903 5905 5906 6473 6474 6476 6477 7063 7064 7067 5898 5899 5900 5901 5902 5903 5905 5906 6469 6470 6471 6472 6474 6476 6477 7060 7061 7063 7064 7067 6469 6470 6471 6472 6473 6476 6477 7060 7061 7063 7064 7067 5904 5905 5906 5908 5909 6476 6477 6479 6480 7066 7067 7070 5901 5902 5903 5904 5905 5906 5908 5909 6472 6473 6474 6475 6477 6479 6480 7063 7064 7066 7067 7070 6472 6473 6474 6475 6476 6479 6480 7063 7064 7066 7067 7070 5907 5908 5909 5911 5912 6479 6480 6482 6483 7069 7070 7073 5904 5905 5906 5907 5908 5909 5911 5912 6475 6476 6477 6478 6480 6482 6483 7066 7067 7069 7070 7073 6475 6476 6477 6478 6479 6482 6483 7066 7067 7069 7070 7073 5910 5911 5912 5916 5917 6482 6483 6487 6488 7072 7073 7078 5907 5908 5909 5910 5911 5912 5916 5917 6478 6479 6480 6481 6483 6487 6488 7069 7070 7072 7073 7078 6478 6479 6480 6481 6482 6487 6488 7069 7070 7072 7073 7078 6485 6486 6487 6488 7076 7077 7078 5913 5914 5915 5916 5917 6484 6486 6487 6488 7076 7077 7078 5913 5914 5915 5916 5917 6484 6485 6487 6488 7076 7077 7078 5910 5911 5912 5913 5914 5915 5916 5917 6481 6482 6483 6484 6485 6486 6488 7072 7073 7076 7077 7078 6481 6482 6483 6484 6485 6486 6487 7072 7073 7076 7077 7078 6490 6491 6722 6723 7082 5918 5919 5920 6122 6123 6124 6489 6491 6722 6723 7082 6122 6123 6124 6489 6490 6722 6723 7082 5926 5927 5928 6493 6494 6501 6503 7086 5921 5922 5923 5926 5927 5928 6492 6494 6501 6503 7086 6492 6493 6501 6503 7086 5964 6496 6499 6526 6527 6534 6536 7091 6495 6498 6499 6534 6536 7089 7091 7095 5925 5954 5955 6498 6499 6500 6503 7095 6496 6497 6499 6500 6503 7089 7091 7095 5925 5953 5954 5955 5964 6495 6496 6497 6498 6500 6503 6526 6527 6534 6536 7089 7091 7095 6497 6498 6499 6502 6503 7093 7095 7097 6492 6493 6494 6502 6503 7084 7086 7097 6500 6501 6503 7084 7086 7093 7095 7097 5924 5925 5926 5927 5928 5954 5955 6492 6493 6494 6497 6498 6499 6500 6501 6502 7084 7086 7093 7095 7097 5934 5935 5936 6505 6507 6510 6511 7102 6504 6506 6507 6510 6511 6565 6568 7102 5994 5995 5997 6505 6507 6565 6568 7102 5929 5930 5931 5932 5934 5935 5936 5994 5995 5997 6504 6505 6506 6510 6511 6565 6568 7102 5938 5939 5940 6509 6511 6512 6513 7104 6508 6510 6511 6512 6513 7099 7102 7104 6504 6505 6507 6509 6511 7099 7102 7104 5933 5934 5935 5936 5938 5939 5940 6504 6505 6507 6508 6509 6510 6512 6513 7099 7102 7104 6508 6509 6511 6513 6514 6515 6518 7104 5937 5938 5939 5940 5941 5942 5943 5944 5945 5947 6508 6509 6511 6512 6514 6515 6518 7104 5944 5945 5947 6512 6513 6515 6518 7104 6512 6513 6514 6516 6518 7104 7105 7110 6515 6517 6518 7104 7105 7110 7111 7115 6516 6518 6519 6520 6522 7110 7111 7115 5944 5945 5946 5947 6512 6513 6514 6515 6516 6517 6519 6520 6522 7104 7105 7110 7111 7115 5945 5946 5947 6517 6518 6520 6522 7115 6517 6518 6519 6521 6522 7115 7116 7120 6520 6522 6523 6531 6532 7115 7116 7120 5945 5946 5947 5948 5958 5959 5960 6517 6518 6519 6520 6521 6523 6531 6532 7115 7116 7120 5958 5959 5960 6521 6522 6531 6532 7120 5956 5957 5962 6525 6526 6528 6530 7123 6524 6526 6527 6528 6530 6535 6536 7123 5949 5950 5951 5952 5953 5954 5955 5956 5957 5962 5964 6495 6499 6524 6525 6527 6528 6530 6535 6536 7123 5964 6495 6499 6525 6526 6535 6536 7123 6524 6525 6526 6529 6530 6532 6533 7123 5957 5962 5963 6528 6530 6532 6533 7123 5956 5957 5962 5963 6524 6525 6526 6528 6529 6532 6533 7123 6521 6522 6523 6532 6533 7120 7121 7123 5957 5958 5959 5960 5961 5962 5963 6521 6522 6523 6528 6529 6530 6531 6533 7120 7121 7123 6528 6529 6530 6531 6532 7120 7121 7123 6495 6496 6499 6536 6537 7088 7091 7125 6525 6526 6527 6536 6537 7123 7124 7125 5964 6495 6496 6499 6525 6526 6527 6534 6535 6537 7088 7091 7123 7124 7125 6534 6535 6536 7088 7091 7123 7124 7125 5991 5992 5993 6235 6240 6539 6540 6541 6542 6562 6563 7128 5965 5966 5967 5968 5969 5970 5974 5975 5991 5992 5993 6235 6240 6538 6540 6541 6542 6562 6563 7128 5968 5969 5970 5974 5975 6538 6539 6541 6542 6562 6563 7128 6538 6539 6540 6542 6543 6547 6548 6562 6563 7128 7129 7131 5968 5969 5970 5974 5975 5976 6538 6539 6540 6541 6543 6544 6545 6547 6548 6562 6563 7128 7129 7131 5974 5975 5976 6541 6542 6544 6545 6547 6548 7128 7129 7131 5974 5975 5976 6542 6543 6545 6546 6548 6549 6550 6552 7138 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5982 6542 6543 6544 6546 6548 6549 6550 6552 7138 5977 5978 5979 5980 5982 6544 6545 6548 6549 6550 6552 7138 6541 6542 6543 6548 6549 7128 7129 7131 7132 7135 7136 7138 5974 5975 5976 6541 6542 6543 6544 6545 6546 6547 6549 6550 6552 7128 7129 7131 7132 7135 7136 7138 6544 6545 6546 6547 6548 6550 6552 7131 7132 7135 7136 7138 6544 6545 6546 6548 6549 6551 6552 7138 7139 7143 6550 6552 6553 6555 6557 7138 7139 7143 5977 5978 5979 5980 5981 5982 6544 6545 6546 6548 6549 6550 6551 6553 6555 6557 7138 7139 7143 5980 5981 5982 6551 6552 6555 6557 7143 6041 6042 6043 6559 6560 6604 6605 7145 6551 6552 6553 6556 6557 7143 7144 7145 6555 6557 6558 6559 6560 7143 7144 7145 5980 5981 5982 5983 5985 5986 5987 6551 6552 6553 6555 6556 6558 6559 6560 7143 7144 7145 5985 5986 5987 6556 6557 6559 6560 7145 5984 5985 5986 5987 5988 5989 5990 6041 6042 6043 6554 6556 6557 6558 6560 6604 6605 7145 6554 6556 6557 6558 6559 6604 6605 7145 6235 6240 6241 6562 6563 6826 6830 6831 6837 7127 7128 7148 5991 5992 5993 6235 6240 6241 6538 6539 6540 6541 6542 6561 6563 6826 6830 6831 6837 7127 7128 7148 6538 6539 6540 6541 6542 6561 6562 6826 6831 7127 7128 7148 6082 6083 6084 6577 6579 6647 6649 7153 6505 6506 6507 6566 6568 7101 7102 7158 6565 6567 6568 6569 6572 7101 7102 7158 5998 5999 6001 6566 6568 6569 6572 7158 5994 5995 5996 5997 5998 5999 6001 6505 6506 6507 6565 6566 6567 6569 6572 7101 7102 7158 6566 6567 6568 6570 6572 7157 7158 7160 6569 6571 6572 6573 6576 7157 7158 7160 6002 6003 6005 6570 6572 6573 6576 7160 5998 5999 6000 6001 6002 6003 6005 6566 6567 6568 6569 6570 6571 6573 6576 7157 7158 7160 6570 6571 6572 6574 6576 7159 7160 7163 6573 6575 6576 6581 6582 7159 7160 7163 6010 6015 6016 6574 6576 6581 6582 7163 6002 6003 6004 6005 6006 6007 6008 6010 6015 6016 6570 6571 6572 6573 6574 6575 6581 6582 7159 7160 7163 6564 6578 6579 6647 6649 7153 7154 7163 6577 6579 6580 6581 6582 7153 7154 7163 6009 6011 6012 6013 6082 6083 6084 6564 6577 6578 6580 6581 6582 6647 6649 7153 7154 7163 6011 6012 6013 6578 6579 6581 6582 7163 6010 6011 6012 6013 6014 6015 6016 6574 6575 6576 6578 6579 6580 6582 7163 6574 6575 6576 6578 6579 6580 6581 7163 6052 6584 6586 6613 6614 6617 6618 7168 6583 6585 6586 6587 6590 6617 6618 7168 6024 6025 6028 6584 6586 6587 6590 7168 6017 6018 6019 6020 6021 6022 6023 6024 6025 6028 6049 6050 6051 6052 6583 6584 6585 6587 6590 6613 6614 6617 6618 7168 6584 6585 6586 6588 6590 7167 7168 7171 6587 6589 6590 6592 6593 7167 7168 7171 6025 6026 6028 6588 6590 6592 6593 7171 6024 6025 6026 6028 6584 6585 6586 6587 6588 6589 6592 6593 7167 7168 7171 6032 6033 6036 6592 6593 6595 6599 7171 6025 6026 6027 6028 6029 6030 6031 6032 6033 6036 6588 6589 6590 6591 6593 6595 6599 7171 6588 6589 6590 6591 6592 6595 6599 7171 6595 6596 6599 7170 7171 7175 7176 7181 6591 6592 6593 6594 6596 6599 7171 7181 6594 6595 6597 6599 7171 7180 7181 7183 6596 6598 6599 6601 6602 7180 7181 7183 6033 6034 6036 6597 6599 6601 6602 7183 6032 6033 6034 6036 6591 6592 6593 6594 6595 6596 6597 6598 6601 6602 7171 7180 7181 7183 6040 6042 6043 6601 6602 6603 6605 7183 6033 6034 6035 6036 6037 6038 6039 6040 6042 6043 6597 6598 6599 6600 6602 6603 6605 7183 6597 6598 6599 6600 6601 6603 6605 7183 6600 6601 6602 6605 6606 7182 7183 7187 6554 6559 6560 6605 6606 7140 7145 7187 6040 6041 6042 6043 6554 6559 6560 6600 6601 6602 6603 6604 6606 7140 7145 7182 7183 7187 6603 6604 6605 7140 7145 7182 7183 7187 6062 6063 6064 6608 6610 6629 6630 7192 6607 6609 6610 6611 6614 6629 6630 7192 6048 6049 6051 6608 6610 6611 6614 7192 6044 6045 6046 6047 6048 6049 6051 6062 6063 6064 6607 6608 6609 6611 6614 6629 6630 7192 6608 6609 6610 6612 6614 7191 7192 7196 6611 6613 6614 6615 6618 7191 7192 7196 6052 6583 6586 6612 6614 6615 6618 7196 6048 6049 6050 6051 6052 6583 6586 6608 6609 6610 6611 6612 6613 6615 6618 7191 7192 7196 6612 6613 6614 6616 6618 7195 7196 7200 6615 6617 6618 7165 7168 7195 7196 7200 6583 6584 6586 6616 6618 7165 7168 7200 6052 6583 6584 6586 6612 6613 6614 6615 6616 6617 7165 7168 7195 7196 7200 6074 6075 6076 6620 6622 6640 6641 7204 6619 6621 6622 6623 6626 6640 6641 7204 6057 6058 6060 6620 6622 6623 6626 7204 6053 6054 6055 6056 6057 6058 6060 6074 6075 6076 6619 6620 6621 6623 6626 6640 6641 7204 6620 6621 6622 6624 6626 7203 7204 7208 6623 6625 6626 6627 6630 7203 7204 7208 6061 6062 6064 6624 6626 6627 6630 7208 6057 6058 6059 6060 6061 6062 6064 6620 6621 6622 6623 6624 6625 6627 6630 7203 7204 7208 6624 6625 6626 6628 6630 7207 7208 7212 6627 6629 6630 7189 7192 7207 7208 7212 6607 6608 6610 6628 6630 7189 7192 7212 6061 6062 6063 6064 6607 6608 6610 6624 6625 6626 6627 6628 6629 7189 7192 7207 7208 7212 6091 6092 6093 6632 6634 6659 6660 7216 6631 6633 6634 6635 6638 6659 6660 7216 6069 6070 6072 6632 6634 6635 6638 7216 6065 6066 6067 6068 6069 6070 6072 6091 6092 6093 6631 6632 6633 6635 6638 6659 6660 7216 6632 6633 6634 6636 6638 7215 7216 7220 6635 6637 6638 6639 6641 7215 7216 7220 6073 6074 6076 6636 6638 6639 6641 7220 6069 6070 6071 6072 6073 6074 6076 6632 6633 6634 6635 6636 6637 6639 6641 7215 7216 7220 6636 6637 6638 6640 6641 7201 7204 7220 6619 6620 6622 6639 6641 7201 7204 7220 6073 6074 6075 6076 6619 6620 6622 6636 6637 6638 6639 6640 7201 7204 7220 6086 6087 6088 6645 6646 6650 6653 7224 6079 6080 6081 6644 6646 6648 6649 7227 6643 6645 6646 6648 6649 7221 7224 7227 6642 6644 6646 6650 6653 7221 7224 7227 6077 6079 6080 6081 6086 6087 6088 6642 6643 6644 6645 6648 6649 6650 6653 7221 7224 7227 6564 6577 6579 6648 6649 7150 7153 7227 6643 6644 6646 6647 6649 7150 7153 7227 6078 6079 6080 6081 6082 6083 6084 6564 6577 6579 6643 6644 6646 6647 6648 7150 7153 7227 6642 6645 6646 6651 6653 7223 7224 7231 6650 6652 6653 6654 6657 7223 7224 7231 6089 6090 6093 6651 6653 6654 6657 7231 6085 6086 6087 6088 6089 6090 6093 6642 6645 6646 6650 6651 6652 6654 6657 7223 7224 7231 6651 6652 6653 6655 6657 7230 7231 7235 6654 6656 6657 6658 6660 7230 7231 7235 6090 6091 6093 6655 6657 6658 6660 7235 6089 6090 6091 6093 6651 6652 6653 6654 6655 6656 6658 6660 7230 7231 7235 6655 6656 6657 6659 6660 7213 7216 7235 6631 6632 6634 6658 6660 7213 7216 7235 6090 6091 6092 6093 6631 6632 6634 6655 6656 6657 6658 6659 7213 7216 7235 6102 6103 6104 6662 6664 6677 6678 7238 6661 6663 6664 6677 6678 7238 7239 7242 6662 6664 6665 6666 6668 7238 7239 7242 6094 6095 6096 6097 6098 6099 6102 6103 6104 6187 6661 6662 6663 6665 6666 6668 6677 6678 7238 7239 7242 6098 6099 6187 6663 6664 6666 6668 7242 6663 6664 6665 6667 6668 7242 7243 7246 6666 6668 6669 6670 6672 7242 7243 7246 6098 6099 6100 6118 6186 6187 6190 6663 6664 6665 6666 6667 6669 6670 6672 7242 7243 7246 6100 6118 6190 6667 6668 6670 6672 7246 6667 6668 6669 6671 6672 7246 7247 7250 6670 6672 6673 6674 6701 7246 7247 7250 6100 6118 6119 6190 6667 6668 6669 6670 6671 6673 6674 6701 7246 7247 7250 6118 6119 6190 6671 6672 6674 6701 7250 6671 6672 6673 6699 6701 7250 7251 7254 6115 6116 6117 6676 6677 6695 6696 7258 6675 6677 6678 6695 6696 7236 7238 7258 6101 6102 6103 6104 6115 6116 6117 6661 6662 6664 6675 6676 6678 6695 6696 7236 7238 7258 6661 6662 6664 6676 6677 7236 7238 7258 6106 6107 6108 6683 6684 6685 6687 7265 6681 6697 6964 6965 6968 7262 7263 7265 6680 6682 6683 6684 6964 6965 6968 7265 6356 6424 6427 6681 6683 6684 6968 7265 6105 6106 6107 6108 6356 6424 6427 6679 6681 6682 6684 6685 6687 6968 7265 6679 6681 6682 6683 6685 6687 6968 7265 6679 6683 6684 6686 6687 7265 7266 7269 6685 6687 6688 6689 6691 7265 7266 7269 6106 6107 6108 6109 6110 6111 6112 6679 6683 6684 6685 6686 6688 6689 6691 7265 7266 7269 6110 6111 6112 6686 6687 6689 6691 7269 6686 6687 6688 6690 6691 7269 7270 7272 6689 6691 6692 6693 6695 7269 7270 7272 6110 6111 6112 6113 6114 6115 6116 6686 6687 6688 6689 6690 6692 6693 6695 7269 7270 7272 6114 6115 6116 6690 6691 6693 6695 7272 6690 6691 6692 6694 6695 7272 7273 7276 6693 6695 6696 7256 7258 7272 7273 7276 6114 6115 6116 6117 6675 6676 6677 6690 6691 6692 6693 6694 6696 7256 7258 7272 7273 7276 6675 6676 6677 6694 6695 7256 7258 7276 6680 6698 6961 6965 7262 7263 7265 7280 6697 6961 6965 7260 7262 7278 7280 7285 6674 6700 6701 7250 7251 7254 7255 7289 6699 6701 6702 6703 6705 7254 7255 7289 6118 6119 6120 6189 6190 6194 6199 6671 6672 6673 6674 6699 6700 6702 6703 6705 7250 7251 7254 7255 7289 6120 6194 6199 6700 6701 6703 6705 7289 6700 6701 6702 6704 6705 7289 7290 7294 6703 6705 6706 6707 6709 7289 7290 7294 6120 6194 6195 6198 6199 6215 6700 6701 6702 6703 6704 6706 6707 6709 6787 7289 7290 7294 6195 6215 6704 6705 6707 6709 6787 7294 6704 6705 6706 6708 6709 7294 7295 7298 6707 6709 6710 6711 6714 7294 7295 7298 6195 6215 6216 6217 6704 6705 6706 6707 6708 6710 6711 6714 6786 6787 6805 7294 7295 7298 6216 6217 6708 6709 6711 6714 6805 7298 6708 6709 6710 6712 6714 7298 7299 7302 6711 6713 6714 7298 7299 7302 7303 7306 6712 6714 6715 6716 6718 7302 7303 7306 6216 6217 6218 6708 6709 6710 6711 6712 6713 6715 6716 6718 6805 7298 7299 7302 7303 7306 6217 6218 6713 6714 6716 6718 6805 7306 6713 6714 6715 6717 6718 7306 7307 7310 6716 6718 6719 6720 6812 7306 7307 7310 6217 6218 6219 6713 6714 6715 6716 6717 6719 6720 6804 6805 6809 6812 6815 7306 7307 7310 6219 6717 6718 6720 6809 6812 6815 7310 6717 6718 6719 6806 6812 7310 7311 7314 6126 6127 6128 6723 6724 6727 6728 7323 6489 6490 6491 6723 6724 7082 7083 7323 6121 6122 6123 6124 6126 6127 6128 6489 6490 6491 6721 6722 6724 6727 6728 7082 7083 7323 6721 6722 6723 6727 6728 7082 7083 7323 6129 6131 6132 6726 6728 6731 6732 7327 6725 6728 6729 6731 6732 7325 7327 7331 6721 6723 6724 6728 6729 7323 7324 7331 6125 6126 6127 6128 6129 6131 6132 6721 6723 6724 6725 6726 6727 6729 6731 6732 7323 7324 7325 7327 7331 6726 6727 6728 7323 7324 7325 7327 7331 6133 6135 6136 6732 6733 6734 6737 7335 6725 6726 6728 6732 6733 7327 7328 7335 6129 6130 6131 6132 6133 6135 6136 6725 6726 6728 6730 6731 6733 6734 6737 7327 7328 7335 6730 6731 6732 6734 6737 7327 7328 7335 6730 6732 6733 6736 6737 7335 7336 7340 6137 6140 6141 6736 6737 6738 6742 7340 6734 6735 6737 6738 6742 7335 7336 7340 6133 6134 6135 6136 6137 6140 6141 6730 6732 6733 6734 6735 6736 6738 6742 7335 7336 7340 6735 6736 6737 6741 6742 7338 7340 7344 6139 6140 6141 6740 6742 6743 6744 7347 6739 6741 6742 6743 6744 7342 7344 7347 6738 6740 6742 7338 7340 7342 7344 7347 6137 6139 6140 6141 6735 6736 6737 6738 6739 6740 6741 6743 6744 7338 7340 7342 7344 7347 6739 6740 6742 6744 6745 6773 6774 7347 6138 6139 6140 6141 6142 6143 6144 6180 6181 6182 6739 6740 6742 6743 6745 6773 6774 7347 6180 6181 6182 6743 6744 6773 6774 7347 6157 6158 6159 6747 6748 6755 6756 7352 6746 6748 6749 6755 6756 6791 6794 7352 6145 6146 6147 6148 6157 6158 6159 6200 6201 6202 6746 6747 6749 6755 6756 6791 6794 7352 6200 6201 6202 6747 6748 6791 6794 7352 6153 6155 6156 6751 6753 6754 6755 7355 6750 6752 6753 6754 6755 6757 6761 7355 6160 6161 6164 6751 6753 6757 6761 7355 6149 6150 6151 6152 6153 6155 6156 6160 6161 6164 6750 6751 6752 6754 6755 6757 6761 7355 6750 6751 6753 6755 6756 7351 7352 7355 6153 6154 6155 6156 6157 6158 6159 6746 6747 6748 6750 6751 6753 6754 6756 7351 7352 7355 6746 6747 6748 6754 6755 7351 7352 7355 6751 6752 6753 6758 6761 7354 7355 7359 6757 6759 6761 7354 7355 7358 7359 7362 6758 6760 6761 6762 6764 7358 7359 7362 6161 6162 6164 6759 6761 6762 6764 7362 6160 6161 6162 6164 6751 6752 6753 6757 6758 6759 6760 6762 6764 7354 7355 7358 7359 7362 6759 6760 6761 6763 6764 6766 6767 7362 6168 6169 6171 6762 6764 6766 6767 7362 6161 6162 6163 6164 6165 6166 6167 6168 6169 6171 6759 6760 6761 6762 6763 6766 6767 7362 6175 6176 6179 6766 6767 6768 6772 7362 6168 6169 6170 6171 6172 6173 6174 6175 6176 6179 6762 6763 6764 6765 6767 6768 6772 7362 6762 6763 6764 6765 6766 6768 6772 7362 6765 6766 6767 6769 6772 7361 7362 7366 6768 6770 6772 7361 7362 7365 7366 7368 6769 6771 6772 6774 6775 7365 7366 7368 6176 6177 6179 6770 6772 6774 6775 7368 6175 6176 6177 6179 6765 6766 6767 6768 6769 6770 6771 6774 6775 7361 7362 7365 7366 7368 6743 6744 6745 6774 6775 7347 7348 7368 6176 6177 6178 6179 6180 6181 6182 6743 6744 6745 6770 6771 6772 6773 6775 7347 7348 7368 6770 6771 6772 6773 6774 7347 7348 7368 6212 6213 6214 6777 6780 6800 6801 7373 6776 6779 6780 6800 6801 7371 7373 7377 6191 6192 6193 6779 6780 6781 6782 7377 6777 6778 6780 6781 6782 7371 7373 7377 6183 6191 6192 6193 6212 6213 6214 6776 6777 6778 6779 6781 6782 6800 6801 7371 7373 7377 6778 6779 6780 6782 6783 6788 6789 7377 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6196 6197 6199 6778 6779 6780 6781 6783 6788 6789 7377 6196 6197 6199 6781 6782 6788 6789 7377 6197 6198 6199 6785 6787 6789 6790 7379 6784 6786 6787 6789 6790 6802 6805 7379 6215 6216 6709 6785 6787 6802 6805 7379 6194 6195 6197 6198 6199 6215 6216 6705 6706 6709 6784 6785 6786 6789 6790 6802 6805 7379 6781 6782 6783 6789 6790 7375 7377 7379 6196 6197 6198 6199 6781 6782 6783 6784 6785 6787 6788 6790 7375 7377 7379 6784 6785 6787 6788 6789 7375 7377 7379 6747 6748 6749 6792 6794 7349 7352 7383 6791 6793 6794 7349 7352 7381 7383 7387 6792 6794 6795 6797 6798 7381 7383 7387 6200 6201 6202 6203 6204 6205 6206 6747 6748 6749 6791 6792 6793 6795 6797 6798 7349 7352 7381 7383 7387 6204 6205 6206 6793 6794 6797 6798 7387 6208 6210 6211 6797 6798 6799 6800 7387 6793 6794 6795 6796 6798 6799 6800 7387 6204 6205 6206 6207 6208 6210 6211 6793 6794 6795 6796 6797 6799 6800 7387 6796 6797 6798 6800 6801 7370 7373 7387 6208 6209 6210 6211 6212 6213 6214 6776 6777 6780 6796 6797 6798 6799 6801 7370 7373 7387 6776 6777 6780 6799 6800 7370 7373 7387 6785 6786 6787 6803 6805 7379 7380 7391 6802 6804 6805 6813 6815 7379 7380 7391 6218 6219 6718 6803 6805 6813 6815 7391 6215 6216 6217 6218 6219 6709 6710 6714 6715 6718 6785 6786 6787 6802 6803 6804 6813 6815 7379 7380 7391 6720 6807 6811 6812 7310 7311 7314 7401 6806 6808 6811 6812 7314 7315 7318 7401 6807 6816 7314 7315 7318 7319 7396 7401 6219 6718 6719 6810 6812 6814 6815 7404 6809 6811 6812 6814 6815 7398 7401 7404 6806 6807 6810 6812 7314 7398 7401 7404 6219 6717 6718 6719 6720 6806 6807 6809 6810 6811 6814 6815 7310 7311 7314 7398 7401 7404 6803 6804 6805 6814 6815 7389 7391 7404 6809 6810 6812 6813 6815 7389 7391 7404 6218 6219 6718 6719 6803 6804 6805 6809 6810 6812 6813 6814 7389 7391 7404 6808 7318 7319 7394 7396 7400 7401 7408 6247 6248 6249 6251 6252 6818 6819 6820 6821 6845 6846 7410 6220 6221 6222 6223 6224 6225 6226 6227 6247 6248 6249 6251 6252 6817 6819 6820 6821 6845 6846 7410 6223 6224 6225 6226 6227 6817 6818 6820 6821 6845 6846 7410 6817 6818 6819 6821 6822 6823 6824 6845 6846 7410 7411 7414 6223 6224 6225 6226 6227 6228 6229 6230 6817 6818 6819 6820 6822 6823 6824 6845 6846 7410 7411 7414 6226 6227 6228 6229 6230 6820 6821 6823 6824 7410 7411 7414 6820 6821 6822 6824 6825 6827 6828 7410 7411 7414 7415 7420 6226 6227 6228 6229 6230 6231 6232 6233 6820 6821 6822 6823 6825 6827 6828 7410 7411 7414 7415 7420 6229 6230 6231 6232 6233 6823 6824 6827 6828 7414 7415 7420 6561 6562 6563 6831 6832 7127 7128 7147 7148 7416 7417 7423 6823 6824 6825 6828 6829 6833 6834 7414 7415 7420 7421 7426 6229 6230 6231 6232 6233 6234 6236 6237 6823 6824 6825 6827 6829 6833 6834 7414 7415 7420 7421 7426 6232 6233 6234 6236 6237 6827 6828 6833 6834 7420 7421 7426 6235 6240 6241 6561 6562 6831 6832 6837 6838 7422 7423 7429 6235 6240 6241 6561 6562 6563 6826 6830 6832 6837 6838 7127 7128 7147 7148 7416 7417 7422 7423 7429 6826 6830 6831 6837 6838 7147 7148 7416 7417 7422 7423 7429 6827 6828 6829 6834 6835 6839 6840 7420 7421 7426 7427 7432 6232 6233 6234 6236 6237 6238 6242 6243 6827 6828 6829 6833 6835 6839 6840 7420 7421 7426 7427 7432 6236 6237 6238 6242 6243 6833 6834 6839 6840 7426 7427 7432 6239 6240 6241 6245 6246 6837 6838 6842 6843 7428 7429 7434 6235 6239 6240 6241 6245 6246 6561 6562 6830 6831 6832 6836 6838 6842 6843 7422 7423 7428 7429 7434 6830 6831 6832 6836 6837 6842 6843 7422 7423 7428 7429 7434 6833 6834 6835 6840 6841 6842 6843 7426 7427 7432 7433 7434 6236 6237 6238 6242 6243 6244 6245 6246 6833 6834 6835 6839 6841 6842 6843 7426 7427 7432 7433 7434 6242 6243 6244 6245 6246 6839 6840 6842 6843 7432 7433 7434 6239 6240 6241 6242 6243 6244 6245 6246 6836 6837 6838 6839 6840 6841 6843 7428 7429 7432 7433 7434 6836 6837 6838 6839 6840 6841 6842 7428 7429 7432 7433 7434 6250 6251 6252 6254 6255 6845 6846 6848 6849 7409 7410 7437 6247 6248 6249 6250 6251 6252 6254 6255 6817 6818 6819 6820 6821 6844 6846 6848 6849 7409 7410 7437 6817 6818 6819 6820 6821 6844 6845 6848 6849 7409 7410 7437 6253 6254 6255 6257 6258 6848 6849 6851 6852 7436 7437 7440 6250 6251 6252 6253 6254 6255 6257 6258 6844 6845 6846 6847 6849 6851 6852 7409 7410 7436 7437 7440 6844 6845 6846 6847 6848 6851 6852 7409 7410 7436 7437 7440 6256 6257 6258 6260 6261 6851 6852 6854 6855 7439 7440 7443 6253 6254 6255 6256 6257 6258 6260 6261 6847 6848 6849 6850 6852 6854 6855 7436 7437 7439 7440 7443 6847 6848 6849 6850 6851 6854 6855 7436 7437 7439 7440 7443 6259 6260 6261 6263 6264 6854 6855 6857 6858 7442 7443 7446 6256 6257 6258 6259 6260 6261 6263 6264 6850 6851 6852 6853 6855 6857 6858 7439 7440 7442 7443 7446 6850 6851 6852 6853 6854 6857 6858 7439 7440 7442 7443 7446 6262 6263 6264 6266 6267 6857 6858 6860 6861 7445 7446 7449 6259 6260 6261 6262 6263 6264 6266 6267 6853 6854 6855 6856 6858 6860 6861 7442 7443 7445 7446 7449 6853 6854 6855 6856 6857 6860 6861 7442 7443 7445 7446 7449 6265 6266 6267 6271 6272 6860 6861 6865 6866 7448 7449 7454 6262 6263 6264 6265 6266 6267 6271 6272 6856 6857 6858 6859 6861 6865 6866 7445 7446 7448 7449 7454 6856 6857 6858 6859 6860 6865 6866 7445 7446 7448 7449 7454 6863 6864 6865 6866 7452 7453 7454 6268 6269 6270 6271 6272 6862 6864 6865 6866 7452 7453 7454 6268 6269 6270 6271 6272 6862 6863 6865 6866 7452 7453 7454 6265 6266 6267 6268 6269 6270 6271 6272 6859 6860 6861 6862 6863 6864 6866 7448 7449 7452 7453 7454 6859 6860 6861 6862 6863 6864 6865 7448 7449 7452 7453 7454 6296 6297 6298 6868 6870 6901 6902 7457 6867 6869 6870 6871 6875 6901 6902 7457 6277 6278 6280 6868 6870 6871 6875 7457 6273 6274 6275 6276 6277 6278 6280 6296 6297 6298 6867 6868 6869 6871 6875 6901 6902 7457 6868 6869 6870 6872 6875 7457 7458 7460 6871 6873 6875 7457 7458 7460 7461 7463 6872 6874 6875 6876 6879 7460 7461 7463 6281 6282 6284 6873 6875 6876 6879 7463 6277 6278 6279 6280 6281 6282 6284 6868 6869 6870 6871 6872 6873 6874 6876 6879 7457 7458 7460 7461 7463 6873 6874 6875 6877 6879 7463 7464 7466 6876 6878 6879 6880 6883 7463 7464 7466 6285 6286 6289 6877 6879 6880 6883 7466 6281 6282 6283 6284 6285 6286 6289 6873 6874 6875 6876 6877 6878 6880 6883 7463 7464 7466 6877 6878 6879 6881 6883 7466 7467 7469 6880 6882 6883 6884 6887 7466 7467 7469 6286 6287 6289 6881 6883 6884 6887 7469 6285 6286 6287 6289 6877 6878 6879 6880 6881 6882 6884 6887 7466 7467 7469 6881 6882 6883 6885 6887 7469 7470 7472 6884 6886 6887 6888 6892 7469 7470 7472 6290 6291 6293 6885 6887 6888 6892 7472 6286 6287 6288 6289 6290 6291 6293 6881 6882 6883 6884 6885 6886 6888 6892 7469 7470 7472 6885 6886 6887 6889 6892 7472 7473 7475 6888 6890 6892 7472 7473 7475 7476 7478 6889 6891 6892 6893 6896 7475 7476 7478 6294 6314 6316 6890 6892 6893 6896 7478 6290 6291 6292 6293 6294 6314 6316 6885 6886 6887 6888 6889 6890 6891 6893 6896 7472 7473 7475 7476 7478 6890 6891 6892 6894 6896 7478 7479 7482 6893 6895 6896 6897 6914 7478 7479 7482 6317 6894 6896 6897 6912 6914 6929 7482 6294 6314 6315 6316 6317 6890 6891 6892 6893 6894 6895 6897 6912 6914 6929 7478 7479 7482 6894 6895 6896 6898 6914 7482 7483 7488 6897 6899 6914 6915 6917 7482 7483 7488 6898 6909 6914 6915 6917 7488 7489 7490 6299 6300 6301 6303 6304 6901 6902 6904 6905 7456 7457 7493 6295 6296 6297 6298 6299 6300 6301 6303 6304 6867 6868 6870 6900 6902 6904 6905 7456 7457 7493 6867 6868 6870 6900 6901 6904 6905 7456 7457 7493 6302 6303 6304 6458 6459 6904 6905 6907 6908 7492 7493 7496 6299 6300 6301 6302 6303 6304 6458 6459 6900 6901 6902 6903 6905 6907 6908 7456 7457 7492 7493 7496 6900 6901 6902 6903 6904 6907 6908 7456 7457 7492 7493 7496 6457 6458 6459 6461 6462 6907 6908 7052 7053 7495 7496 7499 6302 6303 6304 6457 6458 6459 6461 6462 6903 6904 6905 6906 6908 7052 7053 7492 7493 7495 7496 7499 6903 6904 6905 6906 6907 7052 7053 7492 7493 7495 7496 7499 6899 6910 6917 6918 7488 7489 7490 7506 6909 6911 6917 6918 7484 7485 7490 7506 6910 6919 7480 7484 7485 7490 7502 7506 6317 6895 6896 6913 6914 6929 6930 7511 6912 6914 6915 6916 6917 6929 6930 7511 6317 6894 6895 6896 6897 6898 6899 6912 6913 6915 6916 6917 6929 6930 7482 7483 7488 7511 6898 6899 6913 6914 6916 6917 7488 7511 6913 6914 6915 6917 6918 7504 7506 7511 6898 6899 6909 6910 6913 6914 6915 6916 6918 7488 7489 7490 7504 7506 7511 6909 6910 6916 6917 7490 7504 7506 7511 6911 6920 7480 7485 7502 7506 7507 7516 6919 7502 7503 7506 7507 7514 7516 7519 6313 6315 6316 6923 6924 6928 6929 7524 6307 6311 6312 6923 6924 6926 6927 7524 6305 6307 6311 6312 6313 6315 6316 6921 6922 6924 6926 6927 6928 6929 7524 6921 6922 6923 6926 6927 6928 6929 7524 6330 6331 6334 6926 6927 6943 6946 7524 6306 6307 6308 6309 6310 6311 6312 6330 6331 6334 6922 6923 6924 6925 6927 6943 6946 7524 6922 6923 6924 6925 6926 6943 6946 7524 6921 6923 6924 6929 6930 7510 7511 7524 6313 6314 6315 6316 6317 6895 6896 6912 6913 6914 6921 6923 6924 6928 6930 7510 7511 7524 6912 6913 6914 6928 6929 7510 7511 7524 6381 6382 6383 6933 6934 6988 6990 7528 6322 6324 6325 6933 6934 6935 6938 7528 6931 6932 6934 6935 6938 6988 6990 7528 6318 6319 6320 6321 6322 6324 6325 6381 6382 6383 6931 6932 6933 6935 6938 6988 6990 7528 6932 6933 6934 6937 6938 7526 7528 7532 6326 6328 6329 6937 6938 6939 6942 7532 6935 6936 6938 6939 6942 7526 7528 7532 6322 6323 6324 6325 6326 6328 6329 6932 6933 6934 6935 6936 6937 6939 6942 7526 7528 7532 6936 6937 6938 6941 6942 7530 7532 7536 6353 6354 6355 6941 6942 6958 6959 7536 6939 6940 6942 6958 6959 7530 7532 7536 6326 6327 6328 6329 6353 6354 6355 6936 6937 6938 6939 6940 6941 6958 6959 7530 7532 7536 6925 6926 6927 6944 6946 7523 7524 7540 6943 6945 6946 6947 6950 7523 7524 7540 6331 6332 6334 6944 6946 6947 6950 7540 6330 6331 6332 6334 6925 6926 6927 6943 6944 6945 6947 6950 7523 7524 7540 6944 6945 6946 6948 6950 7539 7540 7543 6947 6949 6950 6951 6953 7539 7540 7543 6335 6336 6338 6948 6950 6951 6953 7543 6331 6332 6333 6334 6335 6336 6338 6944 6945 6946 6947 6948 6949 6951 6953 7539 7540 7543 6948 6949 6950 6952 6953 6954 6957 7543 6345 6346 6348 6951 6953 6954 6957 7543 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6348 6948 6949 6950 6951 6952 6954 6957 7543 6951 6952 6953 6955 6957 7542 7543 7545 6954 6956 6957 6959 6960 7542 7543 7545 6349 6350 6352 6955 6957 6959 6960 7545 6345 6346 6347 6348 6349 6350 6352 6951 6952 6953 6954 6955 6956 6959 6960 7542 7543 7545 6940 6941 6942 6959 6960 7534 7536 7545 6349 6350 6351 6352 6353 6354 6355 6940 6941 6942 6955 6956 6957 6958 6960 7534 7536 7545 6955 6956 6957 6958 6959 7534 7536 7545 6697 6698 6962 6965 7262 7279 7280 7550 6961 6963 6965 7279 7280 7549 7550 7553 6962 6964 6965 6966 6968 7549 7550 7553 6680 6681 6963 6965 6966 6968 7265 7553 6680 6681 6697 6698 6961 6962 6963 6964 6966 6968 7262 7263 7265 7279 7280 7549 7550 7553 6963 6964 6965 6967 6968 7030 7033 7553 6424 6425 6427 6966 6968 7030 7033 7553 6356 6424 6425 6427 6680 6681 6682 6683 6684 6963 6964 6965 6966 6967 7030 7033 7265 7553 6369 6370 6372 6970 6978 6980 6982 7557 6969 6978 6979 6980 6982 7556 7557 7560 6388 6972 6973 6991 6996 6997 6998 7560 6971 6973 6974 6975 6976 6991 6998 7560 6357 6358 6359 6360 6385 6386 6387 6388 6971 6972 6974 6975 6976 6991 6996 6997 6998 7560 6358 6359 6360 6972 6973 6975 6976 7560 6972 6973 6974 6976 6977 6978 6979 7560 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6972 6973 6974 6975 6977 6978 6979 7560 6365 6366 6367 6975 6976 6978 6979 7560 6365 6366 6367 6368 6369 6370 6372 6969 6970 6975 6976 6977 6979 6980 6982 7556 7557 7560 6970 6975 6976 6977 6978 7556 7557 7560 6969 6970 6978 6981 6982 7555 7557 7565 6980 6982 6983 6986 6987 7555 7557 7565 6369 6370 6371 6372 6969 6970 6978 6980 6981 6983 6986 6987 7555 7557 7565 6370 6371 6372 6981 6982 6986 6987 7565 6380 6382 6383 6985 6987 6989 6990 7568 6984 6986 6987 6989 6990 7562 7565 7568 6981 6982 6983 6985 6987 7562 7565 7568 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6382 6383 6981 6982 6983 6984 6985 6986 6989 6990 7562 7565 7568 6931 6933 6934 6989 6990 7525 7528 7568 6984 6985 6987 6988 6990 7525 7528 7568 6380 6381 6382 6383 6931 6933 6934 6984 6985 6987 6988 6989 7525 7528 7568 6971 6972 6973 6992 6998 7559 7560 7571 6991 6993 6998 7559 7560 7569 7571 7575 6992 6998 6999 7569 7571 7574 7575 7580 6401 6402 6403 6995 6996 7009 7010 7580 6994 6996 6997 6998 6999 7009 7010 7580 6384 6385 6386 6387 6388 6401 6402 6403 6971 6973 6994 6995 6997 6998 6999 7009 7010 7580 6388 6971 6973 6995 6996 6998 6999 7580 6388 6971 6972 6973 6991 6992 6993 6995 6996 6997 6999 7559 7560 7569 7571 7574 7575 7580 6993 6995 6996 6997 6998 7574 7575 7580 6404 6407 6408 7001 7002 7011 7013 7584 7000 7002 7003 7004 7005 7011 7013 7584 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6404 6407 6408 7000 7001 7003 7004 7005 7011 7013 7584 6396 6397 6398 7001 7002 7004 7005 7584 7001 7002 7003 7005 7006 7007 7009 7584 6396 6397 6398 6399 6400 6401 6402 7001 7002 7003 7004 7006 7007 7009 7584 6400 6401 6402 7004 7005 7007 7009 7584 7004 7005 7006 7008 7009 7584 7585 7586 7007 7009 7010 7579 7580 7584 7585 7586 6400 6401 6402 6403 6994 6995 6996 7004 7005 7006 7007 7008 7010 7579 7580 7584 7585 7586 6994 6995 6996 7008 7009 7579 7580 7586 7000 7001 7002 7013 7014 7582 7584 7591 6406 6407 6408 7013 7014 7015 7018 7591 6404 6406 6407 6408 7000 7001 7002 7011 7012 7014 7015 7018 7582 7584 7591 7011 7012 7013 7015 7018 7582 7584 7591 7012 7013 7014 7016 7018 7590 7591 7593 7015 7017 7018 7020 7021 7590 7591 7593 6409 6410 6412 7016 7018 7020 7021 7593 6405 6406 6407 6408 6409 6410 6412 7012 7013 7014 7015 7016 7017 7020 7021 7590 7591 7593 6416 6418 6419 7020 7021 7022 7024 7593 6409 6410 6411 6412 6413 6414 6415 6416 6418 6419 7016 7017 7018 7019 7021 7022 7024 7593 7016 7017 7018 7019 7020 7022 7024 7593 7019 7020 7021 7024 7025 7592 7593 7597 6420 6422 6423 7024 7025 7026 7028 7597 6416 6417 6418 6419 6420 6422 6423 7019 7020 7021 7022 7023 7025 7026 7028 7592 7593 7597 7022 7023 7024 7026 7028 7592 7593 7597 7023 7024 7025 7028 7029 7596 7597 7601 6450 6455 6456 7028 7029 7041 7049 7601 6420 6421 6422 6423 6450 6455 6456 7023 7024 7025 7026 7027 7029 7041 7049 7596 7597 7601 7026 7027 7028 7041 7049 7596 7597 7601 6966 6967 6968 7031 7033 7552 7553 7606 7030 7032 7033 7034 7037 7552 7553 7606 6428 6429 6431 7031 7033 7034 7037 7606 6424 6425 6426 6427 6428 6429 6431 6966 6967 6968 7030 7031 7032 7034 7037 7552 7553 7606 7031 7032 7033 7035 7037 7605 7606 7610 7034 7036 7037 7039 7040 7605 7606 7610 6432 6433 6435 7035 7037 7039 7040 7610 6428 6429 6430 6431 6432 6433 6435 7031 7032 7033 7034 7035 7036 7039 7040 7605 7606 7610 6436 6437 6438 7039 7040 7042 7044 7610 6432 6433 6434 6435 6436 6437 6438 7035 7036 7037 7038 7040 7042 7044 7610 7035 7036 7037 7038 7039 7042 7044 7610 7027 7028 7029 7049 7050 7600 7601 7612 7038 7039 7040 7043 7044 7610 7611 7612 7042 7044 7045 7046 7047 7610 7611 7612 6436 6437 6438 6439 6447 6448 6449 7038 7039 7040 7042 7043 7045 7046 7047 7610 7611 7612 6447 6448 6449 7043 7044 7046 7047 7612 7043 7044 7045 7047 7048 7049 7050 7612 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6451 6452 6453 7043 7044 7045 7046 7048 7049 7050 7612 6451 6452 6453 7046 7047 7049 7050 7612 6450 6451 6452 6453 6454 6455 6456 7027 7028 7029 7041 7046 7047 7048 7050 7600 7601 7612 7041 7046 7047 7048 7049 7600 7601 7612 6460 6461 6462 6464 6465 7052 7053 7055 7056 7498 7499 7615 6457 6458 6459 6460 6461 6462 6464 6465 6906 6907 6908 7051 7053 7055 7056 7495 7496 7498 7499 7615 6906 6907 6908 7051 7052 7055 7056 7495 7496 7498 7499 7615 6463 6464 6465 6467 6468 7055 7056 7058 7059 7614 7615 7618 6460 6461 6462 6463 6464 6465 6467 6468 7051 7052 7053 7054 7056 7058 7059 7498 7499 7614 7615 7618 7051 7052 7053 7054 7055 7058 7059 7498 7499 7614 7615 7618 6466 6467 6468 6470 6471 7058 7059 7061 7062 7617 7618 7621 6463 6464 6465 6466 6467 6468 6470 6471 7054 7055 7056 7057 7059 7061 7062 7614 7615 7617 7618 7621 7054 7055 7056 7057 7058 7061 7062 7614 7615 7617 7618 7621 6469 6470 6471 6473 6474 7061 7062 7064 7065 7620 7621 7624 6466 6467 6468 6469 6470 6471 6473 6474 7057 7058 7059 7060 7062 7064 7065 7617 7618 7620 7621 7624 7057 7058 7059 7060 7061 7064 7065 7617 7618 7620 7621 7624 6472 6473 6474 6476 6477 7064 7065 7067 7068 7623 7624 7627 6469 6470 6471 6472 6473 6474 6476 6477 7060 7061 7062 7063 7065 7067 7068 7620 7621 7623 7624 7627 7060 7061 7062 7063 7064 7067 7068 7620 7621 7623 7624 7627 6475 6476 6477 6479 6480 7067 7068 7070 7071 7626 7627 7630 6472 6473 6474 6475 6476 6477 6479 6480 7063 7064 7065 7066 7068 7070 7071 7623 7624 7626 7627 7630 7063 7064 7065 7066 7067 7070 7071 7623 7624 7626 7627 7630 6478 6479 6480 6482 6483 7070 7071 7073 7074 7629 7630 7633 6475 6476 6477 6478 6479 6480 6482 6483 7066 7067 7068 7069 7071 7073 7074 7626 7627 7629 7630 7633 7066 7067 7068 7069 7070 7073 7074 7626 7627 7629 7630 7633 6481 6482 6483 6487 6488 7073 7074 7078 7079 7632 7633 7638 6478 6479 6480 6481 6482 6483 6487 6488 7069 7070 7071 7072 7074 7078 7079 7629 7630 7632 7633 7638 7069 7070 7071 7072 7073 7078 7079 7629 7630 7632 7633 7638 7076 7077 7078 7079 7636 7637 7638 6484 6485 6486 6487 6488 7075 7077 7078 7079 7636 7637 7638 6484 6485 6486 6487 6488 7075 7076 7078 7079 7636 7637 7638 6481 6482 6483 6484 6485 6486 6487 6488 7072 7073 7074 7075 7076 7077 7079 7632 7633 7636 7637 7638 7072 7073 7074 7075 7076 7077 7078 7632 7633 7636 7637 7638 7081 7082 7646 7647 7650 7080 7082 7083 7321 7323 7646 7647 7650 6489 6490 6491 6722 6723 6724 7080 7081 7083 7321 7323 7646 7647 7650 6722 6723 6724 7081 7082 7321 7323 7650 6501 6502 6503 7085 7086 7097 7098 7666 7084 7086 7087 7097 7098 7652 7654 7666 6492 6493 6494 6501 6502 6503 7084 7085 7087 7097 7098 7652 7654 7666 7085 7086 7652 7654 7666 6534 6536 6537 7090 7091 7107 7125 7671 6496 6498 6499 7090 7091 7092 7095 7671 7088 7089 7091 7092 7095 7107 7125 7671 6495 6496 6498 6499 6534 6536 6537 7088 7089 7090 7092 7095 7107 7125 7671 7089 7090 7091 7094 7095 7669 7671 7673 6500 6502 6503 7094 7095 7096 7097 7673 7092 7093 7095 7096 7097 7669 7671 7673 6496 6497 6498 6499 6500 6502 6503 7089 7090 7091 7092 7093 7094 7096 7097 7669 7671 7673 7093 7094 7095 7097 7098 7664 7666 7673 6500 6501 6502 6503 7084 7085 7086 7093 7094 7095 7096 7098 7664 7666 7673 7084 7085 7086 7096 7097 7664 7666 7673 6509 6510 6511 7100 7102 7103 7104 7677 7099 7101 7102 7103 7104 7155 7158 7677 6565 6566 6568 7100 7102 7155 7158 7677 6504 6505 6506 6507 6509 6510 6511 6565 6566 6568 7099 7100 7101 7103 7104 7155 7158 7677 7099 7100 7102 7104 7105 7106 7110 7677 6508 6509 6510 6511 6512 6513 6514 6515 6516 6518 7099 7100 7102 7103 7105 7106 7110 7677 6515 6516 6518 7103 7104 7106 7110 7677 7103 7104 7105 7108 7110 7677 7678 7682 7088 7090 7091 7112 7125 7668 7671 7686 7106 7109 7110 7677 7678 7682 7683 7690 7108 7110 7111 7113 7115 7682 7683 7690 6515 6516 6517 6518 7103 7104 7105 7106 7108 7109 7111 7113 7115 7677 7678 7682 7683 7690 6516 6517 6518 7109 7110 7113 7115 7690 7107 7117 7125 7668 7671 7684 7686 7695 7109 7110 7111 7114 7115 7690 7691 7698 7113 7115 7116 7118 7120 7690 7691 7698 6516 6517 6518 6519 6520 6521 6522 7109 7110 7111 7113 7114 7116 7118 7120 7690 7691 7698 6520 6521 6522 7114 7115 7118 7120 7698 7112 7125 7126 7684 7686 7694 7695 7700 7114 7115 7116 7119 7120 7698 7699 7700 7118 7120 7121 7122 7123 7698 7699 7700 6520 6521 6522 6523 6531 6532 6533 7114 7115 7116 7118 7119 7121 7122 7123 7698 7699 7700 6531 6532 6533 7119 7120 7122 7123 7700 7119 7120 7121 7123 7124 7125 7126 7700 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6535 6536 6537 7119 7120 7121 7122 7124 7125 7126 7700 6535 6536 6537 7122 7123 7125 7126 7700 6534 6535 6536 6537 7088 7090 7091 7107 7112 7117 7122 7123 7124 7126 7668 7671 7684 7686 7694 7695 7700 7117 7122 7123 7124 7125 7694 7695 7700 6561 6562 6563 6826 6831 7128 7129 7130 7131 7148 7149 7703 6538 6539 6540 6541 6542 6543 6547 6548 6561 6562 6563 6826 6831 7127 7129 7130 7131 7148 7149 7703 6541 6542 6543 6547 6548 7127 7128 7130 7131 7148 7149 7703 7127 7128 7129 7131 7132 7133 7135 7148 7149 7703 7704 7707 6541 6542 6543 6547 6548 6549 7127 7128 7129 7130 7132 7133 7135 7136 7138 7148 7149 7703 7704 7707 6547 6548 6549 7130 7131 7133 7135 7136 7138 7703 7704 7707 7130 7131 7132 7134 7135 7703 7704 7707 7708 7712 7133 7135 7136 7137 7138 7707 7708 7712 6547 6548 6549 7130 7131 7132 7133 7134 7136 7137 7138 7703 7704 7707 7708 7712 6547 6548 6549 7131 7132 7134 7135 7137 7138 7712 7134 7135 7136 7138 7139 7141 7143 7712 6544 6545 6546 6547 6548 6549 6550 6551 6552 7131 7132 7134 7135 7136 7137 7139 7141 7143 7712 6550 6551 6552 7137 7138 7141 7143 7712 6604 6605 6606 7145 7146 7186 7187 7714 7137 7138 7139 7142 7143 7712 7713 7714 7141 7143 7144 7145 7146 7712 7713 7714 6550 6551 6552 6553 6555 6556 6557 7137 7138 7139 7141 7142 7144 7145 7146 7712 7713 7714 6555 6556 6557 7142 7143 7145 7146 7714 6554 6555 6556 6557 6558 6559 6560 6604 6605 6606 7140 7142 7143 7144 7146 7186 7187 7714 7140 7142 7143 7144 7145 7186 7187 7714 6826 6831 6832 7148 7149 7412 7416 7417 7423 7702 7703 7717 6561 6562 6563 6826 6831 6832 7127 7128 7129 7130 7131 7147 7149 7412 7416 7417 7423 7702 7703 7717 7127 7128 7129 7130 7131 7147 7148 7412 7417 7702 7703 7717 6647 6648 6649 7151 7153 7225 7227 7721 7150 7152 7153 7225 7227 7721 7722 7725 7151 7153 7154 7162 7163 7721 7722 7725 6564 6577 6578 6579 6647 6648 6649 7150 7151 7152 7154 7162 7163 7225 7227 7721 7722 7725 6577 6578 6579 7152 7153 7162 7163 7725 7100 7101 7102 7156 7158 7675 7677 7728 7155 7157 7158 7160 7161 7675 7677 7728 6569 6570 6572 7156 7158 7160 7161 7728 6565 6566 6567 6568 6569 6570 6572 7100 7101 7102 7155 7156 7157 7160 7161 7675 7677 7728 6573 6574 6576 7160 7161 7163 7164 7728 6569 6570 6571 6572 6573 6574 6576 7156 7157 7158 7159 7161 7163 7164 7728 7156 7157 7158 7159 7160 7163 7164 7728 7152 7153 7154 7163 7164 7725 7726 7728 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 7152 7153 7154 7159 7160 7161 7162 7164 7725 7726 7728 7159 7160 7161 7162 7163 7725 7726 7728 6616 6617 6618 7166 7168 7199 7200 7733 7165 7167 7168 7169 7171 7199 7200 7733 6587 6588 6590 7166 7168 7169 7171 7733 6583 6584 6585 6586 6587 6588 6590 6616 6617 6618 7165 7166 7167 7169 7171 7199 7200 7733 7166 7167 7168 7170 7171 7172 7176 7733 6594 7169 7171 7172 7175 7176 7181 7733 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6599 7166 7167 7168 7169 7170 7172 7175 7176 7181 7733 7169 7170 7171 7173 7176 7732 7733 7738 7172 7174 7176 7732 7733 7737 7738 7743 7173 7176 7177 7737 7738 7742 7743 7746 6594 7170 7171 7176 7177 7178 7181 7746 6594 7169 7170 7171 7172 7173 7174 7175 7177 7178 7181 7732 7733 7737 7738 7742 7743 7746 7174 7175 7176 7178 7181 7742 7743 7746 7175 7176 7177 7179 7181 7745 7746 7748 7178 7180 7181 7183 7184 7745 7746 7748 6596 6597 6599 7179 7181 7183 7184 7748 6594 6595 6596 6597 6599 7170 7171 7175 7176 7177 7178 7179 7180 7183 7184 7745 7746 7748 6603 6605 6606 7183 7184 7185 7187 7748 6596 6597 6598 6599 6600 6601 6602 6603 6605 6606 7179 7180 7181 7182 7184 7185 7187 7748 7179 7180 7181 7182 7183 7185 7187 7748 7182 7183 7184 7187 7188 7747 7748 7752 7140 7145 7146 7187 7188 7709 7714 7752 6603 6604 6605 6606 7140 7145 7146 7182 7183 7184 7185 7186 7188 7709 7714 7747 7748 7752 7185 7186 7187 7709 7714 7747 7748 7752 6628 6629 6630 7190 7192 7211 7212 7757 7189 7191 7192 7193 7196 7211 7212 7757 6611 6612 6614 7190 7192 7193 7196 7757 6607 6608 6609 6610 6611 6612 6614 6628 6629 6630 7189 7190 7191 7193 7196 7211 7212 7757 7190 7191 7192 7194 7196 7756 7757 7761 7193 7195 7196 7197 7200 7756 7757 7761 6615 6616 6618 7194 7196 7197 7200 7761 6611 6612 6613 6614 6615 6616 6618 7190 7191 7192 7193 7194 7195 7197 7200 7756 7757 7761 7194 7195 7196 7198 7200 7760 7761 7765 7197 7199 7200 7730 7733 7760 7761 7765 7165 7166 7168 7198 7200 7730 7733 7765 6615 6616 6617 6618 7165 7166 7168 7194 7195 7196 7197 7198 7199 7730 7733 7760 7761 7765 6639 6640 6641 7202 7204 7219 7220 7769 7201 7203 7204 7205 7208 7219 7220 7769 6623 6624 6626 7202 7204 7205 7208 7769 6619 6620 6621 6622 6623 6624 6626 6639 6640 6641 7201 7202 7203 7205 7208 7219 7220 7769 7202 7203 7204 7206 7208 7768 7769 7772 7205 7207 7208 7209 7212 7768 7769 7772 6627 6628 6630 7206 7208 7209 7212 7772 6623 6624 6625 6626 6627 6628 6630 7202 7203 7204 7205 7206 7207 7209 7212 7768 7769 7772 7206 7207 7208 7210 7212 7771 7772 7776 7209 7211 7212 7754 7757 7771 7772 7776 7189 7190 7192 7210 7212 7754 7757 7776 6627 6628 6629 6630 7189 7190 7192 7206 7207 7208 7209 7210 7211 7754 7757 7771 7772 7776 6658 6659 6660 7214 7216 7234 7235 7780 7213 7215 7216 7217 7220 7234 7235 7780 6635 6636 6638 7214 7216 7217 7220 7780 6631 6632 6633 6634 6635 6636 6638 6658 6659 6660 7213 7214 7215 7217 7220 7234 7235 7780 7214 7215 7216 7218 7220 7779 7780 7783 7217 7219 7220 7766 7769 7779 7780 7783 7201 7202 7204 7218 7220 7766 7769 7783 6635 6636 6637 6638 6639 6640 6641 7201 7202 7204 7214 7215 7216 7217 7218 7219 7766 7769 7779 7780 7783 6644 6645 6646 7222 7224 7226 7227 7788 7221 7223 7224 7226 7227 7228 7231 7788 6650 6651 6653 7222 7224 7228 7231 7788 6642 6644 6645 6646 6650 6651 6653 7221 7222 7223 7226 7227 7228 7231 7788 7150 7151 7153 7226 7227 7719 7721 7788 7221 7222 7224 7225 7227 7719 7721 7788 6643 6644 6645 6646 6647 6648 6649 7150 7151 7153 7221 7222 7224 7225 7226 7719 7721 7788 7222 7223 7224 7229 7231 7787 7788 7791 7228 7230 7231 7232 7235 7787 7788 7791 6654 6655 6657 7229 7231 7232 7235 7791 6650 6651 6652 6653 6654 6655 6657 7222 7223 7224 7228 7229 7230 7232 7235 7787 7788 7791 7229 7230 7231 7233 7235 7790 7791 7794 7232 7234 7235 7777 7780 7790 7791 7794 7213 7214 7216 7233 7235 7777 7780 7794 6654 6655 6656 6657 6658 6659 6660 7213 7214 7216 7229 7230 7231 7232 7233 7234 7777 7780 7790 7791 7794 6676 6677 6678 7237 7238 7258 7259 7797 7236 7238 7239 7240 7242 7258 7259 7797 6661 6662 6663 6664 6676 6677 6678 7236 7237 7239 7240 7242 7258 7259 7797 6662 6663 6664 7237 7238 7240 7242 7797 7237 7238 7239 7241 7242 7797 7798 7801 7240 7242 7243 7244 7246 7797 7798 7801 6662 6663 6664 6665 6666 6667 6668 7237 7238 7239 7240 7241 7243 7244 7246 7797 7798 7801 6666 6667 6668 7241 7242 7244 7246 7801 7241 7242 7243 7245 7246 7801 7802 7805 7244 7246 7247 7248 7250 7801 7802 7805 6666 6667 6668 6669 6670 6671 6672 7241 7242 7243 7244 7245 7247 7248 7250 7801 7802 7805 6670 6671 6672 7245 7246 7248 7250 7805 7245 7246 7247 7249 7250 7805 7806 7809 7248 7250 7251 7252 7254 7805 7806 7809 6670 6671 6672 6673 6674 6699 6701 7245 7246 7247 7248 7249 7251 7252 7254 7805 7806 7809 6674 6699 6701 7249 7250 7252 7254 7809 7249 7250 7251 7253 7254 7809 7810 7813 7252 7254 7255 7287 7289 7809 7810 7813 6674 6699 6700 6701 7249 7250 7251 7252 7253 7255 7287 7289 7809 7810 7813 6699 6700 6701 7253 7254 7287 7289 7813 6694 6695 6696 7257 7258 7276 7277 7817 7256 7258 7259 7276 7277 7795 7797 7817 6675 6676 6677 6678 6694 6695 6696 7236 7237 7238 7256 7257 7259 7276 7277 7795 7797 7817 7236 7237 7238 7257 7258 7795 7797 7817 6698 7261 7262 7278 7280 7285 7286 7821 7260 7262 7263 7264 7265 7285 7286 7821 6680 6697 6698 6961 6965 7260 7261 7263 7264 7265 7278 7280 7285 7286 7821 6680 6697 6965 7261 7262 7264 7265 7821 7261 7262 7263 7265 7266 7267 7269 7821 6679 6680 6681 6682 6683 6684 6685 6686 6687 6697 6964 6965 6968 7261 7262 7263 7264 7266 7267 7269 7821 6685 6686 6687 7264 7265 7267 7269 7821 7264 7265 7266 7268 7269 7821 7822 7825 7267 7269 7270 7271 7272 7821 7822 7825 6685 6686 6687 6688 6689 6690 6691 7264 7265 7266 7267 7268 7270 7271 7272 7821 7822 7825 6689 6690 6691 7268 7269 7271 7272 7825 7268 7269 7270 7272 7273 7274 7276 7825 6689 6690 6691 6692 6693 6694 6695 7268 7269 7270 7271 7273 7274 7276 7825 6693 6694 6695 7271 7272 7274 7276 7825 7271 7272 7273 7275 7276 7825 7826 7829 7274 7276 7277 7815 7817 7825 7826 7829 6693 6694 6695 6696 7256 7257 7258 7271 7272 7273 7274 7275 7277 7815 7817 7825 7826 7829 7256 7257 7258 7275 7276 7815 7817 7829 6698 7260 7262 7280 7281 7282 7285 7835 6961 6962 6965 7280 7281 7547 7550 7835 6697 6698 6961 6962 6965 7260 7262 7278 7279 7281 7282 7285 7547 7550 7835 7278 7279 7280 7282 7285 7547 7550 7835 7278 7280 7281 7283 7285 7831 7835 7840 7282 7284 7285 7831 7835 7840 7841 7844 7283 7285 7286 7819 7821 7840 7841 7844 6698 7260 7261 7262 7278 7280 7281 7282 7283 7284 7286 7819 7821 7831 7835 7840 7841 7844 7260 7261 7262 7284 7285 7819 7821 7844 7253 7254 7255 7288 7289 7813 7814 7849 7287 7289 7290 7291 7294 7813 7814 7849 6699 6700 6701 6702 6703 6704 6705 7253 7254 7255 7287 7288 7290 7291 7294 7813 7814 7849 6703 6704 6705 7288 7289 7291 7294 7849 7288 7289 7290 7292 7294 7849 7850 7853 7291 7293 7294 7849 7850 7853 7854 7857 7292 7294 7295 7296 7298 7853 7854 7857 6703 6704 6705 6706 6707 6708 6709 7288 7289 7290 7291 7292 7293 7295 7296 7298 7849 7850 7853 7854 7857 6707 6708 6709 7293 7294 7296 7298 7857 7293 7294 7295 7297 7298 7857 7858 7861 7296 7298 7299 7300 7302 7857 7858 7861 6707 6708 6709 6710 6711 6712 6714 7293 7294 7295 7296 7297 7299 7300 7302 7857 7858 7861 6711 6712 6714 7297 7298 7300 7302 7861 7297 7298 7299 7301 7302 7861 7862 7865 7300 7302 7303 7304 7306 7861 7862 7865 6711 6712 6713 6714 7297 7298 7299 7300 7301 7303 7304 7306 7861 7862 7865 6712 6713 6714 7301 7302 7304 7306 7865 7301 7302 7303 7305 7306 7865 7866 7869 7304 7306 7307 7308 7310 7865 7866 7869 6712 6713 6714 6715 6716 6717 6718 7301 7302 7303 7304 7305 7307 7308 7310 7865 7866 7869 6716 6717 6718 7305 7306 7308 7310 7869 7305 7306 7307 7309 7310 7869 7870 7873 7308 7310 7311 7312 7314 7869 7870 7873 6716 6717 6718 6719 6720 6806 6812 7305 7306 7307 7308 7309 7311 7312 7314 7869 7870 7873 6720 6806 6812 7309 7310 7312 7314 7873 7309 7310 7311 7313 7314 7873 7874 7877 7312 7314 7315 7316 7318 7873 7874 7877 6720 6806 6807 6808 6811 6812 7309 7310 7311 7312 7313 7315 7316 7318 7401 7873 7874 7877 6807 6808 7313 7314 7316 7318 7401 7877 7313 7314 7315 7317 7318 7877 7878 7881 7316 7318 7319 7320 7396 7877 7878 7881 6807 6808 6816 7313 7314 7315 7316 7317 7319 7320 7396 7401 7877 7878 7881 6808 6816 7317 7318 7320 7396 7401 7881 7317 7318 7319 7393 7396 7881 7882 7885 7081 7082 7083 7322 7323 7650 7651 7890 7321 7323 7324 7329 7331 7650 7651 7890 6721 6722 6723 6724 6727 6728 6729 7081 7082 7083 7321 7322 7324 7329 7331 7650 7651 7890 6727 6728 6729 7322 7323 7329 7331 7890 6726 6728 6729 7326 7327 7331 7332 7894 7325 7327 7328 7331 7332 7333 7335 7894 6725 6726 6728 6729 6731 6732 6733 7325 7326 7328 7331 7332 7333 7335 7894 6731 6732 6733 7326 7327 7333 7335 7894 7322 7323 7324 7330 7331 7890 7891 7897 7329 7331 7332 7890 7891 7892 7894 7897 6726 6727 6728 6729 7322 7323 7324 7325 7326 7327 7329 7330 7332 7890 7891 7892 7894 7897 7325 7326 7327 7330 7331 7892 7894 7897 7326 7327 7328 7334 7335 7894 7895 7903 7333 7335 7336 7337 7340 7894 7895 7903 6730 6731 6732 6733 6734 6736 6737 7326 7327 7328 7333 7334 7336 7337 7340 7894 7895 7903 6734 6736 6737 7334 7335 7337 7340 7903 7334 7335 7336 7339 7340 7900 7903 7906 6738 6741 6742 7339 7340 7341 7344 7906 7337 7338 7340 7341 7344 7900 7903 7906 6734 6735 6736 6737 6738 6741 6742 7334 7335 7336 7337 7338 7339 7341 7344 7900 7903 7906 7338 7339 7340 7343 7344 7904 7906 7910 6740 6741 6742 7343 7344 7345 7347 7910 7341 7342 7344 7345 7347 7904 7906 7910 6738 6740 6741 6742 7338 7339 7340 7341 7342 7343 7345 7347 7904 7906 7910 7342 7343 7344 7346 7347 7908 7910 7913 7345 7347 7348 7367 7368 7908 7910 7913 6739 6740 6741 6742 6743 6744 6745 6773 6774 6775 7342 7343 7344 7345 7346 7348 7367 7368 7908 7910 7913 6773 6774 6775 7346 7347 7367 7368 7913 6791 6792 6794 7350 7352 7382 7383 7918 7349 7351 7352 7353 7355 7382 7383 7918 6754 6755 6756 7350 7352 7353 7355 7918 6746 6747 6748 6749 6754 6755 6756 6791 6792 6794 7349 7350 7351 7353 7355 7382 7383 7918 7350 7351 7352 7354 7355 7356 7359 7918 6757 6758 6761 7353 7355 7356 7359 7918 6750 6751 6752 6753 6754 6755 6756 6757 6758 6761 7350 7351 7352 7353 7354 7356 7359 7918 7353 7354 7355 7357 7359 7917 7918 7922 7356 7358 7359 7360 7362 7917 7918 7922 6758 6759 6761 7357 7359 7360 7362 7922 6757 6758 6759 6761 7353 7354 7355 7356 7357 7358 7360 7362 7917 7918 7922 7357 7358 7359 7361 7362 7363 7366 7922 6768 6769 6772 7360 7362 7363 7366 7922 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6772 7357 7358 7359 7360 7361 7363 7366 7922 7360 7361 7362 7364 7366 7921 7922 7924 7363 7365 7366 7368 7369 7921 7922 7924 6769 6770 6772 7364 7366 7368 7369 7924 6768 6769 6770 6772 7360 7361 7362 7363 7364 7365 7368 7369 7921 7922 7924 7346 7347 7348 7368 7369 7913 7914 7924 6769 6770 6771 6772 6773 6774 6775 7346 7347 7348 7364 7365 7366 7367 7369 7913 7914 7924 7364 7365 7366 7367 7368 7913 7914 7924 6799 6800 6801 7372 7373 7385 7387 7930 6777 6779 6780 7372 7373 7374 7377 7930 7370 7371 7373 7374 7377 7385 7387 7930 6776 6777 6779 6780 6799 6800 6801 7370 7371 7372 7374 7377 7385 7387 7930 7371 7372 7373 7376 7377 7928 7930 7932 6788 6789 6790 7376 7377 7378 7379 7932 7374 7375 7377 7378 7379 7928 7930 7932 6777 6778 6779 6780 6781 6782 6783 6788 6789 6790 7371 7372 7373 7374 7375 7376 7378 7379 7928 7930 7932 7375 7376 7377 7379 7380 7388 7391 7932 6784 6785 6786 6787 6788 6789 6790 6802 6803 6805 7375 7376 7377 7378 7380 7388 7391 7932 6802 6803 6805 7378 7379 7388 7391 7932 6792 6793 6794 7383 7384 7386 7387 7937 7349 7350 7352 7383 7384 7915 7918 7937 6791 6792 6793 6794 7349 7350 7352 7381 7382 7384 7386 7387 7915 7918 7937 7381 7382 7383 7386 7387 7915 7918 7937 7370 7372 7373 7386 7387 7927 7930 7937 7381 7383 7384 7385 7387 7927 7930 7937 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 7370 7372 7373 7381 7383 7384 7385 7386 7927 7930 7937 7378 7379 7380 7390 7391 7932 7933 7941 6813 6814 6815 7391 7392 7402 7404 7943 7388 7391 7392 7932 7933 7939 7941 7943 6802 6803 6804 6805 6813 6814 6815 7378 7379 7380 7388 7389 7390 7392 7402 7404 7932 7933 7939 7941 7943 7389 7390 7391 7402 7404 7939 7941 7943 7320 7395 7396 7397 7881 7882 7885 7950 6816 7395 7396 7400 7401 7405 7408 7950 7393 7394 7396 7397 7405 7408 7885 7950 6808 6816 7317 7318 7319 7320 7393 7394 7395 7397 7400 7401 7405 7408 7881 7882 7885 7950 7393 7395 7396 7885 7886 7947 7950 7954 6810 6811 6812 7399 7401 7403 7404 7959 7398 7400 7401 7403 7404 7406 7408 7959 6816 7394 7396 7399 7401 7406 7408 7959 6806 6807 6808 6810 6811 6812 6816 7314 7315 7318 7319 7394 7396 7398 7399 7400 7403 7404 7406 7408 7959 7389 7391 7392 7403 7404 7926 7943 7959 7398 7399 7401 7402 7404 7926 7943 7959 6809 6810 6811 6812 6813 6814 6815 7389 7391 7392 7398 7399 7401 7402 7403 7926 7943 7959 7394 7395 7396 7407 7408 7948 7950 7963 7399 7400 7401 7407 7408 7956 7959 7963 7405 7406 7408 7948 7950 7956 7959 7963 6816 7394 7395 7396 7399 7400 7401 7405 7406 7407 7948 7950 7956 7959 7963 6844 6845 6846 6848 6849 7410 7411 7413 7414 7437 7438 7969 6817 6818 6819 6820 6821 6822 6823 6824 6844 6845 6846 6848 6849 7409 7411 7413 7414 7437 7438 7969 6820 6821 6822 6823 6824 7409 7410 7413 7414 7437 7438 7969 7147 7148 7149 7417 7418 7702 7703 7716 7717 7965 7966 7972 7409 7410 7411 7414 7415 7419 7420 7437 7438 7969 7970 7975 6820 6821 6822 6823 6824 6825 6827 6828 7409 7410 7411 7413 7415 7419 7420 7437 7438 7969 7970 7975 6823 6824 6825 6827 6828 7413 7414 7419 7420 7969 7970 7975 6826 6831 6832 7147 7148 7417 7418 7423 7424 7971 7972 7978 6826 6831 6832 7147 7148 7149 7412 7416 7418 7423 7424 7702 7703 7716 7717 7965 7966 7971 7972 7978 7412 7416 7417 7423 7424 7716 7717 7965 7966 7971 7972 7978 7413 7414 7415 7420 7421 7425 7426 7969 7970 7975 7976 7981 6823 6824 6825 6827 6828 6829 6833 6834 7413 7414 7415 7419 7421 7425 7426 7969 7970 7975 7976 7981 6827 6828 6829 6833 6834 7419 7420 7425 7426 7975 7976 7981 6830 6831 6832 6837 6838 7423 7424 7429 7430 7977 7978 7984 6826 6830 6831 6832 6837 6838 7147 7148 7416 7417 7418 7422 7424 7429 7430 7971 7972 7977 7978 7984 7416 7417 7418 7422 7423 7429 7430 7971 7972 7977 7978 7984 7419 7420 7421 7426 7427 7431 7432 7975 7976 7981 7982 7987 6827 6828 6829 6833 6834 6835 6839 6840 7419 7420 7421 7425 7427 7431 7432 7975 7976 7981 7982 7987 6833 6834 6835 6839 6840 7425 7426 7431 7432 7981 7982 7987 6836 6837 6838 6842 6843 7429 7430 7434 7435 7983 7984 7989 6830 6831 6832 6836 6837 6838 6842 6843 7422 7423 7424 7428 7430 7434 7435 7977 7978 7983 7984 7989 7422 7423 7424 7428 7429 7434 7435 7977 7978 7983 7984 7989 7425 7426 7427 7432 7433 7434 7435 7981 7982 7987 7988 7989 6833 6834 6835 6839 6840 6841 6842 6843 7425 7426 7427 7431 7433 7434 7435 7981 7982 7987 7988 7989 6839 6840 6841 6842 6843 7431 7432 7434 7435 7987 7988 7989 6836 6837 6838 6839 6840 6841 6842 6843 7428 7429 7430 7431 7432 7433 7435 7983 7984 7987 7988 7989 7428 7429 7430 7431 7432 7433 7434 7983 7984 7987 7988 7989 6847 6848 6849 6851 6852 7437 7438 7440 7441 7968 7969 7992 6844 6845 6846 6847 6848 6849 6851 6852 7409 7410 7411 7413 7414 7436 7438 7440 7441 7968 7969 7992 7409 7410 7411 7413 7414 7436 7437 7440 7441 7968 7969 7992 6850 6851 6852 6854 6855 7440 7441 7443 7444 7991 7992 7995 6847 6848 6849 6850 6851 6852 6854 6855 7436 7437 7438 7439 7441 7443 7444 7968 7969 7991 7992 7995 7436 7437 7438 7439 7440 7443 7444 7968 7969 7991 7992 7995 6853 6854 6855 6857 6858 7443 7444 7446 7447 7994 7995 7998 6850 6851 6852 6853 6854 6855 6857 6858 7439 7440 7441 7442 7444 7446 7447 7991 7992 7994 7995 7998 7439 7440 7441 7442 7443 7446 7447 7991 7992 7994 7995 7998 6856 6857 6858 6860 6861 7446 7447 7449 7450 7997 7998 8002 6853 6854 6855 6856 6857 6858 6860 6861 7442 7443 7444 7445 7447 7449 7450 7994 7995 7997 7998 8002 7442 7443 7444 7445 7446 7449 7450 7994 7995 7997 7998 8002 6859 6860 6861 6865 6866 7449 7450 7454 7455 8002 8003 8006 6856 6857 6858 6859 6860 6861 6865 6866 7445 7446 7447 7448 7450 7454 7455 7997 7998 8002 8003 8006 7445 7446 7447 7448 7449 7454 7455 7997 7998 8002 8003 8006 7452 7453 7454 7455 8006 8007 8008 6862 6863 6864 6865 6866 7451 7453 7454 7455 8006 8007 8008 6862 6863 6864 6865 6866 7451 7452 7454 7455 8006 8007 8008 6859 6860 6861 6862 6863 6864 6865 6866 7448 7449 7450 7451 7452 7453 7455 8002 8003 8006 8007 8008 7448 7449 7450 7451 7452 7453 7454 8002 8003 8006 8007 8008 6900 6901 6902 6904 6905 7457 7458 7459 7460 7493 7494 8010 6867 6868 6869 6870 6871 6872 6875 6900 6901 6902 6904 6905 7456 7458 7459 7460 7493 7494 8010 6871 6872 6875 7456 7457 7459 7460 7493 7494 8010 7456 7457 7458 7460 7461 7462 7463 7493 7494 8010 8011 8013 6871 6872 6873 6875 7456 7457 7458 7459 7461 7462 7463 7493 7494 8010 8011 8013 6872 6873 6875 7459 7460 7462 7463 8010 8011 8013 7459 7460 7461 7463 7464 7465 7466 8010 8011 8013 8014 8016 6872 6873 6874 6875 6876 6877 6879 7459 7460 7461 7462 7464 7465 7466 8010 8011 8013 8014 8016 6876 6877 6879 7462 7463 7465 7466 8013 8014 8016 7462 7463 7464 7466 7467 7468 7469 8013 8014 8016 8017 8019 6876 6877 6878 6879 6880 6881 6883 7462 7463 7464 7465 7467 7468 7469 8013 8014 8016 8017 8019 6880 6881 6883 7465 7466 7468 7469 8016 8017 8019 7465 7466 7467 7469 7470 7471 7472 8016 8017 8019 8020 8022 6880 6881 6882 6883 6884 6885 6887 7465 7466 7467 7468 7470 7471 7472 8016 8017 8019 8020 8022 6884 6885 6887 7468 7469 7471 7472 8019 8020 8022 7468 7469 7470 7472 7473 7474 7475 8019 8020 8022 8023 8025 6884 6885 6886 6887 6888 6889 6892 7468 7469 7470 7471 7473 7474 7475 8019 8020 8022 8023 8025 6888 6889 6892 7471 7472 7474 7475 8022 8023 8025 7471 7472 7473 7475 7476 7477 7478 8022 8023 8025 8026 8029 6888 6889 6890 6892 7471 7472 7473 7474 7476 7477 7478 8022 8023 8025 8026 8029 6889 6890 6892 7474 7475 7477 7478 8025 8026 8029 7474 7475 7476 7478 7479 7481 7482 8025 8026 8029 8030 8035 6889 6890 6891 6892 6893 6894 6896 7474 7475 7476 7477 7479 7481 7482 8025 8026 8029 8030 8035 6893 6894 6896 7477 7478 7481 7482 8029 8030 8035 6911 6919 7485 7486 7501 7502 7506 8031 8032 8038 7477 7478 7479 7482 7483 7487 7488 8029 8030 8035 8036 8041 6893 6894 6895 6896 6897 6898 6914 7477 7478 7479 7481 7483 7487 7488 8029 8030 8035 8036 8041 6897 6898 6914 7481 7482 7487 7488 8035 8036 8041 6910 6911 7485 7486 7490 7491 7506 8037 8038 8043 6910 6911 6919 7480 7484 7486 7490 7491 7501 7502 7506 8031 8032 8037 8038 8043 7480 7484 7485 7490 7491 7501 7502 8031 8032 8037 8038 8043 7481 7482 7483 7488 7489 7490 7491 8035 8036 8041 8042 8043 6897 6898 6899 6909 6914 6915 6917 7481 7482 7483 7487 7489 7490 7491 8035 8036 8041 8042 8043 6899 6909 6917 7487 7488 7490 7491 8041 8042 8043 6899 6909 6910 6911 6917 6918 7484 7485 7486 7487 7488 7489 7491 7506 8037 8038 8041 8042 8043 7484 7485 7486 7487 7488 7489 7490 8037 8038 8041 8042 8043 6903 6904 6905 6907 6908 7493 7494 7496 7497 8009 8010 8046 6900 6901 6902 6903 6904 6905 6907 6908 7456 7457 7458 7459 7460 7492 7494 7496 7497 8009 8010 8046 7456 7457 7458 7459 7460 7492 7493 7496 7497 8009 8010 8046 6906 6907 6908 7052 7053 7496 7497 7499 7500 8045 8046 8049 6903 6904 6905 6906 6907 6908 7052 7053 7492 7493 7494 7495 7497 7499 7500 8009 8010 8045 8046 8049 7492 7493 7494 7495 7496 7499 7500 8009 8010 8045 8046 8049 7051 7052 7053 7055 7056 7499 7500 7615 7616 8048 8049 8052 6906 6907 6908 7051 7052 7053 7055 7056 7495 7496 7497 7498 7500 7615 7616 8045 8046 8048 8049 8052 7495 7496 7497 7498 7499 7615 7616 8045 8046 8048 8049 8052 7480 7485 7486 7502 7503 7518 7519 8027 8031 8032 8038 8055 6911 6919 6920 7480 7485 7486 7501 7503 7506 7507 7514 7516 7518 7519 8027 8031 8032 8038 8055 6920 7501 7502 7514 7516 7518 7519 8027 8032 8055 6916 6917 6918 7505 7506 7508 7511 8063 7504 7506 7507 7508 7511 7512 7516 8063 6909 6910 6911 6916 6917 6918 6919 6920 7480 7484 7485 7490 7502 7504 7505 7507 7508 7511 7512 7516 8063 6919 6920 7502 7505 7506 7512 7516 8063 7504 7505 7506 7509 7511 8062 8063 8066 7508 7510 7511 7521 7524 8062 8063 8066 6928 6929 6930 7509 7511 7521 7524 8066 6912 6913 6914 6915 6916 6917 6918 6928 6929 6930 7504 7505 7506 7508 7509 7510 7521 7524 8062 8063 8066 7505 7506 7507 7513 7516 8061 8063 8070 7512 7515 7516 8061 8063 8070 8071 8074 6920 7502 7503 7515 7516 7517 7519 8074 7513 7514 7516 7517 7519 8070 8071 8074 6919 6920 7502 7503 7505 7506 7507 7512 7513 7514 7515 7517 7519 8061 8063 8070 8071 8074 7514 7515 7516 7519 7520 8072 8074 8076 7501 7502 7503 7519 7520 8027 8032 8055 8056 8058 8060 8076 6920 7501 7502 7503 7514 7515 7516 7517 7518 7520 8027 8032 8055 8056 8058 8060 8072 8074 8076 7517 7518 7519 8055 8056 8058 8060 8072 8074 8076 7509 7510 7511 7522 7524 8065 8066 8081 7521 7523 7524 7537 7540 8065 8066 8081 6943 6944 6946 7522 7524 7537 7540 8081 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6943 6944 6946 7509 7510 7511 7521 7522 7523 7537 7540 8065 8066 8081 6988 6989 6990 7527 7528 7566 7568 8085 6935 6937 6938 7527 7528 7529 7532 8085 7525 7526 7528 7529 7532 7566 7568 8085 6931 6932 6933 6934 6935 6937 6938 6988 6989 6990 7525 7526 7527 7529 7532 7566 7568 8085 7526 7527 7528 7531 7532 8083 8085 8090 6939 6941 6942 7531 7532 7533 7536 8090 7529 7530 7532 7533 7536 8083 8085 8090 6935 6936 6937 6938 6939 6941 6942 7526 7527 7528 7529 7530 7531 7533 7536 8083 8085 8090 7530 7531 7532 7535 7536 8087 8090 8093 6958 6959 6960 7535 7536 7544 7545 8093 7533 7534 7536 7544 7545 8087 8090 8093 6939 6940 6941 6942 6958 6959 6960 7530 7531 7532 7533 7534 7535 7544 7545 8087 8090 8093 7522 7523 7524 7538 7540 8080 8081 8095 7537 7539 7540 7541 7543 8080 8081 8095 6947 6948 6950 7538 7540 7541 7543 8095 6943 6944 6945 6946 6947 6948 6950 7522 7523 7524 7537 7538 7539 7541 7543 8080 8081 8095 7538 7539 7540 7542 7543 7545 7546 8095 6954 6955 6957 7541 7543 7545 7546 8095 6947 6948 6949 6950 6951 6952 6953 6954 6955 6957 7538 7539 7540 7541 7542 7545 7546 8095 7534 7535 7536 7545 7546 8091 8093 8095 6954 6955 6956 6957 6958 6959 6960 7534 7535 7536 7541 7542 7543 7544 7546 8091 8093 8095 7541 7542 7543 7544 7545 8091 8093 8095 7279 7280 7281 7548 7550 7834 7835 8100 7547 7550 7551 7834 7835 8099 8100 8104 6962 6963 6965 7550 7551 7553 7554 8104 6961 6962 6963 6965 7279 7280 7281 7547 7548 7549 7551 7553 7554 7834 7835 8099 8100 8104 7548 7549 7550 7553 7554 8099 8100 8104 7030 7031 7033 7553 7554 7603 7606 8104 6962 6963 6964 6965 6966 6967 6968 7030 7031 7033 7549 7550 7551 7552 7554 7603 7606 8104 7549 7550 7551 7552 7553 7603 7606 8104 6980 6981 6982 7557 7558 7564 7565 8108 6970 6978 6979 7557 7558 7560 7561 8108 6969 6970 6978 6979 6980 6981 6982 7555 7556 7558 7560 7561 7564 7565 8108 7555 7556 7557 7560 7561 7564 7565 8108 6991 6992 6998 7560 7561 7571 7572 8108 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6991 6992 6998 7556 7557 7558 7559 7561 7571 7572 8108 7556 7557 7558 7559 7560 7571 7572 8108 6985 6986 6987 7563 7565 7567 7568 8111 7562 7564 7565 7567 7568 8105 8108 8111 7555 7557 7558 7563 7565 8105 8108 8111 6980 6981 6982 6983 6985 6986 6987 7555 7557 7558 7562 7563 7564 7567 7568 8105 8108 8111 7525 7527 7528 7567 7568 8082 8085 8111 7562 7563 7565 7566 7568 8082 8085 8111 6984 6985 6986 6987 6988 6989 6990 7525 7527 7528 7562 7563 7565 7566 7567 8082 8085 8111 6992 6993 6998 7570 7571 7573 7575 8115 7569 7571 7572 7573 7575 8107 8108 8115 6991 6992 6993 6998 7559 7560 7561 7569 7570 7572 7573 7575 8107 8108 8115 7559 7560 7561 7570 7571 8107 8108 8115 7569 7570 7571 7575 7576 8114 8115 8119 6993 6998 6999 7575 7576 7577 7580 8119 6992 6993 6998 6999 7569 7570 7571 7573 7574 7576 7577 7580 8114 8115 8119 7573 7574 7575 7577 7580 8114 8115 8119 7574 7575 7576 7578 7580 8118 8119 8123 7577 7579 7580 7581 7586 8118 8119 8123 7008 7009 7010 7578 7580 7581 7586 8123 6993 6994 6995 6996 6997 6998 6999 7008 7009 7010 7574 7575 7576 7577 7578 7579 7581 7586 8118 8119 8123 7578 7579 7580 7586 7587 8122 8123 8126 7011 7013 7014 7583 7584 7588 7591 8126 7582 7584 7585 7586 7587 7588 7591 8126 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7011 7013 7014 7582 7583 7585 7586 7587 7588 7591 8126 7007 7008 7009 7583 7584 7586 7587 8126 7007 7008 7009 7010 7578 7579 7580 7581 7583 7584 7585 7587 8122 8123 8126 7581 7583 7584 7585 7586 8122 8123 8126 7582 7583 7584 7589 7591 8125 8126 8128 7588 7590 7591 7593 7594 8125 8126 8128 7015 7016 7018 7589 7591 7593 7594 8128 7011 7012 7013 7014 7015 7016 7018 7582 7583 7584 7588 7589 7590 7593 7594 8125 8126 8128 7022 7024 7025 7593 7594 7595 7597 8128 7015 7016 7017 7018 7019 7020 7021 7022 7024 7025 7589 7590 7591 7592 7594 7595 7597 8128 7589 7590 7591 7592 7593 7595 7597 8128 7592 7593 7594 7597 7598 8127 8128 8132 7026 7028 7029 7597 7598 7599 7601 8132 7022 7023 7024 7025 7026 7028 7029 7592 7593 7594 7595 7596 7598 7599 7601 8127 8128 8132 7595 7596 7597 7599 7601 8127 8128 8132 7596 7597 7598 7601 7602 8131 8132 8136 7041 7049 7050 7601 7602 7607 7612 8136 7026 7027 7028 7029 7041 7049 7050 7596 7597 7598 7599 7600 7602 7607 7612 8131 8132 8136 7599 7600 7601 7607 7612 8131 8132 8136 7552 7553 7554 7604 7606 8103 8104 8141 7603 7605 7606 7608 7610 8103 8104 8141 7034 7035 7037 7604 7606 7608 7610 8141 7030 7031 7032 7033 7034 7035 7037 7552 7553 7554 7603 7604 7605 7608 7610 8103 8104 8141 7600 7601 7602 7612 7613 8135 8136 8143 7604 7605 7606 7609 7610 8141 8142 8143 7608 7610 7611 7612 7613 8141 8142 8143 7034 7035 7036 7037 7038 7039 7040 7042 7043 7044 7604 7605 7606 7608 7609 7611 7612 7613 8141 8142 8143 7042 7043 7044 7609 7610 7612 7613 8143 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7600 7601 7602 7607 7609 7610 7611 7613 8135 8136 8143 7607 7609 7610 7611 7612 8135 8136 8143 7054 7055 7056 7058 7059 7615 7616 7618 7619 8051 8052 8151 7051 7052 7053 7054 7055 7056 7058 7059 7498 7499 7500 7614 7616 7618 7619 8048 8049 8051 8052 8151 7498 7499 7500 7614 7615 7618 7619 8048 8049 8051 8052 8151 7057 7058 7059 7061 7062 7618 7619 7621 7622 8150 8151 8154 7054 7055 7056 7057 7058 7059 7061 7062 7614 7615 7616 7617 7619 7621 7622 8051 8052 8150 8151 8154 7614 7615 7616 7617 7618 7621 7622 8051 8052 8150 8151 8154 7060 7061 7062 7064 7065 7621 7622 7624 7625 8153 8154 8157 7057 7058 7059 7060 7061 7062 7064 7065 7617 7618 7619 7620 7622 7624 7625 8150 8151 8153 8154 8157 7617 7618 7619 7620 7621 7624 7625 8150 8151 8153 8154 8157 7063 7064 7065 7067 7068 7624 7625 7627 7628 8156 8157 8160 7060 7061 7062 7063 7064 7065 7067 7068 7620 7621 7622 7623 7625 7627 7628 8153 8154 8156 8157 8160 7620 7621 7622 7623 7624 7627 7628 8153 8154 8156 8157 8160 7066 7067 7068 7070 7071 7627 7628 7630 7631 8159 8160 8163 7063 7064 7065 7066 7067 7068 7070 7071 7623 7624 7625 7626 7628 7630 7631 8156 8157 8159 8160 8163 7623 7624 7625 7626 7627 7630 7631 8156 8157 8159 8160 8163 7069 7070 7071 7073 7074 7630 7631 7633 7634 8162 8163 8166 7066 7067 7068 7069 7070 7071 7073 7074 7626 7627 7628 7629 7631 7633 7634 8159 8160 8162 8163 8166 7626 7627 7628 7629 7630 7633 7634 8159 8160 8162 8163 8166 7072 7073 7074 7078 7079 7633 7634 7638 7639 8165 8166 8171 7069 7070 7071 7072 7073 7074 7078 7079 7629 7630 7631 7632 7634 7638 7639 8162 8163 8165 8166 8171 7629 7630 7631 7632 7633 7638 7639 8162 8163 8165 8166 8171 7636 7637 7638 7639 8169 8170 8171 7075 7076 7077 7078 7079 7635 7637 7638 7639 8169 8170 8171 7075 7076 7077 7078 7079 7635 7636 7638 7639 8169 8170 8171 7072 7073 7074 7075 7076 7077 7078 7079 7632 7633 7634 7635 7636 7637 7639 8165 8166 8169 8170 8171 7632 7633 7634 7635 7636 7637 7638 8165 8166 8169 8170 8171 7641 7643 7662 7663 8178 7640 7642 7643 7662 7663 8178 8179 8181 7641 7643 7644 7645 7646 8178 8179 8181 7640 7641 7642 7644 7645 7646 7662 7663 8178 8179 8181 7642 7643 7645 7646 8181 7642 7643 7644 7646 7647 7648 7650 8181 7080 7081 7082 7642 7643 7644 7645 7647 7648 7650 8181 7080 7081 7082 7645 7646 7648 7650 8181 7645 7646 7647 7649 7650 8181 8182 8183 7648 7650 7651 7888 7890 8181 8182 8183 7080 7081 7082 7083 7321 7322 7323 7645 7646 7647 7648 7649 7651 7888 7890 8181 8182 8183 7321 7322 7323 7649 7650 7888 7890 8183 7085 7086 7087 7653 7654 7666 7667 8188 7652 7654 7655 7656 7658 7666 7667 8188 7085 7086 7087 7652 7653 7655 7656 7658 7666 7667 8188 7653 7654 7656 7658 8188 7653 7654 7655 7657 7658 8188 8189 8192 7656 7658 7659 7660 7662 8188 8189 8192 7653 7654 7655 7656 7657 7659 7660 7662 8188 8189 8192 7657 7658 7660 7662 8192 7657 7658 7659 7661 7662 8192 8193 8195 7660 7662 7663 8173 8178 8192 8193 8195 7640 7641 7643 7657 7658 7659 7660 7661 7663 8173 8178 8192 8193 8195 7640 7641 7643 7661 7662 8173 8178 8195 7096 7097 7098 7665 7666 7673 7674 8200 7664 7666 7667 7673 7674 8185 8188 8200 7084 7085 7086 7087 7096 7097 7098 7652 7653 7654 7664 7665 7667 7673 7674 8185 8188 8200 7652 7653 7654 7665 7666 8185 8188 8200 7107 7112 7125 7670 7671 7679 7686 8204 7092 7094 7095 7670 7671 7672 7673 8204 7668 7669 7671 7672 7673 7679 7686 8204 7088 7089 7090 7091 7092 7094 7095 7107 7112 7125 7668 7669 7670 7672 7673 7679 7686 8204 7669 7670 7671 7673 7674 8197 8200 8204 7092 7093 7094 7095 7096 7097 7098 7664 7665 7666 7669 7670 7671 7672 7674 8197 8200 8204 7664 7665 7666 7672 7673 8197 8200 8204 7155 7156 7158 7676 7677 7728 7729 8208 7675 7677 7678 7680 7682 7728 7729 8208 7099 7100 7101 7102 7103 7104 7105 7106 7108 7110 7155 7156 7158 7675 7676 7678 7680 7682 7728 7729 8208 7106 7108 7110 7676 7677 7680 7682 8208 7668 7670 7671 7686 7687 8202 8204 8212 7676 7677 7678 7681 7682 8208 8209 8216 7680 7682 7683 7688 7690 8208 8209 8216 7106 7108 7109 7110 7676 7677 7678 7680 7681 7683 7688 7690 8208 8209 8216 7108 7109 7110 7681 7682 7688 7690 8216 7112 7117 7125 7685 7686 7692 7695 8221 7684 7686 7687 7692 7695 8211 8212 8221 7107 7112 7117 7125 7668 7670 7671 7679 7684 7685 7687 7692 7695 8202 8204 8211 8212 8221 7679 7685 7686 8202 8204 8211 8212 8221 7681 7682 7683 7689 7690 8216 8217 8224 7688 7690 7691 7696 7698 8216 8217 8224 7108 7109 7110 7111 7113 7114 7115 7681 7682 7683 7688 7689 7691 7696 7698 8216 8217 8224 7113 7114 7115 7689 7690 7696 7698 8224 7684 7685 7686 7693 7695 8220 8221 8226 7692 7694 7695 7700 7701 8220 8221 8226 7117 7125 7126 7693 7695 7700 7701 8226 7112 7117 7125 7126 7684 7685 7686 7692 7693 7694 7700 7701 8220 8221 8226 7689 7690 7691 7697 7698 8224 8225 8226 7696 7698 7699 7700 7701 8224 8225 8226 7113 7114 7115 7116 7118 7119 7120 7689 7690 7691 7696 7697 7699 7700 7701 8224 8225 8226 7118 7119 7120 7697 7698 7700 7701 8226 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7693 7694 7695 7697 7698 7699 7701 8226 7693 7694 7695 7697 7698 7699 7700 8226 7147 7148 7149 7412 7417 7703 7704 7705 7707 7717 7718 8230 7127 7128 7129 7130 7131 7132 7133 7135 7147 7148 7149 7412 7417 7702 7704 7705 7707 7717 7718 8230 7130 7131 7132 7133 7135 7702 7703 7705 7707 7717 7718 8230 7702 7703 7704 7706 7707 7717 7718 8230 8231 8235 7705 7707 7708 7710 7712 8230 8231 8235 7130 7131 7132 7133 7134 7135 7702 7703 7704 7705 7706 7708 7710 7712 7717 7718 8230 8231 8235 7133 7134 7135 7706 7707 7710 7712 8235 7186 7187 7188 7714 7715 7751 7752 8237 7706 7707 7708 7711 7712 8235 8236 8237 7710 7712 7713 7714 7715 8235 8236 8237 7133 7134 7135 7136 7137 7138 7139 7141 7142 7143 7706 7707 7708 7710 7711 7713 7714 7715 8235 8236 8237 7141 7142 7143 7711 7712 7714 7715 8237 7140 7141 7142 7143 7144 7145 7146 7186 7187 7188 7709 7711 7712 7713 7715 7751 7752 8237 7709 7711 7712 7713 7714 7751 7752 8237 7412 7417 7418 7717 7718 7964 7965 7966 7972 8228 8230 8241 7147 7148 7149 7412 7417 7418 7702 7703 7704 7705 7707 7716 7718 7964 7965 7966 7972 8228 8230 8241 7702 7703 7704 7705 7707 7716 7717 7964 7966 8228 8230 8241 7225 7226 7227 7720 7721 7785 7788 8246 7719 7721 7722 7723 7725 7785 7788 8246 7150 7151 7152 7153 7225 7226 7227 7719 7720 7722 7723 7725 7785 7788 8246 7151 7152 7153 7720 7721 7723 7725 8246 7720 7721 7722 7724 7725 8246 8247 8250 7723 7725 7726 7727 7728 8246 8247 8250 7151 7152 7153 7154 7162 7163 7164 7720 7721 7722 7723 7724 7726 7727 7728 8246 8247 8250 7162 7163 7164 7724 7725 7727 7728 8250 7724 7725 7726 7728 7729 8206 8208 8250 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7675 7676 7677 7724 7725 7726 7727 7729 8206 8208 8250 7675 7676 7677 7727 7728 8206 8208 8250 7198 7199 7200 7731 7733 7764 7765 8255 7730 7732 7733 7734 7738 7764 7765 8255 7172 7173 7176 7731 7733 7734 7738 8255 7165 7166 7167 7168 7169 7170 7171 7172 7173 7176 7198 7199 7200 7730 7731 7732 7734 7738 7764 7765 8255 7731 7732 7733 7735 7738 8254 8255 8259 7734 7736 7738 8254 8255 8258 8259 8263 7735 7737 7738 7739 7743 8258 8259 8263 7173 7174 7176 7736 7738 7739 7743 8263 7172 7173 7174 7176 7731 7732 7733 7734 7735 7736 7737 7739 7743 8254 8255 8258 8259 8263 7736 7737 7738 7740 7743 8262 8263 8267 7739 7741 7743 8262 8263 8266 8267 8270 7740 7742 7743 7744 7746 8266 8267 8270 7174 7176 7177 7741 7743 7744 7746 8270 7173 7174 7176 7177 7736 7737 7738 7739 7740 7741 7742 7744 7746 8262 8263 8266 8267 8270 7741 7742 7743 7745 7746 7748 7749 8270 7178 7179 7181 7744 7746 7748 7749 8270 7174 7175 7176 7177 7178 7179 7181 7741 7742 7743 7744 7745 7748 7749 8270 7185 7187 7188 7748 7749 7750 7752 8270 7178 7179 7180 7181 7182 7183 7184 7185 7187 7188 7744 7745 7746 7747 7749 7750 7752 8270 7744 7745 7746 7747 7748 7750 7752 8270 7747 7748 7749 7752 7753 8269 8270 8273 7709 7714 7715 7752 7753 8232 8237 8273 7185 7186 7187 7188 7709 7714 7715 7747 7748 7749 7750 7751 7753 8232 8237 8269 8270 8273 7750 7751 7752 8232 8237 8269 8270 8273 7210 7211 7212 7755 7757 7775 7776 8277 7754 7756 7757 7758 7761 7775 7776 8277 7193 7194 7196 7755 7757 7758 7761 8277 7189 7190 7191 7192 7193 7194 7196 7210 7211 7212 7754 7755 7756 7758 7761 7775 7776 8277 7755 7756 7757 7759 7761 8276 8277 8281 7758 7760 7761 7762 7765 8276 8277 8281 7197 7198 7200 7759 7761 7762 7765 8281 7193 7194 7195 7196 7197 7198 7200 7755 7756 7757 7758 7759 7760 7762 7765 8276 8277 8281 7759 7760 7761 7763 7765 8280 8281 8284 7762 7764 7765 8252 8255 8280 8281 8284 7730 7731 7733 7763 7765 8252 8255 8284 7197 7198 7199 7200 7730 7731 7733 7759 7760 7761 7762 7763 7764 8252 8255 8280 8281 8284 7218 7219 7220 7767 7769 7782 7783 8288 7766 7768 7769 7770 7772 7782 7783 8288 7205 7206 7208 7767 7769 7770 7772 8288 7201 7202 7203 7204 7205 7206 7208 7218 7219 7220 7766 7767 7768 7770 7772 7782 7783 8288 7767 7768 7769 7771 7772 7773 7776 8288 7209 7210 7212 7770 7772 7773 7776 8288 7205 7206 7207 7208 7209 7210 7212 7767 7768 7769 7770 7771 7773 7776 8288 7770 7771 7772 7774 7776 8287 8288 8292 7773 7775 7776 8274 8277 8287 8288 8292 7754 7755 7757 7774 7776 8274 8277 8292 7209 7210 7211 7212 7754 7755 7757 7770 7771 7772 7773 7774 7775 8274 8277 8287 8288 8292 7233 7234 7235 7778 7780 7784 7794 8296 7777 7779 7780 7781 7783 7784 7794 8296 7217 7218 7220 7778 7780 7781 7783 8296 7213 7214 7215 7216 7217 7218 7220 7233 7234 7235 7777 7778 7779 7781 7783 7784 7794 8296 7778 7779 7780 7782 7783 8285 8288 8296 7766 7767 7769 7781 7783 8285 8288 8296 7217 7218 7219 7220 7766 7767 7769 7778 7779 7780 7781 7782 8285 8288 8296 7777 7778 7780 7793 7794 8293 8296 8299 7719 7720 7721 7786 7788 8244 8246 8302 7785 7787 7788 7789 7791 8244 8246 8302 7228 7229 7231 7786 7788 7789 7791 8302 7221 7222 7223 7224 7225 7226 7227 7228 7229 7231 7719 7720 7721 7785 7786 7787 7789 7791 8244 8246 8302 7786 7787 7788 7790 7791 7792 7794 8302 7232 7233 7235 7789 7791 7792 7794 8302 7228 7229 7230 7231 7232 7233 7235 7786 7787 7788 7789 7790 7792 7794 8302 7789 7790 7791 7793 7794 8299 8300 8302 7784 7792 7794 8293 8296 8299 8300 8302 7232 7233 7234 7235 7777 7778 7780 7784 7789 7790 7791 7792 7793 8293 8296 8299 8300 8302 7257 7258 7259 7796 7797 7817 7818 8306 7795 7797 7798 7799 7801 7817 7818 8306 7236 7237 7238 7239 7240 7241 7242 7257 7258 7259 7795 7796 7798 7799 7801 7817 7818 8306 7240 7241 7242 7796 7797 7799 7801 8306 7796 7797 7798 7800 7801 8306 8307 8310 7799 7801 7802 7803 7805 8306 8307 8310 7240 7241 7242 7243 7244 7245 7246 7796 7797 7798 7799 7800 7802 7803 7805 8306 8307 8310 7244 7245 7246 7800 7801 7803 7805 8310 7800 7801 7802 7804 7805 8310 8311 8314 7803 7805 7806 7807 7809 8310 8311 8314 7244 7245 7246 7247 7248 7249 7250 7800 7801 7802 7803 7804 7806 7807 7809 8310 8311 8314 7248 7249 7250 7804 7805 7807 7809 8314 7804 7805 7806 7808 7809 8314 8315 8318 7807 7809 7810 7811 7813 8314 8315 8318 7248 7249 7250 7251 7252 7253 7254 7804 7805 7806 7807 7808 7810 7811 7813 8314 8315 8318 7252 7253 7254 7808 7809 7811 7813 8318 7808 7809 7810 7812 7813 8318 8319 8322 7811 7813 7814 7847 7849 8318 8319 8322 7252 7253 7254 7255 7287 7288 7289 7808 7809 7810 7811 7812 7814 7847 7849 8318 8319 8322 7287 7288 7289 7812 7813 7847 7849 8322 7275 7276 7277 7816 7817 7829 7830 8326 7815 7817 7818 7829 7830 8304 8306 8326 7256 7257 7258 7259 7275 7276 7277 7795 7796 7797 7815 7816 7818 7829 7830 8304 8306 8326 7795 7796 7797 7816 7817 8304 8306 8326 7284 7285 7286 7820 7821 7844 7845 8330 7819 7821 7822 7823 7825 7844 7845 8330 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7284 7285 7286 7819 7820 7822 7823 7825 7844 7845 8330 7267 7268 7269 7820 7821 7823 7825 8330 7820 7821 7822 7824 7825 8330 8331 8334 7823 7825 7826 7827 7829 8330 8331 8334 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7820 7821 7822 7823 7824 7826 7827 7829 8330 8331 8334 7274 7275 7276 7824 7825 7827 7829 8334 7824 7825 7826 7828 7829 8334 8335 8338 7827 7829 7830 8324 8326 8334 8335 8338 7274 7275 7276 7277 7815 7816 7817 7824 7825 7826 7827 7828 7830 8324 8326 8334 8335 8338 7815 7816 7817 7828 7829 8324 8326 8338 7282 7283 7285 7835 7836 7837 7840 8347 7833 7846 8097 8100 8149 8344 8345 8347 7832 7834 7835 7836 8097 8100 8149 8347 7547 7548 7550 7833 7835 7836 8100 8347 7278 7279 7280 7281 7282 7283 7285 7547 7548 7550 7831 7833 7834 7836 7837 7840 8100 8347 7831 7833 7834 7835 7837 7840 8100 8347 7831 7835 7836 7838 7840 8347 8348 8351 7837 7839 7840 8347 8348 8351 8352 8355 7838 7840 7841 7842 7844 8351 8352 8355 7282 7283 7284 7285 7831 7835 7836 7837 7838 7839 7841 7842 7844 8347 8348 8351 8352 8355 7283 7284 7285 7839 7840 7842 7844 8355 7839 7840 7841 7843 7844 8355 8356 8359 7842 7844 7845 8328 8330 8355 8356 8359 7283 7284 7285 7286 7819 7820 7821 7839 7840 7841 7842 7843 7845 8328 8330 8355 8356 8359 7819 7820 7821 7843 7844 8328 8330 8359 7832 8146 8149 8340 8344 8345 8347 8364 7812 7813 7814 7848 7849 8322 8323 8368 7847 7849 7850 7851 7853 8322 8323 8368 7287 7288 7289 7290 7291 7292 7294 7812 7813 7814 7847 7848 7850 7851 7853 8322 8323 8368 7291 7292 7294 7848 7849 7851 7853 8368 7848 7849 7850 7852 7853 8368 8369 8372 7851 7853 7854 7855 7857 8368 8369 8372 7291 7292 7293 7294 7848 7849 7850 7851 7852 7854 7855 7857 8368 8369 8372 7292 7293 7294 7852 7853 7855 7857 8372 7852 7853 7854 7856 7857 8372 8373 8376 7855 7857 7858 7859 7861 8372 8373 8376 7292 7293 7294 7295 7296 7297 7298 7852 7853 7854 7855 7856 7858 7859 7861 8372 8373 8376 7296 7297 7298 7856 7857 7859 7861 8376 7856 7857 7858 7860 7861 8376 8377 8380 7859 7861 7862 7863 7865 8376 8377 8380 7296 7297 7298 7299 7300 7301 7302 7856 7857 7858 7859 7860 7862 7863 7865 8376 8377 8380 7300 7301 7302 7860 7861 7863 7865 8380 7860 7861 7862 7864 7865 8380 8381 8384 7863 7865 7866 7867 7869 8380 8381 8384 7300 7301 7302 7303 7304 7305 7306 7860 7861 7862 7863 7864 7866 7867 7869 8380 8381 8384 7304 7305 7306 7864 7865 7867 7869 8384 7864 7865 7866 7868 7869 8384 8385 8388 7867 7869 7870 7871 7873 8384 8385 8388 7304 7305 7306 7307 7308 7309 7310 7864 7865 7866 7867 7868 7870 7871 7873 8384 8385 8388 7308 7309 7310 7868 7869 7871 7873 8388 7868 7869 7870 7872 7873 8388 8389 8392 7871 7873 7874 7875 7877 8388 8389 8392 7308 7309 7310 7311 7312 7313 7314 7868 7869 7870 7871 7872 7874 7875 7877 8388 8389 8392 7312 7313 7314 7872 7873 7875 7877 8392 7872 7873 7874 7876 7877 8392 8393 8396 7875 7877 7878 7879 7881 8392 8393 8396 7312 7313 7314 7315 7316 7317 7318 7872 7873 7874 7875 7876 7878 7879 7881 8392 8393 8396 7316 7317 7318 7876 7877 7879 7881 8396 7876 7877 7878 7880 7881 8396 8397 8400 7879 7881 7882 7883 7885 8396 8397 8400 7316 7317 7318 7319 7320 7393 7396 7876 7877 7878 7879 7880 7882 7883 7885 8396 8397 8400 7320 7393 7396 7880 7881 7883 7885 8400 7880 7881 7882 7884 7885 8400 8401 8403 7883 7885 7886 7945 7954 8400 8401 8403 7320 7393 7395 7396 7397 7880 7881 7882 7883 7884 7886 7945 7947 7950 7954 8400 8401 8403 7397 7884 7885 7945 7947 7950 7954 8403 7888 7889 7890 8175 8183 8410 8411 8414 7649 7650 7651 7887 7889 7890 8183 8414 7887 7888 7890 7891 7896 7897 8183 8414 7321 7322 7323 7324 7329 7330 7331 7649 7650 7651 7887 7888 7889 7891 7896 7897 8183 8414 7329 7330 7331 7889 7890 7896 7897 8414 7330 7331 7332 7893 7894 7897 7898 8417 7892 7894 7895 7897 7898 7899 7903 8417 7325 7326 7327 7328 7330 7331 7332 7333 7334 7335 7892 7893 7895 7897 7898 7899 7903 8417 7333 7334 7335 7893 7894 7899 7903 8417 7889 7890 7891 7897 7898 8414 8415 8417 7329 7330 7331 7332 7889 7890 7891 7892 7893 7894 7896 7898 8414 8415 8417 7892 7893 7894 7896 7897 8414 8415 8417 7893 7894 7895 7902 7903 8417 8418 8423 7337 7339 7340 7901 7903 7905 7906 8426 7900 7902 7903 7905 7906 8420 8423 8426 7899 7901 7903 8417 8418 8420 8423 8426 7333 7334 7335 7336 7337 7339 7340 7893 7894 7895 7899 7900 7901 7902 7905 7906 8417 8418 8420 8423 8426 7341 7343 7344 7905 7906 7907 7910 8426 7900 7901 7903 7904 7906 7907 7910 8426 7337 7338 7339 7340 7341 7343 7344 7900 7901 7903 7904 7905 7907 7910 8426 7904 7905 7906 7909 7910 8424 8426 8430 7345 7346 7347 7909 7910 7911 7913 8430 7907 7908 7910 7911 7913 8424 8426 8430 7341 7342 7343 7344 7345 7346 7347 7904 7905 7906 7907 7908 7909 7911 7913 8424 8426 8430 7908 7909 7910 7912 7913 8428 8430 8433 7911 7913 7914 7923 7924 8428 8430 8433 7345 7346 7347 7348 7367 7368 7369 7908 7909 7910 7911 7912 7914 7923 7924 8428 8430 8433 7367 7368 7369 7912 7913 7923 7924 8433 7382 7383 7384 7916 7918 7936 7937 8438 7915 7917 7918 7919 7922 7936 7937 8438 7356 7357 7359 7916 7918 7919 7922 8438 7349 7350 7351 7352 7353 7354 7355 7356 7357 7359 7382 7383 7384 7915 7916 7917 7919 7922 7936 7937 8438 7916 7917 7918 7920 7922 8437 8438 8440 7919 7921 7922 7924 7925 8437 8438 8440 7363 7364 7366 7920 7922 7924 7925 8440 7356 7357 7358 7359 7360 7361 7362 7363 7364 7366 7916 7917 7918 7919 7920 7921 7924 7925 8437 8438 8440 7912 7913 7914 7924 7925 8433 8434 8440 7363 7364 7365 7366 7367 7368 7369 7912 7913 7914 7920 7921 7922 7923 7925 8433 8434 8440 7920 7921 7922 7923 7924 8433 8434 8440 7402 7403 7404 7943 7944 7957 7959 8444 7385 7386 7387 7929 7930 7934 7937 8449 7374 7376 7377 7929 7930 7931 7932 8449 7927 7928 7930 7931 7932 7934 7937 8449 7370 7371 7372 7373 7374 7376 7377 7385 7386 7387 7927 7928 7929 7931 7932 7934 7937 8449 7928 7929 7930 7932 7933 7938 7941 8449 7374 7375 7376 7377 7378 7379 7380 7388 7390 7391 7928 7929 7930 7931 7933 7938 7941 8449 7388 7390 7391 7931 7932 7938 7941 8449 7927 7929 7930 7935 7937 8448 8449 8452 7934 7936 7937 8435 8438 8448 8449 8452 7915 7916 7918 7935 7937 8435 8438 8452 7381 7382 7383 7384 7385 7386 7387 7915 7916 7918 7927 7929 7930 7934 7935 7936 8435 8438 8448 8449 8452 7931 7932 7933 7940 7941 8446 8449 8455 7390 7391 7392 7940 7941 7942 7943 8455 7938 7939 7941 7942 7943 8446 8449 8455 7388 7390 7391 7392 7931 7932 7933 7938 7939 7940 7942 7943 8446 8449 8455 7939 7940 7941 7943 7944 8443 8444 8455 7389 7390 7391 7392 7402 7403 7404 7926 7939 7940 7941 7942 7944 7957 7959 8443 8444 8455 7926 7942 7943 7957 7959 8443 8444 8455 7884 7885 7886 7946 7952 7954 8403 8464 7945 7952 7954 8403 8404 8456 8459 8464 7397 7885 7886 7949 7950 7951 7954 8468 7405 7407 7408 7949 7950 7960 7963 8468 7947 7948 7950 7951 7954 7960 7963 8468 7393 7394 7395 7396 7397 7405 7407 7408 7885 7886 7947 7948 7949 7951 7954 7960 7963 8468 7947 7949 7950 7954 7955 8465 8468 8472 7945 7946 7953 7954 8403 8461 8464 8476 7952 7954 7955 8461 8464 8471 8472 8476 7397 7884 7885 7886 7945 7946 7947 7949 7950 7951 7952 7953 7955 8403 8461 8464 8465 8468 8471 8472 8476 7951 7953 7954 8465 8468 8471 8472 8476 7406 7407 7408 7958 7959 7961 7963 8480 7926 7943 7944 7958 7959 8442 8444 8480 7956 7957 7959 7961 7963 8442 8444 8480 7398 7399 7400 7401 7402 7403 7404 7406 7407 7408 7926 7943 7944 7956 7957 7958 7961 7963 8442 8444 8480 7948 7949 7950 7962 7963 8466 8468 8484 7956 7958 7959 7962 7963 8477 8480 8484 7960 7961 7963 8466 8468 8477 8480 8484 7405 7406 7407 7408 7948 7949 7950 7956 7958 7959 7960 7961 7962 8466 8468 8477 8480 8484 7716 7717 7718 7966 7967 8228 8230 8239 8241 8489 8490 8493 7412 7417 7418 7716 7717 7966 7967 7972 7973 8492 8493 8496 7412 7417 7418 7716 7717 7718 7964 7965 7967 7972 7973 8228 8230 8239 8241 8489 8490 8492 8493 8496 7964 7965 7966 7972 7973 8239 8241 8489 8490 8492 8493 8496 7436 7437 7438 7440 7441 7969 7970 7974 7975 7992 7993 8499 7409 7410 7411 7413 7414 7415 7419 7420 7436 7437 7438 7440 7441 7968 7970 7974 7975 7992 7993 8499 7413 7414 7415 7419 7420 7968 7969 7974 7975 7992 7993 8499 7416 7417 7418 7423 7424 7972 7973 7978 7979 8495 8496 8502 7412 7416 7417 7418 7423 7424 7716 7717 7965 7966 7967 7971 7973 7978 7979 8492 8493 8495 8496 8502 7965 7966 7967 7971 7972 7978 7979 8492 8493 8495 8496 8502 7968 7969 7970 7975 7976 7980 7981 7992 7993 8499 8500 8505 7413 7414 7415 7419 7420 7421 7425 7426 7968 7969 7970 7974 7976 7980 7981 7992 7993 8499 8500 8505 7419 7420 7421 7425 7426 7974 7975 7980 7981 8499 8500 8505 7422 7423 7424 7429 7430 7978 7979 7984 7985 8501 8502 8508 7416 7417 7418 7422 7423 7424 7429 7430 7971 7972 7973 7977 7979 7984 7985 8495 8496 8501 8502 8508 7971 7972 7973 7977 7978 7984 7985 8495 8496 8501 8502 8508 7974 7975 7976 7981 7982 7986 7987 8499 8500 8505 8506 8511 7419 7420 7421 7425 7426 7427 7431 7432 7974 7975 7976 7980 7982 7986 7987 8499 8500 8505 8506 8511 7425 7426 7427 7431 7432 7980 7981 7986 7987 8505 8506 8511 7428 7429 7430 7434 7435 7984 7985 7989 7990 8507 8508 8513 7422 7423 7424 7428 7429 7430 7434 7435 7977 7978 7979 7983 7985 7989 7990 8501 8502 8507 8508 8513 7977 7978 7979 7983 7984 7989 7990 8501 8502 8507 8508 8513 7980 7981 7982 7987 7988 7989 7990 8505 8506 8511 8512 8513 7425 7426 7427 7431 7432 7433 7434 7435 7980 7981 7982 7986 7988 7989 7990 8505 8506 8511 8512 8513 7431 7432 7433 7434 7435 7986 7987 7989 7990 8511 8512 8513 7428 7429 7430 7431 7432 7433 7434 7435 7983 7984 7985 7986 7987 7988 7990 8507 8508 8511 8512 8513 7983 7984 7985 7986 7987 7988 7989 8507 8508 8511 8512 8513 7439 7440 7441 7443 7444 7992 7993 7995 7996 8498 8499 8516 7436 7437 7438 7439 7440 7441 7443 7444 7968 7969 7970 7974 7975 7991 7993 7995 7996 8498 8499 8516 7968 7969 7970 7974 7975 7991 7992 7995 7996 8498 8499 8516 7442 7443 7444 7446 7447 7995 7996 7998 7999 8515 8516 8520 7439 7440 7441 7442 7443 7444 7446 7447 7991 7992 7993 7994 7996 7998 7999 8498 8499 8515 8516 8520 7991 7992 7993 7994 7995 7998 7999 8498 8499 8515 8516 8520 7445 7446 7447 7449 7450 7998 7999 8000 8002 8519 8520 8523 7442 7443 7444 7445 7446 7447 7449 7450 7994 7995 7996 7997 7999 8000 8002 8515 8516 8519 8520 8523 7994 7995 7996 7997 7998 8000 8002 8515 8516 8519 8520 8523 7997 7998 7999 8001 8002 8518 8519 8520 8523 8529 8530 8535 8000 8002 8003 8005 8006 8518 8523 8529 8530 8534 8535 8540 7445 7446 7447 7448 7449 7450 7454 7455 7997 7998 7999 8000 8001 8003 8005 8006 8518 8519 8520 8523 8529 8530 8534 8535 8540 7448 7449 7450 7454 7455 8001 8002 8005 8006 8534 8535 8540 8005 8006 8007 8008 8539 8540 8543 8001 8002 8003 8004 8006 8007 8008 8534 8535 8539 8540 8543 7448 7449 7450 7451 7452 7453 7454 7455 8001 8002 8003 8004 8005 8007 8008 8534 8535 8539 8540 8543 7451 7452 7453 7454 7455 8004 8005 8006 8008 8539 8540 8543 7451 7452 7453 7454 7455 8004 8005 8006 8007 8539 8540 8543 7492 7493 7494 7496 7497 8010 8011 8012 8013 8046 8047 8546 7456 7457 7458 7459 7460 7461 7462 7463 7492 7493 7494 7496 7497 8009 8011 8012 8013 8046 8047 8546 7459 7460 7461 7462 7463 8009 8010 8012 8013 8046 8047 8546 8009 8010 8011 8013 8014 8015 8016 8046 8047 8546 8547 8549 7459 7460 7461 7462 7463 7464 7465 7466 8009 8010 8011 8012 8014 8015 8016 8046 8047 8546 8547 8549 7462 7463 7464 7465 7466 8012 8013 8015 8016 8546 8547 8549 8012 8013 8014 8016 8017 8018 8019 8546 8547 8549 8550 8552 7462 7463 7464 7465 7466 7467 7468 7469 8012 8013 8014 8015 8017 8018 8019 8546 8547 8549 8550 8552 7465 7466 7467 7468 7469 8015 8016 8018 8019 8549 8550 8552 8015 8016 8017 8019 8020 8021 8022 8549 8550 8552 8553 8555 7465 7466 7467 7468 7469 7470 7471 7472 8015 8016 8017 8018 8020 8021 8022 8549 8550 8552 8553 8555 7468 7469 7470 7471 7472 8018 8019 8021 8022 8552 8553 8555 8018 8019 8020 8022 8023 8024 8025 8552 8553 8555 8556 8559 7468 7469 7470 7471 7472 7473 7474 7475 8018 8019 8020 8021 8023 8024 8025 8552 8553 8555 8556 8559 7471 7472 7473 7474 7475 8021 8022 8024 8025 8555 8556 8559 8021 8022 8023 8025 8026 8028 8029 8555 8556 8559 8560 8565 7471 7472 7473 7474 7475 7476 7477 7478 8021 8022 8023 8024 8026 8028 8029 8555 8556 8559 8560 8565 7474 7475 7476 7477 7478 8024 8025 8028 8029 8559 8560 8565 7501 7502 7503 7518 7519 8032 8033 8054 8055 8561 8562 8568 8024 8025 8026 8029 8030 8034 8035 8559 8560 8565 8566 8571 7474 7475 7476 7477 7478 7479 7481 7482 8024 8025 8026 8028 8030 8034 8035 8559 8560 8565 8566 8571 7477 7478 7479 7481 7482 8028 8029 8034 8035 8565 8566 8571 7480 7485 7486 7501 7502 8032 8033 8038 8039 8567 8568 8574 7480 7485 7486 7501 7502 7503 7518 7519 8027 8031 8033 8038 8039 8054 8055 8561 8562 8567 8568 8574 8027 8031 8032 8038 8039 8054 8055 8561 8562 8567 8568 8574 8028 8029 8030 8035 8036 8040 8041 8565 8566 8571 8572 8577 7477 7478 7479 7481 7482 7483 7487 7488 8028 8029 8030 8034 8036 8040 8041 8565 8566 8571 8572 8577 7481 7482 7483 7487 7488 8034 8035 8040 8041 8571 8572 8577 7484 7485 7486 7490 7491 8038 8039 8043 8044 8573 8574 8579 7480 7484 7485 7486 7490 7491 7501 7502 8031 8032 8033 8037 8039 8043 8044 8567 8568 8573 8574 8579 8031 8032 8033 8037 8038 8043 8044 8567 8568 8573 8574 8579 8034 8035 8036 8041 8042 8043 8044 8571 8572 8577 8578 8579 7481 7482 7483 7487 7488 7489 7490 7491 8034 8035 8036 8040 8042 8043 8044 8571 8572 8577 8578 8579 7487 7488 7489 7490 7491 8040 8041 8043 8044 8577 8578 8579 7484 7485 7486 7487 7488 7489 7490 7491 8037 8038 8039 8040 8041 8042 8044 8573 8574 8577 8578 8579 8037 8038 8039 8040 8041 8042 8043 8573 8574 8577 8578 8579 7495 7496 7497 7499 7500 8046 8047 8049 8050 8545 8546 8582 7492 7493 7494 7495 7496 7497 7499 7500 8009 8010 8011 8012 8013 8045 8047 8049 8050 8545 8546 8582 8009 8010 8011 8012 8013 8045 8046 8049 8050 8545 8546 8582 7498 7499 7500 7615 7616 8049 8050 8052 8053 8581 8582 8585 7495 7496 7497 7498 7499 7500 7615 7616 8045 8046 8047 8048 8050 8052 8053 8545 8546 8581 8582 8585 8045 8046 8047 8048 8049 8052 8053 8545 8546 8581 8582 8585 7614 7615 7616 7618 7619 8052 8053 8151 8152 8584 8585 8588 7498 7499 7500 7614 7615 7616 7618 7619 8048 8049 8050 8051 8053 8151 8152 8581 8582 8584 8585 8588 8048 8049 8050 8051 8052 8151 8152 8581 8582 8584 8585 8588 8027 8032 8033 8055 8056 8057 8060 8557 8561 8562 8568 8591 7501 7502 7503 7518 7519 7520 8027 8032 8033 8054 8056 8057 8058 8060 8076 8557 8561 8562 8568 8591 7518 7519 7520 8054 8055 8057 8058 8060 8076 8557 8562 8591 8054 8055 8056 8059 8060 8557 8562 8591 8592 8593 8595 8600 7518 7519 7520 8055 8056 8059 8060 8076 8077 8599 8600 8603 8057 8058 8060 8076 8077 8591 8592 8593 8595 8599 8600 8603 7518 7519 7520 8054 8055 8056 8057 8058 8059 8076 8077 8557 8562 8591 8592 8593 8595 8599 8600 8603 7512 7513 7516 8063 8064 8068 8070 8608 7508 7509 7511 8063 8064 8066 8067 8608 7504 7505 7506 7507 7508 7509 7511 7512 7513 7516 8061 8062 8064 8066 8067 8068 8070 8608 8061 8062 8063 8066 8067 8068 8070 8608 7521 7522 7524 8066 8067 8078 8081 8608 7508 7509 7510 7511 7521 7522 7524 8062 8063 8064 8065 8067 8078 8081 8608 8062 8063 8064 8065 8066 8078 8081 8608 8061 8063 8064 8069 8070 8608 8609 8610 8068 8070 8071 8073 8074 8608 8609 8610 7512 7513 7515 7516 8061 8063 8064 8068 8069 8071 8073 8074 8608 8609 8610 7513 7515 7516 8069 8070 8073 8074 8610 7517 7519 7520 8073 8074 8075 8076 8610 8069 8070 8071 8072 8074 8075 8076 8610 7513 7514 7515 7516 7517 7519 7520 8069 8070 8071 8072 8073 8075 8076 8610 8072 8073 8074 8076 8077 8602 8603 8610 7517 7518 7519 7520 8055 8056 8058 8059 8060 8072 8073 8074 8075 8077 8599 8600 8602 8603 8610 8058 8059 8060 8075 8076 8599 8600 8602 8603 8610 8065 8066 8067 8079 8081 8604 8608 8612 8078 8080 8081 8095 8096 8604 8608 8612 7537 7538 7540 8079 8081 8095 8096 8612 7521 7522 7523 7524 7537 7538 7540 8065 8066 8067 8078 8079 8080 8095 8096 8604 8608 8612 7566 7567 7568 8084 8085 8109 8111 8617 7529 7531 7532 8084 8085 8086 8090 8617 8082 8083 8085 8086 8090 8109 8111 8617 7525 7526 7527 7528 7529 7531 7532 7566 7567 7568 8082 8083 8084 8086 8090 8109 8111 8617 8083 8084 8085 8089 8090 8615 8617 8622 7533 7535 7536 8088 8090 8092 8093 8625 8087 8089 8090 8092 8093 8619 8622 8625 8086 8088 8090 8615 8617 8619 8622 8625 7529 7530 7531 7532 7533 7535 7536 8083 8084 8085 8086 8087 8088 8089 8092 8093 8615 8617 8619 8622 8625 7544 7545 7546 8092 8093 8094 8095 8625 8087 8088 8090 8091 8093 8094 8095 8625 7533 7534 7535 7536 7544 7545 7546 8087 8088 8090 8091 8092 8094 8095 8625 8091 8092 8093 8095 8096 8611 8612 8625 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 8079 8080 8081 8091 8092 8093 8094 8096 8611 8612 8625 8079 8080 8081 8094 8095 8611 8612 8625 7832 7833 8098 8100 8148 8149 8347 8629 8097 8099 8100 8101 8104 8148 8149 8629 7548 7550 7551 8098 8100 8101 8104 8629 7547 7548 7550 7551 7832 7833 7834 7835 7836 8097 8098 8099 8101 8104 8148 8149 8347 8629 8098 8099 8100 8102 8104 8628 8629 8631 8101 8103 8104 8139 8141 8628 8629 8631 7603 7604 7606 8102 8104 8139 8141 8631 7548 7549 7550 7551 7552 7553 7554 7603 7604 7606 8098 8099 8100 8101 8102 8103 8139 8141 8628 8629 8631 7563 7564 7565 8106 8108 8110 8111 8636 8105 8107 8108 8110 8111 8112 8115 8636 7570 7571 7572 8106 8108 8112 8115 8636 7555 7556 7557 7558 7559 7560 7561 7563 7564 7565 7570 7571 7572 8105 8106 8107 8110 8111 8112 8115 8636 8082 8084 8085 8110 8111 8614 8617 8636 8105 8106 8108 8109 8111 8614 8617 8636 7562 7563 7564 7565 7566 7567 7568 8082 8084 8085 8105 8106 8108 8109 8110 8614 8617 8636 8106 8107 8108 8113 8115 8635 8636 8640 8112 8114 8115 8116 8119 8635 8636 8640 7573 7575 7576 8113 8115 8116 8119 8640 7569 7570 7571 7572 7573 7575 7576 8106 8107 8108 8112 8113 8114 8116 8119 8635 8636 8640 8113 8114 8115 8117 8119 8639 8640 8644 8116 8118 8119 8120 8123 8639 8640 8644 7577 7578 7580 8117 8119 8120 8123 8644 7573 7574 7575 7576 7577 7578 7580 8113 8114 8115 8116 8117 8118 8120 8123 8639 8640 8644 8117 8118 8119 8121 8123 8643 8644 8647 8120 8122 8123 8124 8126 8643 8644 8647 7581 7586 7587 8121 8123 8124 8126 8647 7577 7578 7579 7580 7581 7586 7587 8117 8118 8119 8120 8121 8122 8124 8126 8643 8644 8647 8121 8122 8123 8125 8126 8128 8129 8647 7588 7589 7591 8124 8126 8128 8129 8647 7581 7582 7583 7584 7585 7586 7587 7588 7589 7591 8121 8122 8123 8124 8125 8128 8129 8647 7595 7597 7598 8128 8129 8130 8132 8647 7588 7589 7590 7591 7592 7593 7594 7595 7597 7598 8124 8125 8126 8127 8129 8130 8132 8647 8124 8125 8126 8127 8128 8130 8132 8647 8127 8128 8129 8132 8133 8646 8647 8649 7599 7601 7602 8132 8133 8134 8136 8649 7595 7596 7597 7598 7599 7601 7602 8127 8128 8129 8130 8131 8133 8134 8136 8646 8647 8649 8130 8131 8132 8134 8136 8646 8647 8649 8131 8132 8133 8136 8137 8648 8649 8655 7607 7612 7613 8136 8137 8138 8143 8655 7599 7600 7601 7602 7607 7612 7613 8131 8132 8133 8134 8135 8137 8138 8143 8648 8649 8655 8134 8135 8136 8138 8143 8648 8649 8655 8135 8136 8137 8143 8144 8654 8655 8657 8102 8103 8104 8140 8141 8631 8632 8657 8139 8141 8142 8143 8144 8631 8632 8657 7603 7604 7605 7606 7608 7609 7610 8102 8103 8104 8139 8140 8142 8143 8144 8631 8632 8657 7608 7609 7610 8140 8141 8143 8144 8657 7607 7608 7609 7610 7611 7612 7613 8135 8136 8137 8138 8140 8141 8142 8144 8654 8655 8657 8138 8140 8141 8142 8143 8654 8655 8657 8146 8147 8149 8362 8364 8662 8663 8665 7846 8145 8147 8149 8340 8344 8364 8665 8145 8146 8148 8149 8364 8626 8629 8665 8097 8098 8100 8147 8149 8626 8629 8665 7832 7833 7846 8097 8098 8100 8145 8146 8147 8148 8340 8344 8345 8347 8364 8626 8629 8665 7617 7618 7619 7621 7622 8151 8152 8154 8155 8587 8588 8668 7614 7615 7616 7617 7618 7619 7621 7622 8051 8052 8053 8150 8152 8154 8155 8584 8585 8587 8588 8668 8051 8052 8053 8150 8151 8154 8155 8584 8585 8587 8588 8668 7620 7621 7622 7624 7625 8154 8155 8157 8158 8667 8668 8671 7617 7618 7619 7620 7621 7622 7624 7625 8150 8151 8152 8153 8155 8157 8158 8587 8588 8667 8668 8671 8150 8151 8152 8153 8154 8157 8158 8587 8588 8667 8668 8671 7623 7624 7625 7627 7628 8157 8158 8160 8161 8670 8671 8674 7620 7621 7622 7623 7624 7625 7627 7628 8153 8154 8155 8156 8158 8160 8161 8667 8668 8670 8671 8674 8153 8154 8155 8156 8157 8160 8161 8667 8668 8670 8671 8674 7626 7627 7628 7630 7631 8160 8161 8163 8164 8673 8674 8677 7623 7624 7625 7626 7627 7628 7630 7631 8156 8157 8158 8159 8161 8163 8164 8670 8671 8673 8674 8677 8156 8157 8158 8159 8160 8163 8164 8670 8671 8673 8674 8677 7629 7630 7631 7633 7634 8163 8164 8166 8167 8676 8677 8680 7626 7627 7628 7629 7630 7631 7633 7634 8159 8160 8161 8162 8164 8166 8167 8673 8674 8676 8677 8680 8159 8160 8161 8162 8163 8166 8167 8673 8674 8676 8677 8680 7632 7633 7634 7638 7639 8166 8167 8171 8172 8679 8680 8685 7629 7630 7631 7632 7633 7634 7638 7639 8162 8163 8164 8165 8167 8171 8172 8676 8677 8679 8680 8685 8162 8163 8164 8165 8166 8171 8172 8676 8677 8679 8680 8685 8169 8170 8171 8172 8683 8684 8685 7635 7636 7637 7638 7639 8168 8170 8171 8172 8683 8684 8685 7635 7636 7637 7638 7639 8168 8169 8171 8172 8683 8684 8685 7632 7633 7634 7635 7636 7637 7638 7639 8165 8166 8167 8168 8169 8170 8172 8679 8680 8683 8684 8685 8165 8166 8167 8168 8169 8170 8171 8679 8680 8683 8684 8685 7661 7662 7663 8174 8178 8195 8196 8690 8173 8176 8178 8195 8196 8690 8691 8694 7887 8183 8184 8406 8410 8411 8414 8697 8174 8177 8178 8690 8691 8694 8695 8697 8176 8178 8179 8180 8181 8694 8695 8697 7640 7641 7642 7643 7661 7662 7663 8173 8174 8176 8177 8179 8180 8181 8195 8196 8690 8691 8694 8695 8697 7641 7642 7643 8177 8178 8180 8181 8697 8177 8178 8179 8181 8182 8183 8184 8697 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 8177 8178 8179 8180 8182 8183 8184 8697 7648 7649 7650 8180 8181 8183 8184 8697 7648 7649 7650 7651 7887 7888 7889 7890 8175 8180 8181 8182 8184 8406 8410 8411 8414 8697 8175 8180 8181 8182 8183 8406 8410 8697 7665 7666 7667 8186 8188 8200 8201 8701 8185 8187 8188 8200 8201 8701 8702 8705 8186 8188 8189 8190 8192 8701 8702 8705 7652 7653 7654 7655 7656 7657 7658 7665 7666 7667 8185 8186 8187 8189 8190 8192 8200 8201 8701 8702 8705 7656 7657 7658 8187 8188 8190 8192 8705 8187 8188 8189 8191 8192 8705 8706 8709 8190 8192 8193 8194 8195 8705 8706 8709 7656 7657 7658 7659 7660 7661 7662 8187 8188 8189 8190 8191 8193 8194 8195 8705 8706 8709 7660 7661 7662 8191 8192 8194 8195 8709 8191 8192 8193 8195 8196 8687 8690 8709 7660 7661 7662 7663 8173 8174 8178 8191 8192 8193 8194 8196 8687 8690 8709 8173 8174 8178 8194 8195 8687 8690 8709 7672 7673 7674 8198 8200 8204 8205 8713 8197 8199 8200 8204 8205 8713 8714 8717 8198 8200 8201 8699 8701 8713 8714 8717 7664 7665 7666 7667 7672 7673 7674 8185 8186 8188 8197 8198 8199 8201 8204 8205 8699 8701 8713 8714 8717 8185 8186 8188 8199 8200 8699 8701 8717 7679 7686 7687 8203 8204 8210 8212 8722 8202 8204 8205 8210 8212 8711 8713 8722 7668 7669 7670 7671 7672 7673 7674 7679 7686 7687 8197 8198 8200 8202 8203 8205 8210 8212 8711 8713 8722 8197 8198 8200 8203 8204 8711 8713 8722 7727 7728 7729 8207 8208 8250 8251 8726 8206 8208 8209 8214 8216 8250 8251 8726 7675 7676 7677 7678 7680 7681 7682 7727 7728 7729 8206 8207 8209 8214 8216 8250 8251 8726 7680 7681 7682 8207 8208 8214 8216 8726 8202 8203 8204 8212 8213 8720 8722 8731 7685 7686 7687 8212 8213 8218 8221 8731 7679 7685 7686 7687 8202 8203 8204 8210 8211 8213 8218 8221 8720 8722 8731 8210 8211 8212 8218 8221 8720 8722 8731 8207 8208 8209 8215 8216 8726 8727 8734 8214 8216 8217 8222 8224 8726 8727 8734 7680 7681 7682 7683 7688 7689 7690 8207 8208 8209 8214 8215 8217 8222 8224 8726 8727 8734 7688 7689 7690 8215 8216 8222 8224 8734 8211 8212 8213 8219 8221 8730 8731 8736 8218 8220 8221 8226 8227 8730 8731 8736 7692 7693 7695 8219 8221 8226 8227 8736 7684 7685 7686 7687 7692 7693 7695 8211 8212 8213 8218 8219 8220 8226 8227 8730 8731 8736 8215 8216 8217 8223 8224 8734 8735 8736 8222 8224 8225 8226 8227 8734 8735 8736 7688 7689 7690 7691 7696 7697 7698 8215 8216 8217 8222 8223 8225 8226 8227 8734 8735 8736 7696 7697 7698 8223 8224 8226 8227 8736 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 8219 8220 8221 8223 8224 8225 8227 8736 8219 8220 8221 8223 8224 8225 8226 8736 7716 7717 7718 7964 7966 8229 8230 8241 8242 8741 8228 8230 8231 8233 8235 8241 8242 8741 7702 7703 7704 7705 7706 7707 7716 7717 7718 7964 7966 8228 8229 8231 8233 8235 8241 8242 8741 7705 7706 7707 8229 8230 8233 8235 8741 7751 7752 7753 8237 8238 8243 8273 8743 8229 8230 8231 8234 8235 8741 8742 8743 8233 8235 8236 8237 8238 8741 8742 8743 7705 7706 7707 7708 7710 7711 7712 8229 8230 8231 8233 8234 8236 8237 8238 8741 8742 8743 7710 7711 7712 8234 8235 8237 8238 8743 7709 7710 7711 7712 7713 7714 7715 7751 7752 7753 8232 8234 8235 8236 8238 8243 8273 8743 8232 8234 8235 8236 8237 8243 8273 8743 7964 7966 7967 8240 8241 8488 8489 8490 8493 8747 8239 8241 8242 8488 8490 8739 8741 8747 7716 7717 7718 7964 7966 7967 8228 8229 8230 8239 8240 8242 8488 8489 8490 8493 8739 8741 8747 8228 8229 8230 8240 8241 8739 8741 8747 8232 8237 8238 8272 8273 8738 8743 8752 7785 7786 7788 8245 8246 8302 8303 8757 8244 8246 8247 8248 8250 8302 8303 8757 7719 7720 7721 7722 7723 7724 7725 7785 7786 7788 8244 8245 8247 8248 8250 8302 8303 8757 7723 7724 7725 8245 8246 8248 8250 8757 8245 8246 8247 8249 8250 8757 8758 8759 8248 8250 8251 8724 8726 8757 8758 8759 7723 7724 7725 7726 7727 7728 7729 8206 8207 8208 8245 8246 8247 8248 8249 8251 8724 8726 8757 8758 8759 8206 8207 8208 8249 8250 8724 8726 8759 7763 7764 7765 8253 8255 8283 8284 8764 8252 8254 8255 8256 8259 8283 8284 8764 7734 7735 7738 8253 8255 8256 8259 8764 7730 7731 7732 7733 7734 7735 7738 7763 7764 7765 8252 8253 8254 8256 8259 8283 8284 8764 8253 8254 8255 8257 8259 8763 8764 8768 8256 8258 8259 8260 8263 8763 8764 8768 7735 7736 7738 8257 8259 8260 8263 8768 7734 7735 7736 7738 8253 8254 8255 8256 8257 8258 8260 8263 8763 8764 8768 8257 8258 8259 8261 8263 8767 8768 8772 8260 8262 8263 8264 8267 8767 8768 8772 7739 7740 7743 8261 8263 8264 8267 8772 7735 7736 7737 7738 7739 7740 7743 8257 8258 8259 8260 8261 8262 8264 8267 8767 8768 8772 8261 8262 8263 8265 8267 8771 8772 8775 8264 8266 8267 8268 8270 8771 8772 8775 7740 7741 7743 8265 8267 8268 8270 8775 7739 7740 7741 7743 8261 8262 8263 8264 8265 8266 8268 8270 8771 8772 8775 8265 8266 8267 8269 8270 8271 8273 8775 7750 7752 7753 8268 8270 8271 8273 8775 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7752 7753 8265 8266 8267 8268 8269 8271 8273 8775 8268 8269 8270 8272 8273 8749 8752 8775 8243 8271 8273 8738 8743 8749 8752 8775 7750 7751 7752 7753 8232 8237 8238 8243 8268 8269 8270 8271 8272 8738 8743 8749 8752 8775 7774 7775 7776 8275 8277 8291 8292 8779 8274 8276 8277 8278 8281 8291 8292 8779 7758 7759 7761 8275 8277 8278 8281 8779 7754 7755 7756 7757 7758 7759 7761 7774 7775 7776 8274 8275 8276 8278 8281 8291 8292 8779 8275 8276 8277 8279 8281 8778 8779 8782 8278 8280 8281 8282 8284 8778 8779 8782 7762 7763 7765 8279 8281 8282 8284 8782 7758 7759 7760 7761 7762 7763 7765 8275 8276 8277 8278 8279 8280 8282 8284 8778 8779 8782 8279 8280 8281 8283 8284 8761 8764 8782 8252 8253 8255 8282 8284 8761 8764 8782 7762 7763 7764 7765 8252 8253 8255 8279 8280 8281 8282 8283 8761 8764 8782 7781 7782 7783 8286 8288 8295 8296 8786 8285 8287 8288 8289 8292 8295 8296 8786 7773 7774 7776 8286 8288 8289 8292 8786 7766 7767 7768 7769 7770 7771 7772 7773 7774 7776 7781 7782 7783 8285 8286 8287 8289 8292 8295 8296 8786 8286 8287 8288 8290 8292 8785 8786 8789 8289 8291 8292 8776 8779 8785 8786 8789 8274 8275 8277 8290 8292 8776 8779 8789 7773 7774 7775 7776 8274 8275 8277 8286 8287 8288 8289 8290 8291 8776 8779 8785 8786 8789 7784 7793 7794 8294 8296 8297 8299 8793 8293 8295 8296 8297 8299 8783 8786 8793 8285 8286 8288 8294 8296 8783 8786 8793 7777 7778 7779 7780 7781 7782 7783 7784 7793 7794 8285 8286 8288 8293 8294 8295 8297 8299 8783 8786 8793 8293 8294 8296 8298 8299 8793 8794 8795 8297 8299 8300 8301 8302 8793 8794 8795 7784 7792 7793 7794 8293 8294 8296 8297 8298 8300 8301 8302 8793 8794 8795 7792 7793 7794 8298 8299 8301 8302 8795 8298 8299 8300 8302 8303 8755 8757 8795 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 8244 8245 8246 8298 8299 8300 8301 8303 8755 8757 8795 8244 8245 8246 8301 8302 8755 8757 8795 7816 7817 7818 8305 8306 8326 8327 8800 8304 8306 8307 8308 8310 8326 8327 8800 7795 7796 7797 7798 7799 7800 7801 7816 7817 7818 8304 8305 8307 8308 8310 8326 8327 8800 7799 7800 7801 8305 8306 8308 8310 8800 8305 8306 8307 8309 8310 8800 8801 8804 8308 8310 8311 8312 8314 8800 8801 8804 7799 7800 7801 7802 7803 7804 7805 8305 8306 8307 8308 8309 8311 8312 8314 8800 8801 8804 7803 7804 7805 8309 8310 8312 8314 8804 8309 8310 8311 8313 8314 8804 8805 8808 8312 8314 8315 8316 8318 8804 8805 8808 7803 7804 7805 7806 7807 7808 7809 8309 8310 8311 8312 8313 8315 8316 8318 8804 8805 8808 7807 7808 7809 8313 8314 8316 8318 8808 8313 8314 8315 8317 8318 8808 8809 8812 8316 8318 8319 8320 8322 8808 8809 8812 7807 7808 7809 7810 7811 7812 7813 8313 8314 8315 8316 8317 8319 8320 8322 8808 8809 8812 7811 7812 7813 8317 8318 8320 8322 8812 8317 8318 8319 8321 8322 8812 8813 8815 8320 8322 8323 8366 8368 8812 8813 8815 7811 7812 7813 7814 7847 7848 7849 8317 8318 8319 8320 8321 8323 8366 8368 8812 8813 8815 7847 7848 7849 8321 8322 8366 8368 8815 7828 7829 7830 8325 8326 8338 8339 8819 8324 8326 8327 8338 8339 8798 8800 8819 7815 7816 7817 7818 7828 7829 7830 8304 8305 8306 8324 8325 8327 8338 8339 8798 8800 8819 8304 8305 8306 8325 8326 8798 8800 8819 7843 7844 7845 8329 8330 8359 8360 8824 8328 8330 8331 8332 8334 8359 8360 8824 7819 7820 7821 7822 7823 7824 7825 7843 7844 7845 8328 8329 8331 8332 8334 8359 8360 8824 7823 7824 7825 8329 8330 8332 8334 8824 8329 8330 8331 8333 8334 8824 8825 8828 8332 8334 8335 8336 8338 8824 8825 8828 7823 7824 7825 7826 7827 7828 7829 8329 8330 8331 8332 8333 8335 8336 8338 8824 8825 8828 7827 7828 7829 8333 8334 8336 8338 8828 8333 8334 8335 8337 8338 8828 8829 8831 8336 8338 8339 8817 8819 8828 8829 8831 7827 7828 7829 7830 8324 8325 8326 8333 8334 8335 8336 8337 8339 8817 8819 8828 8829 8831 8324 8325 8326 8337 8338 8817 8819 8831 7846 8146 8149 8341 8344 8364 8365 8836 8340 8342 8344 8364 8365 8836 8837 8841 8341 8343 8344 8836 8837 8841 8842 8844 8342 8344 8345 8346 8347 8841 8842 8844 7832 7846 8146 8149 8340 8341 8342 8343 8345 8346 8347 8364 8365 8836 8837 8841 8842 8844 7832 7846 8149 8343 8344 8346 8347 8844 8343 8344 8345 8347 8348 8349 8351 8844 7831 7832 7833 7834 7835 7836 7837 7838 7840 7846 8097 8100 8149 8343 8344 8345 8346 8348 8349 8351 8844 7837 7838 7840 8346 8347 8349 8351 8844 8346 8347 8348 8350 8351 8844 8845 8848 8349 8351 8352 8353 8355 8844 8845 8848 7837 7838 7839 7840 8346 8347 8348 8349 8350 8352 8353 8355 8844 8845 8848 7838 7839 7840 8350 8351 8353 8355 8848 8350 8351 8352 8354 8355 8848 8849 8853 8353 8355 8356 8357 8359 8848 8849 8853 7838 7839 7840 7841 7842 7843 7844 8350 8351 8352 8353 8354 8356 8357 8359 8848 8849 8853 7842 7843 7844 8354 8355 8357 8359 8853 8354 8355 8356 8358 8359 8853 8854 8855 8357 8359 8360 8822 8824 8853 8854 8855 7842 7843 7844 7845 8328 8329 8330 8354 8355 8356 8357 8358 8360 8822 8824 8853 8854 8855 8328 8329 8330 8358 8359 8822 8824 8855 8362 8363 8364 8659 8663 8861 8862 8864 8145 8361 8363 8364 8662 8663 8665 8864 8361 8362 8364 8365 8663 8834 8836 8864 7846 8145 8146 8147 8149 8340 8341 8344 8361 8362 8363 8365 8662 8663 8665 8834 8836 8864 8340 8341 8344 8363 8364 8834 8836 8864 8321 8322 8323 8367 8368 8797 8815 8868 8366 8368 8369 8370 8372 8797 8815 8868 7847 7848 7849 7850 7851 7852 7853 8321 8322 8323 8366 8367 8369 8370 8372 8797 8815 8868 7851 7852 7853 8367 8368 8370 8372 8868 8367 8368 8369 8371 8372 8868 8869 8872 8370 8372 8373 8374 8376 8868 8869 8872 7851 7852 7853 7854 7855 7856 7857 8367 8368 8369 8370 8371 8373 8374 8376 8868 8869 8872 7855 7856 7857 8371 8372 8374 8376 8872 8371 8372 8373 8375 8376 8872 8873 8876 8374 8376 8377 8378 8380 8872 8873 8876 7855 7856 7857 7858 7859 7860 7861 8371 8372 8373 8374 8375 8377 8378 8380 8872 8873 8876 7859 7860 7861 8375 8376 8378 8380 8876 8375 8376 8377 8379 8380 8876 8877 8880 8378 8380 8381 8382 8384 8876 8877 8880 7859 7860 7861 7862 7863 7864 7865 8375 8376 8377 8378 8379 8381 8382 8384 8876 8877 8880 7863 7864 7865 8379 8380 8382 8384 8880 8379 8380 8381 8383 8384 8880 8881 8884 8382 8384 8385 8386 8388 8880 8881 8884 7863 7864 7865 7866 7867 7868 7869 8379 8380 8381 8382 8383 8385 8386 8388 8880 8881 8884 7867 7868 7869 8383 8384 8386 8388 8884 8383 8384 8385 8387 8388 8884 8885 8888 8386 8388 8389 8390 8392 8884 8885 8888 7867 7868 7869 7870 7871 7872 7873 8383 8384 8385 8386 8387 8389 8390 8392 8884 8885 8888 7871 7872 7873 8387 8388 8390 8392 8888 8387 8388 8389 8391 8392 8888 8889 8892 8390 8392 8393 8394 8396 8888 8889 8892 7871 7872 7873 7874 7875 7876 7877 8387 8388 8389 8390 8391 8393 8394 8396 8888 8889 8892 7875 7876 7877 8391 8392 8394 8396 8892 8391 8392 8393 8395 8396 8892 8893 8896 8394 8396 8397 8398 8400 8892 8893 8896 7875 7876 7877 7878 7879 7880 7881 8391 8392 8393 8394 8395 8397 8398 8400 8892 8893 8896 7879 7880 7881 8395 8396 8398 8400 8896 8395 8396 8397 8399 8400 8896 8897 8899 8398 8400 8401 8402 8403 8896 8897 8899 7879 7880 7881 7882 7883 7884 7885 8395 8396 8397 8398 8399 8401 8402 8403 8896 8897 8899 7883 7884 7885 8399 8400 8402 8403 8899 8399 8400 8401 8403 8404 8405 8459 8899 7883 7884 7885 7886 7945 7946 7952 7954 8399 8400 8401 8402 8404 8405 8456 8459 8464 8899 7946 8402 8403 8405 8456 8459 8464 8899 8402 8403 8404 8458 8459 8899 8900 8903 8175 8183 8184 8407 8410 8697 8698 8907 8406 8408 8410 8697 8698 8907 8908 8911 8407 8409 8410 8907 8908 8911 8912 8915 8408 8410 8411 8412 8414 8911 8912 8915 7887 8175 8183 8184 8406 8407 8408 8409 8411 8412 8414 8697 8698 8907 8908 8911 8912 8915 7887 8175 8183 8409 8410 8412 8414 8915 8409 8410 8411 8413 8414 8915 8916 8919 8412 8414 8415 8416 8417 8915 8916 8919 7887 7888 7889 7890 7891 7896 7897 7898 8175 8183 8409 8410 8411 8412 8413 8415 8416 8417 8915 8916 8919 7896 7897 7898 8413 8414 8416 8417 8919 8413 8414 8415 8417 8418 8419 8423 8919 7892 7893 7894 7895 7896 7897 7898 7899 7902 7903 8413 8414 8415 8416 8418 8419 8423 8919 7899 7902 7903 8416 8417 8419 8423 8919 8416 8417 8418 8422 8423 8917 8919 8924 7901 7902 7903 8421 8423 8425 8426 8927 8420 8422 8423 8425 8426 8921 8924 8927 8419 8421 8423 8917 8919 8921 8924 8927 7899 7901 7902 7903 8416 8417 8418 8419 8420 8421 8422 8425 8426 8917 8919 8921 8924 8927 7907 7909 7910 8425 8426 8427 8430 8927 8420 8421 8423 8424 8426 8427 8430 8927 7900 7901 7902 7903 7904 7905 7906 7907 7909 7910 8420 8421 8423 8424 8425 8427 8430 8927 8424 8425 8426 8429 8430 8925 8927 8931 7911 7912 7913 8429 8430 8431 8433 8931 8427 8428 8430 8431 8433 8925 8927 8931 7907 7908 7909 7910 7911 7912 7913 8424 8425 8426 8427 8428 8429 8431 8433 8925 8927 8931 8428 8429 8430 8432 8433 8929 8931 8936 8431 8433 8434 8439 8440 8929 8931 8936 7911 7912 7913 7914 7923 7924 7925 8428 8429 8430 8431 8432 8434 8439 8440 8929 8931 8936 7923 7924 7925 8432 8433 8439 8440 8936 7935 7936 7937 8436 8438 8451 8452 8938 8435 8437 8438 8440 8441 8451 8452 8938 7919 7920 7922 8436 8438 8440 8441 8938 7915 7916 7917 7918 7919 7920 7922 7935 7936 7937 8435 8436 8437 8440 8441 8451 8452 8938 8432 8433 8434 8440 8441 8936 8937 8938 7919 7920 7921 7922 7923 7924 7925 8432 8433 8434 8436 8437 8438 8439 8441 8936 8937 8938 8436 8437 8438 8439 8440 8936 8937 8938 7957 7958 7959 8444 8445 8478 8480 8941 7942 7943 7944 8444 8445 8453 8455 8941 7926 7942 7943 7944 7957 7958 7959 8442 8443 8445 8453 8455 8478 8480 8941 8442 8443 8444 8453 8455 8478 8480 8941 7938 7940 7941 8447 8449 8454 8455 8945 8446 8448 8449 8450 8452 8454 8455 8945 7934 7935 7937 8447 8449 8450 8452 8945 7927 7928 7929 7930 7931 7932 7933 7934 7935 7937 7938 7940 7941 8446 8447 8448 8450 8452 8454 8455 8945 8447 8448 8449 8451 8452 8933 8938 8945 8435 8436 8438 8450 8452 8933 8938 8945 7934 7935 7936 7937 8435 8436 8438 8447 8448 8449 8450 8451 8933 8938 8945 8443 8444 8445 8454 8455 8940 8941 8945 8446 8447 8449 8453 8455 8940 8941 8945 7938 7939 7940 7941 7942 7943 7944 8443 8444 8445 8446 8447 8449 8453 8454 8940 8941 8945 7946 8403 8404 8457 8459 8463 8464 8949 8456 8458 8459 8460 8463 8464 8903 8949 8405 8457 8459 8460 8899 8900 8903 8949 7946 8402 8403 8404 8405 8456 8457 8458 8460 8463 8464 8899 8900 8903 8949 8457 8458 8459 8486 8903 8948 8949 8953 7952 7953 7954 8462 8464 8475 8476 8957 8461 8463 8464 8475 8476 8946 8949 8957 8456 8457 8459 8462 8464 8946 8949 8957 7945 7946 7952 7953 7954 8403 8404 8456 8457 8459 8461 8462 8463 8475 8476 8946 8949 8957 7951 7954 7955 8467 8468 8469 8472 8961 7960 7962 7963 8467 8468 8481 8484 8961 8465 8466 8468 8469 8472 8481 8484 8961 7947 7948 7949 7950 7951 7954 7955 7960 7962 7963 8465 8466 8467 8469 8472 8481 8484 8961 8465 8467 8468 8470 8472 8960 8961 8963 8469 8471 8472 8473 8476 8960 8961 8963 7953 7954 7955 8470 8472 8473 8476 8963 7951 7953 7954 7955 8465 8467 8468 8469 8470 8471 8473 8476 8960 8961 8963 8470 8471 8472 8474 8476 8962 8963 8968 8473 8475 8476 8954 8957 8962 8963 8968 8461 8462 8464 8474 8476 8954 8957 8968 7952 7953 7954 7955 8461 8462 8464 8470 8471 8472 8473 8474 8475 8954 8957 8962 8963 8968 7961 7962 7963 8479 8480 8482 8484 8972 8442 8444 8445 8479 8480 8485 8941 8972 8477 8478 8480 8482 8484 8485 8941 8972 7956 7957 7958 7959 7961 7962 7963 8442 8444 8445 8477 8478 8479 8482 8484 8485 8941 8972 8466 8467 8468 8483 8484 8958 8961 8976 8477 8479 8480 8483 8484 8969 8972 8976 8481 8482 8484 8958 8961 8969 8972 8976 7960 7961 7962 7963 8466 8467 8468 8477 8479 8480 8481 8482 8483 8958 8961 8969 8972 8976 8478 8479 8480 8939 8941 8970 8972 8979 8460 8487 8903 8904 8948 8949 8953 8986 8486 8903 8904 8952 8953 8984 8986 8990 8239 8240 8241 8490 8491 8746 8747 8995 7964 7966 7967 8239 8241 8490 8491 8493 8494 8994 8995 8998 7964 7966 7967 8239 8240 8241 8488 8489 8491 8493 8494 8746 8747 8994 8995 8998 8488 8489 8490 8493 8494 8746 8747 8994 8995 8998 7965 7966 7967 7972 7973 8493 8494 8496 8497 8997 8998 9001 7964 7965 7966 7967 7972 7973 8239 8241 8489 8490 8491 8492 8494 8496 8497 8994 8995 8997 8998 9001 8489 8490 8491 8492 8493 8496 8497 8994 8995 8997 8998 9001 7971 7972 7973 7978 7979 8496 8497 8502 8503 9000 9001 9007 7965 7966 7967 7971 7972 7973 7978 7979 8492 8493 8494 8495 8497 8502 8503 8997 8998 9000 9001 9007 8492 8493 8494 8495 8496 8502 8503 8997 8998 9000 9001 9007 7991 7992 7993 7995 7996 8499 8500 8504 8505 8516 8517 9010 7968 7969 7970 7974 7975 7976 7980 7981 7991 7992 7993 7995 7996 8498 8500 8504 8505 8516 8517 9010 7974 7975 7976 7980 7981 8498 8499 8504 8505 8516 8517 9010 7977 7978 7979 7984 7985 8502 8503 8508 8509 9006 9007 9013 7971 7972 7973 7977 7978 7979 7984 7985 8495 8496 8497 8501 8503 8508 8509 9000 9001 9006 9007 9013 8495 8496 8497 8501 8502 8508 8509 9000 9001 9006 9007 9013 8498 8499 8500 8505 8506 8510 8511 8516 8517 9010 9011 9016 7974 7975 7976 7980 7981 7982 7986 7987 8498 8499 8500 8504 8506 8510 8511 8516 8517 9010 9011 9016 7980 7981 7982 7986 7987 8504 8505 8510 8511 9010 9011 9016 7983 7984 7985 7989 7990 8508 8509 8513 8514 9012 9013 9018 7977 7978 7979 7983 7984 7985 7989 7990 8501 8502 8503 8507 8509 8513 8514 9006 9007 9012 9013 9018 8501 8502 8503 8507 8508 8513 8514 9006 9007 9012 9013 9018 8504 8505 8506 8511 8512 8513 8514 9010 9011 9016 9017 9018 7980 7981 7982 7986 7987 7988 7989 7990 8504 8505 8506 8510 8512 8513 8514 9010 9011 9016 9017 9018 7986 7987 7988 7989 7990 8510 8511 8513 8514 9016 9017 9018 7983 7984 7985 7986 7987 7988 7989 7990 8507 8508 8509 8510 8511 8512 8514 9012 9013 9016 9017 9018 8507 8508 8509 8510 8511 8512 8513 9012 9013 9016 9017 9018 7994 7995 7996 7998 7999 8516 8517 8520 8521 9009 9010 9024 7991 7992 7993 7994 7995 7996 7998 7999 8498 8499 8500 8504 8505 8515 8517 8520 8521 9009 9010 9024 8498 8499 8500 8504 8505 8515 8516 8520 8521 9009 9010 9024 8000 8001 8002 8522 8523 8525 8529 8530 8535 9020 9021 9027 7997 7998 7999 8000 8002 8520 8521 8522 8523 9023 9024 9027 7994 7995 7996 7997 7998 7999 8000 8002 8515 8516 8517 8519 8521 8522 8523 9009 9010 9023 9024 9027 8515 8516 8517 8519 8520 8522 8523 9009 9010 9023 9024 9027 8518 8519 8520 8521 8523 8525 8530 9020 9021 9023 9024 9027 7997 7998 7999 8000 8001 8002 8518 8519 8520 8521 8522 8525 8529 8530 8535 9020 9021 9023 9024 9027 8526 9004 9021 9035 9036 9038 9039 9041 8518 8522 8523 8526 8527 8530 9020 9021 9027 9041 8524 8525 8527 8530 9021 9038 9039 9041 8525 8526 8528 8530 9021 9041 9042 9044 8527 8530 8531 9041 9042 9044 9045 9047 8000 8001 8002 8518 8523 8530 8531 8532 8535 9047 8000 8001 8002 8518 8522 8523 8525 8526 8527 8528 8529 8531 8532 8535 9020 9021 9027 9041 9042 9044 9045 9047 8528 8529 8530 8532 8535 9044 9045 9047 8529 8530 8531 8533 8535 9047 9048 9050 8532 8535 8536 9047 9048 9050 9051 9053 8001 8002 8003 8005 8006 8535 8536 8537 8540 9053 8000 8001 8002 8003 8005 8006 8518 8523 8529 8530 8531 8532 8533 8534 8536 8537 8540 9047 9048 9050 9051 9053 8533 8534 8535 8537 8540 9050 9051 9053 8534 8535 8536 8538 8540 9053 9054 9056 8537 8540 8541 9053 9054 9056 9057 9059 8004 8005 8006 8007 8008 8540 8541 8543 8544 9059 8001 8002 8003 8004 8005 8006 8007 8008 8534 8535 8536 8537 8538 8539 8541 8543 8544 9053 9054 9056 9057 9059 8538 8539 8540 8543 8544 9056 9057 9059 8543 8544 9059 9060 9061 8004 8005 8006 8007 8008 8539 8540 8541 8542 8544 9059 9060 9061 8539 8540 8541 8542 8543 9059 9060 9061 8045 8046 8047 8049 8050 8546 8547 8548 8549 8582 8583 9064 8009 8010 8011 8012 8013 8014 8015 8016 8045 8046 8047 8049 8050 8545 8547 8548 8549 8582 8583 9064 8012 8013 8014 8015 8016 8545 8546 8548 8549 8582 8583 9064 8545 8546 8547 8549 8550 8551 8552 8582 8583 9064 9065 9067 8012 8013 8014 8015 8016 8017 8018 8019 8545 8546 8547 8548 8550 8551 8552 8582 8583 9064 9065 9067 8015 8016 8017 8018 8019 8548 8549 8551 8552 9064 9065 9067 8548 8549 8550 8552 8553 8554 8555 9064 9065 9067 9068 9071 8015 8016 8017 8018 8019 8020 8021 8022 8548 8549 8550 8551 8553 8554 8555 9064 9065 9067 9068 9071 8018 8019 8020 8021 8022 8551 8552 8554 8555 9067 9068 9071 8551 8552 8553 8555 8556 8558 8559 9067 9068 9071 9072 9077 8018 8019 8020 8021 8022 8023 8024 8025 8551 8552 8553 8554 8556 8558 8559 9067 9068 9071 9072 9077 8021 8022 8023 8024 8025 8554 8555 8558 8559 9071 9072 9077 8054 8055 8056 8057 8060 8562 8563 8590 8591 9073 9074 9080 8554 8555 8556 8559 8560 8564 8565 9071 9072 9077 9078 9083 8021 8022 8023 8024 8025 8026 8028 8029 8554 8555 8556 8558 8560 8564 8565 9071 9072 9077 9078 9083 8024 8025 8026 8028 8029 8558 8559 8564 8565 9077 9078 9083 8027 8032 8033 8054 8055 8562 8563 8568 8569 9079 9080 9086 8027 8032 8033 8054 8055 8056 8057 8060 8557 8561 8563 8568 8569 8590 8591 9073 9074 9079 9080 9086 8557 8561 8562 8568 8569 8590 8591 9073 9074 9079 9080 9086 8558 8559 8560 8565 8566 8570 8571 9077 9078 9083 9084 9089 8024 8025 8026 8028 8029 8030 8034 8035 8558 8559 8560 8564 8566 8570 8571 9077 9078 9083 9084 9089 8028 8029 8030 8034 8035 8564 8565 8570 8571 9083 9084 9089 8031 8032 8033 8038 8039 8568 8569 8574 8575 9085 9086 9092 8027 8031 8032 8033 8038 8039 8054 8055 8561 8562 8563 8567 8569 8574 8575 9079 9080 9085 9086 9092 8561 8562 8563 8567 8568 8574 8575 9079 9080 9085 9086 9092 8564 8565 8566 8571 8572 8576 8577 9083 9084 9089 9090 9095 8028 8029 8030 8034 8035 8036 8040 8041 8564 8565 8566 8570 8572 8576 8577 9083 9084 9089 9090 9095 8034 8035 8036 8040 8041 8570 8571 8576 8577 9089 9090 9095 8037 8038 8039 8043 8044 8574 8575 8579 8580 9091 9092 9097 8031 8032 8033 8037 8038 8039 8043 8044 8567 8568 8569 8573 8575 8579 8580 9085 9086 9091 9092 9097 8567 8568 8569 8573 8574 8579 8580 9085 9086 9091 9092 9097 8570 8571 8572 8577 8578 8579 8580 9089 9090 9095 9096 9097 8034 8035 8036 8040 8041 8042 8043 8044 8570 8571 8572 8576 8578 8579 8580 9089 9090 9095 9096 9097 8040 8041 8042 8043 8044 8576 8577 8579 8580 9095 9096 9097 8037 8038 8039 8040 8041 8042 8043 8044 8573 8574 8575 8576 8577 8578 8580 9091 9092 9095 9096 9097 8573 8574 8575 8576 8577 8578 8579 9091 9092 9095 9096 9097 8048 8049 8050 8052 8053 8582 8583 8585 8586 9063 9064 9100 8045 8046 8047 8048 8049 8050 8052 8053 8545 8546 8547 8548 8549 8581 8583 8585 8586 9063 9064 9100 8545 8546 8547 8548 8549 8581 8582 8585 8586 9063 9064 9100 8051 8052 8053 8151 8152 8585 8586 8588 8589 9099 9100 9103 8048 8049 8050 8051 8052 8053 8151 8152 8581 8582 8583 8584 8586 8588 8589 9063 9064 9099 9100 9103 8581 8582 8583 8584 8585 8588 8589 9063 9064 9099 9100 9103 8150 8151 8152 8154 8155 8588 8589 8668 8669 9102 9103 9106 8051 8052 8053 8150 8151 8152 8154 8155 8584 8585 8586 8587 8589 8668 8669 9099 9100 9102 9103 9106 8584 8585 8586 8587 8588 8668 8669 9099 9100 9102 9103 9106 8557 8562 8563 8591 8592 8595 8596 9069 9073 9074 9080 9110 8054 8055 8056 8057 8059 8060 8557 8562 8563 8590 8592 8593 8595 8596 8600 9069 9073 9074 9080 9110 8057 8059 8060 8590 8591 8593 8595 8596 8600 9069 9074 9110 8057 8059 8060 8591 8592 8594 8595 8597 8600 9115 8593 8595 8596 8597 8600 9108 9110 9115 8057 8059 8060 8590 8591 8592 8593 8594 8596 8597 8600 9069 9074 9108 9110 9115 8590 8591 8592 8594 8595 9069 9074 9108 9110 9115 8593 8594 8595 8598 8600 9114 9115 9119 8597 8599 8600 8601 8603 9114 9115 9119 8058 8059 8060 8076 8077 8598 8600 8601 8603 9119 8057 8058 8059 8060 8076 8077 8591 8592 8593 8594 8595 8597 8598 8599 8601 8603 9114 9115 9119 8598 8599 8600 8602 8603 8605 8610 9119 8075 8076 8077 8601 8603 8605 8610 9119 8058 8059 8060 8075 8076 8077 8598 8599 8600 8601 8602 8605 8610 9119 8078 8079 8081 8607 8608 8612 8613 9122 8601 8602 8603 8606 8610 9118 9119 9122 8605 8607 8608 8609 8610 9118 9119 9122 8604 8606 8608 8609 8610 8612 8613 9122 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8078 8079 8081 8604 8606 8607 8609 8610 8612 8613 9122 8068 8069 8070 8606 8607 8608 8610 9122 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8601 8602 8603 8605 8606 8607 8608 8609 9118 9119 9122 8094 8095 8096 8612 8613 8623 8625 9122 8078 8079 8080 8081 8094 8095 8096 8604 8607 8608 8611 8613 8623 8625 9122 8604 8607 8608 8611 8612 8623 8625 9122 8109 8110 8111 8616 8617 8633 8636 9127 8086 8089 8090 8616 8617 8618 8622 9127 8614 8615 8617 8618 8622 8633 8636 9127 8082 8083 8084 8085 8086 8089 8090 8109 8110 8111 8614 8615 8616 8618 8622 8633 8636 9127 8615 8616 8617 8621 8622 9124 9127 9131 8088 8089 8090 8620 8622 8624 8625 9134 8619 8621 8622 8624 8625 9128 9131 9134 8618 8620 8622 9124 9127 9128 9131 9134 8086 8088 8089 8090 8615 8616 8617 8618 8619 8620 8621 8624 8625 9124 9127 9128 9131 9134 8611 8612 8613 8624 8625 9121 9122 9134 8619 8620 8622 8623 8625 9121 9122 9134 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8611 8612 8613 8619 8620 8622 8623 8624 9121 9122 9134 8147 8148 8149 8627 8629 8664 8665 9137 8626 8628 8629 8630 8631 8664 8665 9137 8101 8102 8104 8627 8629 8630 8631 9137 8097 8098 8099 8100 8101 8102 8104 8147 8148 8149 8626 8627 8628 8630 8631 8664 8665 9137 8627 8628 8629 8631 8632 8656 8657 9137 8101 8102 8103 8104 8139 8140 8141 8627 8628 8629 8630 8632 8656 8657 9137 8139 8140 8141 8630 8631 8656 8657 9137 8614 8616 8617 8634 8636 9126 9127 9142 8633 8635 8636 8637 8640 9126 9127 9142 8112 8113 8115 8634 8636 8637 8640 9142 8105 8106 8107 8108 8109 8110 8111 8112 8113 8115 8614 8616 8617 8633 8634 8635 8637 8640 9126 9127 9142 8634 8635 8636 8638 8640 9141 9142 9146 8637 8639 8640 8641 8644 9141 9142 9146 8116 8117 8119 8638 8640 8641 8644 9146 8112 8113 8114 8115 8116 8117 8119 8634 8635 8636 8637 8638 8639 8641 8644 9141 9142 9146 8638 8639 8640 8642 8644 9145 9146 9149 8641 8643 8644 8645 8647 9145 9146 9149 8120 8121 8123 8642 8644 8645 8647 9149 8116 8117 8118 8119 8120 8121 8123 8638 8639 8640 8641 8642 8643 8645 8647 9145 9146 9149 8642 8643 8644 8646 8647 8649 8650 9149 8130 8132 8133 8645 8647 8649 8650 9149 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8132 8133 8642 8643 8644 8645 8646 8649 8650 9149 8134 8136 8137 8649 8650 8651 8655 9149 8130 8131 8132 8133 8134 8136 8137 8645 8646 8647 8648 8650 8651 8655 9149 8645 8646 8647 8648 8649 8651 8655 9149 8648 8649 8650 8652 8655 9148 9149 9153 8651 8653 8655 9148 9149 9152 9153 9155 8652 8654 8655 8657 8658 9152 9153 9155 8138 8143 8144 8653 8655 8657 8658 9155 8134 8135 8136 8137 8138 8143 8144 8648 8649 8650 8651 8652 8653 8654 8657 8658 9148 9149 9152 9153 9155 8630 8631 8632 8657 8658 9137 9138 9155 8138 8139 8140 8141 8142 8143 8144 8630 8631 8632 8653 8654 8655 8656 8658 9137 9138 9155 8653 8654 8655 8656 8657 9137 9138 9155 8361 8660 8663 8857 8861 8862 8864 9162 8659 8661 8663 8857 8861 9161 9162 9164 8660 8662 8663 8665 8666 9161 9162 9164 8145 8362 8364 8661 8663 8665 8666 9164 8145 8361 8362 8363 8364 8659 8660 8661 8662 8665 8666 8857 8861 8862 8864 9161 9162 9164 8626 8627 8629 8665 8666 9135 9137 9164 8145 8146 8147 8148 8149 8362 8364 8626 8627 8629 8661 8662 8663 8664 8666 9135 9137 9164 8661 8662 8663 8664 8665 9135 9137 9164 8153 8154 8155 8157 8158 8668 8669 8671 8672 9105 9106 9167 8150 8151 8152 8153 8154 8155 8157 8158 8587 8588 8589 8667 8669 8671 8672 9102 9103 9105 9106 9167 8587 8588 8589 8667 8668 8671 8672 9102 9103 9105 9106 9167 8156 8157 8158 8160 8161 8671 8672 8674 8675 9166 9167 9170 8153 8154 8155 8156 8157 8158 8160 8161 8667 8668 8669 8670 8672 8674 8675 9105 9106 9166 9167 9170 8667 8668 8669 8670 8671 8674 8675 9105 9106 9166 9167 9170 8159 8160 8161 8163 8164 8674 8675 8677 8678 9169 9170 9173 8156 8157 8158 8159 8160 8161 8163 8164 8670 8671 8672 8673 8675 8677 8678 9166 9167 9169 9170 9173 8670 8671 8672 8673 8674 8677 8678 9166 9167 9169 9170 9173 8162 8163 8164 8166 8167 8677 8678 8680 8681 9172 9173 9176 8159 8160 8161 8162 8163 8164 8166 8167 8673 8674 8675 8676 8678 8680 8681 9169 9170 9172 9173 9176 8673 8674 8675 8676 8677 8680 8681 9169 9170 9172 9173 9176 8165 8166 8167 8171 8172 8680 8681 8685 8686 9175 9176 9181 8162 8163 8164 8165 8166 8167 8171 8172 8676 8677 8678 8679 8681 8685 8686 9172 9173 9175 9176 9181 8676 8677 8678 8679 8680 8685 8686 9172 9173 9175 9176 9181 8683 8684 8685 8686 9179 9180 9181 8168 8169 8170 8171 8172 8682 8684 8685 8686 9179 9180 9181 8168 8169 8170 8171 8172 8682 8683 8685 8686 9179 9180 9181 8165 8166 8167 8168 8169 8170 8171 8172 8679 8680 8681 8682 8683 8684 8686 9175 9176 9179 9180 9181 8679 8680 8681 8682 8683 8684 8685 9175 9176 9179 9180 9181 8194 8195 8196 8688 8690 8709 8710 9186 8687 8689 8690 8709 8710 9186 9187 9190 8688 8690 8691 8692 8694 9186 9187 9190 8173 8174 8176 8178 8194 8195 8196 8687 8688 8689 8691 8692 8694 8709 8710 9186 9187 9190 8174 8176 8178 8689 8690 8692 8694 9190 8689 8690 8691 8693 8694 9190 9191 9193 8692 8694 8695 8696 8697 9190 9191 9193 8174 8176 8177 8178 8689 8690 8691 8692 8693 8695 8696 8697 9190 9191 9193 8176 8177 8178 8693 8694 8696 8697 9193 8693 8694 8695 8697 8698 8905 8907 9193 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8406 8407 8410 8693 8694 8695 8696 8698 8905 8907 9193 8406 8407 8410 8696 8697 8905 8907 9193 8199 8200 8201 8700 8701 8717 8718 9197 8699 8701 8702 8703 8705 8717 8718 9197 8185 8186 8187 8188 8199 8200 8201 8699 8700 8702 8703 8705 8717 8718 9197 8186 8187 8188 8700 8701 8703 8705 9197 8700 8701 8702 8704 8705 9197 9198 9201 8703 8705 8706 8707 8709 9197 9198 9201 8186 8187 8188 8189 8190 8191 8192 8700 8701 8702 8703 8704 8706 8707 8709 9197 9198 9201 8190 8191 8192 8704 8705 8707 8709 9201 8704 8705 8706 8708 8709 9201 9202 9204 8707 8709 8710 9183 9186 9201 9202 9204 8190 8191 8192 8193 8194 8195 8196 8687 8688 8690 8704 8705 8706 8707 8708 8710 9183 9186 9201 9202 9204 8687 8688 8690 8708 8709 9183 9186 9204 8203 8204 8205 8712 8713 8719 8722 9210 8711 8713 8714 8715 8717 8719 8722 9210 8197 8198 8199 8200 8203 8204 8205 8711 8712 8714 8715 8717 8719 8722 9210 8198 8199 8200 8712 8713 8715 8717 9210 8712 8713 8714 8716 8717 9210 9211 9213 8715 8717 8718 9195 9197 9210 9211 9213 8198 8199 8200 8201 8699 8700 8701 8712 8713 8714 8715 8716 8718 9195 9197 9210 9211 9213 8699 8700 8701 8716 8717 9195 9197 9213 8711 8712 8713 8722 8723 9208 9210 9218 8210 8212 8213 8721 8722 8728 8731 9222 8720 8722 8723 8728 8731 9217 9218 9222 8202 8203 8204 8205 8210 8212 8213 8711 8712 8713 8719 8720 8721 8723 8728 8731 9208 9210 9217 9218 9222 8719 8721 8722 9208 9210 9217 9218 9222 8249 8250 8251 8725 8726 8753 8759 9225 8724 8726 8727 8732 8734 8753 8759 9225 8206 8207 8208 8209 8214 8215 8216 8249 8250 8251 8724 8725 8727 8732 8734 8753 8759 9225 8214 8215 8216 8725 8726 8732 8734 9225 8720 8721 8722 8729 8731 9221 9222 9227 8728 8730 8731 8736 8737 9221 9222 9227 8218 8219 8221 8729 8731 8736 8737 9227 8210 8211 8212 8213 8218 8219 8221 8720 8721 8722 8728 8729 8730 8736 8737 9221 9222 9227 8725 8726 8727 8733 8734 9225 9226 9227 8732 8734 8735 8736 8737 9225 9226 9227 8214 8215 8216 8217 8222 8223 8224 8725 8726 8727 8732 8733 8735 8736 8737 9225 9226 9227 8222 8223 8224 8733 8734 8736 8737 9227 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8729 8730 8731 8733 8734 8735 8737 9227 8729 8730 8731 8733 8734 8735 8736 9227 8243 8272 8273 8743 8744 8751 8752 9233 8240 8241 8242 8740 8741 8745 8747 9233 8739 8741 8742 8743 8744 8745 8747 9233 8228 8229 8230 8231 8233 8234 8235 8240 8241 8242 8739 8740 8742 8743 8744 8745 8747 9233 8233 8234 8235 8740 8741 8743 8744 9233 8232 8233 8234 8235 8236 8237 8238 8243 8272 8273 8738 8740 8741 8742 8744 8751 8752 9233 8738 8740 8741 8742 8743 8751 8752 9233 8739 8740 8741 8747 8748 9232 9233 9236 8488 8490 8491 8747 8748 8993 8995 9236 8239 8240 8241 8242 8488 8490 8491 8739 8740 8741 8745 8746 8748 8993 8995 9232 9233 9236 8745 8746 8747 8993 8995 9232 9233 9236 8271 8272 8273 8750 8752 8774 8775 9249 8749 8751 8752 8774 8775 9230 9233 9249 8738 8743 8744 8750 8752 9230 9233 9249 8243 8271 8272 8273 8738 8743 8744 8749 8750 8751 8774 8775 9230 9233 9249 8724 8725 8726 8754 8759 9223 9225 9252 8753 8759 8760 9223 9225 9251 9252 9256 8301 8302 8303 8756 8757 8790 8795 9256 8755 8757 8758 8759 8760 8790 8795 9256 8244 8245 8246 8247 8248 8249 8250 8301 8302 8303 8755 8756 8758 8759 8760 8790 8795 9256 8248 8249 8250 8756 8757 8759 8760 9256 8248 8249 8250 8251 8724 8725 8726 8753 8754 8756 8757 8758 8760 9223 9225 9251 9252 9256 8754 8756 8757 8758 8759 9251 9252 9256 8282 8283 8284 8762 8764 8781 8782 9261 8761 8763 8764 8765 8768 8781 8782 9261 8256 8257 8259 8762 8764 8765 8768 9261 8252 8253 8254 8255 8256 8257 8259 8282 8283 8284 8761 8762 8763 8765 8768 8781 8782 9261 8762 8763 8764 8766 8768 9260 9261 9265 8765 8767 8768 8769 8772 9260 9261 9265 8260 8261 8263 8766 8768 8769 8772 9265 8256 8257 8258 8259 8260 8261 8263 8762 8763 8764 8765 8766 8767 8769 8772 9260 9261 9265 8766 8767 8768 8770 8772 9264 9265 9268 8769 8771 8772 8773 8775 9264 9265 9268 8264 8265 8267 8770 8772 8773 8775 9268 8260 8261 8262 8263 8264 8265 8267 8766 8767 8768 8769 8770 8771 8773 8775 9264 9265 9268 8770 8771 8772 8774 8775 9246 9249 9268 8749 8750 8752 8773 8775 9246 9249 9268 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8749 8750 8752 8770 8771 8772 8773 8774 9246 9249 9268 8290 8291 8292 8777 8779 8788 8789 9272 8776 8778 8779 8780 8782 8788 8789 9272 8278 8279 8281 8777 8779 8780 8782 9272 8274 8275 8276 8277 8278 8279 8281 8290 8291 8292 8776 8777 8778 8780 8782 8788 8789 9272 8777 8778 8779 8781 8782 9258 9261 9272 8761 8762 8764 8780 8782 9258 9261 9272 8278 8279 8280 8281 8282 8283 8284 8761 8762 8764 8777 8778 8779 8780 8781 9258 9261 9272 8294 8295 8296 8784 8786 8791 8793 9276 8783 8785 8786 8787 8789 8791 8793 9276 8289 8290 8292 8784 8786 8787 8789 9276 8285 8286 8287 8288 8289 8290 8292 8294 8295 8296 8783 8784 8785 8787 8789 8791 8793 9276 8784 8785 8786 8788 8789 9269 9272 9276 8776 8777 8779 8787 8789 9269 9272 9276 8289 8290 8291 8292 8776 8777 8779 8784 8785 8786 8787 8788 9269 9272 9276 8755 8756 8757 8795 8796 9255 9256 9278 8783 8784 8786 8792 8793 9276 9277 9278 8791 8793 8794 8795 8796 9276 9277 9278 8293 8294 8295 8296 8297 8298 8299 8783 8784 8786 8791 8792 8794 8795 8796 9276 9277 9278 8297 8298 8299 8792 8793 8795 8796 9278 8297 8298 8299 8300 8301 8302 8303 8755 8756 8757 8790 8792 8793 8794 8796 9255 9256 9278 8790 8792 8793 8794 8795 9255 9256 9278 8366 8367 8368 8815 8816 8866 8868 9283 8325 8326 8327 8799 8800 8819 8820 9287 8798 8800 8801 8802 8804 8819 8820 9287 8304 8305 8306 8307 8308 8309 8310 8325 8326 8327 8798 8799 8801 8802 8804 8819 8820 9287 8308 8309 8310 8799 8800 8802 8804 9287 8799 8800 8801 8803 8804 9287 9288 9291 8802 8804 8805 8806 8808 9287 9288 9291 8308 8309 8310 8311 8312 8313 8314 8799 8800 8801 8802 8803 8805 8806 8808 9287 9288 9291 8312 8313 8314 8803 8804 8806 8808 9291 8803 8804 8805 8807 8808 9291 9292 9295 8806 8808 8809 8810 8812 9291 9292 9295 8312 8313 8314 8315 8316 8317 8318 8803 8804 8805 8806 8807 8809 8810 8812 9291 9292 9295 8316 8317 8318 8807 8808 8810 8812 9295 8807 8808 8809 8811 8812 9295 9296 9298 8810 8812 8813 8814 8815 9295 9296 9298 8316 8317 8318 8319 8320 8321 8322 8807 8808 8809 8810 8811 8813 8814 8815 9295 9296 9298 8320 8321 8322 8811 8812 8814 8815 9298 8811 8812 8813 8815 8816 9281 9283 9298 8320 8321 8322 8323 8366 8367 8368 8797 8811 8812 8813 8814 8816 8866 8868 9281 9283 9298 8797 8814 8815 8866 8868 9281 9283 9298 8337 8338 8339 8818 8819 8821 8831 9302 8817 8819 8820 8821 8831 9285 9287 9302 8324 8325 8326 8327 8337 8338 8339 8798 8799 8800 8817 8818 8820 8821 8831 9285 9287 9302 8798 8799 8800 8818 8819 9285 9287 9302 8817 8818 8819 8831 8832 9300 9302 9307 8358 8359 8360 8823 8824 8833 8855 9311 8822 8824 8825 8826 8828 8833 8855 9311 8328 8329 8330 8331 8332 8333 8334 8358 8359 8360 8822 8823 8825 8826 8828 8833 8855 9311 8332 8333 8334 8823 8824 8826 8828 9311 8823 8824 8825 8827 8828 9311 9312 9313 8826 8828 8829 8830 8831 9311 9312 9313 8332 8333 8334 8335 8336 8337 8338 8823 8824 8825 8826 8827 8829 8830 8831 9311 9312 9313 8336 8337 8338 8827 8828 8830 8831 9313 8827 8828 8829 8831 8832 9306 9307 9313 8336 8337 8338 8339 8817 8818 8819 8821 8827 8828 8829 8830 8832 9300 9302 9306 9307 9313 8821 8830 8831 9300 9302 9306 9307 9313 8822 8823 8824 8850 8855 9309 9311 9317 8363 8364 8365 8835 8836 8864 8865 9321 8834 8836 8837 8838 8841 8864 8865 9321 8340 8341 8342 8344 8363 8364 8365 8834 8835 8837 8838 8841 8864 8865 9321 8341 8342 8344 8835 8836 8838 8841 9321 8835 8836 8837 8839 8841 9321 9322 9326 8838 8840 8841 9321 9322 9326 9327 9329 8839 8841 8842 8843 8844 9326 9327 9329 8341 8342 8343 8344 8835 8836 8837 8838 8839 8840 8842 8843 8844 9321 9322 9326 9327 9329 8342 8343 8344 8840 8841 8843 8844 9329 8840 8841 8842 8844 8845 8846 8848 9329 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8840 8841 8842 8843 8845 8846 8848 9329 8349 8350 8351 8843 8844 8846 8848 9329 8843 8844 8845 8847 8848 9329 9330 9334 8846 8848 8849 8851 8853 9329 9330 9334 8349 8350 8351 8352 8353 8354 8355 8843 8844 8845 8846 8847 8849 8851 8853 9329 9330 9334 8353 8354 8355 8847 8848 8851 8853 9334 8833 8855 8856 9309 9311 9316 9317 9336 8847 8848 8849 8852 8853 9334 9335 9336 8851 8853 8854 8855 8856 9334 9335 9336 8353 8354 8355 8356 8357 8358 8359 8847 8848 8849 8851 8852 8854 8855 8856 9334 9335 9336 8357 8358 8359 8852 8853 8855 8856 9336 8357 8358 8359 8360 8822 8823 8824 8833 8850 8852 8853 8854 8856 9309 9311 9316 9317 9336 8850 8852 8853 8854 8855 9316 9317 9336 8659 8660 8663 8858 8861 9158 9162 9341 8857 8859 8861 9158 9162 9341 9342 9346 8858 8860 8861 9341 9342 9346 9347 9349 8859 8861 8862 8863 8864 9346 9347 9349 8361 8659 8660 8663 8857 8858 8859 8860 8862 8863 8864 9158 9162 9341 9342 9346 9347 9349 8361 8659 8663 8860 8861 8863 8864 9349 8860 8861 8862 8864 8865 9319 9321 9349 8361 8362 8363 8364 8365 8659 8663 8834 8835 8836 8860 8861 8862 8863 8865 9319 9321 9349 8834 8835 8836 8863 8864 9319 9321 9349 8797 8815 8816 8867 8868 9280 9283 9353 8866 8868 8869 8870 8872 9280 9283 9353 8366 8367 8368 8369 8370 8371 8372 8797 8815 8816 8866 8867 8869 8870 8872 9280 9283 9353 8370 8371 8372 8867 8868 8870 8872 9353 8867 8868 8869 8871 8872 9353 9354 9357 8870 8872 8873 8874 8876 9353 9354 9357 8370 8371 8372 8373 8374 8375 8376 8867 8868 8869 8870 8871 8873 8874 8876 9353 9354 9357 8374 8375 8376 8871 8872 8874 8876 9357 8871 8872 8873 8875 8876 9357 9358 9361 8874 8876 8877 8878 8880 9357 9358 9361 8374 8375 8376 8377 8378 8379 8380 8871 8872 8873 8874 8875 8877 8878 8880 9357 9358 9361 8378 8379 8380 8875 8876 8878 8880 9361 8875 8876 8877 8879 8880 9361 9362 9365 8878 8880 8881 8882 8884 9361 9362 9365 8378 8379 8380 8381 8382 8383 8384 8875 8876 8877 8878 8879 8881 8882 8884 9361 9362 9365 8382 8383 8384 8879 8880 8882 8884 9365 8879 8880 8881 8883 8884 9365 9366 9369 8882 8884 8885 8886 8888 9365 9366 9369 8382 8383 8384 8385 8386 8387 8388 8879 8880 8881 8882 8883 8885 8886 8888 9365 9366 9369 8386 8387 8388 8883 8884 8886 8888 9369 8883 8884 8885 8887 8888 9369 9370 9373 8886 8888 8889 8890 8892 9369 9370 9373 8386 8387 8388 8389 8390 8391 8392 8883 8884 8885 8886 8887 8889 8890 8892 9369 9370 9373 8390 8391 8392 8887 8888 8890 8892 9373 8887 8888 8889 8891 8892 9373 9374 9377 8890 8892 8893 8894 8896 9373 9374 9377 8390 8391 8392 8393 8394 8395 8396 8887 8888 8889 8890 8891 8893 8894 8896 9373 9374 9377 8394 8395 8396 8891 8892 8894 8896 9377 8891 8892 8893 8895 8896 9377 9378 9380 8894 8896 8897 8898 8899 9377 9378 9380 8394 8395 8396 8397 8398 8399 8400 8891 8892 8893 8894 8895 8897 8898 8899 9377 9378 9380 8398 8399 8400 8895 8896 8898 8899 9380 8895 8896 8897 8899 8900 8901 8903 9380 8398 8399 8400 8401 8402 8403 8404 8405 8458 8459 8895 8896 8897 8898 8900 8901 8903 9380 8405 8458 8459 8898 8899 8901 8903 9380 8898 8899 8900 8902 8903 9380 9381 9383 8901 8903 8904 8982 8986 9380 9381 9383 8405 8457 8458 8459 8460 8486 8487 8898 8899 8900 8901 8902 8904 8948 8949 8953 8982 8986 9380 9381 9383 8486 8487 8902 8903 8953 8982 8986 9383 8696 8697 8698 8906 8907 9193 9194 9387 8905 8907 8908 8909 8911 9193 9194 9387 8406 8407 8408 8410 8696 8697 8698 8905 8906 8908 8909 8911 9193 9194 9387 8407 8408 8410 8906 8907 8909 8911 9387 8906 8907 8908 8910 8911 9385 9387 9391 8909 8911 8912 8913 8915 9385 9387 9391 8407 8408 8409 8410 8906 8907 8908 8909 8910 8912 8913 8915 9385 9387 9391 8408 8409 8410 8910 8911 8913 8915 9391 8910 8911 8912 8914 8915 9391 9392 9395 8913 8915 8916 8918 8919 9391 9392 9395 8408 8409 8410 8411 8412 8413 8414 8910 8911 8912 8913 8914 8916 8918 8919 9391 9392 9395 8412 8413 8414 8914 8915 8918 8919 9395 8419 8422 8423 8918 8919 8920 8924 9395 8914 8915 8916 8917 8919 8920 8924 9395 8412 8413 8414 8415 8416 8417 8418 8419 8422 8423 8914 8915 8916 8917 8918 8920 8924 9395 8917 8918 8919 8923 8924 9393 9395 9400 8421 8422 8423 8922 8924 8926 8927 9403 8921 8923 8924 8926 8927 9397 9400 9403 8920 8922 8924 9393 9395 9397 9400 9403 8419 8421 8422 8423 8917 8918 8919 8920 8921 8922 8923 8926 8927 9393 9395 9397 9400 9403 8427 8429 8430 8926 8927 8928 8931 9403 8921 8922 8924 8925 8927 8928 8931 9403 8420 8421 8422 8423 8424 8425 8426 8427 8429 8430 8921 8922 8924 8925 8926 8928 8931 9403 8925 8926 8927 8930 8931 9401 9403 9407 8431 8432 8433 8930 8931 8932 8936 9407 8928 8929 8931 8932 8936 9401 9403 9407 8427 8428 8429 8430 8431 8432 8433 8925 8926 8927 8928 8929 8930 8932 8936 9401 9403 9407 8929 8930 8931 8935 8936 9405 9407 9409 8450 8451 8452 8934 8938 8944 8945 9409 8933 8935 8936 8937 8938 8944 8945 9409 8932 8934 8936 8937 8938 9405 9407 9409 8431 8432 8433 8434 8439 8440 8441 8929 8930 8931 8932 8934 8935 8937 8938 9405 9407 9409 8439 8440 8441 8934 8935 8936 8938 9409 8435 8436 8437 8438 8439 8440 8441 8450 8451 8452 8933 8934 8935 8936 8937 8944 8945 9409 8485 8941 8942 8970 8972 8979 8980 9413 8453 8454 8455 8941 8942 8943 8945 9413 8442 8443 8444 8445 8453 8454 8455 8478 8479 8480 8485 8939 8940 8942 8943 8945 8970 8972 8979 8980 9413 8939 8940 8941 8943 8945 8979 8980 9413 8940 8941 8942 8944 8945 9409 9410 9413 8933 8934 8938 8943 8945 9409 9410 9413 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8933 8934 8938 8940 8941 8942 8943 8944 9409 9410 9413 8462 8463 8464 8947 8949 8956 8957 9418 8946 8948 8949 8950 8953 8956 8957 9418 8460 8486 8903 8947 8949 8950 8953 9418 8456 8457 8458 8459 8460 8462 8463 8464 8486 8903 8946 8947 8948 8950 8953 8956 8957 9418 8947 8948 8949 8951 8953 9417 9418 9422 8950 8952 8953 8981 8990 9417 9418 9422 8487 8951 8953 8981 8984 8986 8990 9422 8460 8486 8487 8903 8904 8947 8948 8949 8950 8951 8952 8981 8984 8986 8990 9417 9418 9422 8474 8475 8476 8955 8957 8967 8968 9426 8954 8956 8957 8967 8968 9415 9418 9426 8946 8947 8949 8955 8957 9415 9418 9426 8461 8462 8463 8464 8474 8475 8476 8946 8947 8949 8954 8955 8956 8967 8968 9415 9418 9426 8481 8483 8484 8959 8961 8975 8976 9430 8958 8960 8961 8963 8964 8975 8976 9430 8469 8470 8472 8959 8961 8963 8964 9430 8465 8466 8467 8468 8469 8470 8472 8481 8483 8484 8958 8959 8960 8963 8964 8975 8976 9430 8473 8474 8476 8963 8964 8965 8968 9430 8469 8470 8471 8472 8473 8474 8476 8959 8960 8961 8962 8964 8965 8968 9430 8959 8960 8961 8962 8963 8965 8968 9430 8962 8963 8964 8966 8968 9429 9430 9433 8965 8967 8968 9423 9426 9429 9430 9433 8954 8955 8957 8966 8968 9423 9426 9433 8473 8474 8475 8476 8954 8955 8957 8962 8963 8964 8965 8966 8967 9423 9426 9429 9430 9433 8482 8483 8484 8971 8972 8973 8976 9437 8485 8939 8941 8971 8972 8977 8979 9437 8969 8970 8972 8973 8976 8977 8979 9437 8477 8478 8479 8480 8482 8483 8484 8485 8939 8941 8969 8970 8971 8973 8976 8977 8979 9437 8969 8971 8972 8974 8976 9436 9437 9440 8973 8975 8976 9427 9430 9436 9437 9440 8958 8959 8961 8974 8976 9427 9430 9440 8481 8482 8483 8484 8958 8959 8961 8969 8971 8972 8973 8974 8975 9427 9430 9436 9437 9440 8970 8971 8972 8978 8979 9434 9437 9442 8977 8979 8980 9413 9414 9434 9437 9442 8485 8939 8941 8942 8970 8971 8972 8977 8978 8980 9413 9414 9434 9437 9442 8939 8941 8942 8978 8979 9413 9414 9442 8951 8952 8953 8988 8990 9421 9422 9447 8902 8903 8904 8983 8986 9383 9384 9453 8982 8985 8986 9383 9384 9451 9453 9457 8487 8952 8953 8985 8986 8987 8990 9457 8983 8984 8986 8987 8990 9451 9453 9457 8486 8487 8902 8903 8904 8952 8953 8982 8983 8984 8985 8987 8990 9383 9384 9451 9453 9457 8984 8985 8986 8989 8990 9455 9457 9461 8981 8989 8990 8991 9421 9422 9447 9461 8987 8988 8990 8991 9447 9455 9457 9461 8487 8951 8952 8953 8981 8984 8985 8986 8987 8988 8989 8991 9421 9422 9447 9455 9457 9461 8988 8989 8990 9446 9447 9459 9461 9465 8993 8995 8996 9028 9235 9236 9239 9468 8746 8747 8748 8992 8995 8996 9236 9468 8489 8490 8491 8493 8494 8995 8996 8998 8999 9467 9468 9471 8488 8489 8490 8491 8493 8494 8746 8747 8748 8992 8993 8994 8996 8998 8999 9236 9467 9468 9471 8992 8993 8994 8995 8998 8999 9236 9467 9468 9471 8492 8493 8494 8496 8497 8998 8999 9001 9002 9470 9471 9476 8489 8490 8491 8492 8493 8494 8496 8497 8994 8995 8996 8997 8999 9001 9002 9467 9468 9470 9471 9476 8994 8995 8996 8997 8998 9001 9002 9467 9468 9470 9471 9476 8495 8496 8497 8502 8503 9001 9002 9007 9008 9475 9476 9486 8492 8493 8494 8495 8496 8497 8502 8503 8997 8998 8999 9000 9002 9007 9008 9470 9471 9475 9476 9486 8997 8998 8999 9000 9001 9007 9008 9470 9471 9475 9476 9486 9005 9030 9032 9033 9035 9482 9484 9489 8524 9005 9021 9022 9035 9036 9038 9489 9003 9004 9021 9022 9032 9033 9035 9489 8501 8502 8503 8508 8509 9007 9008 9013 9014 9485 9486 9492 8495 8496 8497 8501 8502 8503 8508 8509 9000 9001 9002 9006 9008 9013 9014 9475 9476 9485 9486 9492 9000 9001 9002 9006 9007 9013 9014 9475 9476 9485 9486 9492 8515 8516 8517 8520 8521 9010 9011 9015 9016 9024 9025 9495 8498 8499 8500 8504 8505 8506 8510 8511 8515 8516 8517 8520 8521 9009 9011 9015 9016 9024 9025 9495 8504 8505 8506 8510 8511 9009 9010 9015 9016 9024 9025 9495 8507 8508 8509 8513 8514 9013 9014 9018 9019 9491 9492 9497 8501 8502 8503 8507 8508 8509 8513 8514 9006 9007 9008 9012 9014 9018 9019 9485 9486 9491 9492 9497 9006 9007 9008 9012 9013 9018 9019 9485 9486 9491 9492 9497 9009 9010 9011 9016 9017 9018 9019 9024 9025 9495 9496 9497 8504 8505 8506 8510 8511 8512 8513 8514 9009 9010 9011 9015 9017 9018 9019 9024 9025 9495 9496 9497 8510 8511 8512 8513 8514 9015 9016 9018 9019 9495 9496 9497 8507 8508 8509 8510 8511 8512 8513 8514 9012 9013 9014 9015 9016 9017 9019 9491 9492 9495 9496 9497 9012 9013 9014 9015 9016 9017 9018 9491 9492 9495 9496 9497 8518 8522 8523 8525 8530 9021 9022 9026 9027 9488 9489 9500 8518 8522 8523 8524 8525 8526 8527 8530 9004 9005 9020 9022 9026 9027 9035 9036 9038 9039 9041 9488 9489 9500 9004 9005 9020 9021 9026 9027 9035 9488 9489 9500 8519 8520 8521 8522 8523 9024 9025 9026 9027 9494 9495 9500 8515 8516 8517 8519 8520 8521 8522 8523 9009 9010 9011 9015 9016 9023 9025 9026 9027 9494 9495 9500 9009 9010 9011 9015 9016 9023 9024 9026 9027 9494 9495 9500 9020 9021 9022 9023 9024 9025 9027 9488 9489 9494 9495 9500 8518 8519 8520 8521 8522 8523 8525 8530 9020 9021 9022 9023 9024 9025 9026 9488 9489 9494 9495 9500 8992 9235 9236 9238 9239 9468 9469 9502 9030 9031 9032 9474 9480 9481 9484 9523 9524 9526 9527 9529 9003 9029 9031 9032 9482 9484 9489 9526 9527 9529 9029 9030 9032 9033 9034 9035 9484 9526 9527 9529 9530 9532 9003 9005 9029 9030 9031 9033 9034 9035 9482 9484 9489 9526 9527 9529 9530 9532 9003 9005 9031 9032 9034 9035 9489 9529 9530 9532 9031 9032 9033 9035 9036 9037 9038 9529 9530 9532 9533 9535 8524 9003 9004 9005 9021 9022 9031 9032 9033 9034 9036 9037 9038 9489 9529 9530 9532 9533 9535 8524 9004 9021 9034 9035 9037 9038 9532 9533 9535 9034 9035 9036 9038 9039 9040 9041 9532 9533 9535 9536 9538 8524 8526 9004 9021 9034 9035 9036 9037 9039 9040 9041 9532 9533 9535 9536 9538 8524 8526 9021 9037 9038 9040 9041 9535 9536 9538 9037 9038 9039 9041 9042 9043 9044 9535 9536 9538 9539 9541 8524 8525 8526 8527 8528 8530 9021 9037 9038 9039 9040 9042 9043 9044 9535 9536 9538 9539 9541 8527 8528 8530 9040 9041 9043 9044 9538 9539 9541 9040 9041 9042 9044 9045 9046 9047 9538 9539 9541 9542 9544 8527 8528 8530 8531 9040 9041 9042 9043 9045 9046 9047 9538 9539 9541 9542 9544 8528 8530 8531 9043 9044 9046 9047 9541 9542 9544 9043 9044 9045 9047 9048 9049 9050 9541 9542 9544 9545 9547 8528 8529 8530 8531 8532 8533 8535 9043 9044 9045 9046 9048 9049 9050 9541 9542 9544 9545 9547 8532 8533 8535 9046 9047 9049 9050 9544 9545 9547 9046 9047 9048 9050 9051 9052 9053 9544 9545 9547 9548 9550 8532 8533 8535 8536 9046 9047 9048 9049 9051 9052 9053 9544 9545 9547 9548 9550 8533 8535 8536 9049 9050 9052 9053 9547 9548 9550 9049 9050 9051 9053 9054 9055 9056 9547 9548 9550 9551 9553 8533 8534 8535 8536 8537 8538 8540 9049 9050 9051 9052 9054 9055 9056 9547 9548 9550 9551 9553 8537 8538 8540 9052 9053 9055 9056 9550 9551 9553 9052 9053 9054 9056 9057 9058 9059 9550 9551 9553 9554 9556 8537 8538 8540 8541 9052 9053 9054 9055 9057 9058 9059 9550 9551 9553 9554 9556 8538 8540 8541 9055 9056 9058 9059 9553 9554 9556 9055 9056 9057 9059 9060 9061 9062 9553 9554 9556 9557 9558 8538 8539 8540 8541 8542 8543 8544 9055 9056 9057 9058 9060 9061 9062 9553 9554 9556 9557 9558 8542 8543 8544 9058 9059 9061 9062 9556 9557 9558 8542 8543 8544 9058 9059 9060 9062 9556 9557 9558 9058 9059 9060 9061 9556 9557 9558 8581 8582 8583 8585 8586 9064 9065 9066 9067 9100 9101 9564 8545 8546 8547 8548 8549 8550 8551 8552 8581 8582 8583 8585 8586 9063 9065 9066 9067 9100 9101 9564 8548 8549 8550 8551 8552 9063 9064 9066 9067 9100 9101 9564 9063 9064 9065 9067 9068 9070 9071 9100 9101 9564 9565 9570 8548 8549 8550 8551 8552 8553 8554 8555 9063 9064 9065 9066 9068 9070 9071 9100 9101 9564 9565 9570 8551 8552 8553 8554 8555 9066 9067 9070 9071 9564 9565 9570 8590 8591 8592 8595 8596 9074 9075 9110 9111 9566 9567 9573 9066 9067 9068 9071 9072 9076 9077 9564 9565 9570 9571 9576 8551 8552 8553 8554 8555 8556 8558 8559 9066 9067 9068 9070 9072 9076 9077 9564 9565 9570 9571 9576 8554 8555 8556 8558 8559 9070 9071 9076 9077 9570 9571 9576 8557 8562 8563 8590 8591 9074 9075 9080 9081 9572 9573 9579 8557 8562 8563 8590 8591 8592 8595 8596 9069 9073 9075 9080 9081 9110 9111 9566 9567 9572 9573 9579 9069 9073 9074 9080 9081 9110 9111 9566 9567 9572 9573 9579 9070 9071 9072 9077 9078 9082 9083 9570 9571 9576 9577 9582 8554 8555 8556 8558 8559 8560 8564 8565 9070 9071 9072 9076 9078 9082 9083 9570 9571 9576 9577 9582 8558 8559 8560 8564 8565 9076 9077 9082 9083 9576 9577 9582 8561 8562 8563 8568 8569 9080 9081 9086 9087 9578 9579 9585 8557 8561 8562 8563 8568 8569 8590 8591 9073 9074 9075 9079 9081 9086 9087 9572 9573 9578 9579 9585 9073 9074 9075 9079 9080 9086 9087 9572 9573 9578 9579 9585 9076 9077 9078 9083 9084 9088 9089 9576 9577 9582 9583 9588 8558 8559 8560 8564 8565 8566 8570 8571 9076 9077 9078 9082 9084 9088 9089 9576 9577 9582 9583 9588 8564 8565 8566 8570 8571 9082 9083 9088 9089 9582 9583 9588 8567 8568 8569 8574 8575 9086 9087 9092 9093 9584 9585 9591 8561 8562 8563 8567 8568 8569 8574 8575 9079 9080 9081 9085 9087 9092 9093 9578 9579 9584 9585 9591 9079 9080 9081 9085 9086 9092 9093 9578 9579 9584 9585 9591 9082 9083 9084 9089 9090 9094 9095 9582 9583 9588 9589 9594 8564 8565 8566 8570 8571 8572 8576 8577 9082 9083 9084 9088 9090 9094 9095 9582 9583 9588 9589 9594 8570 8571 8572 8576 8577 9088 9089 9094 9095 9588 9589 9594 8573 8574 8575 8579 8580 9092 9093 9097 9098 9590 9591 9596 8567 8568 8569 8573 8574 8575 8579 8580 9085 9086 9087 9091 9093 9097 9098 9584 9585 9590 9591 9596 9085 9086 9087 9091 9092 9097 9098 9584 9585 9590 9591 9596 9088 9089 9090 9095 9096 9097 9098 9588 9589 9594 9595 9596 8570 8571 8572 8576 8577 8578 8579 8580 9088 9089 9090 9094 9096 9097 9098 9588 9589 9594 9595 9596 8576 8577 8578 8579 8580 9094 9095 9097 9098 9594 9595 9596 8573 8574 8575 8576 8577 8578 8579 8580 9091 9092 9093 9094 9095 9096 9098 9590 9591 9594 9595 9596 9091 9092 9093 9094 9095 9096 9097 9590 9591 9594 9595 9596 8584 8585 8586 8588 8589 9100 9101 9103 9104 9563 9564 9599 8581 8582 8583 8584 8585 8586 8588 8589 9063 9064 9065 9066 9067 9099 9101 9103 9104 9563 9564 9599 9063 9064 9065 9066 9067 9099 9100 9103 9104 9563 9564 9599 8587 8588 8589 8668 8669 9103 9104 9106 9107 9598 9599 9602 8584 8585 8586 8587 8588 8589 8668 8669 9099 9100 9101 9102 9104 9106 9107 9563 9564 9598 9599 9602 9099 9100 9101 9102 9103 9106 9107 9563 9564 9598 9599 9602 8667 8668 8669 8671 8672 9106 9107 9167 9168 9601 9602 9605 8587 8588 8589 8667 8668 8669 8671 8672 9102 9103 9104 9105 9107 9167 9168 9598 9599 9601 9602 9605 9102 9103 9104 9105 9106 9167 9168 9598 9599 9601 9602 9605 8594 8595 8596 9109 9110 9112 9115 9609 9108 9110 9111 9112 9115 9561 9567 9609 8590 8591 8592 8594 8595 8596 9069 9074 9075 9108 9109 9111 9112 9115 9561 9566 9567 9573 9609 9069 9074 9075 9109 9110 9561 9566 9567 9573 9609 9108 9109 9110 9113 9115 9607 9609 9614 9112 9115 9116 9607 9609 9613 9614 9616 8597 8598 8600 9115 9116 9117 9119 9616 8593 8594 8595 8596 8597 8598 8600 9108 9109 9110 9112 9113 9114 9116 9117 9119 9607 9609 9613 9614 9616 9113 9114 9115 9117 9119 9613 9614 9616 9114 9115 9116 9119 9120 9615 9616 9620 8605 8606 8610 9119 9120 9122 9123 9620 8597 8598 8599 8600 8601 8602 8603 8605 8606 8610 9114 9115 9116 9117 9118 9120 9122 9123 9615 9616 9620 9117 9118 9119 9122 9123 9615 9616 9620 8623 8624 8625 9122 9123 9132 9134 9620 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8623 8624 8625 9118 9119 9120 9121 9123 9132 9134 9620 9118 9119 9120 9121 9122 9132 9134 9620 8618 8621 8622 9125 9127 9130 9131 9625 9124 9126 9127 9130 9131 9139 9142 9625 8633 8634 8636 9125 9127 9139 9142 9625 8614 8615 8616 8617 8618 8621 8622 8633 8634 8636 9124 9125 9126 9130 9131 9139 9142 9625 8620 8621 8622 9129 9131 9133 9134 9628 9128 9130 9131 9133 9134 9622 9625 9628 9124 9125 9127 9129 9131 9622 9625 9628 8618 8620 8621 8622 9124 9125 9127 9128 9129 9130 9133 9134 9622 9625 9628 9121 9122 9123 9133 9134 9619 9620 9628 9128 9129 9131 9132 9134 9619 9620 9628 8619 8620 8621 8622 8623 8624 8625 9121 9122 9123 9128 9129 9131 9132 9133 9619 9620 9628 8664 8665 8666 9136 9137 9163 9164 9632 9135 9137 9138 9154 9155 9163 9164 9632 8626 8627 8628 8629 8630 8631 8632 8656 8657 8658 8664 8665 8666 9135 9136 9138 9154 9155 9163 9164 9632 8656 8657 8658 9136 9137 9154 9155 9632 9125 9126 9127 9140 9142 9624 9625 9637 9139 9141 9142 9143 9146 9624 9625 9637 8637 8638 8640 9140 9142 9143 9146 9637 8633 8634 8635 8636 8637 8638 8640 9125 9126 9127 9139 9140 9141 9143 9146 9624 9625 9637 9140 9141 9142 9144 9146 9636 9637 9640 9143 9145 9146 9147 9149 9636 9637 9640 8641 8642 8644 9144 9146 9147 9149 9640 8637 8638 8639 8640 8641 8642 8644 9140 9141 9142 9143 9144 9145 9147 9149 9636 9637 9640 9144 9145 9146 9148 9149 9150 9153 9640 8651 8652 8655 9147 9149 9150 9153 9640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8655 9144 9145 9146 9147 9148 9150 9153 9640 9147 9148 9149 9151 9153 9639 9640 9642 9150 9152 9153 9155 9156 9639 9640 9642 8652 8653 8655 9151 9153 9155 9156 9642 8651 8652 8653 8655 9147 9148 9149 9150 9151 9152 9155 9156 9639 9640 9642 9136 9137 9138 9155 9156 9632 9633 9642 8652 8653 8654 8655 8656 8657 8658 9136 9137 9138 9151 9152 9153 9154 9156 9632 9633 9642 9151 9152 9153 9154 9155 9632 9633 9642 9158 9159 9162 9339 9341 9647 9648 9652 8857 8858 8861 9157 9159 9162 9341 9652 9157 9158 9160 9162 9341 9651 9652 9654 9159 9161 9162 9164 9165 9651 9652 9654 8660 8661 8663 9160 9162 9164 9165 9654 8659 8660 8661 8663 8857 8858 8861 9157 9158 9159 9160 9161 9164 9165 9341 9651 9652 9654 9135 9136 9137 9164 9165 9630 9632 9654 8660 8661 8662 8663 8664 8665 8666 9135 9136 9137 9160 9161 9162 9163 9165 9630 9632 9654 9160 9161 9162 9163 9164 9630 9632 9654 8670 8671 8672 8674 8675 9167 9168 9170 9171 9604 9605 9657 8667 8668 8669 8670 8671 8672 8674 8675 9105 9106 9107 9166 9168 9170 9171 9601 9602 9604 9605 9657 9105 9106 9107 9166 9167 9170 9171 9601 9602 9604 9605 9657 8673 8674 8675 8677 8678 9170 9171 9173 9174 9656 9657 9660 8670 8671 8672 8673 8674 8675 8677 8678 9166 9167 9168 9169 9171 9173 9174 9604 9605 9656 9657 9660 9166 9167 9168 9169 9170 9173 9174 9604 9605 9656 9657 9660 8676 8677 8678 8680 8681 9173 9174 9176 9177 9659 9660 9663 8673 8674 8675 8676 8677 8678 8680 8681 9169 9170 9171 9172 9174 9176 9177 9656 9657 9659 9660 9663 9169 9170 9171 9172 9173 9176 9177 9656 9657 9659 9660 9663 8679 8680 8681 8685 8686 9176 9177 9181 9182 9662 9663 9668 8676 8677 8678 8679 8680 8681 8685 8686 9172 9173 9174 9175 9177 9181 9182 9659 9660 9662 9663 9668 9172 9173 9174 9175 9176 9181 9182 9659 9660 9662 9663 9668 9179 9180 9181 9182 9666 9667 9668 8682 8683 8684 8685 8686 9178 9180 9181 9182 9666 9667 9668 8682 8683 8684 8685 8686 9178 9179 9181 9182 9666 9667 9668 8679 8680 8681 8682 8683 8684 8685 8686 9175 9176 9177 9178 9179 9180 9182 9662 9663 9666 9667 9668 9175 9176 9177 9178 9179 9180 9181 9662 9663 9666 9667 9668 8708 8709 8710 9184 9186 9204 9205 9672 9183 9185 9186 9204 9205 9672 9673 9676 9184 9186 9187 9188 9190 9672 9673 9676 8687 8688 8689 8690 8708 8709 8710 9183 9184 9185 9187 9188 9190 9204 9205 9672 9673 9676 8688 8689 8690 9185 9186 9188 9190 9676 9185 9186 9187 9189 9190 9676 9677 9679 9188 9190 9191 9192 9193 9676 9677 9679 8688 8689 8690 8691 8692 8693 8694 9185 9186 9187 9188 9189 9191 9192 9193 9676 9677 9679 8692 8693 8694 9189 9190 9192 9193 9679 9189 9190 9191 9193 9194 9386 9387 9679 8692 8693 8694 8695 8696 8697 8698 8905 8906 8907 9189 9190 9191 9192 9194 9386 9387 9679 8905 8906 8907 9192 9193 9386 9387 9679 8716 8717 8718 9196 9197 9207 9213 9686 9195 9197 9198 9199 9201 9207 9213 9686 8699 8700 8701 8702 8703 8704 8705 8716 8717 8718 9195 9196 9198 9199 9201 9207 9213 9686 8703 8704 8705 9196 9197 9199 9201 9686 9196 9197 9198 9200 9201 9686 9687 9689 9199 9201 9202 9203 9204 9686 9687 9689 8703 8704 8705 8706 8707 8708 8709 9196 9197 9198 9199 9200 9202 9203 9204 9686 9687 9689 8707 8708 8709 9200 9201 9203 9204 9689 9200 9201 9202 9204 9205 9206 9672 9689 8707 8708 8709 8710 9183 9184 9186 9200 9201 9202 9203 9205 9206 9672 9689 9183 9184 9186 9203 9204 9206 9672 9689 9203 9204 9205 9670 9672 9689 9690 9691 9195 9196 9197 9213 9214 9684 9686 9697 8719 8722 8723 9209 9210 9215 9218 9701 9208 9210 9211 9212 9213 9215 9218 9701 8711 8712 8713 8714 8715 8716 8717 8719 8722 8723 9208 9209 9211 9212 9213 9215 9218 9701 8715 8716 8717 9209 9210 9212 9213 9701 9209 9210 9211 9213 9214 9696 9697 9701 8715 8716 8717 8718 9195 9196 9197 9207 9209 9210 9211 9212 9214 9684 9686 9696 9697 9701 9207 9212 9213 9684 9686 9696 9697 9701 9208 9209 9210 9216 9218 9700 9701 9705 9215 9217 9218 9219 9222 9700 9701 9705 8721 8722 8723 9216 9218 9219 9222 9705 8719 8721 8722 8723 9208 9209 9210 9215 9216 9217 9219 9222 9700 9701 9705 9216 9217 9218 9220 9222 9704 9705 9707 9219 9221 9222 9227 9228 9704 9705 9707 8728 8729 8731 9220 9222 9227 9228 9707 8720 8721 8722 8723 8728 8729 8731 9216 9217 9218 9219 9220 9221 9227 9228 9704 9705 9707 8753 8754 8759 9224 9225 9250 9252 9707 9223 9225 9226 9227 9228 9250 9252 9707 8724 8725 8726 8727 8732 8733 8734 8753 8754 8759 9223 9224 9226 9227 9228 9250 9252 9707 8732 8733 8734 9224 9225 9227 9228 9707 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 9220 9221 9222 9224 9225 9226 9228 9707 9220 9221 9222 9224 9225 9226 9227 9707 9243 9466 9514 9515 9516 9710 9712 9717 8750 8751 8752 9231 9233 9248 9249 9722 9230 9232 9233 9234 9236 9248 9249 9722 8745 8747 8748 9231 9233 9234 9236 9722 8738 8739 8740 8741 8742 8743 8744 8745 8747 8748 8750 8751 8752 9230 9231 9232 9234 9236 9248 9249 9722 9231 9232 9233 9235 9236 9237 9239 9722 8992 9028 9234 9236 9237 9239 9468 9722 8745 8746 8747 8748 8992 8993 8995 8996 9028 9231 9232 9233 9234 9235 9237 9239 9468 9722 9234 9235 9236 9239 9240 9721 9722 9724 9028 9239 9240 9241 9468 9469 9502 9724 8992 9028 9234 9235 9236 9237 9238 9240 9241 9468 9469 9502 9721 9722 9724 9237 9238 9239 9241 9502 9721 9722 9724 9238 9239 9240 9244 9501 9502 9505 9724 9243 9245 9511 9512 9516 9709 9712 9728 9229 9242 9514 9515 9516 9709 9712 9728 9241 9501 9502 9504 9505 9723 9724 9731 9242 9508 9511 9512 9516 9727 9728 9731 8773 8774 8775 9247 9249 9267 9268 9735 9246 9248 9249 9267 9268 9719 9722 9735 9230 9231 9233 9247 9249 9719 9722 9735 8749 8750 8751 8752 8773 8774 8775 9230 9231 9233 9246 9247 9248 9267 9268 9719 9722 9735 9223 9224 9225 9252 9253 9706 9707 9740 8754 8759 8760 9252 9253 9254 9256 9740 8753 8754 8759 8760 9223 9224 9225 9250 9251 9253 9254 9256 9706 9707 9740 9250 9251 9252 9254 9256 9706 9707 9740 9251 9252 9253 9256 9257 9739 9740 9742 8790 8795 8796 9256 9257 9273 9278 9742 8754 8755 8756 8757 8758 8759 8760 8790 8795 8796 9251 9252 9253 9254 9255 9257 9273 9278 9739 9740 9742 9254 9255 9256 9273 9278 9739 9740 9742 8780 8781 8782 9259 9261 9271 9272 9747 9258 9260 9261 9262 9265 9271 9272 9747 8765 8766 8768 9259 9261 9262 9265 9747 8761 8762 8763 8764 8765 8766 8768 8780 8781 8782 9258 9259 9260 9262 9265 9271 9272 9747 9259 9260 9261 9263 9265 9746 9747 9750 9262 9264 9265 9266 9268 9746 9747 9750 8769 8770 8772 9263 9265 9266 9268 9750 8765 8766 8767 8768 8769 8770 8772 9259 9260 9261 9262 9263 9264 9266 9268 9746 9747 9750 9263 9264 9265 9267 9268 9732 9735 9750 9246 9247 9249 9266 9268 9732 9735 9750 8769 8770 8771 8772 8773 8774 8775 9246 9247 9249 9263 9264 9265 9266 9267 9732 9735 9750 8787 8788 8789 9270 9272 9274 9276 9754 9269 9271 9272 9274 9276 9744 9747 9754 9258 9259 9261 9270 9272 9744 9747 9754 8776 8777 8778 8779 8780 8781 8782 8787 8788 8789 9258 9259 9261 9269 9270 9271 9274 9276 9744 9747 9754 9255 9256 9257 9278 9279 9741 9742 9756 9269 9270 9272 9275 9276 9754 9755 9756 9274 9276 9277 9278 9279 9754 9755 9756 8783 8784 8785 8786 8787 8788 8789 8791 8792 8793 9269 9270 9272 9274 9275 9277 9278 9279 9754 9755 9756 8791 8792 8793 9275 9276 9278 9279 9756 8790 8791 8792 8793 8794 8795 8796 9255 9256 9257 9273 9275 9276 9277 9279 9741 9742 9756 9273 9275 9276 9277 9278 9741 9742 9756 8866 8867 8868 9283 9284 9351 9353 9764 8814 8815 8816 9282 9283 9298 9299 9768 9281 9283 9284 9298 9299 9762 9764 9768 8797 8814 8815 8816 8866 8867 8868 9280 9281 9282 9284 9298 9299 9351 9353 9762 9764 9768 9280 9282 9283 9351 9353 9762 9764 9768 8818 8819 8820 9286 9287 9302 9303 9772 9285 9287 9288 9289 9291 9302 9303 9772 8798 8799 8800 8801 8802 8803 8804 8818 8819 8820 9285 9286 9288 9289 9291 9302 9303 9772 8802 8803 8804 9286 9287 9289 9291 9772 9286 9287 9288 9290 9291 9772 9773 9776 9289 9291 9292 9293 9295 9772 9773 9776 8802 8803 8804 8805 8806 8807 8808 9286 9287 9288 9289 9290 9292 9293 9295 9772 9773 9776 8806 8807 8808 9290 9291 9293 9295 9776 9290 9291 9292 9294 9295 9776 9777 9779 9293 9295 9296 9297 9298 9776 9777 9779 8806 8807 8808 8809 8810 8811 8812 9290 9291 9292 9293 9294 9296 9297 9298 9776 9777 9779 8810 8811 8812 9294 9295 9297 9298 9779 9294 9295 9296 9298 9299 9766 9768 9779 8810 8811 8812 8813 8814 8815 8816 9281 9282 9283 9294 9295 9296 9297 9299 9766 9768 9779 9281 9282 9283 9297 9298 9766 9768 9779 8821 8831 8832 9301 9302 9304 9307 9784 9300 9302 9303 9304 9307 9770 9772 9784 8817 8818 8819 8820 8821 8831 8832 9285 9286 9287 9300 9301 9303 9304 9307 9770 9772 9784 9285 9286 9287 9301 9302 9770 9772 9784 9300 9301 9302 9305 9307 9783 9784 9788 9304 9306 9307 9308 9313 9783 9784 9788 8830 8831 8832 9305 9307 9308 9313 9788 8821 8830 8831 8832 9300 9301 9302 9304 9305 9306 9308 9313 9783 9784 9788 9305 9306 9307 9313 9314 9787 9788 9793 8833 8850 8855 9310 9311 9315 9317 9793 9309 9311 9312 9313 9314 9315 9317 9793 8822 8823 8824 8825 8826 8827 8828 8833 8850 8855 9309 9310 9312 9313 9314 9315 9317 9793 8826 8827 8828 9310 9311 9313 9314 9793 8826 8827 8828 8829 8830 8831 8832 9305 9306 9307 9308 9310 9311 9312 9314 9787 9788 9793 9308 9310 9311 9312 9313 9787 9788 9793 9309 9310 9311 9317 9318 9792 9793 9796 8850 8855 8856 9317 9318 9331 9336 9796 8833 8850 8855 8856 9309 9310 9311 9315 9316 9318 9331 9336 9792 9793 9796 9315 9316 9317 9331 9336 9792 9793 9796 8863 8864 8865 9320 9321 9349 9350 9800 9319 9321 9322 9323 9326 9349 9350 9800 8834 8835 8836 8837 8838 8839 8841 8863 8864 8865 9319 9320 9322 9323 9326 9349 9350 9800 8838 8839 8841 9320 9321 9323 9326 9800 9320 9321 9322 9324 9326 9800 9801 9805 9323 9325 9326 9800 9801 9805 9806 9808 9324 9326 9327 9328 9329 9805 9806 9808 8838 8839 8840 8841 9320 9321 9322 9323 9324 9325 9327 9328 9329 9800 9801 9805 9806 9808 8839 8840 8841 9325 9326 9328 9329 9808 9325 9326 9327 9329 9330 9332 9334 9808 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 9325 9326 9327 9328 9330 9332 9334 9808 8846 8847 8848 9328 9329 9332 9334 9808 9316 9317 9318 9336 9337 9795 9796 9810 9328 9329 9330 9333 9334 9808 9809 9810 9332 9334 9335 9336 9337 9808 9809 9810 8846 8847 8848 8849 8851 8852 8853 9328 9329 9330 9332 9333 9335 9336 9337 9808 9809 9810 8851 8852 8853 9333 9334 9336 9337 9810 8850 8851 8852 8853 8854 8855 8856 9316 9317 9318 9331 9333 9334 9335 9337 9795 9796 9810 9331 9333 9334 9335 9336 9795 9796 9810 9339 9340 9341 9644 9648 9814 9815 9817 9157 9338 9340 9341 9647 9648 9652 9817 9338 9339 9341 9342 9343 9346 9648 9817 8857 8858 8859 8861 9157 9158 9159 9162 9338 9339 9340 9342 9343 9346 9647 9648 9652 9817 8858 8859 8861 9340 9341 9343 9346 9817 9340 9341 9342 9344 9346 9817 9818 9821 9343 9345 9346 9817 9818 9821 9822 9824 9344 9346 9347 9348 9349 9821 9822 9824 8858 8859 8860 8861 9340 9341 9342 9343 9344 9345 9347 9348 9349 9817 9818 9821 9822 9824 8859 8860 8861 9345 9346 9348 9349 9824 9345 9346 9347 9349 9350 9798 9800 9824 8859 8860 8861 8862 8863 8864 8865 9319 9320 9321 9345 9346 9347 9348 9350 9798 9800 9824 9319 9320 9321 9348 9349 9798 9800 9824 9280 9283 9284 9352 9353 9761 9764 9829 9351 9353 9354 9355 9357 9761 9764 9829 8866 8867 8868 8869 8870 8871 8872 9280 9283 9284 9351 9352 9354 9355 9357 9761 9764 9829 8870 8871 8872 9352 9353 9355 9357 9829 9352 9353 9354 9356 9357 9829 9830 9833 9355 9357 9358 9359 9361 9829 9830 9833 8870 8871 8872 8873 8874 8875 8876 9352 9353 9354 9355 9356 9358 9359 9361 9829 9830 9833 8874 8875 8876 9356 9357 9359 9361 9833 9356 9357 9358 9360 9361 9833 9834 9837 9359 9361 9362 9363 9365 9833 9834 9837 8874 8875 8876 8877 8878 8879 8880 9356 9357 9358 9359 9360 9362 9363 9365 9833 9834 9837 8878 8879 8880 9360 9361 9363 9365 9837 9360 9361 9362 9364 9365 9837 9838 9841 9363 9365 9366 9367 9369 9837 9838 9841 8878 8879 8880 8881 8882 8883 8884 9360 9361 9362 9363 9364 9366 9367 9369 9837 9838 9841 8882 8883 8884 9364 9365 9367 9369 9841 9364 9365 9366 9368 9369 9841 9842 9845 9367 9369 9370 9371 9373 9841 9842 9845 8882 8883 8884 8885 8886 8887 8888 9364 9365 9366 9367 9368 9370 9371 9373 9841 9842 9845 8886 8887 8888 9368 9369 9371 9373 9845 9368 9369 9370 9372 9373 9845 9846 9848 9371 9373 9374 9375 9377 9845 9846 9848 8886 8887 8888 8889 8890 8891 8892 9368 9369 9370 9371 9372 9374 9375 9377 9845 9846 9848 8890 8891 8892 9372 9373 9375 9377 9848 9372 9373 9374 9376 9377 9848 9849 9851 9375 9377 9378 9379 9380 9848 9849 9851 8890 8891 8892 8893 8894 8895 8896 9372 9373 9374 9375 9376 9378 9379 9380 9848 9849 9851 8894 8895 8896 9376 9377 9379 9380 9851 9376 9377 9378 9380 9381 9382 9383 9851 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 9376 9377 9378 9379 9381 9382 9383 9851 8901 8902 8903 9379 9380 9382 9383 9851 9379 9380 9381 9383 9384 9449 9453 9851 8901 8902 8903 8904 8982 8983 8986 9379 9380 9381 9382 9384 9449 9453 9851 8982 8983 8986 9382 9383 9449 9453 9851 8909 8910 8911 9387 9388 9389 9391 9856 9192 9193 9194 9387 9388 9679 9680 9856 8905 8906 8907 8908 8909 8910 8911 9192 9193 9194 9385 9386 9388 9389 9391 9679 9680 9856 9385 9386 9387 9389 9391 9679 9680 9856 9385 9387 9388 9390 9391 9856 9857 9860 9389 9391 9392 9394 9395 9856 9857 9860 8909 8910 8911 8912 8913 8914 8915 9385 9387 9388 9389 9390 9392 9394 9395 9856 9857 9860 8913 8914 8915 9390 9391 9394 9395 9860 8920 8923 8924 9394 9395 9396 9400 9860 9390 9391 9392 9393 9395 9396 9400 9860 8913 8914 8915 8916 8917 8918 8919 8920 8923 8924 9390 9391 9392 9393 9394 9396 9400 9860 9393 9394 9395 9399 9400 9858 9860 9865 8922 8923 8924 9398 9400 9402 9403 9868 9397 9399 9400 9402 9403 9862 9865 9868 9396 9398 9400 9858 9860 9862 9865 9868 8920 8922 8923 8924 9393 9394 9395 9396 9397 9398 9399 9402 9403 9858 9860 9862 9865 9868 8928 8930 8931 9402 9403 9404 9407 9868 9397 9398 9400 9401 9403 9404 9407 9868 8921 8922 8923 8924 8925 8926 8927 8928 8930 8931 9397 9398 9400 9401 9402 9404 9407 9868 9401 9402 9403 9406 9407 9866 9868 9870 8932 8935 8936 9406 9407 9408 9409 9870 9404 9405 9407 9408 9409 9866 9868 9870 8928 8929 8930 8931 8932 8935 8936 9401 9402 9403 9404 9405 9406 9408 9409 9866 9868 9870 9405 9406 9407 9409 9410 9411 9413 9870 8932 8933 8934 8935 8936 8937 8938 8943 8944 8945 9405 9406 9407 9408 9410 9411 9413 9870 8943 8944 8945 9408 9409 9411 9413 9870 9408 9409 9410 9412 9413 9870 9871 9876 9411 9413 9414 9441 9442 9870 9871 9876 8939 8940 8941 8942 8943 8944 8945 8978 8979 8980 9408 9409 9410 9411 9412 9414 9441 9442 9870 9871 9876 8978 8979 8980 9412 9413 9441 9442 9876 8955 8956 8957 9416 9418 9425 9426 9880 9415 9417 9418 9419 9422 9425 9426 9880 8950 8951 8953 9416 9418 9419 9422 9880 8946 8947 8948 8949 8950 8951 8953 8955 8956 8957 9415 9416 9417 9419 9422 9425 9426 9880 9416 9417 9418 9420 9422 9879 9880 9883 9419 9421 9422 9444 9447 9879 9880 9883 8981 8988 8990 9420 9422 9444 9447 9883 8950 8951 8952 8953 8981 8988 8990 9416 9417 9418 9419 9420 9421 9444 9447 9879 9880 9883 8966 8967 8968 9424 9426 9432 9433 9887 9423 9425 9426 9432 9433 9877 9880 9887 9415 9416 9418 9424 9426 9877 9880 9887 8954 8955 8956 8957 8966 8967 8968 9415 9416 9418 9423 9424 9425 9432 9433 9877 9880 9887 8974 8975 8976 9428 9430 9439 9440 9891 9427 9429 9430 9431 9433 9439 9440 9891 8965 8966 8968 9428 9430 9431 9433 9891 8958 8959 8960 8961 8962 8963 8964 8965 8966 8968 8974 8975 8976 9427 9428 9429 9431 9433 9439 9440 9891 9428 9429 9430 9432 9433 9884 9887 9891 9423 9424 9426 9431 9433 9884 9887 9891 8965 8966 8967 8968 9423 9424 9426 9428 9429 9430 9431 9432 9884 9887 9891 8977 8978 8979 9435 9437 9442 9443 9893 9434 9436 9437 9438 9440 9442 9443 9893 8973 8974 8976 9435 9437 9438 9440 9893 8969 8970 8971 8972 8973 8974 8976 8977 8978 8979 9434 9435 9436 9438 9440 9442 9443 9893 9435 9436 9437 9439 9440 9888 9891 9893 9427 9428 9430 9438 9440 9888 9891 9893 8973 8974 8975 8976 9427 9428 9430 9435 9436 9437 9438 9439 9888 9891 9893 9412 9413 9414 9442 9443 9874 9876 9893 8977 8978 8979 8980 9412 9413 9414 9434 9435 9437 9441 9443 9874 9876 9893 9434 9435 9437 9441 9442 9874 9876 9893 9420 9421 9422 9445 9447 9882 9883 9899 9444 9446 9447 9448 9465 9882 9883 9899 8991 9445 9447 9448 9459 9461 9465 9899 8981 8988 8989 8990 8991 9420 9421 9422 9444 9445 9446 9448 9459 9461 9465 9882 9883 9899 9445 9446 9447 9463 9465 9898 9899 9903 9382 9383 9384 9450 9453 9851 9852 9908 9449 9452 9453 9851 9852 9906 9908 9912 8983 8985 8986 9452 9453 9454 9457 9912 9450 9451 9453 9454 9457 9906 9908 9912 8982 8983 8985 8986 9382 9383 9384 9449 9450 9451 9452 9454 9457 9851 9852 9906 9908 9912 9451 9452 9453 9456 9457 9910 9912 9916 8987 8989 8990 9456 9457 9458 9461 9916 9454 9455 9457 9458 9461 9910 9912 9916 8983 8984 8985 8986 8987 8989 8990 9451 9452 9453 9454 9455 9456 9458 9461 9910 9912 9916 9455 9456 9457 9460 9461 9914 9916 9920 8991 9446 9447 9460 9461 9462 9465 9920 9458 9459 9461 9462 9465 9914 9916 9920 8987 8988 8989 8990 8991 9446 9447 9455 9456 9457 9458 9459 9460 9462 9465 9914 9916 9920 9459 9460 9461 9464 9465 9918 9920 9924 9448 9464 9465 9895 9898 9899 9903 9924 9462 9463 9465 9895 9903 9918 9920 9924 8991 9445 9446 9447 9448 9459 9460 9461 9462 9463 9464 9895 9898 9899 9903 9918 9920 9924 9229 9509 9514 9710 9712 9713 9717 9927 8994 8995 8996 8998 8999 9468 9469 9471 9472 9502 9503 9932 8992 8993 8994 8995 8996 8998 8999 9028 9235 9236 9238 9239 9467 9469 9471 9472 9502 9503 9932 9028 9238 9239 9467 9468 9471 9472 9502 9503 9932 8997 8998 8999 9001 9002 9471 9472 9476 9477 9932 9933 9941 8994 8995 8996 8997 8998 8999 9001 9002 9467 9468 9469 9470 9472 9476 9477 9502 9503 9932 9933 9941 9467 9468 9469 9470 9471 9476 9477 9502 9503 9932 9933 9941 9474 9478 9480 9518 9520 9521 9523 9935 9936 9945 9946 9949 9029 9473 9478 9480 9481 9484 9520 9521 9523 9524 9526 9949 9000 9001 9002 9007 9008 9476 9477 9486 9487 9941 9942 9951 8997 8998 8999 9000 9001 9002 9007 9008 9470 9471 9472 9475 9477 9486 9487 9932 9933 9941 9942 9951 9470 9471 9472 9475 9476 9486 9487 9932 9933 9941 9942 9951 9473 9474 9479 9480 9520 9521 9523 9947 9949 9954 9478 9480 9481 9483 9484 9947 9949 9954 9029 9473 9474 9478 9479 9481 9483 9484 9520 9521 9523 9524 9526 9947 9949 9954 9029 9474 9479 9480 9483 9484 9523 9524 9526 9954 9003 9030 9032 9483 9484 9489 9490 9954 9479 9480 9481 9482 9484 9489 9490 9954 9003 9029 9030 9031 9032 9474 9479 9480 9481 9482 9483 9489 9490 9523 9524 9526 9527 9529 9954 9006 9007 9008 9013 9014 9486 9487 9492 9493 9951 9952 9957 9000 9001 9002 9006 9007 9008 9013 9014 9475 9476 9477 9485 9487 9492 9493 9941 9942 9951 9952 9957 9475 9476 9477 9485 9486 9492 9493 9941 9942 9951 9952 9957 9020 9021 9022 9026 9027 9489 9490 9499 9500 9953 9954 9959 9003 9004 9005 9020 9021 9022 9026 9027 9030 9032 9033 9035 9482 9483 9484 9488 9490 9499 9500 9953 9954 9959 9482 9483 9484 9488 9489 9499 9500 9953 9954 9959 9012 9013 9014 9018 9019 9492 9493 9497 9498 9957 9958 9959 9006 9007 9008 9012 9013 9014 9018 9019 9485 9486 9487 9491 9493 9497 9498 9951 9952 9957 9958 9959 9485 9486 9487 9491 9492 9497 9498 9951 9952 9957 9958 9959 9023 9024 9025 9026 9027 9495 9496 9497 9498 9499 9500 9959 9009 9010 9011 9015 9016 9017 9018 9019 9023 9024 9025 9026 9027 9494 9496 9497 9498 9499 9500 9959 9015 9016 9017 9018 9019 9494 9495 9497 9498 9499 9500 9959 9012 9013 9014 9015 9016 9017 9018 9019 9491 9492 9493 9494 9495 9496 9498 9499 9500 9957 9958 9959 9491 9492 9493 9494 9495 9496 9497 9499 9500 9957 9958 9959 9488 9489 9490 9494 9495 9496 9497 9498 9500 9953 9954 9959 9020 9021 9022 9023 9024 9025 9026 9027 9488 9489 9490 9494 9495 9496 9497 9498 9499 9953 9954 9959 9241 9244 9502 9503 9505 9506 9724 9931 9932 9962 9028 9238 9239 9240 9241 9244 9467 9468 9469 9471 9472 9501 9503 9505 9506 9724 9931 9932 9962 9467 9468 9469 9471 9472 9501 9502 9505 9506 9931 9932 9962 9244 9505 9506 9507 9723 9724 9731 9961 9962 9966 9241 9244 9501 9502 9503 9504 9506 9507 9723 9724 9731 9931 9932 9961 9962 9966 9501 9502 9503 9504 9505 9507 9731 9931 9932 9961 9962 9966 9504 9505 9506 9508 9510 9511 9731 9961 9962 9966 9967 9972 9245 9507 9510 9511 9727 9728 9731 9966 9967 9972 9466 9513 9514 9713 9717 9927 9928 9969 9970 9975 9507 9508 9511 9512 9516 9517 9731 9966 9967 9972 9973 9977 9242 9245 9507 9508 9510 9512 9516 9517 9727 9728 9731 9966 9967 9972 9973 9977 9242 9245 9510 9511 9516 9517 9728 9972 9973 9977 9509 9514 9515 9516 9517 9927 9928 9969 9970 9975 9976 9977 9229 9243 9466 9509 9513 9515 9516 9517 9710 9712 9713 9717 9927 9928 9969 9970 9975 9976 9977 9229 9243 9513 9514 9516 9517 9712 9975 9976 9977 9229 9242 9243 9245 9510 9511 9512 9513 9514 9515 9517 9709 9712 9728 9972 9973 9975 9976 9977 9510 9511 9512 9513 9514 9515 9516 9972 9973 9975 9976 9977 9473 9519 9520 9560 9935 9936 9945 9946 9949 9981 9982 9984 9518 9520 9521 9522 9523 9560 9936 9981 9982 9984 9985 9987 9473 9474 9478 9480 9518 9519 9521 9522 9523 9560 9935 9936 9945 9946 9949 9981 9982 9984 9985 9987 9473 9474 9478 9480 9519 9520 9522 9523 9949 9984 9985 9987 9519 9520 9521 9523 9524 9525 9526 9984 9985 9987 9988 9990 9029 9473 9474 9478 9480 9481 9484 9519 9520 9521 9522 9524 9525 9526 9949 9984 9985 9987 9988 9990 9029 9474 9480 9481 9484 9522 9523 9525 9526 9987 9988 9990 9522 9523 9524 9526 9527 9528 9529 9987 9988 9990 9991 9993 9029 9030 9031 9032 9474 9480 9481 9484 9522 9523 9524 9525 9527 9528 9529 9987 9988 9990 9991 9993 9029 9030 9031 9032 9484 9525 9526 9528 9529 9990 9991 9993 9525 9526 9527 9529 9530 9531 9532 9990 9991 9993 9994 9996 9029 9030 9031 9032 9033 9034 9035 9484 9525 9526 9527 9528 9530 9531 9532 9990 9991 9993 9994 9996 9031 9032 9033 9034 9035 9528 9529 9531 9532 9993 9994 9996 9528 9529 9530 9532 9533 9534 9535 9993 9994 9996 9997 9999 9031 9032 9033 9034 9035 9036 9037 9038 9528 9529 9530 9531 9533 9534 9535 9993 9994 9996 9997 9999 9034 9035 9036 9037 9038 9531 9532 9534 9535 9996 9997 9999 9531 9532 9533 9535 9536 9537 9538 9996 9997 9999 10000 10002 9034 9035 9036 9037 9038 9039 9040 9041 9531 9532 9533 9534 9536 9537 9538 9996 9997 9999 10000 10002 9037 9038 9039 9040 9041 9534 9535 9537 9538 9999 10000 10002 9534 9535 9536 9538 9539 9540 9541 9999 10000 10002 10003 10005 9037 9038 9039 9040 9041 9042 9043 9044 9534 9535 9536 9537 9539 9540 9541 9999 10000 10002 10003 10005 9040 9041 9042 9043 9044 9537 9538 9540 9541 10002 10003 10005 9537 9538 9539 9541 9542 9543 9544 10002 10003 10005 10006 10008 9040 9041 9042 9043 9044 9045 9046 9047 9537 9538 9539 9540 9542 9543 9544 10002 10003 10005 10006 10008 9043 9044 9045 9046 9047 9540 9541 9543 9544 10005 10006 10008 9540 9541 9542 9544 9545 9546 9547 10005 10006 10008 10009 10011 9043 9044 9045 9046 9047 9048 9049 9050 9540 9541 9542 9543 9545 9546 9547 10005 10006 10008 10009 10011 9046 9047 9048 9049 9050 9543 9544 9546 9547 10008 10009 10011 9543 9544 9545 9547 9548 9549 9550 10008 10009 10011 10012 10014 9046 9047 9048 9049 9050 9051 9052 9053 9543 9544 9545 9546 9548 9549 9550 10008 10009 10011 10012 10014 9049 9050 9051 9052 9053 9546 9547 9549 9550 10011 10012 10014 9546 9547 9548 9550 9551 9552 9553 10011 10012 10014 10015 10017 9049 9050 9051 9052 9053 9054 9055 9056 9546 9547 9548 9549 9551 9552 9553 10011 10012 10014 10015 10017 9052 9053 9054 9055 9056 9549 9550 9552 9553 10014 10015 10017 9549 9550 9551 9553 9554 9555 9556 10014 10015 10017 10018 10020 9052 9053 9054 9055 9056 9057 9058 9059 9549 9550 9551 9552 9554 9555 9556 10014 10015 10017 10018 10020 9055 9056 9057 9058 9059 9552 9553 9555 9556 10017 10018 10020 9552 9553 9554 9556 9557 9558 9559 10017 10018 10020 10021 10022 9055 9056 9057 9058 9059 9060 9061 9062 9552 9553 9554 9555 9557 9558 9559 10017 10018 10020 10021 10022 9058 9059 9060 9061 9062 9555 9556 9558 9559 10020 10021 10022 9058 9059 9060 9061 9062 9555 9556 9557 9559 10020 10021 10022 9555 9556 9557 9558 10020 10021 10022 9518 9519 9520 9929 9934 9936 9939 9979 9981 9982 9984 10025 9109 9110 9111 9562 9567 9609 9610 10036 9561 9567 9568 9609 9610 10033 10036 10038 9099 9100 9101 9103 9104 9564 9565 9569 9570 9599 9600 10041 9063 9064 9065 9066 9067 9068 9070 9071 9099 9100 9101 9103 9104 9563 9565 9569 9570 9599 9600 10041 9066 9067 9068 9070 9071 9563 9564 9569 9570 9599 9600 10041 9069 9074 9075 9110 9111 9567 9568 9573 9574 10037 10038 10044 9069 9074 9075 9109 9110 9111 9561 9562 9566 9568 9573 9574 9609 9610 10033 10036 10037 10038 10044 9562 9566 9567 9573 9574 10033 10036 10037 10038 10044 9563 9564 9565 9570 9571 9575 9576 9599 9600 10041 10042 10047 9066 9067 9068 9070 9071 9072 9076 9077 9563 9564 9565 9569 9571 9575 9576 9599 9600 10041 10042 10047 9070 9071 9072 9076 9077 9569 9570 9575 9576 10041 10042 10047 9073 9074 9075 9080 9081 9573 9574 9579 9580 10043 10044 10050 9069 9073 9074 9075 9080 9081 9110 9111 9566 9567 9568 9572 9574 9579 9580 10037 10038 10043 10044 10050 9566 9567 9568 9572 9573 9579 9580 10037 10038 10043 10044 10050 9569 9570 9571 9576 9577 9581 9582 10041 10042 10047 10048 10053 9070 9071 9072 9076 9077 9078 9082 9083 9569 9570 9571 9575 9577 9581 9582 10041 10042 10047 10048 10053 9076 9077 9078 9082 9083 9575 9576 9581 9582 10047 10048 10053 9079 9080 9081 9086 9087 9579 9580 9585 9586 10049 10050 10056 9073 9074 9075 9079 9080 9081 9086 9087 9572 9573 9574 9578 9580 9585 9586 10043 10044 10049 10050 10056 9572 9573 9574 9578 9579 9585 9586 10043 10044 10049 10050 10056 9575 9576 9577 9582 9583 9587 9588 10047 10048 10053 10054 10059 9076 9077 9078 9082 9083 9084 9088 9089 9575 9576 9577 9581 9583 9587 9588 10047 10048 10053 10054 10059 9082 9083 9084 9088 9089 9581 9582 9587 9588 10053 10054 10059 9085 9086 9087 9092 9093 9585 9586 9591 9592 10055 10056 10062 9079 9080 9081 9085 9086 9087 9092 9093 9578 9579 9580 9584 9586 9591 9592 10049 10050 10055 10056 10062 9578 9579 9580 9584 9585 9591 9592 10049 10050 10055 10056 10062 9581 9582 9583 9588 9589 9593 9594 10053 10054 10059 10060 10065 9082 9083 9084 9088 9089 9090 9094 9095 9581 9582 9583 9587 9589 9593 9594 10053 10054 10059 10060 10065 9088 9089 9090 9094 9095 9587 9588 9593 9594 10059 10060 10065 9091 9092 9093 9097 9098 9591 9592 9596 9597 10061 10062 10067 9085 9086 9087 9091 9092 9093 9097 9098 9584 9585 9586 9590 9592 9596 9597 10055 10056 10061 10062 10067 9584 9585 9586 9590 9591 9596 9597 10055 10056 10061 10062 10067 9587 9588 9589 9594 9595 9596 9597 10059 10060 10065 10066 10067 9088 9089 9090 9094 9095 9096 9097 9098 9587 9588 9589 9593 9595 9596 9597 10059 10060 10065 10066 10067 9094 9095 9096 9097 9098 9593 9594 9596 9597 10065 10066 10067 9091 9092 9093 9094 9095 9096 9097 9098 9590 9591 9592 9593 9594 9595 9597 10061 10062 10065 10066 10067 9590 9591 9592 9593 9594 9595 9596 10061 10062 10065 10066 10067 9102 9103 9104 9106 9107 9599 9600 9602 9603 10040 10041 10070 9099 9100 9101 9102 9103 9104 9106 9107 9563 9564 9565 9569 9570 9598 9600 9602 9603 10040 10041 10070 9563 9564 9565 9569 9570 9598 9599 9602 9603 10040 10041 10070 9105 9106 9107 9167 9168 9602 9603 9605 9606 10069 10070 10073 9102 9103 9104 9105 9106 9107 9167 9168 9598 9599 9600 9601 9603 9605 9606 10040 10041 10069 10070 10073 9598 9599 9600 9601 9602 9605 9606 10040 10041 10069 10070 10073 9166 9167 9168 9170 9171 9605 9606 9657 9658 10072 10073 10076 9105 9106 9107 9166 9167 9168 9170 9171 9601 9602 9603 9604 9606 9657 9658 10069 10070 10072 10073 10076 9601 9602 9603 9604 9605 9657 9658 10069 10070 10072 10073 10076 9112 9113 9115 9608 9609 9611 9614 10081 9607 9609 9610 9611 9614 10031 10036 10081 9108 9109 9110 9111 9112 9113 9115 9561 9562 9567 9607 9608 9610 9611 9614 10031 10036 10081 9561 9562 9567 9608 9609 10031 10036 10081 9607 9608 9609 9612 9614 10080 10081 10083 9611 9613 9614 9616 9617 10080 10081 10083 9113 9115 9116 9612 9614 9616 9617 10083 9112 9113 9115 9116 9607 9608 9609 9611 9612 9613 9616 9617 10080 10081 10083 9117 9119 9120 9616 9617 9618 9620 10083 9113 9114 9115 9116 9117 9119 9120 9612 9613 9614 9615 9617 9618 9620 10083 9612 9613 9614 9615 9616 9618 9620 10083 9615 9616 9617 9620 9621 10082 10083 10087 9132 9133 9134 9620 9621 9626 9628 10087 9117 9118 9119 9120 9121 9122 9123 9132 9133 9134 9615 9616 9617 9618 9619 9621 9626 9628 10082 10083 10087 9618 9619 9620 9626 9628 10082 10083 10087 9129 9130 9131 9623 9625 9627 9628 10091 9622 9624 9625 9627 9628 9629 9637 10091 9139 9140 9142 9623 9625 9629 9637 10091 9124 9125 9126 9127 9129 9130 9131 9139 9140 9142 9622 9623 9624 9627 9628 9629 9637 10091 9619 9620 9621 9627 9628 10086 10087 10091 9622 9623 9625 9626 9628 10086 10087 10091 9128 9129 9130 9131 9132 9133 9134 9619 9620 9621 9622 9623 9625 9626 9627 10086 10087 10091 9623 9624 9625 9634 9637 10090 10091 10097 9163 9164 9165 9631 9632 9653 9654 10100 9630 9632 9633 9641 9642 9653 9654 10100 9135 9136 9137 9138 9154 9155 9156 9163 9164 9165 9630 9631 9633 9641 9642 9653 9654 10100 9154 9155 9156 9631 9632 9641 9642 10100 9629 9635 9637 10090 10091 10096 10097 10102 9634 9636 9637 9638 9640 10096 10097 10102 9143 9144 9146 9635 9637 9638 9640 10102 9139 9140 9141 9142 9143 9144 9146 9623 9624 9625 9629 9634 9635 9636 9638 9640 10090 10091 10096 10097 10102 9635 9636 9637 9639 9640 9642 9643 10102 9150 9151 9153 9638 9640 9642 9643 10102 9143 9144 9145 9146 9147 9148 9149 9150 9151 9153 9635 9636 9637 9638 9639 9642 9643 10102 9631 9632 9633 9642 9643 10100 10101 10102 9150 9151 9152 9153 9154 9155 9156 9631 9632 9633 9638 9639 9640 9641 9643 10100 10101 10102 9638 9639 9640 9641 9642 10100 10101 10102 9338 9645 9648 9759 9814 9815 9817 10107 9644 9646 9648 9759 9814 10106 10107 10111 9645 9647 9648 9649 9652 10106 10107 10111 9157 9339 9341 9646 9648 9649 9652 10111 9157 9338 9339 9340 9341 9644 9645 9646 9647 9649 9652 9759 9814 9815 9817 10106 10107 10111 9646 9647 9648 9650 9652 10110 10111 10113 9649 9651 9652 9654 9655 10110 10111 10113 9159 9160 9162 9650 9652 9654 9655 10113 9157 9158 9159 9160 9162 9339 9341 9646 9647 9648 9649 9650 9651 9654 9655 10110 10111 10113 9630 9631 9632 9654 9655 10093 10100 10113 9159 9160 9161 9162 9163 9164 9165 9630 9631 9632 9650 9651 9652 9653 9655 10093 10100 10113 9650 9651 9652 9653 9654 10093 10100 10113 9169 9170 9171 9173 9174 9657 9658 9660 9661 10075 10076 10116 9166 9167 9168 9169 9170 9171 9173 9174 9604 9605 9606 9656 9658 9660 9661 10072 10073 10075 10076 10116 9604 9605 9606 9656 9657 9660 9661 10072 10073 10075 10076 10116 9172 9173 9174 9176 9177 9660 9661 9663 9664 10115 10116 10119 9169 9170 9171 9172 9173 9174 9176 9177 9656 9657 9658 9659 9661 9663 9664 10075 10076 10115 10116 10119 9656 9657 9658 9659 9660 9663 9664 10075 10076 10115 10116 10119 9175 9176 9177 9181 9182 9663 9664 9668 9669 10118 10119 10124 9172 9173 9174 9175 9176 9177 9181 9182 9659 9660 9661 9662 9664 9668 9669 10115 10116 10118 10119 10124 9659 9660 9661 9662 9663 9668 9669 10115 10116 10118 10119 10124 9666 9667 9668 9669 10122 10123 10124 9178 9179 9180 9181 9182 9665 9667 9668 9669 10122 10123 10124 9178 9179 9180 9181 9182 9665 9666 9668 9669 10122 10123 10124 9175 9176 9177 9178 9179 9180 9181 9182 9662 9663 9664 9665 9666 9667 9669 10118 10119 10122 10123 10124 9662 9663 9664 9665 9666 9667 9668 10118 10119 10122 10123 10124 9206 9671 9672 9681 9689 9690 9691 10135 9670 9672 9673 9674 9676 9681 9691 10135 9183 9184 9185 9186 9203 9204 9205 9206 9670 9671 9673 9674 9676 9681 9689 9690 9691 10135 9184 9185 9186 9671 9672 9674 9676 10135 9671 9672 9673 9675 9676 10135 10136 10138 9674 9676 9677 9678 9679 10135 10136 10138 9184 9185 9186 9187 9188 9189 9190 9671 9672 9673 9674 9675 9677 9678 9679 10135 10136 10138 9188 9189 9190 9675 9676 9678 9679 10138 9675 9676 9677 9679 9680 9853 9856 10138 9188 9189 9190 9191 9192 9193 9194 9386 9387 9388 9675 9676 9677 9678 9680 9853 9856 10138 9386 9387 9388 9678 9679 9853 9856 10138 9670 9671 9672 9682 9691 10133 10135 10142 9681 9683 9691 10133 10135 10140 10142 10146 9682 9691 9692 10140 10142 10145 10146 10149 9207 9213 9214 9685 9686 9693 9697 10149 9684 9686 9687 9688 9689 9693 9697 10149 9195 9196 9197 9198 9199 9200 9201 9207 9213 9214 9684 9685 9687 9688 9689 9693 9697 10149 9199 9200 9201 9685 9686 9688 9689 10149 9685 9686 9687 9689 9690 9691 9692 10149 9199 9200 9201 9202 9203 9204 9205 9206 9670 9672 9685 9686 9687 9688 9690 9691 9692 10149 9206 9670 9672 9688 9689 9691 9692 10149 9206 9670 9671 9672 9681 9682 9683 9688 9689 9690 9692 10133 10135 10140 10142 10145 10146 10149 9683 9688 9689 9690 9691 10145 10146 10149 9684 9685 9686 9694 9697 10148 10149 10153 9693 9695 9697 10148 10149 10151 10153 10157 9694 9696 9697 9698 9701 10151 10153 10157 9212 9213 9214 9695 9697 9698 9701 10157 9207 9212 9213 9214 9684 9685 9686 9693 9694 9695 9696 9698 9701 10148 10149 10151 10153 10157 9695 9696 9697 9699 9701 10156 10157 10161 9698 9700 9701 9702 9705 10156 10157 10161 9215 9216 9218 9699 9701 9702 9705 10161 9208 9209 9210 9211 9212 9213 9214 9215 9216 9218 9695 9696 9697 9698 9699 9700 9702 9705 10156 10157 10161 9699 9700 9701 9703 9705 10160 10161 10163 9702 9704 9705 9707 9708 10160 10161 10163 9219 9220 9222 9703 9705 9707 9708 10163 9215 9216 9217 9218 9219 9220 9222 9699 9700 9701 9702 9703 9704 9707 9708 10160 10161 10163 9250 9252 9253 9707 9708 9736 9740 10163 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9250 9252 9253 9703 9704 9705 9706 9708 9736 9740 10163 9703 9704 9705 9706 9707 9736 9740 10163 9242 9243 9516 9711 9712 9726 9728 10180 9229 9466 9514 9711 9712 9716 9717 10180 9709 9710 9712 9716 9717 9726 9728 10180 9229 9242 9243 9466 9514 9515 9516 9709 9710 9711 9716 9717 9726 9728 10180 9466 9509 9514 9714 9717 9718 9927 10182 9713 9715 9717 9718 9926 9927 10127 10182 9714 9926 9927 10126 10127 10165 10169 10182 9710 9711 9712 9717 9718 10180 10181 10182 9229 9466 9509 9514 9710 9711 9712 9713 9714 9716 9718 9927 10180 10181 10182 9713 9714 9716 9717 9927 10180 10181 10182 9247 9248 9249 9720 9722 9734 9735 10187 9719 9721 9722 9724 9725 9734 9735 10187 9237 9239 9240 9720 9722 9724 9725 10187 9230 9231 9232 9233 9234 9235 9236 9237 9239 9240 9247 9248 9249 9719 9720 9721 9724 9725 9734 9735 10187 9244 9504 9505 9724 9725 9730 9731 10187 9237 9238 9239 9240 9241 9244 9501 9502 9504 9505 9720 9721 9722 9723 9725 9730 9731 10187 9720 9721 9722 9723 9724 9730 9731 10187 9709 9711 9712 9728 9729 10173 10180 10187 9245 9508 9511 9728 9729 9730 9731 10187 9242 9243 9245 9508 9511 9512 9516 9709 9711 9712 9726 9727 9729 9730 9731 10173 10180 10187 9726 9727 9728 9730 9731 10173 10180 10187 9723 9724 9725 9727 9728 9729 9731 10187 9244 9245 9504 9505 9506 9507 9508 9510 9511 9723 9724 9725 9727 9728 9729 9730 9961 9962 9966 9967 9972 10187 9266 9267 9268 9733 9735 9749 9750 10191 9732 9734 9735 9749 9750 10186 10187 10191 9719 9720 9722 9733 9735 10186 10187 10191 9246 9247 9248 9249 9266 9267 9268 9719 9720 9722 9732 9733 9734 9749 9750 10186 10187 10191 9706 9707 9708 9737 9740 10162 10163 10196 9736 9738 9740 10162 10163 10195 10196 10198 9737 9739 9740 9742 9743 10195 10196 10198 9254 9256 9257 9738 9740 9742 9743 10198 9250 9251 9252 9253 9254 9256 9257 9706 9707 9708 9736 9737 9738 9739 9742 9743 10162 10163 10195 10196 10198 9273 9278 9279 9742 9743 9751 9756 10198 9254 9255 9256 9257 9273 9278 9279 9738 9739 9740 9741 9743 9751 9756 10198 9738 9739 9740 9741 9742 9751 9756 10198 9270 9271 9272 9745 9747 9752 9754 10203 9744 9746 9747 9748 9750 9752 9754 10203 9262 9263 9265 9745 9747 9748 9750 10203 9258 9259 9260 9261 9262 9263 9265 9270 9271 9272 9744 9745 9746 9748 9750 9752 9754 10203 9745 9746 9747 9749 9750 10190 10191 10203 9732 9733 9735 9748 9750 10190 10191 10203 9262 9263 9264 9265 9266 9267 9268 9732 9733 9735 9745 9746 9747 9748 9749 10190 10191 10203 9741 9742 9743 9756 9757 10197 10198 10205 9744 9745 9747 9753 9754 10203 10204 10205 9752 9754 9755 9756 9757 10203 10204 10205 9269 9270 9271 9272 9274 9275 9276 9744 9745 9747 9752 9753 9755 9756 9757 10203 10204 10205 9274 9275 9276 9753 9754 9756 9757 10205 9273 9274 9275 9276 9277 9278 9279 9741 9742 9743 9751 9753 9754 9755 9757 10197 10198 10205 9751 9753 9754 9755 9756 10197 10198 10205 9759 9760 9812 9814 10104 10107 10131 10211 9644 9645 9648 9758 9812 9814 10107 10211 9758 10104 10107 10129 10131 10210 10211 10217 9351 9352 9353 9764 9765 9827 9829 10221 9282 9283 9284 9763 9764 9768 9769 10225 9762 9764 9765 9768 9769 10219 10221 10225 9280 9282 9283 9284 9351 9352 9353 9761 9762 9763 9765 9768 9769 9827 9829 10219 10221 10225 9761 9763 9764 9827 9829 10219 10221 10225 9297 9298 9299 9767 9768 9779 9780 10228 9766 9768 9769 9779 9780 10224 10225 10228 9281 9282 9283 9284 9297 9298 9299 9762 9763 9764 9766 9767 9769 9779 9780 10224 10225 10228 9762 9763 9764 9767 9768 10224 10225 10228 9301 9302 9303 9771 9772 9781 9784 10233 9770 9772 9773 9774 9776 9781 9784 10233 9285 9286 9287 9288 9289 9290 9291 9301 9302 9303 9770 9771 9773 9774 9776 9781 9784 10233 9289 9290 9291 9771 9772 9774 9776 10233 9771 9772 9773 9775 9776 10233 10234 10235 9774 9776 9777 9778 9779 10233 10234 10235 9289 9290 9291 9292 9293 9294 9295 9771 9772 9773 9774 9775 9777 9778 9779 10233 10234 10235 9293 9294 9295 9775 9776 9778 9779 10235 9775 9776 9777 9779 9780 10227 10228 10235 9293 9294 9295 9296 9297 9298 9299 9766 9767 9768 9775 9776 9777 9778 9780 10227 10228 10235 9766 9767 9768 9778 9779 10227 10228 10235 9770 9771 9772 9782 9784 10231 10233 10241 9781 9784 9785 10231 10233 10240 10241 10245 9304 9305 9307 9784 9785 9786 9788 10245 9300 9301 9302 9303 9304 9305 9307 9770 9771 9772 9781 9782 9783 9785 9786 9788 10231 10233 10240 10241 10245 9782 9783 9784 9786 9788 10240 10241 10245 9783 9784 9785 9788 9789 10242 10245 10249 9308 9313 9314 9788 9789 9790 9793 10249 9304 9305 9306 9307 9308 9313 9314 9783 9784 9785 9786 9787 9789 9790 9793 10242 10245 10249 9786 9787 9788 9790 9793 10242 10245 10249 9787 9788 9789 9791 9793 10248 10249 10253 9790 9792 9793 9794 9796 10248 10249 10253 9315 9317 9318 9791 9793 9794 9796 10253 9308 9309 9310 9311 9312 9313 9314 9315 9317 9318 9787 9788 9789 9790 9791 9792 9794 9796 10248 10249 10253 9791 9792 9793 9796 9797 10250 10253 10258 9331 9336 9337 9796 9797 9802 9810 10258 9315 9316 9317 9318 9331 9336 9337 9791 9792 9793 9794 9795 9797 9802 9810 10250 10253 10258 9794 9795 9796 9802 9810 10250 10253 10258 9348 9349 9350 9799 9800 9824 9825 10261 9798 9800 9801 9803 9805 9824 9825 10261 9319 9320 9321 9322 9323 9324 9326 9348 9349 9350 9798 9799 9801 9803 9805 9824 9825 10261 9323 9324 9326 9799 9800 9803 9805 10261 9795 9796 9797 9810 9811 10257 10258 10263 9799 9800 9801 9804 9805 10261 10262 10263 9803 9805 9806 9807 9808 10261 10262 10263 9323 9324 9325 9326 9799 9800 9801 9803 9804 9806 9807 9808 10261 10262 10263 9324 9325 9326 9804 9805 9807 9808 10263 9804 9805 9806 9808 9809 9810 9811 10263 9324 9325 9326 9327 9328 9329 9330 9332 9333 9334 9804 9805 9806 9807 9809 9810 9811 10263 9332 9333 9334 9807 9808 9810 9811 10263 9331 9332 9333 9334 9335 9336 9337 9795 9796 9797 9802 9807 9808 9809 9811 10257 10258 10263 9802 9807 9808 9809 9810 10257 10258 10263 9758 9759 9813 9814 10107 10209 10211 10272 9812 9814 9815 9816 9817 10209 10211 10272 9338 9644 9645 9648 9758 9759 9812 9813 9815 9816 9817 10107 10209 10211 10272 9338 9644 9648 9813 9814 9816 9817 10272 9813 9814 9815 9817 9818 9819 9821 10272 9338 9339 9340 9341 9342 9343 9344 9346 9644 9648 9813 9814 9815 9816 9818 9819 9821 10272 9343 9344 9346 9816 9817 9819 9821 10272 9816 9817 9818 9820 9821 10272 10273 10274 9819 9821 9822 9823 9824 10272 10273 10274 9343 9344 9345 9346 9816 9817 9818 9819 9820 9822 9823 9824 10272 10273 10274 9344 9345 9346 9820 9821 9823 9824 10274 9820 9821 9822 9824 9825 9826 10261 10274 9344 9345 9346 9347 9348 9349 9350 9798 9799 9800 9820 9821 9822 9823 9825 9826 10261 10274 9798 9799 9800 9823 9824 9826 10261 10274 9823 9824 9825 10259 10261 10266 10268 10274 9761 9764 9765 9828 9829 10218 10221 10278 9827 9829 9830 9831 9833 10218 10221 10278 9351 9352 9353 9354 9355 9356 9357 9761 9764 9765 9827 9828 9830 9831 9833 10218 10221 10278 9355 9356 9357 9828 9829 9831 9833 10278 9828 9829 9830 9832 9833 10278 10279 10282 9831 9833 9834 9835 9837 10278 10279 10282 9355 9356 9357 9358 9359 9360 9361 9828 9829 9830 9831 9832 9834 9835 9837 10278 10279 10282 9359 9360 9361 9832 9833 9835 9837 10282 9832 9833 9834 9836 9837 10282 10283 10286 9835 9837 9838 9839 9841 10282 10283 10286 9359 9360 9361 9362 9363 9364 9365 9832 9833 9834 9835 9836 9838 9839 9841 10282 10283 10286 9363 9364 9365 9836 9837 9839 9841 10286 9836 9837 9838 9840 9841 10286 10287 10290 9839 9841 9842 9843 9845 10286 10287 10290 9363 9364 9365 9366 9367 9368 9369 9836 9837 9838 9839 9840 9842 9843 9845 10286 10287 10290 9367 9368 9369 9840 9841 9843 9845 10290 9840 9841 9842 9844 9845 10290 10291 10293 9843 9845 9846 9847 9848 10290 10291 10293 9367 9368 9369 9370 9371 9372 9373 9840 9841 9842 9843 9844 9846 9847 9848 10290 10291 10293 9371 9372 9373 9844 9845 9847 9848 10293 9844 9845 9846 9848 9849 9850 9851 10293 9371 9372 9373 9374 9375 9376 9377 9844 9845 9846 9847 9849 9850 9851 10293 9375 9376 9377 9847 9848 9850 9851 10293 9847 9848 9849 9851 9852 9904 9908 10293 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9449 9450 9453 9847 9848 9849 9850 9852 9904 9908 10293 9449 9450 9453 9850 9851 9904 9908 10293 9678 9679 9680 9854 9856 10138 10139 10298 9853 9855 9856 10138 10139 10295 10298 10301 9854 9856 9857 9859 9860 10295 10298 10301 9385 9386 9387 9388 9389 9390 9391 9678 9679 9680 9853 9854 9855 9857 9859 9860 10138 10139 10295 10298 10301 9389 9390 9391 9855 9856 9859 9860 10301 9396 9399 9400 9859 9860 9861 9865 10301 9855 9856 9857 9858 9860 9861 9865 10301 9389 9390 9391 9392 9393 9394 9395 9396 9399 9400 9855 9856 9857 9858 9859 9861 9865 10301 9858 9859 9860 9864 9865 10299 10301 10305 9398 9399 9400 9863 9865 9867 9868 10307 9862 9864 9865 9867 9868 10303 10305 10307 9861 9863 9865 10299 10301 10303 10305 10307 9396 9398 9399 9400 9858 9859 9860 9861 9862 9863 9864 9867 9868 10299 10301 10303 10305 10307 9404 9406 9407 9867 9868 9869 9870 10307 9862 9863 9865 9866 9868 9869 9870 10307 9397 9398 9399 9400 9401 9402 9403 9404 9406 9407 9862 9863 9865 9866 9867 9869 9870 10307 9866 9867 9868 9870 9871 9872 9876 10307 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9866 9867 9868 9869 9871 9872 9876 10307 9411 9412 9413 9869 9870 9872 9876 10307 9869 9870 9871 9873 9876 10307 10308 10312 9872 9875 9876 10307 10308 10310 10312 10316 9441 9442 9443 9875 9876 9892 9893 10316 9873 9874 9876 9892 9893 10310 10312 10316 9411 9412 9413 9414 9441 9442 9443 9869 9870 9871 9872 9873 9874 9875 9892 9893 10307 10308 10310 10312 10316 9424 9425 9426 9878 9880 9886 9887 10320 9877 9879 9880 9881 9883 9886 9887 10320 9419 9420 9422 9878 9880 9881 9883 10320 9415 9416 9417 9418 9419 9420 9422 9424 9425 9426 9877 9878 9879 9881 9883 9886 9887 10320 9878 9879 9880 9882 9883 9896 9899 10320 9444 9445 9447 9881 9883 9896 9899 10320 9419 9420 9421 9422 9444 9445 9447 9878 9879 9880 9881 9882 9896 9899 10320 9431 9432 9433 9885 9887 9890 9891 10324 9884 9886 9887 9890 9891 10317 10320 10324 9877 9878 9880 9885 9887 10317 10320 10324 9423 9424 9425 9426 9431 9432 9433 9877 9878 9880 9884 9885 9886 9890 9891 10317 10320 10324 9438 9439 9440 9889 9891 9893 9894 10326 9888 9890 9891 9893 9894 10321 10324 10326 9884 9885 9887 9889 9891 10321 10324 10326 9427 9428 9429 9430 9431 9432 9433 9438 9439 9440 9884 9885 9887 9888 9889 9890 9893 9894 10321 10324 10326 9874 9875 9876 9893 9894 10314 10316 10326 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9874 9875 9876 9888 9889 9891 9892 9894 10314 10316 10326 9888 9889 9891 9892 9893 10314 10316 10326 9463 9464 9465 9902 9903 9922 9924 10331 9881 9882 9883 9897 9899 10319 10320 10335 9896 9898 9899 9900 9903 10319 10320 10335 9448 9463 9465 9897 9899 9900 9903 10335 9444 9445 9446 9447 9448 9463 9465 9881 9882 9883 9896 9897 9898 9900 9903 10319 10320 10335 9897 9898 9899 9901 9903 10334 10335 10338 9900 9902 9903 10328 10331 10334 10335 10338 9895 9901 9903 9922 9924 10328 10331 10338 9448 9463 9464 9465 9895 9897 9898 9899 9900 9901 9902 9922 9924 10328 10331 10334 10335 10338 9850 9851 9852 9905 9908 10293 10294 10343 9904 9907 9908 10293 10294 10341 10343 10347 9450 9452 9453 9907 9908 9909 9912 10347 9905 9906 9908 9909 9912 10341 10343 10347 9449 9450 9452 9453 9850 9851 9852 9904 9905 9906 9907 9909 9912 10293 10294 10341 10343 10347 9906 9907 9908 9911 9912 10345 10347 10351 9454 9456 9457 9911 9912 9913 9916 10351 9909 9910 9912 9913 9916 10345 10347 10351 9450 9451 9452 9453 9454 9456 9457 9906 9907 9908 9909 9910 9911 9913 9916 10345 10347 10351 9910 9911 9912 9915 9916 10349 10351 10355 9458 9460 9461 9915 9916 9917 9920 10355 9913 9914 9916 9917 9920 10349 10351 10355 9454 9455 9456 9457 9458 9460 9461 9910 9911 9912 9913 9914 9915 9917 9920 10349 10351 10355 9914 9915 9916 9919 9920 10353 10355 10359 9462 9464 9465 9919 9920 9921 9924 10359 9917 9918 9920 9921 9924 10353 10355 10359 9458 9459 9460 9461 9462 9464 9465 9914 9915 9916 9917 9918 9919 9921 9924 10353 10355 10359 9918 9919 9920 9923 9924 10357 10359 10363 9895 9902 9903 9923 9924 9925 10331 10363 9921 9922 9924 9925 10331 10357 10359 10363 9462 9463 9464 9465 9895 9902 9903 9918 9919 9920 9921 9922 9923 9925 10331 10357 10359 10363 9922 9923 9924 10330 10331 10361 10363 10365 9714 9715 9927 9928 9964 9969 10127 10128 10182 10368 9466 9509 9513 9514 9713 9714 9715 9717 9718 9926 9928 9964 9969 9970 9975 10127 10128 10182 10368 9509 9513 9514 9926 9927 9964 9969 9970 9975 10127 10128 10368 9560 9930 9934 9936 9937 9939 9979 9981 10024 10025 10028 10380 9929 9937 9939 10024 10025 10028 10029 10373 10374 10379 10380 10383 9501 9502 9503 9505 9506 9932 9933 9940 9941 9962 9963 10386 9467 9468 9469 9470 9471 9472 9476 9477 9501 9502 9503 9505 9506 9931 9933 9940 9941 9962 9963 10386 9470 9471 9472 9476 9477 9931 9932 9940 9941 9962 9963 10386 9560 9929 9935 9936 9938 9939 9943 9945 9979 9981 10025 10391 9473 9518 9520 9934 9936 9938 9939 9943 9945 9946 9949 10391 9473 9518 9519 9520 9560 9929 9934 9935 9938 9939 9943 9945 9946 9949 9979 9981 9982 9984 10025 10391 9929 9930 9938 9939 10024 10025 10028 10380 10381 10388 10391 10393 9934 9935 9936 9937 9939 9943 9945 10380 10381 10388 10391 10393 9560 9929 9930 9934 9935 9936 9937 9938 9943 9945 9979 9981 10024 10025 10028 10380 10381 10388 10391 10393 9931 9932 9933 9941 9942 9950 9951 9962 9963 10386 10387 10396 9470 9471 9472 9475 9476 9477 9486 9487 9931 9932 9933 9940 9942 9950 9951 9962 9963 10386 10387 10396 9475 9476 9477 9486 9487 9940 9941 9950 9951 10386 10387 10396 9934 9935 9936 9938 9939 9944 9945 10389 10391 10399 9943 9945 9946 9948 9949 10389 10391 10399 9473 9518 9520 9934 9935 9936 9938 9939 9943 9944 9946 9948 9949 10389 10391 10399 9473 9518 9520 9935 9936 9944 9945 9948 9949 10399 9478 9479 9480 9948 9949 9954 9955 10399 9944 9945 9946 9947 9949 9954 9955 10399 9473 9474 9478 9479 9480 9518 9520 9521 9523 9935 9936 9944 9945 9946 9947 9948 9954 9955 10399 9940 9941 9942 9951 9952 9956 9957 10386 10387 10396 10397 10402 9475 9476 9477 9485 9486 9487 9492 9493 9940 9941 9942 9950 9952 9956 9957 10386 10387 10396 10397 10402 9485 9486 9487 9492 9493 9950 9951 9956 9957 10396 10397 10402 9488 9489 9490 9499 9500 9954 9955 9959 9960 10398 10399 10404 9478 9479 9480 9481 9482 9483 9484 9488 9489 9490 9499 9500 9947 9948 9949 9953 9955 9959 9960 10398 10399 10404 9947 9948 9949 9953 9954 9959 9960 10398 10399 10404 9950 9951 9952 9957 9958 9959 9960 10396 10397 10402 10403 10404 9485 9486 9487 9491 9492 9493 9497 9498 9950 9951 9952 9956 9958 9959 9960 10396 10397 10402 10403 10404 9491 9492 9493 9497 9498 9956 9957 9959 9960 10402 10403 10404 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9953 9954 9955 9956 9957 9958 9960 10398 10399 10402 10403 10404 9953 9954 9955 9956 9957 9958 9959 10398 10399 10402 10403 10404 9504 9505 9506 9507 9731 9962 9963 9965 9966 10385 10386 10410 9501 9502 9503 9504 9505 9506 9507 9731 9931 9932 9933 9940 9941 9961 9963 9965 9966 10385 10386 10410 9931 9932 9933 9940 9941 9961 9962 9965 9966 10385 10386 10410 9926 9927 9928 9968 9969 10127 10128 10368 10369 10407 10408 10413 9961 9962 9963 9966 9967 9971 9972 10385 10386 10410 10411 10416 9504 9505 9506 9507 9508 9510 9511 9731 9961 9962 9963 9965 9967 9971 9972 10385 10386 10410 10411 10416 9507 9508 9510 9511 9731 9965 9966 9971 9972 10410 10411 10416 9964 9969 9970 9974 9975 10368 10369 10407 10408 10413 10414 10419 9509 9513 9514 9926 9927 9928 9964 9968 9970 9974 9975 10127 10128 10368 10369 10407 10408 10413 10414 10419 9509 9513 9514 9927 9928 9968 9969 9974 9975 10413 10414 10419 9965 9966 9967 9972 9973 9977 9978 10410 10411 10416 10417 10421 9507 9508 9510 9511 9512 9516 9517 9731 9965 9966 9967 9971 9973 9977 9978 10410 10411 10416 10417 10421 9510 9511 9512 9516 9517 9971 9972 9977 9978 10416 10417 10421 9968 9969 9970 9975 9976 9977 9978 10413 10414 10419 10420 10421 9509 9513 9514 9515 9516 9517 9927 9928 9968 9969 9970 9974 9976 9977 9978 10413 10414 10419 10420 10421 9513 9514 9515 9516 9517 9974 9975 9977 9978 10419 10420 10421 9510 9511 9512 9513 9514 9515 9516 9517 9971 9972 9973 9974 9975 9976 9978 10416 10417 10419 10420 10421 9971 9972 9973 9974 9975 9976 9977 10416 10417 10419 10420 10421 9560 9929 9934 9936 9939 9980 9981 10025 10026 10425 10426 10428 9979 9981 9982 9983 9984 10025 10026 10425 10426 10428 10429 10431 9518 9519 9520 9560 9929 9934 9936 9939 9979 9980 9982 9983 9984 10025 10026 10425 10426 10428 10429 10431 9518 9519 9520 9560 9936 9980 9981 9983 9984 10428 10429 10431 9980 9981 9982 9984 9985 9986 9987 10428 10429 10431 10432 10434 9518 9519 9520 9521 9522 9523 9560 9936 9980 9981 9982 9983 9985 9986 9987 10428 10429 10431 10432 10434 9519 9520 9521 9522 9523 9983 9984 9986 9987 10431 10432 10434 9983 9984 9985 9987 9988 9989 9990 10431 10432 10434 10435 10437 9519 9520 9521 9522 9523 9524 9525 9526 9983 9984 9985 9986 9988 9989 9990 10431 10432 10434 10435 10437 9522 9523 9524 9525 9526 9986 9987 9989 9990 10434 10435 10437 9986 9987 9988 9990 9991 9992 9993 10434 10435 10437 10438 10440 9522 9523 9524 9525 9526 9527 9528 9529 9986 9987 9988 9989 9991 9992 9993 10434 10435 10437 10438 10440 9525 9526 9527 9528 9529 9989 9990 9992 9993 10437 10438 10440 9989 9990 9991 9993 9994 9995 9996 10437 10438 10440 10441 10443 9525 9526 9527 9528 9529 9530 9531 9532 9989 9990 9991 9992 9994 9995 9996 10437 10438 10440 10441 10443 9528 9529 9530 9531 9532 9992 9993 9995 9996 10440 10441 10443 9992 9993 9994 9996 9997 9998 9999 10440 10441 10443 10444 10446 9528 9529 9530 9531 9532 9533 9534 9535 9992 9993 9994 9995 9997 9998 9999 10440 10441 10443 10444 10446 9531 9532 9533 9534 9535 9995 9996 9998 9999 10443 10444 10446 9995 9996 9997 9999 10000 10001 10002 10443 10444 10446 10447 10449 9531 9532 9533 9534 9535 9536 9537 9538 9995 9996 9997 9998 10000 10001 10002 10443 10444 10446 10447 10449 9534 9535 9536 9537 9538 9998 9999 10001 10002 10446 10447 10449 9998 9999 10000 10002 10003 10004 10005 10446 10447 10449 10450 10452 9534 9535 9536 9537 9538 9539 9540 9541 9998 9999 10000 10001 10003 10004 10005 10446 10447 10449 10450 10452 9537 9538 9539 9540 9541 10001 10002 10004 10005 10449 10450 10452 10001 10002 10003 10005 10006 10007 10008 10449 10450 10452 10453 10455 9537 9538 9539 9540 9541 9542 9543 9544 10001 10002 10003 10004 10006 10007 10008 10449 10450 10452 10453 10455 9540 9541 9542 9543 9544 10004 10005 10007 10008 10452 10453 10455 10004 10005 10006 10008 10009 10010 10011 10452 10453 10455 10456 10458 9540 9541 9542 9543 9544 9545 9546 9547 10004 10005 10006 10007 10009 10010 10011 10452 10453 10455 10456 10458 9543 9544 9545 9546 9547 10007 10008 10010 10011 10455 10456 10458 10007 10008 10009 10011 10012 10013 10014 10455 10456 10458 10459 10461 9543 9544 9545 9546 9547 9548 9549 9550 10007 10008 10009 10010 10012 10013 10014 10455 10456 10458 10459 10461 9546 9547 9548 9549 9550 10010 10011 10013 10014 10458 10459 10461 10010 10011 10012 10014 10015 10016 10017 10458 10459 10461 10462 10464 9546 9547 9548 9549 9550 9551 9552 9553 10010 10011 10012 10013 10015 10016 10017 10458 10459 10461 10462 10464 9549 9550 9551 9552 9553 10013 10014 10016 10017 10461 10462 10464 10013 10014 10015 10017 10018 10019 10020 10461 10462 10464 10465 10467 9549 9550 9551 9552 9553 9554 9555 9556 10013 10014 10015 10016 10018 10019 10020 10461 10462 10464 10465 10467 9552 9553 9554 9555 9556 10016 10017 10019 10020 10464 10465 10467 10016 10017 10018 10020 10021 10022 10023 10464 10465 10467 10468 10469 9552 9553 9554 9555 9556 9557 9558 9559 10016 10017 10018 10019 10021 10022 10023 10464 10465 10467 10468 10469 9555 9556 9557 9558 9559 10019 10020 10022 10023 10467 10468 10469 9555 9556 9557 9558 9559 10019 10020 10021 10023 10467 10468 10469 10019 10020 10021 10022 10467 10468 10469 9929 9930 9937 9939 10025 10026 10027 10028 10380 10423 10425 10472 9560 9929 9930 9934 9936 9937 9939 9979 9980 9981 10024 10026 10027 10028 10380 10423 10425 10426 10428 10472 9979 9980 9981 10024 10025 10027 10028 10423 10425 10426 10428 10472 10024 10025 10026 10028 10029 10030 10373 10423 10425 10472 10473 10475 9929 9930 9937 9939 10024 10025 10026 10027 10029 10030 10373 10374 10379 10380 10383 10423 10425 10472 10473 10475 9930 10027 10028 10030 10373 10374 10379 10380 10383 10472 10473 10475 10027 10028 10029 10370 10372 10373 10376 10472 10473 10475 10476 10478 9608 9609 9610 10032 10036 10078 10081 10486 10031 10035 10036 10078 10081 10484 10486 10491 9562 9567 9568 10034 10036 10038 10039 10493 10033 10035 10036 10038 10039 10488 10491 10493 10032 10034 10036 10484 10486 10488 10491 10493 9561 9562 9567 9568 9608 9609 9610 10031 10032 10033 10034 10035 10038 10039 10078 10081 10484 10486 10488 10491 10493 9566 9567 9568 9573 9574 10038 10039 10044 10045 10492 10493 10496 9562 9566 9567 9568 9573 9574 10033 10034 10036 10037 10039 10044 10045 10492 10493 10496 10033 10034 10036 10037 10038 10044 10045 10492 10493 10496 9598 9599 9600 9602 9603 10041 10042 10046 10047 10070 10071 10499 9563 9564 9565 9569 9570 9571 9575 9576 9598 9599 9600 9602 9603 10040 10042 10046 10047 10070 10071 10499 9569 9570 9571 9575 9576 10040 10041 10046 10047 10070 10071 10499 9572 9573 9574 9579 9580 10044 10045 10050 10051 10495 10496 10502 9566 9567 9568 9572 9573 9574 9579 9580 10037 10038 10039 10043 10045 10050 10051 10492 10493 10495 10496 10502 10037 10038 10039 10043 10044 10050 10051 10492 10493 10495 10496 10502 10040 10041 10042 10047 10048 10052 10053 10070 10071 10499 10500 10505 9569 9570 9571 9575 9576 9577 9581 9582 10040 10041 10042 10046 10048 10052 10053 10070 10071 10499 10500 10505 9575 9576 9577 9581 9582 10046 10047 10052 10053 10499 10500 10505 9578 9579 9580 9585 9586 10050 10051 10056 10057 10501 10502 10508 9572 9573 9574 9578 9579 9580 9585 9586 10043 10044 10045 10049 10051 10056 10057 10495 10496 10501 10502 10508 10043 10044 10045 10049 10050 10056 10057 10495 10496 10501 10502 10508 10046 10047 10048 10053 10054 10058 10059 10499 10500 10505 10506 10511 9575 9576 9577 9581 9582 9583 9587 9588 10046 10047 10048 10052 10054 10058 10059 10499 10500 10505 10506 10511 9581 9582 9583 9587 9588 10052 10053 10058 10059 10505 10506 10511 9584 9585 9586 9591 9592 10056 10057 10062 10063 10507 10508 10514 9578 9579 9580 9584 9585 9586 9591 9592 10049 10050 10051 10055 10057 10062 10063 10501 10502 10507 10508 10514 10049 10050 10051 10055 10056 10062 10063 10501 10502 10507 10508 10514 10052 10053 10054 10059 10060 10064 10065 10505 10506 10511 10512 10517 9581 9582 9583 9587 9588 9589 9593 9594 10052 10053 10054 10058 10060 10064 10065 10505 10506 10511 10512 10517 9587 9588 9589 9593 9594 10058 10059 10064 10065 10511 10512 10517 9590 9591 9592 9596 9597 10062 10063 10067 10068 10513 10514 10519 9584 9585 9586 9590 9591 9592 9596 9597 10055 10056 10057 10061 10063 10067 10068 10507 10508 10513 10514 10519 10055 10056 10057 10061 10062 10067 10068 10507 10508 10513 10514 10519 10058 10059 10060 10065 10066 10067 10068 10511 10512 10517 10518 10519 9587 9588 9589 9593 9594 9595 9596 9597 10058 10059 10060 10064 10066 10067 10068 10511 10512 10517 10518 10519 9593 9594 9595 9596 9597 10064 10065 10067 10068 10517 10518 10519 9590 9591 9592 9593 9594 9595 9596 9597 10061 10062 10063 10064 10065 10066 10068 10513 10514 10517 10518 10519 10061 10062 10063 10064 10065 10066 10067 10513 10514 10517 10518 10519 9601 9602 9603 9605 9606 10070 10071 10073 10074 10498 10499 10522 9598 9599 9600 9601 9602 9603 9605 9606 10040 10041 10042 10046 10047 10069 10071 10073 10074 10498 10499 10522 10040 10041 10042 10046 10047 10069 10070 10073 10074 10498 10499 10522 9604 9605 9606 9657 9658 10073 10074 10076 10077 10521 10522 10525 9601 9602 9603 9604 9605 9606 9657 9658 10069 10070 10071 10072 10074 10076 10077 10498 10499 10521 10522 10525 10069 10070 10071 10072 10073 10076 10077 10498 10499 10521 10522 10525 9656 9657 9658 9660 9661 10076 10077 10116 10117 10524 10525 10528 9604 9605 9606 9656 9657 9658 9660 9661 10072 10073 10074 10075 10077 10116 10117 10521 10522 10524 10525 10528 10072 10073 10074 10075 10076 10116 10117 10521 10522 10524 10525 10528 10031 10032 10036 10079 10081 10485 10486 10536 10078 10080 10081 10083 10084 10485 10486 10536 9611 9612 9614 10079 10081 10083 10084 10536 9607 9608 9609 9610 9611 9612 9614 10031 10032 10036 10078 10079 10080 10083 10084 10485 10486 10536 9618 9620 9621 10083 10084 10085 10087 10536 9611 9612 9613 9614 9615 9616 9617 9618 9620 9621 10079 10080 10081 10082 10084 10085 10087 10536 10079 10080 10081 10082 10083 10085 10087 10536 10082 10083 10084 10087 10088 10535 10536 10538 9626 9627 9628 10087 10088 10089 10091 10538 9618 9619 9620 9621 9626 9627 9628 10082 10083 10084 10085 10086 10088 10089 10091 10535 10536 10538 10085 10086 10087 10089 10091 10535 10536 10538 10086 10087 10088 10090 10091 10092 10097 10538 9629 9634 9637 10089 10091 10092 10097 10538 9622 9623 9624 9625 9626 9627 9628 9629 9634 9637 10086 10087 10088 10089 10090 10092 10097 10538 10089 10090 10091 10094 10097 10537 10538 10544 9653 9654 9655 10099 10100 10112 10113 10546 10092 10095 10097 10537 10538 10543 10544 10546 10094 10096 10097 10098 10102 10543 10544 10546 9634 9635 9637 10095 10097 10098 10102 10546 9629 9634 9635 9637 10089 10090 10091 10092 10094 10095 10096 10098 10102 10537 10538 10543 10544 10546 10095 10096 10097 10099 10100 10101 10102 10546 10093 10098 10100 10101 10102 10112 10113 10546 9630 9631 9632 9633 9641 9642 9643 9653 9654 9655 10093 10098 10099 10101 10102 10112 10113 10546 9641 9642 9643 10098 10099 10100 10102 10546 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 10095 10096 10097 10098 10099 10100 10101 10546 10104 10105 10107 10130 10131 10550 10551 10554 9758 9760 10103 10105 10107 10131 10211 10554 10103 10104 10106 10107 10108 10111 10131 10554 9645 9646 9648 10105 10107 10108 10111 10554 9644 9645 9646 9648 9758 9759 9760 9812 9814 10103 10104 10105 10106 10108 10111 10131 10211 10554 10105 10106 10107 10109 10111 10553 10554 10556 10108 10110 10111 10113 10114 10553 10554 10556 9649 9650 9652 10109 10111 10113 10114 10556 9645 9646 9647 9648 9649 9650 9652 10105 10106 10107 10108 10109 10110 10113 10114 10553 10554 10556 10093 10099 10100 10113 10114 10546 10547 10556 9649 9650 9651 9652 9653 9654 9655 10093 10099 10100 10109 10110 10111 10112 10114 10546 10547 10556 10109 10110 10111 10112 10113 10546 10547 10556 9659 9660 9661 9663 9664 10116 10117 10119 10120 10527 10528 10563 9656 9657 9658 9659 9660 9661 9663 9664 10075 10076 10077 10115 10117 10119 10120 10524 10525 10527 10528 10563 10075 10076 10077 10115 10116 10119 10120 10524 10525 10527 10528 10563 9662 9663 9664 9668 9669 10119 10120 10124 10125 10563 10564 10567 9659 9660 9661 9662 9663 9664 9668 9669 10115 10116 10117 10118 10120 10124 10125 10527 10528 10563 10564 10567 10115 10116 10117 10118 10119 10124 10125 10527 10528 10563 10564 10567 10122 10123 10124 10125 10567 10568 10569 9665 9666 9667 9668 9669 10121 10123 10124 10125 10567 10568 10569 9665 9666 9667 9668 9669 10121 10122 10124 10125 10567 10568 10569 9662 9663 9664 9665 9666 9667 9668 9669 10118 10119 10120 10121 10122 10123 10125 10563 10564 10567 10568 10569 10118 10119 10120 10121 10122 10123 10124 10563 10564 10567 10568 10569 9715 10127 10128 10165 10169 10170 10182 10367 10368 10574 9714 9715 9926 9927 9928 9964 9969 10126 10128 10165 10169 10170 10182 10367 10368 10574 9926 9927 9928 9964 9969 10126 10127 10169 10170 10367 10368 10574 9760 10131 10132 10210 10211 10216 10217 10579 10103 10131 10132 10530 10550 10551 10554 10579 9758 9760 10103 10104 10105 10107 10129 10130 10132 10210 10211 10216 10217 10530 10550 10551 10554 10579 10129 10130 10131 10216 10217 10530 10551 10579 9681 9682 9691 10134 10135 10142 10143 10584 10133 10135 10136 10137 10138 10142 10143 10584 9670 9671 9672 9673 9674 9675 9676 9681 9682 9691 10133 10134 10136 10137 10138 10142 10143 10584 9674 9675 9676 10134 10135 10137 10138 10584 10134 10135 10136 10138 10139 10297 10298 10584 9674 9675 9676 9677 9678 9679 9680 9853 9854 9856 10134 10135 10136 10137 10139 10297 10298 10584 9853 9854 9856 10137 10138 10297 10298 10584 9682 9683 9691 10141 10142 10144 10146 10588 10140 10142 10143 10144 10146 10583 10584 10588 9681 9682 9683 9691 10133 10134 10135 10140 10141 10143 10144 10146 10583 10584 10588 10133 10134 10135 10141 10142 10583 10584 10588 10140 10141 10142 10146 10147 10587 10588 10592 9683 9691 9692 10146 10147 10149 10150 10592 9682 9683 9691 9692 10140 10141 10142 10144 10145 10147 10149 10150 10587 10588 10592 10144 10145 10146 10149 10150 10587 10588 10592 9693 9694 9697 10149 10150 10153 10154 10592 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9697 10145 10146 10147 10148 10150 10153 10154 10592 10145 10146 10147 10148 10149 10153 10154 10592 9694 9695 9697 10152 10153 10155 10157 10595 10151 10153 10154 10155 10157 10591 10592 10595 9693 9694 9695 9697 10148 10149 10150 10151 10152 10154 10155 10157 10591 10592 10595 10148 10149 10150 10152 10153 10591 10592 10595 10151 10152 10153 10156 10157 10158 10161 10595 9698 9699 9701 10155 10157 10158 10161 10595 9694 9695 9696 9697 9698 9699 9701 10151 10152 10153 10155 10156 10158 10161 10595 10155 10156 10157 10159 10161 10594 10595 10597 10158 10160 10161 10163 10164 10594 10595 10597 9702 9703 9705 10159 10161 10163 10164 10597 9698 9699 9700 9701 9702 9703 9705 10155 10156 10157 10158 10159 10160 10163 10164 10594 10595 10597 9736 9737 9740 10163 10164 10192 10196 10597 9702 9703 9704 9705 9706 9707 9708 9736 9737 9740 10159 10160 10161 10162 10164 10192 10196 10597 10159 10160 10161 10162 10163 10192 10196 10597 9715 10126 10127 10166 10167 10169 10182 10602 10165 10167 10169 10171 10175 10176 10182 10602 10165 10166 10168 10169 10182 10600 10602 10604 10167 10169 10170 10207 10572 10573 10574 10600 10602 10604 9715 10126 10127 10128 10165 10166 10167 10168 10170 10182 10207 10367 10368 10572 10573 10574 10600 10602 10604 10126 10127 10128 10168 10169 10207 10367 10368 10572 10573 10574 10604 10166 10172 10175 10176 10182 10599 10602 10613 10171 10174 10176 10599 10602 10611 10613 10617 9726 9728 9729 10178 10180 10184 10187 10621 10172 10176 10177 10611 10613 10615 10617 10623 10166 10171 10176 10177 10182 10183 10602 10623 10166 10171 10172 10174 10175 10177 10182 10183 10599 10602 10611 10613 10615 10617 10623 10174 10175 10176 10182 10183 10615 10617 10623 10173 10179 10180 10184 10187 10621 10622 10623 10178 10180 10181 10182 10183 10621 10622 10623 9709 9710 9711 9712 9716 9717 9718 9726 9728 9729 10173 10178 10179 10181 10182 10183 10184 10187 10621 10622 10623 9716 9717 9718 10179 10180 10182 10183 10623 9713 9714 9715 9716 9717 9718 9926 9927 10126 10127 10165 10166 10167 10169 10171 10175 10176 10177 10179 10180 10181 10183 10602 10623 10175 10176 10177 10179 10180 10181 10182 10623 10173 10178 10180 10185 10187 10619 10621 10627 10184 10186 10187 10188 10191 10619 10621 10627 9733 9734 9735 10185 10187 10188 10191 10627 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9733 9734 9735 10173 10178 10180 10184 10185 10186 10188 10191 10619 10621 10627 10185 10186 10187 10189 10191 10626 10627 10630 10188 10190 10191 10201 10203 10626 10627 10630 9748 9749 9750 10189 10191 10201 10203 10630 9732 9733 9734 9735 9748 9749 9750 10185 10186 10187 10188 10189 10190 10201 10203 10626 10627 10630 10162 10163 10164 10193 10196 10596 10597 10636 10192 10194 10196 10596 10597 10635 10636 10640 10193 10195 10196 10198 10199 10635 10636 10640 9737 9738 9740 10194 10196 10198 10199 10640 9736 9737 9738 9740 10162 10163 10164 10192 10193 10194 10195 10198 10199 10596 10597 10635 10636 10640 9751 9756 9757 10198 10199 10200 10205 10640 9737 9738 9739 9740 9741 9742 9743 9751 9756 9757 10194 10195 10196 10197 10199 10200 10205 10640 10194 10195 10196 10197 10198 10200 10205 10640 10197 10198 10199 10205 10206 10639 10640 10642 10189 10190 10191 10202 10203 10630 10631 10642 10201 10203 10204 10205 10206 10630 10631 10642 9744 9745 9746 9747 9748 9749 9750 9752 9753 9754 10189 10190 10191 10201 10202 10204 10205 10206 10630 10631 10642 9752 9753 9754 10202 10203 10205 10206 10642 9751 9752 9753 9754 9755 9756 9757 10197 10198 10199 10200 10202 10203 10204 10206 10639 10640 10642 10200 10202 10203 10204 10205 10639 10640 10642 10168 10169 10170 10570 10572 10573 10574 10604 10605 10608 10609 10645 10209 10211 10212 10270 10272 10650 10651 10654 9812 9813 9814 10208 10211 10212 10272 10654 9760 10129 10131 10211 10212 10213 10217 10654 9758 9759 9760 9812 9813 9814 10104 10107 10129 10131 10208 10209 10210 10212 10213 10217 10272 10654 10208 10209 10210 10211 10213 10217 10272 10654 10210 10211 10212 10214 10217 10653 10654 10658 10213 10215 10217 10653 10654 10657 10658 10662 10214 10216 10217 10576 10579 10657 10658 10662 10129 10131 10132 10215 10217 10576 10579 10662 9760 10129 10131 10132 10210 10211 10212 10213 10214 10215 10216 10576 10579 10653 10654 10657 10658 10662 9827 9828 9829 10221 10222 10276 10278 10668 9763 9764 9765 10220 10221 10223 10225 10672 10219 10221 10222 10223 10225 10667 10668 10672 9761 9763 9764 9765 9827 9828 9829 10218 10219 10220 10222 10223 10225 10276 10278 10667 10668 10672 10218 10220 10221 10276 10278 10667 10668 10672 10219 10220 10221 10225 10226 10671 10672 10678 9767 9768 9769 10225 10226 10228 10229 10678 9762 9763 9764 9765 9767 9768 9769 10219 10220 10221 10223 10224 10226 10228 10229 10671 10672 10678 10223 10224 10225 10228 10229 10671 10672 10678 9778 9779 9780 10228 10229 10230 10235 10678 9766 9767 9768 9769 9778 9779 9780 10224 10225 10226 10227 10229 10230 10235 10678 10224 10225 10226 10227 10228 10230 10235 10678 10227 10228 10229 10235 10236 10677 10678 10680 9781 9782 9784 10232 10233 10237 10241 10680 10231 10233 10234 10235 10236 10237 10241 10680 9770 9771 9772 9773 9774 9775 9776 9781 9782 9784 10231 10232 10234 10235 10236 10237 10241 10680 9774 9775 9776 10232 10233 10235 10236 10680 9774 9775 9776 9777 9778 9779 9780 10227 10228 10229 10230 10232 10233 10234 10236 10677 10678 10680 10230 10232 10233 10234 10235 10677 10678 10680 10231 10232 10233 10238 10241 10674 10680 10684 10237 10239 10241 10674 10680 10683 10684 10690 10238 10240 10241 10243 10245 10683 10684 10690 9782 9784 9785 10239 10241 10243 10245 10690 9781 9782 9784 9785 10231 10232 10233 10237 10238 10239 10240 10243 10245 10674 10680 10683 10684 10690 9786 9788 9789 10244 10245 10246 10249 10693 10239 10240 10241 10244 10245 10689 10690 10693 10242 10243 10245 10246 10249 10689 10690 10693 9782 9783 9784 9785 9786 9788 9789 10239 10240 10241 10242 10243 10244 10246 10249 10689 10690 10693 10242 10244 10245 10247 10249 10692 10693 10698 10246 10248 10249 10251 10253 10692 10693 10698 9790 9791 9793 10247 10249 10251 10253 10698 9786 9787 9788 9789 9790 9791 9793 10242 10244 10245 10246 10247 10248 10251 10253 10692 10693 10698 9794 9796 9797 10252 10253 10254 10258 10701 10247 10248 10249 10252 10253 10697 10698 10701 10250 10251 10253 10254 10258 10697 10698 10701 9790 9791 9792 9793 9794 9796 9797 10247 10248 10249 10250 10251 10252 10254 10258 10697 10698 10701 10250 10252 10253 10255 10258 10700 10701 10706 10254 10256 10258 10700 10701 10705 10706 10709 10255 10257 10258 10263 10264 10705 10706 10709 9802 9810 9811 10256 10258 10263 10264 10709 9794 9795 9796 9797 9802 9810 9811 10250 10252 10253 10254 10255 10256 10257 10263 10264 10700 10701 10705 10706 10709 9826 10260 10261 10265 10266 10268 10274 10709 10259 10261 10262 10263 10264 10265 10268 10709 9798 9799 9800 9801 9803 9804 9805 9823 9824 9825 9826 10259 10260 10262 10263 10264 10265 10266 10268 10274 10709 9803 9804 9805 10260 10261 10263 10264 10709 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 10256 10257 10258 10260 10261 10262 10264 10709 10256 10257 10258 10260 10261 10262 10263 10709 10259 10260 10261 10268 10269 10708 10709 10713 9826 10259 10261 10267 10268 10274 10275 10716 10266 10268 10269 10274 10275 10712 10713 10716 9826 10259 10260 10261 10265 10266 10267 10269 10274 10275 10708 10709 10712 10713 10716 10265 10267 10268 10708 10709 10712 10713 10716 10208 10271 10272 10647 10650 10651 10654 10716 10270 10272 10273 10274 10275 10647 10651 10716 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 10208 10209 10211 10212 10270 10271 10273 10274 10275 10647 10650 10651 10654 10716 9819 9820 9821 10271 10272 10274 10275 10716 9819 9820 9821 9822 9823 9824 9825 9826 10259 10261 10266 10267 10268 10271 10272 10273 10275 10716 10266 10267 10268 10271 10272 10273 10274 10716 10218 10221 10222 10277 10278 10664 10668 10719 10276 10278 10279 10280 10282 10664 10668 10719 9827 9828 9829 9830 9831 9832 9833 10218 10221 10222 10276 10277 10279 10280 10282 10664 10668 10719 9831 9832 9833 10277 10278 10280 10282 10719 10277 10278 10279 10281 10282 10719 10720 10723 10280 10282 10283 10284 10286 10719 10720 10723 9831 9832 9833 9834 9835 9836 9837 10277 10278 10279 10280 10281 10283 10284 10286 10719 10720 10723 9835 9836 9837 10281 10282 10284 10286 10723 10281 10282 10283 10285 10286 10723 10724 10727 10284 10286 10287 10288 10290 10723 10724 10727 9835 9836 9837 9838 9839 9840 9841 10281 10282 10283 10284 10285 10287 10288 10290 10723 10724 10727 9839 9840 9841 10285 10286 10288 10290 10727 10285 10286 10287 10289 10290 10727 10728 10732 10288 10290 10291 10292 10293 10727 10728 10732 9839 9840 9841 9842 9843 9844 9845 10285 10286 10287 10288 10289 10291 10292 10293 10727 10728 10732 9843 9844 9845 10289 10290 10292 10293 10732 10289 10290 10291 10293 10294 10340 10343 10732 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9904 9905 9908 10289 10290 10291 10292 10294 10340 10343 10732 9904 9905 9908 10292 10293 10340 10343 10732 9854 9855 9856 10296 10298 10300 10301 10736 10295 10297 10298 10300 10301 10580 10584 10736 10137 10138 10139 10296 10298 10580 10584 10736 9853 9854 9855 9856 10137 10138 10139 10295 10296 10297 10300 10301 10580 10584 10736 9861 9864 9865 10300 10301 10302 10305 10736 10295 10296 10298 10299 10301 10302 10305 10736 9854 9855 9856 9857 9858 9859 9860 9861 9864 9865 10295 10296 10298 10299 10300 10302 10305 10736 10299 10300 10301 10304 10305 10733 10736 10740 9863 9864 9865 10304 10305 10306 10307 10740 10302 10303 10305 10306 10307 10733 10736 10740 9861 9863 9864 9865 10299 10300 10301 10302 10303 10304 10306 10307 10733 10736 10740 10303 10304 10305 10307 10308 10309 10312 10740 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9876 10303 10304 10305 10306 10308 10309 10312 10740 9872 9873 9876 10306 10307 10309 10312 10740 10306 10307 10308 10311 10312 10737 10740 10744 9873 9875 9876 10311 10312 10313 10316 10744 10309 10310 10312 10313 10316 10737 10740 10744 9872 9873 9875 9876 10306 10307 10308 10309 10310 10311 10313 10316 10737 10740 10744 10310 10311 10312 10315 10316 10741 10744 10747 9892 9893 9894 10315 10316 10325 10326 10747 10313 10314 10316 10325 10326 10741 10744 10747 9873 9874 9875 9876 9892 9893 9894 10310 10311 10312 10313 10314 10315 10325 10326 10741 10744 10747 9885 9886 9887 10318 10320 10323 10324 10751 10317 10319 10320 10323 10324 10332 10335 10751 9896 9897 9899 10318 10320 10332 10335 10751 9877 9878 9879 9880 9881 9882 9883 9885 9886 9887 9896 9897 9899 10317 10318 10319 10323 10324 10332 10335 10751 9889 9890 9891 10322 10324 10326 10327 10753 10321 10323 10324 10326 10327 10748 10751 10753 10317 10318 10320 10322 10324 10748 10751 10753 9884 9885 9886 9887 9889 9890 9891 10317 10318 10320 10321 10322 10323 10326 10327 10748 10751 10753 10314 10315 10316 10326 10327 10745 10747 10753 9888 9889 9890 9891 9892 9893 9894 10314 10315 10316 10321 10322 10324 10325 10327 10745 10747 10753 10321 10322 10324 10325 10326 10745 10747 10753 9901 9902 9903 10329 10331 10337 10338 10759 10328 10330 10331 10337 10338 10339 10365 10759 9925 10329 10331 10339 10361 10363 10365 10759 9895 9901 9902 9903 9922 9923 9924 9925 10328 10329 10330 10337 10338 10339 10361 10363 10365 10759 10318 10319 10320 10333 10335 10750 10751 10762 10332 10334 10335 10336 10338 10750 10751 10762 9900 9901 9903 10333 10335 10336 10338 10762 9896 9897 9898 9899 9900 9901 9903 10318 10319 10320 10332 10333 10334 10336 10338 10750 10751 10762 10333 10334 10335 10337 10338 10756 10759 10762 10328 10329 10331 10336 10338 10756 10759 10762 9900 9901 9902 9903 10328 10329 10331 10333 10334 10335 10336 10337 10756 10759 10762 10329 10330 10331 10365 10366 10755 10759 10767 10292 10293 10294 10342 10343 10730 10732 10771 9905 9907 9908 10342 10343 10344 10347 10771 10340 10341 10343 10344 10347 10730 10732 10771 9904 9905 9907 9908 10292 10293 10294 10340 10341 10342 10344 10347 10730 10732 10771 10341 10342 10343 10346 10347 10769 10771 10775 9909 9911 9912 10346 10347 10348 10351 10775 10344 10345 10347 10348 10351 10769 10771 10775 9905 9906 9907 9908 9909 9911 9912 10341 10342 10343 10344 10345 10346 10348 10351 10769 10771 10775 10345 10346 10347 10350 10351 10773 10775 10779 9913 9915 9916 10350 10351 10352 10355 10779 10348 10349 10351 10352 10355 10773 10775 10779 9909 9910 9911 9912 9913 9915 9916 10345 10346 10347 10348 10349 10350 10352 10355 10773 10775 10779 10349 10350 10351 10354 10355 10777 10779 10783 9917 9919 9920 10354 10355 10356 10359 10783 10352 10353 10355 10356 10359 10777 10779 10783 9913 9914 9915 9916 9917 9919 9920 10349 10350 10351 10352 10353 10354 10356 10359 10777 10779 10783 10353 10354 10355 10358 10359 10781 10783 10787 9921 9923 9924 10358 10359 10360 10363 10787 10356 10357 10359 10360 10363 10781 10783 10787 9917 9918 9919 9920 9921 9923 9924 10353 10354 10355 10356 10357 10358 10360 10363 10781 10783 10787 10357 10358 10359 10362 10363 10785 10787 10789 9925 10330 10331 10362 10363 10364 10365 10789 10360 10361 10363 10364 10365 10785 10787 10789 9921 9922 9923 9924 9925 10330 10331 10357 10358 10359 10360 10361 10362 10364 10365 10785 10787 10789 10361 10362 10363 10365 10366 10763 10767 10789 9925 10329 10330 10331 10339 10361 10362 10363 10364 10366 10755 10759 10763 10767 10789 10339 10364 10365 10755 10759 10763 10767 10789 10126 10127 10128 10169 10170 10368 10369 10378 10407 10574 10575 10792 9926 9927 9928 9964 9968 9969 10126 10127 10128 10169 10170 10367 10369 10378 10407 10408 10413 10574 10575 10792 9964 9968 9969 10367 10368 10378 10407 10408 10413 10574 10575 10792 10030 10371 10372 10373 10375 10376 10475 10476 10478 10479 10481 10804 10370 10375 10376 10478 10479 10481 10482 10797 10798 10803 10804 10807 10030 10370 10373 10374 10376 10377 10382 10383 10475 10476 10478 10813 9930 10027 10028 10029 10030 10370 10372 10374 10376 10377 10379 10380 10382 10383 10472 10473 10475 10476 10478 10813 9930 10028 10029 10372 10373 10376 10377 10379 10380 10382 10383 10813 10370 10371 10376 10377 10478 10479 10481 10804 10805 10812 10813 10816 10030 10370 10371 10372 10373 10374 10375 10377 10382 10383 10475 10476 10478 10479 10481 10804 10805 10812 10813 10816 10372 10373 10374 10375 10376 10382 10383 10804 10805 10812 10813 10816 10367 10368 10369 10406 10407 10574 10575 10792 10793 10810 10811 10819 9930 10028 10029 10373 10374 10380 10381 10383 10384 10393 10394 10823 9929 9930 9937 9938 9939 10024 10025 10028 10029 10373 10374 10379 10381 10383 10384 10388 10391 10393 10394 10823 9937 9938 9939 10379 10380 10383 10384 10388 10391 10393 10394 10823 10372 10373 10374 10376 10377 10383 10384 10813 10814 10823 10824 10826 9930 10028 10029 10372 10373 10374 10376 10377 10379 10380 10381 10382 10384 10393 10394 10813 10814 10823 10824 10826 10379 10380 10381 10382 10383 10393 10394 10813 10814 10823 10824 10826 9961 9962 9963 9965 9966 10386 10387 10395 10396 10409 10410 10829 9931 9932 9933 9940 9941 9942 9950 9951 9961 9962 9963 9965 9966 10385 10387 10395 10396 10409 10410 10829 9940 9941 9942 9950 9951 10385 10386 10395 10396 10409 10410 10829 9937 9938 9939 10380 10381 10390 10391 10392 10393 10832 9943 9944 9945 10390 10391 10399 10400 10832 10388 10389 10391 10392 10393 10399 10400 10832 9934 9935 9936 9937 9938 9939 9943 9944 9945 10380 10381 10388 10389 10390 10392 10393 10399 10400 10832 10388 10390 10391 10393 10394 10821 10823 10832 9937 9938 9939 10379 10380 10381 10383 10384 10388 10390 10391 10392 10394 10821 10823 10832 10379 10380 10381 10383 10384 10392 10393 10821 10823 10832 10385 10386 10387 10396 10397 10401 10402 10409 10410 10828 10829 10835 9940 9941 9942 9950 9951 9952 9956 9957 10385 10386 10387 10395 10397 10401 10402 10409 10410 10828 10829 10835 9950 9951 9952 9956 9957 10395 10396 10401 10402 10828 10829 10835 9953 9954 9955 9959 9960 10399 10400 10404 10405 10832 10833 10838 9943 9944 9945 9946 9947 9948 9949 9953 9954 9955 9959 9960 10389 10390 10391 10398 10400 10404 10405 10832 10833 10838 10389 10390 10391 10398 10399 10404 10405 10832 10833 10838 10395 10396 10397 10402 10403 10404 10405 10828 10829 10834 10835 10838 9950 9951 9952 9956 9957 9958 9959 9960 10395 10396 10397 10401 10403 10404 10405 10828 10829 10834 10835 10838 9956 9957 9958 9959 9960 10401 10402 10404 10405 10834 10835 10838 9953 9954 9955 9956 9957 9958 9959 9960 10398 10399 10400 10401 10402 10403 10405 10832 10833 10834 10835 10838 10398 10399 10400 10401 10402 10403 10404 10832 10833 10834 10835 10838 10378 10407 10408 10412 10413 10792 10793 10810 10811 10819 10820 10840 9964 9968 9969 10367 10368 10369 10378 10406 10408 10412 10413 10574 10575 10792 10793 10810 10811 10819 10820 10840 9964 9968 9969 10368 10369 10406 10407 10412 10413 10819 10820 10840 10385 10386 10387 10395 10396 10410 10411 10415 10416 10829 10830 10843 9961 9962 9963 9965 9966 9967 9971 9972 10385 10386 10387 10395 10396 10409 10411 10415 10416 10829 10830 10843 9965 9966 9967 9971 9972 10409 10410 10415 10416 10829 10830 10843 10406 10407 10408 10413 10414 10418 10419 10819 10820 10840 10841 10846 9964 9968 9969 9970 9974 9975 10368 10369 10406 10407 10408 10412 10414 10418 10419 10819 10820 10840 10841 10846 9968 9969 9970 9974 9975 10412 10413 10418 10419 10840 10841 10846 10409 10410 10411 10416 10417 10421 10422 10829 10830 10843 10844 10848 9965 9966 9967 9971 9972 9973 9977 9978 10409 10410 10411 10415 10417 10421 10422 10829 10830 10843 10844 10848 9971 9972 9973 9977 9978 10415 10416 10421 10422 10843 10844 10848 10412 10413 10414 10419 10420 10421 10422 10840 10841 10846 10847 10848 9968 9969 9970 9974 9975 9976 9977 9978 10412 10413 10414 10418 10420 10421 10422 10840 10841 10846 10847 10848 9974 9975 9976 9977 9978 10418 10419 10421 10422 10846 10847 10848 9971 9972 9973 9974 9975 9976 9977 9978 10415 10416 10417 10418 10419 10420 10422 10843 10844 10846 10847 10848 10415 10416 10417 10418 10419 10420 10421 10843 10844 10846 10847 10848 10024 10025 10026 10027 10028 10424 10425 10471 10472 10860 10423 10425 10426 10427 10428 10471 10472 10860 9979 9980 9981 10024 10025 10026 10027 10028 10423 10424 10426 10427 10428 10471 10472 10860 9979 9980 9981 10025 10026 10424 10425 10427 10428 10860 10424 10425 10426 10428 10429 10430 10431 10860 9979 9980 9981 9982 9983 9984 10025 10026 10424 10425 10426 10427 10429 10430 10431 10860 9980 9981 9982 9983 9984 10427 10428 10430 10431 10860 10427 10428 10429 10431 10432 10433 10434 10860 9980 9981 9982 9983 9984 9985 9986 9987 10427 10428 10429 10430 10432 10433 10434 10860 9983 9984 9985 9986 9987 10430 10431 10433 10434 10860 10430 10431 10432 10434 10435 10436 10437 10860 9983 9984 9985 9986 9987 9988 9989 9990 10430 10431 10432 10433 10435 10436 10437 10860 9986 9987 9988 9989 9990 10433 10434 10436 10437 10860 10433 10434 10435 10437 10438 10439 10440 10860 9986 9987 9988 9989 9990 9991 9992 9993 10433 10434 10435 10436 10438 10439 10440 10860 9989 9990 9991 9992 9993 10436 10437 10439 10440 10860 10436 10437 10438 10440 10441 10442 10443 10860 9989 9990 9991 9992 9993 9994 9995 9996 10436 10437 10438 10439 10441 10442 10443 10860 9992 9993 9994 9995 9996 10439 10440 10442 10443 10860 10439 10440 10441 10443 10444 10445 10446 10860 9992 9993 9994 9995 9996 9997 9998 9999 10439 10440 10441 10442 10444 10445 10446 10860 9995 9996 9997 9998 9999 10442 10443 10445 10446 10860 10442 10443 10444 10446 10447 10448 10449 10860 9995 9996 9997 9998 9999 10000 10001 10002 10442 10443 10444 10445 10447 10448 10449 10860 9998 9999 10000 10001 10002 10445 10446 10448 10449 10860 10445 10446 10447 10449 10450 10451 10452 10860 9998 9999 10000 10001 10002 10003 10004 10005 10445 10446 10447 10448 10450 10451 10452 10860 10001 10002 10003 10004 10005 10448 10449 10451 10452 10860 10448 10449 10450 10452 10453 10454 10455 10860 10001 10002 10003 10004 10005 10006 10007 10008 10448 10449 10450 10451 10453 10454 10455 10860 10004 10005 10006 10007 10008 10451 10452 10454 10455 10860 10451 10452 10453 10455 10456 10457 10458 10860 10004 10005 10006 10007 10008 10009 10010 10011 10451 10452 10453 10454 10456 10457 10458 10860 10007 10008 10009 10010 10011 10454 10455 10457 10458 10860 10454 10455 10456 10458 10459 10460 10461 10860 10007 10008 10009 10010 10011 10012 10013 10014 10454 10455 10456 10457 10459 10460 10461 10860 10010 10011 10012 10013 10014 10457 10458 10460 10461 10860 10457 10458 10459 10461 10462 10463 10464 10860 10010 10011 10012 10013 10014 10015 10016 10017 10457 10458 10459 10460 10462 10463 10464 10860 10013 10014 10015 10016 10017 10460 10461 10463 10464 10860 10460 10461 10462 10464 10465 10466 10467 10860 10013 10014 10015 10016 10017 10018 10019 10020 10460 10461 10462 10463 10465 10466 10467 10860 10016 10017 10018 10019 10020 10463 10464 10466 10467 10860 10463 10464 10465 10467 10468 10469 10470 10860 10016 10017 10018 10019 10020 10021 10022 10023 10463 10464 10465 10466 10468 10469 10470 10860 10019 10020 10021 10022 10023 10466 10467 10469 10470 10860 10019 10020 10021 10022 10023 10466 10467 10468 10470 10860 10466 10467 10468 10469 10860 10423 10424 10425 10472 10473 10474 10475 10860 10024 10025 10026 10027 10028 10029 10030 10373 10423 10424 10425 10471 10473 10474 10475 10860 10027 10028 10029 10030 10373 10471 10472 10474 10475 10860 10471 10472 10473 10475 10476 10477 10478 10860 10027 10028 10029 10030 10370 10372 10373 10376 10471 10472 10473 10474 10476 10477 10478 10860 10030 10370 10372 10373 10376 10474 10475 10477 10478 10860 10474 10475 10476 10478 10479 10480 10481 10860 10030 10370 10371 10372 10373 10375 10376 10474 10475 10476 10477 10479 10480 10481 10804 10860 10370 10371 10375 10376 10477 10478 10480 10481 10804 10860 10477 10478 10479 10481 10482 10483 10797 10860 10370 10371 10375 10376 10477 10478 10479 10480 10482 10483 10797 10798 10803 10804 10807 10860 10371 10480 10481 10483 10797 10798 10803 10804 10807 10860 10480 10481 10482 10794 10796 10797 10800 10860 10032 10035 10036 10486 10487 10490 10491 10865 10078 10079 10081 10486 10487 10532 10536 10865 10031 10032 10035 10036 10078 10079 10081 10484 10485 10487 10490 10491 10532 10536 10865 10484 10485 10486 10490 10491 10532 10536 10865 10034 10035 10036 10489 10491 10493 10494 10867 10488 10490 10491 10493 10494 10862 10865 10867 10484 10486 10487 10489 10491 10862 10865 10867 10032 10034 10035 10036 10484 10486 10487 10488 10489 10490 10493 10494 10862 10865 10867 10037 10038 10039 10044 10045 10493 10494 10496 10497 10866 10867 10870 10033 10034 10035 10036 10037 10038 10039 10044 10045 10488 10489 10491 10492 10494 10496 10497 10866 10867 10870 10488 10489 10491 10492 10493 10496 10497 10866 10867 10870 10043 10044 10045 10050 10051 10496 10497 10502 10503 10869 10870 10873 10037 10038 10039 10043 10044 10045 10050 10051 10492 10493 10494 10495 10497 10502 10503 10866 10867 10869 10870 10873 10492 10493 10494 10495 10496 10502 10503 10866 10867 10869 10870 10873 10069 10070 10071 10073 10074 10499 10500 10504 10505 10522 10523 10876 10040 10041 10042 10046 10047 10048 10052 10053 10069 10070 10071 10073 10074 10498 10500 10504 10505 10522 10523 10876 10046 10047 10048 10052 10053 10498 10499 10504 10505 10522 10523 10876 10049 10050 10051 10056 10057 10502 10503 10508 10509 10872 10873 10879 10043 10044 10045 10049 10050 10051 10056 10057 10495 10496 10497 10501 10503 10508 10509 10869 10870 10872 10873 10879 10495 10496 10497 10501 10502 10508 10509 10869 10870 10872 10873 10879 10498 10499 10500 10505 10506 10510 10511 10522 10523 10876 10877 10882 10046 10047 10048 10052 10053 10054 10058 10059 10498 10499 10500 10504 10506 10510 10511 10522 10523 10876 10877 10882 10052 10053 10054 10058 10059 10504 10505 10510 10511 10876 10877 10882 10055 10056 10057 10062 10063 10508 10509 10514 10515 10878 10879 10885 10049 10050 10051 10055 10056 10057 10062 10063 10501 10502 10503 10507 10509 10514 10515 10872 10873 10878 10879 10885 10501 10502 10503 10507 10508 10514 10515 10872 10873 10878 10879 10885 10504 10505 10506 10511 10512 10516 10517 10876 10877 10882 10883 10888 10052 10053 10054 10058 10059 10060 10064 10065 10504 10505 10506 10510 10512 10516 10517 10876 10877 10882 10883 10888 10058 10059 10060 10064 10065 10510 10511 10516 10517 10882 10883 10888 10061 10062 10063 10067 10068 10514 10515 10519 10520 10884 10885 10890 10055 10056 10057 10061 10062 10063 10067 10068 10507 10508 10509 10513 10515 10519 10520 10878 10879 10884 10885 10890 10507 10508 10509 10513 10514 10519 10520 10878 10879 10884 10885 10890 10510 10511 10512 10517 10518 10519 10520 10882 10883 10888 10889 10890 10058 10059 10060 10064 10065 10066 10067 10068 10510 10511 10512 10516 10518 10519 10520 10882 10883 10888 10889 10890 10064 10065 10066 10067 10068 10516 10517 10519 10520 10888 10889 10890 10061 10062 10063 10064 10065 10066 10067 10068 10513 10514 10515 10516 10517 10518 10520 10884 10885 10888 10889 10890 10513 10514 10515 10516 10517 10518 10519 10884 10885 10888 10889 10890 10072 10073 10074 10076 10077 10522 10523 10525 10526 10875 10876 10893 10069 10070 10071 10072 10073 10074 10076 10077 10498 10499 10500 10504 10505 10521 10523 10525 10526 10875 10876 10893 10498 10499 10500 10504 10505 10521 10522 10525 10526 10875 10876 10893 10075 10076 10077 10116 10117 10525 10526 10528 10529 10892 10893 10897 10072 10073 10074 10075 10076 10077 10116 10117 10521 10522 10523 10524 10526 10528 10529 10875 10876 10892 10893 10897 10521 10522 10523 10524 10525 10528 10529 10875 10876 10892 10893 10897 10115 10116 10117 10119 10120 10528 10529 10561 10563 10896 10897 10900 10075 10076 10077 10115 10116 10117 10119 10120 10524 10525 10526 10527 10529 10561 10563 10892 10893 10896 10897 10900 10524 10525 10526 10527 10528 10561 10563 10892 10893 10896 10897 10900 10130 10131 10132 10540 10551 10578 10579 10904 10532 10533 10536 10861 10865 10908 10909 10912 10485 10486 10487 10531 10533 10536 10865 10912 10531 10532 10534 10536 10865 10911 10912 10916 10533 10535 10536 10538 10539 10911 10912 10916 10085 10087 10088 10534 10536 10538 10539 10916 10078 10079 10080 10081 10082 10083 10084 10085 10087 10088 10485 10486 10487 10531 10532 10533 10534 10535 10538 10539 10865 10911 10912 10916 10092 10094 10097 10538 10539 10541 10544 10916 10085 10086 10087 10088 10089 10090 10091 10092 10094 10097 10534 10535 10536 10537 10539 10541 10544 10916 10534 10535 10536 10537 10538 10541 10544 10916 10530 10548 10551 10558 10578 10579 10904 10923 10537 10538 10539 10542 10544 10915 10916 10926 10541 10543 10544 10545 10546 10915 10916 10926 10094 10095 10097 10542 10544 10545 10546 10926 10092 10094 10095 10097 10537 10538 10539 10541 10542 10543 10545 10546 10915 10916 10926 10542 10543 10544 10546 10547 10555 10556 10926 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10112 10113 10114 10542 10543 10544 10545 10547 10555 10556 10926 10112 10113 10114 10545 10546 10555 10556 10926 10540 10549 10551 10558 10904 10922 10923 10928 10548 10550 10551 10552 10554 10922 10923 10928 10103 10130 10131 10549 10551 10552 10554 10928 10103 10130 10131 10132 10530 10540 10548 10549 10550 10552 10554 10558 10578 10579 10904 10922 10923 10928 10549 10550 10551 10553 10554 10556 10557 10928 10108 10109 10111 10552 10554 10556 10557 10928 10103 10104 10105 10106 10107 10108 10109 10111 10130 10131 10549 10550 10551 10552 10553 10556 10557 10928 10545 10546 10547 10556 10557 10926 10927 10928 10108 10109 10110 10111 10112 10113 10114 10545 10546 10547 10552 10553 10554 10555 10557 10926 10927 10928 10552 10553 10554 10555 10556 10926 10927 10928 10540 10548 10551 10559 10903 10904 10923 10933 10558 10560 10903 10904 10919 10920 10923 10933 10559 10917 10919 10920 10923 10931 10933 10937 10527 10528 10529 10562 10563 10895 10896 10897 10900 10944 10945 10950 10561 10563 10564 10566 10567 10895 10900 10944 10945 10949 10950 10955 10115 10116 10117 10118 10119 10120 10124 10125 10527 10528 10529 10561 10562 10564 10566 10567 10895 10896 10897 10900 10944 10945 10949 10950 10955 10118 10119 10120 10124 10125 10562 10563 10566 10567 10949 10950 10955 10566 10567 10568 10569 10954 10955 10958 10562 10563 10564 10565 10567 10568 10569 10949 10950 10954 10955 10958 10118 10119 10120 10121 10122 10123 10124 10125 10562 10563 10564 10565 10566 10568 10569 10949 10950 10954 10955 10958 10121 10122 10123 10124 10125 10565 10566 10567 10569 10954 10955 10958 10121 10122 10123 10124 10125 10565 10566 10567 10568 10954 10955 10958 10207 10571 10572 10604 10605 10608 10609 10645 10646 10962 10963 10964 10570 10572 10573 10574 10575 10645 10646 10791 10792 10962 10963 10964 10168 10169 10170 10207 10570 10571 10573 10574 10575 10604 10605 10608 10609 10645 10646 10791 10792 10962 10963 10964 10168 10169 10170 10207 10571 10572 10574 10575 10604 10791 10792 10964 10126 10127 10128 10168 10169 10170 10207 10367 10368 10369 10378 10407 10571 10572 10573 10575 10604 10791 10792 10964 10367 10368 10369 10378 10407 10571 10572 10573 10574 10791 10792 10964 10215 10216 10217 10577 10579 10661 10662 10970 10576 10578 10579 10661 10662 10902 10904 10970 10530 10540 10551 10577 10579 10902 10904 10970 10129 10130 10131 10132 10215 10216 10217 10530 10540 10551 10576 10577 10578 10661 10662 10902 10904 10970 10296 10297 10298 10581 10584 10735 10736 10974 10580 10582 10584 10735 10736 10973 10974 10978 10581 10583 10584 10585 10588 10973 10974 10978 10141 10142 10143 10582 10584 10585 10588 10978 10133 10134 10135 10136 10137 10138 10139 10141 10142 10143 10296 10297 10298 10580 10581 10582 10583 10585 10588 10735 10736 10973 10974 10978 10582 10583 10584 10586 10588 10977 10978 10982 10585 10587 10588 10589 10592 10977 10978 10982 10144 10146 10147 10586 10588 10589 10592 10982 10140 10141 10142 10143 10144 10146 10147 10582 10583 10584 10585 10586 10587 10589 10592 10977 10978 10982 10586 10587 10588 10590 10592 10981 10982 10985 10589 10591 10592 10593 10595 10981 10982 10985 10152 10153 10154 10590 10592 10593 10595 10985 10144 10145 10146 10147 10148 10149 10150 10152 10153 10154 10586 10587 10588 10589 10590 10591 10593 10595 10981 10982 10985 10590 10591 10592 10594 10595 10597 10598 10985 10158 10159 10161 10593 10595 10597 10598 10985 10151 10152 10153 10154 10155 10156 10157 10158 10159 10161 10590 10591 10592 10593 10594 10597 10598 10985 10192 10193 10196 10597 10598 10632 10636 10985 10158 10159 10160 10161 10162 10163 10164 10192 10193 10196 10593 10594 10595 10596 10598 10632 10636 10985 10593 10594 10595 10596 10597 10632 10636 10985 10171 10172 10176 10601 10602 10610 10613 10989 10167 10168 10169 10601 10602 10603 10604 10989 10599 10600 10602 10603 10604 10610 10613 10989 10165 10166 10167 10168 10169 10171 10172 10175 10176 10182 10599 10600 10601 10603 10604 10610 10613 10989 10600 10601 10602 10604 10605 10606 10608 10989 10167 10168 10169 10170 10207 10570 10572 10573 10574 10600 10601 10602 10603 10605 10606 10608 10609 10645 10989 10207 10570 10572 10603 10604 10606 10608 10609 10645 10989 10603 10604 10605 10607 10608 10987 10989 10992 10606 10608 10609 10644 10645 10987 10989 10992 10993 10995 10207 10570 10572 10603 10604 10605 10606 10607 10609 10644 10645 10987 10989 10992 10993 10995 10207 10570 10572 10604 10605 10607 10608 10644 10645 10992 10993 10995 10599 10601 10602 10613 10614 10986 10989 10999 10172 10174 10176 10612 10613 10617 10618 11004 10611 10613 10614 10617 10618 10997 10999 11004 10171 10172 10174 10176 10599 10601 10602 10610 10611 10612 10614 10617 10618 10986 10989 10997 10999 11004 10610 10612 10613 10986 10989 10997 10999 11004 10174 10176 10177 10616 10617 10623 10624 11007 10615 10617 10618 10623 10624 11003 11004 11007 10172 10174 10176 10177 10611 10612 10613 10615 10616 10618 10623 10624 11003 11004 11007 10611 10612 10613 10616 10617 11003 11004 11007 10184 10185 10187 10620 10621 10625 10627 11007 10619 10621 10622 10623 10624 10625 10627 11007 10173 10178 10179 10180 10184 10185 10187 10619 10620 10622 10623 10624 10625 10627 11007 10178 10179 10180 10620 10621 10623 10624 11007 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10615 10616 10617 10620 10621 10622 10624 11007 10615 10616 10617 10620 10621 10622 10623 11007 10619 10620 10621 10627 10628 11006 11007 11009 10188 10189 10191 10627 10628 10629 10630 11009 10184 10185 10186 10187 10188 10189 10191 10619 10620 10621 10625 10626 10628 10629 10630 11006 11007 11009 10625 10626 10627 10629 10630 11006 11007 11009 10626 10627 10628 10630 10631 10641 10642 11009 10188 10189 10190 10191 10201 10202 10203 10626 10627 10628 10629 10631 10641 10642 11009 10201 10202 10203 10629 10630 10641 10642 11009 10596 10597 10598 10633 10636 10984 10985 11014 10632 10634 10636 10984 10985 11013 11014 11018 10633 10635 10636 10637 10640 11013 11014 11018 10193 10194 10196 10634 10636 10637 10640 11018 10192 10193 10194 10196 10596 10597 10598 10632 10633 10634 10635 10637 10640 10984 10985 11013 11014 11018 10634 10635 10636 10638 10640 11017 11018 11020 10637 10639 10640 10642 10643 11017 11018 11020 10200 10205 10206 10638 10640 10642 10643 11020 10193 10194 10195 10196 10197 10198 10199 10200 10205 10206 10634 10635 10636 10637 10638 10639 10642 10643 11017 11018 11020 10629 10630 10631 10642 10643 11009 11010 11020 10200 10201 10202 10203 10204 10205 10206 10629 10630 10631 10638 10639 10640 10641 10643 11009 11010 11020 10638 10639 10640 10641 10642 11009 11010 11020 10607 10608 10609 10645 10646 10960 10962 10992 10993 10995 10996 11023 10207 10570 10571 10572 10604 10605 10607 10608 10609 10644 10646 10960 10962 10963 10964 10992 10993 10995 10996 11023 10570 10571 10572 10644 10645 10960 10962 10963 10964 10995 10996 11023 10270 10271 10272 10648 10651 10715 10716 11028 10647 10649 10651 10715 10716 11027 11028 11032 10648 10650 10651 10652 10654 11027 11028 11032 10208 10270 10272 10649 10651 10652 10654 11032 10208 10270 10271 10272 10647 10648 10649 10650 10652 10654 10715 10716 11027 11028 11032 10649 10650 10651 10653 10654 10655 10658 11032 10213 10214 10217 10652 10654 10655 10658 11032 10208 10209 10210 10211 10212 10213 10214 10217 10270 10272 10649 10650 10651 10652 10653 10655 10658 11032 10652 10653 10654 10656 10658 11031 11032 11034 10655 10657 10658 10659 10662 11031 11032 11034 10214 10215 10217 10656 10658 10659 10662 11034 10213 10214 10215 10217 10652 10653 10654 10655 10656 10657 10659 10662 11031 11032 11034 10656 10657 10658 10660 10662 10663 11034 11039 10659 10661 10662 10663 10967 10970 11034 11039 10576 10577 10579 10660 10662 10967 10970 11039 10214 10215 10216 10217 10576 10577 10579 10656 10657 10658 10659 10660 10661 10663 10967 10970 11034 11039 10659 10660 10662 11033 11034 11036 11039 11043 10276 10277 10278 10665 10668 10717 10719 11049 10664 10666 10668 10717 10719 11048 11049 11052 10665 10667 10668 10669 10672 11048 11049 11052 10220 10221 10222 10666 10668 10669 10672 11052 10218 10220 10221 10222 10276 10277 10278 10664 10665 10666 10667 10669 10672 10717 10719 11048 11049 11052 10666 10667 10668 10670 10672 10673 11052 11061 10669 10672 10673 11051 11052 11056 11057 11061 10223 10225 10226 10672 10673 10675 10678 11061 10219 10220 10221 10222 10223 10225 10226 10666 10667 10668 10669 10670 10671 10673 10675 10678 11052 11061 10669 10670 10671 10672 10675 10678 11052 11061 10237 10238 10241 10679 10680 10682 10684 11064 10671 10672 10673 10676 10678 11060 11061 11066 10675 10677 10678 10680 10681 11060 11061 11066 10230 10235 10236 10676 10678 10680 10681 11066 10223 10224 10225 10226 10227 10228 10229 10230 10235 10236 10671 10672 10673 10675 10676 10677 10680 10681 11060 11061 11066 10674 10680 10681 10682 10684 11064 11065 11066 10230 10231 10232 10233 10234 10235 10236 10237 10238 10241 10674 10676 10677 10678 10679 10681 10682 10684 11064 11065 11066 10676 10677 10678 10679 10680 11064 11065 11066 10674 10679 10680 10684 10685 11062 11064 11071 10238 10239 10241 10684 10685 10686 10690 11071 10237 10238 10239 10241 10674 10679 10680 10682 10683 10685 10686 10690 11062 11064 11071 10682 10683 10684 10686 10690 11062 11064 11071 10683 10684 10685 10687 10690 11070 11071 11075 10686 10688 10690 11070 11071 11074 11075 11078 10687 10689 10690 10691 10693 11074 11075 11078 10243 10244 10245 10688 10690 10691 10693 11078 10238 10239 10240 10241 10243 10244 10245 10683 10684 10685 10686 10687 10688 10689 10691 10693 11070 11071 11074 11075 11078 10688 10689 10690 10692 10693 10694 10698 11078 10246 10247 10249 10691 10693 10694 10698 11078 10242 10243 10244 10245 10246 10247 10249 10688 10689 10690 10691 10692 10694 10698 11078 10691 10692 10693 10695 10698 11077 11078 11082 10694 10696 10698 11077 11078 11081 11082 11085 10695 10697 10698 10699 10701 11081 11082 11085 10251 10252 10253 10696 10698 10699 10701 11085 10246 10247 10248 10249 10251 10252 10253 10691 10692 10693 10694 10695 10696 10697 10699 10701 11077 11078 11081 11082 11085 10696 10697 10698 10700 10701 10702 10706 11085 10254 10255 10258 10699 10701 10702 10706 11085 10250 10251 10252 10253 10254 10255 10258 10696 10697 10698 10699 10700 10702 10706 11085 10699 10700 10701 10703 10706 11084 11085 11090 10702 10704 10706 11084 11085 11089 11090 11093 10703 10705 10706 10707 10709 11089 11090 11093 10255 10256 10258 10704 10706 10707 10709 11093 10254 10255 10256 10258 10699 10700 10701 10702 10703 10704 10705 10707 10709 11084 11085 11089 11090 11093 10704 10705 10706 10708 10709 10710 10713 11093 10265 10268 10269 10707 10709 10710 10713 11093 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10268 10269 10704 10705 10706 10707 10708 10710 10713 11093 10707 10708 10709 10711 10713 11092 11093 11097 10710 10712 10713 10714 10716 11092 11093 11097 10267 10268 10269 10711 10713 10714 10716 11097 10265 10267 10268 10269 10707 10708 10709 10710 10711 10712 10714 10716 11092 11093 11097 10711 10712 10713 10715 10716 11025 11028 11097 10647 10648 10651 10714 10716 11025 11028 11097 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10647 10648 10651 10711 10712 10713 10714 10715 11025 11028 11097 10664 10665 10668 10718 10719 11045 11049 11100 10717 10719 10720 10721 10723 11045 11049 11100 10276 10277 10278 10279 10280 10281 10282 10664 10665 10668 10717 10718 10720 10721 10723 11045 11049 11100 10280 10281 10282 10718 10719 10721 10723 11100 10718 10719 10720 10722 10723 11100 11101 11103 10721 10723 10724 10725 10727 11100 11101 11103 10280 10281 10282 10283 10284 10285 10286 10718 10719 10720 10721 10722 10724 10725 10727 11100 11101 11103 10284 10285 10286 10722 10723 10725 10727 11103 10722 10723 10724 10726 10727 11103 11104 11108 10725 10727 10728 10729 10732 11103 11104 11108 10284 10285 10286 10287 10288 10289 10290 10722 10723 10724 10725 10726 10728 10729 10732 11103 11104 11108 10288 10289 10290 10726 10727 10729 10732 11108 10726 10727 10728 10731 10732 11106 11108 11112 10340 10342 10343 10731 10732 10768 10771 11112 10729 10730 10732 10768 10771 11106 11108 11112 10288 10289 10290 10291 10292 10293 10294 10340 10342 10343 10726 10727 10728 10729 10730 10731 10768 10771 11106 11108 11112 10302 10304 10305 10734 10736 10739 10740 11117 10733 10735 10736 10739 10740 10971 10974 11117 10580 10581 10584 10734 10736 10971 10974 11117 10295 10296 10297 10298 10299 10300 10301 10302 10304 10305 10580 10581 10584 10733 10734 10735 10739 10740 10971 10974 11117 10309 10311 10312 10738 10740 10743 10744 11121 10737 10739 10740 10743 10744 11114 11117 11121 10733 10734 10736 10738 10740 11114 11117 11121 10302 10303 10304 10305 10306 10307 10308 10309 10311 10312 10733 10734 10736 10737 10738 10739 10743 10744 11114 11117 11121 10313 10315 10316 10742 10744 10746 10747 11124 10741 10743 10744 10746 10747 11118 11121 11124 10737 10738 10740 10742 10744 11118 11121 11124 10309 10310 10311 10312 10313 10315 10316 10737 10738 10740 10741 10742 10743 10746 10747 11118 11121 11124 10325 10326 10327 10746 10747 10752 10753 11124 10741 10742 10744 10745 10747 10752 10753 11124 10313 10314 10315 10316 10325 10326 10327 10741 10742 10744 10745 10746 10752 10753 11124 10322 10323 10324 10749 10751 10753 10754 11126 10748 10750 10751 10753 10754 10760 10762 11126 10332 10333 10335 10749 10751 10760 10762 11126 10317 10318 10319 10320 10322 10323 10324 10332 10333 10335 10748 10749 10750 10753 10754 10760 10762 11126 10745 10746 10747 10753 10754 11122 11124 11126 10321 10322 10323 10324 10325 10326 10327 10745 10746 10747 10748 10749 10751 10752 10754 11122 11124 11126 10748 10749 10751 10752 10753 11122 11124 11126 10339 10365 10366 10758 10759 10765 10767 11133 10336 10337 10338 10757 10759 10761 10762 11136 10756 10758 10759 10761 10762 11130 11133 11136 10755 10757 10759 10765 10767 11130 11133 11136 10328 10329 10330 10331 10336 10337 10338 10339 10365 10366 10755 10756 10757 10758 10761 10762 10765 10767 11130 11133 11136 10749 10750 10751 10761 10762 11113 11126 11136 10756 10757 10759 10760 10762 11113 11126 11136 10332 10333 10334 10335 10336 10337 10338 10749 10750 10751 10756 10757 10759 10760 10761 11113 11126 11136 10364 10365 10366 10764 10767 10789 10790 11141 10763 10766 10767 10789 10790 11139 11141 11143 10755 10758 10759 10766 10767 11128 11133 11143 10764 10765 10767 11128 11133 11139 11141 11143 10339 10364 10365 10366 10755 10758 10759 10763 10764 10765 10766 10789 10790 11128 11133 11139 11141 11143 10730 10731 10732 10770 10771 11110 11112 11148 10344 10346 10347 10770 10771 10772 10775 11148 10768 10769 10771 10772 10775 11110 11112 11148 10340 10341 10342 10343 10344 10346 10347 10730 10731 10732 10768 10769 10770 10772 10775 11110 11112 11148 10769 10770 10771 10774 10775 11146 11148 11153 10348 10350 10351 10774 10775 10776 10779 11153 10772 10773 10775 10776 10779 11146 11148 11153 10344 10345 10346 10347 10348 10350 10351 10769 10770 10771 10772 10773 10774 10776 10779 11146 11148 11153 10773 10774 10775 10778 10779 11151 11153 11157 10352 10354 10355 10778 10779 10780 10783 11157 10776 10777 10779 10780 10783 11151 11153 11157 10348 10349 10350 10351 10352 10354 10355 10773 10774 10775 10776 10777 10778 10780 10783 11151 11153 11157 10777 10778 10779 10782 10783 11155 11157 11161 10356 10358 10359 10782 10783 10784 10787 11161 10780 10781 10783 10784 10787 11155 11157 11161 10352 10353 10354 10355 10356 10358 10359 10777 10778 10779 10780 10781 10782 10784 10787 11155 11157 11161 10781 10782 10783 10786 10787 11159 11161 11163 10360 10362 10363 10786 10787 10788 10789 11163 10784 10785 10787 10788 10789 11159 11161 11163 10356 10357 10358 10359 10360 10362 10363 10781 10782 10783 10784 10785 10786 10788 10789 11159 11161 11163 10785 10786 10787 10789 10790 11137 11141 11163 10360 10361 10362 10363 10364 10365 10366 10763 10764 10767 10785 10786 10787 10788 10790 11137 11141 11163 10763 10764 10767 10788 10789 11137 11141 11163 10571 10572 10573 10574 10575 10792 10793 10802 10810 10964 10965 11166 10367 10368 10369 10378 10406 10407 10571 10572 10573 10574 10575 10791 10793 10802 10810 10811 10819 10964 10965 11166 10378 10406 10407 10791 10792 10802 10810 10811 10819 10964 10965 11166 10483 10795 10796 10797 10799 10800 10860 11170 10794 10799 10800 10850 10860 11169 11170 11173 10483 10794 10797 10798 10800 10801 10806 10807 10860 11179 10371 10480 10481 10482 10483 10794 10796 10798 10800 10801 10803 10804 10806 10807 10860 11179 10371 10481 10482 10796 10797 10800 10801 10803 10804 10806 10807 11179 10794 10795 10800 10801 10860 11170 11171 11178 11179 11182 10483 10794 10795 10796 10797 10798 10799 10801 10806 10807 10860 11170 11171 11178 11179 11182 10796 10797 10798 10799 10800 10806 10807 11170 11171 11178 11179 11182 10791 10792 10793 10809 10810 10964 10965 11166 11167 11176 11177 11185 10371 10481 10482 10797 10798 10804 10805 10807 10808 10815 10816 11188 10370 10371 10375 10376 10377 10478 10479 10481 10482 10797 10798 10803 10805 10807 10808 10812 10813 10815 10816 11188 10375 10376 10377 10803 10804 10807 10808 10812 10813 10815 10816 11188 10796 10797 10798 10800 10801 10807 10808 11179 11180 11187 11188 11191 10371 10481 10482 10796 10797 10798 10800 10801 10803 10804 10805 10806 10808 10815 10816 11179 11180 11187 11188 11191 10803 10804 10805 10806 10807 10815 10816 11179 11180 11187 11188 11191 10802 10810 10811 10818 10819 11166 11167 11176 11177 11185 11186 11194 10378 10406 10407 10791 10792 10793 10802 10809 10811 10818 10819 10964 10965 11166 11167 11176 11177 11185 11186 11194 10378 10406 10407 10792 10793 10809 10810 10818 10819 11185 11186 11194 10375 10376 10377 10804 10805 10813 10814 10816 10817 10826 10827 11198 10372 10373 10374 10375 10376 10377 10382 10383 10384 10804 10805 10812 10814 10816 10817 10823 10824 10826 10827 11198 10382 10383 10384 10812 10813 10816 10817 10823 10824 10826 10827 11198 10803 10804 10805 10807 10808 10816 10817 11188 11189 11198 11199 11201 10375 10376 10377 10803 10804 10805 10807 10808 10812 10813 10814 10815 10817 10826 10827 11188 11189 11198 11199 11201 10812 10813 10814 10815 10816 10826 10827 11188 11189 11198 11199 11201 10809 10810 10811 10819 10820 10839 10840 11185 11186 11194 11195 11204 10378 10406 10407 10408 10412 10413 10792 10793 10809 10810 10811 10818 10820 10839 10840 11185 11186 11194 11195 11204 10406 10407 10408 10412 10413 10818 10819 10839 10840 11194 11195 11204 10392 10393 10394 10822 10823 10831 10832 11207 10821 10823 10824 10825 10826 10831 10832 11207 10379 10380 10381 10382 10383 10384 10392 10393 10394 10813 10814 10821 10822 10824 10825 10826 10831 10832 11207 10382 10383 10384 10813 10814 10822 10823 10825 10826 11207 10822 10823 10824 10826 10827 11196 11198 11207 10382 10383 10384 10812 10813 10814 10816 10817 10822 10823 10824 10825 10827 11196 11198 11207 10812 10813 10814 10816 10817 10825 10826 11196 11198 11207 10395 10396 10397 10401 10402 10829 10830 10835 10836 10842 10843 11210 10385 10386 10387 10395 10396 10397 10401 10402 10409 10410 10411 10415 10416 10828 10830 10835 10836 10842 10843 11210 10409 10410 10411 10415 10416 10828 10829 10835 10836 10842 10843 11210 10821 10822 10823 10832 10833 10837 10838 11207 11208 11213 10388 10389 10390 10391 10392 10393 10394 10398 10399 10400 10404 10405 10821 10822 10823 10831 10833 10837 10838 11207 11208 11213 10398 10399 10400 10404 10405 10831 10832 10837 10838 11207 11208 11213 10401 10402 10403 10404 10405 10835 10836 10837 10838 11209 11210 11213 10395 10396 10397 10401 10402 10403 10404 10405 10828 10829 10830 10834 10836 10837 10838 10842 10843 11209 11210 11213 10828 10829 10830 10834 10835 10837 10838 10842 10843 11209 11210 11213 10831 10832 10833 10834 10835 10836 10838 11207 11208 11209 11210 11213 10398 10399 10400 10401 10402 10403 10404 10405 10831 10832 10833 10834 10835 10836 10837 11207 11208 11209 11210 11213 10818 10819 10820 10840 10841 10845 10846 11194 11195 11204 11205 11215 10406 10407 10408 10412 10413 10414 10418 10419 10818 10819 10820 10839 10841 10845 10846 11194 11195 11204 11205 11215 10412 10413 10414 10418 10419 10839 10840 10845 10846 11204 11205 11215 10828 10829 10830 10835 10836 10843 10844 10848 10849 11210 11211 11217 10409 10410 10411 10415 10416 10417 10421 10422 10828 10829 10830 10835 10836 10842 10844 10848 10849 11210 11211 11217 10415 10416 10417 10421 10422 10842 10843 10848 10849 11210 11211 11217 10839 10840 10841 10846 10847 10848 10849 11204 11205 11215 11216 11217 10412 10413 10414 10418 10419 10420 10421 10422 10839 10840 10841 10845 10847 10848 10849 11204 11205 11215 11216 11217 10418 10419 10420 10421 10422 10845 10846 10848 10849 11215 11216 11217 10415 10416 10417 10418 10419 10420 10421 10422 10842 10843 10844 10845 10846 10847 10849 11210 11211 11215 11216 11217 10842 10843 10844 10845 10846 10847 10848 11210 11211 11215 11216 11217 10795 10851 10860 11169 11170 11172 11173 11220 10850 10852 10860 11172 11173 11219 11220 11223 10851 10853 10860 11219 11220 11222 11223 11226 10852 10854 10860 11222 11223 11225 11226 11229 10853 10855 10860 11225 11226 11228 11229 11232 10854 10856 10860 11228 11229 11231 11232 11235 10855 10857 10860 11231 11232 11234 11235 11238 10856 10858 10860 11234 11235 11237 11238 11241 10857 10859 10860 11237 11238 11240 11241 11244 10858 10860 11240 11241 11244 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10794 10795 10796 10797 10799 10800 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 11169 11170 11172 11173 11219 11220 11222 11223 11225 11226 11228 11229 11231 11232 11234 11235 11237 11238 11240 11241 11244 10531 10864 10865 10901 10908 10909 10912 11247 10489 10490 10491 10863 10865 10867 10868 11250 10862 10864 10865 10867 10868 11247 11248 11250 10861 10863 10865 10901 10909 11247 11248 11250 10484 10485 10486 10487 10489 10490 10491 10531 10532 10533 10536 10861 10862 10863 10864 10867 10868 10901 10908 10909 10912 11247 11248 11250 10492 10493 10494 10496 10497 10867 10868 10870 10871 11249 11250 11253 10488 10489 10490 10491 10492 10493 10494 10496 10497 10862 10863 10865 10866 10868 10870 10871 11249 11250 11253 10862 10863 10865 10866 10867 10870 10871 11249 11250 11253 10495 10496 10497 10502 10503 10870 10871 10873 10874 11252 11253 11256 10492 10493 10494 10495 10496 10497 10502 10503 10866 10867 10868 10869 10871 10873 10874 11249 11250 11252 11253 11256 10866 10867 10868 10869 10870 10873 10874 11249 11250 11252 11253 11256 10501 10502 10503 10508 10509 10873 10874 10879 10880 11255 11256 11262 10495 10496 10497 10501 10502 10503 10508 10509 10869 10870 10871 10872 10874 10879 10880 11252 11253 11255 11256 11262 10869 10870 10871 10872 10873 10879 10880 11252 11253 11255 11256 11262 10521 10522 10523 10525 10526 10876 10877 10881 10882 10893 10894 11265 10498 10499 10500 10504 10505 10506 10510 10511 10521 10522 10523 10525 10526 10875 10877 10881 10882 10893 10894 11265 10504 10505 10506 10510 10511 10875 10876 10881 10882 10893 10894 11265 10507 10508 10509 10514 10515 10879 10880 10885 10886 11261 11262 11268 10501 10502 10503 10507 10508 10509 10514 10515 10872 10873 10874 10878 10880 10885 10886 11255 11256 11261 11262 11268 10872 10873 10874 10878 10879 10885 10886 11255 11256 11261 11262 11268 10875 10876 10877 10882 10883 10887 10888 10893 10894 11265 11266 11271 10504 10505 10506 10510 10511 10512 10516 10517 10875 10876 10877 10881 10883 10887 10888 10893 10894 11265 11266 11271 10510 10511 10512 10516 10517 10881 10882 10887 10888 11265 11266 11271 10513 10514 10515 10519 10520 10885 10886 10890 10891 11267 11268 11273 10507 10508 10509 10513 10514 10515 10519 10520 10878 10879 10880 10884 10886 10890 10891 11261 11262 11267 11268 11273 10878 10879 10880 10884 10885 10890 10891 11261 11262 11267 11268 11273 10881 10882 10883 10888 10889 10890 10891 11265 11266 11271 11272 11273 10510 10511 10512 10516 10517 10518 10519 10520 10881 10882 10883 10887 10889 10890 10891 11265 11266 11271 11272 11273 10516 10517 10518 10519 10520 10887 10888 10890 10891 11271 11272 11273 10513 10514 10515 10516 10517 10518 10519 10520 10884 10885 10886 10887 10888 10889 10891 11267 11268 11271 11272 11273 10884 10885 10886 10887 10888 10889 10890 11267 11268 11271 11272 11273 10524 10525 10526 10528 10529 10893 10894 10897 10898 11264 11265 11279 10521 10522 10523 10524 10525 10526 10528 10529 10875 10876 10877 10881 10882 10892 10894 10897 10898 11264 11265 11279 10875 10876 10877 10881 10882 10892 10893 10897 10898 11264 11265 11279 10561 10562 10563 10899 10900 10940 10944 10945 10950 11275 11276 11282 10527 10528 10529 10561 10563 10897 10898 10899 10900 11278 11279 11282 10524 10525 10526 10527 10528 10529 10561 10563 10892 10893 10894 10896 10898 10899 10900 11264 11265 11278 11279 11282 10892 10893 10894 10896 10897 10899 10900 11264 11265 11278 11279 11282 10895 10896 10897 10898 10900 10940 10945 11275 11276 11278 11279 11282 10527 10528 10529 10561 10562 10563 10895 10896 10897 10898 10899 10940 10944 10945 10950 11275 11276 11278 11279 11282 10861 10864 10865 10906 10909 11245 11247 11285 10577 10578 10579 10904 10905 10966 10970 11292 10558 10559 10904 10905 10923 10930 10933 11292 10530 10540 10548 10551 10558 10559 10577 10578 10579 10902 10903 10905 10923 10930 10933 10966 10970 11292 10902 10903 10904 10930 10933 10966 10970 11292 10901 10907 10909 11245 11247 11283 11285 11295 10906 10909 10910 11283 11285 11294 11295 11299 10531 10861 10865 10909 10910 10912 10913 11299 10531 10861 10864 10865 10901 10906 10907 10908 10910 10912 10913 11245 11247 11283 11285 11294 11295 11299 10907 10908 10909 10912 10913 11294 11295 11299 10533 10534 10536 10912 10913 10914 10916 11299 10531 10532 10533 10534 10536 10861 10865 10908 10909 10910 10911 10913 10914 10916 11299 10908 10909 10910 10911 10912 10914 10916 11299 10911 10912 10913 10915 10916 10925 10926 11299 10541 10542 10544 10914 10916 10925 10926 11299 10533 10534 10535 10536 10537 10538 10539 10541 10542 10544 10911 10912 10913 10914 10915 10925 10926 11299 10560 10918 10920 10929 10931 10933 10937 11299 10917 10919 10920 10921 10923 10929 10937 11299 10559 10560 10918 10920 10921 10923 10933 11299 10559 10560 10917 10918 10919 10921 10923 10929 10931 10933 10937 11299 10918 10919 10920 10922 10923 10924 10928 11299 10548 10549 10551 10921 10923 10924 10928 11299 10540 10548 10549 10551 10558 10559 10560 10903 10904 10918 10919 10920 10921 10922 10924 10928 10933 11299 10921 10922 10923 10925 10926 10927 10928 11299 10914 10915 10916 10924 10926 10927 10928 11299 10541 10542 10543 10544 10545 10546 10547 10555 10556 10557 10914 10915 10916 10924 10925 10927 10928 11299 10555 10556 10557 10924 10925 10926 10928 11299 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10921 10922 10923 10924 10925 10926 10927 11299 10917 10918 10920 10936 10937 11297 11299 11303 10903 10904 10905 10933 10934 11291 11292 11308 10560 10917 10920 10932 10933 10935 10937 11312 10931 10933 10934 10935 10937 11307 11308 11312 10558 10559 10560 10903 10904 10905 10917 10919 10920 10923 10930 10931 10932 10934 10935 10937 11291 11292 11307 11308 11312 10930 10932 10933 11291 11292 11307 11308 11312 10931 10932 10933 10937 10938 11311 11312 11315 10929 10937 10938 11297 11299 11301 11303 11315 10560 10917 10918 10920 10929 10931 10932 10933 10935 10936 10938 11297 11299 11301 11303 11311 11312 11315 10935 10936 10937 11301 11303 11311 11312 11315 10941 11259 11276 11322 11323 11325 11326 11328 10895 10899 10900 10941 10942 10945 11275 11276 11282 11328 10939 10940 10942 10945 11276 11325 11326 11328 10940 10941 10943 10945 11276 11328 11329 11331 10942 10945 10946 11328 11329 11331 11332 11334 10561 10562 10563 10895 10900 10945 10946 10947 10950 11334 10561 10562 10563 10895 10899 10900 10940 10941 10942 10943 10944 10946 10947 10950 11275 11276 11282 11328 11329 11331 11332 11334 10943 10944 10945 10947 10950 11331 11332 11334 10944 10945 10946 10948 10950 11334 11335 11337 10947 10950 10951 11334 11335 11337 11338 11340 10562 10563 10564 10566 10567 10950 10951 10952 10955 11340 10561 10562 10563 10564 10566 10567 10895 10900 10944 10945 10946 10947 10948 10949 10951 10952 10955 11334 11335 11337 11338 11340 10948 10949 10950 10952 10955 11337 11338 11340 10949 10950 10951 10953 10955 11340 11341 11343 10952 10955 10956 11340 11341 11343 11344 11346 10565 10566 10567 10568 10569 10955 10956 10958 10959 11346 10562 10563 10564 10565 10566 10567 10568 10569 10949 10950 10951 10952 10953 10954 10956 10958 10959 11340 11341 11343 11344 11346 10953 10954 10955 10958 10959 11343 11344 11346 10958 10959 11346 11347 11348 10565 10566 10567 10568 10569 10954 10955 10956 10957 10959 11346 11347 11348 10954 10955 10956 10957 10958 11346 11347 11348 10644 10645 10646 10961 10962 10995 10996 11023 11024 11352 11353 11354 10960 10962 10963 10964 10965 11023 11024 11165 11166 11352 11353 11354 10570 10571 10572 10644 10645 10646 10960 10961 10963 10964 10965 10995 10996 11023 11024 11165 11166 11352 11353 11354 10570 10571 10572 10645 10646 10961 10962 10964 10965 11165 11166 11354 10570 10571 10572 10573 10574 10575 10645 10646 10791 10792 10793 10802 10810 10961 10962 10963 10965 11165 11166 11354 10791 10792 10793 10802 10810 10961 10962 10963 10964 11165 11166 11354 10902 10904 10905 10969 10970 11287 11292 11359 10660 10661 10662 10968 10970 11038 11039 11364 10967 10969 10970 11038 11039 11356 11359 11364 10966 10968 10970 11287 11292 11356 11359 11364 10576 10577 10578 10579 10660 10661 10662 10902 10904 10905 10966 10967 10968 10969 11038 11039 11287 11292 11356 11359 11364 10734 10735 10736 10972 10974 11116 11117 11368 10971 10973 10974 10975 10978 11116 11117 11368 10581 10582 10584 10972 10974 10975 10978 11368 10580 10581 10582 10584 10734 10735 10736 10971 10972 10973 10975 10978 11116 11117 11368 10972 10973 10974 10976 10978 11367 11368 11372 10975 10977 10978 10979 10982 11367 11368 11372 10585 10586 10588 10976 10978 10979 10982 11372 10581 10582 10583 10584 10585 10586 10588 10972 10973 10974 10975 10976 10977 10979 10982 11367 11368 11372 10976 10977 10978 10980 10982 11371 11372 11376 10979 10981 10982 10983 10985 11371 11372 11376 10589 10590 10592 10980 10982 10983 10985 11376 10585 10586 10587 10588 10589 10590 10592 10976 10977 10978 10979 10980 10981 10983 10985 11371 11372 11376 10980 10981 10982 10984 10985 11011 11014 11376 10632 10633 10636 10983 10985 11011 11014 11376 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10632 10633 10636 10980 10981 10982 10983 10984 11011 11014 11376 10610 10613 10614 10988 10989 10999 11000 11384 10606 10607 10608 10988 10989 10990 10992 11384 10986 10987 10989 10990 10992 10999 11000 11384 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10610 10613 10614 10986 10987 10988 10990 10992 10999 11000 11384 10987 10988 10989 10991 10992 11382 11384 11388 10990 10992 10993 10994 10995 11382 11384 11388 11389 11390 10606 10607 10608 10609 10644 10645 10987 10988 10989 10990 10991 10993 10994 10995 11382 11384 11388 11389 11390 10607 10608 10609 10644 10645 10991 10992 10994 10995 11388 11389 11390 10991 10992 10993 10995 10996 11022 11023 11379 11380 11388 11389 11390 10607 10608 10609 10644 10645 10646 10960 10962 10991 10992 10993 10994 10996 11022 11023 11379 11380 11388 11389 11390 10644 10645 10646 10960 10962 10994 10995 11022 11023 11379 11380 11390 10612 10613 10614 10998 10999 11001 11004 11394 10997 10999 11000 11001 11004 11381 11384 11394 10610 10612 10613 10614 10986 10988 10989 10997 10998 11000 11001 11004 11381 11384 11394 10986 10988 10989 10998 10999 11381 11384 11394 10997 10998 10999 11002 11004 11393 11394 11396 11001 11003 11004 11005 11007 11393 11394 11396 10616 10617 10618 11002 11004 11005 11007 11396 10611 10612 10613 10614 10616 10617 10618 10997 10998 10999 11001 11002 11003 11005 11007 11393 11394 11396 11002 11003 11004 11006 11007 11008 11009 11396 10625 10627 10628 11005 11007 11008 11009 11396 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10627 10628 11002 11003 11004 11005 11006 11008 11009 11396 11005 11006 11007 11009 11010 11019 11020 11396 10625 10626 10627 10628 10629 10630 10631 10641 10642 10643 11005 11006 11007 11008 11010 11019 11020 11396 10641 10642 10643 11008 11009 11019 11020 11396 10983 10984 10985 11012 11014 11375 11376 11401 11011 11013 11014 11015 11018 11375 11376 11401 10633 10634 10636 11012 11014 11015 11018 11401 10632 10633 10634 10636 10983 10984 10985 11011 11012 11013 11015 11018 11375 11376 11401 11012 11013 11014 11016 11018 11400 11401 11403 11015 11017 11018 11020 11021 11400 11401 11403 10637 10638 10640 11016 11018 11020 11021 11403 10633 10634 10635 10636 10637 10638 10640 11012 11013 11014 11015 11016 11017 11020 11021 11400 11401 11403 11008 11009 11010 11020 11021 11396 11397 11403 10637 10638 10639 10640 10641 10642 10643 11008 11009 11010 11016 11017 11018 11019 11021 11396 11397 11403 11016 11017 11018 11019 11020 11396 11397 11403 10994 10995 10996 11023 11024 11350 11352 11377 11379 11380 11390 11406 10644 10645 10646 10960 10961 10962 10994 10995 10996 11022 11024 11350 11352 11353 11354 11377 11379 11380 11390 11406 10960 10961 10962 11022 11023 11350 11352 11353 11354 11377 11380 11406 10714 10715 10716 11026 11028 11096 11097 11411 11025 11027 11028 11029 11032 11096 11097 11411 10648 10649 10651 11026 11028 11029 11032 11411 10647 10648 10649 10651 10714 10715 10716 11025 11026 11027 11029 11032 11096 11097 11411 11026 11027 11028 11030 11032 11410 11411 11413 11029 11031 11032 11034 11035 11410 11411 11413 10655 10656 10658 11030 11032 11034 11035 11413 10648 10649 10650 10651 10652 10653 10654 10655 10656 10658 11026 11027 11028 11029 11030 11031 11034 11035 11410 11411 11413 10663 11034 11035 11036 11039 11041 11043 11413 10655 10656 10657 10658 10659 10660 10662 10663 11030 11031 11032 11033 11035 11036 11039 11041 11043 11413 11030 11031 11032 11033 11034 11041 11043 11413 10663 11033 11034 11037 11039 11040 11043 11418 11036 11038 11039 11040 11043 11361 11364 11418 10967 10968 10970 11037 11039 11361 11364 11418 10659 10660 10661 10662 10663 10967 10968 10970 11033 11034 11036 11037 11038 11040 11043 11361 11364 11418 11036 11037 11039 11042 11043 11415 11418 11422 11033 11034 11035 11043 11044 11412 11413 11426 11040 11043 11044 11415 11418 11420 11422 11426 10663 11033 11034 11035 11036 11037 11039 11040 11041 11042 11044 11412 11413 11415 11418 11420 11422 11426 11041 11042 11043 11412 11413 11420 11422 11426 10717 10718 10719 11046 11049 11098 11100 11432 11045 11047 11049 11098 11100 11431 11432 11436 11046 11048 11049 11050 11052 11431 11432 11436 10665 10666 10668 11047 11049 11050 11052 11436 10664 10665 10666 10668 10717 10718 10719 11045 11046 11047 11048 11050 11052 11098 11100 11431 11432 11436 11047 11048 11049 11051 11052 11053 11057 11436 10670 11050 11052 11053 11056 11057 11061 11436 10665 10666 10667 10668 10669 10670 10672 10673 11047 11048 11049 11050 11051 11053 11056 11057 11061 11436 11050 11051 11052 11054 11057 11435 11436 11440 11053 11055 11057 11435 11436 11439 11440 11444 11054 11056 11057 11058 11061 11439 11440 11444 10670 11051 11052 11055 11057 11058 11061 11444 10670 11050 11051 11052 11053 11054 11055 11056 11058 11061 11435 11436 11439 11440 11444 11055 11056 11057 11059 11061 11443 11444 11447 11058 11060 11061 11066 11067 11443 11444 11447 10675 10676 10678 11059 11061 11066 11067 11447 10669 10670 10671 10672 10673 10675 10676 10678 11051 11052 11055 11056 11057 11058 11059 11060 11066 11067 11443 11444 11447 10682 10684 10685 11063 11064 11068 11071 11447 11062 11064 11065 11066 11067 11068 11071 11447 10674 10679 10680 10681 10682 10684 10685 11062 11063 11065 11066 11067 11068 11071 11447 10679 10680 10681 11063 11064 11066 11067 11447 10675 10676 10677 10678 10679 10680 10681 11059 11060 11061 11063 11064 11065 11067 11447 11059 11060 11061 11063 11064 11065 11066 11447 11062 11063 11064 11069 11071 11446 11447 11451 11068 11070 11071 11072 11075 11446 11447 11451 10686 10687 10690 11069 11071 11072 11075 11451 10682 10683 10684 10685 10686 10687 10690 11062 11063 11064 11068 11069 11070 11072 11075 11446 11447 11451 11069 11070 11071 11073 11075 11450 11451 11455 11072 11074 11075 11076 11078 11450 11451 11455 10687 10688 10690 11073 11075 11076 11078 11455 10686 10687 10688 10690 11069 11070 11071 11072 11073 11074 11076 11078 11450 11451 11455 11073 11074 11075 11077 11078 11079 11082 11455 10694 10695 10698 11076 11078 11079 11082 11455 10687 10688 10689 10690 10691 10692 10693 10694 10695 10698 11073 11074 11075 11076 11077 11079 11082 11455 11076 11077 11078 11080 11082 11454 11455 11459 11079 11081 11082 11083 11085 11454 11455 11459 10695 10696 10698 11080 11082 11083 11085 11459 10694 10695 10696 10698 11076 11077 11078 11079 11080 11081 11083 11085 11454 11455 11459 11080 11081 11082 11084 11085 11086 11090 11459 10702 10703 10706 11083 11085 11086 11090 11459 10695 10696 10697 10698 10699 10700 10701 10702 10703 10706 11080 11081 11082 11083 11084 11086 11090 11459 11083 11084 11085 11087 11090 11458 11459 11463 11086 11088 11090 11458 11459 11462 11463 11466 11087 11089 11090 11091 11093 11462 11463 11466 10703 10704 10706 11088 11090 11091 11093 11466 10702 10703 10704 10706 11083 11084 11085 11086 11087 11088 11089 11091 11093 11458 11459 11462 11463 11466 11088 11089 11090 11092 11093 11094 11097 11466 10710 10711 10713 11091 11093 11094 11097 11466 10703 10704 10705 10706 10707 10708 10709 10710 10711 10713 11088 11089 11090 11091 11092 11094 11097 11466 11091 11092 11093 11095 11097 11465 11466 11468 11094 11096 11097 11408 11411 11465 11466 11468 11025 11026 11028 11095 11097 11408 11411 11468 10710 10711 10712 10713 10714 10715 10716 11025 11026 11028 11091 11092 11093 11094 11095 11096 11408 11411 11465 11466 11468 11045 11046 11049 11099 11100 11428 11432 11473 11098 11100 11101 11102 11103 11428 11432 11473 10717 10718 10719 10720 10721 10722 10723 11045 11046 11049 11098 11099 11101 11102 11103 11428 11432 11473 10721 10722 10723 11099 11100 11102 11103 11473 11099 11100 11101 11103 11104 11105 11108 11473 10721 10722 10723 10724 10725 10726 10727 11099 11100 11101 11102 11104 11105 11108 11473 10725 10726 10727 11102 11103 11105 11108 11473 11102 11103 11104 11107 11108 11470 11473 11476 10729 10731 10732 11107 11108 11109 11112 11476 11105 11106 11108 11109 11112 11470 11473 11476 10725 10726 10727 10728 10729 10731 10732 11102 11103 11104 11105 11106 11107 11109 11112 11470 11473 11476 11106 11107 11108 11111 11112 11474 11476 11478 10768 10770 10771 11111 11112 11145 11148 11478 11109 11110 11112 11145 11148 11474 11476 11478 10729 10730 10731 10732 10768 10770 10771 11106 11107 11108 11109 11110 11111 11145 11148 11474 11476 11478 10760 10761 10762 11126 11127 11134 11136 11482 10738 10739 10740 11115 11117 11120 11121 11487 11114 11116 11117 11120 11121 11365 11368 11487 10971 10972 10974 11115 11117 11365 11368 11487 10733 10734 10735 10736 10738 10739 10740 10971 10972 10974 11114 11115 11116 11120 11121 11365 11368 11487 10742 10743 10744 11119 11121 11123 11124 11490 11118 11120 11121 11123 11124 11484 11487 11490 11114 11115 11117 11119 11121 11484 11487 11490 10737 10738 10739 10740 10742 10743 10744 11114 11115 11117 11118 11119 11120 11123 11124 11484 11487 11490 10752 10753 10754 11123 11124 11125 11126 11490 11118 11119 11121 11122 11124 11125 11126 11490 10741 10742 10743 10744 10745 10746 10747 10752 10753 10754 11118 11119 11121 11122 11123 11125 11126 11490 11122 11123 11124 11126 11127 11481 11482 11490 10748 10749 10750 10751 10752 10753 10754 10760 10761 10762 11113 11122 11123 11124 11125 11127 11134 11136 11481 11482 11490 11113 11125 11126 11134 11136 11481 11482 11490 10765 10766 10767 11129 11132 11133 11143 11500 11128 11132 11133 11143 11144 11493 11496 11500 10757 10758 10759 11131 11133 11135 11136 11503 11130 11132 11133 11135 11136 11497 11500 11503 11128 11129 11131 11133 11143 11497 11500 11503 10755 10757 10758 10759 10765 10766 10767 11128 11129 11130 11131 11132 11135 11136 11143 11497 11500 11503 11113 11126 11127 11135 11136 11480 11482 11503 11130 11131 11133 11134 11136 11480 11482 11503 10756 10757 10758 10759 10760 10761 10762 11113 11126 11127 11130 11131 11133 11134 11135 11480 11482 11503 10788 10789 10790 11138 11141 11163 11164 11508 11137 11140 11141 11163 11164 11506 11508 11510 10764 10766 10767 11140 11141 11142 11143 11510 11138 11139 11141 11142 11143 11506 11508 11510 10763 10764 10766 10767 10788 10789 10790 11137 11138 11139 11140 11142 11143 11163 11164 11506 11508 11510 11139 11140 11141 11143 11144 11491 11496 11510 10764 10765 10766 10767 11128 11129 11132 11133 11139 11140 11141 11142 11144 11491 11493 11496 11500 11510 11129 11142 11143 11491 11493 11496 11500 11510 11110 11111 11112 11147 11148 11149 11478 11515 10772 10774 10775 11147 11148 11150 11153 11515 11145 11146 11148 11149 11150 11153 11478 11515 10768 10769 10770 10771 10772 10774 10775 11110 11111 11112 11145 11146 11147 11149 11150 11153 11478 11515 11145 11147 11148 11478 11479 11512 11515 11520 11146 11147 11148 11152 11153 11513 11515 11524 10776 10778 10779 11152 11153 11154 11157 11524 11150 11151 11153 11154 11157 11513 11515 11524 10772 10773 10774 10775 10776 10778 10779 11146 11147 11148 11150 11151 11152 11154 11157 11513 11515 11524 11151 11152 11153 11156 11157 11522 11524 11528 10780 10782 10783 11156 11157 11158 11161 11528 11154 11155 11157 11158 11161 11522 11524 11528 10776 10777 10778 10779 10780 10782 10783 11151 11152 11153 11154 11155 11156 11158 11161 11522 11524 11528 11155 11156 11157 11160 11161 11526 11528 11530 10784 10786 10787 11160 11161 11162 11163 11530 11158 11159 11161 11162 11163 11526 11528 11530 10780 10781 10782 10783 10784 10786 10787 11155 11156 11157 11158 11159 11160 11162 11163 11526 11528 11530 11159 11160 11161 11163 11164 11504 11508 11530 10784 10785 10786 10787 10788 10789 10790 11137 11138 11141 11159 11160 11161 11162 11164 11504 11508 11530 11137 11138 11141 11162 11163 11504 11508 11530 10961 10962 10963 10964 10965 11166 11167 11168 11176 11354 11355 11533 10791 10792 10793 10802 10809 10810 10961 10962 10963 10964 10965 11165 11167 11168 11176 11177 11185 11354 11355 11533 10802 10809 10810 11165 11166 11168 11176 11177 11185 11354 11355 11533 11165 11166 11167 11175 11176 11354 11355 11533 11534 11537 11538 11540 10795 10850 10860 11170 11171 11173 11174 11181 11182 11543 10794 10795 10799 10800 10801 10850 10860 11169 11171 11173 11174 11178 11179 11181 11182 11543 10799 10800 10801 11169 11170 11173 11174 11178 11179 11181 11182 11543 10850 10851 10860 11173 11174 11220 11221 11542 11543 11546 10795 10850 10851 10860 11169 11170 11171 11172 11174 11181 11182 11220 11221 11542 11543 11546 11169 11170 11171 11172 11173 11181 11182 11220 11221 11542 11543 11546 11168 11176 11177 11184 11185 11533 11534 11537 11538 11540 11541 11549 10802 10809 10810 11165 11166 11167 11168 11175 11177 11184 11185 11354 11355 11533 11534 11537 11538 11540 11541 11549 10802 10809 10810 11166 11167 11175 11176 11184 11185 11540 11541 11549 10799 10800 10801 11170 11171 11179 11180 11182 11183 11190 11191 11552 10796 10797 10798 10799 10800 10801 10806 10807 10808 11170 11171 11178 11180 11182 11183 11187 11188 11190 11191 11552 10806 10807 10808 11178 11179 11182 11183 11187 11188 11190 11191 11552 11169 11170 11171 11173 11174 11182 11183 11543 11544 11551 11552 11555 10799 10800 10801 11169 11170 11171 11173 11174 11178 11179 11180 11181 11183 11190 11191 11543 11544 11551 11552 11555 11178 11179 11180 11181 11182 11190 11191 11543 11544 11551 11552 11555 11175 11176 11177 11185 11186 11193 11194 11540 11541 11549 11550 11558 10802 10809 10810 10811 10818 10819 11166 11167 11175 11176 11177 11184 11186 11193 11194 11540 11541 11549 11550 11558 10809 10810 10811 10818 10819 11184 11185 11193 11194 11549 11550 11558 10806 10807 10808 11179 11180 11188 11189 11191 11192 11201 11202 11562 10803 10804 10805 10806 10807 10808 10815 10816 10817 11179 11180 11187 11189 11191 11192 11198 11199 11201 11202 11562 10815 10816 10817 11187 11188 11191 11192 11198 11199 11201 11202 11562 11178 11179 11180 11182 11183 11191 11192 11552 11553 11562 11563 11565 10806 10807 10808 11178 11179 11180 11182 11183 11187 11188 11189 11190 11192 11201 11202 11552 11553 11562 11563 11565 11187 11188 11189 11190 11191 11201 11202 11552 11553 11562 11563 11565 11184 11185 11186 11194 11195 11203 11204 11549 11550 11558 11559 11568 10809 10810 10811 10818 10819 10820 10839 10840 11184 11185 11186 11193 11195 11203 11204 11549 11550 11558 11559 11568 10818 10819 10820 10839 10840 11193 11194 11203 11204 11558 11559 11568 10825 10826 10827 11197 11198 11206 11207 11571 11196 11198 11199 11200 11201 11206 11207 11571 10812 10813 10814 10815 10816 10817 10825 10826 10827 11188 11189 11196 11197 11199 11200 11201 11206 11207 11571 10815 10816 10817 11188 11189 11197 11198 11200 11201 11571 11197 11198 11199 11201 11202 11560 11562 11571 10815 10816 10817 11187 11188 11189 11191 11192 11197 11198 11199 11200 11202 11560 11562 11571 11187 11188 11189 11191 11192 11200 11201 11560 11562 11571 11193 11194 11195 11204 11205 11214 11215 11558 11559 11568 11569 11574 10818 10819 10820 10839 10840 10841 10845 10846 11193 11194 11195 11203 11205 11214 11215 11558 11559 11568 11569 11574 10839 10840 10841 10845 10846 11203 11204 11214 11215 11568 11569 11574 11196 11197 11198 11207 11208 11212 11213 11571 11572 11576 10821 10822 10823 10824 10825 10826 10827 10831 10832 10833 10837 10838 11196 11197 11198 11206 11208 11212 11213 11571 11572 11576 10831 10832 10833 10837 10838 11206 11207 11212 11213 11571 11572 11576 10834 10835 10836 10837 10838 11210 11211 11212 11213 11217 11218 11576 10828 10829 10830 10834 10835 10836 10837 10838 10842 10843 10844 10848 10849 11209 11211 11212 11213 11217 11218 11576 10842 10843 10844 10848 10849 11209 11210 11212 11213 11217 11218 11576 11206 11207 11208 11209 11210 11211 11213 11217 11218 11571 11572 11576 10831 10832 10833 10834 10835 10836 10837 10838 11206 11207 11208 11209 11210 11211 11212 11217 11218 11571 11572 11576 11203 11204 11205 11215 11216 11217 11218 11568 11569 11574 11575 11576 10839 10840 10841 10845 10846 10847 10848 10849 11203 11204 11205 11214 11216 11217 11218 11568 11569 11574 11575 11576 10845 10846 10847 10848 10849 11214 11215 11217 11218 11574 11575 11576 10842 10843 10844 10845 10846 10847 10848 10849 11209 11210 11211 11212 11213 11214 11215 11216 11218 11574 11575 11576 11209 11210 11211 11212 11213 11214 11215 11216 11217 11574 11575 11576 10851 10852 10860 11220 11221 11223 11224 11545 11546 11579 10850 10851 10852 10860 11172 11173 11174 11219 11221 11223 11224 11542 11543 11545 11546 11579 11172 11173 11174 11219 11220 11223 11224 11542 11543 11545 11546 11579 10852 10853 10860 11223 11224 11226 11227 11578 11579 11582 10851 10852 10853 10860 11219 11220 11221 11222 11224 11226 11227 11545 11546 11578 11579 11582 11219 11220 11221 11222 11223 11226 11227 11545 11546 11578 11579 11582 10853 10854 10860 11226 11227 11229 11230 11581 11582 11585 10852 10853 10854 10860 11222 11223 11224 11225 11227 11229 11230 11578 11579 11581 11582 11585 11222 11223 11224 11225 11226 11229 11230 11578 11579 11581 11582 11585 10854 10855 10860 11229 11230 11232 11233 11584 11585 11588 10853 10854 10855 10860 11225 11226 11227 11228 11230 11232 11233 11581 11582 11584 11585 11588 11225 11226 11227 11228 11229 11232 11233 11581 11582 11584 11585 11588 10855 10856 10860 11232 11233 11235 11236 11587 11588 11591 10854 10855 10856 10860 11228 11229 11230 11231 11233 11235 11236 11584 11585 11587 11588 11591 11228 11229 11230 11231 11232 11235 11236 11584 11585 11587 11588 11591 10856 10857 10860 11235 11236 11238 11239 11590 11591 11594 10855 10856 10857 10860 11231 11232 11233 11234 11236 11238 11239 11587 11588 11590 11591 11594 11231 11232 11233 11234 11235 11238 11239 11587 11588 11590 11591 11594 10857 10858 10860 11238 11239 11241 11242 11593 11594 11597 10856 10857 10858 10860 11234 11235 11236 11237 11239 11241 11242 11590 11591 11593 11594 11597 11234 11235 11236 11237 11238 11241 11242 11590 11591 11593 11594 11597 10858 10859 10860 11241 11242 11243 11244 11596 11597 11600 10857 10858 10859 10860 11237 11238 11239 11240 11242 11243 11244 11593 11594 11596 11597 11600 11237 11238 11239 11240 11241 11243 11244 11593 11594 11596 11597 11600 11240 11241 11242 11244 11596 11597 11600 10858 10859 10860 11240 11241 11242 11243 11596 11597 11600 10901 10906 10909 11246 11247 11285 11286 11602 11245 11247 11248 11250 11251 11285 11286 11602 10861 10863 10864 10865 10901 10906 10909 11245 11246 11248 11250 11251 11285 11286 11602 10863 10864 10865 11246 11247 11250 11251 11602 10866 10867 10868 10870 10871 11250 11251 11253 11254 11601 11602 11605 10862 10863 10864 10865 10866 10867 10868 10870 10871 11246 11247 11248 11249 11251 11253 11254 11601 11602 11605 11246 11247 11248 11249 11250 11253 11254 11601 11602 11605 10869 10870 10871 10873 10874 11253 11254 11256 11257 11604 11605 11610 10866 10867 10868 10869 10870 10871 10873 10874 11249 11250 11251 11252 11254 11256 11257 11601 11602 11604 11605 11610 11249 11250 11251 11252 11253 11256 11257 11601 11602 11604 11605 11610 10872 10873 10874 10879 10880 11256 11257 11262 11263 11609 11610 11620 10869 10870 10871 10872 10873 10874 10879 10880 11252 11253 11254 11255 11257 11262 11263 11604 11605 11609 11610 11620 11252 11253 11254 11255 11256 11262 11263 11604 11605 11609 11610 11620 11260 11317 11319 11320 11322 11616 11618 11623 10939 11260 11276 11277 11322 11323 11325 11623 11258 11259 11276 11277 11319 11320 11322 11623 10878 10879 10880 10885 10886 11262 11263 11268 11269 11619 11620 11626 10872 10873 10874 10878 10879 10880 10885 10886 11255 11256 11257 11261 11263 11268 11269 11609 11610 11619 11620 11626 11255 11256 11257 11261 11262 11268 11269 11609 11610 11619 11620 11626 10892 10893 10894 10897 10898 11265 11266 11270 11271 11279 11280 11629 10875 10876 10877 10881 10882 10883 10887 10888 10892 10893 10894 10897 10898 11264 11266 11270 11271 11279 11280 11629 10881 10882 10883 10887 10888 11264 11265 11270 11271 11279 11280 11629 10884 10885 10886 10890 10891 11268 11269 11273 11274 11625 11626 11631 10878 10879 10880 10884 10885 10886 10890 10891 11261 11262 11263 11267 11269 11273 11274 11619 11620 11625 11626 11631 11261 11262 11263 11267 11268 11273 11274 11619 11620 11625 11626 11631 11264 11265 11266 11271 11272 11273 11274 11279 11280 11629 11630 11631 10881 10882 10883 10887 10888 10889 10890 10891 11264 11265 11266 11270 11272 11273 11274 11279 11280 11629 11630 11631 10887 10888 10889 10890 10891 11270 11271 11273 11274 11629 11630 11631 10884 10885 10886 10887 10888 10889 10890 10891 11267 11268 11269 11270 11271 11272 11274 11625 11626 11629 11630 11631 11267 11268 11269 11270 11271 11272 11273 11625 11626 11629 11630 11631 10895 10899 10900 10940 10945 11276 11277 11281 11282 11622 11623 11634 10895 10899 10900 10939 10940 10941 10942 10945 11259 11260 11275 11277 11281 11282 11322 11323 11325 11326 11328 11622 11623 11634 11259 11260 11275 11276 11281 11282 11322 11622 11623 11634 10896 10897 10898 10899 10900 11279 11280 11281 11282 11628 11629 11634 10892 10893 10894 10896 10897 10898 10899 10900 11264 11265 11266 11270 11271 11278 11280 11281 11282 11628 11629 11634 11264 11265 11266 11270 11271 11278 11279 11281 11282 11628 11629 11634 11275 11276 11277 11278 11279 11280 11282 11622 11623 11628 11629 11634 10895 10896 10897 10898 10899 10900 10940 10945 11275 11276 11277 11278 11279 11280 11281 11622 11623 11628 11629 11634 10906 10907 10909 11284 11285 11288 11295 11637 11283 11285 11286 11288 11295 11602 11603 11637 10901 10906 10907 10909 11245 11246 11247 11283 11284 11286 11288 11295 11602 11603 11637 11245 11246 11247 11284 11285 11602 11603 11637 10966 10969 10970 11289 11292 11358 11359 11640 11283 11284 11285 11293 11295 11636 11637 11643 11287 11290 11292 11358 11359 11640 11641 11646 11289 11291 11292 11300 11308 11640 11641 11646 10930 10933 10934 11290 11292 11300 11308 11646 10902 10903 10904 10905 10930 10933 10934 10966 10969 10970 11287 11289 11290 11291 11300 11308 11358 11359 11640 11641 11646 11288 11295 11296 11636 11637 11642 11643 11649 10907 10909 10910 11295 11296 11298 11299 11649 10906 10907 10909 10910 11283 11284 11285 11288 11293 11294 11296 11298 11299 11636 11637 11642 11643 11649 11293 11294 11295 11298 11299 11642 11643 11649 10929 10936 10937 11298 11299 11302 11303 11649 11294 11295 11296 11297 11299 11302 11303 11649 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10936 10937 11294 11295 11296 11297 11298 11302 11303 11649 11290 11291 11292 11305 11308 11646 11647 11652 10936 10937 10938 11303 11304 11314 11315 11655 11297 11298 11299 11303 11304 11649 11650 11655 10929 10936 10937 10938 11297 11298 11299 11301 11302 11304 11314 11315 11649 11650 11655 11301 11302 11303 11314 11315 11649 11650 11655 11300 11306 11308 11646 11647 11652 11653 11658 11305 11307 11308 11309 11312 11652 11653 11658 10932 10933 10934 11306 11308 11309 11312 11658 10930 10932 10933 10934 11290 11291 11292 11300 11305 11306 11307 11309 11312 11646 11647 11652 11653 11658 11306 11307 11308 11310 11312 11658 11659 11660 11309 11311 11312 11313 11315 11658 11659 11660 10935 10937 10938 11310 11312 11313 11315 11660 10931 10932 10933 10934 10935 10937 10938 11306 11307 11308 11309 11310 11311 11313 11315 11658 11659 11660 11310 11311 11312 11314 11315 11655 11656 11660 11301 11303 11304 11313 11315 11655 11656 11660 10935 10936 10937 10938 11301 11303 11304 11310 11311 11312 11313 11314 11655 11656 11660 11317 11318 11319 11608 11614 11615 11618 11667 11668 11670 11671 11673 11258 11316 11318 11319 11616 11618 11623 11670 11671 11673 11316 11317 11319 11320 11321 11322 11618 11670 11671 11673 11674 11676 11258 11260 11316 11317 11318 11320 11321 11322 11616 11618 11623 11670 11671 11673 11674 11676 11258 11260 11318 11319 11321 11322 11623 11673 11674 11676 11318 11319 11320 11322 11323 11324 11325 11673 11674 11676 11677 11679 10939 11258 11259 11260 11276 11277 11318 11319 11320 11321 11323 11324 11325 11623 11673 11674 11676 11677 11679 10939 11259 11276 11321 11322 11324 11325 11676 11677 11679 11321 11322 11323 11325 11326 11327 11328 11676 11677 11679 11680 11682 10939 10941 11259 11276 11321 11322 11323 11324 11326 11327 11328 11676 11677 11679 11680 11682 10939 10941 11276 11324 11325 11327 11328 11679 11680 11682 11324 11325 11326 11328 11329 11330 11331 11679 11680 11682 11683 11685 10939 10940 10941 10942 10943 10945 11276 11324 11325 11326 11327 11329 11330 11331 11679 11680 11682 11683 11685 10942 10943 10945 11327 11328 11330 11331 11682 11683 11685 11327 11328 11329 11331 11332 11333 11334 11682 11683 11685 11686 11688 10942 10943 10945 10946 11327 11328 11329 11330 11332 11333 11334 11682 11683 11685 11686 11688 10943 10945 10946 11330 11331 11333 11334 11685 11686 11688 11330 11331 11332 11334 11335 11336 11337 11685 11686 11688 11689 11691 10943 10944 10945 10946 10947 10948 10950 11330 11331 11332 11333 11335 11336 11337 11685 11686 11688 11689 11691 10947 10948 10950 11333 11334 11336 11337 11688 11689 11691 11333 11334 11335 11337 11338 11339 11340 11688 11689 11691 11692 11694 10947 10948 10950 10951 11333 11334 11335 11336 11338 11339 11340 11688 11689 11691 11692 11694 10948 10950 10951 11336 11337 11339 11340 11691 11692 11694 11336 11337 11338 11340 11341 11342 11343 11691 11692 11694 11695 11697 10948 10949 10950 10951 10952 10953 10955 11336 11337 11338 11339 11341 11342 11343 11691 11692 11694 11695 11697 10952 10953 10955 11339 11340 11342 11343 11694 11695 11697 11339 11340 11341 11343 11344 11345 11346 11694 11695 11697 11698 11700 10952 10953 10955 10956 11339 11340 11341 11342 11344 11345 11346 11694 11695 11697 11698 11700 10953 10955 10956 11342 11343 11345 11346 11697 11698 11700 11342 11343 11344 11346 11347 11348 11349 11697 11698 11700 11701 11702 10953 10954 10955 10956 10957 10958 10959 11342 11343 11344 11345 11347 11348 11349 11697 11698 11700 11701 11702 10957 10958 10959 11345 11346 11348 11349 11700 11701 11702 10957 10958 10959 11345 11346 11347 11349 11700 11701 11702 11345 11346 11347 11348 11700 11701 11702 11022 11023 11024 11351 11352 11377 11380 11406 11407 11707 11708 11709 11350 11352 11353 11354 11355 11406 11407 11532 11533 11707 11708 11709 10960 10961 10962 11022 11023 11024 11350 11351 11353 11354 11355 11377 11380 11406 11407 11532 11533 11707 11708 11709 10960 10961 10962 11023 11024 11351 11352 11354 11355 11532 11533 11709 10960 10961 10962 10963 10964 10965 11023 11024 11165 11166 11167 11168 11176 11351 11352 11353 11355 11532 11533 11709 11165 11166 11167 11168 11176 11351 11352 11353 11354 11532 11533 11709 10968 10969 10970 11357 11359 11360 11364 11712 11356 11358 11359 11360 11364 11635 11640 11712 11287 11289 11292 11357 11359 11635 11640 11712 10966 10968 10969 10970 11287 11289 11292 11356 11357 11358 11360 11364 11635 11640 11712 11356 11357 11359 11363 11364 11711 11712 11715 11037 11038 11039 11362 11364 11417 11418 11718 11361 11363 11364 11417 11418 11714 11715 11718 11360 11362 11364 11711 11712 11714 11715 11718 10967 10968 10969 10970 11037 11038 11039 11356 11357 11359 11360 11361 11362 11363 11417 11418 11711 11712 11714 11715 11718 11115 11116 11117 11366 11368 11486 11487 11723 11365 11367 11368 11369 11372 11486 11487 11723 10975 10976 10978 11366 11368 11369 11372 11723 10971 10972 10973 10974 10975 10976 10978 11115 11116 11117 11365 11366 11367 11369 11372 11486 11487 11723 11366 11367 11368 11370 11372 11722 11723 11728 11369 11371 11372 11373 11376 11722 11723 11728 10979 10980 10982 11370 11372 11373 11376 11728 10975 10976 10977 10978 10979 10980 10982 11366 11367 11368 11369 11370 11371 11373 11376 11722 11723 11728 11370 11371 11372 11374 11376 11727 11728 11731 11373 11375 11376 11398 11401 11727 11728 11731 11011 11012 11014 11374 11376 11398 11401 11731 10979 10980 10981 10982 10983 10984 10985 11011 11012 11014 11370 11371 11372 11373 11374 11375 11398 11401 11727 11728 11731 11022 11023 11024 11350 11352 11378 11380 11405 11406 11734 11735 11737 11377 11379 11380 11386 11390 11405 11406 11732 11734 11735 11737 11741 10994 10995 10996 11022 11023 11378 11380 11386 11390 11732 11734 11741 10994 10995 10996 11022 11023 11024 11350 11352 11377 11378 11379 11386 11390 11405 11406 11732 11734 11735 11737 11741 10998 10999 11000 11383 11384 11391 11394 11749 10990 10991 10992 11383 11384 11385 11388 11749 11381 11382 11384 11385 11388 11391 11394 11749 10986 10987 10988 10989 10990 10991 10992 10998 10999 11000 11381 11382 11383 11385 11388 11391 11394 11749 11382 11383 11384 11387 11388 11746 11749 11751 11378 11379 11380 11387 11388 11389 11390 11732 11734 11740 11741 11751 11385 11386 11388 11389 11390 11740 11741 11746 11749 11751 10990 10991 10992 10993 10994 10995 11382 11383 11384 11385 11386 11387 11389 11390 11740 11741 11746 11749 11751 10991 10992 10993 10994 10995 11386 11387 11388 11390 11740 11741 11751 10991 10992 10993 10994 10995 10996 11022 11023 11378 11379 11380 11386 11387 11388 11389 11732 11734 11740 11741 11751 11381 11383 11384 11392 11394 11748 11749 11757 11391 11393 11394 11395 11396 11748 11749 11757 11001 11002 11004 11392 11394 11395 11396 11757 10997 10998 10999 11000 11001 11002 11004 11381 11383 11384 11391 11392 11393 11395 11396 11748 11749 11757 11392 11393 11394 11396 11397 11402 11403 11757 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11019 11020 11021 11392 11393 11394 11395 11397 11402 11403 11757 11019 11020 11021 11395 11396 11402 11403 11757 11374 11375 11376 11399 11401 11730 11731 11759 11398 11400 11401 11403 11404 11730 11731 11759 11015 11016 11018 11399 11401 11403 11404 11759 11011 11012 11013 11014 11015 11016 11018 11374 11375 11376 11398 11399 11400 11403 11404 11730 11731 11759 11395 11396 11397 11403 11404 11757 11758 11759 11015 11016 11017 11018 11019 11020 11021 11395 11396 11397 11399 11400 11401 11402 11404 11757 11758 11759 11399 11400 11401 11402 11403 11757 11758 11759 11377 11378 11380 11406 11407 11705 11707 11734 11735 11737 11738 11761 11022 11023 11024 11350 11351 11352 11377 11378 11380 11405 11407 11705 11707 11708 11709 11734 11735 11737 11738 11761 11350 11351 11352 11405 11406 11705 11707 11708 11709 11737 11738 11761 11095 11096 11097 11409 11411 11467 11468 11765 11408 11410 11411 11413 11414 11467 11468 11765 11029 11030 11032 11409 11411 11413 11414 11765 11025 11026 11027 11028 11029 11030 11032 11095 11096 11097 11408 11409 11410 11413 11414 11467 11468 11765 11041 11043 11044 11413 11414 11424 11426 11765 11029 11030 11031 11032 11033 11034 11035 11041 11043 11044 11409 11410 11411 11412 11414 11424 11426 11765 11409 11410 11411 11412 11413 11424 11426 11765 11040 11042 11043 11416 11418 11419 11422 11768 11415 11417 11418 11419 11422 11717 11718 11768 11361 11362 11364 11416 11418 11717 11718 11768 11036 11037 11038 11039 11040 11042 11043 11361 11362 11364 11415 11416 11417 11419 11422 11717 11718 11768 11415 11416 11418 11421 11422 11767 11768 11772 11042 11043 11044 11422 11423 11425 11426 11778 11419 11422 11423 11767 11768 11770 11772 11778 11040 11042 11043 11044 11415 11416 11418 11419 11420 11421 11423 11425 11426 11767 11768 11770 11772 11778 11420 11421 11422 11425 11426 11770 11772 11778 11412 11413 11414 11426 11427 11764 11765 11780 11420 11422 11423 11426 11427 11778 11779 11780 11041 11042 11043 11044 11412 11413 11414 11420 11422 11423 11424 11425 11427 11764 11765 11778 11779 11780 11424 11425 11426 11764 11765 11778 11779 11780 11098 11099 11100 11429 11432 11472 11473 11785 11428 11430 11432 11472 11473 11784 11785 11789 11429 11431 11432 11433 11436 11784 11785 11789 11046 11047 11049 11430 11432 11433 11436 11789 11045 11046 11047 11049 11098 11099 11100 11428 11429 11430 11431 11433 11436 11472 11473 11784 11785 11789 11430 11431 11432 11434 11436 11788 11789 11793 11433 11435 11436 11437 11440 11788 11789 11793 11053 11054 11057 11434 11436 11437 11440 11793 11046 11047 11048 11049 11050 11051 11052 11053 11054 11057 11430 11431 11432 11433 11434 11435 11437 11440 11788 11789 11793 11434 11435 11436 11438 11440 11792 11793 11798 11437 11439 11440 11441 11444 11792 11793 11798 11054 11055 11057 11438 11440 11441 11444 11798 11053 11054 11055 11057 11434 11435 11436 11437 11438 11439 11441 11444 11792 11793 11798 11438 11439 11440 11442 11444 11797 11798 11801 11441 11443 11444 11445 11447 11797 11798 11801 11058 11059 11061 11442 11444 11445 11447 11801 11054 11055 11056 11057 11058 11059 11061 11438 11439 11440 11441 11442 11443 11445 11447 11797 11798 11801 11442 11443 11444 11446 11447 11448 11451 11801 11068 11069 11071 11445 11447 11448 11451 11801 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11071 11442 11443 11444 11445 11446 11448 11451 11801 11445 11446 11447 11449 11451 11800 11801 11805 11448 11450 11451 11452 11455 11800 11801 11805 11072 11073 11075 11449 11451 11452 11455 11805 11068 11069 11070 11071 11072 11073 11075 11445 11446 11447 11448 11449 11450 11452 11455 11800 11801 11805 11449 11450 11451 11453 11455 11804 11805 11809 11452 11454 11455 11456 11459 11804 11805 11809 11079 11080 11082 11453 11455 11456 11459 11809 11072 11073 11074 11075 11076 11077 11078 11079 11080 11082 11449 11450 11451 11452 11453 11454 11456 11459 11804 11805 11809 11453 11454 11455 11457 11459 11808 11809 11813 11456 11458 11459 11460 11463 11808 11809 11813 11086 11087 11090 11457 11459 11460 11463 11813 11079 11080 11081 11082 11083 11084 11085 11086 11087 11090 11453 11454 11455 11456 11457 11458 11460 11463 11808 11809 11813 11457 11458 11459 11461 11463 11812 11813 11815 11460 11462 11463 11464 11466 11812 11813 11815 11087 11088 11090 11461 11463 11464 11466 11815 11086 11087 11088 11090 11457 11458 11459 11460 11461 11462 11464 11466 11812 11813 11815 11461 11462 11463 11465 11466 11468 11469 11815 11094 11095 11097 11464 11466 11468 11469 11815 11087 11088 11089 11090 11091 11092 11093 11094 11095 11097 11461 11462 11463 11464 11465 11468 11469 11815 11408 11409 11411 11468 11469 11763 11765 11815 11094 11095 11096 11097 11408 11409 11411 11464 11465 11466 11467 11469 11763 11765 11815 11464 11465 11466 11467 11468 11763 11765 11815 11105 11107 11108 11471 11473 11475 11476 11820 11470 11472 11473 11475 11476 11782 11785 11820 11428 11429 11432 11471 11473 11782 11785 11820 11098 11099 11100 11101 11102 11103 11104 11105 11107 11108 11428 11429 11432 11470 11471 11472 11475 11476 11782 11785 11820 11109 11111 11112 11475 11476 11477 11478 11820 11470 11471 11473 11474 11476 11477 11478 11820 11105 11106 11107 11108 11109 11111 11112 11470 11471 11473 11474 11475 11477 11478 11820 11474 11475 11476 11478 11479 11516 11520 11820 11109 11110 11111 11112 11145 11147 11148 11149 11474 11475 11476 11477 11479 11512 11515 11516 11520 11820 11149 11477 11478 11512 11515 11516 11520 11820 11134 11135 11136 11482 11483 11501 11503 11824 11125 11126 11127 11482 11483 11488 11490 11824 11113 11125 11126 11127 11134 11135 11136 11480 11481 11483 11488 11490 11501 11503 11824 11480 11481 11482 11488 11490 11501 11503 11824 11119 11120 11121 11485 11487 11489 11490 11828 11484 11486 11487 11489 11490 11720 11723 11828 11365 11366 11368 11485 11487 11720 11723 11828 11114 11115 11116 11117 11119 11120 11121 11365 11366 11368 11484 11485 11486 11489 11490 11720 11723 11828 11481 11482 11483 11489 11490 11823 11824 11828 11484 11485 11487 11488 11490 11823 11824 11828 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11481 11482 11483 11484 11485 11487 11488 11489 11823 11824 11828 11142 11143 11144 11492 11496 11510 11511 11833 11491 11495 11496 11510 11511 11831 11833 11838 11129 11143 11144 11494 11496 11499 11500 11842 11493 11495 11496 11499 11500 11836 11838 11842 11492 11494 11496 11831 11833 11836 11838 11842 11129 11142 11143 11144 11491 11492 11493 11494 11495 11499 11500 11510 11511 11831 11833 11836 11838 11842 11131 11132 11133 11498 11500 11502 11503 11844 11497 11499 11500 11502 11503 11840 11842 11844 11493 11494 11496 11498 11500 11840 11842 11844 11128 11129 11131 11132 11133 11143 11144 11493 11494 11496 11497 11498 11499 11502 11503 11840 11842 11844 11480 11482 11483 11502 11503 11821 11824 11844 11497 11498 11500 11501 11503 11821 11824 11844 11130 11131 11132 11133 11134 11135 11136 11480 11482 11483 11497 11498 11500 11501 11502 11821 11824 11844 11162 11163 11164 11505 11508 11530 11531 11850 11504 11507 11508 11530 11531 11848 11850 11852 11138 11140 11141 11507 11508 11509 11510 11852 11505 11506 11508 11509 11510 11848 11850 11852 11137 11138 11140 11141 11162 11163 11164 11504 11505 11506 11507 11509 11510 11530 11531 11848 11850 11852 11506 11507 11508 11510 11511 11829 11833 11852 11138 11139 11140 11141 11142 11143 11144 11491 11492 11496 11506 11507 11508 11509 11511 11829 11833 11852 11491 11492 11496 11509 11510 11829 11833 11852 11149 11478 11479 11514 11515 11518 11520 11857 11150 11152 11153 11514 11515 11521 11524 11857 11512 11513 11515 11518 11520 11521 11524 11857 11145 11146 11147 11148 11149 11150 11152 11153 11478 11479 11512 11513 11514 11518 11520 11521 11524 11857 11477 11478 11479 11517 11520 11817 11820 11861 11516 11519 11520 11817 11820 11859 11861 11864 11512 11514 11515 11519 11520 11854 11857 11864 11517 11518 11520 11854 11857 11859 11861 11864 11149 11477 11478 11479 11512 11514 11515 11516 11517 11518 11519 11817 11820 11854 11857 11859 11861 11864 11513 11514 11515 11523 11524 11855 11857 11869 11154 11156 11157 11523 11524 11525 11528 11869 11521 11522 11524 11525 11528 11855 11857 11869 11150 11151 11152 11153 11154 11156 11157 11513 11514 11515 11521 11522 11523 11525 11528 11855 11857 11869 11522 11523 11524 11527 11528 11867 11869 11871 11158 11160 11161 11527 11528 11529 11530 11871 11525 11526 11528 11529 11530 11867 11869 11871 11154 11155 11156 11157 11158 11160 11161 11522 11523 11524 11525 11526 11527 11529 11530 11867 11869 11871 11526 11527 11528 11530 11531 11846 11850 11871 11158 11159 11160 11161 11162 11163 11164 11504 11505 11508 11526 11527 11528 11529 11531 11846 11850 11871 11504 11505 11508 11529 11530 11846 11850 11871 11351 11352 11353 11354 11355 11533 11534 11535 11537 11709 11710 11874 11165 11166 11167 11168 11175 11176 11351 11352 11353 11354 11355 11532 11534 11535 11537 11538 11540 11709 11710 11874 11168 11175 11176 11532 11533 11535 11537 11538 11540 11709 11710 11874 11532 11533 11534 11536 11537 11709 11710 11874 11875 11878 11879 11881 11535 11537 11538 11539 11540 11874 11875 11878 11879 11881 11882 11884 11168 11175 11176 11532 11533 11534 11535 11536 11538 11539 11540 11709 11710 11874 11875 11878 11879 11881 11882 11884 11168 11175 11176 11533 11534 11536 11537 11539 11540 11881 11882 11884 11536 11537 11538 11540 11541 11548 11549 11881 11882 11884 11885 11887 11168 11175 11176 11177 11184 11185 11533 11534 11536 11537 11538 11539 11541 11548 11549 11881 11882 11884 11885 11887 11175 11176 11177 11184 11185 11539 11540 11548 11549 11884 11885 11887 11172 11173 11174 11220 11221 11543 11544 11546 11547 11554 11555 11890 11169 11170 11171 11172 11173 11174 11181 11182 11183 11220 11221 11542 11544 11546 11547 11551 11552 11554 11555 11890 11181 11182 11183 11542 11543 11546 11547 11551 11552 11554 11555 11890 11219 11220 11221 11223 11224 11546 11547 11579 11580 11889 11890 11893 11172 11173 11174 11219 11220 11221 11223 11224 11542 11543 11544 11545 11547 11554 11555 11579 11580 11889 11890 11893 11542 11543 11544 11545 11546 11554 11555 11579 11580 11889 11890 11893 11539 11540 11541 11549 11550 11557 11558 11884 11885 11887 11888 11896 11175 11176 11177 11184 11185 11186 11193 11194 11539 11540 11541 11548 11550 11557 11558 11884 11885 11887 11888 11896 11184 11185 11186 11193 11194 11548 11549 11557 11558 11887 11888 11896 11181 11182 11183 11543 11544 11552 11553 11555 11556 11565 11566 11900 11178 11179 11180 11181 11182 11183 11190 11191 11192 11543 11544 11551 11553 11555 11556 11562 11563 11565 11566 11900 11190 11191 11192 11551 11552 11555 11556 11562 11563 11565 11566 11900 11542 11543 11544 11546 11547 11555 11556 11890 11891 11900 11901 11903 11181 11182 11183 11542 11543 11544 11546 11547 11551 11552 11553 11554 11556 11565 11566 11890 11891 11900 11901 11903 11551 11552 11553 11554 11555 11565 11566 11890 11891 11900 11901 11903 11548 11549 11550 11558 11559 11567 11568 11887 11888 11896 11897 11906 11184 11185 11186 11193 11194 11195 11203 11204 11548 11549 11550 11557 11559 11567 11568 11887 11888 11896 11897 11906 11193 11194 11195 11203 11204 11557 11558 11567 11568 11896 11897 11906 11200 11201 11202 11561 11562 11570 11571 11909 11560 11562 11563 11564 11565 11570 11571 11909 11187 11188 11189 11190 11191 11192 11200 11201 11202 11552 11553 11560 11561 11563 11564 11565 11570 11571 11909 11190 11191 11192 11552 11553 11561 11562 11564 11565 11909 11561 11562 11563 11565 11566 11898 11900 11909 11190 11191 11192 11551 11552 11553 11555 11556 11561 11562 11563 11564 11566 11898 11900 11909 11551 11552 11553 11555 11556 11564 11565 11898 11900 11909 11557 11558 11559 11568 11569 11573 11574 11896 11897 11906 11907 11912 11193 11194 11195 11203 11204 11205 11214 11215 11557 11558 11559 11567 11569 11573 11574 11896 11897 11906 11907 11912 11203 11204 11205 11214 11215 11567 11568 11573 11574 11906 11907 11912 11560 11561 11562 11571 11572 11576 11577 11909 11910 11914 11196 11197 11198 11199 11200 11201 11202 11206 11207 11208 11212 11213 11560 11561 11562 11570 11572 11576 11577 11909 11910 11914 11206 11207 11208 11212 11213 11570 11571 11576 11577 11909 11910 11914 11567 11568 11569 11574 11575 11576 11577 11906 11907 11912 11913 11914 11203 11204 11205 11214 11215 11216 11217 11218 11567 11568 11569 11573 11575 11576 11577 11906 11907 11912 11913 11914 11214 11215 11216 11217 11218 11573 11574 11576 11577 11912 11913 11914 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11570 11571 11572 11573 11574 11575 11577 11909 11910 11912 11913 11914 11570 11571 11572 11573 11574 11575 11576 11909 11910 11912 11913 11914 11222 11223 11224 11226 11227 11579 11580 11582 11583 11892 11893 11917 11219 11220 11221 11222 11223 11224 11226 11227 11545 11546 11547 11578 11580 11582 11583 11889 11890 11892 11893 11917 11545 11546 11547 11578 11579 11582 11583 11889 11890 11892 11893 11917 11225 11226 11227 11229 11230 11582 11583 11585 11586 11916 11917 11920 11222 11223 11224 11225 11226 11227 11229 11230 11578 11579 11580 11581 11583 11585 11586 11892 11893 11916 11917 11920 11578 11579 11580 11581 11582 11585 11586 11892 11893 11916 11917 11920 11228 11229 11230 11232 11233 11585 11586 11588 11589 11919 11920 11923 11225 11226 11227 11228 11229 11230 11232 11233 11581 11582 11583 11584 11586 11588 11589 11916 11917 11919 11920 11923 11581 11582 11583 11584 11585 11588 11589 11916 11917 11919 11920 11923 11231 11232 11233 11235 11236 11588 11589 11591 11592 11922 11923 11926 11228 11229 11230 11231 11232 11233 11235 11236 11584 11585 11586 11587 11589 11591 11592 11919 11920 11922 11923 11926 11584 11585 11586 11587 11588 11591 11592 11919 11920 11922 11923 11926 11234 11235 11236 11238 11239 11591 11592 11594 11595 11925 11926 11929 11231 11232 11233 11234 11235 11236 11238 11239 11587 11588 11589 11590 11592 11594 11595 11922 11923 11925 11926 11929 11587 11588 11589 11590 11591 11594 11595 11922 11923 11925 11926 11929 11237 11238 11239 11241 11242 11594 11595 11597 11598 11928 11929 11932 11234 11235 11236 11237 11238 11239 11241 11242 11590 11591 11592 11593 11595 11597 11598 11925 11926 11928 11929 11932 11590 11591 11592 11593 11594 11597 11598 11925 11926 11928 11929 11932 11240 11241 11242 11243 11244 11597 11598 11599 11600 11931 11932 11935 11237 11238 11239 11240 11241 11242 11243 11244 11593 11594 11595 11596 11598 11599 11600 11928 11929 11931 11932 11935 11593 11594 11595 11596 11597 11599 11600 11928 11929 11931 11932 11935 11596 11597 11598 11600 11931 11932 11935 11240 11241 11242 11243 11244 11596 11597 11598 11599 11931 11932 11935 11249 11250 11251 11253 11254 11602 11603 11605 11606 11637 11638 11943 11245 11246 11247 11248 11249 11250 11251 11253 11254 11284 11285 11286 11601 11603 11605 11606 11637 11638 11943 11284 11285 11286 11601 11602 11605 11606 11637 11638 11943 11252 11253 11254 11256 11257 11605 11606 11610 11611 11943 11944 11952 11249 11250 11251 11252 11253 11254 11256 11257 11601 11602 11603 11604 11606 11610 11611 11637 11638 11943 11944 11952 11601 11602 11603 11604 11605 11610 11611 11637 11638 11943 11944 11952 11608 11612 11614 11662 11664 11665 11667 11946 11947 11956 11957 11960 11316 11607 11612 11614 11615 11618 11664 11665 11667 11668 11670 11960 11255 11256 11257 11262 11263 11610 11611 11620 11621 11952 11953 11962 11252 11253 11254 11255 11256 11257 11262 11263 11604 11605 11606 11609 11611 11620 11621 11943 11944 11952 11953 11962 11604 11605 11606 11609 11610 11620 11621 11943 11944 11952 11953 11962 11607 11608 11613 11614 11664 11665 11667 11958 11960 11965 11612 11614 11615 11617 11618 11958 11960 11965 11316 11607 11608 11612 11613 11615 11617 11618 11664 11665 11667 11668 11670 11958 11960 11965 11316 11608 11613 11614 11617 11618 11667 11668 11670 11965 11258 11317 11319 11617 11618 11623 11624 11965 11613 11614 11615 11616 11618 11623 11624 11965 11258 11316 11317 11318 11319 11608 11613 11614 11615 11616 11617 11623 11624 11667 11668 11670 11671 11673 11965 11261 11262 11263 11268 11269 11620 11621 11626 11627 11962 11963 11968 11255 11256 11257 11261 11262 11263 11268 11269 11609 11610 11611 11619 11621 11626 11627 11952 11953 11962 11963 11968 11609 11610 11611 11619 11620 11626 11627 11952 11953 11962 11963 11968 11275 11276 11277 11281 11282 11623 11624 11633 11634 11964 11965 11970 11258 11259 11260 11275 11276 11277 11281 11282 11317 11319 11320 11322 11616 11617 11618 11622 11624 11633 11634 11964 11965 11970 11616 11617 11618 11622 11623 11633 11634 11964 11965 11970 11267 11268 11269 11273 11274 11626 11627 11631 11632 11968 11969 11970 11261 11262 11263 11267 11268 11269 11273 11274 11619 11620 11621 11625 11627 11631 11632 11962 11963 11968 11969 11970 11619 11620 11621 11625 11626 11631 11632 11962 11963 11968 11969 11970 11278 11279 11280 11281 11282 11629 11630 11631 11632 11633 11634 11970 11264 11265 11266 11270 11271 11272 11273 11274 11278 11279 11280 11281 11282 11628 11630 11631 11632 11633 11634 11970 11270 11271 11272 11273 11274 11628 11629 11631 11632 11633 11634 11970 11267 11268 11269 11270 11271 11272 11273 11274 11625 11626 11627 11628 11629 11630 11632 11633 11634 11968 11969 11970 11625 11626 11627 11628 11629 11630 11631 11633 11634 11968 11969 11970 11622 11623 11624 11628 11629 11630 11631 11632 11634 11964 11965 11970 11275 11276 11277 11278 11279 11280 11281 11282 11622 11623 11624 11628 11629 11630 11631 11632 11633 11964 11965 11970 11357 11358 11359 11639 11640 11712 11713 11938 11939 11973 11288 11293 11295 11637 11638 11643 11644 11942 11943 11976 11283 11284 11285 11286 11288 11293 11295 11601 11602 11603 11605 11606 11636 11638 11643 11644 11942 11943 11976 11601 11602 11603 11605 11606 11636 11637 11643 11644 11942 11943 11976 11635 11640 11641 11645 11646 11712 11713 11938 11939 11973 11974 11979 11287 11289 11290 11292 11357 11358 11359 11635 11639 11641 11645 11646 11712 11713 11938 11939 11973 11974 11979 11289 11290 11292 11639 11640 11645 11646 11973 11974 11979 11293 11295 11296 11643 11644 11648 11649 11975 11976 11982 11288 11293 11295 11296 11636 11637 11638 11642 11644 11648 11649 11942 11943 11975 11976 11982 11636 11637 11638 11642 11643 11648 11649 11942 11943 11975 11976 11982 11639 11640 11641 11646 11647 11651 11652 11973 11974 11979 11980 11985 11289 11290 11291 11292 11300 11305 11308 11639 11640 11641 11645 11647 11651 11652 11973 11974 11979 11980 11985 11300 11305 11308 11645 11646 11651 11652 11979 11980 11985 11642 11643 11644 11649 11650 11654 11655 11975 11976 11982 11983 11988 11293 11294 11295 11296 11297 11298 11299 11302 11303 11304 11642 11643 11644 11648 11650 11654 11655 11975 11976 11982 11983 11988 11302 11303 11304 11648 11649 11654 11655 11982 11983 11988 11645 11646 11647 11652 11653 11657 11658 11979 11980 11985 11986 11991 11300 11305 11306 11308 11645 11646 11647 11651 11653 11657 11658 11979 11980 11985 11986 11991 11305 11306 11308 11651 11652 11657 11658 11985 11986 11991 11648 11649 11650 11655 11656 11660 11661 11982 11983 11988 11989 11993 11301 11302 11303 11304 11313 11314 11315 11648 11649 11650 11654 11656 11660 11661 11982 11983 11988 11989 11993 11313 11314 11315 11654 11655 11660 11661 11988 11989 11993 11651 11652 11653 11658 11659 11660 11661 11985 11986 11991 11992 11993 11305 11306 11307 11308 11309 11310 11312 11651 11652 11653 11657 11659 11660 11661 11985 11986 11991 11992 11993 11309 11310 11312 11657 11658 11660 11661 11991 11992 11993 11309 11310 11311 11312 11313 11314 11315 11654 11655 11656 11657 11658 11659 11661 11988 11989 11991 11992 11993 11654 11655 11656 11657 11658 11659 11660 11988 11989 11991 11992 11993 11607 11663 11664 11704 11946 11947 11956 11957 11960 11997 11998 12000 11662 11664 11665 11666 11667 11704 11947 11997 11998 12000 12001 12003 11607 11608 11612 11614 11662 11663 11665 11666 11667 11704 11946 11947 11956 11957 11960 11997 11998 12000 12001 12003 11607 11608 11612 11614 11663 11664 11666 11667 11960 12000 12001 12003 11663 11664 11665 11667 11668 11669 11670 12000 12001 12003 12004 12006 11316 11607 11608 11612 11614 11615 11618 11663 11664 11665 11666 11668 11669 11670 11960 12000 12001 12003 12004 12006 11316 11608 11614 11615 11618 11666 11667 11669 11670 12003 12004 12006 11666 11667 11668 11670 11671 11672 11673 12003 12004 12006 12007 12009 11316 11317 11318 11319 11608 11614 11615 11618 11666 11667 11668 11669 11671 11672 11673 12003 12004 12006 12007 12009 11316 11317 11318 11319 11618 11669 11670 11672 11673 12006 12007 12009 11669 11670 11671 11673 11674 11675 11676 12006 12007 12009 12010 12012 11316 11317 11318 11319 11320 11321 11322 11618 11669 11670 11671 11672 11674 11675 11676 12006 12007 12009 12010 12012 11318 11319 11320 11321 11322 11672 11673 11675 11676 12009 12010 12012 11672 11673 11674 11676 11677 11678 11679 12009 12010 12012 12013 12015 11318 11319 11320 11321 11322 11323 11324 11325 11672 11673 11674 11675 11677 11678 11679 12009 12010 12012 12013 12015 11321 11322 11323 11324 11325 11675 11676 11678 11679 12012 12013 12015 11675 11676 11677 11679 11680 11681 11682 12012 12013 12015 12016 12018 11321 11322 11323 11324 11325 11326 11327 11328 11675 11676 11677 11678 11680 11681 11682 12012 12013 12015 12016 12018 11324 11325 11326 11327 11328 11678 11679 11681 11682 12015 12016 12018 11678 11679 11680 11682 11683 11684 11685 12015 12016 12018 12019 12021 11324 11325 11326 11327 11328 11329 11330 11331 11678 11679 11680 11681 11683 11684 11685 12015 12016 12018 12019 12021 11327 11328 11329 11330 11331 11681 11682 11684 11685 12018 12019 12021 11681 11682 11683 11685 11686 11687 11688 12018 12019 12021 12022 12024 11327 11328 11329 11330 11331 11332 11333 11334 11681 11682 11683 11684 11686 11687 11688 12018 12019 12021 12022 12024 11330 11331 11332 11333 11334 11684 11685 11687 11688 12021 12022 12024 11684 11685 11686 11688 11689 11690 11691 12021 12022 12024 12025 12027 11330 11331 11332 11333 11334 11335 11336 11337 11684 11685 11686 11687 11689 11690 11691 12021 12022 12024 12025 12027 11333 11334 11335 11336 11337 11687 11688 11690 11691 12024 12025 12027 11687 11688 11689 11691 11692 11693 11694 12024 12025 12027 12028 12030 11333 11334 11335 11336 11337 11338 11339 11340 11687 11688 11689 11690 11692 11693 11694 12024 12025 12027 12028 12030 11336 11337 11338 11339 11340 11690 11691 11693 11694 12027 12028 12030 11690 11691 11692 11694 11695 11696 11697 12027 12028 12030 12031 12033 11336 11337 11338 11339 11340 11341 11342 11343 11690 11691 11692 11693 11695 11696 11697 12027 12028 12030 12031 12033 11339 11340 11341 11342 11343 11693 11694 11696 11697 12030 12031 12033 11693 11694 11695 11697 11698 11699 11700 12030 12031 12033 12034 12036 11339 11340 11341 11342 11343 11344 11345 11346 11693 11694 11695 11696 11698 11699 11700 12030 12031 12033 12034 12036 11342 11343 11344 11345 11346 11696 11697 11699 11700 12033 12034 12036 11696 11697 11698 11700 11701 11702 11703 12033 12034 12036 12037 12038 11342 11343 11344 11345 11346 11347 11348 11349 11696 11697 11698 11699 11701 11702 11703 12033 12034 12036 12037 12038 11345 11346 11347 11348 11349 11699 11700 11702 11703 12036 12037 12038 11345 11346 11347 11348 11349 11699 11700 11701 11703 12036 12037 12038 11699 11700 11701 11702 12036 12037 12038 11662 11663 11664 11940 11945 11947 11950 11995 11997 11998 12000 12041 11405 11406 11407 11706 11707 11737 11738 11761 11762 12049 12050 12051 11705 11707 11708 11709 11710 11761 11762 11873 11874 12049 12050 12051 11350 11351 11352 11405 11406 11407 11705 11706 11708 11709 11710 11737 11738 11761 11762 11873 11874 12049 12050 12051 11350 11351 11352 11406 11407 11706 11707 11709 11710 11873 11874 12051 11350 11351 11352 11353 11354 11355 11406 11407 11532 11533 11534 11535 11537 11706 11707 11708 11710 11873 11874 12051 11532 11533 11534 11535 11537 11706 11707 11708 11709 11873 11874 12051 11360 11363 11364 11712 11713 11715 11716 11936 11938 12054 11356 11357 11358 11359 11360 11363 11364 11635 11639 11640 11711 11713 11715 11716 11936 11938 11939 11973 12054 11635 11639 11640 11711 11712 11715 11716 11936 11938 11939 11973 12054 11362 11363 11364 11715 11716 11718 11719 12053 12054 12057 11360 11362 11363 11364 11711 11712 11713 11714 11716 11718 11719 11936 11938 12053 12054 12057 11711 11712 11713 11714 11715 11718 11719 11936 11938 12053 12054 12057 11416 11417 11418 11718 11719 11768 11769 12056 12057 12060 11361 11362 11363 11364 11416 11417 11418 11714 11715 11716 11717 11719 11768 11769 12053 12054 12056 12057 12060 11714 11715 11716 11717 11718 11768 11769 12053 12054 12056 12057 12060 11485 11486 11487 11721 11723 11827 11828 12065 11720 11722 11723 11724 11728 11827 11828 12065 11369 11370 11372 11721 11723 11724 11728 12065 11365 11366 11367 11368 11369 11370 11372 11485 11486 11487 11720 11721 11722 11724 11728 11827 11828 12065 11721 11722 11723 11725 11728 12064 12065 12069 11724 11726 11728 12064 12065 12068 12069 12073 11725 11727 11728 11729 11731 12068 12069 12073 11373 11374 11376 11726 11728 11729 11731 12073 11369 11370 11371 11372 11373 11374 11376 11721 11722 11723 11724 11725 11726 11727 11729 11731 12064 12065 12068 12069 12073 11726 11727 11728 11730 11731 11754 11759 12073 11398 11399 11401 11729 11731 11754 11759 12073 11373 11374 11375 11376 11398 11399 11401 11726 11727 11728 11729 11730 11754 11759 12073 11378 11379 11380 11386 11390 11733 11734 11739 11741 11744 11745 12080 11732 11734 11735 11736 11737 11739 11741 11744 11745 12080 12081 12083 11377 11378 11379 11380 11386 11390 11405 11406 11732 11733 11735 11736 11737 11739 11741 11744 11745 12080 12081 12083 11377 11378 11380 11405 11406 11733 11734 11736 11737 12080 12081 12083 11733 11734 11735 11737 11738 11760 11761 12074 12076 12080 12081 12083 11377 11378 11380 11405 11406 11407 11705 11707 11733 11734 11735 11736 11738 11760 11761 12074 12076 12080 12081 12083 11405 11406 11407 11705 11707 11736 11737 11760 11761 12074 12076 12083 11732 11733 11734 11740 11741 11742 11744 11745 11751 11752 12080 12089 11386 11387 11388 11389 11390 11739 11741 11742 11744 11751 11752 12089 11378 11379 11380 11386 11387 11388 11389 11390 11732 11733 11734 11739 11740 11742 11744 11745 11751 11752 12080 12089 11739 11740 11741 11743 11744 11751 11752 12089 12090 12091 11742 11744 11745 12078 12080 12089 12090 12091 11732 11733 11734 11739 11740 11741 11742 11743 11745 11751 11752 12078 12080 12089 12090 12091 11732 11733 11734 11739 11741 11743 11744 12078 12080 12091 11385 11387 11388 11747 11749 11750 11751 12095 11746 11748 11749 11750 11751 11753 11757 12095 11391 11392 11394 11747 11749 11753 11757 12095 11381 11382 11383 11384 11385 11387 11388 11391 11392 11394 11746 11747 11748 11750 11751 11753 11757 12095 11746 11747 11749 11751 11752 12087 12089 12095 11385 11386 11387 11388 11389 11390 11739 11740 11741 11742 11744 11746 11747 11749 11750 11752 12087 12089 12095 11739 11740 11741 11742 11744 11750 11751 12087 12089 12095 11747 11748 11749 11756 11757 12094 12095 12098 11729 11730 11731 11755 11759 12072 12073 12098 11754 11756 11757 11758 11759 12072 12073 12098 11753 11755 11757 11758 11759 12094 12095 12098 11391 11392 11393 11394 11395 11396 11397 11402 11403 11404 11747 11748 11749 11753 11755 11756 11758 11759 12094 12095 12098 11402 11403 11404 11755 11756 11757 11759 12098 11398 11399 11400 11401 11402 11403 11404 11729 11730 11731 11754 11755 11756 11757 11758 12072 12073 12098 11736 11737 11738 11761 11762 12047 12049 12074 12076 12077 12083 12101 11405 11406 11407 11705 11706 11707 11736 11737 11738 11760 11762 12047 12049 12050 12051 12074 12076 12077 12083 12101 11705 11706 11707 11760 11761 12047 12049 12050 12051 12076 12077 12101 11467 11468 11469 11765 11766 11814 11815 12105 11424 11426 11427 11765 11766 11775 11780 12105 11408 11409 11410 11411 11412 11413 11414 11424 11426 11427 11467 11468 11469 11763 11764 11766 11775 11780 11814 11815 12105 11763 11764 11765 11775 11780 11814 11815 12105 11419 11421 11422 11768 11769 11772 11773 12059 12060 12108 11415 11416 11417 11418 11419 11421 11422 11717 11718 11719 11767 11769 11772 11773 12056 12057 12059 12060 12108 11717 11718 11719 11767 11768 11772 11773 12056 12057 12059 12060 12108 11421 11422 11423 11771 11772 11774 11778 12115 11770 11772 11773 11774 11778 12107 12108 12112 12113 12115 11419 11421 11422 11423 11767 11768 11769 11770 11771 11773 11774 11778 12059 12060 12107 12108 12112 12113 12115 11767 11768 11769 11771 11772 12059 12060 12107 12108 12112 12113 12115 11770 11771 11772 11776 11778 12115 12116 12120 11764 11765 11766 11780 11781 12104 12105 12122 11774 11777 11778 12115 12116 12120 12121 12122 11776 11778 11779 11780 11781 12120 12121 12122 11420 11421 11422 11423 11425 11426 11427 11770 11771 11772 11774 11776 11777 11779 11780 11781 12115 12116 12120 12121 12122 11425 11426 11427 11777 11778 11780 11781 12122 11424 11425 11426 11427 11764 11765 11766 11775 11777 11778 11779 11781 12104 12105 12122 11775 11777 11778 11779 11780 12104 12105 12122 11471 11472 11473 11783 11785 11819 11820 12127 11782 11784 11785 11786 11789 11819 11820 12127 11429 11430 11432 11783 11785 11786 11789 12127 11428 11429 11430 11432 11471 11472 11473 11782 11783 11784 11786 11789 11819 11820 12127 11783 11784 11785 11787 11789 12126 12127 12131 11786 11788 11789 11790 11793 12126 12127 12131 11433 11434 11436 11787 11789 11790 11793 12131 11429 11430 11431 11432 11433 11434 11436 11783 11784 11785 11786 11787 11788 11790 11793 12126 12127 12131 11787 11788 11789 11791 11793 12130 12131 12135 11790 11792 11793 11794 11798 12130 12131 12135 11437 11438 11440 11791 11793 11794 11798 12135 11433 11434 11435 11436 11437 11438 11440 11787 11788 11789 11790 11791 11792 11794 11798 12130 12131 12135 11791 11792 11793 11795 11798 12134 12135 12140 11794 11796 11798 12134 12135 12139 12140 12143 11795 11797 11798 11799 11801 12139 12140 12143 11441 11442 11444 11796 11798 11799 11801 12143 11437 11438 11439 11440 11441 11442 11444 11791 11792 11793 11794 11795 11796 11797 11799 11801 12134 12135 12139 12140 12143 11796 11797 11798 11800 11801 11802 11805 12143 11448 11449 11451 11799 11801 11802 11805 12143 11441 11442 11443 11444 11445 11446 11447 11448 11449 11451 11796 11797 11798 11799 11800 11802 11805 12143 11799 11800 11801 11803 11805 12142 12143 12147 11802 11804 11805 11806 11809 12142 12143 12147 11452 11453 11455 11803 11805 11806 11809 12147 11448 11449 11450 11451 11452 11453 11455 11799 11800 11801 11802 11803 11804 11806 11809 12142 12143 12147 11803 11804 11805 11807 11809 12146 12147 12151 11806 11808 11809 11810 11813 12146 12147 12151 11456 11457 11459 11807 11809 11810 11813 12151 11452 11453 11454 11455 11456 11457 11459 11803 11804 11805 11806 11807 11808 11810 11813 12146 12147 12151 11807 11808 11809 11811 11813 12150 12151 12153 11810 11812 11813 11815 11816 12150 12151 12153 11460 11461 11463 11811 11813 11815 11816 12153 11456 11457 11458 11459 11460 11461 11463 11807 11808 11809 11810 11811 11812 11815 11816 12150 12151 12153 11763 11765 11766 11815 11816 12103 12105 12153 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11763 11765 11766 11811 11812 11813 11814 11816 12103 12105 12153 11811 11812 11813 11814 11815 12103 12105 12153 11516 11517 11520 11818 11820 11860 11861 12158 11817 11819 11820 11860 11861 12124 12127 12158 11782 11783 11785 11818 11820 12124 12127 12158 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11516 11517 11520 11782 11783 11785 11817 11818 11819 11860 11861 12124 12127 12158 11501 11502 11503 11822 11824 11825 11844 12165 11821 11824 11825 11844 11845 12161 12163 12165 11488 11489 11490 11824 11825 11826 11828 12165 11480 11481 11482 11483 11488 11489 11490 11501 11502 11503 11821 11822 11823 11825 11826 11828 11844 12165 11821 11822 11823 11824 11826 11828 11844 12165 11823 11824 11825 11827 11828 12062 12065 12165 11720 11721 11723 11826 11828 12062 12065 12165 11484 11485 11486 11487 11488 11489 11490 11720 11721 11723 11823 11824 11825 11826 11827 12062 12065 12165 11509 11510 11511 11830 11833 11852 11853 12171 11829 11832 11833 11852 11853 12169 12171 12173 11492 11495 11496 11832 11833 11834 11838 12173 11830 11831 11833 11834 11838 12169 12171 12173 11491 11492 11495 11496 11509 11510 11511 11829 11830 11831 11832 11834 11838 11852 11853 12169 12171 12173 11831 11832 11833 11835 11837 11838 12173 12183 11834 11837 11838 12173 12174 12177 12179 12183 11494 11495 11496 11837 11838 11839 11842 12183 11834 11835 11836 11838 11839 11842 12173 12183 11492 11494 11495 11496 11831 11832 11833 11834 11835 11836 11837 11839 11842 12173 12183 11836 11837 11838 11841 11842 12181 12183 12185 11498 11499 11500 11841 11842 11843 11844 12185 11839 11840 11842 11843 11844 12181 12183 12185 11493 11494 11495 11496 11498 11499 11500 11836 11837 11838 11839 11840 11841 11843 11844 12181 12183 12185 11840 11841 11842 11844 11845 12159 12163 12185 11497 11498 11499 11500 11501 11502 11503 11821 11822 11824 11825 11840 11841 11842 11843 11845 12159 12161 12163 12165 12185 11822 11843 11844 12159 12161 12163 12165 12185 11529 11530 11531 11847 11850 11871 11872 12191 11846 11849 11850 11871 11872 12189 12191 12193 11505 11507 11508 11849 11850 11851 11852 12193 11847 11848 11850 11851 11852 12189 12191 12193 11504 11505 11507 11508 11529 11530 11531 11846 11847 11848 11849 11851 11852 11871 11872 12189 12191 12193 11848 11849 11850 11852 11853 12167 12171 12193 11505 11506 11507 11508 11509 11510 11511 11829 11830 11833 11848 11849 11850 11851 11853 12167 12171 12193 11829 11830 11833 11851 11852 12167 12171 12193 11518 11519 11520 11856 11857 11858 11864 12198 11521 11523 11524 11856 11857 11866 11869 12198 11854 11855 11857 11858 11864 11866 11869 12198 11512 11513 11514 11515 11518 11519 11520 11521 11523 11524 11854 11855 11856 11858 11864 11866 11869 12198 11854 11856 11857 11864 11865 12195 12198 12202 11517 11519 11520 11861 11862 11863 11864 12205 11817 11818 11820 11861 11862 12155 12158 12205 11516 11517 11519 11520 11817 11818 11820 11859 11860 11862 11863 11864 12155 12158 12205 11859 11860 11861 11863 11864 12155 12158 12205 11859 11861 11862 11864 11865 12201 12202 12205 11517 11518 11519 11520 11854 11856 11857 11858 11859 11861 11862 11863 11865 12195 12198 12201 12202 12205 11858 11863 11864 12195 12198 12201 12202 12205 11855 11856 11857 11868 11869 12196 12198 12208 11525 11527 11528 11868 11869 11870 11871 12208 11866 11867 11869 11870 11871 12196 12198 12208 11521 11522 11523 11524 11525 11527 11528 11855 11856 11857 11866 11867 11868 11870 11871 12196 12198 12208 11867 11868 11869 11871 11872 12187 12191 12208 11525 11526 11527 11528 11529 11530 11531 11846 11847 11850 11867 11868 11869 11870 11872 12187 12191 12208 11846 11847 11850 11870 11871 12187 12191 12208 11706 11707 11708 11709 11710 11874 11875 11876 11878 12051 12052 12211 11532 11533 11534 11535 11536 11537 11706 11707 11708 11709 11710 11873 11875 11876 11878 11879 11881 12051 12052 12211 11535 11536 11537 11873 11874 11876 11878 11879 11881 12051 12052 12211 11873 11874 11875 11877 11878 12051 12052 12211 12212 12215 12216 12218 11876 11878 11879 11880 11881 12211 12212 12215 12216 12218 12219 12221 11535 11536 11537 11873 11874 11875 11876 11877 11879 11880 11881 12051 12052 12211 12212 12215 12216 12218 12219 12221 11535 11536 11537 11874 11875 11877 11878 11880 11881 12218 12219 12221 11877 11878 11879 11881 11882 11883 11884 12218 12219 12221 12222 12224 11535 11536 11537 11538 11539 11540 11874 11875 11877 11878 11879 11880 11882 11883 11884 12218 12219 12221 12222 12224 11536 11537 11538 11539 11540 11880 11881 11883 11884 12221 12222 12224 11880 11881 11882 11884 11885 11886 11887 12221 12222 12224 12225 12227 11536 11537 11538 11539 11540 11541 11548 11549 11880 11881 11882 11883 11885 11886 11887 12221 12222 12224 12225 12227 11539 11540 11541 11548 11549 11883 11884 11886 11887 12224 12225 12227 11883 11884 11885 11887 11888 11895 11896 12224 12225 12227 12228 12230 11539 11540 11541 11548 11549 11550 11557 11558 11883 11884 11885 11886 11888 11895 11896 12224 12225 12227 12228 12230 11548 11549 11550 11557 11558 11886 11887 11895 11896 12227 12228 12230 11545 11546 11547 11579 11580 11890 11891 11893 11894 11903 11904 12234 11542 11543 11544 11545 11546 11547 11554 11555 11556 11579 11580 11889 11891 11893 11894 11900 11901 11903 11904 12234 11554 11555 11556 11889 11890 11893 11894 11900 11901 11903 11904 12234 11578 11579 11580 11582 11583 11893 11894 11917 11918 12234 12235 12237 11545 11546 11547 11578 11579 11580 11582 11583 11889 11890 11891 11892 11894 11903 11904 11917 11918 12234 12235 12237 11889 11890 11891 11892 11893 11903 11904 11917 11918 12234 12235 12237 11886 11887 11888 11896 11897 11905 11906 12227 12228 12230 12231 12240 11548 11549 11550 11557 11558 11559 11567 11568 11886 11887 11888 11895 11897 11905 11906 12227 12228 12230 12231 12240 11557 11558 11559 11567 11568 11895 11896 11905 11906 12230 12231 12240 11564 11565 11566 11899 11900 11908 11909 12243 11898 11900 11901 11902 11903 11908 11909 12243 11551 11552 11553 11554 11555 11556 11564 11565 11566 11890 11891 11898 11899 11901 11902 11903 11908 11909 12243 11554 11555 11556 11890 11891 11899 11900 11902 11903 12243 11899 11900 11901 11903 11904 12232 12234 12243 11554 11555 11556 11889 11890 11891 11893 11894 11899 11900 11901 11902 11904 12232 12234 12243 11889 11890 11891 11893 11894 11902 11903 12232 12234 12243 11895 11896 11897 11906 11907 11911 11912 12230 12231 12240 12241 12246 11557 11558 11559 11567 11568 11569 11573 11574 11895 11896 11897 11905 11907 11911 11912 12230 12231 12240 12241 12246 11567 11568 11569 11573 11574 11905 11906 11911 11912 12240 12241 12246 11898 11899 11900 11909 11910 11914 11915 12243 12244 12248 11560 11561 11562 11563 11564 11565 11566 11570 11571 11572 11576 11577 11898 11899 11900 11908 11910 11914 11915 12243 12244 12248 11570 11571 11572 11576 11577 11908 11909 11914 11915 12243 12244 12248 11905 11906 11907 11912 11913 11914 11915 12240 12241 12246 12247 12248 11567 11568 11569 11573 11574 11575 11576 11577 11905 11906 11907 11911 11913 11914 11915 12240 12241 12246 12247 12248 11573 11574 11575 11576 11577 11911 11912 11914 11915 12246 12247 12248 11570 11571 11572 11573 11574 11575 11576 11577 11908 11909 11910 11911 11912 11913 11915 12243 12244 12246 12247 12248 11908 11909 11910 11911 11912 11913 11914 12243 12244 12246 12247 12248 11581 11582 11583 11585 11586 11917 11918 11920 11921 12237 12238 12252 11578 11579 11580 11581 11582 11583 11585 11586 11892 11893 11894 11916 11918 11920 11921 12234 12235 12237 12238 12252 11892 11893 11894 11916 11917 11920 11921 12234 12235 12237 12238 12252 11584 11585 11586 11588 11589 11920 11921 11923 11924 12252 12253 12255 11581 11582 11583 11584 11585 11586 11588 11589 11916 11917 11918 11919 11921 11923 11924 12237 12238 12252 12253 12255 11916 11917 11918 11919 11920 11923 11924 12237 12238 12252 12253 12255 11587 11588 11589 11591 11592 11923 11924 11926 11927 12255 12256 12262 11584 11585 11586 11587 11588 11589 11591 11592 11919 11920 11921 11922 11924 11926 11927 12252 12253 12255 12256 12262 11919 11920 11921 11922 11923 11926 11927 12252 12253 12255 12256 12262 11590 11591 11592 11594 11595 11926 11927 11929 11930 12262 12263 12265 11587 11588 11589 11590 11591 11592 11594 11595 11922 11923 11924 11925 11927 11929 11930 12255 12256 12262 12263 12265 11922 11923 11924 11925 11926 11929 11930 12255 12256 12262 12263 12265 11593 11594 11595 11597 11598 11929 11930 11932 11933 12265 12266 12269 11590 11591 11592 11593 11594 11595 11597 11598 11925 11926 11927 11928 11930 11932 11933 12262 12263 12265 12266 12269 11925 11926 11927 11928 11929 11932 11933 12262 12263 12265 12266 12269 11596 11597 11598 11599 11600 11932 11933 11934 11935 12258 12259 12269 11593 11594 11595 11596 11597 11598 11599 11600 11928 11929 11930 11931 11933 11934 11935 12258 12259 12265 12266 12269 11928 11929 11930 11931 11932 11934 11935 12258 12259 12265 12266 12269 11931 11932 11933 11935 12258 12259 12269 11596 11597 11598 11599 11600 11931 11932 11933 11934 12258 12259 12269 11711 11712 11713 11715 11716 11937 11938 12054 12055 12272 12273 12277 11936 11938 11939 11972 11973 12054 12055 12272 12273 12277 12278 12286 11635 11639 11640 11711 11712 11713 11715 11716 11936 11937 11939 11972 11973 12054 12055 12272 12273 12277 12278 12286 11635 11639 11640 11712 11713 11937 11938 11972 11973 12277 12278 12286 11704 11941 11945 11947 11948 11950 11995 11997 12040 12041 12044 12289 11940 11948 11950 12040 12041 12044 12045 12280 12281 12288 12289 12292 11636 11637 11638 11643 11644 11943 11944 11951 11952 11976 11977 12295 11601 11602 11603 11604 11605 11606 11610 11611 11636 11637 11638 11643 11644 11942 11944 11951 11952 11976 11977 12295 11604 11605 11606 11610 11611 11942 11943 11951 11952 11976 11977 12295 11704 11940 11946 11947 11949 11950 11954 11956 11995 11997 12041 12300 11607 11662 11664 11945 11947 11949 11950 11954 11956 11957 11960 12300 11607 11662 11663 11664 11704 11940 11945 11946 11949 11950 11954 11956 11957 11960 11995 11997 11998 12000 12041 12300 11940 11941 11949 11950 12040 12041 12044 12289 12290 12297 12300 12302 11945 11946 11947 11948 11950 11954 11956 12289 12290 12297 12300 12302 11704 11940 11941 11945 11946 11947 11948 11949 11954 11956 11995 11997 12040 12041 12044 12289 12290 12297 12300 12302 11942 11943 11944 11952 11953 11961 11962 11976 11977 12295 12296 12305 11604 11605 11606 11609 11610 11611 11620 11621 11942 11943 11944 11951 11953 11961 11962 11976 11977 12295 12296 12305 11609 11610 11611 11620 11621 11951 11952 11961 11962 12295 12296 12305 11945 11946 11947 11949 11950 11955 11956 12298 12300 12308 11954 11956 11957 11959 11960 12298 12300 12308 11607 11662 11664 11945 11946 11947 11949 11950 11954 11955 11957 11959 11960 12298 12300 12308 11607 11662 11664 11946 11947 11955 11956 11959 11960 12308 11612 11613 11614 11959 11960 11965 11966 12308 11955 11956 11957 11958 11960 11965 11966 12308 11607 11608 11612 11613 11614 11662 11664 11665 11667 11946 11947 11955 11956 11957 11958 11959 11965 11966 12308 11951 11952 11953 11962 11963 11967 11968 12295 12296 12305 12306 12311 11609 11610 11611 11619 11620 11621 11626 11627 11951 11952 11953 11961 11963 11967 11968 12295 12296 12305 12306 12311 11619 11620 11621 11626 11627 11961 11962 11967 11968 12305 12306 12311 11622 11623 11624 11633 11634 11965 11966 11970 11971 12307 12308 12313 11612 11613 11614 11615 11616 11617 11618 11622 11623 11624 11633 11634 11958 11959 11960 11964 11966 11970 11971 12307 12308 12313 11958 11959 11960 11964 11965 11970 11971 12307 12308 12313 11961 11962 11963 11968 11969 11970 11971 12305 12306 12311 12312 12313 11619 11620 11621 11625 11626 11627 11631 11632 11961 11962 11963 11967 11969 11970 11971 12305 12306 12311 12312 12313 11625 11626 11627 11631 11632 11967 11968 11970 11971 12311 12312 12313 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11964 11965 11966 11967 11968 11969 11971 12307 12308 12311 12312 12313 11964 11965 11966 11967 11968 11969 11970 12307 12308 12311 12312 12313 11937 11938 11939 11973 11974 11978 11979 12277 12278 12286 12287 12316 11635 11639 11640 11641 11645 11646 11712 11713 11937 11938 11939 11972 11974 11978 11979 12277 12278 12286 12287 12316 11639 11640 11641 11645 11646 11972 11973 11978 11979 12286 12287 12316 11642 11643 11644 11648 11649 11976 11977 11981 11982 12294 12295 12319 11636 11637 11638 11642 11643 11644 11648 11649 11942 11943 11944 11951 11952 11975 11977 11981 11982 12294 12295 12319 11942 11943 11944 11951 11952 11975 11976 11981 11982 12294 12295 12319 11972 11973 11974 11979 11980 11984 11985 12286 12287 12316 12317 12322 11639 11640 11641 11645 11646 11647 11651 11652 11972 11973 11974 11978 11980 11984 11985 12286 12287 12316 12317 12322 11645 11646 11647 11651 11652 11978 11979 11984 11985 12316 12317 12322 11975 11976 11977 11982 11983 11987 11988 12294 12295 12319 12320 12325 11642 11643 11644 11648 11649 11650 11654 11655 11975 11976 11977 11981 11983 11987 11988 12294 12295 12319 12320 12325 11648 11649 11650 11654 11655 11981 11982 11987 11988 12319 12320 12325 11978 11979 11980 11985 11986 11990 11991 12316 12317 12322 12323 12328 11645 11646 11647 11651 11652 11653 11657 11658 11978 11979 11980 11984 11986 11990 11991 12316 12317 12322 12323 12328 11651 11652 11653 11657 11658 11984 11985 11990 11991 12322 12323 12328 11981 11982 11983 11988 11989 11993 11994 12319 12320 12325 12326 12330 11648 11649 11650 11654 11655 11656 11660 11661 11981 11982 11983 11987 11989 11993 11994 12319 12320 12325 12326 12330 11654 11655 11656 11660 11661 11987 11988 11993 11994 12325 12326 12330 11984 11985 11986 11991 11992 11993 11994 12322 12323 12328 12329 12330 11651 11652 11653 11657 11658 11659 11660 11661 11984 11985 11986 11990 11992 11993 11994 12322 12323 12328 12329 12330 11657 11658 11659 11660 11661 11990 11991 11993 11994 12328 12329 12330 11654 11655 11656 11657 11658 11659 11660 11661 11987 11988 11989 11990 11991 11992 11994 12325 12326 12328 12329 12330 11987 11988 11989 11990 11991 11992 11993 12325 12326 12328 12329 12330 11704 11940 11945 11947 11950 11996 11997 12041 12042 12334 12335 12337 11995 11997 11998 11999 12000 12041 12042 12334 12335 12337 12338 12340 11662 11663 11664 11704 11940 11945 11947 11950 11995 11996 11998 11999 12000 12041 12042 12334 12335 12337 12338 12340 11662 11663 11664 11704 11947 11996 11997 11999 12000 12337 12338 12340 11996 11997 11998 12000 12001 12002 12003 12337 12338 12340 12341 12343 11662 11663 11664 11665 11666 11667 11704 11947 11996 11997 11998 11999 12001 12002 12003 12337 12338 12340 12341 12343 11663 11664 11665 11666 11667 11999 12000 12002 12003 12340 12341 12343 11999 12000 12001 12003 12004 12005 12006 12340 12341 12343 12344 12346 11663 11664 11665 11666 11667 11668 11669 11670 11999 12000 12001 12002 12004 12005 12006 12340 12341 12343 12344 12346 11666 11667 11668 11669 11670 12002 12003 12005 12006 12343 12344 12346 12002 12003 12004 12006 12007 12008 12009 12343 12344 12346 12347 12349 11666 11667 11668 11669 11670 11671 11672 11673 12002 12003 12004 12005 12007 12008 12009 12343 12344 12346 12347 12349 11669 11670 11671 11672 11673 12005 12006 12008 12009 12346 12347 12349 12005 12006 12007 12009 12010 12011 12012 12346 12347 12349 12350 12352 11669 11670 11671 11672 11673 11674 11675 11676 12005 12006 12007 12008 12010 12011 12012 12346 12347 12349 12350 12352 11672 11673 11674 11675 11676 12008 12009 12011 12012 12349 12350 12352 12008 12009 12010 12012 12013 12014 12015 12349 12350 12352 12353 12355 11672 11673 11674 11675 11676 11677 11678 11679 12008 12009 12010 12011 12013 12014 12015 12349 12350 12352 12353 12355 11675 11676 11677 11678 11679 12011 12012 12014 12015 12352 12353 12355 12011 12012 12013 12015 12016 12017 12018 12352 12353 12355 12356 12358 11675 11676 11677 11678 11679 11680 11681 11682 12011 12012 12013 12014 12016 12017 12018 12352 12353 12355 12356 12358 11678 11679 11680 11681 11682 12014 12015 12017 12018 12355 12356 12358 12014 12015 12016 12018 12019 12020 12021 12355 12356 12358 12359 12361 11678 11679 11680 11681 11682 11683 11684 11685 12014 12015 12016 12017 12019 12020 12021 12355 12356 12358 12359 12361 11681 11682 11683 11684 11685 12017 12018 12020 12021 12358 12359 12361 12017 12018 12019 12021 12022 12023 12024 12358 12359 12361 12362 12364 11681 11682 11683 11684 11685 11686 11687 11688 12017 12018 12019 12020 12022 12023 12024 12358 12359 12361 12362 12364 11684 11685 11686 11687 11688 12020 12021 12023 12024 12361 12362 12364 12020 12021 12022 12024 12025 12026 12027 12361 12362 12364 12365 12367 11684 11685 11686 11687 11688 11689 11690 11691 12020 12021 12022 12023 12025 12026 12027 12361 12362 12364 12365 12367 11687 11688 11689 11690 11691 12023 12024 12026 12027 12364 12365 12367 12023 12024 12025 12027 12028 12029 12030 12364 12365 12367 12368 12370 11687 11688 11689 11690 11691 11692 11693 11694 12023 12024 12025 12026 12028 12029 12030 12364 12365 12367 12368 12370 11690 11691 11692 11693 11694 12026 12027 12029 12030 12367 12368 12370 12026 12027 12028 12030 12031 12032 12033 12367 12368 12370 12371 12373 11690 11691 11692 11693 11694 11695 11696 11697 12026 12027 12028 12029 12031 12032 12033 12367 12368 12370 12371 12373 11693 11694 11695 11696 11697 12029 12030 12032 12033 12370 12371 12373 12029 12030 12031 12033 12034 12035 12036 12370 12371 12373 12374 12376 11693 11694 11695 11696 11697 11698 11699 11700 12029 12030 12031 12032 12034 12035 12036 12370 12371 12373 12374 12376 11696 11697 11698 11699 11700 12032 12033 12035 12036 12373 12374 12376 12032 12033 12034 12036 12037 12038 12039 12373 12374 12376 12377 12378 11696 11697 11698 11699 11700 11701 11702 11703 12032 12033 12034 12035 12037 12038 12039 12373 12374 12376 12377 12378 11699 11700 11701 11702 11703 12035 12036 12038 12039 12376 12377 12378 11699 11700 11701 11702 11703 12035 12036 12037 12039 12376 12377 12378 12035 12036 12037 12038 12376 12377 12378 11940 11941 11948 11950 12041 12042 12043 12044 12289 12332 12334 12381 11704 11940 11941 11945 11947 11948 11950 11995 11996 11997 12040 12042 12043 12044 12289 12332 12334 12335 12337 12381 11995 11996 11997 12040 12041 12043 12044 12332 12334 12335 12337 12381 12040 12041 12042 12044 12045 12046 12280 12332 12334 12381 12382 12384 11940 11941 11948 11950 12040 12041 12042 12043 12045 12046 12280 12281 12288 12289 12292 12332 12334 12381 12382 12384 11941 12043 12044 12046 12280 12281 12288 12289 12292 12381 12382 12384 12043 12044 12045 12274 12279 12280 12283 12381 12382 12384 12385 12387 11760 11761 11762 12048 12049 12076 12077 12101 12102 12396 12397 12398 12047 12049 12050 12051 12052 12101 12102 12210 12211 12396 12397 12398 11705 11706 11707 11760 11761 11762 12047 12048 12050 12051 12052 12076 12077 12101 12102 12210 12211 12396 12397 12398 11705 11706 11707 11761 11762 12048 12049 12051 12052 12210 12211 12398 11705 11706 11707 11708 11709 11710 11761 11762 11873 11874 11875 11876 11878 12048 12049 12050 12052 12210 12211 12398 11873 11874 11875 11876 11878 12048 12049 12050 12051 12210 12211 12398 11714 11715 11716 11718 11719 12054 12055 12057 12058 12270 12272 12401 11711 11712 11713 11714 11715 11716 11718 11719 11936 11937 11938 12053 12055 12057 12058 12270 12272 12273 12277 12401 11936 11937 11938 12053 12054 12057 12058 12270 12272 12273 12277 12401 11717 11718 11719 11768 11769 12057 12058 12060 12061 12400 12401 12404 11714 11715 11716 11717 11718 11719 11768 11769 12053 12054 12055 12056 12058 12060 12061 12270 12272 12400 12401 12404 12053 12054 12055 12056 12057 12060 12061 12270 12272 12400 12401 12404 11767 11768 11769 11772 11773 12060 12061 12108 12109 12403 12404 12407 11717 11718 11719 11767 11768 11769 11772 11773 12056 12057 12058 12059 12061 12108 12109 12400 12401 12403 12404 12407 12056 12057 12058 12059 12060 12108 12109 12400 12401 12403 12404 12407 11826 11827 11828 12063 12065 12165 12166 12411 12062 12064 12065 12066 12069 12165 12166 12411 11724 11725 11728 12063 12065 12066 12069 12411 11720 11721 11722 11723 11724 11725 11728 11826 11827 11828 12062 12063 12064 12066 12069 12165 12166 12411 12063 12064 12065 12067 12069 12411 12412 12415 12066 12068 12069 12070 12073 12411 12412 12415 11725 11726 11728 12067 12069 12070 12073 12415 11724 11725 11726 11728 12063 12064 12065 12066 12067 12068 12070 12073 12411 12412 12415 12067 12068 12069 12071 12073 12415 12416 12419 12070 12072 12073 12093 12098 12415 12416 12419 11754 11755 11759 12071 12073 12093 12098 12419 11725 11726 11727 11728 11729 11730 11731 11754 11755 11759 12067 12068 12069 12070 12071 12072 12093 12098 12415 12416 12419 11736 11737 11738 11760 11761 12075 12076 12083 12084 12424 12074 12076 12077 12083 12084 12099 12101 12424 11736 11737 11738 11760 11761 11762 12047 12049 12074 12075 12077 12083 12084 12099 12101 12424 11760 11761 11762 12047 12049 12075 12076 12099 12101 12424 11743 11744 11745 12079 12080 12085 12091 12427 12078 12080 12081 12082 12083 12085 12091 12427 11732 11733 11734 11735 11736 11737 11739 11741 11743 11744 11745 12078 12079 12081 12082 12083 12085 12091 12427 11733 11734 11735 11736 11737 12079 12080 12082 12083 12427 12079 12080 12081 12083 12084 12423 12424 12427 11733 11734 11735 11736 11737 11738 11760 11761 12074 12075 12076 12079 12080 12081 12082 12084 12423 12424 12427 12074 12075 12076 12082 12083 12423 12424 12427 12078 12079 12080 12086 12091 12426 12427 12430 12085 12091 12092 12426 12427 12429 12430 12433 11750 11751 11752 12088 12089 12095 12096 12433 12087 12089 12090 12091 12092 12095 12096 12433 11739 11740 11741 11742 11743 11744 11750 11751 11752 12087 12088 12090 12091 12092 12095 12096 12433 11742 11743 11744 12088 12089 12091 12092 12433 11742 11743 11744 11745 12078 12079 12080 12085 12086 12088 12089 12090 12092 12426 12427 12429 12430 12433 12086 12088 12089 12090 12091 12429 12430 12433 12071 12072 12073 12097 12098 12419 12420 12433 11753 11756 11757 12095 12096 12097 12098 12433 11746 11747 11748 11749 11750 11751 11752 11753 11756 11757 12087 12088 12089 12094 12096 12097 12098 12433 12087 12088 12089 12094 12095 12097 12098 12433 12093 12094 12095 12096 12098 12419 12420 12433 11753 11754 11755 11756 11757 11758 11759 12071 12072 12073 12093 12094 12095 12096 12097 12419 12420 12433 12075 12076 12077 12100 12101 12421 12424 12436 12099 12101 12102 12393 12396 12421 12424 12436 11760 11761 11762 12047 12048 12049 12075 12076 12077 12099 12100 12102 12393 12396 12397 12398 12421 12424 12436 12047 12048 12049 12100 12101 12393 12396 12397 12398 12436 11814 11815 11816 12105 12106 12152 12153 12440 11775 11780 11781 12105 12106 12117 12122 12440 11763 11764 11765 11766 11775 11780 11781 11814 11815 11816 12103 12104 12106 12117 12122 12152 12153 12440 12103 12104 12105 12117 12122 12152 12153 12440 11771 11772 11773 12108 12109 12110 12112 12113 12115 12406 12407 12444 11767 11768 11769 11771 11772 11773 12059 12060 12061 12107 12109 12110 12112 12113 12115 12403 12404 12406 12407 12444 12059 12060 12061 12107 12108 12110 12112 12403 12404 12406 12407 12444 12107 12108 12109 12111 12112 12406 12407 12444 12445 12449 12110 12112 12113 12114 12115 12444 12445 12449 11771 11772 11773 12107 12108 12109 12110 12111 12113 12114 12115 12406 12407 12444 12445 12449 11771 11772 11773 12107 12108 12111 12112 12114 12115 12449 12111 12112 12113 12115 12116 12118 12120 12449 11770 11771 11772 11773 11774 11776 11778 12107 12108 12111 12112 12113 12114 12116 12118 12120 12449 11774 11776 11778 12114 12115 12118 12120 12449 12104 12105 12106 12122 12123 12439 12440 12451 12114 12115 12116 12119 12120 12449 12450 12451 12118 12120 12121 12122 12123 12449 12450 12451 11774 11776 11777 11778 12114 12115 12116 12118 12119 12121 12122 12123 12449 12450 12451 11776 11777 11778 12119 12120 12122 12123 12451 11775 11776 11777 11778 11779 11780 11781 12104 12105 12106 12117 12119 12120 12121 12123 12439 12440 12451 12117 12119 12120 12121 12122 12439 12440 12451 11818 11819 11820 12125 12127 12157 12158 12456 12124 12126 12127 12128 12131 12157 12158 12456 11786 11787 11789 12125 12127 12128 12131 12456 11782 11783 11784 11785 11786 11787 11789 11818 11819 11820 12124 12125 12126 12128 12131 12157 12158 12456 12125 12126 12127 12129 12131 12455 12456 12460 12128 12130 12131 12132 12135 12455 12456 12460 11790 11791 11793 12129 12131 12132 12135 12460 11786 11787 11788 11789 11790 11791 11793 12125 12126 12127 12128 12129 12130 12132 12135 12455 12456 12460 12129 12130 12131 12133 12135 12459 12460 12464 12132 12134 12135 12136 12140 12459 12460 12464 11794 11795 11798 12133 12135 12136 12140 12464 11790 11791 11792 11793 11794 11795 11798 12129 12130 12131 12132 12133 12134 12136 12140 12459 12460 12464 12133 12134 12135 12137 12140 12463 12464 12468 12136 12138 12140 12463 12464 12467 12468 12471 12137 12139 12140 12141 12143 12467 12468 12471 11795 11796 11798 12138 12140 12141 12143 12471 11794 11795 11796 11798 12133 12134 12135 12136 12137 12138 12139 12141 12143 12463 12464 12467 12468 12471 12138 12139 12140 12142 12143 12144 12147 12471 11802 11803 11805 12141 12143 12144 12147 12471 11795 11796 11797 11798 11799 11800 11801 11802 11803 11805 12138 12139 12140 12141 12142 12144 12147 12471 12141 12142 12143 12145 12147 12470 12471 12475 12144 12146 12147 12148 12151 12470 12471 12475 11806 11807 11809 12145 12147 12148 12151 12475 11802 11803 11804 11805 11806 11807 11809 12141 12142 12143 12144 12145 12146 12148 12151 12470 12471 12475 12145 12146 12147 12149 12151 12474 12475 12477 12148 12150 12151 12153 12154 12474 12475 12477 11810 11811 11813 12149 12151 12153 12154 12477 11806 11807 11808 11809 11810 11811 11813 12145 12146 12147 12148 12149 12150 12153 12154 12474 12475 12477 12103 12105 12106 12153 12154 12438 12440 12477 11810 11811 11812 11813 11814 11815 11816 12103 12105 12106 12149 12150 12151 12152 12154 12438 12440 12477 12149 12150 12151 12152 12153 12438 12440 12477 11860 11861 11862 12156 12158 12204 12205 12482 12155 12157 12158 12204 12205 12453 12456 12482 12124 12125 12127 12156 12158 12453 12456 12482 11817 11818 11819 11820 11860 11861 11862 12124 12125 12127 12155 12156 12157 12204 12205 12453 12456 12482 11843 11844 11845 12160 12163 12185 12186 12487 12159 12162 12163 12185 12186 12485 12487 12489 11822 11844 11845 12162 12163 12164 12165 12489 12160 12161 12163 12164 12165 12485 12487 12489 11822 11843 11844 11845 12159 12160 12161 12162 12164 12165 12185 12186 12485 12487 12489 12161 12162 12163 12165 12166 12409 12411 12489 11821 11822 11823 11824 11825 11826 11827 11828 11844 11845 12062 12063 12065 12161 12162 12163 12164 12166 12409 12411 12489 12062 12063 12065 12164 12165 12409 12411 12489 11851 11852 11853 12168 12171 12193 12194 12496 12167 12170 12171 12193 12194 12494 12496 12498 11830 11832 11833 12170 12171 12172 12173 12498 12168 12169 12171 12172 12173 12494 12496 12498 11829 11830 11832 11833 11851 11852 11853 12167 12168 12169 12170 12172 12173 12193 12194 12494 12496 12498 12169 12170 12171 12173 12174 12175 12179 12498 11830 11831 11832 11833 11834 11835 11837 11838 12169 12170 12171 12172 12174 12175 12177 12179 12183 12498 11835 12172 12173 12175 12177 12179 12183 12498 12172 12173 12174 12176 12179 12498 12499 12504 12175 12178 12179 12498 12499 12502 12504 12508 11835 12173 12174 12178 12179 12180 12183 12508 12176 12177 12179 12180 12183 12502 12504 12508 11835 12172 12173 12174 12175 12176 12177 12178 12180 12183 12498 12499 12502 12504 12508 12177 12178 12179 12182 12183 12506 12508 12510 11839 11841 11842 12182 12183 12184 12185 12510 12180 12181 12183 12184 12185 12506 12508 12510 11834 11835 11836 11837 11838 11839 11841 11842 12173 12174 12177 12178 12179 12180 12181 12182 12184 12185 12506 12508 12510 12181 12182 12183 12185 12186 12483 12487 12510 11839 11840 11841 11842 11843 11844 11845 12159 12160 12163 12181 12182 12183 12184 12186 12483 12487 12510 12159 12160 12163 12184 12185 12483 12487 12510 11870 11871 11872 12188 12191 12208 12209 12515 12187 12190 12191 12208 12209 12513 12515 12517 11847 11849 11850 12190 12191 12192 12193 12517 12188 12189 12191 12192 12193 12513 12515 12517 11846 11847 11849 11850 11870 11871 11872 12187 12188 12189 12190 12192 12193 12208 12209 12513 12515 12517 12189 12190 12191 12193 12194 12492 12496 12517 11847 11848 11849 11850 11851 11852 11853 12167 12168 12171 12189 12190 12191 12192 12194 12492 12496 12517 12167 12168 12171 12192 12193 12492 12496 12517 11858 11864 11865 12197 12198 12199 12202 12524 11866 11868 11869 12197 12198 12206 12208 12524 12195 12196 12198 12199 12202 12206 12208 12524 11854 11855 11856 11857 11858 11864 11865 11866 11868 11869 12195 12196 12197 12199 12202 12206 12208 12524 12195 12197 12198 12200 12202 12523 12524 12527 12199 12201 12202 12203 12205 12523 12524 12527 11863 11864 11865 12200 12202 12203 12205 12527 11858 11863 11864 11865 12195 12197 12198 12199 12200 12201 12203 12205 12523 12524 12527 12200 12201 12202 12204 12205 12479 12482 12527 12155 12156 12158 12203 12205 12479 12482 12527 11859 11860 11861 11862 11863 11864 11865 12155 12156 12158 12200 12201 12202 12203 12204 12479 12482 12527 12196 12197 12198 12207 12208 12521 12524 12529 12206 12208 12209 12512 12515 12521 12524 12529 11866 11867 11868 11869 11870 11871 11872 12187 12188 12191 12196 12197 12198 12206 12207 12209 12512 12515 12521 12524 12529 12187 12188 12191 12207 12208 12512 12515 12529 12048 12049 12050 12051 12052 12211 12212 12213 12215 12398 12399 12532 11873 11874 11875 11876 11877 11878 12048 12049 12050 12051 12052 12210 12212 12213 12215 12216 12218 12398 12399 12532 11876 11877 11878 12210 12211 12213 12215 12216 12218 12398 12399 12532 12210 12211 12212 12214 12215 12398 12399 12532 12533 12536 12537 12539 12213 12215 12216 12217 12218 12532 12533 12536 12537 12539 12540 12542 11876 11877 11878 12210 12211 12212 12213 12214 12216 12217 12218 12398 12399 12532 12533 12536 12537 12539 12540 12542 11876 11877 11878 12211 12212 12214 12215 12217 12218 12539 12540 12542 12214 12215 12216 12218 12219 12220 12221 12539 12540 12542 12543 12545 11876 11877 11878 11879 11880 11881 12211 12212 12214 12215 12216 12217 12219 12220 12221 12539 12540 12542 12543 12545 11877 11878 11879 11880 11881 12217 12218 12220 12221 12542 12543 12545 12217 12218 12219 12221 12222 12223 12224 12542 12543 12545 12546 12548 11877 11878 11879 11880 11881 11882 11883 11884 12217 12218 12219 12220 12222 12223 12224 12542 12543 12545 12546 12548 11880 11881 11882 11883 11884 12220 12221 12223 12224 12545 12546 12548 12220 12221 12222 12224 12225 12226 12227 12545 12546 12548 12549 12551 11880 11881 11882 11883 11884 11885 11886 11887 12220 12221 12222 12223 12225 12226 12227 12545 12546 12548 12549 12551 11883 11884 11885 11886 11887 12223 12224 12226 12227 12548 12549 12551 12223 12224 12225 12227 12228 12229 12230 12548 12549 12551 12552 12554 11883 11884 11885 11886 11887 11888 11895 11896 12223 12224 12225 12226 12228 12229 12230 12548 12549 12551 12552 12554 11886 11887 11888 11895 11896 12226 12227 12229 12230 12551 12552 12554 12226 12227 12228 12230 12231 12239 12240 12551 12552 12554 12555 12557 11886 11887 11888 11895 11896 11897 11905 11906 12226 12227 12228 12229 12231 12239 12240 12551 12552 12554 12555 12557 11895 11896 11897 11905 11906 12229 12230 12239 12240 12554 12555 12557 11902 11903 11904 12233 12234 12242 12243 12560 12232 12234 12235 12236 12237 12242 12243 12560 11889 11890 11891 11892 11893 11894 11902 11903 11904 11917 11918 12232 12233 12235 12236 12237 12242 12243 12560 11892 11893 11894 11917 11918 12233 12234 12236 12237 12560 12233 12234 12235 12237 12238 12250 12252 12560 11892 11893 11894 11916 11917 11918 11920 11921 12233 12234 12235 12236 12238 12250 12252 12560 11916 11917 11918 11920 11921 12236 12237 12250 12252 12560 12229 12230 12231 12240 12241 12245 12246 12554 12555 12557 12558 12563 11895 11896 11897 11905 11906 11907 11911 11912 12229 12230 12231 12239 12241 12245 12246 12554 12555 12557 12558 12563 11905 11906 11907 11911 11912 12239 12240 12245 12246 12557 12558 12563 12232 12233 12234 12243 12244 12248 12249 12560 12561 12565 11898 11899 11900 11901 11902 11903 11904 11908 11909 11910 11914 11915 12232 12233 12234 12242 12244 12248 12249 12560 12561 12565 11908 11909 11910 11914 11915 12242 12243 12248 12249 12560 12561 12565 12239 12240 12241 12246 12247 12248 12249 12557 12558 12563 12564 12565 11905 11906 11907 11911 11912 11913 11914 11915 12239 12240 12241 12245 12247 12248 12249 12557 12558 12563 12564 12565 11911 11912 11913 11914 11915 12245 12246 12248 12249 12563 12564 12565 11908 11909 11910 11911 11912 11913 11914 11915 12242 12243 12244 12245 12246 12247 12249 12560 12561 12563 12564 12565 12242 12243 12244 12245 12246 12247 12248 12560 12561 12563 12564 12565 12236 12237 12238 12251 12252 12559 12560 12568 12250 12252 12253 12254 12255 12559 12560 12568 11916 11917 11918 11919 11920 11921 11923 11924 12236 12237 12238 12250 12251 12253 12254 12255 12559 12560 12568 11919 11920 11921 11923 11924 12251 12252 12254 12255 12568 12251 12252 12253 12255 12256 12260 12262 12568 11919 11920 11921 11922 11923 11924 11926 11927 12251 12252 12253 12254 12256 12260 12262 12568 11922 11923 11924 11926 11927 12254 12255 12260 12262 12568 12258 12259 12267 12269 12571 11931 11932 11933 11934 11935 12257 12259 12267 12269 12571 11931 11932 11933 11934 11935 12257 12258 12267 12269 12571 12254 12255 12256 12261 12262 12567 12568 12573 12260 12262 12263 12264 12265 12567 12568 12573 11922 11923 11924 11925 11926 11927 11929 11930 12254 12255 12256 12260 12261 12263 12264 12265 12567 12568 12573 11925 11926 11927 11929 11930 12261 12262 12264 12265 12573 12261 12262 12263 12265 12266 12268 12269 12573 11925 11926 11927 11928 11929 11930 11932 11933 12261 12262 12263 12264 12266 12268 12269 12573 11928 11929 11930 11932 11933 12264 12265 12268 12269 12573 12257 12258 12259 12268 12269 12571 12572 12573 12264 12265 12266 12267 12269 12571 12572 12573 11928 11929 11930 11931 11932 11933 11934 11935 12257 12258 12259 12264 12265 12266 12267 12268 12571 12572 12573 12053 12054 12055 12057 12058 12271 12272 12401 12402 12577 12578 12582 12270 12272 12273 12276 12277 12401 12402 12577 12578 12582 12583 12591 11936 11937 11938 12053 12054 12055 12057 12058 12270 12271 12273 12276 12277 12401 12402 12577 12578 12582 12583 12591 11936 11937 11938 12054 12055 12271 12272 12276 12277 12582 12583 12591 12046 12275 12279 12280 12282 12283 12384 12385 12387 12388 12390 12594 12274 12282 12283 12387 12388 12390 12391 12585 12586 12593 12594 12597 12271 12272 12273 12277 12278 12285 12286 12582 12583 12591 12592 12600 11936 11937 11938 11939 11972 11973 12054 12055 12271 12272 12273 12276 12278 12285 12286 12582 12583 12591 12592 12600 11937 11938 11939 11972 11973 12276 12277 12285 12286 12591 12592 12600 12046 12274 12280 12281 12283 12284 12291 12292 12384 12385 12387 12603 11941 12043 12044 12045 12046 12274 12279 12281 12283 12284 12288 12289 12291 12292 12381 12382 12384 12385 12387 12603 11941 12044 12045 12279 12280 12283 12284 12288 12289 12291 12292 12603 12274 12275 12283 12284 12387 12388 12390 12594 12595 12602 12603 12606 12046 12274 12275 12279 12280 12281 12282 12284 12291 12292 12384 12385 12387 12388 12390 12594 12595 12602 12603 12606 12279 12280 12281 12282 12283 12291 12292 12594 12595 12602 12603 12606 12276 12277 12278 12286 12287 12315 12316 12591 12592 12600 12601 12609 11937 11938 11939 11972 11973 11974 11978 11979 12276 12277 12278 12285 12287 12315 12316 12591 12592 12600 12601 12609 11972 11973 11974 11978 11979 12285 12286 12315 12316 12600 12601 12609 11941 12044 12045 12280 12281 12289 12290 12292 12293 12302 12303 12613 11940 11941 11948 11949 11950 12040 12041 12044 12045 12280 12281 12288 12290 12292 12293 12297 12300 12302 12303 12613 11948 11949 11950 12288 12289 12292 12293 12297 12300 12302 12303 12613 12279 12280 12281 12283 12284 12292 12293 12603 12604 12613 12614 12616 11941 12044 12045 12279 12280 12281 12283 12284 12288 12289 12290 12291 12293 12302 12303 12603 12604 12613 12614 12616 12288 12289 12290 12291 12292 12302 12303 12603 12604 12613 12614 12616 11975 11976 11977 11981 11982 12295 12296 12304 12305 12318 12319 12619 11942 11943 11944 11951 11952 11953 11961 11962 11975 11976 11977 11981 11982 12294 12296 12304 12305 12318 12319 12619 11951 11952 11953 11961 11962 12294 12295 12304 12305 12318 12319 12619 11948 11949 11950 12289 12290 12299 12300 12301 12302 12622 11954 11955 11956 12299 12300 12308 12309 12622 12297 12298 12300 12301 12302 12308 12309 12622 11945 11946 11947 11948 11949 11950 11954 11955 11956 12289 12290 12297 12298 12299 12301 12302 12308 12309 12622 12297 12299 12300 12302 12303 12611 12613 12622 11948 11949 11950 12288 12289 12290 12292 12293 12297 12299 12300 12301 12303 12611 12613 12622 12288 12289 12290 12292 12293 12301 12302 12611 12613 12622 12294 12295 12296 12305 12306 12310 12311 12318 12319 12618 12619 12625 11951 11952 11953 11961 11962 11963 11967 11968 12294 12295 12296 12304 12306 12310 12311 12318 12319 12618 12619 12625 11961 11962 11963 11967 11968 12304 12305 12310 12311 12618 12619 12625 11964 11965 11966 11970 11971 12308 12309 12313 12314 12622 12623 12628 11954 11955 11956 11957 11958 11959 11960 11964 11965 11966 11970 11971 12298 12299 12300 12307 12309 12313 12314 12622 12623 12628 12298 12299 12300 12307 12308 12313 12314 12622 12623 12628 12304 12305 12306 12311 12312 12313 12314 12618 12619 12624 12625 12628 11961 11962 11963 11967 11968 11969 11970 11971 12304 12305 12306 12310 12312 12313 12314 12618 12619 12624 12625 12628 11967 11968 11969 11970 11971 12310 12311 12313 12314 12624 12625 12628 11964 11965 11966 11967 11968 11969 11970 11971 12307 12308 12309 12310 12311 12312 12314 12622 12623 12624 12625 12628 12307 12308 12309 12310 12311 12312 12313 12622 12623 12624 12625 12628 12285 12286 12287 12316 12317 12321 12322 12600 12601 12609 12610 12630 11972 11973 11974 11978 11979 11980 11984 11985 12285 12286 12287 12315 12317 12321 12322 12600 12601 12609 12610 12630 11978 11979 11980 11984 11985 12315 12316 12321 12322 12609 12610 12630 12294 12295 12296 12304 12305 12319 12320 12324 12325 12619 12620 12633 11975 11976 11977 11981 11982 11983 11987 11988 12294 12295 12296 12304 12305 12318 12320 12324 12325 12619 12620 12633 11981 11982 11983 11987 11988 12318 12319 12324 12325 12619 12620 12633 12315 12316 12317 12322 12323 12327 12328 12609 12610 12630 12631 12636 11978 11979 11980 11984 11985 11986 11990 11991 12315 12316 12317 12321 12323 12327 12328 12609 12610 12630 12631 12636 11984 11985 11986 11990 11991 12321 12322 12327 12328 12630 12631 12636 12318 12319 12320 12325 12326 12330 12331 12619 12620 12633 12634 12638 11981 11982 11983 11987 11988 11989 11993 11994 12318 12319 12320 12324 12326 12330 12331 12619 12620 12633 12634 12638 11987 11988 11989 11993 11994 12324 12325 12330 12331 12633 12634 12638 12321 12322 12323 12328 12329 12330 12331 12630 12631 12636 12637 12638 11984 11985 11986 11990 11991 11992 11993 11994 12321 12322 12323 12327 12329 12330 12331 12630 12631 12636 12637 12638 11990 11991 11992 11993 11994 12327 12328 12330 12331 12636 12637 12638 11987 11988 11989 11990 11991 11992 11993 11994 12324 12325 12326 12327 12328 12329 12331 12633 12634 12636 12637 12638 12324 12325 12326 12327 12328 12329 12330 12633 12634 12636 12637 12638 12040 12041 12042 12043 12044 12333 12334 12380 12381 12650 12332 12334 12335 12336 12337 12380 12381 12650 11995 11996 11997 12040 12041 12042 12043 12044 12332 12333 12335 12336 12337 12380 12381 12650 11995 11996 11997 12041 12042 12333 12334 12336 12337 12650 12333 12334 12335 12337 12338 12339 12340 12650 11995 11996 11997 11998 11999 12000 12041 12042 12333 12334 12335 12336 12338 12339 12340 12650 11996 11997 11998 11999 12000 12336 12337 12339 12340 12650 12336 12337 12338 12340 12341 12342 12343 12650 11996 11997 11998 11999 12000 12001 12002 12003 12336 12337 12338 12339 12341 12342 12343 12650 11999 12000 12001 12002 12003 12339 12340 12342 12343 12650 12339 12340 12341 12343 12344 12345 12346 12650 11999 12000 12001 12002 12003 12004 12005 12006 12339 12340 12341 12342 12344 12345 12346 12650 12002 12003 12004 12005 12006 12342 12343 12345 12346 12650 12342 12343 12344 12346 12347 12348 12349 12650 12002 12003 12004 12005 12006 12007 12008 12009 12342 12343 12344 12345 12347 12348 12349 12650 12005 12006 12007 12008 12009 12345 12346 12348 12349 12650 12345 12346 12347 12349 12350 12351 12352 12650 12005 12006 12007 12008 12009 12010 12011 12012 12345 12346 12347 12348 12350 12351 12352 12650 12008 12009 12010 12011 12012 12348 12349 12351 12352 12650 12348 12349 12350 12352 12353 12354 12355 12650 12008 12009 12010 12011 12012 12013 12014 12015 12348 12349 12350 12351 12353 12354 12355 12650 12011 12012 12013 12014 12015 12351 12352 12354 12355 12650 12351 12352 12353 12355 12356 12357 12358 12650 12011 12012 12013 12014 12015 12016 12017 12018 12351 12352 12353 12354 12356 12357 12358 12650 12014 12015 12016 12017 12018 12354 12355 12357 12358 12650 12354 12355 12356 12358 12359 12360 12361 12650 12014 12015 12016 12017 12018 12019 12020 12021 12354 12355 12356 12357 12359 12360 12361 12650 12017 12018 12019 12020 12021 12357 12358 12360 12361 12650 12357 12358 12359 12361 12362 12363 12364 12650 12017 12018 12019 12020 12021 12022 12023 12024 12357 12358 12359 12360 12362 12363 12364 12650 12020 12021 12022 12023 12024 12360 12361 12363 12364 12650 12360 12361 12362 12364 12365 12366 12367 12650 12020 12021 12022 12023 12024 12025 12026 12027 12360 12361 12362 12363 12365 12366 12367 12650 12023 12024 12025 12026 12027 12363 12364 12366 12367 12650 12363 12364 12365 12367 12368 12369 12370 12650 12023 12024 12025 12026 12027 12028 12029 12030 12363 12364 12365 12366 12368 12369 12370 12650 12026 12027 12028 12029 12030 12366 12367 12369 12370 12650 12366 12367 12368 12370 12371 12372 12373 12650 12026 12027 12028 12029 12030 12031 12032 12033 12366 12367 12368 12369 12371 12372 12373 12650 12029 12030 12031 12032 12033 12369 12370 12372 12373 12650 12369 12370 12371 12373 12374 12375 12376 12650 12029 12030 12031 12032 12033 12034 12035 12036 12369 12370 12371 12372 12374 12375 12376 12650 12032 12033 12034 12035 12036 12372 12373 12375 12376 12650 12372 12373 12374 12376 12377 12378 12379 12650 12032 12033 12034 12035 12036 12037 12038 12039 12372 12373 12374 12375 12377 12378 12379 12650 12035 12036 12037 12038 12039 12375 12376 12378 12379 12650 12035 12036 12037 12038 12039 12375 12376 12377 12379 12650 12375 12376 12377 12378 12650 12332 12333 12334 12381 12382 12383 12384 12650 12040 12041 12042 12043 12044 12045 12046 12280 12332 12333 12334 12380 12382 12383 12384 12650 12043 12044 12045 12046 12280 12380 12381 12383 12384 12650 12380 12381 12382 12384 12385 12386 12387 12650 12043 12044 12045 12046 12274 12279 12280 12283 12380 12381 12382 12383 12385 12386 12387 12650 12046 12274 12279 12280 12283 12383 12384 12386 12387 12650 12383 12384 12385 12387 12388 12389 12390 12650 12046 12274 12275 12279 12280 12282 12283 12383 12384 12385 12386 12388 12389 12390 12594 12650 12274 12275 12282 12283 12386 12387 12389 12390 12594 12650 12386 12387 12388 12390 12391 12392 12585 12650 12274 12275 12282 12283 12386 12387 12388 12389 12391 12392 12585 12586 12593 12594 12597 12650 12275 12389 12390 12392 12585 12586 12593 12594 12597 12650 12389 12390 12391 12579 12584 12585 12588 12650 12100 12101 12102 12394 12396 12436 12437 12655 12393 12395 12396 12436 12437 12653 12655 12657 12394 12396 12397 12398 12399 12531 12532 12653 12655 12657 12047 12048 12049 12100 12101 12102 12393 12394 12395 12397 12398 12399 12436 12437 12531 12532 12653 12655 12657 12047 12048 12049 12101 12102 12395 12396 12398 12399 12531 12532 12657 12047 12048 12049 12050 12051 12052 12101 12102 12210 12211 12212 12213 12215 12395 12396 12397 12399 12531 12532 12657 12210 12211 12212 12213 12215 12395 12396 12397 12398 12531 12532 12657 12056 12057 12058 12060 12061 12401 12402 12404 12405 12575 12577 12660 12053 12054 12055 12056 12057 12058 12060 12061 12270 12271 12272 12400 12402 12404 12405 12575 12577 12578 12582 12660 12270 12271 12272 12400 12401 12404 12405 12575 12577 12578 12582 12660 12059 12060 12061 12108 12109 12404 12405 12407 12408 12659 12660 12663 12056 12057 12058 12059 12060 12061 12108 12109 12400 12401 12402 12403 12405 12407 12408 12575 12577 12659 12660 12663 12400 12401 12402 12403 12404 12407 12408 12575 12577 12659 12660 12663 12107 12108 12109 12110 12112 12407 12408 12442 12444 12662 12663 12667 12059 12060 12061 12107 12108 12109 12110 12112 12403 12404 12405 12406 12408 12442 12444 12659 12660 12662 12663 12667 12403 12404 12405 12406 12407 12442 12444 12659 12660 12662 12663 12667 12164 12165 12166 12410 12411 12489 12490 12672 12409 12411 12412 12413 12415 12489 12490 12672 12062 12063 12064 12065 12066 12067 12069 12164 12165 12166 12409 12410 12412 12413 12415 12489 12490 12672 12066 12067 12069 12410 12411 12413 12415 12672 12410 12411 12412 12414 12415 12672 12673 12676 12413 12415 12416 12417 12419 12672 12673 12676 12066 12067 12068 12069 12070 12071 12073 12410 12411 12412 12413 12414 12416 12417 12419 12672 12673 12676 12070 12071 12073 12414 12415 12417 12419 12676 12414 12415 12416 12418 12419 12676 12677 12681 12417 12419 12420 12422 12433 12676 12677 12681 12070 12071 12072 12073 12093 12097 12098 12414 12415 12416 12417 12418 12420 12422 12433 12676 12677 12681 12093 12097 12098 12418 12419 12422 12433 12681 12099 12100 12101 12424 12425 12434 12436 12684 12418 12419 12420 12432 12433 12681 12682 12684 12082 12083 12084 12424 12425 12427 12428 12684 12074 12075 12076 12077 12082 12083 12084 12099 12100 12101 12421 12423 12425 12427 12428 12434 12436 12684 12421 12423 12424 12427 12428 12434 12436 12684 12085 12086 12091 12427 12428 12430 12431 12684 12078 12079 12080 12081 12082 12083 12084 12085 12086 12091 12423 12424 12425 12426 12428 12430 12431 12684 12423 12424 12425 12426 12427 12430 12431 12684 12086 12091 12092 12430 12431 12432 12433 12684 12085 12086 12091 12092 12426 12427 12428 12429 12431 12432 12433 12684 12426 12427 12428 12429 12430 12432 12433 12684 12422 12429 12430 12431 12433 12681 12682 12684 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12418 12419 12420 12422 12429 12430 12431 12432 12681 12682 12684 12421 12424 12425 12435 12436 12684 12685 12686 12434 12436 12437 12651 12655 12684 12685 12686 12099 12100 12101 12102 12393 12394 12396 12421 12424 12425 12434 12435 12437 12651 12655 12684 12685 12686 12393 12394 12396 12435 12436 12651 12655 12686 12152 12153 12154 12440 12441 12476 12477 12690 12117 12122 12123 12440 12441 12446 12451 12690 12103 12104 12105 12106 12117 12122 12123 12152 12153 12154 12438 12439 12441 12446 12451 12476 12477 12690 12438 12439 12440 12446 12451 12476 12477 12690 12406 12407 12408 12443 12444 12662 12663 12667 12668 12695 12442 12444 12445 12447 12449 12667 12668 12695 12107 12108 12109 12110 12111 12112 12406 12407 12408 12442 12443 12445 12447 12449 12662 12663 12667 12668 12695 12110 12111 12112 12443 12444 12447 12449 12695 12439 12440 12441 12451 12452 12689 12690 12697 12443 12444 12445 12448 12449 12695 12696 12697 12447 12449 12450 12451 12452 12695 12696 12697 12110 12111 12112 12113 12114 12115 12116 12118 12119 12120 12443 12444 12445 12447 12448 12450 12451 12452 12695 12696 12697 12118 12119 12120 12448 12449 12451 12452 12697 12117 12118 12119 12120 12121 12122 12123 12439 12440 12441 12446 12448 12449 12450 12452 12689 12690 12697 12446 12448 12449 12450 12451 12689 12690 12697 12156 12157 12158 12454 12456 12481 12482 12702 12453 12455 12456 12457 12460 12481 12482 12702 12128 12129 12131 12454 12456 12457 12460 12702 12124 12125 12126 12127 12128 12129 12131 12156 12157 12158 12453 12454 12455 12457 12460 12481 12482 12702 12454 12455 12456 12458 12460 12701 12702 12706 12457 12459 12460 12461 12464 12701 12702 12706 12132 12133 12135 12458 12460 12461 12464 12706 12128 12129 12130 12131 12132 12133 12135 12454 12455 12456 12457 12458 12459 12461 12464 12701 12702 12706 12458 12459 12460 12462 12464 12705 12706 12710 12461 12463 12464 12465 12468 12705 12706 12710 12136 12137 12140 12462 12464 12465 12468 12710 12132 12133 12134 12135 12136 12137 12140 12458 12459 12460 12461 12462 12463 12465 12468 12705 12706 12710 12462 12463 12464 12466 12468 12709 12710 12714 12465 12467 12468 12469 12471 12709 12710 12714 12137 12138 12140 12466 12468 12469 12471 12714 12136 12137 12138 12140 12462 12463 12464 12465 12466 12467 12469 12471 12709 12710 12714 12466 12467 12468 12470 12471 12472 12475 12714 12144 12145 12147 12469 12471 12472 12475 12714 12137 12138 12139 12140 12141 12142 12143 12144 12145 12147 12466 12467 12468 12469 12470 12472 12475 12714 12469 12470 12471 12473 12475 12713 12714 12716 12472 12474 12475 12477 12478 12713 12714 12716 12148 12149 12151 12473 12475 12477 12478 12716 12144 12145 12146 12147 12148 12149 12151 12469 12470 12471 12472 12473 12474 12477 12478 12713 12714 12716 12438 12440 12441 12477 12478 12688 12690 12716 12148 12149 12150 12151 12152 12153 12154 12438 12440 12441 12473 12474 12475 12476 12478 12688 12690 12716 12473 12474 12475 12476 12477 12688 12690 12716 12203 12204 12205 12480 12482 12491 12527 12721 12479 12481 12482 12491 12527 12699 12702 12721 12453 12454 12456 12480 12482 12699 12702 12721 12155 12156 12157 12158 12203 12204 12205 12453 12454 12456 12479 12480 12481 12491 12527 12699 12702 12721 12184 12185 12186 12484 12487 12510 12511 12726 12483 12486 12487 12510 12511 12724 12726 12729 12160 12162 12163 12486 12487 12488 12489 12729 12484 12485 12487 12488 12489 12724 12726 12729 12159 12160 12162 12163 12184 12185 12186 12483 12484 12485 12486 12488 12489 12510 12511 12724 12726 12729 12485 12486 12487 12489 12490 12669 12672 12729 12160 12161 12162 12163 12164 12165 12166 12409 12410 12411 12485 12486 12487 12488 12490 12669 12672 12729 12409 12410 12411 12488 12489 12669 12672 12729 12479 12480 12482 12526 12527 12718 12721 12734 12192 12193 12194 12493 12496 12517 12518 12738 12492 12495 12496 12517 12518 12736 12738 12740 12168 12170 12171 12495 12496 12497 12498 12740 12493 12494 12496 12497 12498 12736 12738 12740 12167 12168 12170 12171 12192 12193 12194 12492 12493 12494 12495 12497 12498 12517 12518 12736 12738 12740 12494 12495 12496 12498 12499 12500 12504 12740 12168 12169 12170 12171 12172 12173 12174 12175 12176 12179 12494 12495 12496 12497 12499 12500 12504 12740 12175 12176 12179 12497 12498 12500 12504 12740 12497 12498 12499 12501 12504 12740 12741 12745 12500 12503 12504 12740 12741 12743 12745 12749 12176 12178 12179 12503 12504 12505 12508 12749 12501 12502 12504 12505 12508 12743 12745 12749 12175 12176 12178 12179 12497 12498 12499 12500 12501 12502 12503 12505 12508 12740 12741 12743 12745 12749 12502 12503 12504 12507 12508 12747 12749 12751 12180 12182 12183 12507 12508 12509 12510 12751 12505 12506 12508 12509 12510 12747 12749 12751 12176 12177 12178 12179 12180 12182 12183 12502 12503 12504 12505 12506 12507 12509 12510 12747 12749 12751 12506 12507 12508 12510 12511 12722 12726 12751 12180 12181 12182 12183 12184 12185 12186 12483 12484 12487 12506 12507 12508 12509 12511 12722 12726 12751 12483 12484 12487 12509 12510 12722 12726 12751 12207 12208 12209 12514 12515 12520 12529 12762 12188 12190 12191 12514 12515 12516 12517 12762 12512 12513 12515 12516 12517 12520 12529 12762 12187 12188 12190 12191 12207 12208 12209 12512 12513 12514 12516 12517 12520 12529 12762 12513 12514 12515 12517 12518 12519 12738 12762 12188 12189 12190 12191 12192 12193 12194 12492 12493 12496 12513 12514 12515 12516 12518 12519 12738 12762 12492 12493 12496 12516 12517 12519 12738 12762 12516 12517 12518 12735 12738 12755 12757 12762 12512 12514 12515 12529 12530 12761 12762 12766 12206 12207 12208 12522 12524 12528 12529 12769 12521 12523 12524 12525 12527 12528 12529 12769 12199 12200 12202 12522 12524 12525 12527 12769 12195 12196 12197 12198 12199 12200 12202 12206 12207 12208 12521 12522 12523 12525 12527 12528 12529 12769 12522 12523 12524 12526 12527 12731 12734 12769 12491 12525 12527 12718 12721 12731 12734 12769 12199 12200 12201 12202 12203 12204 12205 12479 12480 12482 12491 12522 12523 12524 12525 12526 12718 12721 12731 12734 12769 12521 12522 12524 12529 12530 12765 12766 12769 12206 12207 12208 12209 12512 12514 12515 12520 12521 12522 12524 12528 12530 12761 12762 12765 12766 12769 12520 12528 12529 12761 12762 12765 12766 12769 12395 12396 12397 12398 12399 12532 12533 12534 12536 12657 12658 12772 12210 12211 12212 12213 12214 12215 12395 12396 12397 12398 12399 12531 12533 12534 12536 12537 12539 12657 12658 12772 12213 12214 12215 12531 12532 12534 12536 12537 12539 12657 12658 12772 12531 12532 12533 12535 12536 12657 12658 12772 12773 12776 12777 12779 12534 12536 12537 12538 12539 12772 12773 12776 12777 12779 12780 12782 12213 12214 12215 12531 12532 12533 12534 12535 12537 12538 12539 12657 12658 12772 12773 12776 12777 12779 12780 12782 12213 12214 12215 12532 12533 12535 12536 12538 12539 12779 12780 12782 12535 12536 12537 12539 12540 12541 12542 12779 12780 12782 12783 12785 12213 12214 12215 12216 12217 12218 12532 12533 12535 12536 12537 12538 12540 12541 12542 12779 12780 12782 12783 12785 12214 12215 12216 12217 12218 12538 12539 12541 12542 12782 12783 12785 12538 12539 12540 12542 12543 12544 12545 12782 12783 12785 12786 12788 12214 12215 12216 12217 12218 12219 12220 12221 12538 12539 12540 12541 12543 12544 12545 12782 12783 12785 12786 12788 12217 12218 12219 12220 12221 12541 12542 12544 12545 12785 12786 12788 12541 12542 12543 12545 12546 12547 12548 12785 12786 12788 12789 12791 12217 12218 12219 12220 12221 12222 12223 12224 12541 12542 12543 12544 12546 12547 12548 12785 12786 12788 12789 12791 12220 12221 12222 12223 12224 12544 12545 12547 12548 12788 12789 12791 12544 12545 12546 12548 12549 12550 12551 12788 12789 12791 12792 12794 12220 12221 12222 12223 12224 12225 12226 12227 12544 12545 12546 12547 12549 12550 12551 12788 12789 12791 12792 12794 12223 12224 12225 12226 12227 12547 12548 12550 12551 12791 12792 12794 12547 12548 12549 12551 12552 12553 12554 12791 12792 12794 12795 12797 12223 12224 12225 12226 12227 12228 12229 12230 12547 12548 12549 12550 12552 12553 12554 12791 12792 12794 12795 12797 12226 12227 12228 12229 12230 12550 12551 12553 12554 12794 12795 12797 12550 12551 12552 12554 12555 12556 12557 12794 12795 12797 12798 12800 12226 12227 12228 12229 12230 12231 12239 12240 12550 12551 12552 12553 12555 12556 12557 12794 12795 12797 12798 12800 12229 12230 12231 12239 12240 12553 12554 12556 12557 12797 12798 12800 12553 12554 12555 12557 12558 12562 12563 12797 12798 12800 12801 12803 12229 12230 12231 12239 12240 12241 12245 12246 12553 12554 12555 12556 12558 12562 12563 12797 12798 12800 12801 12803 12239 12240 12241 12245 12246 12556 12557 12562 12563 12800 12801 12803 12250 12251 12252 12560 12561 12565 12566 12568 12569 12806 12232 12233 12234 12235 12236 12237 12238 12242 12243 12244 12248 12249 12250 12251 12252 12559 12561 12565 12566 12568 12569 12806 12242 12243 12244 12248 12249 12559 12560 12565 12566 12568 12569 12806 12556 12557 12558 12563 12564 12565 12566 12800 12801 12803 12804 12806 12239 12240 12241 12245 12246 12247 12248 12249 12556 12557 12558 12562 12564 12565 12566 12800 12801 12803 12804 12806 12245 12246 12247 12248 12249 12562 12563 12565 12566 12803 12804 12806 12242 12243 12244 12245 12246 12247 12248 12249 12559 12560 12561 12562 12563 12564 12566 12568 12569 12803 12804 12806 12559 12560 12561 12562 12563 12564 12565 12568 12569 12803 12804 12806 12260 12261 12262 12568 12569 12573 12574 12806 12807 12810 12250 12251 12252 12253 12254 12255 12256 12260 12261 12262 12559 12560 12561 12565 12566 12567 12569 12573 12574 12806 12807 12810 12559 12560 12561 12565 12566 12567 12568 12573 12574 12806 12807 12810 12571 12572 12573 12574 12810 12811 12812 12257 12258 12259 12267 12268 12269 12570 12572 12573 12574 12810 12811 12812 12267 12268 12269 12570 12571 12573 12574 12810 12811 12812 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12567 12568 12569 12570 12571 12572 12574 12806 12807 12810 12811 12812 12567 12568 12569 12570 12571 12572 12573 12806 12807 12810 12811 12812 12400 12401 12402 12404 12405 12576 12577 12660 12661 12815 12816 12818 12575 12577 12578 12581 12582 12660 12661 12815 12816 12818 12819 12821 12270 12271 12272 12400 12401 12402 12404 12405 12575 12576 12578 12581 12582 12660 12661 12815 12816 12818 12819 12821 12270 12271 12272 12401 12402 12576 12577 12581 12582 12818 12819 12821 12392 12580 12584 12585 12587 12588 12650 12824 12579 12587 12588 12640 12650 12823 12824 12827 12576 12577 12578 12582 12583 12590 12591 12818 12819 12821 12822 12830 12270 12271 12272 12273 12276 12277 12401 12402 12576 12577 12578 12581 12583 12590 12591 12818 12819 12821 12822 12830 12271 12272 12273 12276 12277 12581 12582 12590 12591 12821 12822 12830 12392 12579 12585 12586 12588 12589 12596 12597 12650 12833 12275 12389 12390 12391 12392 12579 12584 12586 12588 12589 12593 12594 12596 12597 12650 12833 12275 12390 12391 12584 12585 12588 12589 12593 12594 12596 12597 12833 12579 12580 12588 12589 12650 12824 12825 12832 12833 12836 12392 12579 12580 12584 12585 12586 12587 12589 12596 12597 12650 12824 12825 12832 12833 12836 12584 12585 12586 12587 12588 12596 12597 12824 12825 12832 12833 12836 12581 12582 12583 12591 12592 12599 12600 12821 12822 12830 12831 12839 12271 12272 12273 12276 12277 12278 12285 12286 12581 12582 12583 12590 12592 12599 12600 12821 12822 12830 12831 12839 12276 12277 12278 12285 12286 12590 12591 12599 12600 12830 12831 12839 12275 12390 12391 12585 12586 12594 12595 12597 12598 12605 12606 12842 12274 12275 12282 12283 12284 12387 12388 12390 12391 12585 12586 12593 12595 12597 12598 12602 12603 12605 12606 12842 12282 12283 12284 12593 12594 12597 12598 12602 12603 12605 12606 12842 12584 12585 12586 12588 12589 12597 12598 12833 12834 12841 12842 12845 12275 12390 12391 12584 12585 12586 12588 12589 12593 12594 12595 12596 12598 12605 12606 12833 12834 12841 12842 12845 12593 12594 12595 12596 12597 12605 12606 12833 12834 12841 12842 12845 12590 12591 12592 12600 12601 12608 12609 12830 12831 12839 12840 12848 12276 12277 12278 12285 12286 12287 12315 12316 12590 12591 12592 12599 12601 12608 12609 12830 12831 12839 12840 12848 12285 12286 12287 12315 12316 12599 12600 12608 12609 12839 12840 12848 12282 12283 12284 12594 12595 12603 12604 12606 12607 12616 12617 12852 12279 12280 12281 12282 12283 12284 12291 12292 12293 12594 12595 12602 12604 12606 12607 12613 12614 12616 12617 12852 12291 12292 12293 12602 12603 12606 12607 12613 12614 12616 12617 12852 12593 12594 12595 12597 12598 12606 12607 12842 12843 12852 12853 12855 12282 12283 12284 12593 12594 12595 12597 12598 12602 12603 12604 12605 12607 12616 12617 12842 12843 12852 12853 12855 12602 12603 12604 12605 12606 12616 12617 12842 12843 12852 12853 12855 12599 12600 12601 12609 12610 12629 12630 12839 12840 12848 12849 12858 12285 12286 12287 12315 12316 12317 12321 12322 12599 12600 12601 12608 12610 12629 12630 12839 12840 12848 12849 12858 12315 12316 12317 12321 12322 12608 12609 12629 12630 12848 12849 12858 12301 12302 12303 12612 12613 12621 12622 12861 12611 12613 12614 12615 12616 12621 12622 12861 12288 12289 12290 12291 12292 12293 12301 12302 12303 12603 12604 12611 12612 12614 12615 12616 12621 12622 12861 12291 12292 12293 12603 12604 12612 12613 12615 12616 12861 12612 12613 12614 12616 12617 12850 12852 12861 12291 12292 12293 12602 12603 12604 12606 12607 12612 12613 12614 12615 12617 12850 12852 12861 12602 12603 12604 12606 12607 12615 12616 12850 12852 12861 12304 12305 12306 12310 12311 12619 12620 12625 12626 12632 12633 12864 12294 12295 12296 12304 12305 12306 12310 12311 12318 12319 12320 12324 12325 12618 12620 12625 12626 12632 12633 12864 12318 12319 12320 12324 12325 12618 12619 12625 12626 12632 12633 12864 12611 12612 12613 12622 12623 12627 12628 12861 12862 12867 12297 12298 12299 12300 12301 12302 12303 12307 12308 12309 12313 12314 12611 12612 12613 12621 12623 12627 12628 12861 12862 12867 12307 12308 12309 12313 12314 12621 12622 12627 12628 12861 12862 12867 12310 12311 12312 12313 12314 12625 12626 12627 12628 12863 12864 12867 12304 12305 12306 12310 12311 12312 12313 12314 12618 12619 12620 12624 12626 12627 12628 12632 12633 12863 12864 12867 12618 12619 12620 12624 12625 12627 12628 12632 12633 12863 12864 12867 12621 12622 12623 12624 12625 12626 12628 12861 12862 12863 12864 12867 12307 12308 12309 12310 12311 12312 12313 12314 12621 12622 12623 12624 12625 12626 12627 12861 12862 12863 12864 12867 12608 12609 12610 12630 12631 12635 12636 12848 12849 12858 12859 12869 12315 12316 12317 12321 12322 12323 12327 12328 12608 12609 12610 12629 12631 12635 12636 12848 12849 12858 12859 12869 12321 12322 12323 12327 12328 12629 12630 12635 12636 12858 12859 12869 12618 12619 12620 12625 12626 12633 12634 12638 12639 12864 12865 12871 12318 12319 12320 12324 12325 12326 12330 12331 12618 12619 12620 12625 12626 12632 12634 12638 12639 12864 12865 12871 12324 12325 12326 12330 12331 12632 12633 12638 12639 12864 12865 12871 12629 12630 12631 12636 12637 12638 12639 12858 12859 12869 12870 12871 12321 12322 12323 12327 12328 12329 12330 12331 12629 12630 12631 12635 12637 12638 12639 12858 12859 12869 12870 12871 12327 12328 12329 12330 12331 12635 12636 12638 12639 12869 12870 12871 12324 12325 12326 12327 12328 12329 12330 12331 12632 12633 12634 12635 12636 12637 12639 12864 12865 12869 12870 12871 12632 12633 12634 12635 12636 12637 12638 12864 12865 12869 12870 12871 12580 12641 12650 12823 12824 12826 12827 12874 12640 12642 12650 12826 12827 12873 12874 12877 12641 12643 12650 12873 12874 12876 12877 12880 12642 12644 12650 12876 12877 12879 12880 12883 12643 12645 12650 12879 12880 12882 12883 12886 12644 12646 12650 12882 12883 12885 12886 12889 12645 12647 12650 12885 12886 12888 12889 12892 12646 12648 12650 12888 12889 12891 12892 12895 12647 12649 12650 12891 12892 12894 12895 12898 12648 12650 12894 12895 12898 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12579 12580 12584 12585 12587 12588 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12823 12824 12826 12827 12873 12874 12876 12877 12879 12880 12882 12883 12885 12886 12888 12889 12891 12892 12894 12895 12898 12435 12436 12437 12652 12655 12678 12686 12903 12651 12654 12655 12678 12686 12901 12903 12905 12394 12395 12396 12654 12655 12656 12657 12905 12652 12653 12655 12656 12657 12901 12903 12905 12393 12394 12395 12396 12435 12436 12437 12651 12652 12653 12654 12656 12657 12678 12686 12901 12903 12905 12653 12654 12655 12657 12658 12770 12772 12905 12394 12395 12396 12397 12398 12399 12531 12532 12533 12534 12536 12653 12654 12655 12656 12658 12770 12772 12905 12531 12532 12533 12534 12536 12656 12657 12770 12772 12905 12403 12404 12405 12407 12408 12660 12661 12663 12664 12813 12815 12908 12400 12401 12402 12403 12404 12405 12407 12408 12575 12576 12577 12659 12661 12663 12664 12813 12815 12816 12818 12908 12575 12576 12577 12659 12660 12663 12664 12813 12815 12816 12818 12908 12406 12407 12408 12442 12444 12663 12664 12665 12667 12907 12908 12913 12403 12404 12405 12406 12407 12408 12442 12444 12659 12660 12661 12662 12664 12665 12667 12813 12815 12907 12908 12913 12659 12660 12661 12662 12663 12665 12667 12813 12815 12907 12908 12913 12662 12663 12664 12666 12667 12907 12908 12913 12914 12915 12665 12667 12668 12693 12695 12913 12914 12915 12406 12407 12408 12442 12443 12444 12662 12663 12664 12665 12666 12668 12693 12695 12907 12908 12913 12914 12915 12442 12443 12444 12666 12667 12693 12695 12915 12488 12489 12490 12670 12672 12729 12730 12919 12669 12671 12672 12729 12730 12919 12920 12923 12670 12672 12673 12674 12676 12919 12920 12923 12409 12410 12411 12412 12413 12414 12415 12488 12489 12490 12669 12670 12671 12673 12674 12676 12729 12730 12919 12920 12923 12413 12414 12415 12671 12672 12674 12676 12923 12671 12672 12673 12675 12676 12923 12924 12927 12674 12676 12677 12679 12681 12923 12924 12927 12413 12414 12415 12416 12417 12418 12419 12671 12672 12673 12674 12675 12677 12679 12681 12923 12924 12927 12417 12418 12419 12675 12676 12679 12681 12927 12651 12652 12655 12686 12687 12899 12903 12930 12675 12676 12677 12680 12681 12927 12928 12930 12679 12681 12682 12683 12684 12927 12928 12930 12417 12418 12419 12420 12422 12432 12433 12675 12676 12677 12679 12680 12682 12683 12684 12927 12928 12930 12422 12432 12433 12680 12681 12683 12684 12930 12680 12681 12682 12684 12685 12686 12687 12930 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12680 12681 12682 12683 12685 12686 12687 12930 12434 12435 12436 12683 12684 12686 12687 12930 12434 12435 12436 12437 12651 12652 12655 12678 12683 12684 12685 12687 12899 12903 12930 12678 12683 12684 12685 12686 12899 12903 12930 12476 12477 12478 12690 12691 12715 12716 12934 12446 12451 12452 12690 12691 12692 12697 12934 12438 12439 12440 12441 12446 12451 12452 12476 12477 12478 12688 12689 12691 12692 12697 12715 12716 12934 12688 12689 12690 12692 12697 12715 12716 12934 12689 12690 12691 12697 12698 12933 12934 12938 12666 12667 12668 12694 12695 12910 12915 12938 12693 12695 12696 12697 12698 12910 12915 12938 12442 12443 12444 12445 12447 12448 12449 12666 12667 12668 12693 12694 12696 12697 12698 12910 12915 12938 12447 12448 12449 12694 12695 12697 12698 12938 12446 12447 12448 12449 12450 12451 12452 12689 12690 12691 12692 12694 12695 12696 12698 12933 12934 12938 12692 12694 12695 12696 12697 12933 12934 12938 12480 12481 12482 12700 12702 12720 12721 12943 12699 12701 12702 12703 12706 12720 12721 12943 12457 12458 12460 12700 12702 12703 12706 12943 12453 12454 12455 12456 12457 12458 12460 12480 12481 12482 12699 12700 12701 12703 12706 12720 12721 12943 12700 12701 12702 12704 12706 12942 12943 12947 12703 12705 12706 12707 12710 12942 12943 12947 12461 12462 12464 12704 12706 12707 12710 12947 12457 12458 12459 12460 12461 12462 12464 12700 12701 12702 12703 12704 12705 12707 12710 12942 12943 12947 12704 12705 12706 12708 12710 12946 12947 12951 12707 12709 12710 12711 12714 12946 12947 12951 12465 12466 12468 12708 12710 12711 12714 12951 12461 12462 12463 12464 12465 12466 12468 12704 12705 12706 12707 12708 12709 12711 12714 12946 12947 12951 12708 12709 12710 12712 12714 12950 12951 12953 12711 12713 12714 12716 12717 12950 12951 12953 12472 12473 12475 12712 12714 12716 12717 12953 12465 12466 12467 12468 12469 12470 12471 12472 12473 12475 12708 12709 12710 12711 12712 12713 12716 12717 12950 12951 12953 12688 12690 12691 12716 12717 12932 12934 12953 12472 12473 12474 12475 12476 12477 12478 12688 12690 12691 12712 12713 12714 12715 12717 12932 12934 12953 12712 12713 12714 12715 12716 12932 12934 12953 12491 12526 12527 12719 12721 12733 12734 12958 12718 12720 12721 12733 12734 12940 12943 12958 12699 12700 12702 12719 12721 12940 12943 12958 12479 12480 12481 12482 12491 12526 12527 12699 12700 12702 12718 12719 12720 12733 12734 12940 12943 12958 12509 12510 12511 12723 12726 12751 12752 12963 12722 12725 12726 12751 12752 12961 12963 12965 12484 12486 12487 12725 12726 12727 12729 12965 12723 12724 12726 12727 12729 12961 12963 12965 12483 12484 12486 12487 12509 12510 12511 12722 12723 12724 12725 12727 12729 12751 12752 12961 12963 12965 12724 12725 12726 12728 12729 12965 12966 12969 12727 12729 12730 12917 12919 12965 12966 12969 12484 12485 12486 12487 12488 12489 12490 12669 12670 12672 12724 12725 12726 12727 12728 12730 12917 12919 12965 12966 12969 12669 12670 12672 12728 12729 12917 12919 12969 12525 12526 12527 12732 12734 12768 12769 12974 12731 12733 12734 12768 12769 12955 12958 12974 12718 12719 12721 12732 12734 12955 12958 12974 12491 12525 12526 12527 12718 12719 12721 12731 12732 12733 12768 12769 12955 12958 12974 12519 12737 12738 12753 12755 12757 12762 12977 12493 12495 12496 12737 12738 12739 12740 12977 12735 12736 12738 12739 12740 12753 12757 12977 12492 12493 12495 12496 12516 12517 12518 12519 12735 12736 12737 12739 12740 12753 12755 12757 12762 12977 12736 12737 12738 12740 12741 12742 12745 12977 12493 12494 12495 12496 12497 12498 12499 12500 12501 12504 12736 12737 12738 12739 12741 12742 12745 12977 12500 12501 12504 12739 12740 12742 12745 12977 12739 12740 12741 12744 12745 12977 12978 12982 12501 12503 12504 12744 12745 12746 12749 12982 12742 12743 12745 12746 12749 12977 12978 12982 12500 12501 12503 12504 12739 12740 12741 12742 12743 12744 12746 12749 12977 12978 12982 12743 12744 12745 12748 12749 12980 12982 12984 12505 12507 12508 12748 12749 12750 12751 12984 12746 12747 12749 12750 12751 12980 12982 12984 12501 12502 12503 12504 12505 12507 12508 12743 12744 12745 12746 12747 12748 12750 12751 12980 12982 12984 12747 12748 12749 12751 12752 12959 12963 12984 12505 12506 12507 12508 12509 12510 12511 12722 12723 12726 12747 12748 12749 12750 12752 12959 12963 12984 12722 12723 12726 12750 12751 12959 12963 12984 12735 12737 12738 12754 12757 12758 12977 12995 12753 12757 12758 12975 12977 12990 12991 12995 12519 12735 12738 12756 12757 12759 12762 12999 12755 12757 12758 12759 12762 12994 12995 12999 12519 12735 12737 12738 12753 12754 12755 12756 12758 12759 12762 12977 12994 12995 12999 12753 12754 12756 12757 12977 12994 12995 12999 12755 12756 12757 12760 12762 12998 12999 13003 12759 12761 12762 12763 12766 12998 12999 13003 12520 12529 12530 12760 12762 12763 12766 13003 12512 12513 12514 12515 12516 12517 12518 12519 12520 12529 12530 12735 12738 12755 12756 12757 12759 12760 12761 12763 12766 12998 12999 13003 12760 12761 12762 12764 12766 13002 13003 13006 12763 12765 12766 12767 12769 13002 13003 13006 12528 12529 12530 12764 12766 12767 12769 13006 12520 12528 12529 12530 12760 12761 12762 12763 12764 12765 12767 12769 13002 13003 13006 12764 12765 12766 12768 12769 12971 12974 13006 12731 12732 12734 12767 12769 12971 12974 13006 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12731 12732 12734 12764 12765 12766 12767 12768 12971 12974 13006 12656 12657 12658 12771 12772 12905 12906 13010 12770 12772 12773 12774 12776 12905 12906 13010 12531 12532 12533 12534 12535 12536 12656 12657 12658 12770 12771 12773 12774 12776 12777 12779 12905 12906 13010 12534 12535 12536 12771 12772 12774 12776 12777 12779 13010 12771 12772 12773 12775 12776 13008 13010 13013 12774 12776 12777 12778 12779 13008 13010 13013 13014 13016 12534 12535 12536 12771 12772 12773 12774 12775 12777 12778 12779 13008 13010 13013 13014 13016 12534 12535 12536 12772 12773 12775 12776 12778 12779 13013 13014 13016 12775 12776 12777 12779 12780 12781 12782 13013 13014 13016 13017 13019 12534 12535 12536 12537 12538 12539 12772 12773 12775 12776 12777 12778 12780 12781 12782 13013 13014 13016 13017 13019 12535 12536 12537 12538 12539 12778 12779 12781 12782 13016 13017 13019 12778 12779 12780 12782 12783 12784 12785 13016 13017 13019 13020 13022 12535 12536 12537 12538 12539 12540 12541 12542 12778 12779 12780 12781 12783 12784 12785 13016 13017 13019 13020 13022 12538 12539 12540 12541 12542 12781 12782 12784 12785 13019 13020 13022 12781 12782 12783 12785 12786 12787 12788 13019 13020 13022 13023 13025 12538 12539 12540 12541 12542 12543 12544 12545 12781 12782 12783 12784 12786 12787 12788 13019 13020 13022 13023 13025 12541 12542 12543 12544 12545 12784 12785 12787 12788 13022 13023 13025 12784 12785 12786 12788 12789 12790 12791 13022 13023 13025 13026 13028 12541 12542 12543 12544 12545 12546 12547 12548 12784 12785 12786 12787 12789 12790 12791 13022 13023 13025 13026 13028 12544 12545 12546 12547 12548 12787 12788 12790 12791 13025 13026 13028 12787 12788 12789 12791 12792 12793 12794 13025 13026 13028 13029 13031 12544 12545 12546 12547 12548 12549 12550 12551 12787 12788 12789 12790 12792 12793 12794 13025 13026 13028 13029 13031 12547 12548 12549 12550 12551 12790 12791 12793 12794 13028 13029 13031 12790 12791 12792 12794 12795 12796 12797 13028 13029 13031 13032 13034 12547 12548 12549 12550 12551 12552 12553 12554 12790 12791 12792 12793 12795 12796 12797 13028 13029 13031 13032 13034 12550 12551 12552 12553 12554 12793 12794 12796 12797 13031 13032 13034 12793 12794 12795 12797 12798 12799 12800 13031 13032 13034 13035 13037 12550 12551 12552 12553 12554 12555 12556 12557 12793 12794 12795 12796 12798 12799 12800 13031 13032 13034 13035 13037 12553 12554 12555 12556 12557 12796 12797 12799 12800 13034 13035 13037 12796 12797 12798 12800 12801 12802 12803 13034 13035 13037 13038 13040 12553 12554 12555 12556 12557 12558 12562 12563 12796 12797 12798 12799 12801 12802 12803 13034 13035 13037 13038 13040 12556 12557 12558 12562 12563 12799 12800 12802 12803 13037 13038 13040 12799 12800 12801 12803 12804 12805 12806 13037 13038 13040 13041 13043 12556 12557 12558 12562 12563 12564 12565 12566 12799 12800 12801 12802 12804 12805 12806 13037 13038 13040 13041 13043 12562 12563 12564 12565 12566 12802 12803 12805 12806 13040 13041 13043 12802 12803 12804 12806 12807 12809 12810 13040 13041 13043 13044 13047 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12573 12574 12802 12803 12804 12805 12807 12809 12810 13040 13041 13043 13044 13047 12567 12568 12569 12573 12574 12805 12806 12809 12810 13043 13044 13047 12809 12810 12811 12812 13047 13048 13049 12805 12806 12807 12808 12810 12811 12812 13043 13044 13047 13048 13049 12567 12568 12569 12570 12571 12572 12573 12574 12805 12806 12807 12808 12809 12811 12812 13043 13044 13047 13048 13049 12570 12571 12572 12573 12574 12808 12809 12810 12812 13047 13048 13049 12570 12571 12572 12573 12574 12808 12809 12810 12811 13047 13048 13049 12659 12660 12661 12663 12664 12814 12815 12908 12909 13052 13053 13055 12813 12815 12816 12817 12818 12908 12909 13052 13053 13055 13056 13058 12575 12576 12577 12659 12660 12661 12663 12664 12813 12814 12816 12817 12818 12908 12909 13052 13053 13055 13056 13058 12575 12576 12577 12660 12661 12814 12815 12817 12818 13055 13056 13058 12814 12815 12816 12818 12819 12820 12821 13055 13056 13058 13059 13061 12575 12576 12577 12578 12581 12582 12660 12661 12814 12815 12816 12817 12819 12820 12821 13055 13056 13058 13059 13061 12576 12577 12578 12581 12582 12817 12818 12820 12821 13058 13059 13061 12817 12818 12819 12821 12822 12829 12830 13058 13059 13061 13062 13064 12576 12577 12578 12581 12582 12583 12590 12591 12817 12818 12819 12820 12822 12829 12830 13058 13059 13061 13062 13064 12581 12582 12583 12590 12591 12820 12821 12829 12830 13061 13062 13064 12580 12640 12650 12824 12825 12827 12828 12835 12836 13067 12579 12580 12587 12588 12589 12640 12650 12823 12825 12827 12828 12832 12833 12835 12836 13067 12587 12588 12589 12823 12824 12827 12828 12832 12833 12835 12836 13067 12640 12641 12650 12827 12828 12874 12875 13066 13067 13070 12580 12640 12641 12650 12823 12824 12825 12826 12828 12835 12836 12874 12875 13066 13067 13070 12823 12824 12825 12826 12827 12835 12836 12874 12875 13066 13067 13070 12820 12821 12822 12830 12831 12838 12839 13061 13062 13064 13065 13073 12581 12582 12583 12590 12591 12592 12599 12600 12820 12821 12822 12829 12831 12838 12839 13061 13062 13064 13065 13073 12590 12591 12592 12599 12600 12829 12830 12838 12839 13064 13065 13073 12587 12588 12589 12824 12825 12833 12834 12836 12837 12844 12845 13076 12584 12585 12586 12587 12588 12589 12596 12597 12598 12824 12825 12832 12834 12836 12837 12841 12842 12844 12845 13076 12596 12597 12598 12832 12833 12836 12837 12841 12842 12844 12845 13076 12823 12824 12825 12827 12828 12836 12837 13067 13068 13075 13076 13079 12587 12588 12589 12823 12824 12825 12827 12828 12832 12833 12834 12835 12837 12844 12845 13067 13068 13075 13076 13079 12832 12833 12834 12835 12836 12844 12845 13067 13068 13075 13076 13079 12829 12830 12831 12839 12840 12847 12848 13064 13065 13073 13074 13082 12590 12591 12592 12599 12600 12601 12608 12609 12829 12830 12831 12838 12840 12847 12848 13064 13065 13073 13074 13082 12599 12600 12601 12608 12609 12838 12839 12847 12848 13073 13074 13082 12596 12597 12598 12833 12834 12842 12843 12845 12846 12855 12856 13086 12593 12594 12595 12596 12597 12598 12605 12606 12607 12833 12834 12841 12843 12845 12846 12852 12853 12855 12856 13086 12605 12606 12607 12841 12842 12845 12846 12852 12853 12855 12856 13086 12832 12833 12834 12836 12837 12845 12846 13076 13077 13086 13087 13089 12596 12597 12598 12832 12833 12834 12836 12837 12841 12842 12843 12844 12846 12855 12856 13076 13077 13086 13087 13089 12841 12842 12843 12844 12845 12855 12856 13076 13077 13086 13087 13089 12838 12839 12840 12848 12849 12857 12858 13073 13074 13082 13083 13092 12599 12600 12601 12608 12609 12610 12629 12630 12838 12839 12840 12847 12849 12857 12858 13073 13074 13082 13083 13092 12608 12609 12610 12629 12630 12847 12848 12857 12858 13082 13083 13092 12615 12616 12617 12851 12852 12860 12861 13095 12850 12852 12853 12854 12855 12860 12861 13095 12602 12603 12604 12605 12606 12607 12615 12616 12617 12842 12843 12850 12851 12853 12854 12855 12860 12861 13095 12605 12606 12607 12842 12843 12851 12852 12854 12855 13095 12851 12852 12853 12855 12856 13084 13086 13095 12605 12606 12607 12841 12842 12843 12845 12846 12851 12852 12853 12854 12856 13084 13086 13095 12841 12842 12843 12845 12846 12854 12855 13084 13086 13095 12847 12848 12849 12858 12859 12868 12869 13082 13083 13092 13093 13098 12608 12609 12610 12629 12630 12631 12635 12636 12847 12848 12849 12857 12859 12868 12869 13082 13083 13092 13093 13098 12629 12630 12631 12635 12636 12857 12858 12868 12869 13092 13093 13098 12850 12851 12852 12861 12862 12866 12867 13095 13096 13100 12611 12612 12613 12614 12615 12616 12617 12621 12622 12623 12627 12628 12850 12851 12852 12860 12862 12866 12867 13095 13096 13100 12621 12622 12623 12627 12628 12860 12861 12866 12867 13095 13096 13100 12624 12625 12626 12627 12628 12864 12865 12866 12867 12871 12872 13100 12618 12619 12620 12624 12625 12626 12627 12628 12632 12633 12634 12638 12639 12863 12865 12866 12867 12871 12872 13100 12632 12633 12634 12638 12639 12863 12864 12866 12867 12871 12872 13100 12860 12861 12862 12863 12864 12865 12867 12871 12872 13095 13096 13100 12621 12622 12623 12624 12625 12626 12627 12628 12860 12861 12862 12863 12864 12865 12866 12871 12872 13095 13096 13100 12857 12858 12859 12869 12870 12871 12872 13092 13093 13098 13099 13100 12629 12630 12631 12635 12636 12637 12638 12639 12857 12858 12859 12868 12870 12871 12872 13092 13093 13098 13099 13100 12635 12636 12637 12638 12639 12868 12869 12871 12872 13098 13099 13100 12632 12633 12634 12635 12636 12637 12638 12639 12863 12864 12865 12866 12867 12868 12869 12870 12872 13098 13099 13100 12863 12864 12865 12866 12867 12868 12869 12870 12871 13098 13099 13100 12641 12642 12650 12874 12875 12877 12878 13069 13070 13103 12640 12641 12642 12650 12826 12827 12828 12873 12875 12877 12878 13066 13067 13069 13070 13103 12826 12827 12828 12873 12874 12877 12878 13066 13067 13069 13070 13103 12642 12643 12650 12877 12878 12880 12881 13102 13103 13106 12641 12642 12643 12650 12873 12874 12875 12876 12878 12880 12881 13069 13070 13102 13103 13106 12873 12874 12875 12876 12877 12880 12881 13069 13070 13102 13103 13106 12643 12644 12650 12880 12881 12883 12884 13105 13106 13109 12642 12643 12644 12650 12876 12877 12878 12879 12881 12883 12884 13102 13103 13105 13106 13109 12876 12877 12878 12879 12880 12883 12884 13102 13103 13105 13106 13109 12644 12645 12650 12883 12884 12886 12887 13108 13109 13112 12643 12644 12645 12650 12879 12880 12881 12882 12884 12886 12887 13105 13106 13108 13109 13112 12879 12880 12881 12882 12883 12886 12887 13105 13106 13108 13109 13112 12645 12646 12650 12886 12887 12889 12890 13111 13112 13115 12644 12645 12646 12650 12882 12883 12884 12885 12887 12889 12890 13108 13109 13111 13112 13115 12882 12883 12884 12885 12886 12889 12890 13108 13109 13111 13112 13115 12646 12647 12650 12889 12890 12892 12893 13114 13115 13118 12645 12646 12647 12650 12885 12886 12887 12888 12890 12892 12893 13111 13112 13114 13115 13118 12885 12886 12887 12888 12889 12892 12893 13111 13112 13114 13115 13118 12647 12648 12650 12892 12893 12895 12896 13117 13118 13121 12646 12647 12648 12650 12888 12889 12890 12891 12893 12895 12896 13114 13115 13117 13118 13121 12888 12889 12890 12891 12892 12895 12896 13114 13115 13117 13118 13121 12648 12649 12650 12895 12896 12897 12898 13120 13121 13124 12647 12648 12649 12650 12891 12892 12893 12894 12896 12897 12898 13117 13118 13120 13121 13124 12891 12892 12893 12894 12895 12897 12898 13117 13118 13120 13121 13124 12894 12895 12896 12898 13120 13121 13124 12648 12649 12650 12894 12895 12896 12897 13120 13121 13124 12678 12686 12687 12900 12903 12930 12931 13128 12899 12902 12903 12930 12931 13126 13128 13132 12652 12654 12655 12902 12903 12904 12905 13132 12900 12901 12903 12904 12905 13126 13128 13132 12651 12652 12654 12655 12678 12686 12687 12899 12900 12901 12902 12904 12905 12930 12931 13126 13128 13132 12901 12902 12903 12905 12906 13007 13010 13132 12652 12653 12654 12655 12656 12657 12658 12770 12771 12772 12901 12902 12903 12904 12906 13007 13010 13132 12770 12771 12772 12904 12905 13007 13010 13132 12662 12663 12664 12665 12667 12908 12909 12911 12913 13050 13052 13136 12659 12660 12661 12662 12663 12664 12665 12667 12813 12814 12815 12907 12909 12911 12913 13050 13052 13053 13055 13136 12813 12814 12815 12907 12908 12911 12913 13050 13052 13053 13055 13136 12693 12694 12695 12915 12916 12937 12938 13138 12907 12908 12909 12912 12913 13050 13052 13136 13137 13138 12911 12913 12914 12915 12916 13136 13137 13138 12662 12663 12664 12665 12666 12667 12907 12908 12909 12911 12912 12914 12915 12916 13050 13052 13136 13137 13138 12665 12666 12667 12912 12913 12915 12916 13138 12665 12666 12667 12668 12693 12694 12695 12910 12912 12913 12914 12916 12937 12938 13138 12910 12912 12913 12914 12915 12937 12938 13138 12728 12729 12730 12918 12919 12969 12970 13142 12917 12919 12920 12921 12923 12969 12970 13142 12669 12670 12671 12672 12728 12729 12730 12917 12918 12920 12921 12923 12969 12970 13142 12670 12671 12672 12918 12919 12921 12923 13142 12918 12919 12920 12922 12923 13142 13143 13147 12921 12923 12924 12925 12927 13142 13143 13147 12670 12671 12672 12673 12674 12675 12676 12918 12919 12920 12921 12922 12924 12925 12927 13142 13143 13147 12674 12675 12676 12922 12923 12925 12927 13147 12922 12923 12924 12926 12927 13147 13148 13149 12925 12927 12928 12929 12930 13147 13148 13149 12674 12675 12676 12677 12679 12680 12681 12922 12923 12924 12925 12926 12928 12929 12930 13147 13148 13149 12679 12680 12681 12926 12927 12929 12930 13149 12926 12927 12928 12930 12931 13125 13128 13149 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12899 12900 12903 12926 12927 12928 12929 12931 13125 13128 13149 12899 12900 12903 12929 12930 13125 13128 13149 12715 12716 12717 12934 12935 12952 12953 13153 12692 12697 12698 12934 12935 12936 12938 13153 12688 12689 12690 12691 12692 12697 12698 12715 12716 12717 12932 12933 12935 12936 12938 12952 12953 13153 12932 12933 12934 12936 12938 12952 12953 13153 12933 12934 12935 12938 12939 13152 13153 13157 12910 12915 12916 12938 12939 13133 13138 13157 12692 12693 12694 12695 12696 12697 12698 12910 12915 12916 12933 12934 12935 12936 12937 12939 13133 13138 13152 13153 13157 12936 12937 12938 13133 13138 13152 13153 13157 12719 12720 12721 12941 12943 12957 12958 13162 12940 12942 12943 12944 12947 12957 12958 13162 12703 12704 12706 12941 12943 12944 12947 13162 12699 12700 12701 12702 12703 12704 12706 12719 12720 12721 12940 12941 12942 12944 12947 12957 12958 13162 12941 12942 12943 12945 12947 13161 13162 13166 12944 12946 12947 12948 12951 13161 13162 13166 12707 12708 12710 12945 12947 12948 12951 13166 12703 12704 12705 12706 12707 12708 12710 12941 12942 12943 12944 12945 12946 12948 12951 13161 13162 13166 12945 12946 12947 12949 12951 13165 13166 13168 12948 12950 12951 12953 12954 13165 13166 13168 12711 12712 12714 12949 12951 12953 12954 13168 12707 12708 12709 12710 12711 12712 12714 12945 12946 12947 12948 12949 12950 12953 12954 13165 13166 13168 12932 12934 12935 12953 12954 13151 13153 13168 12711 12712 12713 12714 12715 12716 12717 12932 12934 12935 12949 12950 12951 12952 12954 13151 13153 13168 12949 12950 12951 12952 12953 13151 13153 13168 12732 12733 12734 12956 12958 12973 12974 13173 12955 12957 12958 12973 12974 13159 13162 13173 12940 12941 12943 12956 12958 13159 13162 13173 12718 12719 12720 12721 12732 12733 12734 12940 12941 12943 12955 12956 12957 12973 12974 13159 13162 13173 12750 12751 12752 12960 12963 12984 12985 13177 12959 12962 12963 12984 12985 13175 13177 13179 12723 12725 12726 12962 12963 12964 12965 13179 12960 12961 12963 12964 12965 13175 13177 13179 12722 12723 12725 12726 12750 12751 12752 12959 12960 12961 12962 12964 12965 12984 12985 13175 13177 13179 12961 12962 12963 12965 12966 12967 12969 13179 12723 12724 12725 12726 12727 12728 12729 12961 12962 12963 12964 12966 12967 12969 13179 12727 12728 12729 12964 12965 12967 12969 13179 12964 12965 12966 12968 12969 13179 13180 13183 12967 12969 12970 13140 13142 13179 13180 13183 12727 12728 12729 12730 12917 12918 12919 12964 12965 12966 12967 12968 12970 13140 13142 13179 13180 13183 12917 12918 12919 12968 12969 13140 13142 13183 12767 12768 12769 12972 12974 13005 13006 13188 12971 12973 12974 13005 13006 13170 13173 13188 12955 12956 12958 12972 12974 13170 13173 13188 12731 12732 12733 12734 12767 12768 12769 12955 12956 12958 12971 12972 12973 13005 13006 13170 13173 13188 12754 12976 12977 12987 12990 12991 12995 13193 12975 12977 12978 12979 12982 12987 12991 13193 12735 12736 12737 12738 12739 12740 12741 12742 12744 12745 12753 12754 12757 12758 12975 12976 12978 12979 12982 12987 12990 12991 12995 13193 12742 12744 12745 12976 12977 12979 12982 13193 12976 12977 12978 12981 12982 13193 13194 13195 12746 12748 12749 12981 12982 12983 12984 13195 12979 12980 12982 12983 12984 13193 13194 13195 12742 12743 12744 12745 12746 12748 12749 12976 12977 12978 12979 12980 12981 12983 12984 13193 13194 13195 12980 12981 12982 12984 12985 12986 13177 13195 12746 12747 12748 12749 12750 12751 12752 12959 12960 12963 12980 12981 12982 12983 12985 12986 13177 13195 12959 12960 12963 12983 12984 12986 13177 13195 12983 12984 12985 13174 13177 13191 13195 13198 12975 12976 12977 12988 12991 13190 13193 13204 12987 12989 12991 13190 13193 13203 13204 13208 12988 12990 12991 12992 12995 13203 13204 13208 12754 12975 12977 12989 12991 12992 12995 13208 12754 12975 12976 12977 12987 12988 12989 12990 12992 12995 13190 13193 13203 13204 13208 12989 12990 12991 12993 12995 13207 13208 13212 12992 12994 12995 12996 12999 13207 13208 13212 12756 12757 12758 12993 12995 12996 12999 13212 12753 12754 12756 12757 12758 12975 12977 12989 12990 12991 12992 12993 12994 12996 12999 13207 13208 13212 12993 12994 12995 12997 12999 13211 13212 13216 12996 12998 12999 13000 13003 13211 13212 13216 12759 12760 12762 12997 12999 13000 13003 13216 12755 12756 12757 12758 12759 12760 12762 12993 12994 12995 12996 12997 12998 13000 13003 13211 13212 13216 12997 12998 12999 13001 13003 13215 13216 13219 13000 13002 13003 13004 13006 13215 13216 13219 12763 12764 12766 13001 13003 13004 13006 13219 12759 12760 12761 12762 12763 12764 12766 12997 12998 12999 13000 13001 13002 13004 13006 13215 13216 13219 13001 13002 13003 13005 13006 13185 13188 13219 12971 12972 12974 13004 13006 13185 13188 13219 12763 12764 12765 12766 12767 12768 12769 12971 12972 12974 13001 13002 13003 13004 13005 13185 13188 13219 12904 12905 12906 13009 13010 13130 13132 13223 12774 12775 12776 13009 13010 13011 13013 13223 13007 13008 13010 13011 13013 13130 13132 13223 12770 12771 12772 12773 12774 12775 12776 12904 12905 12906 13007 13008 13009 13011 13013 13130 13132 13223 13008 13009 13010 13012 13013 13221 13223 13226 13011 13013 13014 13015 13016 13221 13223 13226 13227 13229 12774 12775 12776 12777 12778 12779 13008 13009 13010 13011 13012 13014 13015 13016 13221 13223 13226 13227 13229 12775 12776 12777 12778 12779 13012 13013 13015 13016 13226 13227 13229 13012 13013 13014 13016 13017 13018 13019 13226 13227 13229 13230 13232 12775 12776 12777 12778 12779 12780 12781 12782 13012 13013 13014 13015 13017 13018 13019 13226 13227 13229 13230 13232 12778 12779 12780 12781 12782 13015 13016 13018 13019 13229 13230 13232 13015 13016 13017 13019 13020 13021 13022 13229 13230 13232 13233 13235 12778 12779 12780 12781 12782 12783 12784 12785 13015 13016 13017 13018 13020 13021 13022 13229 13230 13232 13233 13235 12781 12782 12783 12784 12785 13018 13019 13021 13022 13232 13233 13235 13018 13019 13020 13022 13023 13024 13025 13232 13233 13235 13236 13238 12781 12782 12783 12784 12785 12786 12787 12788 13018 13019 13020 13021 13023 13024 13025 13232 13233 13235 13236 13238 12784 12785 12786 12787 12788 13021 13022 13024 13025 13235 13236 13238 13021 13022 13023 13025 13026 13027 13028 13235 13236 13238 13239 13241 12784 12785 12786 12787 12788 12789 12790 12791 13021 13022 13023 13024 13026 13027 13028 13235 13236 13238 13239 13241 12787 12788 12789 12790 12791 13024 13025 13027 13028 13238 13239 13241 13024 13025 13026 13028 13029 13030 13031 13238 13239 13241 13242 13244 12787 12788 12789 12790 12791 12792 12793 12794 13024 13025 13026 13027 13029 13030 13031 13238 13239 13241 13242 13244 12790 12791 12792 12793 12794 13027 13028 13030 13031 13241 13242 13244 13027 13028 13029 13031 13032 13033 13034 13241 13242 13244 13245 13247 12790 12791 12792 12793 12794 12795 12796 12797 13027 13028 13029 13030 13032 13033 13034 13241 13242 13244 13245 13247 12793 12794 12795 12796 12797 13030 13031 13033 13034 13244 13245 13247 13030 13031 13032 13034 13035 13036 13037 13244 13245 13247 13248 13250 12793 12794 12795 12796 12797 12798 12799 12800 13030 13031 13032 13033 13035 13036 13037 13244 13245 13247 13248 13250 12796 12797 12798 12799 12800 13033 13034 13036 13037 13247 13248 13250 13033 13034 13035 13037 13038 13039 13040 13247 13248 13250 13251 13253 12796 12797 12798 12799 12800 12801 12802 12803 13033 13034 13035 13036 13038 13039 13040 13247 13248 13250 13251 13253 12799 12800 12801 12802 12803 13036 13037 13039 13040 13250 13251 13253 13036 13037 13038 13040 13041 13042 13043 13250 13251 13253 13254 13256 12799 12800 12801 12802 12803 12804 12805 12806 13036 13037 13038 13039 13041 13042 13043 13250 13251 13253 13254 13256 12802 12803 12804 12805 12806 13039 13040 13042 13043 13253 13254 13256 13039 13040 13041 13043 13044 13046 13047 13253 13254 13256 13257 13260 12802 12803 12804 12805 12806 12807 12809 12810 13039 13040 13041 13042 13044 13046 13047 13253 13254 13256 13257 13260 12805 12806 12807 12809 12810 13042 13043 13046 13047 13256 13257 13260 13046 13047 13048 13049 13260 13261 13262 13042 13043 13044 13045 13047 13048 13049 13256 13257 13260 13261 13262 12805 12806 12807 12808 12809 12810 12811 12812 13042 13043 13044 13045 13046 13048 13049 13256 13257 13260 13261 13262 12808 12809 12810 12811 12812 13045 13046 13047 13049 13260 13261 13262 12808 12809 12810 12811 12812 13045 13046 13047 13048 13260 13261 13262 12907 12908 12909 12911 12913 13051 13052 13134 13136 13265 13266 13268 13050 13052 13053 13054 13055 13134 13136 13265 13266 13268 13269 13271 12813 12814 12815 12907 12908 12909 12911 12913 13050 13051 13053 13054 13055 13134 13136 13265 13266 13268 13269 13271 12813 12814 12815 12908 12909 13051 13052 13054 13055 13268 13269 13271 13051 13052 13053 13055 13056 13057 13058 13268 13269 13271 13272 13274 12813 12814 12815 12816 12817 12818 12908 12909 13051 13052 13053 13054 13056 13057 13058 13268 13269 13271 13272 13274 12814 12815 12816 12817 12818 13054 13055 13057 13058 13271 13272 13274 13054 13055 13056 13058 13059 13060 13061 13271 13272 13274 13275 13277 12814 12815 12816 12817 12818 12819 12820 12821 13054 13055 13056 13057 13059 13060 13061 13271 13272 13274 13275 13277 12817 12818 12819 12820 12821 13057 13058 13060 13061 13274 13275 13277 13057 13058 13059 13061 13062 13063 13064 13274 13275 13277 13278 13280 12817 12818 12819 12820 12821 12822 12829 12830 13057 13058 13059 13060 13062 13063 13064 13274 13275 13277 13278 13280 12820 12821 12822 12829 12830 13060 13061 13063 13064 13277 13278 13280 13060 13061 13062 13064 13065 13072 13073 13277 13278 13280 13281 13283 12820 12821 12822 12829 12830 12831 12838 12839 13060 13061 13062 13063 13065 13072 13073 13277 13278 13280 13281 13283 12829 12830 12831 12838 12839 13063 13064 13072 13073 13280 13281 13283 12826 12827 12828 12874 12875 13067 13068 13070 13071 13078 13079 13286 12823 12824 12825 12826 12827 12828 12835 12836 12837 12874 12875 13066 13068 13070 13071 13075 13076 13078 13079 13286 12835 12836 12837 13066 13067 13070 13071 13075 13076 13078 13079 13286 12873 12874 12875 12877 12878 13070 13071 13103 13104 13285 13286 13289 12826 12827 12828 12873 12874 12875 12877 12878 13066 13067 13068 13069 13071 13078 13079 13103 13104 13285 13286 13289 13066 13067 13068 13069 13070 13078 13079 13103 13104 13285 13286 13289 13063 13064 13065 13073 13074 13081 13082 13280 13281 13283 13284 13292 12829 12830 12831 12838 12839 12840 12847 12848 13063 13064 13065 13072 13074 13081 13082 13280 13281 13283 13284 13292 12838 12839 12840 12847 12848 13072 13073 13081 13082 13283 13284 13292 12835 12836 12837 13067 13068 13076 13077 13079 13080 13089 13090 13296 12832 12833 12834 12835 12836 12837 12844 12845 12846 13067 13068 13075 13077 13079 13080 13086 13087 13089 13090 13296 12844 12845 12846 13075 13076 13079 13080 13086 13087 13089 13090 13296 13066 13067 13068 13070 13071 13079 13080 13286 13287 13296 13297 13299 12835 12836 12837 13066 13067 13068 13070 13071 13075 13076 13077 13078 13080 13089 13090 13286 13287 13296 13297 13299 13075 13076 13077 13078 13079 13089 13090 13286 13287 13296 13297 13299 13072 13073 13074 13082 13083 13091 13092 13283 13284 13292 13293 13302 12838 12839 12840 12847 12848 12849 12857 12858 13072 13073 13074 13081 13083 13091 13092 13283 13284 13292 13293 13302 12847 12848 12849 12857 12858 13081 13082 13091 13092 13292 13293 13302 12854 12855 12856 13085 13086 13094 13095 13305 13084 13086 13087 13088 13089 13094 13095 13305 12841 12842 12843 12844 12845 12846 12854 12855 12856 13076 13077 13084 13085 13087 13088 13089 13094 13095 13305 12844 12845 12846 13076 13077 13085 13086 13088 13089 13305 13085 13086 13087 13089 13090 13294 13296 13305 12844 12845 12846 13075 13076 13077 13079 13080 13085 13086 13087 13088 13090 13294 13296 13305 13075 13076 13077 13079 13080 13088 13089 13294 13296 13305 13081 13082 13083 13092 13093 13097 13098 13292 13293 13302 13303 13308 12847 12848 12849 12857 12858 12859 12868 12869 13081 13082 13083 13091 13093 13097 13098 13292 13293 13302 13303 13308 12857 12858 12859 12868 12869 13091 13092 13097 13098 13302 13303 13308 13084 13085 13086 13095 13096 13100 13101 13305 13306 13310 12850 12851 12852 12853 12854 12855 12856 12860 12861 12862 12866 12867 13084 13085 13086 13094 13096 13100 13101 13305 13306 13310 12860 12861 12862 12866 12867 13094 13095 13100 13101 13305 13306 13310 13091 13092 13093 13098 13099 13100 13101 13302 13303 13308 13309 13310 12857 12858 12859 12868 12869 12870 12871 12872 13091 13092 13093 13097 13099 13100 13101 13302 13303 13308 13309 13310 12868 12869 12870 12871 12872 13097 13098 13100 13101 13308 13309 13310 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 13094 13095 13096 13097 13098 13099 13101 13305 13306 13308 13309 13310 13094 13095 13096 13097 13098 13099 13100 13305 13306 13308 13309 13310 12876 12877 12878 12880 12881 13103 13104 13106 13107 13288 13289 13313 12873 12874 12875 12876 12877 12878 12880 12881 13069 13070 13071 13102 13104 13106 13107 13285 13286 13288 13289 13313 13069 13070 13071 13102 13103 13106 13107 13285 13286 13288 13289 13313 12879 12880 12881 12883 12884 13106 13107 13109 13110 13312 13313 13316 12876 12877 12878 12879 12880 12881 12883 12884 13102 13103 13104 13105 13107 13109 13110 13288 13289 13312 13313 13316 13102 13103 13104 13105 13106 13109 13110 13288 13289 13312 13313 13316 12882 12883 12884 12886 12887 13109 13110 13112 13113 13315 13316 13319 12879 12880 12881 12882 12883 12884 12886 12887 13105 13106 13107 13108 13110 13112 13113 13312 13313 13315 13316 13319 13105 13106 13107 13108 13109 13112 13113 13312 13313 13315 13316 13319 12885 12886 12887 12889 12890 13112 13113 13115 13116 13318 13319 13322 12882 12883 12884 12885 12886 12887 12889 12890 13108 13109 13110 13111 13113 13115 13116 13315 13316 13318 13319 13322 13108 13109 13110 13111 13112 13115 13116 13315 13316 13318 13319 13322 12888 12889 12890 12892 12893 13115 13116 13118 13119 13321 13322 13325 12885 12886 12887 12888 12889 12890 12892 12893 13111 13112 13113 13114 13116 13118 13119 13318 13319 13321 13322 13325 13111 13112 13113 13114 13115 13118 13119 13318 13319 13321 13322 13325 12891 12892 12893 12895 12896 13118 13119 13121 13122 13324 13325 13328 12888 12889 12890 12891 12892 12893 12895 12896 13114 13115 13116 13117 13119 13121 13122 13321 13322 13324 13325 13328 13114 13115 13116 13117 13118 13121 13122 13321 13322 13324 13325 13328 12894 12895 12896 12897 12898 13121 13122 13123 13124 13327 13328 13331 12891 12892 12893 12894 12895 12896 12897 12898 13117 13118 13119 13120 13122 13123 13124 13324 13325 13327 13328 13331 13117 13118 13119 13120 13121 13123 13124 13324 13325 13327 13328 13331 13120 13121 13122 13124 13327 13328 13331 12894 12895 12896 12897 12898 13120 13121 13122 13123 13327 13328 13331 12929 12930 12931 13127 13128 13145 13149 13336 12900 12902 12903 13127 13128 13129 13132 13336 13125 13126 13128 13129 13132 13145 13149 13336 12899 12900 12902 12903 12929 12930 12931 13125 13126 13127 13129 13132 13145 13149 13336 13126 13127 13128 13131 13132 13333 13336 13339 13007 13009 13010 13131 13132 13220 13223 13339 13129 13130 13132 13220 13223 13333 13336 13339 12900 12901 12902 12903 12904 12905 12906 13007 13009 13010 13126 13127 13128 13129 13130 13131 13220 13223 13333 13336 13339 12937 12938 12939 13138 13139 13156 13157 13342 13050 13051 13052 13135 13136 13263 13265 13266 13268 13342 13134 13136 13137 13138 13139 13263 13265 13342 12907 12908 12909 12911 12912 12913 13050 13051 13052 13134 13135 13137 13138 13139 13263 13265 13266 13268 13342 12911 12912 12913 13135 13136 13138 13139 13342 12910 12911 12912 12913 12914 12915 12916 12937 12938 12939 13133 13135 13136 13137 13139 13156 13157 13342 13133 13135 13136 13137 13138 13156 13157 13342 12968 12969 12970 13141 13142 13183 13184 13347 13140 13142 13143 13144 13147 13183 13184 13347 12917 12918 12919 12920 12921 12922 12923 12968 12969 12970 13140 13141 13143 13144 13147 13183 13184 13347 12921 12922 12923 13141 13142 13144 13147 13347 13141 13142 13143 13146 13147 13345 13347 13349 13125 13127 13128 13149 13150 13332 13336 13349 13144 13147 13148 13149 13150 13345 13347 13349 12921 12922 12923 12924 12925 12926 12927 13141 13142 13143 13144 13146 13148 13149 13150 13345 13347 13349 12925 12926 12927 13146 13147 13149 13150 13349 12925 12926 12927 12928 12929 12930 12931 13125 13127 13128 13145 13146 13147 13148 13150 13332 13336 13349 13145 13146 13147 13148 13149 13332 13336 13349 12952 12953 12954 13153 13154 13167 13168 13353 12936 12938 12939 13153 13154 13155 13157 13353 12932 12933 12934 12935 12936 12938 12939 12952 12953 12954 13151 13152 13154 13155 13157 13167 13168 13353 13151 13152 13153 13155 13157 13167 13168 13353 13152 13153 13154 13157 13158 13352 13353 13357 13133 13138 13139 13157 13158 13340 13342 13357 12936 12937 12938 12939 13133 13138 13139 13152 13153 13154 13155 13156 13158 13340 13342 13352 13353 13357 13155 13156 13157 13340 13342 13352 13353 13357 12956 12957 12958 13160 13162 13172 13173 13362 13159 13161 13162 13163 13166 13172 13173 13362 12944 12945 12947 13160 13162 13163 13166 13362 12940 12941 12942 12943 12944 12945 12947 12956 12957 12958 13159 13160 13161 13163 13166 13172 13173 13362 13160 13161 13162 13164 13166 13361 13362 13364 13163 13165 13166 13168 13169 13361 13362 13364 12948 12949 12951 13164 13166 13168 13169 13364 12944 12945 12946 12947 12948 12949 12951 13160 13161 13162 13163 13164 13165 13168 13169 13361 13362 13364 13151 13153 13154 13168 13169 13351 13353 13364 12948 12949 12950 12951 12952 12953 12954 13151 13153 13154 13164 13165 13166 13167 13169 13351 13353 13364 13164 13165 13166 13167 13168 13351 13353 13364 12972 12973 12974 13171 13173 13187 13188 13369 13170 13172 13173 13187 13188 13359 13362 13369 13159 13160 13162 13171 13173 13359 13362 13369 12955 12956 12957 12958 12972 12973 12974 13159 13160 13162 13170 13171 13172 13187 13188 13359 13362 13369 12986 13176 13177 13189 13191 13195 13198 13373 12960 12962 12963 13176 13177 13178 13179 13373 13174 13175 13177 13178 13179 13189 13198 13373 12959 12960 12962 12963 12983 12984 12985 12986 13174 13175 13176 13178 13179 13189 13191 13195 13198 13373 13175 13176 13177 13179 13180 13181 13183 13373 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 13175 13176 13177 13178 13180 13181 13183 13373 12967 12968 12969 13178 13179 13181 13183 13373 13178 13179 13180 13182 13183 13370 13373 13375 13181 13183 13184 13344 13347 13370 13373 13375 12967 12968 12969 12970 13140 13141 13142 13178 13179 13180 13181 13182 13184 13344 13347 13370 13373 13375 13140 13141 13142 13182 13183 13344 13347 13375 13004 13005 13006 13186 13188 13218 13219 13380 13185 13187 13188 13218 13219 13366 13369 13380 13170 13171 13173 13186 13188 13366 13369 13380 12971 12972 12973 12974 13004 13005 13006 13170 13171 13173 13185 13186 13187 13218 13219 13366 13369 13380 13174 13176 13177 13198 13199 13372 13373 13384 12987 12988 12991 13192 13193 13200 13204 13388 12986 13174 13177 13195 13196 13197 13198 13388 13190 13193 13194 13195 13196 13200 13204 13388 12975 12976 12977 12978 12979 12981 12982 12987 12988 12991 13190 13192 13194 13195 13196 13200 13204 13388 12979 12981 12982 13192 13193 13195 13196 13388 12979 12980 12981 12982 12983 12984 12985 12986 13174 13177 13191 13192 13193 13194 13196 13197 13198 13388 13191 13192 13193 13194 13195 13197 13198 13388 13191 13195 13196 13198 13199 13383 13384 13388 12986 13174 13176 13177 13189 13191 13195 13196 13197 13199 13372 13373 13383 13384 13388 13189 13197 13198 13372 13373 13383 13384 13388 13190 13192 13193 13201 13204 13387 13388 13392 13200 13202 13204 13387 13388 13391 13392 13396 13201 13203 13204 13205 13208 13391 13392 13396 12988 12989 12991 13202 13204 13205 13208 13396 12987 12988 12989 12991 13190 13192 13193 13200 13201 13202 13203 13205 13208 13387 13388 13391 13392 13396 13202 13203 13204 13206 13208 13395 13396 13400 13205 13207 13208 13209 13212 13395 13396 13400 12992 12993 12995 13206 13208 13209 13212 13400 12988 12989 12990 12991 12992 12993 12995 13202 13203 13204 13205 13206 13207 13209 13212 13395 13396 13400 13206 13207 13208 13210 13212 13399 13400 13404 13209 13211 13212 13213 13216 13399 13400 13404 12996 12997 12999 13210 13212 13213 13216 13404 12992 12993 12994 12995 12996 12997 12999 13206 13207 13208 13209 13210 13211 13213 13216 13399 13400 13404 13210 13211 13212 13214 13216 13403 13404 13407 13213 13215 13216 13217 13219 13403 13404 13407 13000 13001 13003 13214 13216 13217 13219 13407 12996 12997 12998 12999 13000 13001 13003 13210 13211 13212 13213 13214 13215 13217 13219 13403 13404 13407 13214 13215 13216 13218 13219 13377 13380 13407 13185 13186 13188 13217 13219 13377 13380 13407 13000 13001 13002 13003 13004 13005 13006 13185 13186 13188 13214 13215 13216 13217 13218 13377 13380 13407 13130 13131 13132 13222 13223 13337 13339 13411 13011 13012 13013 13222 13223 13224 13226 13411 13220 13221 13223 13224 13226 13337 13339 13411 13007 13008 13009 13010 13011 13012 13013 13130 13131 13132 13220 13221 13222 13224 13226 13337 13339 13411 13221 13222 13223 13225 13226 13409 13411 13414 13224 13226 13227 13228 13229 13409 13411 13414 13415 13417 13011 13012 13013 13014 13015 13016 13221 13222 13223 13224 13225 13227 13228 13229 13409 13411 13414 13415 13417 13012 13013 13014 13015 13016 13225 13226 13228 13229 13414 13415 13417 13225 13226 13227 13229 13230 13231 13232 13414 13415 13417 13418 13420 13012 13013 13014 13015 13016 13017 13018 13019 13225 13226 13227 13228 13230 13231 13232 13414 13415 13417 13418 13420 13015 13016 13017 13018 13019 13228 13229 13231 13232 13417 13418 13420 13228 13229 13230 13232 13233 13234 13235 13417 13418 13420 13421 13423 13015 13016 13017 13018 13019 13020 13021 13022 13228 13229 13230 13231 13233 13234 13235 13417 13418 13420 13421 13423 13018 13019 13020 13021 13022 13231 13232 13234 13235 13420 13421 13423 13231 13232 13233 13235 13236 13237 13238 13420 13421 13423 13424 13426 13018 13019 13020 13021 13022 13023 13024 13025 13231 13232 13233 13234 13236 13237 13238 13420 13421 13423 13424 13426 13021 13022 13023 13024 13025 13234 13235 13237 13238 13423 13424 13426 13234 13235 13236 13238 13239 13240 13241 13423 13424 13426 13427 13429 13021 13022 13023 13024 13025 13026 13027 13028 13234 13235 13236 13237 13239 13240 13241 13423 13424 13426 13427 13429 13024 13025 13026 13027 13028 13237 13238 13240 13241 13426 13427 13429 13237 13238 13239 13241 13242 13243 13244 13426 13427 13429 13430 13432 13024 13025 13026 13027 13028 13029 13030 13031 13237 13238 13239 13240 13242 13243 13244 13426 13427 13429 13430 13432 13027 13028 13029 13030 13031 13240 13241 13243 13244 13429 13430 13432 13240 13241 13242 13244 13245 13246 13247 13429 13430 13432 13433 13435 13027 13028 13029 13030 13031 13032 13033 13034 13240 13241 13242 13243 13245 13246 13247 13429 13430 13432 13433 13435 13030 13031 13032 13033 13034 13243 13244 13246 13247 13432 13433 13435 13243 13244 13245 13247 13248 13249 13250 13432 13433 13435 13436 13438 13030 13031 13032 13033 13034 13035 13036 13037 13243 13244 13245 13246 13248 13249 13250 13432 13433 13435 13436 13438 13033 13034 13035 13036 13037 13246 13247 13249 13250 13435 13436 13438 13246 13247 13248 13250 13251 13252 13253 13435 13436 13438 13439 13441 13033 13034 13035 13036 13037 13038 13039 13040 13246 13247 13248 13249 13251 13252 13253 13435 13436 13438 13439 13441 13036 13037 13038 13039 13040 13249 13250 13252 13253 13438 13439 13441 13249 13250 13251 13253 13254 13255 13256 13438 13439 13441 13442 13444 13036 13037 13038 13039 13040 13041 13042 13043 13249 13250 13251 13252 13254 13255 13256 13438 13439 13441 13442 13444 13039 13040 13041 13042 13043 13252 13253 13255 13256 13441 13442 13444 13252 13253 13254 13256 13257 13259 13260 13441 13442 13444 13445 13448 13039 13040 13041 13042 13043 13044 13046 13047 13252 13253 13254 13255 13257 13259 13260 13441 13442 13444 13445 13448 13042 13043 13044 13046 13047 13255 13256 13259 13260 13444 13445 13448 13259 13260 13261 13262 13448 13449 13450 13255 13256 13257 13258 13260 13261 13262 13444 13445 13448 13449 13450 13042 13043 13044 13045 13046 13047 13048 13049 13255 13256 13257 13258 13259 13261 13262 13444 13445 13448 13449 13450 13045 13046 13047 13048 13049 13258 13259 13260 13262 13448 13449 13450 13045 13046 13047 13048 13049 13258 13259 13260 13261 13448 13449 13450 13134 13135 13136 13264 13265 13341 13342 13453 13263 13265 13266 13267 13268 13341 13342 13453 13454 13456 13050 13051 13052 13134 13135 13136 13263 13264 13266 13267 13268 13341 13342 13453 13454 13456 13050 13051 13052 13134 13136 13264 13265 13267 13268 13453 13454 13456 13264 13265 13266 13268 13269 13270 13271 13453 13454 13456 13457 13459 13050 13051 13052 13053 13054 13055 13134 13136 13264 13265 13266 13267 13269 13270 13271 13453 13454 13456 13457 13459 13051 13052 13053 13054 13055 13267 13268 13270 13271 13456 13457 13459 13267 13268 13269 13271 13272 13273 13274 13456 13457 13459 13460 13462 13051 13052 13053 13054 13055 13056 13057 13058 13267 13268 13269 13270 13272 13273 13274 13456 13457 13459 13460 13462 13054 13055 13056 13057 13058 13270 13271 13273 13274 13459 13460 13462 13270 13271 13272 13274 13275 13276 13277 13459 13460 13462 13463 13465 13054 13055 13056 13057 13058 13059 13060 13061 13270 13271 13272 13273 13275 13276 13277 13459 13460 13462 13463 13465 13057 13058 13059 13060 13061 13273 13274 13276 13277 13462 13463 13465 13273 13274 13275 13277 13278 13279 13280 13462 13463 13465 13466 13468 13057 13058 13059 13060 13061 13062 13063 13064 13273 13274 13275 13276 13278 13279 13280 13462 13463 13465 13466 13468 13060 13061 13062 13063 13064 13276 13277 13279 13280 13465 13466 13468 13276 13277 13278 13280 13281 13282 13283 13465 13466 13468 13469 13471 13060 13061 13062 13063 13064 13065 13072 13073 13276 13277 13278 13279 13281 13282 13283 13465 13466 13468 13469 13471 13063 13064 13065 13072 13073 13279 13280 13282 13283 13468 13469 13471 13279 13280 13281 13283 13284 13291 13292 13468 13469 13471 13472 13474 13063 13064 13065 13072 13073 13074 13081 13082 13279 13280 13281 13282 13284 13291 13292 13468 13469 13471 13472 13474 13072 13073 13074 13081 13082 13282 13283 13291 13292 13471 13472 13474 13069 13070 13071 13103 13104 13286 13287 13289 13290 13299 13300 13478 13066 13067 13068 13069 13070 13071 13078 13079 13080 13103 13104 13285 13287 13289 13290 13296 13297 13299 13300 13478 13078 13079 13080 13285 13286 13289 13290 13296 13297 13299 13300 13478 13102 13103 13104 13106 13107 13289 13290 13313 13314 13478 13479 13481 13069 13070 13071 13102 13103 13104 13106 13107 13285 13286 13287 13288 13290 13299 13300 13313 13314 13478 13479 13481 13285 13286 13287 13288 13289 13299 13300 13313 13314 13478 13479 13481 13282 13283 13284 13292 13293 13301 13302 13471 13472 13474 13475 13484 13072 13073 13074 13081 13082 13083 13091 13092 13282 13283 13284 13291 13293 13301 13302 13471 13472 13474 13475 13484 13081 13082 13083 13091 13092 13291 13292 13301 13302 13474 13475 13484 13088 13089 13090 13295 13296 13304 13305 13487 13294 13296 13297 13298 13299 13304 13305 13487 13075 13076 13077 13078 13079 13080 13088 13089 13090 13286 13287 13294 13295 13297 13298 13299 13304 13305 13487 13078 13079 13080 13286 13287 13295 13296 13298 13299 13487 13295 13296 13297 13299 13300 13476 13478 13487 13078 13079 13080 13285 13286 13287 13289 13290 13295 13296 13297 13298 13300 13476 13478 13487 13285 13286 13287 13289 13290 13298 13299 13476 13478 13487 13291 13292 13293 13302 13303 13307 13308 13474 13475 13484 13485 13490 13081 13082 13083 13091 13092 13093 13097 13098 13291 13292 13293 13301 13303 13307 13308 13474 13475 13484 13485 13490 13091 13092 13093 13097 13098 13301 13302 13307 13308 13484 13485 13490 13294 13295 13296 13305 13306 13310 13311 13487 13488 13492 13084 13085 13086 13087 13088 13089 13090 13094 13095 13096 13100 13101 13294 13295 13296 13304 13306 13310 13311 13487 13488 13492 13094 13095 13096 13100 13101 13304 13305 13310 13311 13487 13488 13492 13301 13302 13303 13308 13309 13310 13311 13484 13485 13490 13491 13492 13091 13092 13093 13097 13098 13099 13100 13101 13301 13302 13303 13307 13309 13310 13311 13484 13485 13490 13491 13492 13097 13098 13099 13100 13101 13307 13308 13310 13311 13490 13491 13492 13094 13095 13096 13097 13098 13099 13100 13101 13304 13305 13306 13307 13308 13309 13311 13487 13488 13490 13491 13492 13304 13305 13306 13307 13308 13309 13310 13487 13488 13490 13491 13492 13105 13106 13107 13109 13110 13313 13314 13316 13317 13481 13482 13496 13102 13103 13104 13105 13106 13107 13109 13110 13288 13289 13290 13312 13314 13316 13317 13478 13479 13481 13482 13496 13288 13289 13290 13312 13313 13316 13317 13478 13479 13481 13482 13496 13108 13109 13110 13112 13113 13316 13317 13319 13320 13496 13497 13499 13105 13106 13107 13108 13109 13110 13112 13113 13312 13313 13314 13315 13317 13319 13320 13481 13482 13496 13497 13499 13312 13313 13314 13315 13316 13319 13320 13481 13482 13496 13497 13499 13111 13112 13113 13115 13116 13319 13320 13322 13323 13499 13500 13506 13108 13109 13110 13111 13112 13113 13115 13116 13315 13316 13317 13318 13320 13322 13323 13496 13497 13499 13500 13506 13315 13316 13317 13318 13319 13322 13323 13496 13497 13499 13500 13506 13114 13115 13116 13118 13119 13322 13323 13325 13326 13506 13507 13509 13111 13112 13113 13114 13115 13116 13118 13119 13318 13319 13320 13321 13323 13325 13326 13499 13500 13506 13507 13509 13318 13319 13320 13321 13322 13325 13326 13499 13500 13506 13507 13509 13117 13118 13119 13121 13122 13325 13326 13328 13329 13509 13510 13513 13114 13115 13116 13117 13118 13119 13121 13122 13321 13322 13323 13324 13326 13328 13329 13506 13507 13509 13510 13513 13321 13322 13323 13324 13325 13328 13329 13506 13507 13509 13510 13513 13120 13121 13122 13123 13124 13328 13329 13330 13331 13502 13503 13513 13117 13118 13119 13120 13121 13122 13123 13124 13324 13325 13326 13327 13329 13330 13331 13502 13503 13509 13510 13513 13324 13325 13326 13327 13328 13330 13331 13502 13503 13509 13510 13513 13327 13328 13329 13331 13502 13503 13513 13120 13121 13122 13123 13124 13327 13328 13329 13330 13502 13503 13513 13145 13149 13150 13335 13336 13349 13350 13518 13129 13131 13132 13334 13336 13338 13339 13521 13333 13335 13336 13338 13339 13515 13518 13521 13332 13334 13336 13349 13350 13515 13518 13521 13125 13126 13127 13128 13129 13131 13132 13145 13149 13150 13332 13333 13334 13335 13338 13339 13349 13350 13515 13518 13521 13220 13222 13223 13338 13339 13408 13411 13521 13333 13334 13336 13337 13339 13408 13411 13521 13129 13130 13131 13132 13220 13222 13223 13333 13334 13336 13337 13338 13408 13411 13521 13156 13157 13158 13342 13343 13356 13357 13524 13263 13264 13265 13342 13343 13451 13453 13524 13133 13134 13135 13136 13137 13138 13139 13156 13157 13158 13263 13264 13265 13340 13341 13343 13356 13357 13451 13453 13524 13340 13341 13342 13356 13357 13451 13453 13524 13182 13183 13184 13346 13347 13375 13376 13529 13144 13146 13147 13346 13347 13348 13349 13529 13344 13345 13347 13348 13349 13375 13376 13529 13140 13141 13142 13143 13144 13146 13147 13182 13183 13184 13344 13345 13346 13348 13349 13375 13376 13529 13345 13346 13347 13349 13350 13514 13518 13529 13144 13145 13146 13147 13148 13149 13150 13332 13335 13336 13345 13346 13347 13348 13350 13514 13518 13529 13332 13335 13336 13348 13349 13514 13518 13529 13167 13168 13169 13353 13354 13363 13364 13532 13155 13157 13158 13353 13354 13355 13357 13532 13151 13152 13153 13154 13155 13157 13158 13167 13168 13169 13351 13352 13354 13355 13357 13363 13364 13532 13351 13352 13353 13355 13357 13363 13364 13532 13352 13353 13354 13357 13358 13531 13532 13536 13340 13342 13343 13357 13358 13522 13524 13536 13155 13156 13157 13158 13340 13342 13343 13352 13353 13354 13355 13356 13358 13522 13524 13531 13532 13536 13355 13356 13357 13522 13524 13531 13532 13536 13171 13172 13173 13360 13362 13368 13369 13541 13359 13361 13362 13364 13365 13368 13369 13541 13163 13164 13166 13360 13362 13364 13365 13541 13159 13160 13161 13162 13163 13164 13166 13171 13172 13173 13359 13360 13361 13364 13365 13368 13369 13541 13351 13353 13354 13364 13365 13530 13532 13541 13163 13164 13165 13166 13167 13168 13169 13351 13353 13354 13360 13361 13362 13363 13365 13530 13532 13541 13360 13361 13362 13363 13364 13530 13532 13541 13186 13187 13188 13367 13369 13379 13380 13545 13366 13368 13369 13379 13380 13538 13541 13545 13359 13360 13362 13367 13369 13538 13541 13545 13170 13171 13172 13173 13186 13187 13188 13359 13360 13362 13366 13367 13368 13379 13380 13538 13541 13545 13181 13182 13183 13371 13373 13374 13375 13549 13370 13372 13373 13374 13375 13381 13384 13549 13189 13198 13199 13371 13373 13381 13384 13549 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13189 13198 13199 13370 13371 13372 13374 13375 13381 13384 13549 13370 13371 13373 13375 13376 13528 13529 13549 13181 13182 13183 13184 13344 13346 13347 13370 13371 13373 13374 13376 13528 13529 13549 13344 13346 13347 13374 13375 13528 13529 13549 13217 13218 13219 13378 13380 13406 13407 13554 13377 13379 13380 13406 13407 13542 13545 13554 13366 13367 13369 13378 13380 13542 13545 13554 13185 13186 13187 13188 13217 13218 13219 13366 13367 13369 13377 13378 13379 13406 13407 13542 13545 13554 13371 13372 13373 13382 13384 13548 13549 13558 13381 13383 13384 13385 13388 13548 13549 13558 13197 13198 13199 13382 13384 13385 13388 13558 13189 13197 13198 13199 13371 13372 13373 13381 13382 13383 13385 13388 13548 13549 13558 13382 13383 13384 13386 13388 13557 13558 13563 13385 13387 13388 13389 13392 13557 13558 13563 13200 13201 13204 13386 13388 13389 13392 13563 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13204 13382 13383 13384 13385 13386 13387 13389 13392 13557 13558 13563 13386 13387 13388 13390 13392 13562 13563 13567 13389 13391 13392 13393 13396 13562 13563 13567 13201 13202 13204 13390 13392 13393 13396 13567 13200 13201 13202 13204 13386 13387 13388 13389 13390 13391 13393 13396 13562 13563 13567 13390 13391 13392 13394 13396 13566 13567 13571 13393 13395 13396 13397 13400 13566 13567 13571 13205 13206 13208 13394 13396 13397 13400 13571 13201 13202 13203 13204 13205 13206 13208 13390 13391 13392 13393 13394 13395 13397 13400 13566 13567 13571 13394 13395 13396 13398 13400 13570 13571 13575 13397 13399 13400 13401 13404 13570 13571 13575 13209 13210 13212 13398 13400 13401 13404 13575 13205 13206 13207 13208 13209 13210 13212 13394 13395 13396 13397 13398 13399 13401 13404 13570 13571 13575 13398 13399 13400 13402 13404 13574 13575 13578 13401 13403 13404 13405 13407 13574 13575 13578 13213 13214 13216 13402 13404 13405 13407 13578 13209 13210 13211 13212 13213 13214 13216 13398 13399 13400 13401 13402 13403 13405 13407 13574 13575 13578 13402 13403 13404 13406 13407 13551 13554 13578 13377 13378 13380 13405 13407 13551 13554 13578 13213 13214 13215 13216 13217 13218 13219 13377 13378 13380 13402 13403 13404 13405 13406 13551 13554 13578 13337 13338 13339 13410 13411 13519 13521 13582 13224 13225 13226 13410 13411 13412 13414 13582 13408 13409 13411 13412 13414 13519 13521 13582 13220 13221 13222 13223 13224 13225 13226 13337 13338 13339 13408 13409 13410 13412 13414 13519 13521 13582 13409 13410 13411 13413 13414 13580 13582 13585 13412 13414 13415 13416 13417 13580 13582 13585 13586 13588 13224 13225 13226 13227 13228 13229 13409 13410 13411 13412 13413 13415 13416 13417 13580 13582 13585 13586 13588 13225 13226 13227 13228 13229 13413 13414 13416 13417 13585 13586 13588 13413 13414 13415 13417 13418 13419 13420 13585 13586 13588 13589 13591 13225 13226 13227 13228 13229 13230 13231 13232 13413 13414 13415 13416 13418 13419 13420 13585 13586 13588 13589 13591 13228 13229 13230 13231 13232 13416 13417 13419 13420 13588 13589 13591 13416 13417 13418 13420 13421 13422 13423 13588 13589 13591 13592 13594 13228 13229 13230 13231 13232 13233 13234 13235 13416 13417 13418 13419 13421 13422 13423 13588 13589 13591 13592 13594 13231 13232 13233 13234 13235 13419 13420 13422 13423 13591 13592 13594 13419 13420 13421 13423 13424 13425 13426 13591 13592 13594 13595 13597 13231 13232 13233 13234 13235 13236 13237 13238 13419 13420 13421 13422 13424 13425 13426 13591 13592 13594 13595 13597 13234 13235 13236 13237 13238 13422 13423 13425 13426 13594 13595 13597 13422 13423 13424 13426 13427 13428 13429 13594 13595 13597 13598 13600 13234 13235 13236 13237 13238 13239 13240 13241 13422 13423 13424 13425 13427 13428 13429 13594 13595 13597 13598 13600 13237 13238 13239 13240 13241 13425 13426 13428 13429 13597 13598 13600 13425 13426 13427 13429 13430 13431 13432 13597 13598 13600 13601 13603 13237 13238 13239 13240 13241 13242 13243 13244 13425 13426 13427 13428 13430 13431 13432 13597 13598 13600 13601 13603 13240 13241 13242 13243 13244 13428 13429 13431 13432 13600 13601 13603 13428 13429 13430 13432 13433 13434 13435 13600 13601 13603 13604 13606 13240 13241 13242 13243 13244 13245 13246 13247 13428 13429 13430 13431 13433 13434 13435 13600 13601 13603 13604 13606 13243 13244 13245 13246 13247 13431 13432 13434 13435 13603 13604 13606 13431 13432 13433 13435 13436 13437 13438 13603 13604 13606 13607 13609 13243 13244 13245 13246 13247 13248 13249 13250 13431 13432 13433 13434 13436 13437 13438 13603 13604 13606 13607 13609 13246 13247 13248 13249 13250 13434 13435 13437 13438 13606 13607 13609 13434 13435 13436 13438 13439 13440 13441 13606 13607 13609 13610 13612 13246 13247 13248 13249 13250 13251 13252 13253 13434 13435 13436 13437 13439 13440 13441 13606 13607 13609 13610 13612 13249 13250 13251 13252 13253 13437 13438 13440 13441 13609 13610 13612 13437 13438 13439 13441 13442 13443 13444 13609 13610 13612 13613 13615 13249 13250 13251 13252 13253 13254 13255 13256 13437 13438 13439 13440 13442 13443 13444 13609 13610 13612 13613 13615 13252 13253 13254 13255 13256 13440 13441 13443 13444 13612 13613 13615 13440 13441 13442 13444 13445 13447 13448 13612 13613 13615 13616 13619 13252 13253 13254 13255 13256 13257 13259 13260 13440 13441 13442 13443 13445 13447 13448 13612 13613 13615 13616 13619 13255 13256 13257 13259 13260 13443 13444 13447 13448 13615 13616 13619 13447 13448 13449 13450 13619 13620 13621 13443 13444 13445 13446 13448 13449 13450 13615 13616 13619 13620 13621 13255 13256 13257 13258 13259 13260 13261 13262 13443 13444 13445 13446 13447 13449 13450 13615 13616 13619 13620 13621 13258 13259 13260 13261 13262 13446 13447 13448 13450 13619 13620 13621 13258 13259 13260 13261 13262 13446 13447 13448 13449 13619 13620 13621 13341 13342 13343 13452 13453 13523 13524 13624 13451 13453 13454 13455 13456 13523 13524 13624 13625 13627 13263 13264 13265 13266 13267 13268 13341 13342 13343 13451 13452 13454 13455 13456 13523 13524 13624 13625 13627 13264 13265 13266 13267 13268 13452 13453 13455 13456 13624 13625 13627 13452 13453 13454 13456 13457 13458 13459 13624 13625 13627 13628 13630 13264 13265 13266 13267 13268 13269 13270 13271 13452 13453 13454 13455 13457 13458 13459 13624 13625 13627 13628 13630 13267 13268 13269 13270 13271 13455 13456 13458 13459 13627 13628 13630 13455 13456 13457 13459 13460 13461 13462 13627 13628 13630 13631 13633 13267 13268 13269 13270 13271 13272 13273 13274 13455 13456 13457 13458 13460 13461 13462 13627 13628 13630 13631 13633 13270 13271 13272 13273 13274 13458 13459 13461 13462 13630 13631 13633 13458 13459 13460 13462 13463 13464 13465 13630 13631 13633 13634 13636 13270 13271 13272 13273 13274 13275 13276 13277 13458 13459 13460 13461 13463 13464 13465 13630 13631 13633 13634 13636 13273 13274 13275 13276 13277 13461 13462 13464 13465 13633 13634 13636 13461 13462 13463 13465 13466 13467 13468 13633 13634 13636 13637 13639 13273 13274 13275 13276 13277 13278 13279 13280 13461 13462 13463 13464 13466 13467 13468 13633 13634 13636 13637 13639 13276 13277 13278 13279 13280 13464 13465 13467 13468 13636 13637 13639 13464 13465 13466 13468 13469 13470 13471 13636 13637 13639 13640 13642 13276 13277 13278 13279 13280 13281 13282 13283 13464 13465 13466 13467 13469 13470 13471 13636 13637 13639 13640 13642 13279 13280 13281 13282 13283 13467 13468 13470 13471 13639 13640 13642 13467 13468 13469 13471 13472 13473 13474 13639 13640 13642 13643 13645 13279 13280 13281 13282 13283 13284 13291 13292 13467 13468 13469 13470 13472 13473 13474 13639 13640 13642 13643 13645 13282 13283 13284 13291 13292 13470 13471 13473 13474 13642 13643 13645 13470 13471 13472 13474 13475 13483 13484 13642 13643 13645 13646 13648 13282 13283 13284 13291 13292 13293 13301 13302 13470 13471 13472 13473 13475 13483 13484 13642 13643 13645 13646 13648 13291 13292 13293 13301 13302 13473 13474 13483 13484 13645 13646 13648 13298 13299 13300 13477 13478 13486 13487 13651 13476 13478 13479 13480 13481 13486 13487 13651 13285 13286 13287 13288 13289 13290 13298 13299 13300 13313 13314 13476 13477 13479 13480 13481 13486 13487 13651 13288 13289 13290 13313 13314 13477 13478 13480 13481 13651 13477 13478 13479 13481 13482 13494 13496 13651 13288 13289 13290 13312 13313 13314 13316 13317 13477 13478 13479 13480 13482 13494 13496 13651 13312 13313 13314 13316 13317 13480 13481 13494 13496 13651 13473 13474 13475 13484 13485 13489 13490 13645 13646 13648 13649 13654 13291 13292 13293 13301 13302 13303 13307 13308 13473 13474 13475 13483 13485 13489 13490 13645 13646 13648 13649 13654 13301 13302 13303 13307 13308 13483 13484 13489 13490 13648 13649 13654 13476 13477 13478 13487 13488 13492 13493 13651 13652 13656 13294 13295 13296 13297 13298 13299 13300 13304 13305 13306 13310 13311 13476 13477 13478 13486 13488 13492 13493 13651 13652 13656 13304 13305 13306 13310 13311 13486 13487 13492 13493 13651 13652 13656 13483 13484 13485 13490 13491 13492 13493 13648 13649 13654 13655 13656 13301 13302 13303 13307 13308 13309 13310 13311 13483 13484 13485 13489 13491 13492 13493 13648 13649 13654 13655 13656 13307 13308 13309 13310 13311 13489 13490 13492 13493 13654 13655 13656 13304 13305 13306 13307 13308 13309 13310 13311 13486 13487 13488 13489 13490 13491 13493 13651 13652 13654 13655 13656 13486 13487 13488 13489 13490 13491 13492 13651 13652 13654 13655 13656 13480 13481 13482 13495 13496 13650 13651 13659 13494 13496 13497 13498 13499 13650 13651 13659 13312 13313 13314 13315 13316 13317 13319 13320 13480 13481 13482 13494 13495 13497 13498 13499 13650 13651 13659 13315 13316 13317 13319 13320 13495 13496 13498 13499 13659 13495 13496 13497 13499 13500 13504 13506 13659 13315 13316 13317 13318 13319 13320 13322 13323 13495 13496 13497 13498 13500 13504 13506 13659 13318 13319 13320 13322 13323 13498 13499 13504 13506 13659 13502 13503 13511 13513 13662 13327 13328 13329 13330 13331 13501 13503 13511 13513 13662 13327 13328 13329 13330 13331 13501 13502 13511 13513 13662 13498 13499 13500 13505 13506 13658 13659 13664 13504 13506 13507 13508 13509 13658 13659 13664 13318 13319 13320 13321 13322 13323 13325 13326 13498 13499 13500 13504 13505 13507 13508 13509 13658 13659 13664 13321 13322 13323 13325 13326 13505 13506 13508 13509 13664 13505 13506 13507 13509 13510 13512 13513 13664 13321 13322 13323 13324 13325 13326 13328 13329 13505 13506 13507 13508 13510 13512 13513 13664 13324 13325 13326 13328 13329 13508 13509 13512 13513 13664 13501 13502 13503 13512 13513 13662 13663 13664 13508 13509 13510 13511 13513 13662 13663 13664 13324 13325 13326 13327 13328 13329 13330 13331 13501 13502 13503 13508 13509 13510 13511 13512 13662 13663 13664 13348 13349 13350 13517 13518 13526 13529 13669 13334 13335 13336 13516 13518 13520 13521 13672 13515 13517 13518 13520 13521 13666 13669 13672 13514 13516 13518 13526 13529 13666 13669 13672 13332 13334 13335 13336 13348 13349 13350 13514 13515 13516 13517 13520 13521 13526 13529 13666 13669 13672 13408 13410 13411 13520 13521 13579 13582 13672 13515 13516 13518 13519 13521 13579 13582 13672 13333 13334 13335 13336 13337 13338 13339 13408 13410 13411 13515 13516 13518 13519 13520 13579 13582 13672 13356 13357 13358 13524 13525 13535 13536 13675 13451 13452 13453 13524 13525 13622 13624 13675 13340 13341 13342 13343 13356 13357 13358 13451 13452 13453 13522 13523 13525 13535 13536 13622 13624 13675 13522 13523 13524 13535 13536 13622 13624 13675 13514 13517 13518 13527 13529 13668 13669 13680 13526 13528 13529 13546 13549 13668 13669 13680 13374 13375 13376 13527 13529 13546 13549 13680 13344 13345 13346 13347 13348 13349 13350 13374 13375 13376 13514 13517 13518 13526 13527 13528 13546 13549 13668 13669 13680 13363 13364 13365 13532 13533 13540 13541 13684 13355 13357 13358 13532 13533 13534 13536 13684 13351 13352 13353 13354 13355 13357 13358 13363 13364 13365 13530 13531 13533 13534 13536 13540 13541 13684 13530 13531 13532 13534 13536 13540 13541 13684 13531 13532 13533 13536 13537 13683 13684 13686 13522 13524 13525 13536 13537 13673 13675 13686 13355 13356 13357 13358 13522 13524 13525 13531 13532 13533 13534 13535 13537 13673 13675 13683 13684 13686 13534 13535 13536 13673 13675 13683 13684 13686 13367 13368 13369 13539 13541 13544 13545 13691 13538 13540 13541 13544 13545 13681 13684 13691 13530 13532 13533 13539 13541 13681 13684 13691 13359 13360 13361 13362 13363 13364 13365 13367 13368 13369 13530 13532 13533 13538 13539 13540 13544 13545 13681 13684 13691 13378 13379 13380 13543 13545 13553 13554 13696 13542 13544 13545 13553 13554 13688 13691 13696 13538 13539 13541 13543 13545 13688 13691 13696 13366 13367 13368 13369 13378 13379 13380 13538 13539 13541 13542 13543 13544 13553 13554 13688 13691 13696 13527 13528 13529 13547 13549 13679 13680 13700 13546 13548 13549 13550 13558 13679 13680 13700 13381 13382 13384 13547 13549 13550 13558 13700 13370 13371 13372 13373 13374 13375 13376 13381 13382 13384 13527 13528 13529 13546 13547 13548 13550 13558 13679 13680 13700 13547 13548 13549 13555 13558 13699 13700 13704 13405 13406 13407 13552 13554 13559 13578 13709 13551 13553 13554 13559 13578 13693 13696 13709 13542 13543 13545 13552 13554 13693 13696 13709 13377 13378 13379 13380 13405 13406 13407 13542 13543 13545 13551 13552 13553 13559 13578 13693 13696 13709 13550 13556 13558 13699 13700 13703 13704 13713 13555 13557 13558 13560 13563 13703 13704 13713 13385 13386 13388 13556 13558 13560 13563 13713 13381 13382 13383 13384 13385 13386 13388 13547 13548 13549 13550 13555 13556 13557 13560 13563 13699 13700 13703 13704 13713 13551 13552 13554 13577 13578 13706 13709 13717 13556 13557 13558 13561 13563 13712 13713 13721 13560 13562 13563 13564 13567 13712 13713 13721 13389 13390 13392 13561 13563 13564 13567 13721 13385 13386 13387 13388 13389 13390 13392 13556 13557 13558 13560 13561 13562 13564 13567 13712 13713 13721 13561 13562 13563 13565 13567 13720 13721 13726 13564 13566 13567 13568 13571 13720 13721 13726 13393 13394 13396 13565 13567 13568 13571 13726 13389 13390 13391 13392 13393 13394 13396 13561 13562 13563 13564 13565 13566 13568 13571 13720 13721 13726 13565 13566 13567 13569 13571 13725 13726 13730 13568 13570 13571 13572 13575 13725 13726 13730 13397 13398 13400 13569 13571 13572 13575 13730 13393 13394 13395 13396 13397 13398 13400 13565 13566 13567 13568 13569 13570 13572 13575 13725 13726 13730 13569 13570 13571 13573 13575 13729 13730 13733 13572 13574 13575 13576 13578 13729 13730 13733 13401 13402 13404 13573 13575 13576 13578 13733 13397 13398 13399 13400 13401 13402 13404 13569 13570 13571 13572 13573 13574 13576 13578 13729 13730 13733 13573 13574 13575 13577 13578 13714 13717 13733 13559 13576 13578 13706 13709 13714 13717 13733 13401 13402 13403 13404 13405 13406 13407 13551 13552 13554 13559 13573 13574 13575 13576 13577 13706 13709 13714 13717 13733 13519 13520 13521 13581 13582 13670 13672 13738 13412 13413 13414 13581 13582 13583 13585 13738 13579 13580 13582 13583 13585 13670 13672 13738 13408 13409 13410 13411 13412 13413 13414 13519 13520 13521 13579 13580 13581 13583 13585 13670 13672 13738 13580 13581 13582 13584 13585 13735 13738 13740 13583 13585 13586 13587 13588 13735 13738 13740 13741 13743 13412 13413 13414 13415 13416 13417 13580 13581 13582 13583 13584 13586 13587 13588 13735 13738 13740 13741 13743 13413 13414 13415 13416 13417 13584 13585 13587 13588 13740 13741 13743 13584 13585 13586 13588 13589 13590 13591 13740 13741 13743 13744 13746 13413 13414 13415 13416 13417 13418 13419 13420 13584 13585 13586 13587 13589 13590 13591 13740 13741 13743 13744 13746 13416 13417 13418 13419 13420 13587 13588 13590 13591 13743 13744 13746 13587 13588 13589 13591 13592 13593 13594 13743 13744 13746 13747 13749 13416 13417 13418 13419 13420 13421 13422 13423 13587 13588 13589 13590 13592 13593 13594 13743 13744 13746 13747 13749 13419 13420 13421 13422 13423 13590 13591 13593 13594 13746 13747 13749 13590 13591 13592 13594 13595 13596 13597 13746 13747 13749 13750 13752 13419 13420 13421 13422 13423 13424 13425 13426 13590 13591 13592 13593 13595 13596 13597 13746 13747 13749 13750 13752 13422 13423 13424 13425 13426 13593 13594 13596 13597 13749 13750 13752 13593 13594 13595 13597 13598 13599 13600 13749 13750 13752 13753 13755 13422 13423 13424 13425 13426 13427 13428 13429 13593 13594 13595 13596 13598 13599 13600 13749 13750 13752 13753 13755 13425 13426 13427 13428 13429 13596 13597 13599 13600 13752 13753 13755 13596 13597 13598 13600 13601 13602 13603 13752 13753 13755 13756 13758 13425 13426 13427 13428 13429 13430 13431 13432 13596 13597 13598 13599 13601 13602 13603 13752 13753 13755 13756 13758 13428 13429 13430 13431 13432 13599 13600 13602 13603 13755 13756 13758 13599 13600 13601 13603 13604 13605 13606 13755 13756 13758 13759 13761 13428 13429 13430 13431 13432 13433 13434 13435 13599 13600 13601 13602 13604 13605 13606 13755 13756 13758 13759 13761 13431 13432 13433 13434 13435 13602 13603 13605 13606 13758 13759 13761 13602 13603 13604 13606 13607 13608 13609 13758 13759 13761 13762 13764 13431 13432 13433 13434 13435 13436 13437 13438 13602 13603 13604 13605 13607 13608 13609 13758 13759 13761 13762 13764 13434 13435 13436 13437 13438 13605 13606 13608 13609 13761 13762 13764 13605 13606 13607 13609 13610 13611 13612 13761 13762 13764 13765 13767 13434 13435 13436 13437 13438 13439 13440 13441 13605 13606 13607 13608 13610 13611 13612 13761 13762 13764 13765 13767 13437 13438 13439 13440 13441 13608 13609 13611 13612 13764 13765 13767 13608 13609 13610 13612 13613 13614 13615 13764 13765 13767 13768 13770 13437 13438 13439 13440 13441 13442 13443 13444 13608 13609 13610 13611 13613 13614 13615 13764 13765 13767 13768 13770 13440 13441 13442 13443 13444 13611 13612 13614 13615 13767 13768 13770 13611 13612 13613 13615 13616 13618 13619 13767 13768 13770 13771 13774 13440 13441 13442 13443 13444 13445 13447 13448 13611 13612 13613 13614 13616 13618 13619 13767 13768 13770 13771 13774 13443 13444 13445 13447 13448 13614 13615 13618 13619 13770 13771 13774 13618 13619 13620 13621 13774 13775 13776 13614 13615 13616 13617 13619 13620 13621 13770 13771 13774 13775 13776 13443 13444 13445 13446 13447 13448 13449 13450 13614 13615 13616 13617 13618 13620 13621 13770 13771 13774 13775 13776 13446 13447 13448 13449 13450 13617 13618 13619 13621 13774 13775 13776 13446 13447 13448 13449 13450 13617 13618 13619 13620 13774 13775 13776 13523 13524 13525 13623 13624 13674 13675 13779 13622 13624 13625 13626 13627 13674 13675 13779 13780 13782 13451 13452 13453 13454 13455 13456 13523 13524 13525 13622 13623 13625 13626 13627 13674 13675 13779 13780 13782 13452 13453 13454 13455 13456 13623 13624 13626 13627 13779 13780 13782 13623 13624 13625 13627 13628 13629 13630 13779 13780 13782 13783 13785 13452 13453 13454 13455 13456 13457 13458 13459 13623 13624 13625 13626 13628 13629 13630 13779 13780 13782 13783 13785 13455 13456 13457 13458 13459 13626 13627 13629 13630 13782 13783 13785 13626 13627 13628 13630 13631 13632 13633 13782 13783 13785 13786 13788 13455 13456 13457 13458 13459 13460 13461 13462 13626 13627 13628 13629 13631 13632 13633 13782 13783 13785 13786 13788 13458 13459 13460 13461 13462 13629 13630 13632 13633 13785 13786 13788 13629 13630 13631 13633 13634 13635 13636 13785 13786 13788 13789 13791 13458 13459 13460 13461 13462 13463 13464 13465 13629 13630 13631 13632 13634 13635 13636 13785 13786 13788 13789 13791 13461 13462 13463 13464 13465 13632 13633 13635 13636 13788 13789 13791 13632 13633 13634 13636 13637 13638 13639 13788 13789 13791 13792 13794 13461 13462 13463 13464 13465 13466 13467 13468 13632 13633 13634 13635 13637 13638 13639 13788 13789 13791 13792 13794 13464 13465 13466 13467 13468 13635 13636 13638 13639 13791 13792 13794 13635 13636 13637 13639 13640 13641 13642 13791 13792 13794 13795 13797 13464 13465 13466 13467 13468 13469 13470 13471 13635 13636 13637 13638 13640 13641 13642 13791 13792 13794 13795 13797 13467 13468 13469 13470 13471 13638 13639 13641 13642 13794 13795 13797 13638 13639 13640 13642 13643 13644 13645 13794 13795 13797 13798 13800 13467 13468 13469 13470 13471 13472 13473 13474 13638 13639 13640 13641 13643 13644 13645 13794 13795 13797 13798 13800 13470 13471 13472 13473 13474 13641 13642 13644 13645 13797 13798 13800 13641 13642 13643 13645 13646 13647 13648 13797 13798 13800 13801 13803 13470 13471 13472 13473 13474 13475 13483 13484 13641 13642 13643 13644 13646 13647 13648 13797 13798 13800 13801 13803 13473 13474 13475 13483 13484 13644 13645 13647 13648 13800 13801 13803 13644 13645 13646 13648 13649 13653 13654 13800 13801 13803 13804 13806 13473 13474 13475 13483 13484 13485 13489 13490 13644 13645 13646 13647 13649 13653 13654 13800 13801 13803 13804 13806 13483 13484 13485 13489 13490 13647 13648 13653 13654 13803 13804 13806 13494 13495 13496 13651 13652 13656 13657 13659 13660 13809 13476 13477 13478 13479 13480 13481 13482 13486 13487 13488 13492 13493 13494 13495 13496 13650 13652 13656 13657 13659 13660 13809 13486 13487 13488 13492 13493 13650 13651 13656 13657 13659 13660 13809 13647 13648 13649 13654 13655 13656 13657 13803 13804 13806 13807 13809 13483 13484 13485 13489 13490 13491 13492 13493 13647 13648 13649 13653 13655 13656 13657 13803 13804 13806 13807 13809 13489 13490 13491 13492 13493 13653 13654 13656 13657 13806 13807 13809 13486 13487 13488 13489 13490 13491 13492 13493 13650 13651 13652 13653 13654 13655 13657 13659 13660 13806 13807 13809 13650 13651 13652 13653 13654 13655 13656 13659 13660 13806 13807 13809 13504 13505 13506 13659 13660 13664 13665 13809 13810 13813 13494 13495 13496 13497 13498 13499 13500 13504 13505 13506 13650 13651 13652 13656 13657 13658 13660 13664 13665 13809 13810 13813 13650 13651 13652 13656 13657 13658 13659 13664 13665 13809 13810 13813 13662 13663 13664 13665 13813 13814 13815 13501 13502 13503 13511 13512 13513 13661 13663 13664 13665 13813 13814 13815 13511 13512 13513 13661 13662 13664 13665 13813 13814 13815 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13658 13659 13660 13661 13662 13663 13665 13809 13810 13813 13814 13815 13658 13659 13660 13661 13662 13663 13664 13809 13810 13813 13814 13815 13516 13517 13518 13667 13669 13671 13672 13819 13666 13668 13669 13671 13672 13677 13680 13819 13526 13527 13529 13667 13669 13677 13680 13819 13514 13516 13517 13518 13526 13527 13529 13666 13667 13668 13671 13672 13677 13680 13819 13579 13581 13582 13671 13672 13734 13738 13819 13666 13667 13669 13670 13672 13734 13738 13819 13515 13516 13517 13518 13519 13520 13521 13579 13581 13582 13666 13667 13669 13670 13671 13734 13738 13819 13535 13536 13537 13675 13676 13685 13686 13822 13622 13623 13624 13675 13676 13777 13779 13822 13522 13523 13524 13525 13535 13536 13537 13622 13623 13624 13673 13674 13676 13685 13686 13777 13779 13822 13673 13674 13675 13685 13686 13777 13779 13822 13667 13668 13669 13678 13680 13818 13819 13827 13677 13679 13680 13692 13700 13818 13819 13827 13546 13547 13549 13678 13680 13692 13700 13827 13526 13527 13528 13529 13546 13547 13549 13667 13668 13669 13677 13678 13679 13692 13700 13818 13819 13827 13539 13540 13541 13682 13684 13690 13691 13831 13681 13683 13684 13686 13687 13690 13691 13831 13534 13536 13537 13682 13684 13686 13687 13831 13530 13531 13532 13533 13534 13536 13537 13539 13540 13541 13681 13682 13683 13686 13687 13690 13691 13831 13673 13675 13676 13686 13687 13820 13822 13831 13534 13535 13536 13537 13673 13675 13676 13682 13683 13684 13685 13687 13820 13822 13831 13682 13683 13684 13685 13686 13820 13822 13831 13543 13544 13545 13689 13691 13695 13696 13835 13688 13690 13691 13695 13696 13828 13831 13835 13681 13682 13684 13689 13691 13828 13831 13835 13538 13539 13540 13541 13543 13544 13545 13681 13682 13684 13688 13689 13690 13695 13696 13828 13831 13835 13678 13679 13680 13697 13700 13826 13827 13839 13552 13553 13554 13694 13696 13705 13709 13843 13693 13695 13696 13705 13709 13832 13835 13843 13688 13689 13691 13694 13696 13832 13835 13843 13542 13543 13544 13545 13552 13553 13554 13688 13689 13691 13693 13694 13695 13705 13709 13832 13835 13843 13692 13698 13700 13826 13827 13838 13839 13847 13697 13699 13700 13701 13704 13838 13839 13847 13550 13555 13558 13698 13700 13701 13704 13847 13546 13547 13548 13549 13550 13555 13558 13678 13679 13680 13692 13697 13698 13699 13701 13704 13826 13827 13838 13839 13847 13698 13699 13700 13702 13704 13846 13847 13853 13701 13703 13704 13710 13713 13846 13847 13853 13555 13556 13558 13702 13704 13710 13713 13853 13550 13555 13556 13558 13698 13699 13700 13701 13702 13703 13710 13713 13846 13847 13853 13693 13694 13696 13708 13709 13840 13843 13857 13559 13577 13578 13707 13709 13716 13717 13861 13706 13708 13709 13716 13717 13854 13857 13861 13705 13707 13709 13840 13843 13854 13857 13861 13551 13552 13553 13554 13559 13577 13578 13693 13694 13696 13705 13706 13707 13708 13716 13717 13840 13843 13854 13857 13861 13702 13703 13704 13711 13713 13852 13853 13865 13710 13712 13713 13718 13721 13852 13853 13865 13560 13561 13563 13711 13713 13718 13721 13865 13555 13556 13557 13558 13560 13561 13563 13702 13703 13704 13710 13711 13712 13718 13721 13852 13853 13865 13576 13577 13578 13715 13717 13732 13733 13869 13714 13716 13717 13732 13733 13858 13861 13869 13706 13707 13709 13715 13717 13858 13861 13869 13559 13576 13577 13578 13706 13707 13709 13714 13715 13716 13732 13733 13858 13861 13869 13711 13712 13713 13719 13721 13864 13865 13873 13718 13720 13721 13722 13726 13864 13865 13873 13564 13565 13567 13719 13721 13722 13726 13873 13560 13561 13562 13563 13564 13565 13567 13711 13712 13713 13718 13719 13720 13722 13726 13864 13865 13873 13719 13720 13721 13723 13726 13872 13873 13877 13722 13724 13726 13872 13873 13876 13877 13882 13723 13725 13726 13727 13730 13876 13877 13882 13568 13569 13571 13724 13726 13727 13730 13882 13564 13565 13566 13567 13568 13569 13571 13719 13720 13721 13722 13723 13724 13725 13727 13730 13872 13873 13876 13877 13882 13724 13725 13726 13728 13730 13881 13882 13885 13727 13729 13730 13731 13733 13881 13882 13885 13572 13573 13575 13728 13730 13731 13733 13885 13568 13569 13570 13571 13572 13573 13575 13724 13725 13726 13727 13728 13729 13731 13733 13881 13882 13885 13728 13729 13730 13732 13733 13866 13869 13885 13714 13715 13717 13731 13733 13866 13869 13885 13572 13573 13574 13575 13576 13577 13578 13714 13715 13717 13728 13729 13730 13731 13732 13866 13869 13885 13670 13671 13672 13737 13738 13816 13819 13889 13583 13584 13585 13736 13738 13739 13740 13891 13735 13737 13738 13739 13740 13886 13889 13891 13734 13736 13738 13816 13819 13886 13889 13891 13579 13580 13581 13582 13583 13584 13585 13670 13671 13672 13734 13735 13736 13737 13739 13740 13816 13819 13886 13889 13891 13735 13736 13738 13740 13741 13742 13743 13891 13892 13894 13583 13584 13585 13586 13587 13588 13735 13736 13738 13739 13741 13742 13743 13891 13892 13894 13584 13585 13586 13587 13588 13739 13740 13742 13743 13891 13892 13894 13739 13740 13741 13743 13744 13745 13746 13891 13892 13894 13895 13897 13584 13585 13586 13587 13588 13589 13590 13591 13739 13740 13741 13742 13744 13745 13746 13891 13892 13894 13895 13897 13587 13588 13589 13590 13591 13742 13743 13745 13746 13894 13895 13897 13742 13743 13744 13746 13747 13748 13749 13894 13895 13897 13898 13900 13587 13588 13589 13590 13591 13592 13593 13594 13742 13743 13744 13745 13747 13748 13749 13894 13895 13897 13898 13900 13590 13591 13592 13593 13594 13745 13746 13748 13749 13897 13898 13900 13745 13746 13747 13749 13750 13751 13752 13897 13898 13900 13901 13903 13590 13591 13592 13593 13594 13595 13596 13597 13745 13746 13747 13748 13750 13751 13752 13897 13898 13900 13901 13903 13593 13594 13595 13596 13597 13748 13749 13751 13752 13900 13901 13903 13748 13749 13750 13752 13753 13754 13755 13900 13901 13903 13904 13906 13593 13594 13595 13596 13597 13598 13599 13600 13748 13749 13750 13751 13753 13754 13755 13900 13901 13903 13904 13906 13596 13597 13598 13599 13600 13751 13752 13754 13755 13903 13904 13906 13751 13752 13753 13755 13756 13757 13758 13903 13904 13906 13907 13909 13596 13597 13598 13599 13600 13601 13602 13603 13751 13752 13753 13754 13756 13757 13758 13903 13904 13906 13907 13909 13599 13600 13601 13602 13603 13754 13755 13757 13758 13906 13907 13909 13754 13755 13756 13758 13759 13760 13761 13906 13907 13909 13910 13912 13599 13600 13601 13602 13603 13604 13605 13606 13754 13755 13756 13757 13759 13760 13761 13906 13907 13909 13910 13912 13602 13603 13604 13605 13606 13757 13758 13760 13761 13909 13910 13912 13757 13758 13759 13761 13762 13763 13764 13909 13910 13912 13913 13915 13602 13603 13604 13605 13606 13607 13608 13609 13757 13758 13759 13760 13762 13763 13764 13909 13910 13912 13913 13915 13605 13606 13607 13608 13609 13760 13761 13763 13764 13912 13913 13915 13760 13761 13762 13764 13765 13766 13767 13912 13913 13915 13916 13918 13605 13606 13607 13608 13609 13610 13611 13612 13760 13761 13762 13763 13765 13766 13767 13912 13913 13915 13916 13918 13608 13609 13610 13611 13612 13763 13764 13766 13767 13915 13916 13918 13763 13764 13765 13767 13768 13769 13770 13915 13916 13918 13919 13921 13608 13609 13610 13611 13612 13613 13614 13615 13763 13764 13765 13766 13768 13769 13770 13915 13916 13918 13919 13921 13611 13612 13613 13614 13615 13766 13767 13769 13770 13918 13919 13921 13766 13767 13768 13770 13771 13773 13774 13918 13919 13921 13922 13925 13611 13612 13613 13614 13615 13616 13618 13619 13766 13767 13768 13769 13771 13773 13774 13918 13919 13921 13922 13925 13614 13615 13616 13618 13619 13769 13770 13773 13774 13921 13922 13925 13773 13774 13775 13776 13925 13926 13927 13769 13770 13771 13772 13774 13775 13776 13921 13922 13925 13926 13927 13614 13615 13616 13617 13618 13619 13620 13621 13769 13770 13771 13772 13773 13775 13776 13921 13922 13925 13926 13927 13617 13618 13619 13620 13621 13772 13773 13774 13776 13925 13926 13927 13617 13618 13619 13620 13621 13772 13773 13774 13775 13925 13926 13927 13674 13675 13676 13778 13779 13821 13822 13930 13777 13779 13780 13781 13782 13821 13822 13930 13931 13933 13622 13623 13624 13625 13626 13627 13674 13675 13676 13777 13778 13780 13781 13782 13821 13822 13930 13931 13933 13623 13624 13625 13626 13627 13778 13779 13781 13782 13930 13931 13933 13778 13779 13780 13782 13783 13784 13785 13930 13931 13933 13934 13936 13623 13624 13625 13626 13627 13628 13629 13630 13778 13779 13780 13781 13783 13784 13785 13930 13931 13933 13934 13936 13626 13627 13628 13629 13630 13781 13782 13784 13785 13933 13934 13936 13781 13782 13783 13785 13786 13787 13788 13933 13934 13936 13937 13939 13626 13627 13628 13629 13630 13631 13632 13633 13781 13782 13783 13784 13786 13787 13788 13933 13934 13936 13937 13939 13629 13630 13631 13632 13633 13784 13785 13787 13788 13936 13937 13939 13784 13785 13786 13788 13789 13790 13791 13936 13937 13939 13940 13942 13629 13630 13631 13632 13633 13634 13635 13636 13784 13785 13786 13787 13789 13790 13791 13936 13937 13939 13940 13942 13632 13633 13634 13635 13636 13787 13788 13790 13791 13939 13940 13942 13787 13788 13789 13791 13792 13793 13794 13939 13940 13942 13943 13945 13632 13633 13634 13635 13636 13637 13638 13639 13787 13788 13789 13790 13792 13793 13794 13939 13940 13942 13943 13945 13635 13636 13637 13638 13639 13790 13791 13793 13794 13942 13943 13945 13790 13791 13792 13794 13795 13796 13797 13942 13943 13945 13946 13948 13635 13636 13637 13638 13639 13640 13641 13642 13790 13791 13792 13793 13795 13796 13797 13942 13943 13945 13946 13948 13638 13639 13640 13641 13642 13793 13794 13796 13797 13945 13946 13948 13793 13794 13795 13797 13798 13799 13800 13945 13946 13948 13949 13951 13638 13639 13640 13641 13642 13643 13644 13645 13793 13794 13795 13796 13798 13799 13800 13945 13946 13948 13949 13951 13641 13642 13643 13644 13645 13796 13797 13799 13800 13948 13949 13951 13796 13797 13798 13800 13801 13802 13803 13948 13949 13951 13952 13954 13641 13642 13643 13644 13645 13646 13647 13648 13796 13797 13798 13799 13801 13802 13803 13948 13949 13951 13952 13954 13644 13645 13646 13647 13648 13799 13800 13802 13803 13951 13952 13954 13799 13800 13801 13803 13804 13805 13806 13951 13952 13954 13955 13957 13644 13645 13646 13647 13648 13649 13653 13654 13799 13800 13801 13802 13804 13805 13806 13951 13952 13954 13955 13957 13647 13648 13649 13653 13654 13802 13803 13805 13806 13954 13955 13957 13802 13803 13804 13806 13807 13808 13809 13954 13955 13957 13958 13960 13647 13648 13649 13653 13654 13655 13656 13657 13802 13803 13804 13805 13807 13808 13809 13954 13955 13957 13958 13960 13653 13654 13655 13656 13657 13805 13806 13808 13809 13957 13958 13960 13805 13806 13807 13809 13810 13812 13813 13957 13958 13960 13961 13964 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13664 13665 13805 13806 13807 13808 13810 13812 13813 13957 13958 13960 13961 13964 13658 13659 13660 13664 13665 13808 13809 13812 13813 13960 13961 13964 13812 13813 13814 13815 13964 13965 13966 13808 13809 13810 13811 13813 13814 13815 13960 13961 13964 13965 13966 13658 13659 13660 13661 13662 13663 13664 13665 13808 13809 13810 13811 13812 13814 13815 13960 13961 13964 13965 13966 13661 13662 13663 13664 13665 13811 13812 13813 13815 13964 13965 13966 13661 13662 13663 13664 13665 13811 13812 13813 13814 13964 13965 13966 13734 13737 13738 13817 13819 13888 13889 13970 13816 13818 13819 13824 13827 13888 13889 13970 13677 13678 13680 13817 13819 13824 13827 13970 13666 13667 13668 13669 13670 13671 13672 13677 13678 13680 13734 13737 13738 13816 13817 13818 13824 13827 13888 13889 13970 13685 13686 13687 13822 13823 13830 13831 13974 13777 13778 13779 13822 13823 13928 13930 13974 13673 13674 13675 13676 13685 13686 13687 13777 13778 13779 13820 13821 13823 13830 13831 13928 13930 13974 13820 13821 13822 13830 13831 13928 13930 13974 13817 13818 13819 13825 13827 13969 13970 13978 13824 13826 13827 13836 13839 13969 13970 13978 13692 13697 13700 13825 13827 13836 13839 13978 13677 13678 13679 13680 13692 13697 13700 13817 13818 13819 13824 13825 13826 13836 13839 13969 13970 13978 13689 13690 13691 13829 13831 13834 13835 13982 13828 13830 13831 13834 13835 13971 13974 13982 13820 13822 13823 13829 13831 13971 13974 13982 13681 13682 13683 13684 13685 13686 13687 13689 13690 13691 13820 13822 13823 13828 13829 13830 13834 13835 13971 13974 13982 13694 13695 13696 13833 13835 13842 13843 13987 13832 13834 13835 13842 13843 13979 13982 13987 13828 13829 13831 13833 13835 13979 13982 13987 13688 13689 13690 13691 13694 13695 13696 13828 13829 13831 13832 13833 13834 13842 13843 13979 13982 13987 13825 13826 13827 13837 13839 13977 13978 13991 13836 13838 13839 13844 13847 13977 13978 13991 13697 13698 13700 13837 13839 13844 13847 13991 13692 13697 13698 13700 13825 13826 13827 13836 13837 13838 13844 13847 13977 13978 13991 13705 13708 13709 13841 13843 13849 13857 13995 13840 13842 13843 13849 13857 13984 13987 13995 13832 13833 13835 13841 13843 13984 13987 13995 13693 13694 13695 13696 13705 13708 13709 13832 13833 13835 13840 13841 13842 13849 13857 13984 13987 13995 13837 13838 13839 13845 13847 13990 13991 13999 13844 13846 13847 13848 13853 13990 13991 13999 13701 13702 13704 13845 13847 13848 13853 13999 13697 13698 13699 13700 13701 13702 13704 13837 13838 13839 13844 13845 13846 13848 13853 13990 13991 13999 13845 13846 13847 13850 13853 13998 13999 14004 13840 13841 13843 13856 13857 13992 13995 14008 13848 13851 13853 13998 13999 14003 14004 14012 13850 13852 13853 13862 13865 14003 14004 14012 13710 13711 13713 13851 13853 13862 13865 14012 13701 13702 13703 13704 13710 13711 13713 13845 13846 13847 13848 13850 13851 13852 13862 13865 13998 13999 14003 14004 14012 13707 13708 13709 13855 13857 13860 13861 14016 13854 13856 13857 13860 13861 14005 14008 14016 13849 13855 13857 13992 13995 14005 14008 14016 13705 13707 13708 13709 13840 13841 13843 13849 13854 13855 13856 13860 13861 13992 13995 14005 14008 14016 13715 13716 13717 13859 13861 13868 13869 14021 13858 13860 13861 13868 13869 14013 14016 14021 13854 13855 13857 13859 13861 14013 14016 14021 13706 13707 13708 13709 13715 13716 13717 13854 13855 13857 13858 13859 13860 13868 13869 14013 14016 14021 13851 13852 13853 13863 13865 14011 14012 14025 13862 13864 13865 13870 13873 14011 14012 14025 13718 13719 13721 13863 13865 13870 13873 14025 13710 13711 13712 13713 13718 13719 13721 13851 13852 13853 13862 13863 13864 13870 13873 14011 14012 14025 13731 13732 13733 13867 13869 13884 13885 14029 13866 13868 13869 13884 13885 14018 14021 14029 13858 13859 13861 13867 13869 14018 14021 14029 13714 13715 13716 13717 13731 13732 13733 13858 13859 13861 13866 13867 13868 13884 13885 14018 14021 14029 13863 13864 13865 13871 13873 14024 14025 14033 13870 13872 13873 13874 13877 14024 14025 14033 13722 13723 13726 13871 13873 13874 13877 14033 13718 13719 13720 13721 13722 13723 13726 13863 13864 13865 13870 13871 13872 13874 13877 14024 14025 14033 13871 13872 13873 13875 13877 14032 14033 14038 13874 13876 13877 13878 13882 14032 14033 14038 13723 13724 13726 13875 13877 13878 13882 14038 13722 13723 13724 13726 13871 13872 13873 13874 13875 13876 13878 13882 14032 14033 14038 13875 13876 13877 13879 13882 14037 14038 14042 13878 13880 13882 14037 14038 14041 14042 14045 13879 13881 13882 13883 13885 14041 14042 14045 13727 13728 13730 13880 13882 13883 13885 14045 13723 13724 13725 13726 13727 13728 13730 13875 13876 13877 13878 13879 13880 13881 13883 13885 14037 14038 14041 14042 14045 13880 13881 13882 13884 13885 14026 14029 14045 13866 13867 13869 13883 13885 14026 14029 14045 13727 13728 13729 13730 13731 13732 13733 13866 13867 13869 13880 13881 13882 13883 13884 14026 14029 14045 13736 13737 13738 13887 13889 13890 13891 14047 13886 13888 13889 13890 13891 13967 13970 14047 13816 13817 13819 13887 13889 13967 13970 14047 13734 13736 13737 13738 13816 13817 13819 13886 13887 13888 13890 13891 13967 13970 14047 13886 13887 13889 13891 13892 13893 13894 14047 14048 14050 13735 13736 13737 13738 13739 13740 13741 13742 13743 13886 13887 13889 13890 13892 13893 13894 14047 14048 14050 13739 13740 13741 13742 13743 13890 13891 13893 13894 14047 14048 14050 13890 13891 13892 13894 13895 13896 13897 14047 14048 14050 14051 14053 13739 13740 13741 13742 13743 13744 13745 13746 13890 13891 13892 13893 13895 13896 13897 14047 14048 14050 14051 14053 13742 13743 13744 13745 13746 13893 13894 13896 13897 14050 14051 14053 13893 13894 13895 13897 13898 13899 13900 14050 14051 14053 14054 14056 13742 13743 13744 13745 13746 13747 13748 13749 13893 13894 13895 13896 13898 13899 13900 14050 14051 14053 14054 14056 13745 13746 13747 13748 13749 13896 13897 13899 13900 14053 14054 14056 13896 13897 13898 13900 13901 13902 13903 14053 14054 14056 14057 14059 13745 13746 13747 13748 13749 13750 13751 13752 13896 13897 13898 13899 13901 13902 13903 14053 14054 14056 14057 14059 13748 13749 13750 13751 13752 13899 13900 13902 13903 14056 14057 14059 13899 13900 13901 13903 13904 13905 13906 14056 14057 14059 14060 14062 13748 13749 13750 13751 13752 13753 13754 13755 13899 13900 13901 13902 13904 13905 13906 14056 14057 14059 14060 14062 13751 13752 13753 13754 13755 13902 13903 13905 13906 14059 14060 14062 13902 13903 13904 13906 13907 13908 13909 14059 14060 14062 14063 14065 13751 13752 13753 13754 13755 13756 13757 13758 13902 13903 13904 13905 13907 13908 13909 14059 14060 14062 14063 14065 13754 13755 13756 13757 13758 13905 13906 13908 13909 14062 14063 14065 13905 13906 13907 13909 13910 13911 13912 14062 14063 14065 14066 14068 13754 13755 13756 13757 13758 13759 13760 13761 13905 13906 13907 13908 13910 13911 13912 14062 14063 14065 14066 14068 13757 13758 13759 13760 13761 13908 13909 13911 13912 14065 14066 14068 13908 13909 13910 13912 13913 13914 13915 14065 14066 14068 14069 14071 13757 13758 13759 13760 13761 13762 13763 13764 13908 13909 13910 13911 13913 13914 13915 14065 14066 14068 14069 14071 13760 13761 13762 13763 13764 13911 13912 13914 13915 14068 14069 14071 13911 13912 13913 13915 13916 13917 13918 14068 14069 14071 14072 14074 13760 13761 13762 13763 13764 13765 13766 13767 13911 13912 13913 13914 13916 13917 13918 14068 14069 14071 14072 14074 13763 13764 13765 13766 13767 13914 13915 13917 13918 14071 14072 14074 13914 13915 13916 13918 13919 13920 13921 14071 14072 14074 14075 14077 13763 13764 13765 13766 13767 13768 13769 13770 13914 13915 13916 13917 13919 13920 13921 14071 14072 14074 14075 14077 13766 13767 13768 13769 13770 13917 13918 13920 13921 14074 14075 14077 13917 13918 13919 13921 13922 13924 13925 14074 14075 14077 14078 14081 13766 13767 13768 13769 13770 13771 13773 13774 13917 13918 13919 13920 13922 13924 13925 14074 14075 14077 14078 14081 13769 13770 13771 13773 13774 13920 13921 13924 13925 14077 14078 14081 13924 13925 13926 13927 14081 14082 14083 13920 13921 13922 13923 13925 13926 13927 14077 14078 14081 14082 14083 13769 13770 13771 13772 13773 13774 13775 13776 13920 13921 13922 13923 13924 13926 13927 14077 14078 14081 14082 14083 13772 13773 13774 13775 13776 13923 13924 13925 13927 14081 14082 14083 13772 13773 13774 13775 13776 13923 13924 13925 13926 14081 14082 14083 13821 13822 13823 13929 13930 13973 13974 14085 13928 13930 13931 13932 13933 13973 13974 14085 14086 14088 13777 13778 13779 13780 13781 13782 13821 13822 13823 13928 13929 13931 13932 13933 13973 13974 14085 14086 14088 13778 13779 13780 13781 13782 13929 13930 13932 13933 14085 14086 14088 13929 13930 13931 13933 13934 13935 13936 14085 14086 14088 14089 14091 13778 13779 13780 13781 13782 13783 13784 13785 13929 13930 13931 13932 13934 13935 13936 14085 14086 14088 14089 14091 13781 13782 13783 13784 13785 13932 13933 13935 13936 14088 14089 14091 13932 13933 13934 13936 13937 13938 13939 14088 14089 14091 14092 14094 13781 13782 13783 13784 13785 13786 13787 13788 13932 13933 13934 13935 13937 13938 13939 14088 14089 14091 14092 14094 13784 13785 13786 13787 13788 13935 13936 13938 13939 14091 14092 14094 13935 13936 13937 13939 13940 13941 13942 14091 14092 14094 14095 14097 13784 13785 13786 13787 13788 13789 13790 13791 13935 13936 13937 13938 13940 13941 13942 14091 14092 14094 14095 14097 13787 13788 13789 13790 13791 13938 13939 13941 13942 14094 14095 14097 13938 13939 13940 13942 13943 13944 13945 14094 14095 14097 14098 14100 13787 13788 13789 13790 13791 13792 13793 13794 13938 13939 13940 13941 13943 13944 13945 14094 14095 14097 14098 14100 13790 13791 13792 13793 13794 13941 13942 13944 13945 14097 14098 14100 13941 13942 13943 13945 13946 13947 13948 14097 14098 14100 14101 14103 13790 13791 13792 13793 13794 13795 13796 13797 13941 13942 13943 13944 13946 13947 13948 14097 14098 14100 14101 14103 13793 13794 13795 13796 13797 13944 13945 13947 13948 14100 14101 14103 13944 13945 13946 13948 13949 13950 13951 14100 14101 14103 14104 14106 13793 13794 13795 13796 13797 13798 13799 13800 13944 13945 13946 13947 13949 13950 13951 14100 14101 14103 14104 14106 13796 13797 13798 13799 13800 13947 13948 13950 13951 14103 14104 14106 13947 13948 13949 13951 13952 13953 13954 14103 14104 14106 14107 14109 13796 13797 13798 13799 13800 13801 13802 13803 13947 13948 13949 13950 13952 13953 13954 14103 14104 14106 14107 14109 13799 13800 13801 13802 13803 13950 13951 13953 13954 14106 14107 14109 13950 13951 13952 13954 13955 13956 13957 14106 14107 14109 14110 14112 13799 13800 13801 13802 13803 13804 13805 13806 13950 13951 13952 13953 13955 13956 13957 14106 14107 14109 14110 14112 13802 13803 13804 13805 13806 13953 13954 13956 13957 14109 14110 14112 13953 13954 13955 13957 13958 13959 13960 14109 14110 14112 14113 14115 13802 13803 13804 13805 13806 13807 13808 13809 13953 13954 13955 13956 13958 13959 13960 14109 14110 14112 14113 14115 13805 13806 13807 13808 13809 13956 13957 13959 13960 14112 14113 14115 13956 13957 13958 13960 13961 13963 13964 14112 14113 14115 14116 14119 13805 13806 13807 13808 13809 13810 13812 13813 13956 13957 13958 13959 13961 13963 13964 14112 14113 14115 14116 14119 13808 13809 13810 13812 13813 13959 13960 13963 13964 14115 14116 14119 13963 13964 13965 13966 14119 14120 14121 13959 13960 13961 13962 13964 13965 13966 14115 14116 14119 14120 14121 13808 13809 13810 13811 13812 13813 13814 13815 13959 13960 13961 13962 13963 13965 13966 14115 14116 14119 14120 14121 13811 13812 13813 13814 13815 13962 13963 13964 13966 14119 14120 14121 13811 13812 13813 13814 13815 13962 13963 13964 13965 14119 14120 14121 13887 13888 13889 13968 13970 14046 14047 14123 13967 13969 13970 13975 13978 14046 14047 14123 13824 13825 13827 13968 13970 13975 13978 14123 13816 13817 13818 13819 13824 13825 13827 13887 13888 13889 13967 13968 13969 13975 13978 14046 14047 14123 13829 13830 13831 13972 13974 13981 13982 14126 13971 13973 13974 13981 13982 14084 14085 14126 13928 13929 13930 13972 13974 14084 14085 14126 13820 13821 13822 13823 13829 13830 13831 13928 13929 13930 13971 13972 13973 13981 13982 14084 14085 14126 13968 13969 13970 13976 13978 14122 14123 14129 13975 13977 13978 13983 13991 14122 14123 14129 13836 13837 13839 13976 13978 13983 13991 14129 13824 13825 13826 13827 13836 13837 13839 13968 13969 13970 13975 13976 13977 13983 13991 14122 14123 14129 13833 13834 13835 13980 13982 13986 13987 14132 13979 13981 13982 13986 13987 14125 14126 14132 13971 13972 13974 13980 13982 14125 14126 14132 13828 13829 13830 13831 13833 13834 13835 13971 13972 13974 13979 13980 13981 13986 13987 14125 14126 14132 13976 13977 13978 13988 13991 14128 14129 14135 13841 13842 13843 13985 13987 13994 13995 14138 13984 13986 13987 13994 13995 14131 14132 14138 13979 13980 13982 13985 13987 14131 14132 14138 13832 13833 13834 13835 13841 13842 13843 13979 13980 13982 13984 13985 13986 13994 13995 14131 14132 14138 13983 13989 13991 14128 14129 14134 14135 14141 13988 13990 13991 13996 13999 14134 14135 14141 13844 13845 13847 13989 13991 13996 13999 14141 13836 13837 13838 13839 13844 13845 13847 13976 13977 13978 13983 13988 13989 13990 13996 13999 14128 14129 14134 14135 14141 13849 13856 13857 13993 13995 14000 14008 14144 13992 13994 13995 14000 14008 14137 14138 14144 13984 13985 13987 13993 13995 14137 14138 14144 13840 13841 13842 13843 13849 13856 13857 13984 13985 13987 13992 13993 13994 14000 14008 14137 14138 14144 13989 13990 13991 13997 13999 14140 14141 14147 13996 13998 13999 14001 14004 14140 14141 14147 13848 13850 13853 13997 13999 14001 14004 14147 13844 13845 13846 13847 13848 13850 13853 13989 13990 13991 13996 13997 13998 14001 14004 14140 14141 14147 13992 13993 13995 14007 14008 14143 14144 14150 13997 13998 13999 14002 14004 14146 14147 14153 14001 14003 14004 14009 14012 14146 14147 14153 13850 13851 13853 14002 14004 14009 14012 14153 13848 13850 13851 13853 13997 13998 13999 14001 14002 14003 14009 14012 14146 14147 14153 13855 13856 13857 14006 14008 14015 14016 14156 14005 14007 14008 14015 14016 14149 14150 14156 14000 14006 14008 14143 14144 14149 14150 14156 13849 13855 13856 13857 13992 13993 13995 14000 14005 14006 14007 14015 14016 14143 14144 14149 14150 14156 14002 14003 14004 14010 14012 14152 14153 14159 14009 14011 14012 14017 14025 14152 14153 14159 13862 13863 13865 14010 14012 14017 14025 14159 13850 13851 13852 13853 13862 13863 13865 14002 14003 14004 14009 14010 14011 14017 14025 14152 14153 14159 13859 13860 13861 14014 14016 14020 14021 14162 14013 14015 14016 14020 14021 14155 14156 14162 14005 14006 14008 14014 14016 14155 14156 14162 13854 13855 13856 13857 13859 13860 13861 14005 14006 14008 14013 14014 14015 14020 14021 14155 14156 14162 14010 14011 14012 14022 14025 14158 14159 14165 13867 13868 13869 14019 14021 14028 14029 14168 14018 14020 14021 14028 14029 14161 14162 14168 14013 14014 14016 14019 14021 14161 14162 14168 13858 13859 13860 13861 13867 13868 13869 14013 14014 14016 14018 14019 14020 14028 14029 14161 14162 14168 14017 14023 14025 14158 14159 14164 14165 14171 14022 14024 14025 14030 14033 14164 14165 14171 13870 13871 13873 14023 14025 14030 14033 14171 13862 13863 13864 13865 13870 13871 13873 14010 14011 14012 14017 14022 14023 14024 14030 14033 14158 14159 14164 14165 14171 13883 13884 13885 14027 14029 14034 14045 14174 14026 14028 14029 14034 14045 14167 14168 14174 14018 14019 14021 14027 14029 14167 14168 14174 13866 13867 13868 13869 13883 13884 13885 14018 14019 14021 14026 14027 14028 14034 14045 14167 14168 14174 14023 14024 14025 14031 14033 14171 14172 14177 14030 14032 14033 14035 14038 14171 14172 14177 13874 13875 13877 14031 14033 14035 14038 14177 13870 13871 13872 13873 13874 13875 13877 14023 14024 14025 14030 14031 14032 14035 14038 14171 14172 14177 14026 14027 14029 14044 14045 14173 14174 14180 14031 14032 14033 14036 14038 14177 14178 14183 14035 14037 14038 14039 14042 14177 14178 14183 13878 13879 13882 14036 14038 14039 14042 14183 13874 13875 13876 13877 13878 13879 13882 14031 14032 14033 14035 14036 14037 14039 14042 14177 14178 14183 14036 14037 14038 14040 14042 14183 14184 14185 14039 14041 14042 14043 14045 14183 14184 14185 13879 13880 13882 14040 14042 14043 14045 14185 13878 13879 13880 13882 14036 14037 14038 14039 14040 14041 14043 14045 14183 14184 14185 14040 14041 14042 14044 14045 14179 14180 14185 14034 14043 14045 14173 14174 14179 14180 14185 13879 13880 13881 13882 13883 13884 13885 14026 14027 14029 14034 14040 14041 14042 14043 14044 14173 14174 14179 14180 14185 13967 13968 13970 14047 14048 14049 14050 14123 14124 14188 13886 13887 13888 13889 13890 13891 13892 13893 13894 13967 13968 13970 14046 14048 14049 14050 14123 14124 14188 13890 13891 13892 13893 13894 14046 14047 14049 14050 14123 14124 14188 14046 14047 14048 14050 14051 14052 14053 14123 14124 14188 14189 14191 13890 13891 13892 13893 13894 13895 13896 13897 14046 14047 14048 14049 14051 14052 14053 14123 14124 14188 14189 14191 13893 13894 13895 13896 13897 14049 14050 14052 14053 14188 14189 14191 14049 14050 14051 14053 14054 14055 14056 14188 14189 14191 14192 14194 13893 13894 13895 13896 13897 13898 13899 13900 14049 14050 14051 14052 14054 14055 14056 14188 14189 14191 14192 14194 13896 13897 13898 13899 13900 14052 14053 14055 14056 14191 14192 14194 14052 14053 14054 14056 14057 14058 14059 14191 14192 14194 14195 14197 13896 13897 13898 13899 13900 13901 13902 13903 14052 14053 14054 14055 14057 14058 14059 14191 14192 14194 14195 14197 13899 13900 13901 13902 13903 14055 14056 14058 14059 14194 14195 14197 14055 14056 14057 14059 14060 14061 14062 14194 14195 14197 14198 14200 13899 13900 13901 13902 13903 13904 13905 13906 14055 14056 14057 14058 14060 14061 14062 14194 14195 14197 14198 14200 13902 13903 13904 13905 13906 14058 14059 14061 14062 14197 14198 14200 14058 14059 14060 14062 14063 14064 14065 14197 14198 14200 14201 14203 13902 13903 13904 13905 13906 13907 13908 13909 14058 14059 14060 14061 14063 14064 14065 14197 14198 14200 14201 14203 13905 13906 13907 13908 13909 14061 14062 14064 14065 14200 14201 14203 14061 14062 14063 14065 14066 14067 14068 14200 14201 14203 14204 14206 13905 13906 13907 13908 13909 13910 13911 13912 14061 14062 14063 14064 14066 14067 14068 14200 14201 14203 14204 14206 13908 13909 13910 13911 13912 14064 14065 14067 14068 14203 14204 14206 14064 14065 14066 14068 14069 14070 14071 14203 14204 14206 14207 14209 13908 13909 13910 13911 13912 13913 13914 13915 14064 14065 14066 14067 14069 14070 14071 14203 14204 14206 14207 14209 13911 13912 13913 13914 13915 14067 14068 14070 14071 14206 14207 14209 14067 14068 14069 14071 14072 14073 14074 14206 14207 14209 14210 14212 13911 13912 13913 13914 13915 13916 13917 13918 14067 14068 14069 14070 14072 14073 14074 14206 14207 14209 14210 14212 13914 13915 13916 13917 13918 14070 14071 14073 14074 14209 14210 14212 14070 14071 14072 14074 14075 14076 14077 14209 14210 14212 14213 14215 13914 13915 13916 13917 13918 13919 13920 13921 14070 14071 14072 14073 14075 14076 14077 14209 14210 14212 14213 14215 13917 13918 13919 13920 13921 14073 14074 14076 14077 14212 14213 14215 14073 14074 14075 14077 14078 14080 14081 14212 14213 14215 14216 14219 13917 13918 13919 13920 13921 13922 13924 13925 14073 14074 14075 14076 14078 14080 14081 14212 14213 14215 14216 14219 13920 13921 13922 13924 13925 14076 14077 14080 14081 14215 14216 14219 14080 14081 14082 14083 14219 14220 14221 14076 14077 14078 14079 14081 14082 14083 14215 14216 14219 14220 14221 13920 13921 13922 13923 13924 13925 13926 13927 14076 14077 14078 14079 14080 14082 14083 14215 14216 14219 14220 14221 13923 13924 13925 13926 13927 14079 14080 14081 14083 14219 14220 14221 13923 13924 13925 13926 13927 14079 14080 14081 14082 14219 14220 14221 13972 13973 13974 14085 14086 14087 14088 14126 14127 14223 13928 13929 13930 13931 13932 13933 13972 13973 13974 14084 14086 14087 14088 14126 14127 14223 13929 13930 13931 13932 13933 14084 14085 14087 14088 14126 14127 14223 14084 14085 14086 14088 14089 14090 14091 14126 14127 14223 14224 14226 13929 13930 13931 13932 13933 13934 13935 13936 14084 14085 14086 14087 14089 14090 14091 14126 14127 14223 14224 14226 13932 13933 13934 13935 13936 14087 14088 14090 14091 14223 14224 14226 14087 14088 14089 14091 14092 14093 14094 14223 14224 14226 14227 14229 13932 13933 13934 13935 13936 13937 13938 13939 14087 14088 14089 14090 14092 14093 14094 14223 14224 14226 14227 14229 13935 13936 13937 13938 13939 14090 14091 14093 14094 14226 14227 14229 14090 14091 14092 14094 14095 14096 14097 14226 14227 14229 14230 14232 13935 13936 13937 13938 13939 13940 13941 13942 14090 14091 14092 14093 14095 14096 14097 14226 14227 14229 14230 14232 13938 13939 13940 13941 13942 14093 14094 14096 14097 14229 14230 14232 14093 14094 14095 14097 14098 14099 14100 14229 14230 14232 14233 14235 13938 13939 13940 13941 13942 13943 13944 13945 14093 14094 14095 14096 14098 14099 14100 14229 14230 14232 14233 14235 13941 13942 13943 13944 13945 14096 14097 14099 14100 14232 14233 14235 14096 14097 14098 14100 14101 14102 14103 14232 14233 14235 14236 14238 13941 13942 13943 13944 13945 13946 13947 13948 14096 14097 14098 14099 14101 14102 14103 14232 14233 14235 14236 14238 13944 13945 13946 13947 13948 14099 14100 14102 14103 14235 14236 14238 14099 14100 14101 14103 14104 14105 14106 14235 14236 14238 14239 14241 13944 13945 13946 13947 13948 13949 13950 13951 14099 14100 14101 14102 14104 14105 14106 14235 14236 14238 14239 14241 13947 13948 13949 13950 13951 14102 14103 14105 14106 14238 14239 14241 14102 14103 14104 14106 14107 14108 14109 14238 14239 14241 14242 14244 13947 13948 13949 13950 13951 13952 13953 13954 14102 14103 14104 14105 14107 14108 14109 14238 14239 14241 14242 14244 13950 13951 13952 13953 13954 14105 14106 14108 14109 14241 14242 14244 14105 14106 14107 14109 14110 14111 14112 14241 14242 14244 14245 14247 13950 13951 13952 13953 13954 13955 13956 13957 14105 14106 14107 14108 14110 14111 14112 14241 14242 14244 14245 14247 13953 13954 13955 13956 13957 14108 14109 14111 14112 14244 14245 14247 14108 14109 14110 14112 14113 14114 14115 14244 14245 14247 14248 14250 13953 13954 13955 13956 13957 13958 13959 13960 14108 14109 14110 14111 14113 14114 14115 14244 14245 14247 14248 14250 13956 13957 13958 13959 13960 14111 14112 14114 14115 14247 14248 14250 14111 14112 14113 14115 14116 14118 14119 14247 14248 14250 14251 14254 13956 13957 13958 13959 13960 13961 13963 13964 14111 14112 14113 14114 14116 14118 14119 14247 14248 14250 14251 14254 13959 13960 13961 13963 13964 14114 14115 14118 14119 14250 14251 14254 14118 14119 14120 14121 14254 14255 14256 14114 14115 14116 14117 14119 14120 14121 14250 14251 14254 14255 14256 13959 13960 13961 13962 13963 13964 13965 13966 14114 14115 14116 14117 14118 14120 14121 14250 14251 14254 14255 14256 13962 13963 13964 13965 13966 14117 14118 14119 14121 14254 14255 14256 13962 13963 13964 13965 13966 14117 14118 14119 14120 14254 14255 14256 13975 13976 13978 14123 14124 14129 14130 14187 14188 14258 13967 13968 13969 13970 13975 13976 13978 14046 14047 14048 14049 14050 14122 14124 14129 14130 14187 14188 14258 14046 14047 14048 14049 14050 14122 14123 14129 14130 14187 14188 14258 13980 13981 13982 14126 14127 14132 14133 14222 14223 14261 13971 13972 13973 13974 13980 13981 13982 14084 14085 14086 14087 14088 14125 14127 14132 14133 14222 14223 14261 14084 14085 14086 14087 14088 14125 14126 14132 14133 14222 14223 14261 13983 13988 13991 14129 14130 14135 14136 14257 14258 14264 13975 13976 13977 13978 13983 13988 13991 14122 14123 14124 14128 14130 14135 14136 14187 14188 14257 14258 14264 14122 14123 14124 14128 14129 14135 14136 14187 14188 14257 14258 14264 13985 13986 13987 14132 14133 14138 14139 14260 14261 14267 13979 13980 13981 13982 13985 13986 13987 14125 14126 14127 14131 14133 14138 14139 14222 14223 14260 14261 14267 14125 14126 14127 14131 14132 14138 14139 14222 14223 14260 14261 14267 13988 13989 13991 14135 14136 14141 14142 14263 14264 14270 13983 13988 13989 13991 14128 14129 14130 14134 14136 14141 14142 14257 14258 14263 14264 14270 14128 14129 14130 14134 14135 14141 14142 14257 14258 14263 14264 14270 13993 13994 13995 14138 14139 14144 14145 14266 14267 14273 13984 13985 13986 13987 13993 13994 13995 14131 14132 14133 14137 14139 14144 14145 14260 14261 14266 14267 14273 14131 14132 14133 14137 14138 14144 14145 14260 14261 14266 14267 14273 13996 13997 13999 14141 14142 14147 14148 14269 14270 14276 13988 13989 13990 13991 13996 13997 13999 14134 14135 14136 14140 14142 14147 14148 14263 14264 14269 14270 14276 14134 14135 14136 14140 14141 14147 14148 14263 14264 14269 14270 14276 14000 14007 14008 14144 14145 14150 14151 14272 14273 14279 13992 13993 13994 13995 14000 14007 14008 14137 14138 14139 14143 14145 14150 14151 14266 14267 14272 14273 14279 14137 14138 14139 14143 14144 14150 14151 14266 14267 14272 14273 14279 14001 14002 14004 14147 14148 14153 14154 14275 14276 14282 13996 13997 13998 13999 14001 14002 14004 14140 14141 14142 14146 14148 14153 14154 14269 14270 14275 14276 14282 14140 14141 14142 14146 14147 14153 14154 14269 14270 14275 14276 14282 14006 14007 14008 14150 14151 14156 14157 14278 14279 14285 14000 14006 14007 14008 14143 14144 14145 14149 14151 14156 14157 14272 14273 14278 14279 14285 14143 14144 14145 14149 14150 14156 14157 14272 14273 14278 14279 14285 14009 14010 14012 14153 14154 14159 14160 14281 14282 14288 14001 14002 14003 14004 14009 14010 14012 14146 14147 14148 14152 14154 14159 14160 14275 14276 14281 14282 14288 14146 14147 14148 14152 14153 14159 14160 14275 14276 14281 14282 14288 14014 14015 14016 14156 14157 14162 14163 14284 14285 14291 14005 14006 14007 14008 14014 14015 14016 14149 14150 14151 14155 14157 14162 14163 14278 14279 14284 14285 14291 14149 14150 14151 14155 14156 14162 14163 14278 14279 14284 14285 14291 14017 14022 14025 14159 14160 14165 14166 14287 14288 14294 14009 14010 14011 14012 14017 14022 14025 14152 14153 14154 14158 14160 14165 14166 14281 14282 14287 14288 14294 14152 14153 14154 14158 14159 14165 14166 14281 14282 14287 14288 14294 14019 14020 14021 14162 14163 14168 14169 14290 14291 14297 14013 14014 14015 14016 14019 14020 14021 14155 14156 14157 14161 14163 14168 14169 14284 14285 14290 14291 14297 14155 14156 14157 14161 14162 14168 14169 14284 14285 14290 14291 14297 14022 14023 14025 14165 14166 14170 14171 14293 14294 14300 14017 14022 14023 14025 14158 14159 14160 14164 14166 14170 14171 14287 14288 14293 14294 14300 14158 14159 14160 14164 14165 14170 14171 14287 14288 14293 14294 14300 14027 14028 14029 14168 14169 14174 14175 14296 14297 14303 14018 14019 14020 14021 14027 14028 14029 14161 14162 14163 14167 14169 14174 14175 14290 14291 14296 14297 14303 14161 14162 14163 14167 14168 14174 14175 14290 14291 14296 14297 14303 14164 14165 14166 14171 14172 14176 14177 14293 14294 14300 14301 14306 14022 14023 14024 14025 14030 14031 14033 14164 14165 14166 14170 14172 14176 14177 14293 14294 14300 14301 14306 14030 14031 14033 14170 14171 14176 14177 14300 14301 14306 14034 14044 14045 14174 14175 14180 14181 14302 14303 14309 14026 14027 14028 14029 14034 14044 14045 14167 14168 14169 14173 14175 14180 14181 14296 14297 14302 14303 14309 14167 14168 14169 14173 14174 14180 14181 14296 14297 14302 14303 14309 14170 14171 14172 14177 14178 14182 14183 14300 14301 14306 14307 14312 14030 14031 14032 14033 14035 14036 14038 14170 14171 14172 14176 14178 14182 14183 14300 14301 14306 14307 14312 14035 14036 14038 14176 14177 14182 14183 14306 14307 14312 14043 14044 14045 14180 14181 14185 14186 14308 14309 14314 14034 14043 14044 14045 14173 14174 14175 14179 14181 14185 14186 14302 14303 14308 14309 14314 14173 14174 14175 14179 14180 14185 14186 14302 14303 14308 14309 14314 14176 14177 14178 14183 14184 14185 14186 14306 14307 14312 14313 14314 14035 14036 14037 14038 14039 14040 14042 14176 14177 14178 14182 14184 14185 14186 14306 14307 14312 14313 14314 14039 14040 14042 14182 14183 14185 14186 14312 14313 14314 14039 14040 14041 14042 14043 14044 14045 14179 14180 14181 14182 14183 14184 14186 14308 14309 14312 14313 14314 14179 14180 14181 14182 14183 14184 14185 14308 14309 14312 14313 14314 14122 14123 14124 14129 14130 14188 14189 14190 14191 14258 14259 14317 14046 14047 14048 14049 14050 14051 14052 14053 14122 14123 14124 14129 14130 14187 14189 14190 14191 14258 14259 14317 14049 14050 14051 14052 14053 14187 14188 14190 14191 14258 14259 14317 14187 14188 14189 14191 14192 14193 14194 14258 14259 14317 14318 14320 14049 14050 14051 14052 14053 14054 14055 14056 14187 14188 14189 14190 14192 14193 14194 14258 14259 14317 14318 14320 14052 14053 14054 14055 14056 14190 14191 14193 14194 14317 14318 14320 14190 14191 14192 14194 14195 14196 14197 14317 14318 14320 14321 14323 14052 14053 14054 14055 14056 14057 14058 14059 14190 14191 14192 14193 14195 14196 14197 14317 14318 14320 14321 14323 14055 14056 14057 14058 14059 14193 14194 14196 14197 14320 14321 14323 14193 14194 14195 14197 14198 14199 14200 14320 14321 14323 14324 14326 14055 14056 14057 14058 14059 14060 14061 14062 14193 14194 14195 14196 14198 14199 14200 14320 14321 14323 14324 14326 14058 14059 14060 14061 14062 14196 14197 14199 14200 14323 14324 14326 14196 14197 14198 14200 14201 14202 14203 14323 14324 14326 14327 14329 14058 14059 14060 14061 14062 14063 14064 14065 14196 14197 14198 14199 14201 14202 14203 14323 14324 14326 14327 14329 14061 14062 14063 14064 14065 14199 14200 14202 14203 14326 14327 14329 14199 14200 14201 14203 14204 14205 14206 14326 14327 14329 14330 14332 14061 14062 14063 14064 14065 14066 14067 14068 14199 14200 14201 14202 14204 14205 14206 14326 14327 14329 14330 14332 14064 14065 14066 14067 14068 14202 14203 14205 14206 14329 14330 14332 14202 14203 14204 14206 14207 14208 14209 14329 14330 14332 14333 14335 14064 14065 14066 14067 14068 14069 14070 14071 14202 14203 14204 14205 14207 14208 14209 14329 14330 14332 14333 14335 14067 14068 14069 14070 14071 14205 14206 14208 14209 14332 14333 14335 14205 14206 14207 14209 14210 14211 14212 14332 14333 14335 14336 14338 14067 14068 14069 14070 14071 14072 14073 14074 14205 14206 14207 14208 14210 14211 14212 14332 14333 14335 14336 14338 14070 14071 14072 14073 14074 14208 14209 14211 14212 14335 14336 14338 14208 14209 14210 14212 14213 14214 14215 14335 14336 14338 14339 14341 14070 14071 14072 14073 14074 14075 14076 14077 14208 14209 14210 14211 14213 14214 14215 14335 14336 14338 14339 14341 14073 14074 14075 14076 14077 14211 14212 14214 14215 14338 14339 14341 14211 14212 14213 14215 14216 14218 14219 14338 14339 14341 14342 14345 14073 14074 14075 14076 14077 14078 14080 14081 14211 14212 14213 14214 14216 14218 14219 14338 14339 14341 14342 14345 14076 14077 14078 14080 14081 14214 14215 14218 14219 14341 14342 14345 14218 14219 14220 14221 14345 14346 14347 14214 14215 14216 14217 14219 14220 14221 14341 14342 14345 14346 14347 14076 14077 14078 14079 14080 14081 14082 14083 14214 14215 14216 14217 14218 14220 14221 14341 14342 14345 14346 14347 14079 14080 14081 14082 14083 14217 14218 14219 14221 14345 14346 14347 14079 14080 14081 14082 14083 14217 14218 14219 14220 14345 14346 14347 14125 14126 14127 14132 14133 14223 14224 14225 14226 14261 14262 14349 14084 14085 14086 14087 14088 14089 14090 14091 14125 14126 14127 14132 14133 14222 14224 14225 14226 14261 14262 14349 14087 14088 14089 14090 14091 14222 14223 14225 14226 14261 14262 14349 14222 14223 14224 14226 14227 14228 14229 14261 14262 14349 14350 14352 14087 14088 14089 14090 14091 14092 14093 14094 14222 14223 14224 14225 14227 14228 14229 14261 14262 14349 14350 14352 14090 14091 14092 14093 14094 14225 14226 14228 14229 14349 14350 14352 14225 14226 14227 14229 14230 14231 14232 14349 14350 14352 14353 14355 14090 14091 14092 14093 14094 14095 14096 14097 14225 14226 14227 14228 14230 14231 14232 14349 14350 14352 14353 14355 14093 14094 14095 14096 14097 14228 14229 14231 14232 14352 14353 14355 14228 14229 14230 14232 14233 14234 14235 14352 14353 14355 14356 14358 14093 14094 14095 14096 14097 14098 14099 14100 14228 14229 14230 14231 14233 14234 14235 14352 14353 14355 14356 14358 14096 14097 14098 14099 14100 14231 14232 14234 14235 14355 14356 14358 14231 14232 14233 14235 14236 14237 14238 14355 14356 14358 14359 14361 14096 14097 14098 14099 14100 14101 14102 14103 14231 14232 14233 14234 14236 14237 14238 14355 14356 14358 14359 14361 14099 14100 14101 14102 14103 14234 14235 14237 14238 14358 14359 14361 14234 14235 14236 14238 14239 14240 14241 14358 14359 14361 14362 14364 14099 14100 14101 14102 14103 14104 14105 14106 14234 14235 14236 14237 14239 14240 14241 14358 14359 14361 14362 14364 14102 14103 14104 14105 14106 14237 14238 14240 14241 14361 14362 14364 14237 14238 14239 14241 14242 14243 14244 14361 14362 14364 14365 14367 14102 14103 14104 14105 14106 14107 14108 14109 14237 14238 14239 14240 14242 14243 14244 14361 14362 14364 14365 14367 14105 14106 14107 14108 14109 14240 14241 14243 14244 14364 14365 14367 14240 14241 14242 14244 14245 14246 14247 14364 14365 14367 14368 14370 14105 14106 14107 14108 14109 14110 14111 14112 14240 14241 14242 14243 14245 14246 14247 14364 14365 14367 14368 14370 14108 14109 14110 14111 14112 14243 14244 14246 14247 14367 14368 14370 14243 14244 14245 14247 14248 14249 14250 14367 14368 14370 14371 14373 14108 14109 14110 14111 14112 14113 14114 14115 14243 14244 14245 14246 14248 14249 14250 14367 14368 14370 14371 14373 14111 14112 14113 14114 14115 14246 14247 14249 14250 14370 14371 14373 14246 14247 14248 14250 14251 14253 14254 14370 14371 14373 14374 14377 14111 14112 14113 14114 14115 14116 14118 14119 14246 14247 14248 14249 14251 14253 14254 14370 14371 14373 14374 14377 14114 14115 14116 14118 14119 14249 14250 14253 14254 14373 14374 14377 14253 14254 14255 14256 14377 14378 14379 14249 14250 14251 14252 14254 14255 14256 14373 14374 14377 14378 14379 14114 14115 14116 14117 14118 14119 14120 14121 14249 14250 14251 14252 14253 14255 14256 14373 14374 14377 14378 14379 14117 14118 14119 14120 14121 14252 14253 14254 14256 14377 14378 14379 14117 14118 14119 14120 14121 14252 14253 14254 14255 14377 14378 14379 14128 14129 14130 14135 14136 14258 14259 14264 14265 14316 14317 14381 14122 14123 14124 14128 14129 14130 14135 14136 14187 14188 14189 14190 14191 14257 14259 14264 14265 14316 14317 14381 14187 14188 14189 14190 14191 14257 14258 14264 14265 14316 14317 14381 14131 14132 14133 14138 14139 14261 14262 14267 14268 14348 14349 14384 14125 14126 14127 14131 14132 14133 14138 14139 14222 14223 14224 14225 14226 14260 14262 14267 14268 14348 14349 14384 14222 14223 14224 14225 14226 14260 14261 14267 14268 14348 14349 14384 14134 14135 14136 14141 14142 14264 14265 14270 14271 14380 14381 14387 14128 14129 14130 14134 14135 14136 14141 14142 14257 14258 14259 14263 14265 14270 14271 14316 14317 14380 14381 14387 14257 14258 14259 14263 14264 14270 14271 14316 14317 14380 14381 14387 14137 14138 14139 14144 14145 14267 14268 14273 14274 14383 14384 14390 14131 14132 14133 14137 14138 14139 14144 14145 14260 14261 14262 14266 14268 14273 14274 14348 14349 14383 14384 14390 14260 14261 14262 14266 14267 14273 14274 14348 14349 14383 14384 14390 14140 14141 14142 14147 14148 14270 14271 14276 14277 14386 14387 14393 14134 14135 14136 14140 14141 14142 14147 14148 14263 14264 14265 14269 14271 14276 14277 14380 14381 14386 14387 14393 14263 14264 14265 14269 14270 14276 14277 14380 14381 14386 14387 14393 14143 14144 14145 14150 14151 14273 14274 14279 14280 14389 14390 14396 14137 14138 14139 14143 14144 14145 14150 14151 14266 14267 14268 14272 14274 14279 14280 14383 14384 14389 14390 14396 14266 14267 14268 14272 14273 14279 14280 14383 14384 14389 14390 14396 14146 14147 14148 14153 14154 14276 14277 14282 14283 14392 14393 14399 14140 14141 14142 14146 14147 14148 14153 14154 14269 14270 14271 14275 14277 14282 14283 14386 14387 14392 14393 14399 14269 14270 14271 14275 14276 14282 14283 14386 14387 14392 14393 14399 14149 14150 14151 14156 14157 14279 14280 14285 14286 14395 14396 14402 14143 14144 14145 14149 14150 14151 14156 14157 14272 14273 14274 14278 14280 14285 14286 14389 14390 14395 14396 14402 14272 14273 14274 14278 14279 14285 14286 14389 14390 14395 14396 14402 14152 14153 14154 14159 14160 14282 14283 14288 14289 14398 14399 14405 14146 14147 14148 14152 14153 14154 14159 14160 14275 14276 14277 14281 14283 14288 14289 14392 14393 14398 14399 14405 14275 14276 14277 14281 14282 14288 14289 14392 14393 14398 14399 14405 14155 14156 14157 14162 14163 14285 14286 14291 14292 14401 14402 14408 14149 14150 14151 14155 14156 14157 14162 14163 14278 14279 14280 14284 14286 14291 14292 14395 14396 14401 14402 14408 14278 14279 14280 14284 14285 14291 14292 14395 14396 14401 14402 14408 14158 14159 14160 14165 14166 14288 14289 14294 14295 14404 14405 14411 14152 14153 14154 14158 14159 14160 14165 14166 14281 14282 14283 14287 14289 14294 14295 14398 14399 14404 14405 14411 14281 14282 14283 14287 14288 14294 14295 14398 14399 14404 14405 14411 14161 14162 14163 14168 14169 14291 14292 14297 14298 14407 14408 14414 14155 14156 14157 14161 14162 14163 14168 14169 14284 14285 14286 14290 14292 14297 14298 14401 14402 14407 14408 14414 14284 14285 14286 14290 14291 14297 14298 14401 14402 14407 14408 14414 14164 14165 14166 14170 14171 14294 14295 14299 14300 14410 14411 14417 14158 14159 14160 14164 14165 14166 14170 14171 14287 14288 14289 14293 14295 14299 14300 14404 14405 14410 14411 14417 14287 14288 14289 14293 14294 14299 14300 14404 14405 14410 14411 14417 14167 14168 14169 14174 14175 14297 14298 14303 14304 14413 14414 14420 14161 14162 14163 14167 14168 14169 14174 14175 14290 14291 14292 14296 14298 14303 14304 14407 14408 14413 14414 14420 14290 14291 14292 14296 14297 14303 14304 14407 14408 14413 14414 14420 14293 14294 14295 14300 14301 14305 14306 14410 14411 14417 14418 14423 14164 14165 14166 14170 14171 14172 14176 14177 14293 14294 14295 14299 14301 14305 14306 14410 14411 14417 14418 14423 14170 14171 14172 14176 14177 14299 14300 14305 14306 14417 14418 14423 14173 14174 14175 14180 14181 14303 14304 14309 14310 14419 14420 14426 14167 14168 14169 14173 14174 14175 14180 14181 14296 14297 14298 14302 14304 14309 14310 14413 14414 14419 14420 14426 14296 14297 14298 14302 14303 14309 14310 14413 14414 14419 14420 14426 14299 14300 14301 14306 14307 14311 14312 14417 14418 14423 14424 14429 14170 14171 14172 14176 14177 14178 14182 14183 14299 14300 14301 14305 14307 14311 14312 14417 14418 14423 14424 14429 14176 14177 14178 14182 14183 14305 14306 14311 14312 14423 14424 14429 14179 14180 14181 14185 14186 14309 14310 14314 14315 14425 14426 14431 14173 14174 14175 14179 14180 14181 14185 14186 14302 14303 14304 14308 14310 14314 14315 14419 14420 14425 14426 14431 14302 14303 14304 14308 14309 14314 14315 14419 14420 14425 14426 14431 14305 14306 14307 14312 14313 14314 14315 14423 14424 14429 14430 14431 14176 14177 14178 14182 14183 14184 14185 14186 14305 14306 14307 14311 14313 14314 14315 14423 14424 14429 14430 14431 14182 14183 14184 14185 14186 14311 14312 14314 14315 14429 14430 14431 14179 14180 14181 14182 14183 14184 14185 14186 14308 14309 14310 14311 14312 14313 14315 14425 14426 14429 14430 14431 14308 14309 14310 14311 14312 14313 14314 14425 14426 14429 14430 14431 14257 14258 14259 14264 14265 14317 14318 14319 14320 14381 14382 14434 14187 14188 14189 14190 14191 14192 14193 14194 14257 14258 14259 14264 14265 14316 14318 14319 14320 14381 14382 14434 14190 14191 14192 14193 14194 14316 14317 14319 14320 14381 14382 14434 14316 14317 14318 14320 14321 14322 14323 14381 14382 14434 14435 14437 14190 14191 14192 14193 14194 14195 14196 14197 14316 14317 14318 14319 14321 14322 14323 14381 14382 14434 14435 14437 14193 14194 14195 14196 14197 14319 14320 14322 14323 14434 14435 14437 14319 14320 14321 14323 14324 14325 14326 14434 14435 14437 14438 14440 14193 14194 14195 14196 14197 14198 14199 14200 14319 14320 14321 14322 14324 14325 14326 14434 14435 14437 14438 14440 14196 14197 14198 14199 14200 14322 14323 14325 14326 14437 14438 14440 14322 14323 14324 14326 14327 14328 14329 14437 14438 14440 14441 14443 14196 14197 14198 14199 14200 14201 14202 14203 14322 14323 14324 14325 14327 14328 14329 14437 14438 14440 14441 14443 14199 14200 14201 14202 14203 14325 14326 14328 14329 14440 14441 14443 14325 14326 14327 14329 14330 14331 14332 14440 14441 14443 14444 14446 14199 14200 14201 14202 14203 14204 14205 14206 14325 14326 14327 14328 14330 14331 14332 14440 14441 14443 14444 14446 14202 14203 14204 14205 14206 14328 14329 14331 14332 14443 14444 14446 14328 14329 14330 14332 14333 14334 14335 14443 14444 14446 14447 14449 14202 14203 14204 14205 14206 14207 14208 14209 14328 14329 14330 14331 14333 14334 14335 14443 14444 14446 14447 14449 14205 14206 14207 14208 14209 14331 14332 14334 14335 14446 14447 14449 14331 14332 14333 14335 14336 14337 14338 14446 14447 14449 14450 14452 14205 14206 14207 14208 14209 14210 14211 14212 14331 14332 14333 14334 14336 14337 14338 14446 14447 14449 14450 14452 14208 14209 14210 14211 14212 14334 14335 14337 14338 14449 14450 14452 14334 14335 14336 14338 14339 14340 14341 14449 14450 14452 14453 14455 14208 14209 14210 14211 14212 14213 14214 14215 14334 14335 14336 14337 14339 14340 14341 14449 14450 14452 14453 14455 14211 14212 14213 14214 14215 14337 14338 14340 14341 14452 14453 14455 14337 14338 14339 14341 14342 14344 14345 14452 14453 14455 14456 14459 14211 14212 14213 14214 14215 14216 14218 14219 14337 14338 14339 14340 14342 14344 14345 14452 14453 14455 14456 14459 14214 14215 14216 14218 14219 14340 14341 14344 14345 14455 14456 14459 14344 14345 14346 14347 14459 14460 14461 14340 14341 14342 14343 14345 14346 14347 14455 14456 14459 14460 14461 14214 14215 14216 14217 14218 14219 14220 14221 14340 14341 14342 14343 14344 14346 14347 14455 14456 14459 14460 14461 14217 14218 14219 14220 14221 14343 14344 14345 14347 14459 14460 14461 14217 14218 14219 14220 14221 14343 14344 14345 14346 14459 14460 14461 14260 14261 14262 14267 14268 14349 14350 14351 14352 14384 14385 14463 14222 14223 14224 14225 14226 14227 14228 14229 14260 14261 14262 14267 14268 14348 14350 14351 14352 14384 14385 14463 14225 14226 14227 14228 14229 14348 14349 14351 14352 14384 14385 14463 14348 14349 14350 14352 14353 14354 14355 14384 14385 14463 14464 14466 14225 14226 14227 14228 14229 14230 14231 14232 14348 14349 14350 14351 14353 14354 14355 14384 14385 14463 14464 14466 14228 14229 14230 14231 14232 14351 14352 14354 14355 14463 14464 14466 14351 14352 14353 14355 14356 14357 14358 14463 14464 14466 14467 14469 14228 14229 14230 14231 14232 14233 14234 14235 14351 14352 14353 14354 14356 14357 14358 14463 14464 14466 14467 14469 14231 14232 14233 14234 14235 14354 14355 14357 14358 14466 14467 14469 14354 14355 14356 14358 14359 14360 14361 14466 14467 14469 14470 14472 14231 14232 14233 14234 14235 14236 14237 14238 14354 14355 14356 14357 14359 14360 14361 14466 14467 14469 14470 14472 14234 14235 14236 14237 14238 14357 14358 14360 14361 14469 14470 14472 14357 14358 14359 14361 14362 14363 14364 14469 14470 14472 14473 14475 14234 14235 14236 14237 14238 14239 14240 14241 14357 14358 14359 14360 14362 14363 14364 14469 14470 14472 14473 14475 14237 14238 14239 14240 14241 14360 14361 14363 14364 14472 14473 14475 14360 14361 14362 14364 14365 14366 14367 14472 14473 14475 14476 14478 14237 14238 14239 14240 14241 14242 14243 14244 14360 14361 14362 14363 14365 14366 14367 14472 14473 14475 14476 14478 14240 14241 14242 14243 14244 14363 14364 14366 14367 14475 14476 14478 14363 14364 14365 14367 14368 14369 14370 14475 14476 14478 14479 14481 14240 14241 14242 14243 14244 14245 14246 14247 14363 14364 14365 14366 14368 14369 14370 14475 14476 14478 14479 14481 14243 14244 14245 14246 14247 14366 14367 14369 14370 14478 14479 14481 14366 14367 14368 14370 14371 14372 14373 14478 14479 14481 14482 14484 14243 14244 14245 14246 14247 14248 14249 14250 14366 14367 14368 14369 14371 14372 14373 14478 14479 14481 14482 14484 14246 14247 14248 14249 14250 14369 14370 14372 14373 14481 14482 14484 14369 14370 14371 14373 14374 14376 14377 14481 14482 14484 14485 14488 14246 14247 14248 14249 14250 14251 14253 14254 14369 14370 14371 14372 14374 14376 14377 14481 14482 14484 14485 14488 14249 14250 14251 14253 14254 14372 14373 14376 14377 14484 14485 14488 14376 14377 14378 14379 14488 14489 14490 14372 14373 14374 14375 14377 14378 14379 14484 14485 14488 14489 14490 14249 14250 14251 14252 14253 14254 14255 14256 14372 14373 14374 14375 14376 14378 14379 14484 14485 14488 14489 14490 14252 14253 14254 14255 14256 14375 14376 14377 14379 14488 14489 14490 14252 14253 14254 14255 14256 14375 14376 14377 14378 14488 14489 14490 14263 14264 14265 14270 14271 14381 14382 14387 14388 14433 14434 14492 14257 14258 14259 14263 14264 14265 14270 14271 14316 14317 14318 14319 14320 14380 14382 14387 14388 14433 14434 14492 14316 14317 14318 14319 14320 14380 14381 14387 14388 14433 14434 14492 14266 14267 14268 14273 14274 14384 14385 14390 14391 14462 14463 14495 14260 14261 14262 14266 14267 14268 14273 14274 14348 14349 14350 14351 14352 14383 14385 14390 14391 14462 14463 14495 14348 14349 14350 14351 14352 14383 14384 14390 14391 14462 14463 14495 14269 14270 14271 14276 14277 14387 14388 14393 14394 14491 14492 14498 14263 14264 14265 14269 14270 14271 14276 14277 14380 14381 14382 14386 14388 14393 14394 14433 14434 14491 14492 14498 14380 14381 14382 14386 14387 14393 14394 14433 14434 14491 14492 14498 14272 14273 14274 14279 14280 14390 14391 14396 14397 14494 14495 14501 14266 14267 14268 14272 14273 14274 14279 14280 14383 14384 14385 14389 14391 14396 14397 14462 14463 14494 14495 14501 14383 14384 14385 14389 14390 14396 14397 14462 14463 14494 14495 14501 14275 14276 14277 14282 14283 14393 14394 14399 14400 14497 14498 14504 14269 14270 14271 14275 14276 14277 14282 14283 14386 14387 14388 14392 14394 14399 14400 14491 14492 14497 14498 14504 14386 14387 14388 14392 14393 14399 14400 14491 14492 14497 14498 14504 14278 14279 14280 14285 14286 14396 14397 14402 14403 14500 14501 14507 14272 14273 14274 14278 14279 14280 14285 14286 14389 14390 14391 14395 14397 14402 14403 14494 14495 14500 14501 14507 14389 14390 14391 14395 14396 14402 14403 14494 14495 14500 14501 14507 14281 14282 14283 14288 14289 14399 14400 14405 14406 14503 14504 14510 14275 14276 14277 14281 14282 14283 14288 14289 14392 14393 14394 14398 14400 14405 14406 14497 14498 14503 14504 14510 14392 14393 14394 14398 14399 14405 14406 14497 14498 14503 14504 14510 14284 14285 14286 14291 14292 14402 14403 14408 14409 14506 14507 14513 14278 14279 14280 14284 14285 14286 14291 14292 14395 14396 14397 14401 14403 14408 14409 14500 14501 14506 14507 14513 14395 14396 14397 14401 14402 14408 14409 14500 14501 14506 14507 14513 14287 14288 14289 14294 14295 14405 14406 14411 14412 14509 14510 14516 14281 14282 14283 14287 14288 14289 14294 14295 14398 14399 14400 14404 14406 14411 14412 14503 14504 14509 14510 14516 14398 14399 14400 14404 14405 14411 14412 14503 14504 14509 14510 14516 14290 14291 14292 14297 14298 14408 14409 14414 14415 14512 14513 14519 14284 14285 14286 14290 14291 14292 14297 14298 14401 14402 14403 14407 14409 14414 14415 14506 14507 14512 14513 14519 14401 14402 14403 14407 14408 14414 14415 14506 14507 14512 14513 14519 14293 14294 14295 14299 14300 14411 14412 14416 14417 14515 14516 14522 14287 14288 14289 14293 14294 14295 14299 14300 14404 14405 14406 14410 14412 14416 14417 14509 14510 14515 14516 14522 14404 14405 14406 14410 14411 14416 14417 14509 14510 14515 14516 14522 14296 14297 14298 14303 14304 14414 14415 14420 14421 14518 14519 14525 14290 14291 14292 14296 14297 14298 14303 14304 14407 14408 14409 14413 14415 14420 14421 14512 14513 14518 14519 14525 14407 14408 14409 14413 14414 14420 14421 14512 14513 14518 14519 14525 14410 14411 14412 14417 14418 14422 14423 14515 14516 14522 14523 14528 14293 14294 14295 14299 14300 14301 14305 14306 14410 14411 14412 14416 14418 14422 14423 14515 14516 14522 14523 14528 14299 14300 14301 14305 14306 14416 14417 14422 14423 14522 14523 14528 14302 14303 14304 14309 14310 14420 14421 14426 14427 14524 14525 14531 14296 14297 14298 14302 14303 14304 14309 14310 14413 14414 14415 14419 14421 14426 14427 14518 14519 14524 14525 14531 14413 14414 14415 14419 14420 14426 14427 14518 14519 14524 14525 14531 14416 14417 14418 14423 14424 14428 14429 14522 14523 14528 14529 14534 14299 14300 14301 14305 14306 14307 14311 14312 14416 14417 14418 14422 14424 14428 14429 14522 14523 14528 14529 14534 14305 14306 14307 14311 14312 14422 14423 14428 14429 14528 14529 14534 14308 14309 14310 14314 14315 14426 14427 14431 14432 14530 14531 14536 14302 14303 14304 14308 14309 14310 14314 14315 14419 14420 14421 14425 14427 14431 14432 14524 14525 14530 14531 14536 14419 14420 14421 14425 14426 14431 14432 14524 14525 14530 14531 14536 14422 14423 14424 14429 14430 14431 14432 14528 14529 14534 14535 14536 14305 14306 14307 14311 14312 14313 14314 14315 14422 14423 14424 14428 14430 14431 14432 14528 14529 14534 14535 14536 14311 14312 14313 14314 14315 14428 14429 14431 14432 14534 14535 14536 14308 14309 14310 14311 14312 14313 14314 14315 14425 14426 14427 14428 14429 14430 14432 14530 14531 14534 14535 14536 14425 14426 14427 14428 14429 14430 14431 14530 14531 14534 14535 14536 14380 14381 14382 14387 14388 14434 14435 14436 14437 14492 14493 14539 14316 14317 14318 14319 14320 14321 14322 14323 14380 14381 14382 14387 14388 14433 14435 14436 14437 14492 14493 14539 14319 14320 14321 14322 14323 14433 14434 14436 14437 14492 14493 14539 14433 14434 14435 14437 14438 14439 14440 14492 14493 14539 14540 14542 14319 14320 14321 14322 14323 14324 14325 14326 14433 14434 14435 14436 14438 14439 14440 14492 14493 14539 14540 14542 14322 14323 14324 14325 14326 14436 14437 14439 14440 14539 14540 14542 14436 14437 14438 14440 14441 14442 14443 14539 14540 14542 14543 14545 14322 14323 14324 14325 14326 14327 14328 14329 14436 14437 14438 14439 14441 14442 14443 14539 14540 14542 14543 14545 14325 14326 14327 14328 14329 14439 14440 14442 14443 14542 14543 14545 14439 14440 14441 14443 14444 14445 14446 14542 14543 14545 14546 14548 14325 14326 14327 14328 14329 14330 14331 14332 14439 14440 14441 14442 14444 14445 14446 14542 14543 14545 14546 14548 14328 14329 14330 14331 14332 14442 14443 14445 14446 14545 14546 14548 14442 14443 14444 14446 14447 14448 14449 14545 14546 14548 14549 14551 14328 14329 14330 14331 14332 14333 14334 14335 14442 14443 14444 14445 14447 14448 14449 14545 14546 14548 14549 14551 14331 14332 14333 14334 14335 14445 14446 14448 14449 14548 14549 14551 14445 14446 14447 14449 14450 14451 14452 14548 14549 14551 14552 14554 14331 14332 14333 14334 14335 14336 14337 14338 14445 14446 14447 14448 14450 14451 14452 14548 14549 14551 14552 14554 14334 14335 14336 14337 14338 14448 14449 14451 14452 14551 14552 14554 14448 14449 14450 14452 14453 14454 14455 14551 14552 14554 14555 14557 14334 14335 14336 14337 14338 14339 14340 14341 14448 14449 14450 14451 14453 14454 14455 14551 14552 14554 14555 14557 14337 14338 14339 14340 14341 14451 14452 14454 14455 14554 14555 14557 14451 14452 14453 14455 14456 14458 14459 14554 14555 14557 14558 14561 14337 14338 14339 14340 14341 14342 14344 14345 14451 14452 14453 14454 14456 14458 14459 14554 14555 14557 14558 14561 14340 14341 14342 14344 14345 14454 14455 14458 14459 14557 14558 14561 14458 14459 14460 14461 14561 14562 14563 14454 14455 14456 14457 14459 14460 14461 14557 14558 14561 14562 14563 14340 14341 14342 14343 14344 14345 14346 14347 14454 14455 14456 14457 14458 14460 14461 14557 14558 14561 14562 14563 14343 14344 14345 14346 14347 14457 14458 14459 14461 14561 14562 14563 14343 14344 14345 14346 14347 14457 14458 14459 14460 14561 14562 14563 14383 14384 14385 14390 14391 14463 14464 14465 14466 14495 14496 14565 14348 14349 14350 14351 14352 14353 14354 14355 14383 14384 14385 14390 14391 14462 14464 14465 14466 14495 14496 14565 14351 14352 14353 14354 14355 14462 14463 14465 14466 14495 14496 14565 14462 14463 14464 14466 14467 14468 14469 14495 14496 14565 14566 14568 14351 14352 14353 14354 14355 14356 14357 14358 14462 14463 14464 14465 14467 14468 14469 14495 14496 14565 14566 14568 14354 14355 14356 14357 14358 14465 14466 14468 14469 14565 14566 14568 14465 14466 14467 14469 14470 14471 14472 14565 14566 14568 14569 14571 14354 14355 14356 14357 14358 14359 14360 14361 14465 14466 14467 14468 14470 14471 14472 14565 14566 14568 14569 14571 14357 14358 14359 14360 14361 14468 14469 14471 14472 14568 14569 14571 14468 14469 14470 14472 14473 14474 14475 14568 14569 14571 14572 14574 14357 14358 14359 14360 14361 14362 14363 14364 14468 14469 14470 14471 14473 14474 14475 14568 14569 14571 14572 14574 14360 14361 14362 14363 14364 14471 14472 14474 14475 14571 14572 14574 14471 14472 14473 14475 14476 14477 14478 14571 14572 14574 14575 14577 14360 14361 14362 14363 14364 14365 14366 14367 14471 14472 14473 14474 14476 14477 14478 14571 14572 14574 14575 14577 14363 14364 14365 14366 14367 14474 14475 14477 14478 14574 14575 14577 14474 14475 14476 14478 14479 14480 14481 14574 14575 14577 14578 14580 14363 14364 14365 14366 14367 14368 14369 14370 14474 14475 14476 14477 14479 14480 14481 14574 14575 14577 14578 14580 14366 14367 14368 14369 14370 14477 14478 14480 14481 14577 14578 14580 14477 14478 14479 14481 14482 14483 14484 14577 14578 14580 14581 14583 14366 14367 14368 14369 14370 14371 14372 14373 14477 14478 14479 14480 14482 14483 14484 14577 14578 14580 14581 14583 14369 14370 14371 14372 14373 14480 14481 14483 14484 14580 14581 14583 14480 14481 14482 14484 14485 14487 14488 14580 14581 14583 14584 14587 14369 14370 14371 14372 14373 14374 14376 14377 14480 14481 14482 14483 14485 14487 14488 14580 14581 14583 14584 14587 14372 14373 14374 14376 14377 14483 14484 14487 14488 14583 14584 14587 14487 14488 14489 14490 14587 14588 14589 14483 14484 14485 14486 14488 14489 14490 14583 14584 14587 14588 14589 14372 14373 14374 14375 14376 14377 14378 14379 14483 14484 14485 14486 14487 14489 14490 14583 14584 14587 14588 14589 14375 14376 14377 14378 14379 14486 14487 14488 14490 14587 14588 14589 14375 14376 14377 14378 14379 14486 14487 14488 14489 14587 14588 14589 14386 14387 14388 14393 14394 14492 14493 14498 14499 14538 14539 14591 14380 14381 14382 14386 14387 14388 14393 14394 14433 14434 14435 14436 14437 14491 14493 14498 14499 14538 14539 14591 14433 14434 14435 14436 14437 14491 14492 14498 14499 14538 14539 14591 14389 14390 14391 14396 14397 14495 14496 14501 14502 14564 14565 14594 14383 14384 14385 14389 14390 14391 14396 14397 14462 14463 14464 14465 14466 14494 14496 14501 14502 14564 14565 14594 14462 14463 14464 14465 14466 14494 14495 14501 14502 14564 14565 14594 14392 14393 14394 14399 14400 14498 14499 14504 14505 14590 14591 14597 14386 14387 14388 14392 14393 14394 14399 14400 14491 14492 14493 14497 14499 14504 14505 14538 14539 14590 14591 14597 14491 14492 14493 14497 14498 14504 14505 14538 14539 14590 14591 14597 14395 14396 14397 14402 14403 14501 14502 14507 14508 14593 14594 14600 14389 14390 14391 14395 14396 14397 14402 14403 14494 14495 14496 14500 14502 14507 14508 14564 14565 14593 14594 14600 14494 14495 14496 14500 14501 14507 14508 14564 14565 14593 14594 14600 14398 14399 14400 14405 14406 14504 14505 14510 14511 14596 14597 14603 14392 14393 14394 14398 14399 14400 14405 14406 14497 14498 14499 14503 14505 14510 14511 14590 14591 14596 14597 14603 14497 14498 14499 14503 14504 14510 14511 14590 14591 14596 14597 14603 14401 14402 14403 14408 14409 14507 14508 14513 14514 14599 14600 14606 14395 14396 14397 14401 14402 14403 14408 14409 14500 14501 14502 14506 14508 14513 14514 14593 14594 14599 14600 14606 14500 14501 14502 14506 14507 14513 14514 14593 14594 14599 14600 14606 14404 14405 14406 14411 14412 14510 14511 14516 14517 14602 14603 14609 14398 14399 14400 14404 14405 14406 14411 14412 14503 14504 14505 14509 14511 14516 14517 14596 14597 14602 14603 14609 14503 14504 14505 14509 14510 14516 14517 14596 14597 14602 14603 14609 14407 14408 14409 14414 14415 14513 14514 14519 14520 14605 14606 14612 14401 14402 14403 14407 14408 14409 14414 14415 14506 14507 14508 14512 14514 14519 14520 14599 14600 14605 14606 14612 14506 14507 14508 14512 14513 14519 14520 14599 14600 14605 14606 14612 14410 14411 14412 14416 14417 14516 14517 14521 14522 14608 14609 14615 14404 14405 14406 14410 14411 14412 14416 14417 14509 14510 14511 14515 14517 14521 14522 14602 14603 14608 14609 14615 14509 14510 14511 14515 14516 14521 14522 14602 14603 14608 14609 14615 14413 14414 14415 14420 14421 14519 14520 14525 14526 14611 14612 14618 14407 14408 14409 14413 14414 14415 14420 14421 14512 14513 14514 14518 14520 14525 14526 14605 14606 14611 14612 14618 14512 14513 14514 14518 14519 14525 14526 14605 14606 14611 14612 14618 14515 14516 14517 14522 14523 14527 14528 14608 14609 14615 14616 14621 14410 14411 14412 14416 14417 14418 14422 14423 14515 14516 14517 14521 14523 14527 14528 14608 14609 14615 14616 14621 14416 14417 14418 14422 14423 14521 14522 14527 14528 14615 14616 14621 14419 14420 14421 14426 14427 14525 14526 14531 14532 14617 14618 14624 14413 14414 14415 14419 14420 14421 14426 14427 14518 14519 14520 14524 14526 14531 14532 14611 14612 14617 14618 14624 14518 14519 14520 14524 14525 14531 14532 14611 14612 14617 14618 14624 14521 14522 14523 14528 14529 14533 14534 14615 14616 14621 14622 14627 14416 14417 14418 14422 14423 14424 14428 14429 14521 14522 14523 14527 14529 14533 14534 14615 14616 14621 14622 14627 14422 14423 14424 14428 14429 14527 14528 14533 14534 14621 14622 14627 14425 14426 14427 14431 14432 14531 14532 14536 14537 14623 14624 14629 14419 14420 14421 14425 14426 14427 14431 14432 14524 14525 14526 14530 14532 14536 14537 14617 14618 14623 14624 14629 14524 14525 14526 14530 14531 14536 14537 14617 14618 14623 14624 14629 14527 14528 14529 14534 14535 14536 14537 14621 14622 14627 14628 14629 14422 14423 14424 14428 14429 14430 14431 14432 14527 14528 14529 14533 14535 14536 14537 14621 14622 14627 14628 14629 14428 14429 14430 14431 14432 14533 14534 14536 14537 14627 14628 14629 14425 14426 14427 14428 14429 14430 14431 14432 14530 14531 14532 14533 14534 14535 14537 14623 14624 14627 14628 14629 14530 14531 14532 14533 14534 14535 14536 14623 14624 14627 14628 14629 14491 14492 14493 14498 14499 14539 14540 14541 14542 14591 14592 14632 14433 14434 14435 14436 14437 14438 14439 14440 14491 14492 14493 14498 14499 14538 14540 14541 14542 14591 14592 14632 14436 14437 14438 14439 14440 14538 14539 14541 14542 14591 14592 14632 14538 14539 14540 14542 14543 14544 14545 14591 14592 14632 14633 14635 14436 14437 14438 14439 14440 14441 14442 14443 14538 14539 14540 14541 14543 14544 14545 14591 14592 14632 14633 14635 14439 14440 14441 14442 14443 14541 14542 14544 14545 14632 14633 14635 14541 14542 14543 14545 14546 14547 14548 14632 14633 14635 14636 14638 14439 14440 14441 14442 14443 14444 14445 14446 14541 14542 14543 14544 14546 14547 14548 14632 14633 14635 14636 14638 14442 14443 14444 14445 14446 14544 14545 14547 14548 14635 14636 14638 14544 14545 14546 14548 14549 14550 14551 14635 14636 14638 14639 14641 14442 14443 14444 14445 14446 14447 14448 14449 14544 14545 14546 14547 14549 14550 14551 14635 14636 14638 14639 14641 14445 14446 14447 14448 14449 14547 14548 14550 14551 14638 14639 14641 14547 14548 14549 14551 14552 14553 14554 14638 14639 14641 14642 14644 14445 14446 14447 14448 14449 14450 14451 14452 14547 14548 14549 14550 14552 14553 14554 14638 14639 14641 14642 14644 14448 14449 14450 14451 14452 14550 14551 14553 14554 14641 14642 14644 14550 14551 14552 14554 14555 14556 14557 14641 14642 14644 14645 14647 14448 14449 14450 14451 14452 14453 14454 14455 14550 14551 14552 14553 14555 14556 14557 14641 14642 14644 14645 14647 14451 14452 14453 14454 14455 14553 14554 14556 14557 14644 14645 14647 14553 14554 14555 14557 14558 14560 14561 14644 14645 14647 14648 14651 14451 14452 14453 14454 14455 14456 14458 14459 14553 14554 14555 14556 14558 14560 14561 14644 14645 14647 14648 14651 14454 14455 14456 14458 14459 14556 14557 14560 14561 14647 14648 14651 14560 14561 14562 14563 14651 14652 14653 14556 14557 14558 14559 14561 14562 14563 14647 14648 14651 14652 14653 14454 14455 14456 14457 14458 14459 14460 14461 14556 14557 14558 14559 14560 14562 14563 14647 14648 14651 14652 14653 14457 14458 14459 14460 14461 14559 14560 14561 14563 14651 14652 14653 14457 14458 14459 14460 14461 14559 14560 14561 14562 14651 14652 14653 14494 14495 14496 14501 14502 14565 14566 14567 14568 14594 14595 14655 14462 14463 14464 14465 14466 14467 14468 14469 14494 14495 14496 14501 14502 14564 14566 14567 14568 14594 14595 14655 14465 14466 14467 14468 14469 14564 14565 14567 14568 14594 14595 14655 14564 14565 14566 14568 14569 14570 14571 14594 14595 14655 14656 14658 14465 14466 14467 14468 14469 14470 14471 14472 14564 14565 14566 14567 14569 14570 14571 14594 14595 14655 14656 14658 14468 14469 14470 14471 14472 14567 14568 14570 14571 14655 14656 14658 14567 14568 14569 14571 14572 14573 14574 14655 14656 14658 14659 14661 14468 14469 14470 14471 14472 14473 14474 14475 14567 14568 14569 14570 14572 14573 14574 14655 14656 14658 14659 14661 14471 14472 14473 14474 14475 14570 14571 14573 14574 14658 14659 14661 14570 14571 14572 14574 14575 14576 14577 14658 14659 14661 14662 14664 14471 14472 14473 14474 14475 14476 14477 14478 14570 14571 14572 14573 14575 14576 14577 14658 14659 14661 14662 14664 14474 14475 14476 14477 14478 14573 14574 14576 14577 14661 14662 14664 14573 14574 14575 14577 14578 14579 14580 14661 14662 14664 14665 14667 14474 14475 14476 14477 14478 14479 14480 14481 14573 14574 14575 14576 14578 14579 14580 14661 14662 14664 14665 14667 14477 14478 14479 14480 14481 14576 14577 14579 14580 14664 14665 14667 14576 14577 14578 14580 14581 14582 14583 14664 14665 14667 14668 14670 14477 14478 14479 14480 14481 14482 14483 14484 14576 14577 14578 14579 14581 14582 14583 14664 14665 14667 14668 14670 14480 14481 14482 14483 14484 14579 14580 14582 14583 14667 14668 14670 14579 14580 14581 14583 14584 14586 14587 14667 14668 14670 14671 14674 14480 14481 14482 14483 14484 14485 14487 14488 14579 14580 14581 14582 14584 14586 14587 14667 14668 14670 14671 14674 14483 14484 14485 14487 14488 14582 14583 14586 14587 14670 14671 14674 14586 14587 14588 14589 14674 14675 14676 14582 14583 14584 14585 14587 14588 14589 14670 14671 14674 14675 14676 14483 14484 14485 14486 14487 14488 14489 14490 14582 14583 14584 14585 14586 14588 14589 14670 14671 14674 14675 14676 14486 14487 14488 14489 14490 14585 14586 14587 14589 14674 14675 14676 14486 14487 14488 14489 14490 14585 14586 14587 14588 14674 14675 14676 14497 14498 14499 14504 14505 14591 14592 14597 14598 14631 14632 14678 14491 14492 14493 14497 14498 14499 14504 14505 14538 14539 14540 14541 14542 14590 14592 14597 14598 14631 14632 14678 14538 14539 14540 14541 14542 14590 14591 14597 14598 14631 14632 14678 14500 14501 14502 14507 14508 14594 14595 14600 14601 14654 14655 14681 14494 14495 14496 14500 14501 14502 14507 14508 14564 14565 14566 14567 14568 14593 14595 14600 14601 14654 14655 14681 14564 14565 14566 14567 14568 14593 14594 14600 14601 14654 14655 14681 14503 14504 14505 14510 14511 14597 14598 14603 14604 14677 14678 14684 14497 14498 14499 14503 14504 14505 14510 14511 14590 14591 14592 14596 14598 14603 14604 14631 14632 14677 14678 14684 14590 14591 14592 14596 14597 14603 14604 14631 14632 14677 14678 14684 14506 14507 14508 14513 14514 14600 14601 14606 14607 14680 14681 14687 14500 14501 14502 14506 14507 14508 14513 14514 14593 14594 14595 14599 14601 14606 14607 14654 14655 14680 14681 14687 14593 14594 14595 14599 14600 14606 14607 14654 14655 14680 14681 14687 14509 14510 14511 14516 14517 14603 14604 14609 14610 14683 14684 14690 14503 14504 14505 14509 14510 14511 14516 14517 14596 14597 14598 14602 14604 14609 14610 14677 14678 14683 14684 14690 14596 14597 14598 14602 14603 14609 14610 14677 14678 14683 14684 14690 14512 14513 14514 14519 14520 14606 14607 14612 14613 14686 14687 14693 14506 14507 14508 14512 14513 14514 14519 14520 14599 14600 14601 14605 14607 14612 14613 14680 14681 14686 14687 14693 14599 14600 14601 14605 14606 14612 14613 14680 14681 14686 14687 14693 14515 14516 14517 14521 14522 14609 14610 14614 14615 14689 14690 14696 14509 14510 14511 14515 14516 14517 14521 14522 14602 14603 14604 14608 14610 14614 14615 14683 14684 14689 14690 14696 14602 14603 14604 14608 14609 14614 14615 14683 14684 14689 14690 14696 14518 14519 14520 14525 14526 14612 14613 14618 14619 14692 14693 14699 14512 14513 14514 14518 14519 14520 14525 14526 14605 14606 14607 14611 14613 14618 14619 14686 14687 14692 14693 14699 14605 14606 14607 14611 14612 14618 14619 14686 14687 14692 14693 14699 14608 14609 14610 14615 14616 14620 14621 14689 14690 14696 14697 14702 14515 14516 14517 14521 14522 14523 14527 14528 14608 14609 14610 14614 14616 14620 14621 14689 14690 14696 14697 14702 14521 14522 14523 14527 14528 14614 14615 14620 14621 14696 14697 14702 14524 14525 14526 14531 14532 14618 14619 14624 14625 14698 14699 14705 14518 14519 14520 14524 14525 14526 14531 14532 14611 14612 14613 14617 14619 14624 14625 14692 14693 14698 14699 14705 14611 14612 14613 14617 14618 14624 14625 14692 14693 14698 14699 14705 14614 14615 14616 14621 14622 14626 14627 14696 14697 14702 14703 14708 14521 14522 14523 14527 14528 14529 14533 14534 14614 14615 14616 14620 14622 14626 14627 14696 14697 14702 14703 14708 14527 14528 14529 14533 14534 14620 14621 14626 14627 14702 14703 14708 14530 14531 14532 14536 14537 14624 14625 14629 14630 14704 14705 14710 14524 14525 14526 14530 14531 14532 14536 14537 14617 14618 14619 14623 14625 14629 14630 14698 14699 14704 14705 14710 14617 14618 14619 14623 14624 14629 14630 14698 14699 14704 14705 14710 14620 14621 14622 14627 14628 14629 14630 14702 14703 14708 14709 14710 14527 14528 14529 14533 14534 14535 14536 14537 14620 14621 14622 14626 14628 14629 14630 14702 14703 14708 14709 14710 14533 14534 14535 14536 14537 14626 14627 14629 14630 14708 14709 14710 14530 14531 14532 14533 14534 14535 14536 14537 14623 14624 14625 14626 14627 14628 14630 14704 14705 14708 14709 14710 14623 14624 14625 14626 14627 14628 14629 14704 14705 14708 14709 14710 14590 14591 14592 14597 14598 14632 14633 14634 14635 14678 14679 14713 14538 14539 14540 14541 14542 14543 14544 14545 14590 14591 14592 14597 14598 14631 14633 14634 14635 14678 14679 14713 14541 14542 14543 14544 14545 14631 14632 14634 14635 14678 14679 14713 14631 14632 14633 14635 14636 14637 14638 14678 14679 14713 14714 14716 14541 14542 14543 14544 14545 14546 14547 14548 14631 14632 14633 14634 14636 14637 14638 14678 14679 14713 14714 14716 14544 14545 14546 14547 14548 14634 14635 14637 14638 14713 14714 14716 14634 14635 14636 14638 14639 14640 14641 14713 14714 14716 14717 14719 14544 14545 14546 14547 14548 14549 14550 14551 14634 14635 14636 14637 14639 14640 14641 14713 14714 14716 14717 14719 14547 14548 14549 14550 14551 14637 14638 14640 14641 14716 14717 14719 14637 14638 14639 14641 14642 14643 14644 14716 14717 14719 14720 14722 14547 14548 14549 14550 14551 14552 14553 14554 14637 14638 14639 14640 14642 14643 14644 14716 14717 14719 14720 14722 14550 14551 14552 14553 14554 14640 14641 14643 14644 14719 14720 14722 14640 14641 14642 14644 14645 14646 14647 14719 14720 14722 14723 14725 14550 14551 14552 14553 14554 14555 14556 14557 14640 14641 14642 14643 14645 14646 14647 14719 14720 14722 14723 14725 14553 14554 14555 14556 14557 14643 14644 14646 14647 14722 14723 14725 14643 14644 14645 14647 14648 14650 14651 14722 14723 14725 14726 14729 14553 14554 14555 14556 14557 14558 14560 14561 14643 14644 14645 14646 14648 14650 14651 14722 14723 14725 14726 14729 14556 14557 14558 14560 14561 14646 14647 14650 14651 14725 14726 14729 14650 14651 14652 14653 14729 14730 14731 14646 14647 14648 14649 14651 14652 14653 14725 14726 14729 14730 14731 14556 14557 14558 14559 14560 14561 14562 14563 14646 14647 14648 14649 14650 14652 14653 14725 14726 14729 14730 14731 14559 14560 14561 14562 14563 14649 14650 14651 14653 14729 14730 14731 14559 14560 14561 14562 14563 14649 14650 14651 14652 14729 14730 14731 14593 14594 14595 14600 14601 14655 14656 14657 14658 14681 14682 14733 14564 14565 14566 14567 14568 14569 14570 14571 14593 14594 14595 14600 14601 14654 14656 14657 14658 14681 14682 14733 14567 14568 14569 14570 14571 14654 14655 14657 14658 14681 14682 14733 14654 14655 14656 14658 14659 14660 14661 14681 14682 14733 14734 14736 14567 14568 14569 14570 14571 14572 14573 14574 14654 14655 14656 14657 14659 14660 14661 14681 14682 14733 14734 14736 14570 14571 14572 14573 14574 14657 14658 14660 14661 14733 14734 14736 14657 14658 14659 14661 14662 14663 14664 14733 14734 14736 14737 14739 14570 14571 14572 14573 14574 14575 14576 14577 14657 14658 14659 14660 14662 14663 14664 14733 14734 14736 14737 14739 14573 14574 14575 14576 14577 14660 14661 14663 14664 14736 14737 14739 14660 14661 14662 14664 14665 14666 14667 14736 14737 14739 14740 14742 14573 14574 14575 14576 14577 14578 14579 14580 14660 14661 14662 14663 14665 14666 14667 14736 14737 14739 14740 14742 14576 14577 14578 14579 14580 14663 14664 14666 14667 14739 14740 14742 14663 14664 14665 14667 14668 14669 14670 14739 14740 14742 14743 14745 14576 14577 14578 14579 14580 14581 14582 14583 14663 14664 14665 14666 14668 14669 14670 14739 14740 14742 14743 14745 14579 14580 14581 14582 14583 14666 14667 14669 14670 14742 14743 14745 14666 14667 14668 14670 14671 14673 14674 14742 14743 14745 14746 14749 14579 14580 14581 14582 14583 14584 14586 14587 14666 14667 14668 14669 14671 14673 14674 14742 14743 14745 14746 14749 14582 14583 14584 14586 14587 14669 14670 14673 14674 14745 14746 14749 14673 14674 14675 14676 14749 14750 14751 14669 14670 14671 14672 14674 14675 14676 14745 14746 14749 14750 14751 14582 14583 14584 14585 14586 14587 14588 14589 14669 14670 14671 14672 14673 14675 14676 14745 14746 14749 14750 14751 14585 14586 14587 14588 14589 14672 14673 14674 14676 14749 14750 14751 14585 14586 14587 14588 14589 14672 14673 14674 14675 14749 14750 14751 14596 14597 14598 14603 14604 14678 14679 14684 14685 14712 14713 14753 14590 14591 14592 14596 14597 14598 14603 14604 14631 14632 14633 14634 14635 14677 14679 14684 14685 14712 14713 14753 14631 14632 14633 14634 14635 14677 14678 14684 14685 14712 14713 14753 14599 14600 14601 14606 14607 14681 14682 14687 14688 14732 14733 14756 14593 14594 14595 14599 14600 14601 14606 14607 14654 14655 14656 14657 14658 14680 14682 14687 14688 14732 14733 14756 14654 14655 14656 14657 14658 14680 14681 14687 14688 14732 14733 14756 14602 14603 14604 14609 14610 14684 14685 14690 14691 14752 14753 14759 14596 14597 14598 14602 14603 14604 14609 14610 14677 14678 14679 14683 14685 14690 14691 14712 14713 14752 14753 14759 14677 14678 14679 14683 14684 14690 14691 14712 14713 14752 14753 14759 14605 14606 14607 14612 14613 14687 14688 14693 14694 14755 14756 14762 14599 14600 14601 14605 14606 14607 14612 14613 14680 14681 14682 14686 14688 14693 14694 14732 14733 14755 14756 14762 14680 14681 14682 14686 14687 14693 14694 14732 14733 14755 14756 14762 14608 14609 14610 14614 14615 14690 14691 14695 14696 14758 14759 14765 14602 14603 14604 14608 14609 14610 14614 14615 14683 14684 14685 14689 14691 14695 14696 14752 14753 14758 14759 14765 14683 14684 14685 14689 14690 14695 14696 14752 14753 14758 14759 14765 14611 14612 14613 14618 14619 14693 14694 14699 14700 14761 14762 14768 14605 14606 14607 14611 14612 14613 14618 14619 14686 14687 14688 14692 14694 14699 14700 14755 14756 14761 14762 14768 14686 14687 14688 14692 14693 14699 14700 14755 14756 14761 14762 14768 14689 14690 14691 14696 14697 14701 14702 14758 14759 14765 14766 14771 14608 14609 14610 14614 14615 14616 14620 14621 14689 14690 14691 14695 14697 14701 14702 14758 14759 14765 14766 14771 14614 14615 14616 14620 14621 14695 14696 14701 14702 14765 14766 14771 14617 14618 14619 14624 14625 14699 14700 14705 14706 14767 14768 14774 14611 14612 14613 14617 14618 14619 14624 14625 14692 14693 14694 14698 14700 14705 14706 14761 14762 14767 14768 14774 14692 14693 14694 14698 14699 14705 14706 14761 14762 14767 14768 14774 14695 14696 14697 14702 14703 14707 14708 14765 14766 14771 14772 14777 14614 14615 14616 14620 14621 14622 14626 14627 14695 14696 14697 14701 14703 14707 14708 14765 14766 14771 14772 14777 14620 14621 14622 14626 14627 14701 14702 14707 14708 14771 14772 14777 14623 14624 14625 14629 14630 14705 14706 14710 14711 14773 14774 14779 14617 14618 14619 14623 14624 14625 14629 14630 14698 14699 14700 14704 14706 14710 14711 14767 14768 14773 14774 14779 14698 14699 14700 14704 14705 14710 14711 14767 14768 14773 14774 14779 14701 14702 14703 14708 14709 14710 14711 14771 14772 14777 14778 14779 14620 14621 14622 14626 14627 14628 14629 14630 14701 14702 14703 14707 14709 14710 14711 14771 14772 14777 14778 14779 14626 14627 14628 14629 14630 14707 14708 14710 14711 14777 14778 14779 14623 14624 14625 14626 14627 14628 14629 14630 14704 14705 14706 14707 14708 14709 14711 14773 14774 14777 14778 14779 14704 14705 14706 14707 14708 14709 14710 14773 14774 14777 14778 14779 14677 14678 14679 14684 14685 14713 14714 14715 14716 14753 14754 14782 14631 14632 14633 14634 14635 14636 14637 14638 14677 14678 14679 14684 14685 14712 14714 14715 14716 14753 14754 14782 14634 14635 14636 14637 14638 14712 14713 14715 14716 14753 14754 14782 14712 14713 14714 14716 14717 14718 14719 14753 14754 14782 14783 14785 14634 14635 14636 14637 14638 14639 14640 14641 14712 14713 14714 14715 14717 14718 14719 14753 14754 14782 14783 14785 14637 14638 14639 14640 14641 14715 14716 14718 14719 14782 14783 14785 14715 14716 14717 14719 14720 14721 14722 14782 14783 14785 14786 14788 14637 14638 14639 14640 14641 14642 14643 14644 14715 14716 14717 14718 14720 14721 14722 14782 14783 14785 14786 14788 14640 14641 14642 14643 14644 14718 14719 14721 14722 14785 14786 14788 14718 14719 14720 14722 14723 14724 14725 14785 14786 14788 14789 14791 14640 14641 14642 14643 14644 14645 14646 14647 14718 14719 14720 14721 14723 14724 14725 14785 14786 14788 14789 14791 14643 14644 14645 14646 14647 14721 14722 14724 14725 14788 14789 14791 14721 14722 14723 14725 14726 14728 14729 14788 14789 14791 14792 14795 14643 14644 14645 14646 14647 14648 14650 14651 14721 14722 14723 14724 14726 14728 14729 14788 14789 14791 14792 14795 14646 14647 14648 14650 14651 14724 14725 14728 14729 14791 14792 14795 14728 14729 14730 14731 14795 14796 14797 14724 14725 14726 14727 14729 14730 14731 14791 14792 14795 14796 14797 14646 14647 14648 14649 14650 14651 14652 14653 14724 14725 14726 14727 14728 14730 14731 14791 14792 14795 14796 14797 14649 14650 14651 14652 14653 14727 14728 14729 14731 14795 14796 14797 14649 14650 14651 14652 14653 14727 14728 14729 14730 14795 14796 14797 14680 14681 14682 14687 14688 14733 14734 14735 14736 14756 14757 14799 14654 14655 14656 14657 14658 14659 14660 14661 14680 14681 14682 14687 14688 14732 14734 14735 14736 14756 14757 14799 14657 14658 14659 14660 14661 14732 14733 14735 14736 14756 14757 14799 14732 14733 14734 14736 14737 14738 14739 14756 14757 14799 14800 14802 14657 14658 14659 14660 14661 14662 14663 14664 14732 14733 14734 14735 14737 14738 14739 14756 14757 14799 14800 14802 14660 14661 14662 14663 14664 14735 14736 14738 14739 14799 14800 14802 14735 14736 14737 14739 14740 14741 14742 14799 14800 14802 14803 14805 14660 14661 14662 14663 14664 14665 14666 14667 14735 14736 14737 14738 14740 14741 14742 14799 14800 14802 14803 14805 14663 14664 14665 14666 14667 14738 14739 14741 14742 14802 14803 14805 14738 14739 14740 14742 14743 14744 14745 14802 14803 14805 14806 14808 14663 14664 14665 14666 14667 14668 14669 14670 14738 14739 14740 14741 14743 14744 14745 14802 14803 14805 14806 14808 14666 14667 14668 14669 14670 14741 14742 14744 14745 14805 14806 14808 14741 14742 14743 14745 14746 14748 14749 14805 14806 14808 14809 14812 14666 14667 14668 14669 14670 14671 14673 14674 14741 14742 14743 14744 14746 14748 14749 14805 14806 14808 14809 14812 14669 14670 14671 14673 14674 14744 14745 14748 14749 14808 14809 14812 14748 14749 14750 14751 14812 14813 14814 14744 14745 14746 14747 14749 14750 14751 14808 14809 14812 14813 14814 14669 14670 14671 14672 14673 14674 14675 14676 14744 14745 14746 14747 14748 14750 14751 14808 14809 14812 14813 14814 14672 14673 14674 14675 14676 14747 14748 14749 14751 14812 14813 14814 14672 14673 14674 14675 14676 14747 14748 14749 14750 14812 14813 14814 14683 14684 14685 14690 14691 14753 14754 14759 14760 14781 14782 14816 14677 14678 14679 14683 14684 14685 14690 14691 14712 14713 14714 14715 14716 14752 14754 14759 14760 14781 14782 14816 14712 14713 14714 14715 14716 14752 14753 14759 14760 14781 14782 14816 14686 14687 14688 14693 14694 14756 14757 14762 14763 14798 14799 14819 14680 14681 14682 14686 14687 14688 14693 14694 14732 14733 14734 14735 14736 14755 14757 14762 14763 14798 14799 14819 14732 14733 14734 14735 14736 14755 14756 14762 14763 14798 14799 14819 14689 14690 14691 14695 14696 14759 14760 14764 14765 14815 14816 14822 14683 14684 14685 14689 14690 14691 14695 14696 14752 14753 14754 14758 14760 14764 14765 14781 14782 14815 14816 14822 14752 14753 14754 14758 14759 14764 14765 14781 14782 14815 14816 14822 14692 14693 14694 14699 14700 14762 14763 14768 14769 14818 14819 14825 14686 14687 14688 14692 14693 14694 14699 14700 14755 14756 14757 14761 14763 14768 14769 14798 14799 14818 14819 14825 14755 14756 14757 14761 14762 14768 14769 14798 14799 14818 14819 14825 14758 14759 14760 14765 14766 14770 14771 14815 14816 14822 14823 14828 14689 14690 14691 14695 14696 14697 14701 14702 14758 14759 14760 14764 14766 14770 14771 14815 14816 14822 14823 14828 14695 14696 14697 14701 14702 14764 14765 14770 14771 14822 14823 14828 14698 14699 14700 14705 14706 14768 14769 14774 14775 14824 14825 14831 14692 14693 14694 14698 14699 14700 14705 14706 14761 14762 14763 14767 14769 14774 14775 14818 14819 14824 14825 14831 14761 14762 14763 14767 14768 14774 14775 14818 14819 14824 14825 14831 14764 14765 14766 14771 14772 14776 14777 14822 14823 14828 14829 14834 14695 14696 14697 14701 14702 14703 14707 14708 14764 14765 14766 14770 14772 14776 14777 14822 14823 14828 14829 14834 14701 14702 14703 14707 14708 14770 14771 14776 14777 14828 14829 14834 14704 14705 14706 14710 14711 14774 14775 14779 14780 14830 14831 14836 14698 14699 14700 14704 14705 14706 14710 14711 14767 14768 14769 14773 14775 14779 14780 14824 14825 14830 14831 14836 14767 14768 14769 14773 14774 14779 14780 14824 14825 14830 14831 14836 14770 14771 14772 14777 14778 14779 14780 14828 14829 14834 14835 14836 14701 14702 14703 14707 14708 14709 14710 14711 14770 14771 14772 14776 14778 14779 14780 14828 14829 14834 14835 14836 14707 14708 14709 14710 14711 14776 14777 14779 14780 14834 14835 14836 14704 14705 14706 14707 14708 14709 14710 14711 14773 14774 14775 14776 14777 14778 14780 14830 14831 14834 14835 14836 14773 14774 14775 14776 14777 14778 14779 14830 14831 14834 14835 14836 14752 14753 14754 14759 14760 14782 14783 14784 14785 14816 14817 14839 14712 14713 14714 14715 14716 14717 14718 14719 14752 14753 14754 14759 14760 14781 14783 14784 14785 14816 14817 14839 14715 14716 14717 14718 14719 14781 14782 14784 14785 14816 14817 14839 14781 14782 14783 14785 14786 14787 14788 14816 14817 14839 14840 14842 14715 14716 14717 14718 14719 14720 14721 14722 14781 14782 14783 14784 14786 14787 14788 14816 14817 14839 14840 14842 14718 14719 14720 14721 14722 14784 14785 14787 14788 14839 14840 14842 14784 14785 14786 14788 14789 14790 14791 14839 14840 14842 14843 14845 14718 14719 14720 14721 14722 14723 14724 14725 14784 14785 14786 14787 14789 14790 14791 14839 14840 14842 14843 14845 14721 14722 14723 14724 14725 14787 14788 14790 14791 14842 14843 14845 14787 14788 14789 14791 14792 14794 14795 14842 14843 14845 14846 14849 14721 14722 14723 14724 14725 14726 14728 14729 14787 14788 14789 14790 14792 14794 14795 14842 14843 14845 14846 14849 14724 14725 14726 14728 14729 14790 14791 14794 14795 14845 14846 14849 14794 14795 14796 14797 14849 14850 14851 14790 14791 14792 14793 14795 14796 14797 14845 14846 14849 14850 14851 14724 14725 14726 14727 14728 14729 14730 14731 14790 14791 14792 14793 14794 14796 14797 14845 14846 14849 14850 14851 14727 14728 14729 14730 14731 14793 14794 14795 14797 14849 14850 14851 14727 14728 14729 14730 14731 14793 14794 14795 14796 14849 14850 14851 14755 14756 14757 14762 14763 14799 14800 14801 14802 14819 14820 14853 14732 14733 14734 14735 14736 14737 14738 14739 14755 14756 14757 14762 14763 14798 14800 14801 14802 14819 14820 14853 14735 14736 14737 14738 14739 14798 14799 14801 14802 14819 14820 14853 14798 14799 14800 14802 14803 14804 14805 14819 14820 14853 14854 14856 14735 14736 14737 14738 14739 14740 14741 14742 14798 14799 14800 14801 14803 14804 14805 14819 14820 14853 14854 14856 14738 14739 14740 14741 14742 14801 14802 14804 14805 14853 14854 14856 14801 14802 14803 14805 14806 14807 14808 14853 14854 14856 14857 14859 14738 14739 14740 14741 14742 14743 14744 14745 14801 14802 14803 14804 14806 14807 14808 14853 14854 14856 14857 14859 14741 14742 14743 14744 14745 14804 14805 14807 14808 14856 14857 14859 14804 14805 14806 14808 14809 14811 14812 14856 14857 14859 14860 14863 14741 14742 14743 14744 14745 14746 14748 14749 14804 14805 14806 14807 14809 14811 14812 14856 14857 14859 14860 14863 14744 14745 14746 14748 14749 14807 14808 14811 14812 14859 14860 14863 14811 14812 14813 14814 14863 14864 14865 14807 14808 14809 14810 14812 14813 14814 14859 14860 14863 14864 14865 14744 14745 14746 14747 14748 14749 14750 14751 14807 14808 14809 14810 14811 14813 14814 14859 14860 14863 14864 14865 14747 14748 14749 14750 14751 14810 14811 14812 14814 14863 14864 14865 14747 14748 14749 14750 14751 14810 14811 14812 14813 14863 14864 14865 14758 14759 14760 14764 14765 14816 14817 14821 14822 14838 14839 14867 14752 14753 14754 14758 14759 14760 14764 14765 14781 14782 14783 14784 14785 14815 14817 14821 14822 14838 14839 14867 14781 14782 14783 14784 14785 14815 14816 14821 14822 14838 14839 14867 14761 14762 14763 14768 14769 14819 14820 14825 14826 14852 14853 14870 14755 14756 14757 14761 14762 14763 14768 14769 14798 14799 14800 14801 14802 14818 14820 14825 14826 14852 14853 14870 14798 14799 14800 14801 14802 14818 14819 14825 14826 14852 14853 14870 14815 14816 14817 14822 14823 14827 14828 14838 14839 14867 14868 14873 14758 14759 14760 14764 14765 14766 14770 14771 14815 14816 14817 14821 14823 14827 14828 14838 14839 14867 14868 14873 14764 14765 14766 14770 14771 14821 14822 14827 14828 14867 14868 14873 14767 14768 14769 14774 14775 14825 14826 14831 14832 14869 14870 14876 14761 14762 14763 14767 14768 14769 14774 14775 14818 14819 14820 14824 14826 14831 14832 14852 14853 14869 14870 14876 14818 14819 14820 14824 14825 14831 14832 14852 14853 14869 14870 14876 14821 14822 14823 14828 14829 14833 14834 14867 14868 14873 14874 14879 14764 14765 14766 14770 14771 14772 14776 14777 14821 14822 14823 14827 14829 14833 14834 14867 14868 14873 14874 14879 14770 14771 14772 14776 14777 14827 14828 14833 14834 14873 14874 14879 14773 14774 14775 14779 14780 14831 14832 14836 14837 14875 14876 14881 14767 14768 14769 14773 14774 14775 14779 14780 14824 14825 14826 14830 14832 14836 14837 14869 14870 14875 14876 14881 14824 14825 14826 14830 14831 14836 14837 14869 14870 14875 14876 14881 14827 14828 14829 14834 14835 14836 14837 14873 14874 14879 14880 14881 14770 14771 14772 14776 14777 14778 14779 14780 14827 14828 14829 14833 14835 14836 14837 14873 14874 14879 14880 14881 14776 14777 14778 14779 14780 14833 14834 14836 14837 14879 14880 14881 14773 14774 14775 14776 14777 14778 14779 14780 14830 14831 14832 14833 14834 14835 14837 14875 14876 14879 14880 14881 14830 14831 14832 14833 14834 14835 14836 14875 14876 14879 14880 14881 14815 14816 14817 14821 14822 14839 14840 14841 14842 14866 14867 14884 14781 14782 14783 14784 14785 14786 14787 14788 14815 14816 14817 14821 14822 14838 14840 14841 14842 14866 14867 14884 14784 14785 14786 14787 14788 14838 14839 14841 14842 14866 14867 14884 14838 14839 14840 14842 14843 14844 14845 14866 14867 14883 14884 14887 14784 14785 14786 14787 14788 14789 14790 14791 14838 14839 14840 14841 14843 14844 14845 14866 14867 14883 14884 14887 14787 14788 14789 14790 14791 14841 14842 14844 14845 14883 14884 14887 14841 14842 14843 14845 14846 14848 14849 14883 14884 14886 14887 14892 14787 14788 14789 14790 14791 14792 14794 14795 14841 14842 14843 14844 14846 14848 14849 14883 14884 14886 14887 14892 14790 14791 14792 14794 14795 14844 14845 14848 14849 14886 14887 14892 14848 14849 14850 14851 14890 14891 14892 14844 14845 14846 14847 14849 14850 14851 14886 14887 14890 14891 14892 14790 14791 14792 14793 14794 14795 14796 14797 14844 14845 14846 14847 14848 14850 14851 14886 14887 14890 14891 14892 14793 14794 14795 14796 14797 14847 14848 14849 14851 14890 14891 14892 14793 14794 14795 14796 14797 14847 14848 14849 14850 14890 14891 14892 14818 14819 14820 14825 14826 14853 14854 14855 14856 14870 14871 14895 14798 14799 14800 14801 14802 14803 14804 14805 14818 14819 14820 14825 14826 14852 14854 14855 14856 14870 14871 14895 14801 14802 14803 14804 14805 14852 14853 14855 14856 14870 14871 14895 14852 14853 14854 14856 14857 14858 14859 14870 14871 14895 14896 14898 14801 14802 14803 14804 14805 14806 14807 14808 14852 14853 14854 14855 14857 14858 14859 14870 14871 14895 14896 14898 14804 14805 14806 14807 14808 14855 14856 14858 14859 14895 14896 14898 14855 14856 14857 14859 14860 14862 14863 14895 14896 14898 14899 14902 14804 14805 14806 14807 14808 14809 14811 14812 14855 14856 14857 14858 14860 14862 14863 14895 14896 14898 14899 14902 14807 14808 14809 14811 14812 14858 14859 14862 14863 14898 14899 14902 14862 14863 14864 14865 14902 14903 14904 14858 14859 14860 14861 14863 14864 14865 14898 14899 14902 14903 14904 14807 14808 14809 14810 14811 14812 14813 14814 14858 14859 14860 14861 14862 14864 14865 14898 14899 14902 14903 14904 14810 14811 14812 14813 14814 14861 14862 14863 14865 14902 14903 14904 14810 14811 14812 14813 14814 14861 14862 14863 14864 14902 14903 14904 14838 14839 14840 14841 14842 14867 14868 14872 14873 14884 14885 14906 14815 14816 14817 14821 14822 14823 14827 14828 14838 14839 14840 14841 14842 14866 14868 14872 14873 14884 14885 14906 14821 14822 14823 14827 14828 14866 14867 14872 14873 14884 14885 14906 14824 14825 14826 14831 14832 14870 14871 14876 14877 14894 14895 14909 14818 14819 14820 14824 14825 14826 14831 14832 14852 14853 14854 14855 14856 14869 14871 14876 14877 14894 14895 14909 14852 14853 14854 14855 14856 14869 14870 14876 14877 14894 14895 14909 14866 14867 14868 14873 14874 14878 14879 14884 14885 14906 14907 14912 14821 14822 14823 14827 14828 14829 14833 14834 14866 14867 14868 14872 14874 14878 14879 14884 14885 14906 14907 14912 14827 14828 14829 14833 14834 14872 14873 14878 14879 14906 14907 14912 14830 14831 14832 14836 14837 14876 14877 14881 14882 14908 14909 14914 14824 14825 14826 14830 14831 14832 14836 14837 14869 14870 14871 14875 14877 14881 14882 14894 14895 14908 14909 14914 14869 14870 14871 14875 14876 14881 14882 14894 14895 14908 14909 14914 14872 14873 14874 14879 14880 14881 14882 14906 14907 14912 14913 14914 14827 14828 14829 14833 14834 14835 14836 14837 14872 14873 14874 14878 14880 14881 14882 14906 14907 14912 14913 14914 14833 14834 14835 14836 14837 14878 14879 14881 14882 14912 14913 14914 14830 14831 14832 14833 14834 14835 14836 14837 14875 14876 14877 14878 14879 14880 14882 14908 14909 14912 14913 14914 14875 14876 14877 14878 14879 14880 14881 14908 14909 14912 14913 14914 14841 14842 14843 14844 14845 14884 14885 14887 14888 14905 14906 14917 14838 14839 14840 14841 14842 14843 14844 14845 14866 14867 14868 14872 14873 14883 14885 14887 14888 14905 14906 14917 14866 14867 14868 14872 14873 14883 14884 14887 14888 14905 14906 14917 14844 14845 14846 14848 14849 14887 14888 14892 14893 14916 14917 14922 14841 14842 14843 14844 14845 14846 14848 14849 14883 14884 14885 14886 14888 14892 14893 14905 14906 14916 14917 14922 14883 14884 14885 14886 14887 14892 14893 14905 14906 14916 14917 14922 14890 14891 14892 14893 14920 14921 14922 14847 14848 14849 14850 14851 14889 14891 14892 14893 14920 14921 14922 14847 14848 14849 14850 14851 14889 14890 14892 14893 14920 14921 14922 14844 14845 14846 14847 14848 14849 14850 14851 14886 14887 14888 14889 14890 14891 14893 14916 14917 14920 14921 14922 14886 14887 14888 14889 14890 14891 14892 14916 14917 14920 14921 14922 14869 14870 14871 14876 14877 14895 14896 14897 14898 14909 14910 14925 14852 14853 14854 14855 14856 14857 14858 14859 14869 14870 14871 14876 14877 14894 14896 14897 14898 14909 14910 14925 14855 14856 14857 14858 14859 14894 14895 14897 14898 14909 14910 14925 14894 14895 14896 14898 14899 14901 14902 14909 14910 14925 14926 14929 14855 14856 14857 14858 14859 14860 14862 14863 14894 14895 14896 14897 14899 14901 14902 14909 14910 14925 14926 14929 14858 14859 14860 14862 14863 14897 14898 14901 14902 14925 14926 14929 14901 14902 14903 14904 14929 14930 14931 14897 14898 14899 14900 14902 14903 14904 14925 14926 14929 14930 14931 14858 14859 14860 14861 14862 14863 14864 14865 14897 14898 14899 14900 14901 14903 14904 14925 14926 14929 14930 14931 14861 14862 14863 14864 14865 14900 14901 14902 14904 14929 14930 14931 14861 14862 14863 14864 14865 14900 14901 14902 14903 14929 14930 14931 14883 14884 14885 14887 14888 14906 14907 14911 14912 14917 14918 14933 14866 14867 14868 14872 14873 14874 14878 14879 14883 14884 14885 14887 14888 14905 14907 14911 14912 14917 14918 14933 14872 14873 14874 14878 14879 14905 14906 14911 14912 14917 14918 14933 14875 14876 14877 14881 14882 14909 14910 14914 14915 14924 14925 14935 14869 14870 14871 14875 14876 14877 14881 14882 14894 14895 14896 14897 14898 14908 14910 14914 14915 14924 14925 14935 14894 14895 14896 14897 14898 14908 14909 14914 14915 14924 14925 14935 14905 14906 14907 14912 14913 14914 14915 14917 14918 14933 14934 14935 14872 14873 14874 14878 14879 14880 14881 14882 14905 14906 14907 14911 14913 14914 14915 14917 14918 14933 14934 14935 14878 14879 14880 14881 14882 14911 14912 14914 14915 14933 14934 14935 14875 14876 14877 14878 14879 14880 14881 14882 14908 14909 14910 14911 14912 14913 14915 14924 14925 14933 14934 14935 14908 14909 14910 14911 14912 14913 14914 14924 14925 14933 14934 14935 14886 14887 14888 14892 14893 14917 14918 14922 14923 14932 14933 14940 14883 14884 14885 14886 14887 14888 14892 14893 14905 14906 14907 14911 14912 14916 14918 14922 14923 14932 14933 14940 14905 14906 14907 14911 14912 14916 14917 14922 14923 14932 14933 14940 14920 14921 14922 14923 14938 14939 14940 14889 14890 14891 14892 14893 14919 14921 14922 14923 14938 14939 14940 14889 14890 14891 14892 14893 14919 14920 14922 14923 14938 14939 14940 14886 14887 14888 14889 14890 14891 14892 14893 14916 14917 14918 14919 14920 14921 14923 14932 14933 14938 14939 14940 14916 14917 14918 14919 14920 14921 14922 14932 14933 14938 14939 14940 14908 14909 14910 14914 14915 14925 14926 14928 14929 14935 14936 14941 14894 14895 14896 14897 14898 14899 14901 14902 14908 14909 14910 14914 14915 14924 14926 14928 14929 14935 14936 14941 14897 14898 14899 14901 14902 14924 14925 14928 14929 14935 14936 14941 14928 14929 14930 14931 14941 14942 14943 14924 14925 14926 14927 14929 14930 14931 14935 14936 14941 14942 14943 14897 14898 14899 14900 14901 14902 14903 14904 14924 14925 14926 14927 14928 14930 14931 14935 14936 14941 14942 14943 14900 14901 14902 14903 14904 14927 14928 14929 14931 14941 14942 14943 14900 14901 14902 14903 14904 14927 14928 14929 14930 14941 14942 14943 14916 14917 14918 14922 14923 14933 14934 14935 14936 14940 14941 14944 14905 14906 14907 14911 14912 14913 14914 14915 14916 14917 14918 14922 14923 14932 14934 14935 14936 14940 14941 14944 14911 14912 14913 14914 14915 14932 14933 14935 14936 14940 14941 14944 14908 14909 14910 14911 14912 14913 14914 14915 14924 14925 14926 14928 14929 14932 14933 14934 14936 14940 14941 14944 14924 14925 14926 14928 14929 14932 14933 14934 14935 14940 14941 14944 14938 14939 14940 14941 14942 14943 14944 14919 14920 14921 14922 14923 14937 14939 14940 14941 14942 14943 14944 14919 14920 14921 14922 14923 14937 14938 14940 14941 14942 14943 14944 14916 14917 14918 14919 14920 14921 14922 14923 14932 14933 14934 14935 14936 14937 14938 14939 14941 14942 14943 14944 14924 14925 14926 14927 14928 14929 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14942 14943 14944 14927 14928 14929 14930 14931 14937 14938 14939 14940 14941 14943 14944 14927 14928 14929 14930 14931 14937 14938 14939 14940 14941 14942 14944 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 metis-edf-4.1/Test/fort.81.iperm.ref0000644000372500037370000023133211115455203017460 0ustar courtoisastergrp1475 1450 1445 1457 1444 1474 1476 1496 1516 1508 1442 1517 1518 1430 1425 1864 1874 1647 1871 1693 1451 1440 1449 1427 1486 1438 1447 1859 1646 1664 1875 1700 1638 1428 1439 1448 1443 1446 1456 1487 1488 1490 1497 1470 1498 1513 1515 1469 1519 1521 1468 1455 1522 1523 1437 1454 1503 1660 1872 1651 1672 1710 1666 1694 1692 1729 1682 1722 1684 1709 1711 1681 1715 1734 1735 1736 1680 1723 1737 1738 1679 1739 1597 1577 1559 1591 1869 1753 1878 1854 1545 1637 1639 1426 1862 1870 1751 1750 1853 1855 1650 1645 1685 1683 1671 1592 1564 1543 1590 1607 1630 1505 1635 1436 1462 1506 1507 1478 1494 1512 1467 1514 1502 1499 1504 1466 1509 1524 1525 1461 1435 1520 1500 1492 1501 1465 1569 1615 1614 1568 1600 1616 1720 1719 1659 1677 1730 1731 1670 1712 1728 1675 1733 1740 1702 1696 1732 657 1658 1689 1938 1713 1699 1714 1690 1716 1657 1717 1676 1741 1669 1742 1721 1704 1724 1725 1678 1718 1743 1707 1599 1563 1617 1618 1553 1857 1596 1542 1598 1574 1575 1536 1573 1533 1761 1771 1772 1773 1876 1866 1777 1779 1795 1856 1849 1759 1850 1762 1649 1937 482 1935 910 14435 14449 14452 14422 14410 14391 14395 14407 14488 14416 14450 14448 14409 14680 14454 14469 14487 14489 14431 14470 14430 14459 14471 14415 14414 14403 14484 14443 14461 14460 14462 14423 14402 14444 14442 14601 1606 1561 1541 1608 1547 1641 1479 1634 1434 1460 1477 1495 1458 1484 1489 1493 1464 1526 1463 1527 1510 1481 1511 1459 1433 1491 1482 1480 1588 1594 1603 1567 1604 1605 1620 1610 1621 1619 1582 1622 1623 1566 13531 14691 13536 13553 1667 1701 1656 1934 671 704 1933 1655 1932 656 1930 1662 1697 1695 672 679 705 703 718 726 477 680 912 915 1674 1665 1691 1644 1668 1708 1706 1654 1749 1858 1851 1703 1653 1687 1705 1698 1673 1726 1727 1576 1558 1589 1587 1540 1806 1877 1748 1873 1861 1783 1807 1808 1770 1766 1835 1868 1860 1796 1758 1832 1863 1757 1778 1780 1769 1794 1781 1929 624 596 1928 498 527 547 548 546 1571 2995 2993 3707 3867 3633 14412 14432 14401 14453 14400 14433 14434 14451 14610 14523 14542 14603 14558 14405 13527 14687 14689 14413 14411 14393 13558 13554 13559 13557 14609 14522 13566 13594 13569 13589 3727 3124 2956 2888 3119 2879 2877 3120 3126 3649 3797 3632 3863 3831 14429 14493 14492 14494 14428 14495 14463 14485 14486 14427 14477 14496 14497 14464 14421 14483 14399 14426 14465 14457 14480 14417 14481 14482 14404 14604 14505 14607 14559 14533 14539 14557 14527 14534 1552 1581 1532 1583 1432 1631 1632 1472 1441 1473 1471 1483 1485 1453 1431 1528 1551 1593 1595 1539 1902 1113 1624 1555 1557 1625 1626 1585 1602 1565 1627 1611 1579 1601 1609 1628 1629 1560 5678 5319 5365 5370 5438 5405 5390 5298 5353 13588 13556 13545 13580 13581 13590 13726 13544 13552 13595 13596 1652 1661 1642 758 757 752 759 1927 673 1925 746 698 751 753 697 668 725 727 696 734 747 745 504 905 919 735 1910 501 1923 494 1663 1919 1922 476 1572 1836 1848 1852 1688 1648 1686 1643 1535 1531 1570 1544 1756 1867 1765 1865 1813 1789 1837 1819 1838 1786 1814 1812 1787 1826 1793 1825 1827 1839 1821 1834 1790 1833 1831 530 595 513 625 623 605 606 607 553 475 552 512 554 1900 1078 1899 1108 1090 1109 1114 1115 1071 3788 3798 3662 3799 3708 3687 3682 3709 3650 3635 3786 3789 3680 3743 3679 3790 3010 3043 3117 3005 3024 3025 3016 3023 3059 3683 3849 3862 3623 3681 3634 3620 3902 3021 3015 3084 3121 2992 3022 3020 2876 3003 14569 14606 14595 14605 14517 14589 14611 14516 14576 14567 14577 14575 14546 14568 14515 14566 14615 13601 14685 14688 14504 13600 13565 13602 13543 14551 14541 14550 14552 14553 14570 14571 14526 13633 13625 13663 13727 13729 13604 13542 13564 13597 13605 13606 13568 13607 13608 13652 13666 5109 5397 5664 5665 5398 5396 5318 5399 5400 5374 5422 5423 5424 5331 5439 5440 5389 5406 5407 5382 5391 5330 5297 5308 5307 5383 5381 5219 5162 5174 5175 5176 3728 3721 3726 3657 3736 3757 3791 3792 3678 3744 3077 3018 3014 3118 2940 2892 3004 3113 2875 3114 2909 2941 2910 2893 2939 2977 2886 3125 2914 2955 2949 2907 2957 2924 2885 2925 2923 3856 3642 3855 1116 14472 14455 14437 14498 14473 14440 14467 14474 14425 14466 14490 14499 14424 14478 14479 14446 14420 14447 14445 14456 14398 14630 14220 14294 14631 14377 14408 14438 14392 14436 14608 14519 14602 14507 14503 14532 14219 14628 14627 1546 1429 1636 1633 1424 1452 1135 1098 1548 1897 1896 1136 1134 1077 1530 1556 1550 1554 1562 1586 1538 1584 1549 1612 1613 1537 1580 1578 14245 5156 5141 5177 5173 5670 5671 5296 5342 5343 5341 5366 5367 5329 5371 5369 5328 5441 5442 5404 5379 5408 5327 5392 5393 5334 5295 5312 5354 5355 5352 13685 13632 13530 13555 13535 13665 13624 13650 13667 13651 13615 13614 13649 13533 13722 13728 764 661 1920 659 763 695 765 773 770 769 694 771 777 677 778 779 684 660 655 736 669 890 789 911 913 562 511 563 564 1924 497 1917 636 1197 961 1894 1893 1804 1909 1904 481 958 1887 1886 1747 1755 1805 1803 1788 1801 1768 1800 1802 1823 1841 1842 1843 1820 1840 1844 1845 1846 1792 637 640 627 641 642 545 643 544 644 645 510 646 647 788 903 609 921 3053 3394 1129 1066 1092 1107 1081 1130 1089 1128 1194 1019 1046 1196 972 3904 2483 2477 3895 2450 3800 3735 3699 3801 3660 3700 3631 3698 3897 2503 2439 3901 3753 3780 3793 3722 3794 3677 3760 3785 3787 3676 3802 3675 3803 2476 2438 2456 2478 2473 3027 3028 3044 3045 3060 3002 3031 3058 3008 3865 3864 2991 3884 3893 2445 3085 3070 3086 3064 3075 3083 3073 3013 3087 3112 3123 3101 3056 3115 3001 3036 3057 3037 3055 3078 3071 3026 3079 3054 3035 3000 3052 2460 14582 14594 14596 14547 14590 14579 14581 14588 14545 14580 14514 14578 14612 14218 14333 14616 14243 14295 14285 14293 13609 14682 14686 14521 13598 13563 13603 13541 14502 14561 14560 14562 14549 14583 14525 14584 13664 13642 13662 13623 13673 13719 13731 13583 13540 13562 13582 13584 13592 13599 13586 13668 13686 13702 13703 13701 13671 13622 13684 13641 5245 5240 5246 5247 5216 5248 5249 5161 5294 5661 5660 5338 5339 5340 5410 5409 5411 5326 5425 5426 5416 5443 5437 5417 5418 5325 5428 5429 5430 5293 5431 5432 5433 5348 5225 5129 5169 5224 5226 5250 5251 5252 5228 5253 5166 5220 5218 5229 5230 5231 3619 3758 3648 3759 3696 3630 3661 3697 3695 3705 3745 3674 3746 3752 3739 3673 3754 3145 3157 3176 2994 3019 2990 3017 3398 3397 3190 3143 3116 2931 2898 2932 2930 2953 3122 2891 2946 2978 2948 2979 2980 2971 2962 2981 2919 2961 2958 2918 2963 2950 2897 2945 2951 2942 3853 3852 1140 1149 1154 1155 1106 1156 14419 14475 14476 14397 14418 14441 14439 14396 14458 14468 14406 14491 14394 14378 14265 14320 14379 14244 14291 14284 14292 14242 14290 14217 14621 14622 1529 1640 1534 1143 1144 1142 1088 1138 1084 1892 1891 1882 1890 1070 1888 1889 1065 14372 14360 14264 14380 14381 14324 5160 5232 5227 5140 5117 5142 5096 5650 5675 5357 5283 5356 5358 5304 5368 5364 5292 5372 5373 5444 5445 5317 5291 5380 5378 5394 5395 5313 5281 5285 5314 5302 5301 13705 13745 13490 13348 13735 13744 13398 13739 13750 13329 13523 13532 13528 13410 13354 13436 13409 13736 13751 13741 13738 13328 772 693 767 774 754 749 721 685 755 756 775 667 738 814 707 692 776 780 682 708 666 706 889 787 893 891 802 847 798 894 815 809 813 521 526 638 597 474 522 520 509 994 1004 1005 1003 1918 1764 1824 1911 976 1880 1885 1829 1785 1815 1818 1822 1754 1816 1828 1830 1847 1791 621 543 648 603 649 634 626 633 635 610 629 542 650 493 538 598 608 839 899 618 904 3133 3177 3142 3175 7571 4901 3062 3379 3131 3399 1173 1174 1076 1097 1175 1188 975 1190 969 996 1020 1018 984 1051 1050 1052 1010 2461 2482 2479 2484 2459 2480 2437 2481 3763 3764 3629 3762 3898 2444 2436 3890 2455 2504 2485 2502 3775 3781 3672 3742 3671 3782 3776 3769 3795 3796 3670 3804 3805 3806 3669 3738 3647 3807 3641 3656 3693 2474 2471 2468 2475 2435 2426 2470 2472 2452 3050 3065 3042 3066 3032 3051 3049 3009 3885 3877 2827 3067 3074 3041 3076 3089 3081 3094 3095 3096 3040 3102 3103 3104 3105 3092 3106 3039 3091 3063 3093 3030 3007 2989 3061 2625 2611 2586 2542 2614 2552 14591 14597 14585 14598 14544 14599 14513 14600 14617 14216 14224 14623 14238 14332 14302 14334 14263 14325 14361 14362 13587 13547 14683 14669 13579 13576 13585 13567 13526 14677 14670 14592 14512 14573 14593 14548 13674 13640 13672 13621 13706 13725 13732 13593 13539 13591 13561 13707 13648 13689 13708 13709 13710 13704 13711 13647 13688 13639 13620 13712 5254 5171 4900 5273 5128 5165 5255 5256 5215 5241 5242 5193 5217 5164 5108 5194 5195 5412 5655 5652 5413 5414 5316 5324 5415 5401 5446 5447 5448 5427 5449 5323 5434 5435 5420 5322 5436 5385 5290 5306 5305 5349 5347 5190 5203 5257 5213 5258 5127 5259 5235 5212 5126 5236 5237 5163 5233 5222 5223 5221 5107 3733 3829 3814 3822 3492 2884 2890 3851 3850 2874 3845 3618 3706 3847 3622 3636 3651 3704 3755 3628 3659 3756 3646 3783 3784 3617 3694 3692 3818 3534 3595 3505 3827 5189 5125 3198 5274 7570 7546 5090 5102 5137 5271 5115 5139 5145 5151 3166 3179 3191 3189 3199 3141 3165 3200 3201 3232 3233 3140 3231 3164 3393 2873 3381 2903 2896 2904 2902 2906 2954 2952 2934 2974 2982 2917 2983 2970 2968 2972 2916 2967 2964 2915 2969 2959 2937 2943 2960 2926 2921 2944 1105 1148 1137 1150 1160 1167 1166 1168 1104 1172 1163 1169 1176 1103 14297 14208 14614 14629 14613 14202 14262 14373 14321 14344 14374 14310 14322 14261 14323 14288 14319 14298 14226 14283 14296 1068 1884 1079 1102 1132 1111 1139 1112 1110 1101 14309 14382 14383 14260 14384 14259 14308 14326 14258 14353 14349 14376 14367 5683 5686 5708 4023 5705 5707 3968 5709 5704 4035 5702 5691 3967 5699 5701 4012 5696 5698 4441 5693 5695 4328 5687 5692 4357 5681 5680 4327 5685 5710 4362 4314 5703 5684 5690 4318 13660 13743 13422 13344 13742 13365 13453 13491 13357 13492 13437 13412 13435 13353 13397 13399 13468 13469 13467 13389 13483 13444 13482 13417 13403 13484 13349 13332 13737 13345 13411 766 691 760 768 748 690 728 737 739 689 741 731 750 729 683 740 665 688 730 720 819 840 823 797 838 676 781 664 782 886 801 831 895 811 818 832 833 849 850 851 830 1746 594 532 622 620 1913 1921 503 1810 983 1009 1011 957 1775 1782 1811 1809 1898 1763 1901 1784 1817 1798 569 541 604 557 602 540 651 614 652 630 611 628 631 619 600 539 632 492 537 593 617 800 901 591 907 7568 4921 4909 7566 4923 4920 4924 4922 7558 7429 4899 7563 1054 1164 1087 1158 1165 1120 1184 1198 956 1027 982 1028 1029 981 1055 1056 1057 1002 1058 1059 2497 2498 2434 2496 2619 2545 2540 2620 3808 3882 2425 3886 2490 2449 2491 2492 2508 2509 2448 2510 3720 3766 3777 3778 3668 3741 3667 3779 3770 3740 3761 3771 3666 3748 3809 3810 3653 3638 3616 3811 3627 3658 3734 3732 2469 2615 2534 2532 2618 2441 2428 2467 2424 2633 2637 2825 2831 3012 2988 3068 3069 3883 3879 2717 3090 2999 3034 3088 3082 2998 3033 3072 3080 3107 3038 3108 3109 3047 3097 3110 3011 3098 2997 3099 7562 6780 6778 7561 2564 2565 2539 2563 2600 2555 2591 2590 2592 2559 2601 2550 2602 14572 14586 14543 14587 14511 14206 14626 14624 14277 14278 14232 14279 14328 14327 14257 14329 14311 14350 14363 14364 13574 13560 13575 13573 13577 13538 13578 13571 13551 14674 14678 14540 14510 14564 14555 14574 13670 13636 13713 13619 13628 13724 13733 13682 13676 13714 13646 13715 13716 13690 13693 13717 13645 13694 13661 13695 13635 13627 13613 13659 13740 5124 5153 5184 5123 5191 5170 5172 5159 5089 5148 5149 5147 5150 5152 5106 5067 4956 5261 5275 4919 5105 5239 5260 5244 5187 5243 5104 5188 5186 5143 5192 5196 5095 5289 5651 5667 5335 5336 5337 5402 5403 5360 5450 5451 5321 5419 5452 5453 5320 5421 5376 5350 5386 5387 5288 5333 5332 5351 5309 5197 5167 5122 5204 5205 5168 5214 5208 5121 5209 5157 5134 5207 5114 5238 5234 5101 5689 5682 3975 1157 1152 1121 1141 1159 3724 3543 3583 3812 3640 3813 3521 3513 3542 3544 2905 2895 2922 2920 2900 3841 3494 3820 3843 3548 3501 3816 3826 3560 3500 3825 3817 3574 3499 3830 3516 3535 3512 3533 3588 3585 3596 3597 5120 5198 5199 5119 3218 5092 7538 7560 5098 5138 5111 5136 5131 5146 5144 3219 3229 3230 3228 3203 3139 3163 3217 3171 3221 3234 3204 3235 3215 3151 3216 3214 3206 3391 2935 3396 2883 2913 2933 2975 2882 2908 2947 2973 2928 2976 2984 2894 2985 2881 2912 2986 2965 2880 2911 2966 2936 2901 2938 1131 1096 1161 1162 1075 1178 1094 1179 1177 1123 1180 1181 1100 1170 1171 1099 14371 14267 14266 14215 14256 14307 14375 14255 14343 14345 14254 14234 14289 14287 1085 1072 1067 1118 1117 1133 14253 14385 14306 14386 14354 14316 14286 14355 14338 14252 14305 14351 14251 14250 14368 14369 14335 3958 4007 4008 4009 4022 4024 4018 4026 4025 4027 4029 4036 4037 4013 4028 4030 3957 4011 4004 4316 4450 4449 4336 4337 4338 4358 4359 4347 4350 4356 4360 4343 4361 4363 4326 4332 4331 4342 4344 13406 13503 13343 13749 13364 13415 13423 13421 13452 13445 13388 13454 13493 13446 13494 13387 13485 13386 13486 13471 13472 13385 13473 13470 13384 13363 13487 13488 13342 13416 13425 722 678 761 762 701 716 713 723 724 687 732 733 686 742 743 710 681 711 709 719 663 786 855 856 845 857 808 844 846 829 670 896 785 887 812 807 810 862 863 864 861 865 806 473 1908 1760 1916 570 568 508 1752 1776 1767 1774 1012 1883 1895 1745 1799 1797 558 524 523 514 556 536 615 491 616 535 639 490 653 599 612 489 613 592 588 507 601 488 534 586 590 902 502 584 908 4939 4940 4925 4941 4942 4964 5068 5069 6825 7501 4911 7500 968 989 1013 1014 992 1091 1080 1069 1119 1064 1192 1043 1187 1060 1022 980 1048 1061 1001 1053 1047 2521 2621 2531 2612 2570 2549 2571 2572 3878 2522 2515 3880 2447 2514 2463 2516 2520 2458 2433 2523 3725 3730 3767 3765 3665 3772 3664 3773 3747 3749 3750 3645 3737 3626 3751 3906 2443 2432 3869 3655 3713 3719 3723 3690 2826 2821 2720 2829 2803 2830 2649 2823 2655 2651 2790 2828 2648 2669 2718 2680 2647 2716 2741 3872 3871 2646 2765 3891 3876 2645 2714 3870 3100 3889 2996 3029 3111 3006 2987 3046 3048 7556 6849 6790 7554 6803 6826 6788 6824 2632 2594 2819 2822 2538 2595 2585 2554 2593 2577 2580 2597 2596 2598 2558 2599 2588 2603 13352 13341 13391 13393 13407 13408 14538 14565 14535 14563 14509 14330 14618 14620 14214 14301 14237 14331 14275 14249 14312 14313 14299 14365 14269 14359 13572 13549 13570 13537 13612 13730 13720 13546 13548 14520 14671 14675 14501 14524 14554 14556 13669 13637 13683 13681 13657 13644 13677 13675 13678 13698 13643 13718 13687 13654 13691 13692 13631 13696 13618 13697 13390 13747 13734 5154 5088 5099 5112 5155 5183 5185 5094 4908 4959 5269 5270 4957 4951 4929 4955 4938 5070 5007 5071 4980 5266 5267 5268 4907 5272 5279 4954 5264 5263 4918 5262 5278 4999 5361 5659 5654 5362 5359 5282 5345 5363 5303 5346 5344 5287 5315 5454 5455 5377 5375 5286 5310 5388 5384 5280 5300 5299 5311 5284 5179 5118 5180 5181 5182 5206 5202 5110 5103 5210 5211 5135 5133 5087 5697 4015 3998 5700 1151 1146 1126 1153 1095 1147 1074 1145 1185 3615 3691 3644 3689 3582 3577 3515 3498 3584 3821 3828 3565 3529 3589 3528 3590 2887 2878 2872 2899 3390 3257 3840 3491 3842 3502 3549 3518 3547 3553 3559 3517 3561 3563 3575 3573 3568 3586 3527 3587 3591 3598 3599 5113 5200 5116 5093 5201 3184 5132 7528 7551 5086 5130 5100 3185 3236 3237 3238 3138 3162 3183 3170 3222 3239 3169 3240 3241 3209 3207 3242 3202 3158 3137 3205 3146 3382 3383 3130 3370 3400 2889 3388 2871 2927 2929 3392 3348 3329 3401 3380 3263 3268 3395 3387 3254 3386 3385 1420 1300 1307 1421 1407 1289 1419 1418 1083 1063 1124 1122 1086 1182 1093 1073 1183 14248 14347 14387 14388 14225 14233 14207 14389 14241 14390 1291 1410 1329 14247 14348 14356 14357 14246 14317 14281 14318 14303 14339 14336 14340 14272 14231 14366 14370 14230 14236 14300 14337 14213 3966 4016 4014 4002 4010 4019 4020 4032 4033 4031 4038 4039 3965 4005 4040 4034 3974 4006 3956 4388 4451 4444 4389 4390 4349 4391 4392 4380 4382 4393 4387 4381 4383 4355 4325 4410 4411 4412 4413 13476 13443 13504 13505 13383 13506 13382 13507 13511 13442 13512 13513 13381 13514 13441 13380 13515 13424 13418 13426 13379 13427 13474 13459 13362 13340 13489 13419 13414 13420 13378 675 654 702 700 699 717 715 662 674 714 712 744 658 566 472 906 877 900 866 805 870 871 872 828 878 879 825 880 796 897 885 496 974 1744 1907 1905 1879 1881 480 471 515 516 946 337 945 944 943 408 353 942 941 376 345 940 589 939 339 938 583 533 487 587 531 578 581 585 567 565 506 575 576 555 550 574 486 4898 4946 4947 4948 4981 4979 4917 4982 6843 6901 7499 7498 955 979 990 988 1023 999 1021 967 971 993 1189 1193 966 1037 1186 965 1045 998 1039 1044 1042 1049 978 1016 3711 2518 2624 2581 2617 2537 2556 2579 2454 2512 2524 2525 2462 2517 2526 2511 2457 2431 2519 3663 3716 3729 3731 3654 3768 3774 3639 3888 2423 3900 2487 2446 2488 2489 3712 3702 3714 3715 3688 3685 3710 3625 2725 2673 2726 2727 2670 2663 2721 2681 2719 2804 2805 2768 2734 2791 2774 2792 2696 2761 2775 2733 2776 2742 2679 2740 2764 2751 2678 2766 2715 2672 2654 2636 2713 2631 3868 3887 7550 6792 6787 7548 6805 6848 6834 6850 6823 6842 6801 6844 2652 2544 2820 2833 2638 2530 2548 2576 2578 2567 2557 2589 2568 2587 2553 2543 2529 2569 2605 2547 2606 2607 2583 2574 2604 2608 13432 13377 13477 13376 13478 13448 13331 13347 13339 13356 13392 13351 13449 13450 14536 14531 14529 14537 14508 14223 14625 14619 14205 14229 14274 14276 14314 14235 14212 14315 14221 14268 14204 14270 13529 13534 13550 13525 13629 13721 13723 13524 13775 14663 12911 14672 12908 14518 14665 14679 13611 13658 13630 13656 13679 13617 13638 13680 13699 13616 13634 13700 13626 13610 13653 13655 13327 13746 13748 4906 5059 5277 5276 5020 5265 4905 4960 4950 4928 4958 5006 4937 4978 4936 5008 4935 5064 5072 5073 4904 4926 4965 4983 4910 4927 5021 5019 4988 4986 5022 5023 4987 4985 4975 4903 5000 5001 5634 5658 5656 5636 5643 5474 5632 5647 5534 5633 5645 5473 5637 5646 5610 5639 5642 5472 5641 5638 5523 5457 5635 5640 5644 5461 5158 5097 5091 5178 5085 5706 3955 3992 5688 3973 3997 3994 3999 1082 1127 1062 1125 1191 960 954 1195 977 991 1017 1015 986 3497 3815 3819 3531 3490 3576 3571 3566 3578 3562 3551 3514 3564 3526 3600 3525 3594 3301 3283 3266 3389 3281 3282 3253 3280 3839 3504 3520 3836 3540 3554 3524 3555 3569 3523 3567 3579 3537 3592 3593 7468 7205 7448 7250 7451 7176 7472 7442 3243 7547 7553 7175 7206 3136 3161 3223 3244 3196 3187 3220 3168 3224 3225 3211 3167 3245 3208 3193 3181 3210 3159 3182 3180 3148 3374 3256 3252 3371 3324 3262 3384 3295 3347 3342 3279 3349 3330 3316 3302 3331 3287 3285 3300 1302 1303 1313 1330 1331 1417 1333 1312 1334 1332 1409 1368 1335 1299 1383 1415 1413 1298 1412 1365 1422 14240 14211 14304 14346 14647 14649 13982 1284 1301 1292 14239 14210 14358 14352 14228 14341 14342 14227 14282 14280 14209 14271 14222 14273 14203 14633 13896 14642 14648 14643 13906 14639 13940 3964 4003 4001 4000 4021 4017 3954 4174 4173 4179 4171 4175 4048 4167 4172 4073 4177 4169 4056 4324 4446 4440 4367 4368 4369 4398 4397 4399 4414 4415 4416 4417 4418 4354 4323 4346 4345 4419 4405 13464 13440 13465 13466 13375 13516 13374 13517 13518 13519 13520 13373 13462 13508 13372 13521 13458 13430 13371 13460 13428 13401 13429 13361 13338 13413 13402 13400 859 791 898 888 892 783 916 841 917 795 824 881 873 882 883 876 827 874 853 884 860 804 848 858 794 948 336 1906 1912 393 428 352 950 365 394 357 392 377 385 409 407 335 347 359 375 580 495 934 933 579 525 518 582 560 577 572 549 834 920 909 483 528 500 499 573 571 529 551 485 6786 6791 7497 7496 7495 7494 6777 6929 6902 6835 6804 6900 6909 402 1926 1914 351 334 1040 1915 1931 1036 1025 1030 1031 1032 1038 1000 964 1033 1041 1007 2053 3939 1026 963 1024 997 3684 3614 3824 3823 3896 2074 2494 2622 2582 2616 2500 2506 2495 2513 2453 2430 2493 2486 3643 3717 3613 3718 3874 2501 3875 2429 2465 2499 3621 3703 3624 3701 3652 3686 3637 2705 2662 2706 2704 2736 2769 2767 2732 2773 2695 2806 2807 2694 2789 2762 2793 2784 2693 2755 2692 2763 2777 2691 2778 2756 2690 2757 2758 2750 2676 2759 2644 2760 7544 6776 7542 6827 6800 6828 6829 6833 6866 6867 6868 6910 6911 6822 2747 2634 2832 2626 2824 2867 2863 1947 2864 2843 2837 1946 2846 1962 2870 2012 2003 2859 2546 2609 2536 2610 2862 1960 1956 2855 2535 2561 2566 2584 2551 2575 2573 1967 13395 13447 13433 13451 13355 13370 13479 13480 13369 13346 13330 13326 13396 13394 13752 12924 12977 13766 13765 13764 13763 12910 14506 14530 14500 14528 14641 14636 13787 14651 13799 14634 13846 14638 13797 14652 13802 14637 13784 13892 13974 14635 13762 12926 13009 13761 13760 12991 13758 12923 12947 12948 12939 12946 13000 14656 12925 14666 12922 13015 13022 13776 13755 12921 13059 13767 13757 12920 13031 13756 13778 13005 13769 12919 5058 5037 4949 5060 5061 4977 4934 5062 5074 5075 4933 5076 4932 4976 4931 5077 5063 4944 5002 4930 5065 4897 4943 4916 4945 6846 6870 7490 7489 6799 5030 5029 5031 5013 5032 5033 5014 5015 4974 4953 5016 5017 5459 5653 5677 5485 5486 5487 5501 5533 5535 5556 5557 5555 5500 5611 5612 5524 5525 5526 5495 5522 5516 5471 5478 5477 5494 5496 5679 3953 3960 5694 7257 3951 7458 7440 3970 3993 3989 3991 3990 3995 3972 3996 1297 1416 1306 1408 1288 970 1414 1423 2050 3930 987 3941 959 985 953 3532 3506 3530 3507 3496 3905 3873 3570 3556 3522 3572 3546 3552 3550 3511 3601 3510 3602 3278 3284 3261 3286 3835 3413 3609 3489 3833 3541 3509 3539 3580 3519 3581 3503 3488 3538 3536 7195 7248 7249 7230 7247 7251 7252 7231 7204 3195 7540 7549 7253 7256 7258 7243 3135 3173 3178 3197 3156 3188 3134 3160 3186 3226 3153 3155 3227 3150 3212 3149 3213 3194 3129 3192 3366 3271 3360 3265 3372 3289 3325 3323 3353 3354 3299 3355 3341 3318 3336 3343 3292 3337 3335 1401 1320 1259 1202 1405 1402 1336 1337 1296 1361 1367 1369 1322 1357 1311 1362 1363 1328 1380 1321 1384 1385 1366 1316 1356 1364 14644 13987 14033 14650 14001 14000 13995 1204 1396 1213 14632 13998 13994 14055 14653 14646 14187 14640 13985 13891 13903 14645 13934 13912 13910 13913 13911 13923 13914 13939 13941 3962 4166 4180 4163 4176 4178 4047 4076 4160 4069 4070 4075 4077 4066 4072 4074 4046 4067 4068 4400 4442 4452 4401 4402 4348 4353 4403 4394 4385 4420 4421 4386 4384 4352 4322 4335 4334 4406 4407 13481 13496 13497 13498 13439 13522 13368 13367 13438 13463 13461 13360 13509 13502 13337 13431 821 820 793 835 837 842 843 867 875 826 817 854 852 784 799 836 822 363 364 403 401 413 423 429 427 399 414 371 415 400 344 368 398 479 926 444 928 505 519 470 517 561 559 484 478 914 469 918 949 951 238 242 937 930 275 310 298 925 923 927 237 6908 6930 6798 6931 6847 6845 6837 6821 6865 6820 6912 6918 6919 6819 6920 6864 6877 390 356 391 389 431 1006 1939 1936 952 1034 962 1035 995 1008 973 2062 2075 2073 2065 2076 3937 3932 2091 3899 3892 2068 2442 2613 2562 2623 2451 2505 2422 2507 2049 2440 2427 2466 2464 2421 3881 3903 3894 2839 2748 2677 2746 2643 2735 2799 2800 2801 2808 2809 2689 2754 2810 2811 2688 2812 2687 2795 2686 2813 2752 2785 2786 2685 2787 2711 2788 2675 2712 2642 2710 7537 6840 7536 6785 6809 6841 6839 6818 6921 6922 2814 1949 2866 2845 1957 1988 1971 2844 1945 1969 1970 1968 2406 1973 1989 1975 1987 1994 2004 1996 2005 1978 2013 2009 2011 2541 2858 1944 2869 2000 1966 2001 2002 2528 2533 2527 2560 2018 2024 2023 1986 2025 13772 13200 13754 13336 13759 13456 13358 13457 13455 13366 13475 13434 13212 13260 13770 13214 13773 13198 13266 13318 13771 12907 12959 13006 12980 12978 13007 12929 12979 12953 12909 13783 14664 14662 13812 13813 13807 13811 13815 13818 13847 13845 13840 13839 13806 13841 13858 13931 13976 13975 12944 12963 12992 12962 12990 13010 13008 12951 13001 12999 12950 12938 12906 12945 12943 13011 13014 12937 13016 13017 13023 12961 13021 13060 13020 12960 13058 13018 13030 13032 13025 4973 5038 5036 5045 5046 5044 5049 5078 5066 4972 5079 5080 5039 5081 5082 4967 5083 5084 7488 7487 6784 6852 6869 6871 6878 6879 6863 5010 5034 5035 5011 5009 4971 4915 5018 5012 5489 5673 5662 5490 5488 5479 5564 5565 5566 5513 5567 5563 5582 5613 5614 5550 5583 5581 5551 5549 5512 5470 5586 5587 5588 5589 3980 3981 3971 3979 7263 3961 7444 7459 3986 3983 3977 3988 3969 3950 3984 3982 1348 1347 1310 1349 1339 1406 1287 1411 3920 3918 3493 3487 3545 3607 3508 3495 3557 3558 3612 3409 3606 3605 3425 3270 3859 3408 3834 3432 3431 3422 3433 3476 3608 3603 3446 3604 3417 7194 7356 7259 7242 7262 7264 7215 7254 7174 7255 7534 3174 7507 7260 7261 7214 3132 3128 3144 3172 3373 3269 3307 3377 3376 3251 3369 3147 3375 3127 3154 3152 3368 3250 3367 3321 3277 3322 3293 3320 3361 3298 3362 3359 3363 3276 3364 3319 3249 3317 1216 1252 1258 1260 1227 1247 1226 1248 1246 1212 1398 1397 1345 1327 1379 1373 1381 1326 1295 1319 1344 1346 1374 1375 1386 1359 1377 1382 1325 1340 1360 1358 14013 14051 14005 14034 14032 14049 14048 13993 1199 1205 1241 1242 14024 14025 14008 14023 14039 14056 14054 14068 14063 14021 13895 14196 14199 13905 13935 13933 13916 13902 13922 13930 13932 13946 13945 13947 13926 4161 4132 4165 4107 4133 4134 4116 4131 4135 4126 4121 4136 4137 4122 4123 4119 4124 4120 4079 4321 4443 4455 4364 4365 4366 4395 4396 4374 4422 4423 4351 4404 4424 4425 4320 4379 4378 4408 4339 13499 13359 13500 13405 13335 13510 803 816 790 868 792 869 947 936 9 932 432 425 433 434 419 435 370 436 420 343 367 421 230 232 448 449 935 236 279 924 292 929 235 229 5 452 922 271 311 301 309 251 276 267 277 262 250 263 261 299 300 281 6928 6893 6817 6932 6940 6941 6816 6942 6815 6943 6861 6944 6814 6934 6913 6945 6946 6813 6888 6889 6887 342 422 360 430 348 1903 1940 333 3943 2067 2061 3946 2078 2092 2093 2080 2098 2097 2099 2072 2834 2048 2853 2850 2118 2064 2136 2842 2849 2848 2060 2641 2815 2749 2816 2671 2802 2817 2684 2780 2753 2818 2683 2770 2744 2738 2771 2772 2794 2796 2682 2737 2661 2797 2640 2798 7532 6793 6935 7531 6854 6936 6806 2259 2835 2653 2865 1961 1965 1974 1972 1943 2414 2256 2420 2287 2286 2271 2288 2029 1995 1981 1955 1993 2030 2031 1964 2007 2017 1985 2019 2854 2142 2008 2841 1954 1980 2006 2052 2047 2852 2035 2036 1984 2037 2038 2033 1983 2039 13235 13197 13221 13236 13234 13334 13768 13779 13350 13501 13495 13245 13261 13262 13224 13263 13275 13267 13265 13220 13250 13251 13209 13228 13249 13320 13309 12918 12976 13024 12994 13026 12995 12993 12958 13958 14668 13831 13798 14690 13809 13832 13814 13830 13851 13852 13829 13853 13857 13796 13825 13859 13876 13973 13972 12985 12986 12984 12936 12975 13012 13013 13786 14660 13070 14667 13065 12974 13039 13064 13066 12973 13067 13046 13068 13047 13048 12972 13038 12971 13045 13027 13049 5047 5048 4970 5050 5051 5040 5025 5041 5042 4990 5043 4995 4996 4997 4914 7484 7483 6836 6783 6851 6853 6808 6880 6881 6890 6891 6859 5052 5053 5054 5055 5056 4966 5569 5668 5657 5570 5571 5499 5511 5572 5573 5615 5616 5617 5510 5618 5596 5590 5591 5585 5592 5593 5509 5469 5484 5483 5594 5578 3949 3963 3987 3985 4886 4675 7441 7437 4686 3978 3959 3952 3976 4168 4045 4064 4059 4162 4733 4684 1314 1290 1304 1338 3914 3916 3611 3407 3438 3610 3471 3430 3443 3470 3472 3480 3477 3481 3482 3854 3420 3440 3838 3473 3478 3441 7193 7284 7443 7457 7346 7241 7357 7358 7246 7347 7229 7317 7348 7203 7527 7533 7173 7539 3248 7529 3310 3275 3311 3291 3309 3308 3272 3306 3333 3351 3378 3274 3345 3297 3350 3352 3356 3273 3365 3357 3832 3411 3837 1217 1253 1254 1230 1267 1268 1266 1262 1276 1225 1277 1278 1211 1400 1399 1388 1389 1387 1390 1324 1294 1391 1318 1376 1370 1323 1378 1353 1371 1317 1372 1273 14064 14050 14019 14057 14065 14052 14012 14042 14053 14041 14004 14040 13992 14882 14003 13986 14002 13981 14181 14941 14940 14939 14078 14085 14007 14069 14070 14018 14022 13991 14020 14062 14061 14066 14017 14038 13952 14190 14198 13901 13951 13953 13921 9689 9586 9681 9553 13900 13964 13920 13959 13957 13965 13963 13966 13925 4071 4108 4106 4117 4118 4111 4086 4127 4125 4144 4145 4146 4087 4143 4147 4053 4088 4089 4375 4456 4445 4376 4373 4315 4371 4377 4333 4372 4370 4319 4340 4426 4409 4313 4330 4329 4341 4317 13325 13404 13333 18 931 7 23 40 41 42 426 369 416 424 437 362 410 438 228 439 350 440 280 268 240 278 282 293 294 321 290 244 55 463 464 274 322 323 304 273 303 305 291 266 289 259 6894 6895 6862 6933 6947 6939 6948 6924 6949 6860 6838 6903 6812 6950 6898 6811 6831 6856 6897 6899 6810 6914 6915 6797 6896 6892 411 355 417 418 396 3927 2046 3926 2071 2079 2077 2124 2070 2125 2107 2123 2088 2117 2119 2108 2130 2069 2109 2110 2082 2137 2135 2630 2707 2708 2709 2781 2782 2660 2779 2667 2783 2665 2659 2745 2658 2731 2743 2723 2739 2729 2703 2701 2698 2722 2724 2656 7526 6775 7523 6796 6832 6830 2318 2366 2860 2861 2268 2404 2255 2418 2398 2273 2347 2293 2419 2281 2317 2280 2319 2021 2040 1953 2041 1977 2411 2339 2324 2413 2032 2042 1952 1979 2043 2133 2150 2149 2020 2026 1982 2034 1998 2015 1963 2022 9493 9541 9575 9690 9565 9556 9492 9525 9542 9540 9505 13256 13257 13255 13227 13753 13777 13208 13233 13274 13276 13270 13284 13285 13269 13232 13286 13287 13231 13288 13283 13277 13207 13238 13289 12935 13028 13308 13317 12917 13029 13795 13882 13978 13979 13782 13805 13810 13808 13864 13863 13822 13865 13869 13870 13828 13871 13875 13877 13824 14673 13071 12916 12957 13072 12930 13056 14659 13019 13061 13073 13069 12970 13078 13079 13080 13081 13082 12969 13037 12968 13075 13083 13084 13077 13085 12934 9526 9559 13794 9504 9513 9517 9552 9554 5004 5057 4969 5026 5027 4968 4991 4992 4984 4962 4998 4994 7480 7479 6956 6603 6955 6967 6663 6965 6953 6963 6597 6969 6952 6966 6737 4913 5005 5003 5468 5663 5674 5530 5531 5532 5574 5568 5558 5508 5619 5609 5597 5598 5584 5599 5600 5507 5579 5601 5595 5467 5548 5547 5580 5518 3948 4872 4672 4887 4702 4697 4703 4701 4705 4734 4711 4732 4742 4716 4044 4062 4164 4170 4052 4060 4055 4058 4109 4110 4094 4743 7438 7180 7445 4683 4740 4710 4744 4726 1308 3928 3924 3412 3421 3439 3437 3474 3448 3483 3484 3479 3468 3429 3485 3469 3467 3406 7172 7199 7225 7285 7283 7349 7355 7352 7359 7245 7353 7269 7354 7213 7270 7268 7360 7520 3313 7541 3260 3294 3314 3312 3327 3332 3334 3296 3338 3344 3346 3290 3259 3358 3844 3866 3267 1210 1222 1272 1274 1229 1279 1264 1280 1270 1261 1224 1271 1269 1209 1404 1395 1392 1293 1315 1393 1354 1342 1351 1309 1355 1352 1350 1286 14088 14937 14936 1215 14071 14016 14072 14073 14058 14015 14045 14059 14043 14044 14030 14009 14031 14029 13999 14180 14183 14084 14108 14107 14109 14097 14006 14060 14027 13990 14011 14074 14075 14076 14036 14037 13967 14194 14193 13899 13961 13968 13919 9498 9694 9599 9695 9647 9623 9624 9622 9607 9660 13861 13793 13801 13781 14806 9683 9499 9639 9687 9686 9514 9512 9483 13898 13908 13970 13971 13918 13969 13960 13948 13954 13962 13924 4085 4112 4113 4148 4149 4150 4084 4151 4138 4152 4153 4139 4154 4155 4078 4437 4454 4457 4433 4427 4185 4430 4434 4234 4432 4438 4197 4429 4428 4256 4182 4435 4436 4431 4187 13201 13774 13278 35 39 17 16 68 53 54 56 387 405 397 412 332 388 354 386 324 243 447 441 270 325 319 287 307 313 320 318 249 227 260 258 462 465 91 316 248 272 326 327 315 317 265 15 6937 6938 6858 6795 6925 6923 6904 6905 6906 6926 6927 6857 6883 6907 6873 6855 6802 6874 6875 6916 6782 6872 6876 6807 6917 6781 6596 6959 6957 384 366 341 395 382 3923 2112 3919 2059 2087 2113 2111 2090 2131 2129 2058 2138 2086 2126 2134 2132 2139 2089 2330 2836 2657 2856 2629 2666 2664 2847 2258 2857 2730 2838 2674 2728 2639 2702 2635 2650 2668 2700 2628 2699 2697 7518 7389 7552 6977 2356 2367 2301 2368 2331 2300 2267 2329 2348 2279 2325 2296 2323 2341 2357 2358 2359 2309 2352 2308 2360 1997 1942 1959 1999 2408 2311 2266 2407 2312 2313 2340 2338 2014 2027 1951 1991 2028 2121 2145 2147 2010 1976 1950 2016 2416 2192 2168 2403 2402 9503 9564 9566 9562 9523 9563 10160 9576 9570 9577 9567 9482 9510 9502 9511 9509 9516 9549 9557 9555 9527 9571 9578 9579 9875 9884 9828 13230 13218 13279 13280 13290 13281 13291 13229 13271 13292 13247 13293 13219 13222 13264 13294 13211 13239 13199 13196 13237 13314 13311 13035 13883 13873 13884 13823 13792 14684 12905 14657 13885 13881 13821 13886 13878 13887 13827 12997 12933 12998 12954 12996 13051 13055 13057 12967 13036 13062 13063 13086 13087 12966 13052 12965 13088 13076 13089 12915 13074 12956 9538 9560 9520 9491 9561 9496 10172 10170 9547 9558 9532 9858 9817 9484 9481 10169 10171 13860 13854 13862 13817 13837 13804 13838 13836 13849 9539 14811 14803 9490 9537 9524 11046 10908 10818 10907 10901 5024 5028 4993 4912 4989 4961 4952 4963 4902 7478 7477 6591 6616 6617 6615 6628 6664 6662 6629 6725 6726 6727 6738 6739 6740 6741 6642 5559 5649 5676 5560 5561 5498 5506 5562 5552 5620 5621 5602 5622 5623 5505 5624 5625 5576 5504 5626 5627 5466 5482 5481 5519 5517 4041 4884 4730 4868 4682 4709 4731 4729 4735 4757 4758 4759 4715 4765 4766 4739 4767 4707 4736 4696 4741 4724 4063 4057 4049 4061 4083 4095 4093 4114 4115 4102 4723 7433 4704 4685 7447 4727 4728 4699 4721 4681 4718 4725 4717 3940 3428 3465 3929 3464 3475 3427 3486 3462 3247 3861 3860 4673 7446 7314 7350 7431 7212 7344 7244 7351 7343 7361 7362 7240 7192 7363 7316 7505 3315 7515 3258 3304 3326 3328 3339 3340 3288 9685 1201 1243 1220 1244 1245 1275 1281 1228 1263 1250 1265 1256 1240 1219 1257 1255 1208 1394 1403 1305 1341 1285 1343 3917 3416 3423 3931 14140 14161 14935 14934 14094 14077 14010 13989 14067 14046 14047 13988 14175 14149 14184 14119 14106 14139 14141 14105 14177 13997 14182 14185 14083 13984 14028 14014 14026 13983 14035 13996 14174 13949 14192 14189 13897 13942 13950 13917 9598 9671 9595 9682 9611 9648 9637 9649 9659 9657 9606 9661 9640 9610 9638 9594 13894 13890 13977 13980 9581 14812 14808 9651 9691 9589 13937 13955 13915 13956 13943 13944 13928 4082 4156 4157 4140 4141 4129 4097 4142 4081 4051 4098 4099 4199 4453 4448 4209 4210 4211 4226 4233 4235 4242 4243 4241 4219 4255 4257 4196 4203 4202 4218 4220 13206 13259 13258 33 52 14 34 73 27 92 90 67 61 38 69 406 361 381 404 226 442 349 445 288 286 247 306 253 264 308 302 284 296 314 312 256 458 459 59 234 257 255 246 328 329 60 13 58 32 6745 6954 6968 6595 6962 6964 6794 6884 6885 6644 6961 6951 6886 6779 6882 6789 7053 7391 6976 7390 7393 7388 7000 6746 6747 6627 2057 379 373 340 383 374 3913 2140 3912 2056 2084 2127 2141 2085 2106 2120 2122 2128 2115 2315 2290 2270 2840 2283 2284 2254 2282 2627 2851 2868 7090 7510 6992 7102 7512 7508 6998 7511 6991 7015 7017 7052 7054 2373 2351 2374 2375 2307 2376 2278 2377 2316 2292 2277 2314 2333 2342 2306 2343 2344 2361 2362 2363 2305 2372 2304 2378 2157 2389 2257 2400 2253 2269 2294 2310 2334 2276 2332 1958 1990 1948 1941 1992 2104 2148 2143 2405 2201 2163 2415 2193 2179 2177 2194 2175 2178 2176 9515 9501 9568 9569 9489 10174 9904 10163 9827 9850 9876 9874 9837 9889 9522 9580 9574 9507 9529 9654 9642 9585 9684 9688 9488 9519 9528 9530 9544 9535 9550 9551 9521 9572 9573 9487 9605 9620 9854 9888 9890 9859 9843 9831 9860 9815 11050 10811 11049 10935 10828 10899 10934 10936 10888 10920 10921 10922 10848 10923 13268 13226 13282 13252 13223 13205 13225 13272 13273 13246 13213 13248 13195 13300 13301 13098 13302 13159 13295 13097 13114 13298 13321 13324 13090 13872 13866 13874 13826 13791 14661 12981 14658 13879 13880 13819 12914 12941 12949 12982 12983 13033 13053 13050 13040 13054 12964 13041 12988 13003 13034 13042 12913 13091 12955 9548 9480 9518 9494 9546 9486 9533 9531 11058 10806 10801 11021 11045 11051 10789 13855 13834 13843 13856 13850 13790 13820 13848 13844 14802 14797 10823 10895 10847 10909 10817 10893 10990 10902 10826 10924 10925 10896 10872 10903 10602 5465 5672 5666 5540 5669 5648 7474 7473 6619 6697 6605 6618 6620 6677 6748 6749 6704 6705 6706 6682 6728 6724 6742 6743 6683 6681 6641 5527 5528 5529 5553 5554 5541 5603 5604 5503 5575 5605 5606 5502 5577 5545 5520 5628 5629 5464 5515 5514 5521 5491 4101 4893 4815 4865 4680 4708 4816 4776 4817 4714 4775 4771 4777 4713 4772 4712 4773 4746 4768 4679 4769 4863 4571 4598 4853 4851 4564 4572 4858 4843 4563 4630 4559 4103 4104 4043 4080 4105 4054 4128 4158 4159 7454 7179 7171 4674 4671 4859 4856 7456 7455 7170 7198 7281 4706 4695 4722 4720 4670 4700 4698 4678 4719 4687 3435 3461 3442 3466 3458 3415 3447 3463 3456 3264 3857 3846 7432 7308 7191 7467 7239 7310 7313 7315 7238 7190 7345 7311 7506 3305 7525 3255 3303 3246 9629 9634 9655 9604 9653 9643 9613 9641 1237 1218 14136 14933 14932 1282 1207 1283 1223 1251 1249 1235 1221 1238 1239 3405 3909 1214 3910 3426 3436 3434 14093 14114 14121 14167 14168 14169 14126 14135 14137 14100 14163 14176 14092 14125 14148 14150 14164 14170 14171 14128 14117 14118 14116 14104 14146 14096 14186 14179 14082 14178 14087 14133 13907 14200 14195 13889 13909 13938 13936 9666 9618 9672 9673 9664 9674 9617 9675 9652 9658 9656 13929 9614 9600 9650 9588 14809 14801 13904 13927 13893 4091 4130 4050 4092 4090 4065 4096 4100 4042 4184 4447 4439 4212 4213 4214 4236 4237 4223 4258 4259 4260 4253 4261 4232 4195 4222 4221 4254 4252 13204 13241 13243 13244 87 31 88 12 76 77 37 75 83 86 93 94 36 89 80 331 380 358 378 446 443 239 231 74 225 254 252 245 50 285 233 283 269 47 241 224 297 295 455 451 78 79 11 6645 6646 6647 6623 6643 6612 6613 6602 6614 6590 6958 6960 6774 7065 7378 7096 7384 7066 7064 7007 6698 6696 6673 2055 2095 2101 2105 2103 346 338 330 372 2116 3934 3944 2083 2114 2054 2289 2285 2265 2291 7535 7117 7519 6990 7025 7107 7006 7118 7119 7091 7081 7026 7089 7080 7101 7103 7087 7086 7088 7041 2370 2353 2369 2371 2303 2379 2336 2380 2298 2337 2264 2335 2345 2263 2299 2346 2364 2275 2350 2365 2327 2381 2302 2382 2212 2220 2393 2395 2162 2199 2388 2392 2144 2399 2156 2401 2096 2045 2146 2167 2186 2202 2203 2204 2213 2174 2211 9497 9479 9508 9506 10175 9832 10179 9826 9844 9898 9905 9906 9853 9903 9907 9901 9852 9900 9902 9894 9702 9323 9703 9704 9597 9584 9621 9619 9693 9692 9495 9478 9543 9545 9500 9536 9534 9485 9697 9395 9709 9336 9628 9609 9630 9593 9706 9334 9417 9710 9708 9849 9895 9896 9825 9915 9719 11043 11041 10788 10875 10816 10874 10876 10887 10900 10898 10846 10927 10937 10938 10845 10930 10931 10932 10894 10884 10822 10892 10800 10805 10995 10991 10589 10671 13240 13253 13254 13203 13307 13096 13296 13299 13305 13111 13304 13139 13113 13171 13297 13115 13130 13129 13160 13158 13150 13151 13118 13149 13184 13310 13313 13004 13803 13867 13789 13868 14681 12928 14676 12904 12942 12932 12940 13043 12931 13044 12989 12912 12952 12987 12903 13002 12927 13785 11061 14790 14798 10787 10862 10810 11057 10827 10861 10863 13816 13835 13833 13788 13780 13800 13842 10858 10815 10832 10897 10886 10613 10631 10672 10670 10694 10809 10979 10677 10992 10873 10786 10871 10678 10592 10633 10676 5542 5539 5458 6689 7471 7470 6715 6640 6699 6700 6626 6716 6717 6755 6756 6754 6718 6719 6639 6757 6758 6638 6759 6760 6761 6762 6729 5537 5543 5480 5538 5536 5463 5497 5607 5608 5546 5544 5462 5492 5630 5631 5456 5476 5475 5493 5460 4883 4881 4761 4762 4763 4745 4808 4818 4819 4820 4821 4756 4774 4770 4694 4847 4846 4562 4578 4579 4577 4599 4597 4585 7465 4631 4632 4633 7475 7466 4504 4604 4634 4565 7485 4657 4873 4878 4693 4882 4875 4833 4879 4891 4692 4469 7434 7435 7220 7211 7221 7219 7296 7278 7430 7436 7223 7282 7189 7237 7280 7290 4545 7481 7482 7188 7302 7187 7439 3459 3455 3445 3460 3453 3414 3450 3457 3449 3858 3404 3848 7235 7304 7307 7309 7227 7186 7312 7517 7564 7201 9645 9592 9646 9644 9608 9667 9668 9663 1232 1234 1236 1206 14099 14930 14929 1203 1200 1233 1231 3424 3922 3921 14103 14115 14113 14081 14130 14131 14129 14091 14162 14102 14166 14172 14157 14122 14155 14165 14160 14173 14127 14147 14138 14123 14145 14090 14132 14134 14151 14191 14197 14095 14086 13888 14201 14188 9616 9665 9615 9669 14794 9676 9612 9677 9662 14800 9596 4895 4871 4803 4889 4867 4691 4874 4896 4788 4263 4888 4890 4264 4262 4204 4271 4272 4270 4273 4274 4231 4194 4298 4299 4300 4301 12595 12698 14709 14708 13193 13202 13216 13215 13210 13194 13242 13217 63 24 62 6 10 14942 14820 12589 12596 12620 12619 12610 81 65 82 71 30 26 84 85 95 96 29 453 105 460 461 22 116 168 454 457 28 51 49 4 114 162 456 468 19 8 48 46 103 221 467 466 450 3 6690 6691 6692 6631 6693 6694 6589 7095 7382 7122 7377 6989 7097 7024 6675 6695 6649 2051 2063 2094 2081 2100 2044 2102 2066 3925 3945 102 7572 7149 7135 7565 7005 7082 7134 7132 7136 7040 7131 7127 7039 7133 7116 7110 7120 7111 7112 7038 7121 7123 7124 7037 2349 2321 2354 2355 2274 2383 2262 2384 7509 7062 6988 7513 2155 2394 2328 2396 2261 2297 2326 2385 2260 2295 2386 2223 2222 2184 2224 2200 2166 2198 2191 2410 2246 2218 2409 2173 2219 2217 2229 2228 2230 9321 10161 10180 9814 9871 9836 9872 9873 9886 9892 9899 9897 9851 9908 9909 9910 9847 9911 9912 9824 9348 9346 9349 9347 9333 9423 9712 9700 9332 9401 9713 9331 9359 9396 9394 9350 9452 9376 9459 9711 9707 9330 9358 9430 9453 9454 9362 9418 9409 9416 9361 9351 9924 9741 9918 9734 9760 9740 9761 9759 9733 11032 11055 10905 10799 10833 10904 10906 10926 10919 10928 10844 10946 10947 10948 10843 10918 10929 10933 10866 10814 10865 10867 10785 10987 10600 10986 10764 10630 10724 10765 10766 14704 13306 13095 13303 13101 13123 13126 13140 13141 13124 13122 13117 13143 13164 13170 13145 13172 13165 13138 13166 13183 13108 13137 13185 13187 13107 13316 13315 14655 13100 13322 14654 13110 13168 13312 13319 13177 13323 13106 10994 14785 10859 10804 14764 10821 10860 10856 10792 14807 13094 14788 10853 10798 10855 10857 10996 10988 10588 10654 10725 10653 10706 10705 10707 10759 10733 10767 10768 10652 10719 10601 10685 10985 10651 10612 10718 10720 6622 6637 6676 6674 7464 7463 6594 6707 6708 6709 6660 6661 6659 6763 6764 6636 6684 6720 6714 6765 6766 6730 6767 6768 6635 6769 6770 7461 7460 6671 7492 7491 6593 7503 7469 6666 7413 6187 7462 7486 6086 6092 7493 7502 7476 4750 4760 4764 4809 4810 4755 4822 4814 4805 4747 4806 4807 4849 4848 4581 4573 4580 4582 4478 4625 4624 4626 4495 4496 4494 4635 4636 4590 4464 4503 4505 4605 4603 4576 4664 4667 4749 4832 4834 4782 4783 4781 4748 4802 4804 4546 4547 4477 4487 4468 4488 4489 7293 7210 7295 7297 7236 7277 7279 7294 7275 7292 7291 7185 7234 7289 7276 7449 7450 7298 7272 7301 7303 3403 3444 3454 3452 3419 3418 3410 3402 3451 7169 7522 7559 7305 7306 7209 9329 9698 9678 9696 9591 9602 9670 9679 14923 8663 14717 14921 14920 8661 14918 8732 8676 14771 14772 8662 14787 14158 14768 14089 14124 14154 14159 14143 14152 14156 14111 14153 14120 14101 14080 14112 14110 14781 9583 14779 11105 9632 9636 9626 9680 9633 9631 9603 11093 9335 9322 9377 9375 4779 4780 4778 4677 4787 4789 4281 4876 4894 4282 4280 4225 4287 4288 4286 4289 4290 4230 4193 4208 4207 4302 4297 12649 12663 12664 12699 12625 12697 12604 12704 14701 14700 14699 12603 57 25 70 72 2 14893 12688 14922 12611 12650 12648 12637 21 1 64 66 44 219 101 220 212 126 124 127 125 121 213 211 183 128 169 167 140 113 174 218 215 163 131 161 118 222 112 6650 6601 6651 6588 7105 7376 7056 7380 6987 7125 7022 6609 6652 6648 6587 7057 2161 2170 2412 2417 2154 3942 3915 159 7023 7114 7150 7151 7036 7152 7140 7153 7035 7109 7141 7142 7034 7143 7033 7144 7108 7128 7129 7032 7130 7126 2272 2252 2320 2322 7557 6997 6986 7530 7014 7063 7061 2241 2232 2391 2390 2160 2196 2387 2397 2235 2242 2172 2243 2190 2234 2236 2189 2245 2247 2181 9382 10156 10181 9887 9823 9848 9885 9883 9878 9881 9893 9891 9846 9913 9914 9822 9921 9781 9920 9729 9383 9338 9384 9320 9424 9406 9422 9360 9400 9374 9402 9397 9398 9353 9399 9328 9448 9345 9449 9428 9450 9378 9460 9461 9439 9373 9440 9441 9372 9467 9468 9469 9433 9371 9434 9435 9411 8519 8498 11074 11107 9392 9769 9750 9770 9768 9774 9775 9776 9718 11048 10808 11040 10956 10825 10957 10958 10842 10945 10917 10949 10841 10963 10964 10965 10840 10966 10824 10967 10968 10807 10981 10983 10587 10668 10611 10667 10669 10680 10726 10722 10721 12624 12675 12676 12623 12677 12602 12682 14695 14696 13144 13105 13142 13134 13156 13157 13133 13104 13155 13188 13189 13190 13182 13136 13179 13186 13178 13174 13176 13135 13120 13116 13121 13119 13169 13167 13125 10656 10657 10655 10629 10797 10854 10784 10852 14775 13153 14759 10599 10984 10997 10650 10703 10649 10723 10728 10648 10702 10734 10735 10744 10760 10701 10761 10647 10743 10704 10745 10646 10769 10747 10770 10684 10681 10645 10686 10644 10687 10758 10762 10682 10643 10709 6600 6610 6611 6586 6710 6711 6712 6701 6713 6604 6625 6670 6672 6702 6703 6654 6685 6686 6634 6633 6731 6732 6744 6771 6772 6773 6722 6657 6658 6656 6115 6585 6665 6667 7420 7423 6318 6090 6169 6101 6116 6099 6114 6112 6152 6188 6137 6189 6103 6136 6102 6107 6138 6130 6089 6106 6100 4824 4835 4836 4812 4837 4838 4839 4840 4690 4857 4860 4647 4541 4584 4646 4648 4512 4548 4549 4638 4649 4650 4513 4514 4485 4628 4651 4652 4473 4515 4511 4653 4654 4570 4660 4665 4825 4826 4754 4791 4827 4828 4792 4793 4753 4542 4543 4491 4480 4472 4492 4493 4465 4458 4490 4486 7452 7178 7453 7233 7168 7197 7299 7300 7224 7274 7273 7271 7184 8677 14913 8757 14912 8675 14911 8738 8785 14909 14908 8660 14906 9319 9705 9587 9701 9699 9635 9601 8712 8733 8711 8731 8729 8730 8659 8728 8858 14784 14098 14763 14079 14142 14144 8491 14792 14795 8500 8499 11110 9627 11097 9590 9625 9582 8540 8574 8529 8573 8575 11095 11106 8621 4738 4794 4790 4192 4880 4869 4247 4248 4249 4303 4304 4305 4306 4307 4229 4191 4251 4250 4308 4291 12689 12679 12687 12690 12636 12705 12706 12707 12666 12635 12708 12709 20 0 45 43 14915 12607 14905 12601 12616 12661 12691 12634 194 200 214 223 111 117 216 217 123 134 185 193 195 110 138 158 160 182 180 139 184 170 145 171 172 175 173 7013 7375 6975 7381 6979 7055 6995 7367 7369 7372 7177 7156 7004 7157 7158 177 3947 2209 2185 2210 2208 3933 2164 7047 7104 7113 7115 7031 7146 7148 7154 7030 7159 7155 7160 7029 7106 7161 2153 7567 6974 7514 7046 7003 7048 2231 2225 2183 2233 2197 2165 2195 2248 2188 2237 2244 2240 2249 2187 9778 10165 9865 10157 9879 9835 9867 9877 9870 9845 9882 9880 9821 9919 9792 9916 9728 9745 9782 9780 10155 9841 10176 9820 9830 9370 9410 9412 9403 9356 9404 9405 9327 10164 10166 9819 9419 9326 9357 9391 9393 9414 9437 9447 9451 9369 9470 9471 9466 9368 9432 9472 9367 9443 9473 9462 9474 9442 9444 9366 8623 8626 8548 8627 8628 8515 11090 11103 9415 9749 9777 9779 9736 9804 11035 11047 10783 10869 10813 10868 10870 10885 10955 10959 10839 10960 10962 10969 10838 10916 10837 10970 10951 10952 10914 10953 10782 10982 10597 10980 10727 10627 10729 10730 10674 10662 10731 10693 12703 12701 12710 12633 12668 12632 12678 12674 12683 12622 12684 12600 14694 12657 14693 12599 13191 14705 12639 14707 13132 13103 13192 13180 13175 13128 13181 13147 13102 13131 13162 13173 13154 13152 10610 10586 10683 10679 14758 13163 14776 10642 10732 10708 10736 10641 10695 10665 10710 10640 10700 10748 10749 10771 10699 10772 10773 10774 10775 10639 10738 10698 10754 10776 10638 10659 10688 10689 10690 10763 10637 10777 10624 10618 10660 10658 10609 10625 10608 10628 10711 10712 10598 10666 10585 10664 11019 7217 7196 7370 7387 7326 7371 7373 7232 6655 7392 7386 6237 6290 6219 6621 6653 6606 6668 6687 6688 6721 6733 6734 6750 6751 6632 6723 6679 6311 6314 6238 6599 6669 6630 7411 7424 7222 6286 6295 6296 6297 6257 6291 6289 6210 6310 6309 6088 6170 6171 6143 6127 6144 6142 6153 6154 6113 6190 6191 6182 6161 6181 6183 6184 6185 6145 6132 6146 6147 6148 6098 4813 4811 4752 4823 4841 4842 4550 4845 4854 4569 4484 4551 4552 4595 4596 4594 4522 4553 4554 4639 4640 4589 4523 4521 4483 4629 4627 4588 4467 4524 4525 4637 4655 4656 4658 4669 4796 4829 4830 4797 4795 4751 4689 4798 4799 4463 4555 4556 4479 14901 8745 14899 14898 8754 8674 14897 14896 8800 8679 14894 8673 8719 8758 8734 8756 8694 8786 8759 8784 8713 8739 8740 8514 8598 11108 11091 8748 8747 8672 8749 8846 8503 8497 8857 8559 8522 14770 8534 8528 8535 8533 8513 11096 8569 8629 8558 8624 8618 8622 8625 8550 8620 8615 4309 4885 4864 4310 4311 4224 4284 4312 4276 4285 4283 4228 4190 4206 4205 4292 4293 12670 12631 12680 12681 12630 12692 12711 12712 12629 12667 12713 12628 100 14889 14829 12593 12646 12618 12645 12647 12655 12671 12669 12613 153 201 197 202 130 154 152 133 144 203 188 199 143 189 142 187 109 137 178 176 181 179 5925 7162 7366 7167 7365 7218 7208 7216 7266 7267 7265 7228 7287 5909 5918 7207 5900 7163 7021 6985 7164 205 2152 3938 3935 2250 2238 2251 2171 7138 7002 7137 7139 7084 7093 7145 7147 7028 7098 7165 2221 7569 7085 7574 2206 2159 2182 2226 2227 2239 2215 9786 9783 9787 9785 9748 9842 9862 9866 9864 9834 9868 9869 9818 9925 9765 9922 9727 9744 9791 9793 9839 9855 9856 9857 9829 9816 9840 9838 9813 9344 9420 9421 9325 10158 10168 9445 9429 9446 9355 9324 9352 9413 9407 9380 9426 9436 9438 9365 9455 9475 9476 9389 9364 9431 9477 9363 9463 9458 8634 8646 8557 8647 8648 8641 8612 8649 8650 8512 11063 11098 9337 9805 9743 9806 9726 9795 11030 11033 10911 10796 10831 10910 10912 10890 10943 10961 10836 10915 10971 10972 10950 10835 10940 10954 10812 10941 10993 10977 10584 10675 10673 10607 10661 10663 10621 12685 12700 12702 12627 12660 12652 12686 12658 12640 12641 12659 12614 12594 12592 12605 12638 13112 14697 14702 13093 13127 13148 13146 13109 13161 13099 13092 14760 14765 10596 10636 10741 10750 10751 10623 10615 10746 10752 10635 10755 10742 10756 10737 10714 10634 10739 10715 10716 10717 10606 10691 10605 10692 10778 10626 10779 10583 10619 10617 10595 11006 10376 11005 10393 10593 10590 10622 10582 10620 11010 11017 10375 11004 10392 10450 10499 11014 10400 10410 10451 10449 5967 7321 7325 7327 7183 7322 7323 6249 6259 6598 7374 7379 6250 6260 6258 6232 6230 6298 6294 6607 6608 6584 6209 6236 6225 6624 6735 6736 6752 6753 6680 6678 6592 7425 7421 7328 7329 7330 7334 7335 7336 7337 7407 5922 7415 7427 5936 5966 5968 5937 5935 5914 6280 6270 6281 6282 6275 6283 6279 6287 6288 6247 6299 6300 6292 6255 6293 6229 6317 6315 6109 6140 6172 6173 6163 6174 6175 6159 6176 6177 6192 6193 6126 6194 6195 6196 6197 6198 6125 6131 6133 6111 6110 6097 6243 4462 4471 4785 4831 4688 4497 4498 4499 4855 4844 4622 4557 4558 4531 4583 4621 4623 4536 4544 4482 4610 4641 4642 4537 4538 4527 4615 4643 4644 4539 4540 4476 4601 4645 4568 4663 4662 4786 4784 4737 4800 4801 4676 4189 4866 4892 8671 8776 14891 14890 8717 8746 8693 8744 8718 8753 8755 8801 8793 8802 8727 8773 8772 8692 8774 8794 8726 8795 8791 8599 8571 8597 8549 8851 8565 8517 8852 8560 8538 8561 8568 8570 8566 8651 8556 8635 8616 8652 8555 8630 8554 8631 8586 8619 8617 4244 4245 4246 4277 4278 4266 4275 4279 4239 4188 4294 4295 4296 4215 12672 12617 12673 12662 12643 12693 12694 12626 12665 12714 12715 12608 12835 12725 120 14824 14925 12609 12591 12656 12654 12829 12837 99 165 122 166 164 156 191 196 198 141 206 204 207 108 208 136 5916 5913 5924 5926 5991 5912 5969 5932 5992 5990 7099 7364 7202 7368 7288 7286 7166 5907 5890 5917 5915 7428 7401 7092 7020 6984 7100 209 107 3911 2207 3908 2180 2205 2158 6983 7019 7079 7083 7073 7076 7094 2169 7074 7545 7504 2216 2214 2151 8541 8645 8520 9796 9798 9807 9808 9789 9766 9797 9799 9747 9833 9812 9863 9861 9923 9755 9917 9725 9756 9767 9758 10151 9943 10144 10145 10006 9936 10140 10138 9939 9932 10162 9340 10178 9318 9343 9390 9388 9317 9379 9381 9342 9464 9427 9341 9425 9408 9386 9456 9457 9465 9354 8577 8642 8653 8553 8643 8644 8552 8613 8609 8614 8527 8610 11082 11089 8511 9784 9742 9794 9724 9771 11031 11027 10891 10795 10830 10889 10883 10881 10942 10944 10834 10973 10878 10974 10913 10829 10939 10794 10879 10989 10978 12615 12606 12716 12717 12621 12653 12598 12651 12833 12836 12736 12791 12832 14706 12727 14698 12724 14703 14692 12779 12820 14748 12741 14753 10632 10697 10604 10740 10616 10581 10614 10603 10753 10591 10757 10594 10580 10696 10713 12723 14815 14751 10524 11016 10384 10525 11001 10401 10436 10484 10523 10791 11011 11009 10182 11015 10579 10465 10391 11002 10408 10409 10466 10464 10500 10488 10432 10501 10530 10431 10531 10532 10495 6007 6008 6006 6563 6469 7324 7331 7332 6284 6227 6285 6470 6564 6561 7338 7383 7385 6240 6218 6241 6239 6226 6233 6248 7397 7396 7395 6301 6302 6234 6211 7402 7410 7412 6221 7339 7340 7341 5957 7318 7342 7200 6011 6012 6013 7409 7418 6021 6020 6022 6023 6024 5949 6217 6252 6253 6251 6271 6272 6246 6276 6274 6245 6303 6304 6305 6265 6306 6244 6256 6254 6224 6312 6316 6096 6141 6139 6124 6164 6165 6123 6160 6158 6122 6179 6199 6200 6156 6201 6121 6202 6203 6134 6117 6135 6129 6128 6095 6446 6556 6558 6460 6471 6472 6489 8670 8742 4461 14880 8681 14886 4532 4533 4534 4862 4852 4567 4526 4535 4475 4592 4593 4591 4528 4529 4517 4611 4612 4587 4507 4530 4481 4616 4614 4586 4466 4508 4509 4602 4600 4575 4666 4659 4861 4850 4607 4267 4877 4870 4268 4265 4183 8716 8777 8763 8775 8796 8803 8799 8725 8790 8797 8798 8715 8669 8792 8805 8526 8699 8848 8496 8850 8521 8587 8585 8542 8567 8600 8654 8525 8633 8655 8601 8589 8636 8637 8638 8639 8524 4227 4269 4198 4216 4240 4238 4181 4201 4200 4217 4186 5938 6009 6010 9278 9314 9277 7578 12590 12644 12642 12612 12695 12696 12597 12742 12764 12840 12834 12770 12771 12772 12753 14917 14903 12735 157 14884 14883 12726 106 135 155 186 132 190 192 147 210 150 5908 5899 5919 5896 5939 5940 6068 5753 5897 5723 5889 6081 6072 5891 5933 5934 5906 5993 5994 7406 6999 7077 7403 7016 7070 7027 7078 129 115 104 148 146 3907 3936 98 7516 7071 7018 7075 6982 7555 7058 6069 8632 8523 8495 8578 8576 9312 7586 7619 7589 9304 9772 9746 9788 9790 9763 9800 9809 9810 9735 9738 9811 9803 9731 9931 10152 10153 9721 9754 9717 9977 9949 9978 9955 9976 9952 10007 9997 10008 9974 9948 9973 9975 10173 9986 9966 10167 9935 9961 10177 9339 10159 8595 11087 11100 9387 9385 9316 8510 8547 8596 8594 8546 8545 8606 8640 8551 8611 8607 9757 9752 9773 9723 9753 11028 11022 10880 10793 10850 10882 10864 10819 10975 10976 10820 10803 10877 10781 12828 12722 12830 12831 12734 12737 12838 12755 12754 12792 12790 12780 12778 12748 12814 12758 12821 12822 12785 12786 12747 12784 10998 10374 10377 11008 14746 12721 14747 14745 12811 14805 12740 10456 10496 10430 10497 10434 10383 10435 10433 10455 10407 10457 10513 11013 10191 10195 11003 10190 10373 10562 10565 10447 10448 10399 10446 10486 10502 10429 10498 10529 10428 10494 10533 10547 10514 10548 10549 10427 10515 10490 6044 6045 6046 6467 6520 6497 6498 6499 6500 6496 6466 5976 6457 6468 6454 6507 6508 6509 7319 7333 7182 6449 6228 6557 6555 6440 6455 6456 7419 7405 6205 6222 6235 6208 6213 6214 6212 6223 6220 6015 6047 6048 7226 7320 7181 6049 6050 5956 7414 7422 5905 6025 6026 6004 6005 6003 6474 6560 6559 6262 6207 6261 6263 6231 6273 6269 6216 6277 6278 6307 6308 6242 6215 6266 6267 6264 6268 6206 6313 6319 6149 6087 6150 6151 6108 6166 6167 6094 6168 6162 6178 6180 6120 6093 6157 6155 6186 6204 6118 6091 6119 6105 6104 6085 6439 6473 6475 6451 6490 6491 6445 6492 6488 6521 6522 6459 6444 8702 8743 8741 8710 8658 8703 8691 8701 4518 14887 14877 4519 4516 4460 4561 4606 4608 4501 4520 4474 4574 4613 4609 4502 4500 4470 4566 4617 4618 4506 4510 4459 4619 4620 4560 4668 4661 14876 14875 14874 14873 14872 8989 14870 14869 8969 7622 8779 8804 8724 8787 8806 8807 8690 8808 8709 7588 8700 8678 8657 8698 8856 8849 8590 9300 8562 8509 9313 8563 8572 8602 8508 8588 8539 7577 9308 8680 9064 8900 14867 14866 8860 8866 14865 14864 14863 5729 6074 6064 6051 6052 5948 7604 7623 7603 7621 12802 12788 12775 12733 12839 12743 12769 12767 12773 12732 12768 12720 12766 14892 119 14861 151 149 97 5722 6066 5786 6070 5721 6071 5823 5737 5824 5822 5790 5738 5747 5749 5754 5755 5711 5748 5746 5736 6973 7399 7398 5888 6073 6076 7050 7051 7049 7001 7068 7072 7059 7521 6972 6978 7543 7573 6994 7043 6981 7524 7045 7060 7044 5816 5817 5818 8592 8543 8593 8507 8591 9310 7579 9315 7576 7599 7598 7600 7601 7602 7620 7618 7587 9737 9764 9722 9739 9762 9732 10148 9801 9802 9716 9994 10139 9930 10142 10141 9982 10147 9942 9947 9995 9993 9985 9988 10010 10011 9959 10012 9996 9991 9998 9958 9990 9969 9946 9992 9967 9962 9968 9950 9937 9933 9929 9960 11086 8583 11078 8506 8544 8584 8582 8604 8580 8608 9730 9720 9751 9715 11042 11018 11034 10851 10790 10780 10849 10802 11012 10212 10263 10999 12803 12799 12746 12801 12763 12813 12808 12815 12812 12805 12823 12824 12757 12800 12810 12794 12739 14742 14777 12795 12793 12756 10398 10390 10372 10516 10517 12719 14735 14738 10550 10551 10540 10397 10552 10229 10254 10255 10253 10217 10541 10577 10576 10382 10542 10414 10539 10489 10426 10543 10544 10545 10425 10553 10554 10493 10555 10424 5904 5977 5978 6527 6443 6480 6481 6479 6458 6528 6529 5996 6535 6536 6537 6538 6534 6465 5947 5995 5997 6510 6506 6464 6539 6540 6530 6014 6016 5955 6511 6438 6512 6486 6453 6487 6485 6582 7417 7416 6565 6577 6579 6583 6580 5895 5920 6578 6053 6054 6035 5928 7408 6036 6034 6037 5954 6038 6039 6494 6549 6338 6367 6335 6420 6334 6381 6329 6322 6562 8825 8809 8826 8820 8827 14857 14856 8689 14854 14853 8828 14851 14850 9264 8968 14847 14846 14845 14844 8976 8978 14841 14840 14839 14838 8999 9018 14835 14834 14833 8973 9012 9011 9013 9072 9023 9024 9025 9030 9069 8723 7616 7617 7615 7597 8829 8688 8765 8830 8831 8780 8778 8687 8788 8668 8789 8695 8696 8656 8697 8854 8502 9299 8494 8853 8847 8518 8564 8706 7707 8704 9279 9307 7646 8667 8686 8707 8705 8977 9036 8967 9074 8873 8864 9071 8943 8875 8894 8901 8902 8877 8937 8876 8881 8938 8936 8863 8880 8874 5870 5789 5871 5872 6075 6078 7624 7613 7633 7634 7635 12789 12777 12745 12787 12765 12774 12731 12776 12847 12481 12848 12844 12484 14823 14817 5756 5804 5805 5806 5742 5838 5839 5840 5873 5874 5875 5751 5757 5758 5741 5735 5752 5720 5750 7426 7069 7394 6980 7067 7012 12480 14888 6993 14825 6971 7009 7008 7010 6996 7042 7011 5796 5876 5843 8537 8581 8505 8579 9297 7762 7962 9305 7963 7964 7760 7575 7614 7596 7612 7960 7788 7908 7946 7832 9714 10143 10027 10150 10154 10039 10072 10146 10057 10073 10041 10023 10071 10137 9940 9964 10149 9983 9972 9984 9965 9963 9953 9980 9987 9957 9989 9999 10009 9956 10013 10014 10002 10015 9945 10003 9954 10004 9941 9970 9971 9928 11085 8493 11079 11075 8516 8605 11080 8530 8536 8504 8603 11044 10194 11054 10189 10276 11007 11000 10209 10208 10279 11020 10241 10260 10262 10264 12782 12762 12807 12797 12809 12761 12816 12819 12825 12783 12804 12806 12752 12781 12750 10473 10381 14723 12473 14741 14724 12738 12845 14736 10556 10527 10474 10509 10557 10468 10472 10413 10223 10188 10259 10261 10273 10569 10503 10389 10578 10406 10423 10504 10505 10506 10422 10534 10546 10492 10558 10421 5728 6065 6067 5820 6477 6478 6476 6437 6493 6495 6079 6062 5903 6502 6541 6542 6503 6504 6463 5974 5975 5973 6543 6544 6462 6514 6545 6524 6028 6029 6027 6448 6436 6531 6526 6532 6533 6523 6043 6055 5953 6567 6570 5894 5929 5930 5923 5931 5927 6018 6040 6041 6042 5980 6326 6553 6550 6347 6348 6349 6368 6369 6356 6359 6366 6370 6358 6419 6421 6382 6383 6384 6354 6380 6376 6342 6353 6355 6333 6341 8819 8813 8821 8722 8835 8836 8837 8666 8838 8839 8966 9270 9269 9035 9015 8979 8986 8987 8988 9019 9017 9020 9000 8998 8993 9006 9021 9001 9002 9003 8980 9037 9038 8997 9026 9027 9031 9029 8811 8832 8833 8721 7637 8720 7706 7631 7595 7708 8815 8814 8816 8685 8736 8782 8855 7647 8708 8684 8735 8737 7625 7608 7585 7645 7742 9283 8751 9284 8665 8752 8750 9258 8972 9052 9053 9054 9055 9056 9046 9014 9047 9045 9070 9067 8862 8885 8886 8884 8890 8942 8944 8932 8945 8946 8947 8948 8903 8929 8930 8928 8913 8939 8940 8941 8871 5842 5833 5844 5813 5814 5815 7610 7636 7609 7638 7639 7640 7584 7607 7641 12760 12796 12730 12798 12841 12561 12492 12850 12503 12501 12504 12502 5861 5877 5878 5879 5759 5797 5803 5807 5740 5856 5837 5841 5795 5869 5734 5760 5719 5761 7404 7400 6970 12537 12498 14879 14830 14931 14859 12479 5830 5862 5863 9294 7817 7771 9298 7783 7789 7787 7769 7863 7958 7956 7798 7782 7909 7910 7898 7791 7833 7831 7822 10211 10270 11056 10022 11052 10075 10046 10076 10074 10077 10045 10078 10079 10090 10134 9927 10132 9981 9944 9979 10000 9934 9951 10001 9938 9926 10005 10016 10133 10021 10129 10131 10026 11094 8501 11099 8492 8531 8532 7759 9287 9288 10242 10277 10228 10275 10265 10280 10278 10274 10272 10222 12718 12744 12751 12749 12759 12826 12729 12827 12817 12728 12818 10481 10479 10482 10380 10412 10483 12483 12485 14734 14740 12851 12482 12843 10526 10519 10420 10491 10528 10510 10511 10419 10302 10371 10574 10573 10281 10303 10207 10240 10301 10462 10463 10405 10461 10444 10418 10485 10507 10535 10536 10417 5821 5819 5788 5809 5810 5811 5727 6080 6063 6030 6450 6505 6501 6413 6552 6551 5946 6031 6032 6515 6513 6461 6442 6516 6517 5987 6033 5952 6447 6435 6525 6483 6452 6484 6482 6056 6057 6017 6568 6569 5911 5999 6019 5951 5981 5979 6414 6415 6361 6403 6416 6417 6422 6423 6424 6408 6425 6365 6395 6409 6410 6396 6394 6364 6397 6398 6389 6332 6399 8812 8840 8841 8764 8842 8834 9117 9108 8991 9266 9265 9107 9095 9109 9082 8982 9244 9243 8992 8990 8965 9032 9039 8964 8994 8995 8975 9028 9022 8996 9004 9005 9033 9034 7718 8817 8843 8844 7659 7719 7720 8783 8818 8810 7741 7743 7744 8769 8781 8761 7730 7745 7746 8762 8760 8714 7704 7747 7583 9276 9289 9172 9169 9173 9174 9125 9175 9171 9247 9255 9057 9049 9058 9016 9059 9060 9041 9042 9043 8971 9068 9065 8921 8892 8920 8922 8917 8923 8924 8933 8934 8897 8950 8951 8952 8953 8954 8896 8914 8912 8883 8882 8870 9192 5851 5860 5864 5794 5834 5832 7627 7721 7717 7628 7626 7611 7768 7955 7957 12846 12555 12491 12842 12515 12560 12553 12505 12562 12538 12511 12536 5793 5880 5881 5792 5831 5829 5791 5857 5845 5858 5827 5770 5859 5855 5846 5847 5718 5848 5726 5849 5787 14904 12546 12510 12497 14860 12547 12545 5852 5853 5825 7774 7818 7816 7794 7847 7862 7864 7809 7911 7912 7900 7902 7829 7903 7838 7904 7830 7828 7808 10271 10239 10206 10269 10305 11053 10081 11037 10035 10062 10080 10082 10083 10091 10061 10034 10089 10116 10128 10135 10033 10093 10127 10130 10032 10050 10038 10136 10048 10047 10020 10049 7835 11073 11072 10290 10252 10291 10289 12521 12522 12853 12849 12490 12539 12489 12852 10478 10476 10453 10470 10480 10411 10471 10454 10379 10452 14732 12478 12581 14733 12493 12520 12506 10487 10441 10416 10520 10521 10508 10512 10415 10320 10388 10566 10570 10205 10307 10308 10309 10251 10321 10322 10238 10370 10396 10445 10443 10537 10538 10404 5835 5836 5799 5800 5774 5801 5782 5765 5812 5808 6084 6082 5902 5983 5984 5985 6339 6548 6547 6372 6373 6374 5970 5988 5989 6441 6434 6518 6519 6546 6554 6327 6058 6059 5950 6572 6574 5998 5964 6000 6001 6002 5945 6412 6418 6405 6426 6427 6363 6407 6428 6429 6390 6411 6401 6391 6392 6362 6346 6393 6386 6331 6345 7735 7723 7736 7737 9205 9131 8823 8845 8683 9193 9176 9194 9189 9206 9207 9261 9267 9242 9177 9100 9178 9150 9151 9090 9149 9094 9253 9251 9248 9245 9228 9134 9249 9256 9252 9089 7710 7738 7739 8770 8824 8822 7748 7749 7658 8682 8771 8767 7731 7732 7703 8768 8766 8664 7678 7705 7630 9282 9290 9130 9195 9191 9168 9152 9170 9164 9165 9166 9093 9254 9246 8970 9007 9050 9048 9061 9062 9010 8984 9044 9040 9076 9073 8869 8905 8906 8904 8908 8918 8919 8926 8935 8931 8955 8956 8895 8957 8958 8915 8887 8916 8899 8898 8868 9208 9209 9197 9183 9210 9204 9219 5771 5865 5866 5867 5868 5772 7740 7734 7652 7797 7953 7965 7865 7866 7846 12514 12551 12554 12556 12519 12563 12518 12564 12565 12566 12534 12567 5854 5763 5850 5784 5780 5739 5882 5883 5776 5884 5885 5762 5725 5828 5717 5826 5733 5781 5779 12500 12477 14943 14831 12535 12533 5724 5785 5783 5716 7767 7834 7836 7796 7851 7901 7899 7913 7807 7914 7907 7853 7915 7806 7837 7905 7857 7906 7827 7839 7805 10304 10233 10204 10306 10216 11029 10099 11024 10031 10059 10100 10098 10119 10113 10120 10111 10121 10117 10060 10115 10094 10084 10054 10092 10066 10065 10030 10067 7858 11070 11066 10310 10250 10311 10312 12524 12488 12525 12513 12523 12526 12540 12541 10475 10459 10467 10438 10477 10402 10469 10378 10385 14814 14728 12385 14725 12399 12384 12430 14731 12387 12585 12587 10387 10369 10395 10442 10440 10518 10522 10403 10325 10559 10299 10564 10221 10326 10287 10324 10319 10317 10323 10203 10352 10563 10567 5802 5798 5767 5732 5715 5768 5769 5775 5773 5764 5731 5766 5714 6077 6083 5986 5893 5982 5971 5910 5972 5944 6320 6375 6371 6357 6330 6406 6404 6060 6061 5963 6573 6571 5901 5941 5965 5959 5960 5961 6430 6325 6431 6432 6337 6433 6360 6324 6387 6385 6400 6350 6402 6378 6340 6379 6377 6336 6351 6388 7594 7672 7673 7671 9129 9202 7724 7725 7657 9212 9220 9221 9213 9211 9128 7711 7709 7656 9190 9188 9127 9186 9222 9218 9263 9262 9081 9229 9230 9098 9231 9179 9232 9227 9105 9106 9104 9123 9233 9162 9113 9135 9136 9133 9137 7750 7751 7729 9111 9260 9268 7713 7733 7655 9092 9271 9259 7679 7677 7593 9306 9293 9122 9088 9198 9196 9199 9200 9121 9087 9153 9154 9167 9163 9080 9257 9250 8981 8963 9008 9009 9063 9051 8983 8974 8985 8962 9066 9075 8909 8861 8907 8910 8872 8911 8893 8927 8925 8891 8867 8959 8960 8949 8961 8888 8865 8889 8879 8878 8859 9184 9182 9120 9086 9223 9224 9225 9226 9203 9085 9201 9114 9099 14816 12282 12270 14848 14819 14837 14852 7922 7951 7954 7923 7924 7849 7916 7925 7921 12549 12568 12569 12570 12517 12557 12571 12516 12552 12509 12572 12573 5886 12496 5730 5887 5713 5744 5777 5778 5745 5743 5712 14827 14926 14822 12273 14828 12247 7766 7859 7860 7793 7826 7874 7917 7918 7814 7804 7919 7920 7803 7861 7844 10313 10314 10187 10315 11025 10040 10122 11039 10058 10107 10110 10123 10064 10114 10063 10112 10124 10102 10125 10044 10101 10029 10103 7773 11101 11062 10249 10316 10220 10318 12396 12456 12550 12578 12586 12487 12548 12512 10328 10386 10368 10394 10460 10458 10437 10439 10367 14762 12405 12439 12450 14722 12403 12411 12440 12438 12431 12429 12409 10202 10572 10215 10560 10186 10561 10568 10333 10232 10237 10286 10300 10298 10327 10248 10329 10342 10353 10354 12246 14826 14821 12306 12337 14919 14878 12254 14927 14858 12288 14885 14900 12364 14849 14855 11996 14910 14916 12011 14842 14843 11981 14902 14881 14836 14832 5921 6581 6576 5962 5898 5942 5943 5958 5892 6328 6575 6566 6321 6343 6344 6352 6323 7781 7949 7961 7701 9272 7995 7651 7700 7702 9079 9115 9116 7977 9292 9301 7691 7726 7727 9147 9214 9215 9148 9146 9124 7696 7728 7722 9187 9185 9126 9139 9216 9217 7752 7753 7654 9097 9132 9234 9235 9096 9236 9237 9112 9110 9101 9180 9181 9156 9143 9144 9145 9157 9158 7675 7714 7715 9102 9103 9078 7643 7716 7712 9291 9309 7986 8065 7985 8085 7984 8098 7983 8050 7978 7970 9273 12259 12279 12253 12281 12283 12271 12269 12258 7868 7869 7870 7930 7931 7932 7825 7872 7933 7934 12574 12486 12507 12575 12558 12528 12543 12559 12531 12274 12499 12532 12530 12476 12859 14938 12240 12272 12249 7758 7780 7815 7813 7935 7802 7927 7936 7929 7937 7779 10331 11036 10019 11026 10087 10043 10088 10086 10105 10096 10108 10109 10055 10052 10126 10118 11071 11109 10037 10330 10236 10201 10332 12443 12455 12393 12415 12457 12462 12398 12583 12579 10343 10344 10296 10341 10225 10571 10185 10575 14719 14729 12383 12397 12402 12406 12404 12407 12441 12451 12449 12444 12445 12419 10193 14718 10219 10226 10224 10210 10227 10334 10285 10335 10355 10347 10247 10356 10340 10246 10345 12284 12307 12308 12294 12265 12295 12293 12289 12338 12339 12332 12333 12331 12290 12291 12292 12245 12377 12374 11980 12007 12008 12006 12012 12010 12009 12065 12066 12064 12129 14818 14868 11995 14914 14907 12145 14928 14862 11978 11983 14871 14924 14895 7896 7848 7897 7895 7966 7947 7592 7669 7670 7668 8006 8007 8008 8025 8026 8024 7692 7690 7653 8037 9295 9285 8038 8036 7996 7697 7695 7632 9091 9140 9141 7990 9296 9302 7754 7755 7676 9238 9084 9239 9119 9142 9138 9077 7591 7674 7642 9240 9241 9118 9159 9160 9155 9083 9161 7629 7644 7582 9311 9280 8013 8064 8066 8047 8048 8046 8012 8086 8087 8044 8045 8043 8011 8099 8100 8051 8052 8053 8003 8049 8041 7994 8002 8004 7982 7993 12260 12276 12264 12278 12280 12285 12286 12263 7938 7939 7891 7852 7824 7940 7941 7871 7873 7801 12382 12582 12577 12494 12475 12529 12527 12508 12495 12474 12544 12542 12858 12855 12248 10025 7845 11069 11084 7765 7926 7928 7795 10297 11038 10106 11023 10028 10069 10085 10104 10056 10097 10042 10095 10018 10053 10051 10284 10231 10200 10295 12466 12467 12463 12418 12468 12453 12464 12410 12427 12401 12428 12426 10346 10357 10358 10359 11319 12901 14721 12392 12436 12437 12414 12435 12465 12469 12417 12470 11333 11342 11337 11343 11341 11370 14712 10267 14783 10199 10235 10268 10266 10282 10360 10245 10361 10339 10244 10348 12303 12305 12262 12309 12311 12301 12312 12310 12340 12341 12300 12334 12335 12324 12297 12325 12323 12372 12368 12075 12023 12074 12076 12077 12078 12060 12067 12068 12019 12130 12131 12024 12100 12101 12099 12146 12147 12017 11994 12016 12018 12000 11999 7892 7876 7893 7881 7882 7883 7778 7968 7967 7688 7650 7687 7689 7680 7693 7694 8039 8040 8009 8067 8068 8042 7648 7698 7699 7997 7998 7976 8055 8056 8054 8459 8479 8482 9286 8112 9275 8221 8115 8219 8214 8117 8466 8463 8118 9303 9281 8162 8477 8478 9274 8129 8074 8075 8076 8084 8088 8019 8101 8102 8103 8080 8104 8090 8060 8079 8081 8021 8061 8062 8022 8023 8010 7981 8020 12239 12252 12277 12275 12296 12302 12251 12304 7942 7886 7854 7894 7890 7943 7800 12442 12395 12588 12576 12386 12349 12381 12584 12580 12861 12862 11076 7944 11077 7770 7785 7843 7945 7790 10214 11059 10070 11060 10024 10017 10036 10068 7761 11104 11102 10288 10362 10184 10363 12433 12452 12458 12471 12416 12454 12447 12446 12424 12448 12408 10364 10337 10218 10365 12412 11382 12413 12900 12899 12391 12472 12461 12390 12434 12432 11325 11356 11383 11349 11381 11371 11355 11324 11369 11376 14737 10293 14780 10198 10234 10294 10292 10349 10243 10366 12267 12261 12313 12314 12316 12298 12315 12317 12327 12342 12336 12299 12343 12344 12345 12346 12255 12365 12380 11993 12058 12059 12057 12084 12085 12086 12036 12087 12088 12120 12132 12128 12133 12134 12035 12148 12149 12047 11992 12048 12049 12040 12039 7799 7887 7885 7850 7877 7878 7867 7841 7884 7880 7959 7950 7590 7681 7682 7683 7665 7684 7661 7662 7663 7605 8057 8058 8005 8077 8078 8028 8464 8460 8133 8111 8218 8220 8029 7975 8030 8031 8144 8143 8145 8140 8141 8139 8163 8161 8156 8157 8155 8092 8093 8094 8018 8105 8106 8082 8091 8089 8017 8083 8070 8033 8063 8059 8034 8035 7999 7980 8032 12165 12268 12352 12166 12353 12257 12244 12266 7811 7855 7856 7820 12421 12394 12422 12420 12856 12860 12186 7757 7777 7786 7784 7812 7792 7810 7764 11083 8231 11112 11081 8458 11088 8230 10338 11068 8229 11092 12400 12459 12389 12460 12423 12425 12388 10283 10257 10197 10336 12894 11318 12897 12898 11332 11391 11397 12895 11336 11398 11387 11399 11358 11388 11377 11389 11350 11327 11317 11375 11946 14810 10350 14716 10196 10230 10351 12318 12256 12243 12319 12321 12242 12320 12322 12287 12328 12329 12250 12330 12326 12347 12348 12241 12375 12369 12103 12022 12104 12105 12094 12106 12102 12108 12109 12107 12119 12121 12034 12150 12151 12144 12123 12152 12033 11991 12046 12050 12005 12004 7776 7888 7889 7879 7775 7875 7840 7823 7842 7763 7948 7952 7685 7581 7686 7666 7606 7667 7649 7664 7660 7580 8462 8461 8116 7989 7974 8027 8016 8095 8096 8015 8165 8166 8164 8226 8224 8170 8154 8167 8168 8171 8169 7988 7973 8107 8108 8109 8097 8014 7969 7992 7991 7987 7972 8071 8069 8072 8073 8000 7979 7971 8001 12172 12173 12179 12187 12185 12351 12192 12362 7772 7819 7821 7756 12174 12164 12854 12857 8238 8473 8484 8271 8237 8476 8465 8268 8245 8243 8246 8244 10256 11111 8265 11064 12867 11331 11363 12891 11345 10213 10192 10183 10258 11348 11364 11354 11362 14714 11365 11385 11390 11392 11357 11396 11393 11400 11335 11394 11323 11395 11956 11531 11529 11973 11562 11565 14743 12171 12355 12204 12356 12170 12182 12357 12354 12229 12350 12359 12178 12360 12361 12216 12363 12358 12370 12376 11990 12055 12056 12054 12095 12093 12032 12110 12111 12031 12153 12154 12155 12135 12156 12030 12122 12124 12089 11989 12042 12090 12091 12092 8475 8286 8488 8474 8250 8472 8489 8430 8486 8471 8365 8485 8487 8338 8490 8480 8418 8468 8470 8337 8469 8481 8373 8467 8456 8451 8449 8173 8225 8216 8128 8138 8174 8175 8176 8172 8213 8215 8185 8114 8217 8222 8223 8121 12189 12180 12188 12190 12183 12191 12193 8236 8235 8483 8317 12175 12888 11316 12885 8247 8272 8254 8270 8253 8267 8269 8234 8251 8266 8264 11344 11067 8240 8301 11065 11338 11346 11334 11347 11360 11322 11361 11359 8228 11538 11590 14710 14789 11373 11352 11374 11372 11545 11566 11553 11564 11367 11379 11384 11386 11353 11330 11315 11401 11402 11964 11593 11540 11939 11547 11563 11561 12194 12205 12201 12199 12203 12206 12207 12208 12230 12231 12210 12217 12218 12219 12209 12215 12169 12367 12373 12113 12021 12114 12115 12070 12116 12117 12080 12118 12112 12157 12158 12029 12126 12136 12137 12138 12139 12028 11988 12041 12043 12003 12002 8252 8287 8285 8274 8275 8276 8233 8434 8433 8332 8366 8364 8349 8393 8394 8395 8419 8420 8348 8361 8362 8363 8374 8372 8331 8448 8445 8182 8183 8181 8177 8186 8184 8152 8127 8151 8153 8137 8136 12196 12197 12163 12195 8288 8277 8318 8319 12869 11320 11326 12889 8293 8292 8259 8294 8249 8300 8258 8302 11321 11314 11339 11340 8262 8248 8263 8261 11509 11405 11506 11501 11412 8239 11424 11500 11329 11505 11537 11618 14711 14799 11580 11589 11552 11591 11313 11368 11351 11366 11567 11581 11557 11582 11328 11312 11380 11378 11968 11530 11951 11969 11539 11584 11633 11536 11957 11551 11594 11592 12184 12198 12177 12200 12213 12214 12212 12232 12233 12224 12211 12225 12226 12227 12223 12181 12371 12378 11987 12052 12053 12051 12071 12072 12027 12081 12079 12026 12159 12160 12125 12097 12127 12025 12140 12141 12044 11986 12013 12045 12038 12037 8296 8297 8298 8283 8260 8284 8282 8439 8437 8342 8383 8384 8385 8392 8396 8356 8421 8422 8401 8400 8402 8375 8351 8376 8340 8452 8443 8126 8193 8194 8192 8196 8197 8198 8125 8190 8199 8200 8195 12221 12863 11311 12883 8307 8320 8257 8321 11512 11404 11511 11502 8308 8290 8256 8309 11411 8273 8306 8255 8310 11421 11485 11427 11508 8227 8280 8281 8279 11417 11428 11422 11426 14739 11425 11420 11409 11423 11535 11587 11549 14769 11471 11419 11503 11504 11611 11619 11550 11620 11408 11612 11601 11556 11613 11458 11410 11507 11510 11572 11614 11555 11610 11403 11959 11528 11962 11634 11559 11560 11546 11558 11568 11585 11544 11583 11625 11554 11635 12168 12220 12222 12202 12234 12235 12176 12236 12228 12237 12238 12167 12366 12379 12062 11979 12061 12063 12001 12073 12069 11985 12082 12083 12161 12162 12020 11984 12098 12096 12142 12143 12014 11977 11982 12015 11998 11997 8291 8295 8299 8304 8305 8303 8431 8440 8336 8386 8382 8355 8404 8405 8403 8423 8424 8354 8410 8411 8412 8347 8413 8414 8444 8450 8204 8205 8206 8188 8201 8202 8187 8124 8191 8189 8147 8146 11445 12872 12890 8322 8323 8312 11446 11444 11437 8324 8325 8289 11439 11447 11448 8242 8326 8316 11476 11484 11486 11534 14761 14786 11434 11477 11475 11569 11570 11571 11438 11472 11473 11588 11586 11577 11459 11460 11461 11621 11622 11595 11432 11457 11454 11623 11624 11606 11431 11433 11430 11616 11636 11637 11955 11960 11543 11617 11615 11600 11597 11598 11596 11626 11627 11416 12871 12870 11492 12864 12868 11513 12882 12865 11172 12896 12874 11131 12866 12878 11279 12884 12902 11130 12893 12887 11287 12876 12873 11129 12877 12879 11263 12892 12875 11114 11118 12886 12880 12881 8313 8314 8241 8438 8436 8406 8346 8407 8408 8398 8409 8353 8417 8425 8415 8378 8416 8388 8389 8390 8335 8454 8455 8123 8159 8207 8208 8179 8209 8210 8122 8148 8211 8212 8203 11481 11482 11483 8315 8311 8278 11487 11488 11489 8327 8328 8232 11479 11490 11440 11575 14720 14750 11470 11480 11478 11576 11574 11533 11463 11474 11466 11578 11579 11548 11455 11462 11464 11607 11608 11609 11441 11456 11450 11599 11605 11542 11442 11443 11418 11628 11638 11632 11972 11958 11603 11629 11630 11541 11532 11602 11604 11631 11573 11493 11494 11407 11515 11525 11116 11173 11174 11154 11190 11191 11192 11280 11281 11153 11224 11225 11223 11288 11289 11152 11221 11222 11220 11264 11265 11146 11128 11145 11147 11137 11136 8432 8441 8334 8359 8360 8358 8368 8399 8397 8426 8427 8352 8379 8380 8357 8344 8391 8387 8446 8453 8160 8130 8158 8142 8180 8178 8149 8113 8120 8150 8135 8134 11495 11496 11429 8435 8442 8369 11497 11491 11415 11745 14767 14715 11436 11498 11499 11739 11741 11653 11467 11468 11414 11736 11744 11649 11435 11469 11465 11738 11737 11690 11451 11452 11413 11730 11733 11648 11453 11449 11406 11743 11731 11713 11976 11975 11729 11740 11734 11647 11643 11742 11735 11732 11652 11518 11526 11133 11156 11171 11175 11212 11211 11213 11282 11283 11243 11244 11245 11170 11290 11291 11240 11241 11242 11169 11266 11267 11186 11127 11187 11188 11179 11178 8330 8367 8370 8339 8371 8350 8428 8429 8381 8333 8377 8343 8341 8345 8329 8447 8457 8119 8110 8131 8132 14793 14757 14752 11747 11750 14756 14791 14749 11519 11524 11233 11642 14754 14744 11527 11523 11126 11661 11662 11663 11516 11514 11205 11672 11673 11671 11522 11521 11125 11669 11689 11691 11520 11517 11200 11695 11696 11694 11954 11953 11952 11712 11714 11708 11675 11965 11716 11717 11718 11719 11660 11720 11715 11721 11722 11151 11234 11235 11232 11236 11168 11284 11285 11167 11300 11301 11302 11303 11304 11166 11262 11268 11269 11230 11270 11165 11124 11189 11185 11141 11140 11685 14766 14726 11650 14796 14774 11930 14782 14755 11767 14804 14713 11817 14813 14773 11765 14727 14778 11856 14730 11771 11764 11770 11772 11769 11768 11197 11198 11196 11686 11684 11654 11150 11204 11206 11687 11688 11664 11194 11195 11193 11692 11693 11680 11115 11199 11201 11703 11704 11705 11950 11949 11641 11670 11709 11710 11657 11676 11677 11723 11724 11725 11665 11674 11678 11726 11698 11247 11248 11249 11227 11286 11278 11305 11306 11164 11307 11308 11271 11253 11272 11163 11229 11231 11207 11123 11181 11208 11209 11210 11655 11656 11640 11924 11925 11749 11785 11786 11784 11796 11818 11819 11820 11816 11801 11857 11855 11789 11763 11790 11791 11788 11787 11250 11251 11162 11681 11682 11683 11202 11252 11246 11668 11679 11646 11132 11203 11155 11667 11706 11702 11945 11948 11651 11711 11707 11645 11639 11658 11659 11666 11727 11728 11699 11700 11701 11697 11644 11228 11226 11161 11292 11309 11299 11273 11310 11160 11238 11254 11255 11256 11257 11159 11122 11182 11180 11139 11138 11923 11928 11876 11800 11877 11878 11850 11879 11880 11881 11882 11862 11863 11864 11825 11762 11826 11827 11822 11821 11293 11294 11295 11929 11934 11761 11296 11297 11149 11931 11933 11905 11941 11943 11922 11926 11920 11760 11766 11927 11935 11938 11937 11900 11812 11932 11936 11921 11759 11218 11298 11158 11274 11275 11237 11215 11239 11157 11258 11259 11183 11121 11142 11184 11177 11176 11838 11839 11837 11851 11849 11810 11883 11875 11809 11865 11866 11808 11758 11828 11824 11780 11779 11120 11219 11217 11799 11906 11907 11967 11942 11748 11835 11836 11834 11782 11783 11781 11798 11901 11902 11795 11813 11814 11811 11815 11276 11277 11148 11119 11216 11214 11260 11261 11143 11113 11117 11144 11135 11134 11847 11908 11909 11910 11911 11893 11873 11894 11895 11757 11844 11896 11897 11898 11961 11940 11885 11848 11846 11807 11797 11886 11887 11853 11903 11899 11888 11889 11852 11854 11806 11971 11970 11756 11966 11944 11830 11746 11974 11963 11947 11751 11912 11904 11805 11874 11872 11804 11755 11845 11843 11778 11777 11831 11832 11833 11890 11913 11914 11867 11891 11892 11884 11803 11793 11829 11823 11754 11774 11773 11792 11794 11868 11915 11916 11753 11841 11917 11918 11919 11859 11869 11870 11871 11802 11752 11860 11858 11861 11842 11776 11775 11840 metis-edf-4.1/Test/dir_metis/0000755000372500037370000000000011115456040016421 5ustar courtoisastergrpmetis-edf-4.1/Makefile0000644000372500037370000000154311307221635015171 0ustar courtoisastergrp# WARNING : This file has been modified for Code_Aster # http://www.code-aster.org SHELL=/bin/sh SUBDIRS=Lib Programs CONFDIR=./CONFIG default: Makefile.in onmetis.exe pmetis kmetis tests onmetis.exe: Makefile.in for d in $(SUBDIRS); do \ (cd $$d && $(MAKE)); \ done pmetis: Makefile.in for d in $(SUBDIRS); do \ (cd $$d && $(MAKE)); \ done kmetis: Makefile.in for d in $(SUBDIRS); do \ (cd $$d && $(MAKE)); \ done tests: cd Test ; make clean: for d in $(SUBDIRS) Test; do \ (cd $$d && $(MAKE) $@); \ done distclean: for d in $(SUBDIRS) Test; do \ (cd $$d && $(MAKE) $@); \ done -$(RM) Makefile.in ################################################################# # config : define variables depends on platform # Linux, IRIX64, SunOS (SOLARIS/SOLARIS64), OSF1 (TRU64) Makefile.in: sh $(CONFDIR)/configure metis-edf-4.1/FILES0000644000372500037370000000074011115455203014311 0ustar courtoisastergrp The distribution of METIS 4.0 consists of a number of files arranged in five directories. The files contained in each directory are as follows: Doc/ Contains METIS's user manual Graphs/ Contains some small sample graphs and meshes that can be used with METIS. Lib/ Contains the code for METIS's library Programs/ Contains the code for METIS's stand-alone programs Test/ Contains a comprehensive tester for METIS's partitioning routines. metis-edf-4.1/Programs/0000755000372500037370000000000011115456155015324 5ustar courtoisastergrpmetis-edf-4.1/Programs/io.c0000644000372500037370000002326511115455203016100 0ustar courtoisastergrp/* * Copyright 1997, Regents of the University of Minnesota * * io.c * * This file contains routines related to I/O * * Started 8/28/94 * George * * $Id: io.c,v 1.1 1998/11/27 17:59:34 karypis Exp $ * */ #include /************************************************************************* * This function reads the spd matrix **************************************************************************/ void ReadGraph(GraphType *graph, char *filename, long *wgtflag) { long i, j, k, l, fmt, readew, readvw, ncon, edge, ewgt; idxtype *xadj, *adjncy, *vwgt, *adjwgt; char *line, *oldstr, *newstr; FILE *fpin; InitGraph(graph); line = (char *)malloc(sizeof(char)*(MAXLINE+1)); if ((fpin = fopen(filename, "r")) == NULL) { printf("Failed to open file %s\n", filename); exit(0); } do { fgets(line, MAXLINE, fpin); } while (line[0] == '%' && !feof(fpin)); if (feof(fpin)) { graph->nvtxs = 0; free(line); return; } fmt = ncon = 0; sscanf(line, "%ld %ld %ld %ld", &(graph->nvtxs), &(graph->nedges), &fmt, &ncon); readew = (fmt%10 > 0); readvw = ((fmt/10)%10 > 0); if (fmt >= 100) { printf("Cannot read this type of file format!"); exit(0); } *wgtflag = 0; if (readew) *wgtflag += 1; if (readvw) *wgtflag += 2; if (ncon > 0 && !readvw) { printf("------------------------------------------------------------------------------\n"); printf("*** I detected an error in your input file ***\n\n"); printf("You specified ncon=%d, but the fmt parameter does not specify vertex weights\n", ncon); printf("Make sure that the fmt parameter is set to either 10 or 11.\n"); printf("------------------------------------------------------------------------------\n"); exit(0); } graph->nedges *=2; ncon = graph->ncon = (ncon == 0 ? 1 : ncon); /*printf("%d %d %d %d %d [%d %d]\n", fmt, fmt%10, (fmt/10)%10, ncon, graph->ncon, readew, readvw);*/ if (graph->nvtxs > MAXIDX) errexit("\nThe matrix is too big: %d [%d %d]\n", graph->nvtxs, MAXIDX, sizeof(idxtype)); xadj = graph->xadj = idxsmalloc(graph->nvtxs+1, 0, "ReadGraph: xadj"); adjncy = graph->adjncy = idxmalloc(graph->nedges, "ReadGraph: adjncy"); vwgt = graph->vwgt = (readvw ? idxmalloc(ncon*graph->nvtxs, "ReadGraph: vwgt") : NULL); adjwgt = graph->adjwgt = (readew ? idxmalloc(graph->nedges, "ReadGraph: adjwgt") : NULL); /* Start reading the graph file */ for (xadj[0]=0, k=0, i=0; invtxs; i++) { do { fgets(line, MAXLINE, fpin); } while (line[0] == '%' && !feof(fpin)); oldstr = line; newstr = NULL; if (strlen(line) == MAXLINE) errexit("\nBuffer for fgets not big enough!\n"); if (readvw) { for (l=0; lnedges) { printf("------------------------------------------------------------------------------\n"); printf("*** I detected an error in your input file ***\n\n"); printf("In the first line of the file, you specified that the graph contained\n%d edges. However, I only found %d edges in the file.\n", graph->nedges/2, k/2); if (2*k == graph->nedges) { printf("\n *> I detected that you specified twice the number of edges that you have in\n"); printf(" the file. Remember that the number of edges specified in the first line\n"); printf(" counts each edge between vertices v and u only once.\n\n"); } printf("Please specify the correct number of edges in the first line of the file.\n"); printf("------------------------------------------------------------------------------\n"); exit(0); } free(line); } /************************************************************************* * This function writes out the partition vector **************************************************************************/ void WritePartition(char *fname, idxtype *part, long n, long nparts) { FILE *fpout; long i; char filename[256]; sprintf(filename,"%s.part.%d",fname, nparts); if ((fpout = fopen(filename, "w")) == NULL) errexit("Problems in opening the partition file: %s", filename); for (i=0; invtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; for (i=0; i 0) printf("A total of %d errors exist in the input file. Correct them, and run again!\n", err); return (err == 0 ? 1 : 0); } /************************************************************************* * This function reads the element node array of a mesh **************************************************************************/ idxtype *ReadMesh(char *filename, long *ne, long *nn, long *etype) { long i, j, k, esize; idxtype *elmnts; FILE *fpin; if ((fpin = fopen(filename, "r")) == NULL) { printf("Failed to open file %s\n", filename); exit(0); } fscanf(fpin, "%ld %ld", ne, etype); switch (*etype) { case 1: esize = 3; break; case 2: esize = 4; break; case 3: esize = 8; break; case 4: esize = 4; break; default: errexit("Unknown mesh-element type: %d\n", *etype); } elmnts = idxmalloc(esize*(*ne), "ReadMesh: elmnts"); for (j=esize*(*ne), i=0; invtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; nvwgt = graph->nvwgt; sprintf(filename, "moc.graph.%d.%d", nvtxs, ncon); if ((fpout = fopen(filename, "w")) == NULL) { printf("Failed to open file %s\n", filename); exit(0); } fprintf(fpout, "%d %d 10 1 %d", nvtxs, xadj[nvtxs]/2, ncon); for (i=0; i /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, j, ne, nn, etype, numflag=0, nparts, edgecut; idxtype *elmnts, *epart, *npart; timer IOTmr, DUALTmr; char etypestr[4][5] = {"TRI", "TET", "HEX", "QUAD"}; GraphType graph; if (argc != 3) { printf("Usage: %s \n",argv[0]); exit(4); } nparts = atoi(argv[2]); if (nparts < 2) { printf("nparts must be greater than one.\n"); exit(4); } cleartimer(IOTmr); cleartimer(DUALTmr); starttimer(IOTmr); elmnts = ReadMesh(argv[1], &ne, &nn, &etype); stoptimer(IOTmr); epart = idxmalloc(ne, "main: epart"); npart = idxmalloc(nn, "main: npart"); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Mesh Information ----------------------------------------------------\n"); printf(" Name: %s, #Elements: %ld, #Nodes: %ld, Etype: %s\n\n", argv[1], ne, nn, etypestr[etype-1]); printf("Partitioning Nodal Graph... -----------------------------------------\n"); starttimer(DUALTmr); METIS_PartMeshNodal(&ne, &nn, elmnts, &etype, &numflag, &nparts, &edgecut, epart, npart); stoptimer(DUALTmr); printf(" %ld-way Edge-Cut: %7ld, Balance: %5.2f\n", nparts, edgecut, ComputeElementBalance(ne, nparts, epart)); starttimer(IOTmr); WriteMeshPartition(argv[1], nparts, ne, epart, nn, npart); stoptimer(IOTmr); printf("\nTiming Information --------------------------------------------------\n"); printf(" I/O: \t\t %7.3f\n", gettimer(IOTmr)); printf(" Partitioning: \t\t %7.3f\n", gettimer(DUALTmr)); printf("**********************************************************************\n"); /* graph.nvtxs = ne; graph.xadj = idxmalloc(ne+1, "xadj"); graph.vwgt = idxsmalloc(ne, 1, "vwgt"); graph.adjncy = idxmalloc(10*ne, "adjncy"); graph.adjwgt = idxsmalloc(10*ne, 1, "adjncy"); METIS_MeshToDual(&ne, &nn, elmnts, &etype, &numflag, graph.xadj, graph.adjncy); ComputePartitionInfo(&graph, nparts, epart); GKfree(&graph.xadj, &graph.adjncy, &graph.vwgt, &graph.adjwgt, LTERM); */ GKfree(&elmnts, &epart, &npart, LTERM); } metis-edf-4.1/Programs/lect00.f0000644000372500037370000000040411115455203016551 0ustar courtoisastergrp subroutine lect00(n,ll) implicit none integer n,ll c open(UNIT=81,FILE='fort.81',FORM='FORMATTED') c rewind 81 read(81,1001) n,ll 1001 FORMAT(8I10) c print *,'lect00 ',n,ll c close(UNIT=81) end metis-edf-4.1/Programs/lect10.f0000644000372500037370000000032711115455203016556 0ustar courtoisastergrp subroutine lect10(n,l) implicit none integer n,l,i,ll,j,deb,fin c open(UNIT=84,FILE='fort.84',FORM='FORMATTED',STATUS='OLD') rewind 81 read(81) i,n,l 1000 format (10i8) end metis-edf-4.1/Programs/lect11.f0000644000372500037370000000152611115455203016561 0ustar courtoisastergrp subroutine lect11(n,long,xadj,adjncy,niv,ifm) implicit none integer xadj(*), adjncy(*),n,long,i,ll,j,deb,fin,niv integer ifm c open(UNIT=81,FILE='fort.81',FORM='FORMATTED') c rewind 81 read(81,1001) n,ll,niv,ifm 1001 FORMAT(8I10) c if(niv.GE.1) then write(ifm,*) 'Metis nombres de noeuds, d''aretes ', n,long endif read(81,1001) (xadj(i),i=1,n+1) 1000 FORMAT(10I8) if(niv.GE.1) then write(ifm,*) 'Metis Tableau Xadj lu ' endif do j=1,n deb=xadj(j) fin = xadj(j+1)-1 read(81,1000) (adjncy(i),i=deb,fin) enddo if(niv.GE.1) then write(ifm,*) 'Metis Tableau Adjncy lu ' endif do i=1,n+1 xadj(i)= xadj(i)-1 enddo do i=1,long adjncy(i)= adjncy(i) - 1 enddo end metis-edf-4.1/Programs/io_aster.c0000644000372500037370000002457011115455203017276 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * io.c * * This file contains routines related to I/O * * Started 8/28/94 * George * * $Id: io.c,v 1.1 1998/11/27 17:59:34 karypis Exp $ * */ #include /************************************************************************* * This function reads the spd matrix **************************************************************************/ void ReadGraph(GraphType *graph, char *filename, long *wgtflag) { long i, j, k, l, fmt, readew, readvw, ncon, edge, ewgt,ifm,niv; idxtype *xadj, *adjncy, *vwgt, *adjwgt; char *line, *oldstr, *newstr; FILE *fpin; InitGraph(graph); line = (char *)malloc(sizeof(char)*(MAXLINE+1)); if ((fpin = fopen(filename, "r")) == NULL) { printf("Failed to open file %s\n", filename); exit(4); } /* do { fgets(line, MAXLINE, fpin); } while (line[0] == '%' && !feof(fpin)); if (feof(fpin)) { graph->nvtxs = 0; free(line); return; } */ fmt = ncon = 0; /* sscanf(line, "%ld %ld %ld %ld", &(graph->nvtxs), &(graph->nedges), &fmt, &ncon);*/ lect00_(&(graph->nvtxs),&(graph->nedges)); readew = (fmt%10 > 0); readvw = ((fmt/10)%10 > 0); if (fmt >= 100) { printf("Cannot read this type of file format!"); exit(4); } *wgtflag = 0; if (readew) *wgtflag += 1; if (readvw) *wgtflag += 2; if (ncon > 0 && !readvw) { printf("------------------------------------------------------------------------------\n"); printf("*** I detected an error in your input file ***\n\n"); printf("You specified ncon=%ld, but the fmt parameter does not specify vertex weights\n", ncon); printf("Make sure that the fmt parameter is set to either 10 or 11.\n"); printf("------------------------------------------------------------------------------\n"); exit(4); } graph->nedges *=2; ncon = graph->ncon = (ncon == 0 ? 1 : ncon); if (graph->nvtxs > MAXIDX) errexit("\nThe matrix is too big: %ld [%ld %ld]\n", graph->nvtxs, MAXIDX, sizeof(idxtype)); xadj = graph->xadj = idxsmalloc(graph->nvtxs+1, 0, "ReadGraph: xadj"); adjncy = graph->adjncy = idxmalloc(graph->nedges, "ReadGraph: adjncy"); /* vwgt = graph->vwgt = (readvw ? idxmalloc(ncon*graph->nvtxs, "ReadGraph: vwgt") : NULL); adjwgt = graph->adjwgt = (readew ? idxmalloc(graph->nedges, "ReadGraph: adjwgt") : NULL);*/ /* Start reading the graph file for (xadj[0]=0, k=0, i=0; invtxs; i++) { do { fgets(line, MAXLINE, fpin); } while (line[0] == '%' && !feof(fpin)); oldstr = line; newstr = NULL; if (strlen(line) == MAXLINE) errexit("\nBuffer for fgets not big enough!\n"); if (readvw) { for (l=0; lnvtxs),&(graph->nedges),xadj,adjncy,&niv,&ifm); /* if (k != graph->nedges) { printf("------------------------------------------------------------------------------\n"); printf("*** I detected an error in your input file ***\n\n"); printf("In the first line of the file, you specified that the graph contained\n%d edges. However, I only found %ld edges in the file.\n", graph->nedges/2, k/2); if (2*k == graph->nedges) { printf("\n *> I detected that you specified twice the number of edges that you have in\n"); printf(" the file. Remember that the number of edges specified in the first line\n"); printf(" counts each edge between vertices v and u only once.\n\n"); } printf("Please specify the correct number of edges in the first line of the file.\n"); printf("------------------------------------------------------------------------------\n"); exit(4); } */ free(line); } /************************************************************************* * This function writes out the partition vector **************************************************************************/ void WritePartition(char *fname, idxtype *part, long n, long nparts) { FILE *fpout; long i; char filename[256]; sprintf(filename,"%s.part.%ld",fname, nparts); if ((fpout = fopen(filename, "w")) == NULL) errexit("Problems in opening the partition file: %s", filename); for (i=0; invtxs; xadj = graph->xadj; adjncy = graph->adjncy; adjwgt = graph->adjwgt; for (i=0; i 0) printf("A total of %ld errors exist in the input file. Correct them, and run again!\n", err); return (err == 0 ? 1 : 0); } /************************************************************************* * This function reads the element node array of a mesh **************************************************************************/ idxtype *ReadMesh(char *filename, long *ne, long *nn, long *etype) { long i, j, k, esize; idxtype *elmnts; FILE *fpin; if ((fpin = fopen(filename, "r")) == NULL) { printf("Failed to open file %s\n", filename); exit(4); } fscanf(fpin, "%ld %ld", ne, etype); switch (*etype) { case 1: esize = 3; break; case 2: esize = 4; break; case 3: esize = 8; break; case 4: esize = 4; break; default: errexit("Unknown mesh-element type: %ld\n", *etype); } elmnts = idxmalloc(esize*(*ne), "ReadMesh: elmnts"); for (j=esize*(*ne), i=0; invtxs; ncon = graph->ncon; xadj = graph->xadj; adjncy = graph->adjncy; nvwgt = graph->nvwgt; sprintf(filename, "moc.graph.%ld.%ld", nvtxs, ncon); if ((fpout = fopen(filename, "w")) == NULL) { printf("Failed to open file %s\n", filename); exit(4); } fprintf(fpout, "%ld %ld 10 1 %ld", nvtxs, xadj[nvtxs]/2, ncon); for (i=0; i /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, options[10]; idxtype *perm, *iperm; GraphType graph; char filename[256]; long numflag = 0, wgtflag; timer TOTALTmr, METISTmr, IOTmr, SMBTmr; if (argc != 2) { printf("Usage: %s [--version] \n",argv[0]); exit(4); } else { if ( strcmp(argv[1],"--version") == 0 ) { printf("metis-edf-4.1\n"); exit(1); } } strcpy(filename, argv[1]); cleartimer(TOTALTmr); cleartimer(METISTmr); cleartimer(IOTmr); cleartimer(SMBTmr); starttimer(TOTALTmr); starttimer(IOTmr); ReadGraph(&graph, filename, &wgtflag); if (graph.nvtxs <= 0) { printf("Empty graph. Nothing to do.\n"); exit(4); } if (graph.ncon != 1) { printf("Ordering can only be applied to graphs with one constraint.\n"); exit(4); } stoptimer(IOTmr); /* Ordering does not use weights! */ GKfree(&graph.vwgt, &graph.adjwgt, LTERM); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("%s", EDFTITLE); printf("Graph Information ---------------------------------------------------\n"); printf(" Name: %s, #Vertices: %ld, #Edges: %ld\n\n", filename, graph.nvtxs, graph.nedges/2); printf("Node-Based Ordering... ----------------------------------------------\n"); perm = idxmalloc(graph.nvtxs, "main: perm"); iperm = idxmalloc(graph.nvtxs, "main: iperm"); options[0] = 0; starttimer(METISTmr); METIS_NodeND(&graph.nvtxs, graph.xadj, graph.adjncy, &numflag, options, perm, iperm); stoptimer(METISTmr); starttimer(IOTmr); WritePermutation(filename, iperm, graph.nvtxs); stoptimer(IOTmr); starttimer(SMBTmr); ComputeFillIn(&graph, iperm); stoptimer(SMBTmr); stoptimer(TOTALTmr); printf("\nTiming Information --------------------------------------------------\n"); printf(" I/O: \t %7.3f\n", gettimer(IOTmr)); printf(" Ordering: \t %7.3f (ONMETIS time)\n", gettimer(METISTmr)); printf(" Symbolic Factorization: \t %7.3f\n", gettimer(SMBTmr)); printf(" Total: \t %7.3f\n", gettimer(TOTALTmr)); printf("**********************************************************************\n"); GKfree(&graph.xadj, &graph.adjncy, &perm, &iperm, LTERM); exit(0); } metis-edf-4.1/Programs/mesh2nodal.c0000644000372500037370000000420111115455203017512 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mesh2nodal.c * * This file reads in the element node connectivity array of a mesh and writes * out its dual in the format suitable for Metis. * * Started 9/29/97 * George * * $Id: mesh2nodal.c,v 1.1 1998/11/27 17:59:35 karypis Exp $ * */ #include /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, j, ne, nn, etype, numflag=0; idxtype *elmnts, *xadj, *adjncy; timer IOTmr, DUALTmr; char fileout[256], etypestr[4][5] = {"TRI", "TET", "HEX", "QUAD"}; if (argc != 2) { printf("Usage: %s \n",argv[0]); exit(4); } cleartimer(IOTmr); cleartimer(DUALTmr); starttimer(IOTmr); elmnts = ReadMesh(argv[1], &ne, &nn, &etype); stoptimer(IOTmr); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Mesh Information ----------------------------------------------------\n"); printf(" Name: %s, #Elements: %ld, #Nodes: %ld, Etype: %s\n\n", argv[1], ne, nn, etypestr[etype-1]); printf("Forming Nodal Graph... ----------------------------------------------\n"); xadj = idxmalloc(nn+1, "main: xadj"); adjncy = idxmalloc(20*nn, "main: adjncy"); starttimer(DUALTmr); METIS_MeshToNodal(&ne, &nn, elmnts, &etype, &numflag, xadj, adjncy); stoptimer(DUALTmr); printf(" Nodal Information: #Vertices: %ld, #Edges: %ld\n", nn, xadj[nn]/2); sprintf(fileout, "%s.ngraph", argv[1]); starttimer(IOTmr); WriteGraph(fileout, nn, xadj, adjncy); stoptimer(IOTmr); printf("\nTiming Information --------------------------------------------------\n"); printf(" I/O: \t\t %7.3f\n", gettimer(IOTmr)); printf(" Nodal Creation:\t\t %7.3f\n", gettimer(DUALTmr)); printf("**********************************************************************\n"); GKfree(&elmnts, &xadj, &adjncy, LTERM); } metis-edf-4.1/Programs/mesh2dual.c0000644000372500037370000000417411115455203017353 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * mesh2dual.c * * This file reads in the element node connectivity array of a mesh and writes * out its dual in the format suitable for Metis. * * Started 9/29/97 * George * * $Id: mesh2dual.c,v 1.1 1998/11/27 17:59:35 karypis Exp $ * */ #include /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, j, ne, nn, etype, numflag=0; idxtype *elmnts, *xadj, *adjncy; timer IOTmr, DUALTmr; char fileout[256], etypestr[4][5] = {"TRI", "TET", "HEX", "QUAD"}; if (argc != 2) { printf("Usage: %s \n",argv[0]); exit(4); } cleartimer(IOTmr); cleartimer(DUALTmr); starttimer(IOTmr); elmnts = ReadMesh(argv[1], &ne, &nn, &etype); stoptimer(IOTmr); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Mesh Information ----------------------------------------------------\n"); printf(" Name: %s, #Elements: %ld, #Nodes: %ld, Etype: %s\n\n", argv[1], ne, nn, etypestr[etype-1]); printf("Forming Dual Graph... -----------------------------------------------\n"); xadj = idxmalloc(ne+1, "main: xadj"); adjncy = idxmalloc(10*ne, "main: adjncy"); starttimer(DUALTmr); METIS_MeshToDual(&ne, &nn, elmnts, &etype, &numflag, xadj, adjncy); stoptimer(DUALTmr); printf(" Dual Information: #Vertices: %ld, #Edges: %ld\n", ne, xadj[ne]/2); sprintf(fileout, "%s.dgraph", argv[1]); starttimer(IOTmr); WriteGraph(fileout, ne, xadj, adjncy); stoptimer(IOTmr); printf("\nTiming Information --------------------------------------------------\n"); printf(" I/O: \t\t %7.3f\n", gettimer(IOTmr)); printf(" Dual Creation:\t\t %7.3f\n", gettimer(DUALTmr)); printf("**********************************************************************\n"); GKfree(&elmnts, &xadj, &adjncy, LTERM); } metis-edf-4.1/Programs/partdmesh.c0000644000372500037370000000537611115455203017463 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * partdmesh.c * * This file reads in the element node connectivity array of a mesh and * partitions both the elements and the nodes using KMETIS on the dual graph. * * Started 9/29/97 * George * * $Id: partdmesh.c,v 1.1 1998/11/27 17:59:38 karypis Exp $ * */ #include /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, j, ne, nn, etype, numflag=0, nparts, edgecut; idxtype *elmnts, *epart, *npart; timer IOTmr, DUALTmr; char etypestr[4][5] = {"TRI", "TET", "HEX", "QUAD"}; GraphType graph; if (argc != 3) { printf("Usage: %s \n",argv[0]); exit(4); } nparts = atoi(argv[2]); if (nparts < 2) { printf("nparts must be greater than one.\n"); exit(4); } cleartimer(IOTmr); cleartimer(DUALTmr); starttimer(IOTmr); elmnts = ReadMesh(argv[1], &ne, &nn, &etype); stoptimer(IOTmr); epart = idxmalloc(ne, "main: epart"); npart = idxmalloc(nn, "main: npart"); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Mesh Information ----------------------------------------------------\n"); printf(" Name: %s, #Elements: %ld, #Nodes: %ld, Etype: %s\n\n", argv[1], ne, nn, etypestr[etype-1]); printf("Partitioning Dual Graph... ------------------------------------------\n"); starttimer(DUALTmr); METIS_PartMeshDual(&ne, &nn, elmnts, &etype, &numflag, &nparts, &edgecut, epart, npart); stoptimer(DUALTmr); printf(" %ld-way Edge-Cut: %7ld, Balance: %5.2f\n", nparts, edgecut, ComputeElementBalance(ne, nparts, epart)); starttimer(IOTmr); WriteMeshPartition(argv[1], nparts, ne, epart, nn, npart); stoptimer(IOTmr); printf("\nTiming Information --------------------------------------------------\n"); printf(" I/O: \t\t %7.3f\n", gettimer(IOTmr)); printf(" Partitioning: \t\t %7.3f\n", gettimer(DUALTmr)); printf("**********************************************************************\n"); /* graph.nvtxs = nn; graph.xadj = idxmalloc(nn+1, "xadj"); graph.vwgt = idxsmalloc(nn, 1, "vwgt"); graph.adjncy = idxmalloc(20*nn, "adjncy"); graph.adjwgt = idxsmalloc(20*nn, 1, "adjncy"); METIS_MeshToNodal(&ne, &nn, elmnts, &etype, &numflag, graph.xadj, graph.adjncy); ComputePartitionInfo(&graph, nparts, npart); GKfree(&graph.xadj, &graph.adjncy, &graph.vwgt, &graph.adjwgt, LTERM); */ GKfree(&elmnts, &epart, &npart, LTERM); } metis-edf-4.1/Programs/smbfactor.c0000755000372500037370000003362311115455203017453 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * smbfactor.c * * This file performs the symbolic factorization of a matrix * * Started 8/1/97 * George * * $Id: smbfactor.c,v 1.1 1998/11/27 17:59:40 karypis Exp $ * */ #include /************************************************************************* * This function sets up data structures for fill-in computations **************************************************************************/ void ComputeFillIn(GraphType *graph, idxtype *iperm) { long i, j, k, nvtxs, maxlnz, maxsub; idxtype *xadj, *adjncy; idxtype *perm, *xlnz, *xnzsub, *nzsub; double opc; /* printf("\nSymbolic factorization... --------------------------------------------\n"); */ nvtxs = graph->nvtxs; xadj = graph->xadj; adjncy = graph->adjncy; maxsub = 4*xadj[nvtxs]; /* Relabel the vertices so that it starts from 1 */ k = xadj[nvtxs]; for (i=0; invtxs; xadj = graph->xadj; adjncy = graph->adjncy; maxsub = 4*xadj[nvtxs]; /* Relabel the vertices so that it starts from 1 */ k = xadj[nvtxs]; for (i=0; i= xadj[node+1]) { xlnz[k+1] = xlnz[k]; continue; } /* USE RCHLNK TO LINK THROUGH THE STRUCTURE OF A(*,K) BELOW DIAGONAL */ rchlnk[k] = neqns+1; for (j=xadj[node]; j lmax) { lmax = inz; xnzsub[k] = jstrt; } /* MERGE STRUCTURE OF L(*,I) IN NZSUB INTO RCHLNK. */ rchm = k; for (j = jstrt; j <= jstop; ++j) { nabor = nzsub[j]; do { m = rchm; rchm = rchlnk[m]; } while (rchm < nabor); if (rchm != nabor) { knz++; rchlnk[m] = nabor; rchlnk[nabor] = rchm; rchm = nabor; } } } /* CHECK IF SUBSCRIPTS DUPLICATE THOSE OF ANOTHER COLUMN */ if (knz == lmax) goto L1400; /* OR IF TAIL OF K-1ST COLUMN MATCHES HEAD OF KTH */ if (nzbeg > nzend) goto L1200; i = rchlnk[k]; for (jstrt = nzbeg; jstrt <= nzend; ++jstrt) { if (nzsub[jstrt] < i) continue; if (nzsub[jstrt] == i) goto L1000; else goto L1200; } goto L1200; L1000: xnzsub[k] = jstrt; for (j = jstrt; j <= nzend; ++j) { if (nzsub[j] != i) goto L1200; i = rchlnk[i]; if (i > neqns) goto L1400; } nzend = jstrt - 1; /* COPY THE STRUCTURE OF L(*,K) FROM RCHLNK TO THE DATA STRUCTURE (XNZSUB, NZSUB) */ L1200: nzbeg = nzend + 1; nzend += knz; if (nzend > *maxsub) { flag = 1; /* Out of memory */ break; } i = k; for (j=nzbeg; j<=nzend; ++j) { i = rchlnk[i]; nzsub[j] = i; marker[i] = k; } xnzsub[k] = nzbeg; marker[k] = k; /* * UPDATE THE VECTOR MRGLNK. NOTE COLUMN L(*,K) JUST FOUND * IS REQUIRED TO DETERMINE COLUMN L(*,J), WHERE * L(J,K) IS THE FIRST NONZERO IN L(*,K) BELOW DIAGONAL. */ L1400: if (knz > 1) { kxsub = xnzsub[k]; i = nzsub[kxsub]; mrglnk[k] = mrglnk[i]; mrglnk[i] = k; } xlnz[k + 1] = xlnz[k] + knz; } if (flag == 0) { *maxlnz = xlnz[neqns] - 1; *maxsub = xnzsub[neqns]; xnzsub[neqns + 1] = xnzsub[neqns]; } parent = idxsmalloc(neqns, 0, "smbfct: parent"); parent--; /* Calculate the elimination tree */ for (i=1; i<=neqns; i++) { if (xlnz[i] < xlnz[i+1]) parent[i] = nzsub[xnzsub[i]]; else parent[i] = -1; /* Indicates no parent */ } supnd = idxsmalloc(neqns+1, 0, "smbfct: supnd"); supnd--; /* super-noeuds */ nbip1 = xlnz[2] -xlnz[1] ; xnzip1 = xnzsub[1]; i=1 ; snode = 1 ; supnd[snode] = 1 ; lgind = nbip1; marker[i]= snode; nbi = nbip1; xnzi = xnzip1; marker[i]= snode; i = i+ 1; /* C.Rose ligne suivante : correction de bug 13/03/02 neqns+1 remplace neqns dans l'instruction suivante Il y avait un pb pour ssll102a avec le dernier SN qui ne comprend qu'un noeud*/ while ( i < neqns+1) { nbip1 = xlnz[i+1] -xlnz[i] ; xnzip1 = xnzsub[i]; if ( nbip1 != (nbi-1)) { snode ++;supnd[snode] = i; lgind += nbip1; } else if ( xnzip1 != (xnzi+1)) { snode ++;supnd[snode] = i; lgind += nbip1; } else {/* verification que dans le sn courant (snode) le noeud i est bien voisin du nd i-1 sinon on crée un nouveau SN correction des fiches 12345 et 12503 */ if( i != nzsub[xnzsub[i-1]] ) { snode ++;supnd[snode] = i; lgind += nbip1; } } nbi = nbip1; xnzi = xnzip1; marker[i]= snode; i = i+ 1; } supnd[snode+1] = neqns +1; lnode =neqns; marker[neqns] = snode ; /* C.Rose ajout de la ligne precedante : correction de bug 11/03/02 */ /* printf(" nbsn : %d \n",snode); for(i=1;i<=neqns;i++) printf(" smarker %8ld %8ld\n ",i,marker[i]); for(i=1;i<=snode+1;i++) printf(" snode %8ld %8ld\n ",i,supnd[i]); */ /* fin de cr*/ minsn = neqns; maxsn = 0; k1 = 0; k2 = 0; k3 = 0; taille1 = 50; taille2 = 20; taille3 = 05; for (i = 1; i<=snode; i++) { aux = supnd[i+1]-supnd[i]; if(aux < minsn) minsn = aux; if(aux > maxsn) maxsn = aux; if(aux < taille1) k1++; if(aux < taille2) k2++; if(aux < taille3) k3++; } printf("\n "); printf(" taille du plus petit super-noeud %8ld\n ",minsn); printf(" taille du plus grand super-noeud %8ld\n ",maxsn); printf(" taille moyenne d un super-noeud %8ld\n ",lnode/snode); printf(" nb de super-noeuds de taille < %4ld : %8ld\n ",taille1,k1); printf(" nb de super-noeuds de taille < %4ld : %8ld\n ",taille2,k2); printf(" nb de super-noeuds de taille < %4ld : %8ld\n ",taille3,k3); /* for (i=1; i<=snode+1; i++) {printf(" i pt. %4ld%4d\n ",i,supnd[i]);} */ /* parent des super-noeuds */ /* principe : on a stocke dans marker pour chaque noeud son super-noeud */ /* maintenant pour chaque super-noeud on prend son dernier noeud, */ /* on cherche le parent de ce noeud, puis le supernoeud auquel */ /* appartient ce parent et on l'affecte comme parent au supernoeud */ /* quand il n'y a pas de parent on met 0 (convention C. Rose) */ parsnode = idxsmalloc(snode+1, 0, "smbfct: parsnode"); parsnode--; tbnode = idxsmalloc(neqns, 0, "smbfct: tbnode"); tbnode--; /*sauvegarde de parent nodal */ for(i = 1; i<=neqns; i++) { tbnode[i] = parent[i]; /* printf(" i %4ld parent %8ld \n", i, tbnode[i]);*/ } for(i = 1; i<=snode; i++) { nd = supnd[i+1] - 1; if(tbnode[nd] != -1) { parsnode[i] = marker[tbnode[nd]]; } else { parsnode[i] = 0; } /* printf(" noeud %4ld parent %8ld \n ",i, parsnode[i]); */ } opc = 0; for (i=1; i<=neqns; i++) xlnz[i]--; for (i=1; i<=neqns; i++) { opc += (xlnz[i+1]-xlnz[i])*(xlnz[i+1]-xlnz[i]) - (xlnz[i+1]-xlnz[i]); } printf(" Nonzeros: %ld, \tOperation Count: %6.4le \n", *maxlnz, opc); /* ecriture sur le fichier 85 */ ecri11_(invp,perm,supnd,parsnode,&neqns,&snode,&opc,maxlnz,&lgind); marker++; mrglnk++; rchlnk++; nzsub++; xnzsub++; xlnz++; invp++; perm++; adjncy++; xadj++; GKfree(&rchlnk, &mrglnk, &marker, LTERM); return flag; } metis-edf-4.1/Programs/kmetis.c0000644000372500037370000000616711115455203016767 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * kmetis.c * * This file contains the driving routine for kmetis * * Started 8/28/94 * George * * $Id: kmetis.c,v 1.1 1998/11/27 17:59:35 karypis Exp $ * */ #include /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, nparts, options[10]; idxtype *part; float rubvec[MAXNCON], lbvec[MAXNCON]; GraphType graph; char filename[256]; long numflag = 0, wgtflag = 0, edgecut; timer TOTALTmr, METISTmr, IOTmr; if (argc != 3) { printf("Usage: %s \n",argv[0]); exit(4); } strcpy(filename, argv[1]); nparts = atoi(argv[2]); if (nparts < 2) { printf("The number of partitions should be greater than 1!\n"); exit(4); } cleartimer(TOTALTmr); cleartimer(METISTmr); cleartimer(IOTmr); starttimer(TOTALTmr); starttimer(IOTmr); ReadGraph(&graph, filename, &wgtflag); if (graph.nvtxs <= 0) { printf("Empty graph. Nothing to do.\n"); exit(4); } stoptimer(IOTmr); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Graph Information ---------------------------------------------------\n"); printf(" Name: %s, #Vertices: %ld, #Edges: %ld, #Parts: %ld\n", filename, graph.nvtxs, graph.nedges/2, nparts); if (graph.ncon > 1) printf(" Balancing Constraints: %ld\n", graph.ncon); printf("\nK-way Partitioning... -----------------------------------------------\n"); part = idxmalloc(graph.nvtxs, "main: part"); options[0] = 0; starttimer(METISTmr); if (graph.ncon == 1) { METIS_PartGraphKway(&graph.nvtxs, graph.xadj, graph.adjncy, graph.vwgt, graph.adjwgt, &wgtflag, &numflag, &nparts, options, &edgecut, part); } else { for (i=0; i /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { GraphType graph; char filename[256]; long wgtflag; if (argc != 2) { printf("Usage: %s \n", argv[0]); exit(4); } strcpy(filename, argv[1]); ReadGraph(&graph, filename, &wgtflag); if (graph.nvtxs == 0) { printf("Empty graph!\n"); exit(4); } printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Graph Information ---------------------------------------------------\n"); printf(" Name: %s, #Vertices: %ld, #Edges: %ld\n\n", filename, graph.nvtxs, graph.nedges/2); printf("Checking Graph... ---------------------------------------------------\n"); if (CheckGraph(&graph)) printf(" The format of the graph is correct!\n"); else printf(" The format of the graph is incorrect!\n"); printf("\n**********************************************************************\n"); GKfree(&graph.xadj, &graph.adjncy, &graph.vwgt, &graph.adjwgt, LTERM); } metis-edf-4.1/Programs/oemetis.c0000644000372500037370000000530311115455203017127 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * oemetis.c * * This file contains the driving routine for multilevel method * * Started 8/28/94 * George * * $Id: oemetis.c,v 1.1 1998/11/27 17:59:37 karypis Exp $ * */ #include /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, options[10]; idxtype *perm, *iperm; GraphType graph; char filename[256]; long numflag = 0, wgtflag; timer TOTALTmr, METISTmr, IOTmr, SMBTmr; if (argc != 2) { printf("Usage: %s \n",argv[0]); exit(4); } strcpy(filename, argv[1]); cleartimer(TOTALTmr); cleartimer(METISTmr); cleartimer(IOTmr); cleartimer(SMBTmr); starttimer(TOTALTmr); starttimer(IOTmr); ReadGraph(&graph, filename, &wgtflag); if (graph.nvtxs <= 0) { printf("Empty graph. Nothing to do.\n"); exit(4); } if (graph.ncon != 1) { printf("Ordering can only be applied to graphs with one constraint.\n"); exit(4); } stoptimer(IOTmr); /* Ordering does not use weights! */ GKfree(&graph.vwgt, &graph.adjwgt, LTERM); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Graph Information ---------------------------------------------------\n"); printf(" Name: %s, #Vertices: %ld, #Edges: %ld\n\n", filename, graph.nvtxs, graph.nedges/2); printf("Edge-Based Ordering... ----------------------------------------------\n"); perm = idxmalloc(graph.nvtxs, "main: perm"); iperm = idxmalloc(graph.nvtxs, "main: iperm"); options[0] = 0; starttimer(METISTmr); METIS_EdgeND(&graph.nvtxs, graph.xadj, graph.adjncy, &numflag, options, perm, iperm); stoptimer(METISTmr); starttimer(IOTmr); WritePermutation(filename, iperm, graph.nvtxs); stoptimer(IOTmr); starttimer(SMBTmr); ComputeFillIn(&graph, iperm); stoptimer(SMBTmr); stoptimer(TOTALTmr); printf("\nTiming Information --------------------------------------------------\n"); printf(" I/O: \t %7.3f\n", gettimer(IOTmr)); printf(" Ordering: \t %7.3f (OEMETIS time)\n", gettimer(METISTmr)); printf(" Symbolic Factorization: \t %7.3f\n", gettimer(SMBTmr)); printf(" Total: \t %7.3f\n", gettimer(TOTALTmr)); printf("**********************************************************************\n"); GKfree(&graph.xadj, &graph.adjncy, &perm, &iperm, LTERM); } metis-edf-4.1/Programs/pmetis.c0000644000372500037370000000605011115455203016763 0ustar courtoisastergrp /* * Copyright 1997, Regents of the University of Minnesota * * pmetis.c * * This file contains the driving routine for multilevel method * * Started 8/28/94 * George * * $Id: pmetis.c,v 1.1 1998/11/27 17:59:39 karypis Exp $ * */ #include /************************************************************************* * Let the game begin **************************************************************************/ main(long argc, char *argv[]) { long i, nparts, options[10]; idxtype *part; float lbvec[MAXNCON]; GraphType graph; char filename[256]; long numflag = 0, wgtflag = 0, edgecut; timer TOTALTmr, METISTmr, IOTmr; if (argc != 3) { printf("Usage: %s \n",argv[0]); exit(4); } strcpy(filename, argv[1]); nparts = atoi(argv[2]); if (nparts < 2) { printf("The number of partitions should be greater than 1!\n"); exit(4); } cleartimer(TOTALTmr); cleartimer(METISTmr); cleartimer(IOTmr); starttimer(TOTALTmr); starttimer(IOTmr); ReadGraph(&graph, filename, &wgtflag); if (graph.nvtxs <= 0) { printf("Empty graph. Nothing to do.\n"); exit(4); } stoptimer(IOTmr); printf("**********************************************************************\n"); printf("%s", METISTITLE); printf("Graph Information ---------------------------------------------------\n"); printf(" Name: %s, #Vertices: %ld, #Edges: %ld, #Parts: %ld\n", filename, graph.nvtxs, graph.nedges/2, nparts); if (graph.ncon > 1) printf(" Balancing Constraints: %ld\n", graph.ncon); printf("\nRecursive Partitioning... -------------------------------------------\n"); part = idxmalloc(graph.nvtxs, "main: part"); options[0] = 0; starttimer(METISTmr); if (graph.ncon == 1) { METIS_PartGraphRecursive(&graph.nvtxs, graph.xadj, graph.adjncy, graph.vwgt, graph.adjwgt, &wgtflag, &numflag, &nparts, options, &edgecut, part); } else { METIS_mCPartGraphRecursive(&graph.nvtxs, &graph.ncon, graph.xadj, graph.adjncy, graph.vwgt, graph.adjwgt, &wgtflag, &numflag, &nparts, options, &edgecut, part); } stoptimer(METISTmr); ComputePartitionBalance(&graph, nparts, part, lbvec); printf(" %ld-way Edge-Cut: %7ld, Balance: ", nparts, edgecut); for (i=0; idbglvl, DBG_SEPINFO, printf("Nvtxs: %6d, [%5d %5d], Cut: %6d, SS: [%6d %6d], Cover: %6d\n", nvtxs, graph->pwgts[0], graph->pwgts[1], graph->mincut, bnvtxs[0], bnvtxs[1]-bnvtxs[0], csize)); 3. struct.h modified : #define MAXIDX (1<<8*sizeof(idxtype)-2) #define MAXIDX (((idxtype)1)<<8*sizeof(idxtype)-2) 4. Compilation options for IRIX64 : -64 -02 et -64 -i8 Link options : -64 metis-edf-4.1/VERSION0000644000372500037370000000033011115455203014567 0ustar courtoisastergrp# METIS 4.0.1 for Code_Aster Thu Sep 13 15:27:29 CEST 2001 # WARNING : This file has been modified for Code_Aster # http://www.code-aster.org 'onmetis --version' returns : metis-edf-4.0 metis-edf-4.1/INSTALL0000644000372500037370000000467711115455203014572 0ustar courtoisastergrpWARNING : This package contains a release of METIS for Code_Aster. Please see README_Code_Aster. ------------------------------------------------------------------------- Copyright 1998, Regents of the University of Minnesota. METIS was written by George Karypis (karypis@cs.umn.edu) Introduction ------------------------------------------------------------ METIS is a software package for partitioning unstructured graphs, partitioning meshes, and computing fill-reducing orderings of sparse matrices. The documentation of METIS can be found in the Doc/manual.ps file. METIS is written in ANSI C and should compile on Unix systems that have a ANSI C compiler. It has been extensively tested on the following architectures: AIX SunOS Solaris IRIX Unicos Linux HP-UX FreeBSD Installation Instructions ----------------------------------------------- In order to build METIS you need (a) a C compiler that is ANSI compatible (b) make Edit the file Makefile.in that resides in the same directory as this file according to the requirements of your system. In particular you may need to modify the following: 1. The CC variable, to be the name of the ANSI C compiler in your system. The GNU C compiler (gcc) will do. 2. The settings for the AR and RANLIB variables that are suitable for you system. Note that some systems do not have 'ranlib' but they use 'ar -ts' instead, or it is not needed all together. 3. You can use COPTIONS and LDOPTIONS to provide additional command line options that are required by your compiler and linker. After saving the modified Makefile.in, type 'make' at the prompt. This will build all of METIS's stand-alone programs, METIS's library, and a program that tests the various partitioning algorithms. Upon successful completion, make creates the following 11 files: pmetis, kmetis, oemetis, onmetis, partnmesh, partdmesh, mesh2nodal, mesh2dual, graphchk, libmetis.a Graphs/mtest Please read the instructions in the file Graphs/0README on how to go and test the various programs. Contact Information ----------------------------------------------------- If you have any comments, suggestions, or bug reports, please send them to metis@cs.umn.edu. Any bug fixes and upgrades of the METIS packages is available on WWW at URL: http://www.cs.umn.edu/~metis or URL: http://www.cs.umn.edu/~karypis/metis George Karypis Sun Sep 20 13:18:36 CDT 1998 metis-edf-4.1/CHANGES0000644000372500037370000001323111115455203014516 0ustar courtoisastergrp METIS 4.0.1, 11/29/98 ------------------------------------------------------------------------------ This is mostly a bug-fix release - Fixed some bugs in the multi-constraint partitioning routines - Fixed some bugs in the volume-minimization routines METIS 4.0.0, 9/20/98 ------------------------------------------------------------------------------ METIS 4.0 contains a number of changes over the previous major release (ver 3.0.x). Most of these changes are concentrated on the graph and mesh partitioning routines and they do not affect the sparse matrix re-ordering routines. Here is a list of the major changes: Multi-Constraint Partitioning ----------------------------- METIS now includes partitioning routines that can be used to a partition a graph in the presence of multiple balancing constraints. Minimizing the Total Communication Volume ----------------------------------------- METIS now includes partitioning routines whose objective is to minimize the total communication volume (as opposed to minimizing the edge-cut). Minimizing the Maximum Connectivity of the Subdomains ----------------------------------------------------- The k-way partitioning routines in METIS can now directly minimize the number of adjacent subdomains. For most graphs corresponding to finite element meshes, METIS is able to significantly reduce the maximum (and total) number of adjacent subdomains. METIS 3.0.6, 1/28/98 ------------------------------------------------------------------------------- - Fixed some problems when too many partitions were asked, and each partition end up having 0 vertices - Fixed some bugs in the I/O routines - Added support for the g77 compiler under Linux METIS 3.0.5, 12/22/97 ------------------------------------------------------------------------------- - Fixed problems on 64-bit architectures (eg., -64 option on SGIs). - Added some options in Makefile.in METIS 3.0.4, 12/1/97 ------------------------------------------------------------------------------- Fixed a memory leak in the ordering code. METIS 3.0.3, 11/5/97 ------------------------------------------------------------------------------- This is mostly a bug-fix release with just a few additions Added functionality - Added support for quadrilateral elements. - Added a routine METIS_EstimateMemory that estimates the amount of memory that will be allocated by METIS. This is useful in determining if a problem can run on your system. - Added hooks to allow PARMETIS to use the orderings produced by METIS. This is hidden from the user but it will be used in the next release of PARMETIS. Bug-fixes - Fixed a bug related to memory allocation. This should somewhat reduce the overall memory used by METIS. - Fixed some bugs in the 'graphchk' program in the case of weighted graphs. - Removed some code corresponding to unused options. - Fixed some minor bugs in the node-refinement code ------------------------------------------------------------------------------- METIS 3.0 contains a number of changes over METIS 2.0. The major changes are the following: General Changes --------------- 1. Added code to directly partition finite element meshes. 2. Added code to convert finite element meshes into graphs so they can be used by METIS. 1. The names, calling sequences, and options of the routines in METISlib have been changed. 2. Better support has been added for Fortran programs. 3. Eliminated the 'metis' program. The only way to tune METIS's behavior is to use METISlib. 4. Improved memory management. METIS should now only abort if truly there is no more memory left in the system. Graph Partitioning ------------------ 1. Added partitioning routines that can be used to compute a partition with prescribed partition weights. For example, they can be used to compute a 3-way partition such that partition 1 has 50% of the weight, partition 2 has 20% of the way, and partition 3 has 30% of the weight. 2. Improved the speed of the k-way partitioning algorithm (kmetis). The new code has better cache locality which dramatically improves the speed for large graphs. A factor of 4 speedup can be obtained for certain graphs. METIS can now partition a 4 million node graph in well under a minute on a MIPS R10000. 3. Eliminated some of the options that were seldom used. Fill-Reducing Orderings ---------------------- 1. Added a node based ordering code `onmetis' that greatly improves ordering quality. 2. Improved the quality of the orderings produced by the original edge-based ordering code (it is now called 'oemetis'). 3. METIS can now analyze the graph and try to compress together nodes with identical sparsity pattern. For some problems, this significantly reduces ordering time 4. METIS can now prune dense columns prior to ordering. This can be helpful for LP matrices. Mesh Partitioning ----------------- 1. METIS can now directly partition the element node array of finite element meshes. It produces two partitioning vectors. One for the elements and one for the nodes. METIS supports the following elements: triangles, tetrahedra, hexahedra Mesh-To-Graph Conversion Routines --------------------------------- 1. METIS now includes a number of mesh conversion functions that can be used to create the dual and nodal graphs directly from the element connectivity arrays. These are highly optimized routines. metis-edf-4.1/CONFIG/0000755000372500037370000000000011121717222014467 5ustar courtoisastergrpmetis-edf-4.1/CONFIG/configure0000644000372500037370000000521011120232121016356 0ustar courtoisastergrp# WARNING : This file has been added for Code_Aster # http://www.code-aster.org # SHELL defined by make (sh) OS_TYPE=`uname -s` OS_MACH=`uname -m` if [ $OS_TYPE = "SunOS" ]; then OS_LEVEL=`uname -r` OS_NIV=`echo $OS_LEVEL | awk -F'.' '{print $2}'` if [ $OS_NIV -lt 6 ]; then echo "unavailable OS for Aster SOLARIS" exit 8 fi echo " System identification: SUN SunOS $OS_LEVEL" echo " " echo " Do you want to install a 64 bit version (y/n, default y) ? " read rtn if [ -z "$rtn" ] || [ "$rtn" = "y" -o "$rtn" = "Y" ]; then OS_TYPE=SunOS64 fi elif [ $OS_TYPE != "OSF1" -a $OS_TYPE != "IRIX64" -a $OS_TYPE != "Linux" -a $OS_TYPE != "CYGWIN_NT-5.1" ]; then echo " Operating system $OS_TYPE unknown on this distribution" echo " Installation failed !" exit 8 fi echo " Configure Makefile.in for platform : $OS_TYPE" # CC : C compiler, F90 : Fortran compiler, LD : loader # COPTIONS : C compiler options # FOPTIONS : Fortran compiler options, # LDOPTIONS : link options, AR : archiver CC_TEMP="cc" F90_TEMP="f90" LD_TEMP="$F90_TEMP" COPTIONS_TEMP="-O" FOPTIONS_TEMP="-O" LDOPTIONS_TEMP="" AR_TEMP="ar rv" if [ $OS_TYPE = "Linux" ]; then if [ $OS_MACH = "x86_64" ]; then CC_TEMP="gcc" F90_TEMP="gfortran" LD_TEMP="gfortran" COPTIONS_TEMP="" FOPTIONS_TEMP="-i8 -r8" else CC_TEMP="gcc" F90_TEMP="g77" LD_TEMP="g77" fi elif [ $OS_TYPE = "CYGWIN_NT-5.1" ]; then CC_TEMP="gcc" F90_TEMP="g77" LD_TEMP="g77" elif [ $OS_TYPE = "SunOS" ]; then CC_TEMP="cc" elif [ $OS_TYPE = "SunOS64" ]; then COPTIONS_TEMP="-KPIC -xarch=v9 -dalign" FOPTIONS_TEMP="-KPIC -xarch=v9 -dalign -xtypemap=real:64,double:64,integer:64" LDOPTIONS_TEMP="-KPIC -xarch=v9 -dalign -L. -L.." elif [ $OS_TYPE = "OSF1" ]; then LD_TEMP="cc" COPTIONS_TEMP="-fast" FOPTIONS_TEMP="-fast -i8" LDOPTIONS_TEMP="-L. -L.. -lUfor -lfor" elif [ $OS_TYPE = "IRIX64" ]; then COPTIONS_TEMP="-O2 -64" FOPTIONS_TEMP="-O2 -64 -i8" LDOPTIONS_TEMP="-64 -L. -L.." fi if [ -f Makefile.in ]; then rm -f Makefile.in fi if [ "$CC" != "" ] ; then CC_TEMP=$CC fi if [ "$F77" != "" ] ; then F90_TEMP=$F77 fi if [ "$LD" != "" ] ; then LD_TEMP=$LD fi if [ "$CFLAGS" != "" ] ; then COPTIONS_TEMP=$CFLAGS fi if [ "$FFLAGS" != "" ] ; then FOPTIONS_TEMP=$FFLAGS fi if [ "$LDFLAGS" != "" ] ; then LDOPTIONS_TEMP=$LDFLAGS fi if [ "$AR" != "" ] ; then AR_TEMP=$AR fi LDOPTIONS_TEMP="$LDOPTIONS_TEMP -L. -L.." cat << EOF > Makefile.in # Generated by CONFIG/configure CC=$CC_TEMP F90=$F90_TEMP LD=$LD_TEMP COPTIONS=$COPTIONS_TEMP FOPTIONS=$FOPTIONS_TEMP LDOPTIONS=$LDOPTIONS_TEMP AR=$AR_TEMP EOF exit 0 metis-edf-4.1/CONFIG/onmetis.in0000644000372500037370000000253611305712132016502 0ustar courtoisastergrp#!/bin/bash # # shell-script to call METIS from CODE_ASTER # $1 : data file for METIS (numerotation) # if $1="--version", it is passed to onmetis.exe # $2 : message level # if $2=0 outputs are redirected to /dev/null # $3 : result file (default fort.85) # # install directory set_prefix() { local this=`readlink -n -f $1` prefix=`dirname $this` } set_prefix $0 METIS_INSTALL=$prefix LD_LIBRARY_PATH=LD_LIB_PATH_VALUE:$LD_LIBRARY_PATH export LD_LIBRARY_PATH repinit=`pwd` tmp_metis=$repinit/dir_metis # arguments if [ $# -lt 1 -o $# -gt 3 ]; then echo " usage : $0 data_file [message_level] [result_file]" exit 4 elif [ $# -eq 3 ]; then fileout=$3 msg=$2 elif [ $# -eq 2 ]; then fileout=fort.85 msg=$2 else msg=1 fi arg="--version" mkdir -p $tmp_metis if [ "$1" != "--version" ]; then if [ ! -f "$1" ]; then echo "(F/U-METIS_1): $1 not found" exit 4 fi cp -f "$1" $tmp_metis/fort.81 arg="fort.81" fi # run onmetis.exe cd $tmp_metis if [ $msg -gt 0 ]; then $METIS_INSTALL/onmetis.exe $arg iret=$? elif [ $msg -eq 0 ]; then $METIS_INSTALL/onmetis.exe $arg > /dev/null iret=$? else echo "(F/U-METIS_2): Invalid argument" exit 4 fi if [ $iret -eq 0 ] && [ "$1" != "--version" ]; then cp fort.85 $repinit/$fileout fi cd $repinit if [ $iret -eq 0 ]; then rm -rf $tmp_metis fi exit $iret metis-edf-4.1/onmetis0000755000372500037370000000250011305741131015123 0ustar courtoisastergrp#!/bin/bash # # shell-script to call METIS from CODE_ASTER # $1 : data file for METIS (numerotation) # if $1="--version", it is passed to onmetis.exe # $2 : message level # if $2=0 outputs are redirected to /dev/null # $3 : result file (default fort.85) # # install directory set_prefix() { local this=`readlink -n -f $1` prefix=`dirname $this` } set_prefix $0 METIS_INSTALL=$prefix LD_LIBRARY_PATH=LD_LIB_PATH_VALUE:$LD_LIBRARY_PATH export LD_LIBRARY_PATH repinit=`pwd` tmp_metis=$repinit/dir_metis # arguments if [ $# -lt 1 -o $# -gt 3 ]; then echo " usage : $0 data_file [message_level] [result_file]" exit 4 elif [ $# -eq 3 ]; then fileout=$3 msg=$2 elif [ $# -eq 2 ]; then fileout=fort.85 msg=$2 else msg=1 fi arg="--version" mkdir -p $tmp_metis if [ "$1" != "--version" ]; then if [ ! -f "$1" ]; then echo "(F/U-METIS_1): $1 not found" exit 4 fi cp -f "$1" $tmp_metis/fort.81 arg="fort.81" fi # run onmetis.exe cd $tmp_metis if [ $msg -gt 0 ]; then $METIS_INSTALL/onmetis.exe $arg iret=$? elif [ $msg -eq 0 ]; then $METIS_INSTALL/onmetis.exe $arg > /dev/null iret=$? else echo "(F/U-METIS_2): Invalid argument" exit 4 fi if [ $iret -eq 0 ] && [ "$1" != "--version" ]; then cp fort.85 $repinit/$fileout fi cd $repinit rm -rf $tmp_metis exit $iret metis-edf-4.1/dir_metis/0000755000372500037370000000000011305712224015502 5ustar courtoisastergrp