OSDN Git Service

Perl5.26以降対応の為、PDFJ-0.91RC1へ変更。
authorkgsoft <kgsoft@users.osdn.me>
Mon, 4 Dec 2017 10:36:15 +0000 (10:36 +0000)
committerkgsoft <kgsoft@users.osdn.me>
Mon, 4 Dec 2017 10:36:15 +0000 (10:36 +0000)
14 files changed:
lib/PDFJ.pm
lib/PDFJ/CFF.pm [new file with mode: 0644]
lib/PDFJ/E2U.pm
lib/PDFJ/Form.pm [new file with mode: 0644]
lib/PDFJ/Matrix.pm [new file with mode: 0644]
lib/PDFJ/OTF.pm [new file with mode: 0644]
lib/PDFJ/Object.pm
lib/PDFJ/PNG.pm [new file with mode: 0644]
lib/PDFJ/Shape.pm [new file with mode: 0644]
lib/PDFJ/TTF.pm
lib/PDFJ/Tree.pm [new file with mode: 0644]
lib/PDFJ/Type1.pm [new file with mode: 0644]
lib/PDFJ/U2C.pm
lib/PDFJ/Unicode.pm

index 0ed8313..4c99543 100644 (file)
 # PDFJ.pm
 # PDF for Japanese
-# 2001-2 Sey <nakajima@netstock.co.jp>
+# 2001-2014 Sey <nakajima@netstock.co.jp>
 package PDFJ;
 use PDFJ::Object;
-use PDFJ::Unicode;
-use PDFJ::E2U;
 use Carp;
 use strict;
 use vars qw($VERSION @EXFUNC %Default);
 
-$VERSION = 0.7;
+$VERSION = "0.91RC1";
+
+# no I18N::Japanese; for jperl
+BEGIN {
+       eval { require I18N::Japanese; };
+       I18N::Japanese->unimport() unless($@);
+}
+
+# use bytes for Perl5.8
+BEGIN {
+       eval { require bytes; };
+       bytes->import unless $@;
+}
 
 @EXFUNC = qw(
+       PDFJ::Doc::Doc
        PDFJ::TextStyle::TStyle PDFJ::Text::Text 
-       PDFJ::NewLine::NewLine PDFJ::Outline::Outline PDFJ::Dest::Dest
+       PDFJ::NewLine::NewLine PDFJ::Outline::Outline PDFJ::Dest::Dest 
+       PDFJ::Null::Null PDFJ::Space::Space
        PDFJ::ParagraphStyle::PStyle PDFJ::Paragraph::Paragraph 
        PDFJ::BlockStyle::BStyle PDFJ::Block::Block PDFJ::NewBlock::NewBlock
-       PDFJ::Shape::Shape
+       PDFJ::BlockSkip::BlockSkip PDFJ::Shape::Shape
        PDFJ::ShapeStyle::SStyle PDFJ::Color::Color
 );
 
 sub import {
        my($pkg, $code, $prefix) = @_;
        if( $code ) {
-               croak "code argument '$code' must be 'SJIS' or 'EUC'" 
-                       unless $code =~ /^(SJIS|EUC)$/;
-               $Default{Jcode} = $code;
+               croak "code argument '$code' must be 'SJIS','EUC','UTF8' or 'UNICODE'" 
+                       unless $code =~ /^(SJIS|EUC|UTF8|UNICODE)$/i;
+               $Default{Jcode} = uc($code);
        }
        $prefix ||= "";
-       for my $name(@EXFUNC) {
+       for my $exfunc(@EXFUNC) {
                my $to = caller;
-               my $from = "";
-               ($from, $name) = $name =~ /^(.+)::([^:]+)$/;
+               my($from, $name) = $exfunc =~ /^(.+)::([^:]+)$/;
                no strict 'refs';
                *{"${to}::$prefix$name"} = \&{"${from}::$name"};
        }
 }
 
+# BlockSkip() deprecated and PDFJ::BlockSkip class obsoleted
+# Below for backward compatibility
+sub PDFJ::BlockSkip::BlockSkip {
+       my $skip = (@_ == 1 && ref($_[0]) eq 'HASH') ? $_[0]{skip}: $_[0];
+       PDFJ::Space->new($skip);
+}
+
 $Default{Jcode} = 'SJIS';
 
 $Default{AFontEncoding} = 'WinAnsiEncoding';
 $Default{BaseAFont} = 'Times-Roman';
-$Default{JFontEncoding} = '90ms-RKSJ-H';
+$Default{JFontEncoding} = 
+       $Default{Jcode} eq 'SJIS' ? '90ms-RKSJ-H' :
+       $Default{Jcode} eq 'EUC' ? 'EUC-H' :
+       'UniJIS-UCS2-HW-H';
 $Default{BaseJFont} = 'Ryumin-Light';
+$Default{CIDSystemInfo}{j} = 'Adobe-Japan1-4';
+$Default{CIDSystemInfo}{g} = 'Adobe-GB1-4';
+$Default{CIDSystemInfo}{c} = 'Adobe-CNS1-3';
+$Default{CIDSystemInfo}{k} = 'Adobe-Korea1-1';
+
+# additional 13,89-92 ku CMap for EUC-(H|V)
+$Default{CMapCIDRange}{'EUC-NEC'} = <<END;
+<ada1> <adbe> 7555
+<adc0> <adc1> 7585
+<adc2> <adc2> 8038
+<adc3> <adc3> 7588
+<adc4> <adc4> 8040
+<adc5> <adc5> 7590
+<adc6> <adc6> 8042
+<adc7> <adc8> 7592
+<adc9> <adc9> 8044
+<adca> <adcb> 7595
+<adcc> <adcc> 8043
+<adcd> <adce> 7598
+<adcf> <adcf> 8047
+<add0> <add6> 7601
+<addf> <addf> 8323
+<ade0> <ade3> 7608
+<ade4> <ade4> 8055
+<ade5> <adef> 7613
+<adf0> <adf0> 762
+<adf1> <adf1> 761
+<adf2> <adf2> 769
+<adf3> <adf4> 7624
+<adf5> <adf5> 765
+<adf6> <adf6> 757
+<adf7> <adf7> 756
+<adf8> <adf9> 7629
+<adfa> <adfa> 768
+<adfb> <adfb> 748
+<adfc> <adfc> 747
+<f9a1> <f9fe> 8359
+<faa1> <fab5> 8453
+<fab6> <fab6> 7680
+<fab7> <fafe> 8474
+<fba1> <fbfe> 8546
+<fca1> <fcee> 8640
+<fcf1> <fcfa> 8092
+<fcfb> <fcfb> 751
+<fcfc> <fcfe> 8005
+END
+
+$Default{CMap}{'EUC-NEC-H'} = {
+       CMapName => 'EUC-NEC-H',
+       UseCMap => 'EUC-H',
+       CIDSystemInfo => 'Adobe-Japan1-4',
+       CIDRange => $Default{CMapCIDRange}{'EUC-NEC'},
+};
+
+$Default{CMap}{'EUC-NEC-V'} = {
+       CMapName => 'EUC-NEC-V',
+       UseCMap => 'EUC-V',
+       CIDSystemInfo => 'Adobe-Japan1-4',
+       CIDRange => $Default{CMapCIDRange}{'EUC-NEC'},
+};
 
 # $Default{BBox} = [-200,-331,1116,962];
 $Default{BBox} = [-150,-331,1143,962];
@@ -70,11 +151,15 @@ $Default{HDotXShift} = 0;
 $Default{HDotYShift} = 0.7;
 $Default{HDot}{SJIS} = "\x81\x45";
 $Default{HDot}{EUC} = "\xa1\xa6";
+$Default{HDot}{UNICODE} = "\x30\xfb";
+$Default{HDot}{UTF8} = "\x30\xfb";
 
 $Default{VDotXShift} = 0.5;
 $Default{VDotYShift} = -0.3;
 $Default{VDot}{SJIS} = "\x81\x41";
 $Default{VDot}{EUC} = "\xa1\xa2";
+$Default{VDot}{UNICODE} = "\x30\x01";
+$Default{VDot}{UTF8} = "\x30\x01";
 
 $Default{VHShift} = 0.8;
 $Default{VAShift} = -0.33;
@@ -115,11 +200,21 @@ $Default{Encodings} = {qw(
        Ext-RKSJ-H            js
        Ext-RKSJ-V            js
        EUC-H                 je
+       EUC-NEC-H             je
        EUC-V                 je
+       EUC-NEC-V             je
+       UniJIS-UCS2-HW-H      ju
+       UniJIS-UCS2-HW-V      ju
+       UniGB-UCS2-H          gu
+       UniGB-UCS2-V          gu
+       UniCNS-UCS2-H         cu
+       UniCNS-UCS2-V         cu
+       UniKS-UCS2-H          ku
+       UniKS-UCS2-V          ku
 )};
 
-$Default{JFD}{'Ryumin-Light'} = 
-       dictionary({
+$Default{FD}{'Ryumin-Light'} = 
+       {
                Type => name('FontDescriptor'),
                Ascent => 723,
                CapHeight => 709,
@@ -135,10 +230,10 @@ $Default{JFD}{'Ryumin-Light'} =
                                value => '010502020300000000000000',
                                outputtype => 'hexliteral')
                },
-       });
+       };
 
-$Default{JFD}{'GothicBBB-Medium'} =
-       dictionary({
+$Default{FD}{'GothicBBB-Medium'} =
+       {
                Type => name('FontDescriptor'),
                Ascent => 752,
                CapHeight => 737,
@@ -154,7 +249,7 @@ $Default{JFD}{'GothicBBB-Medium'} =
                                value => '0801020b0500000000000000',
                                outputtype => 'hexliteral')
                }
-       });
+       };
 
 # character class (based on JIS X 4051)
 # 0: begin paren
@@ -175,6 +270,7 @@ $Default{JFD}{'GothicBBB-Medium'} =
 # 15: unit
 # 16: space
 # 17: ascii
+# 18: special
 $Default{Class}{SJIS} = {
        # begin paren
        "\x81\x65" => 0, "\x81\x67" => 0, "\x81\x69" => 0, "\x81\x6b" => 0, 
@@ -290,12 +386,74 @@ $Default{PostShift}{EUC} = {
        # punc
        "\xa1\xa3" => 500, "\xa1\xa5" => 500, 
        # post unit
-       "\xa1\xeb" => 500, "\xa1\xec" => 500, "\xa1\xed" => 500, "\xa1\xf1" => 500, 
+       "\xa1\xeb" => 500, "\xa1\xec" => 500, "\xa1\xed" => 500, 
+};
+
+$Default{Class}{UNICODE} = {
+       # begin paren
+       "\x20\x18" => 0, "\x20\x1c" => 0, "\xff\x08" => 0, "\x30\x14" => 0, 
+       "\xff\x3b" => 0, "\xff\x5b" => 0, "\x30\x08" => 0, "\x30\x0a" => 0, 
+       "\x30\x0c" => 0, "\x30\x0e" => 0, "\x30\x10" => 0, 
+       # end paren
+       "\x30\x01" => 1, "\xff\x0c" => 1, 
+       "\x20\x19" => 1, "\x20\x1d" => 1, "\xff\x09" => 1, "\x30\x15" => 1, 
+       "\xff\x3d" => 1, "\xff\x5d" => 1, "\x30\x09" => 1, "\x30\x0b" => 1, 
+       "\x30\x0d" => 1, "\x30\x0f" => 1, "\x30\x11" => 1, 
+       # not at top of line
+       "\x30\xfd" => 2, "\x30\xfe" => 2, "\x30\x9d" => 2, "\x30\x9e" => 2, 
+       "\x30\x05" => 2, "\x30\xfc" => 2, 
+       "\x30\x41" => 2, "\x30\x43" => 2, "\x30\x45" => 2, "\x30\x47" => 2, 
+       "\x30\x49" => 2, "\x30\x63" => 2, "\x30\x83" => 2, "\x30\x85" => 2, 
+       "\x30\x87" => 2, "\x30\x8e" => 2, 
+       "\x30\xa1" => 2, "\x30\xa3" => 2, "\x30\xa5" => 2, "\x30\xa7" => 2, 
+       "\x30\xa9" => 2, "\x30\xc3" => 2, "\x30\xe3" => 2, "\x30\xe5" => 2, 
+       "\x30\xe7" => 2, "\x30\xee" => 2, "\x30\xf5" => 2, "\x30\xf6" => 2, 
+       # ?!
+       "\xff\x1f" => 3, "\xff\x01" => 3, 
+       # dot
+       "\x30\xfb" => 4, "\xff\x1a" => 4, "\xff\x1b" => 4, 
+       # punc
+       "\x30\x02" => 5, "\xff\x0e" => 5, 
+       # leader
+       "\x20\x15" => 6, "\x20\x26" => 6, "\x20\x25" => 6, 
+       # pre unit
+       "\xff\xe5" => 7, "\xff\x04" => 7, "\xff\xe1" => 7, 
+       # post unit
+       "\x00\xb0" => 8, "\x20\x32" => 8, "\x20\x33" => 8, "\xff\xe0" => 8, 
+       "\xff\x05" => 8, "\x20\x30" => 8, 
+       # zenkaku space
+       "\x30\x00" => 9, 
+};
+
+$Default{PreShift}{UNICODE} = {
+       # begin paren
+       "\x20\x18" => 500, "\x20\x1c" => 500, "\xff\x08" => 500, "\x30\x14" => 500, 
+       "\xff\x3b" => 500, "\xff\x5b" => 500, "\x30\x08" => 500, "\x30\x0a" => 500, 
+       "\x30\x0c" => 500, "\x30\x0e" => 500, "\x30\x10" => 500, 
+       # dot
+       "\x30\xfb" => 250, "\xff\x1a" => 250, "\xff\x1b" => 250, 
+};
+
+$Default{PostShift}{UNICODE} = {
+       # end paren
+       "\x30\x01" => 500, "\xff\x0c" => 500, 
+       "\x20\x19" => 500, "\x20\x1d" => 500, "\xff\x09" => 500, "\x30\x15" => 500, 
+       "\xff\x3d" => 500, "\xff\x5d" => 500, "\x30\x09" => 500, "\x30\x0b" => 500, 
+       "\x30\x0d" => 500, "\x30\x0f" => 500, "\x30\x11" => 500, 
+       # dot
+       "\x30\xfb" => 250, "\xff\x1a" => 250, "\xff\x1b" => 250, 
+       # punc
+       "\x30\x02" => 500, "\xff\x0e" => 500, 
+       # post unit
+       "\x00\xb0" => 500, "\x20\x32" => 500, "\x20\x33" => 500, 
 };
 
+$Default{NoRubyOverlap} = 0;
+$Default{RubyPreOverlap} = { map {$_ => 1} (0, 2, 6, 9, 10) };
+$Default{RubyPostOverlap} = { map {$_ => 1} (1, 5, 6, 9, 10) };
+
 # glue width
 # each element means [min, normal, max, preference]
-# ruby overlap feature is omitted
 sub GlueNon { [0, 0, 0] }
 sub Glue004 { [0, 0, 250] }
 sub Glue0443 { [0, 250, 250, 3] }
@@ -327,6 +485,7 @@ $Default{Glue} = [
                GlueNon,      # 15: unit
                Glue004,      # 16: space
                GlueNon,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 1: end paren
        [
@@ -348,6 +507,7 @@ $Default{Glue} = [
                Glue0222,      # 15: unit
                Glue0222,      # 16: space
                Glue0222,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 2: not at top of line
        [
@@ -369,6 +529,7 @@ $Default{Glue} = [
                Glue8421,      # 15: unit
                Glue004,      # 16: space
                Glue8421,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 3: ?!
        [
@@ -390,6 +551,7 @@ $Default{Glue} = [
                Glue8421,      # 15: unit
                Glue004,      # 16: space
                Glue8421,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 4: dot
        [
@@ -411,6 +573,7 @@ $Default{Glue} = [
                Glue0443,      # 15: unit
                Glue0443,      # 16: space
                Glue0443,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 5: punc
        [
@@ -432,6 +595,7 @@ $Default{Glue} = [
                Glue222,      # 15: unit
                Glue222,      # 16: space
                Glue222,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 6: leader
        [
@@ -453,6 +617,7 @@ $Default{Glue} = [
                Glue004,      # 15: unit
                Glue004,      # 16: space
                Glue004,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 7: pre unit
        [
@@ -474,6 +639,7 @@ $Default{Glue} = [
                Glue004,      # 15: unit
                Glue004,      # 16: space
                Glue004,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 8: post unit
        [
@@ -495,6 +661,7 @@ $Default{Glue} = [
                Glue004,      # 15: unit
                Glue004,      # 16: space
                Glue004,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 9: zenkaku space
        [
@@ -516,6 +683,7 @@ $Default{Glue} = [
                GlueNon,      # 15: unit
                Glue004,      # 16: space
                GlueNon,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 10: hirakana
        [
@@ -537,6 +705,7 @@ $Default{Glue} = [
                Glue8421,      # 15: unit
                Glue004,      # 16: space
                Glue8421,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 11: japanese
        [
@@ -558,6 +727,7 @@ $Default{Glue} = [
                Glue8421,      # 15: unit
                Glue004,      # 16: space
                Glue8421,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 12: suffixed
        [
@@ -579,6 +749,7 @@ $Default{Glue} = [
                Glue004,      # 15: unit
                Glue004,      # 16: space
                Glue844,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 13: rubied
        [
@@ -600,6 +771,7 @@ $Default{Glue} = [
                Glue8421,      # 15: unit
                Glue004,      # 16: space
                Glue8421,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 14: number
        [
@@ -621,6 +793,7 @@ $Default{Glue} = [
                Glue8421,      # 15: unit
                Glue004,      # 16: space
                GlueNon,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 15: unit
        [
@@ -642,6 +815,7 @@ $Default{Glue} = [
                GlueNon,      # 15: unit
                Glue004,      # 16: space
                GlueNon,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 16: space
        [
@@ -663,6 +837,7 @@ $Default{Glue} = [
                Glue004,      # 15: unit
                Glue004,      # 16: space
                Glue004,      # 17: ascii
+               GlueNon,      # 18: special
        ],
        # 17: ascii
        [
@@ -684,28 +859,53 @@ $Default{Glue} = [
                GlueNon,      # 15: unit
                Glue004,      # 16: space
                GlueNon,      # 17: ascii
+               GlueNon,      # 18: special
+       ],
+       # 18: special
+       [
+               GlueNon,      # 0: begin paren
+               GlueNon,      # 1: end paren
+               GlueNon,      # 2: not at top of line
+               GlueNon,      # 3: ?!
+               GlueNon,      # 4: dot
+               GlueNon,      # 5: punc
+               GlueNon,      # 6: leader
+               GlueNon,      # 7: pre unit
+               GlueNon,      # 8: post unit
+               GlueNon,      # 9: zenkaku space
+               GlueNon,      # 10: hirakana
+               GlueNon,      # 11: japanese
+               GlueNon,      # 12: suffixed
+               GlueNon,      # 13: rubied
+               GlueNon,      # 14: number
+               GlueNon,      # 15: unit
+               GlueNon,      # 16: space
+               GlueNon,      # 17: ascii
+               GlueNon,      # 18: special
        ],
 ];
 
 $Default{Splittable} = [
-       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
-       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0],
+       #0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18
+       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], # 0
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 1
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 2
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 3
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 4
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 5
+       [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 6
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], # 7
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 8
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 9
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 10
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 11
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], # 12
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 13
+       [1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], # 14
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1], # 15
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # 16
+       [1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1], # 17
+       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # 18
 ];
 
 # 1 if not at begin of line
@@ -716,7 +916,6 @@ $Default{NoBOL} =
 $Default{NoEOL} = 
        [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
 
-
 #--------------------------------------------------------------------------
 package PDFJ::Util;
 use Carp;
@@ -732,6 +931,11 @@ sub hyphenate {
        $TeXHyphenObj->hyphenate($word);
 }
 
+sub objisa {
+       my($target, $class) = @_;
+       ref($target) && UNIVERSAL::isa($target, $class);
+}
+
 sub uriencode {
        my($str) = @_;
        $str =~ s/([^;\/?:@&=+\$,A-Za-z0-9\-_.!~*'()])/sprintf("%%%02X",ord($1))/ge
@@ -739,6 +943,32 @@ sub uriencode {
        $str;
 }
 
+sub transmatrix {
+       my($x, $y, $transtype, @args) = @_;
+       if( ref($args[0]) eq 'ARRAY' ) {
+               @args = @{$args[0]};
+       }
+       my @result;
+       if( $transtype ) {
+               if( $transtype eq 'magnify' ) {
+                       my($xmag, $ymag) = @args;
+                       @result = ($xmag, 0, 0, $ymag, $x, $y);
+               } elsif( $transtype eq 'rotate' ) {
+                       my($rad) = @args;
+                       my $sin = sin($rad);
+                       my $msin = -$sin;
+                       my $cos = cos($rad);
+                       @result = ($cos, $sin, $msin, $cos, $x, $y);
+               } elsif( $transtype eq 'distort' ) {
+                       my($xtan, $ytan) = @args;
+                       @result = (1, $xtan, $ytan, 1, $x, $y);
+               } else {
+                       croak "unknown transformation type";
+               }
+       }
+       @result;
+}
+
 my $SubsetTag;
 sub subsettag {
        unless( $SubsetTag ) {
@@ -750,7 +980,7 @@ sub subsettag {
 }
 
 sub ttfopen {
-       my($ttffile, $encoding) = @_;
+       my($ttffile) = @_;
        require PDFJ::TTF;
        my $ttf;
        if( $ttffile =~ /(\.ttc):(\d)$/i ) {
@@ -766,6 +996,15 @@ sub ttfopen {
        $ttf;
 }
 
+sub otfopen {
+       my($otffile) = @_;
+       require PDFJ::OTF;
+       my $otf = new PDFJ::OTF $otffile;
+       croak "cannot open $otffile" unless $otf;
+       $otf->read_table(':all');
+       $otf;
+}
+
 sub deflate {
        my($src) = @_;
        my $reader = reader($src) or return;
@@ -836,6 +1075,142 @@ sub ascii85chunk {
        $resultchunk;
 }
 
+sub makestream {
+       my($filter, $src, @addfilters) = @_;
+       my($encoded, $deflated, @filters);
+       if( $filter =~ /af/ ) {
+               ($encoded, $deflated) = deflate_ascii85encode($src);
+               return unless $encoded;
+               @filters = $deflated ? qw(ASCII85Decode FlateDecode) :
+                       qw(ASCII85Decode);
+       } elsif( $filter =~ /f/ ) {
+               $encoded = deflate($src) or return;
+               @filters = qw(FlateDecode);
+       } elsif( $filter =~ /a/ ) {
+               $encoded = ascii85encode($src) or return;
+               @filters = qw(ASCII85Decode);
+       } else {
+               return;
+       }
+       push @filters, @addfilters if @addfilters;
+       $filter = @filters > 1 ? [map {PDFJ::Object::name($_)} @filters] : 
+               PDFJ::Object::name($filters[0]);
+       ($encoded, $filter);
+}
+
+# make random ID string for ID entry
+sub makerandid {
+       my $id;
+       for(1..16) {
+               $id .= chr(rand(255));
+       }
+       $id;
+}
+
+# make (encryptionkey, O entry, U entry, P entry)
+# see makeEncryptP about $allowspec 
+sub makecryptkey {
+       require Digest::MD5;
+       my($ownerpass, $userpass, $allowspec, $fileid) = @_;
+       my $Pentry = makeEncryptP($allowspec);
+       $ownerpass ||= $userpass;
+       $ownerpass = trimpass($ownerpass);
+       $userpass = trimpass($userpass);
+       my $md5obj = Digest::MD5->new;
+       $md5obj->add($ownerpass);
+       my $rc4key = substr($md5obj->digest, 0, 5);
+       my $Oentry = RC4($userpass, $rc4key);
+       $md5obj->reset;
+       $md5obj->add($userpass);
+       $md5obj->add($Oentry);
+       $md5obj->add(pack("V", $Pentry));
+       $md5obj->add($fileid);
+       $rc4key = substr($md5obj->digest, 0, 5);
+       my $Uentry = RC4(passpadding(), $rc4key);
+       ($rc4key, $Oentry, $Uentry, $Pentry);
+}
+
+sub passpadding {
+       "\x28\xbf\x4e\x5e\x4e\x75\x8a\x41\x64\x00\x4e\x56\xff\xfa\x01\x08\x2e\x2e\x00\xb6\xd0\x68\x3e\x80\x2f\x0c\xa9\xfe\x64\x53\x69\x7a";
+}
+
+sub trimpass {
+       my($pass) = @_;
+       substr($pass . passpadding(), 0, 32);
+}
+
+# RC4 encrypting
+# based on Crypt::RC4 by Kurt Kincaid 
+my @RC4state;
+my $RC4x = 0;
+my $RC4y = 0;
+sub RC4 {
+       my($message, $pass) = @_;
+       my(@state, $x, $y);
+       if( defined $pass ) {
+               my @k = unpack( 'C*', $pass );
+               @state = 0..255;
+               my $y = 0;
+               for my $x (0..255) {
+                       $y = ( $k[$x % @k] + $state[$x] + $y ) % 256;
+                       @state[$x, $y] = @state[$y, $x];
+               }
+               @RC4state = @state;
+               $RC4x = 0;
+               $RC4y = 0;
+       } else {
+               @state = @RC4state;
+       }
+       $x = $RC4x;
+       $y = $RC4y;
+       my $num_pieces = do {
+               my $num = length($message) / 1024;
+               my $int = int $num;
+               $int == $num ? $int : $int+1;
+       };
+       for my $piece ( 0..$num_pieces - 1 ) {
+               my @message = unpack "C*", substr($message, $piece * 1024, 1024);
+               for ( @message ) {
+                       $x = 0 if ++$x > 255;
+                       $y -= 256 if ($y += $state[$x]) > 255;
+                       @state[$x, $y] = @state[$y, $x];
+                       $_ ^= $state[( $state[$x] + $state[$y] ) % 256];
+               }
+               substr($message, $piece * 1024, 1024) = pack "C*", @message;
+       }
+       $message;
+}
+
+# make integer value of P entry of Encrypt entry
+# $allowspec: P:rint, M:odify, C:opy, N:ote
+sub makeEncryptP {
+       my($allowspec) = @_;
+       my $value = 0xffffffc0;
+       if( $allowspec =~ /P/ ) {
+               $value |= 1 << 2;
+       }
+       if( $allowspec =~ /M/ ) {
+               $value |= 1 << 3;
+       }
+       if( $allowspec =~ /C/ ) {
+               $value |= 1 << 4;
+       }
+       if( $allowspec =~ /N/ ) {
+               $value |= 1 << 5;
+       }
+       $value;
+}
+
+sub u32toi32 {
+       my($value) = @_;
+       if( $value & 0x80000000 ) {
+               $value ^= 0xffffffff;
+               -($value + 1);
+       } else {
+               $value;
+       }
+}
+
 sub tounicode {
        my($str, $init) = @_;
        require PDFJ::Unicode;
@@ -844,6 +1219,10 @@ sub tounicode {
                $result .= PDFJ::Unicode::sjistounicode($str);
        } elsif( $PDFJ::Default{Jcode} eq 'EUC' ) {
                $result .= PDFJ::Unicode::euctounicode($str);
+       } elsif( $PDFJ::Default{Jcode} eq 'UTF8' ) {
+               $result .= PDFJ::Unicode::utf8tounicode($str);
+       } elsif( $PDFJ::Default{Jcode} eq 'UNICODE' ) {
+               $result .= $str;
        }
        $result;
 }
@@ -867,6 +1246,59 @@ sub reader {
        }
 }
 
+sub methodargs {
+       my $names = shift;
+       if( @_ == 2 && ref($_[1]) eq 'HASH' ) {
+               ($_[0], @{$_[1]}{@$names});
+       } else {
+               @_;
+       }
+}
+
+sub listargs2ref {
+       my($pre, $post) = (shift, shift);
+       return @_ if @_ < $pre + $post;
+       my @list = $post ? splice(@_, $pre, -$post) : splice(@_, $pre);
+       my $list = (@list == 1 && ref($list[0]) eq 'ARRAY') ? $list[0] : \@list;
+       splice @_, $pre, 0, $list;
+       @_;
+}
+
+sub strstyle2hashref {
+       my($style) = @_;
+       my($result) = _strstyle2hashref($style);
+       $result;
+}
+
+sub _strstyle2hashref {
+       my($style, $brace) = @_;
+       return ($style) if ref($style);
+       my %result;
+       while( $style =~ /(\S+?)\s*:\s*/ ) {
+               my($name, $rest) = ($1, $');
+               my($value, $delim);
+               if( $rest =~ s/^\{// ) {
+                       ($value, $style) = _strstyle2hashref($rest, 1);
+               } elsif( $brace ) {
+                       ($value, $delim) = $rest =~ /(.*?)(;|\}|$)/;
+                       $style = $';
+                       $value =~ s/\s+$//;
+               } elsif( $rest =~ /^\[(.*?)\]\s*(;|$)/ ) {
+                       ($value, $delim) = ($1, $2);
+                       $style = $';
+                       my @tmp = split /\s*,\s*/, $value;
+                       $value = \@tmp;
+               } else {
+                       ($value, $delim) = $rest =~ /(.*?)(;|$)/;
+                       $style = $';
+                       $value =~ s/\s+$//;
+               }
+               $result{$name} = $value;
+               last if $delim && $delim eq '}';
+       }
+       (\%result, $style);
+}
+
 #--------------------------------------------------------------------------
 package PDFJ::Doc;
 use strict;
@@ -874,8 +1306,11 @@ use Carp;
 use FileHandle;
 use PDFJ::Object;
 
+sub Doc { PDFJ::Doc->new(@_) }
+
 sub new {
-       my($class, $version, $pagewidth, $pageheight) = @_;
+       my($class, $version, $pagewidth, $pageheight) = 
+               PDFJ::Util::methodargs([qw(version pagewidth pageheight)], @_);
        my $objtable = PDFJ::ObjTable->new;
        my $self = bless {
                version => $version,
@@ -900,25 +1335,160 @@ sub new {
                Type => name('Catalog'),
                Pages => $self->{pagetree},
                }));
+       my $cdate = datestring();
+       $self->{info} = $self->indirect(dictionary({
+               Producer => textstring("PDFJ $PDFJ::VERSION"),
+               CreationDate => $cdate,
+               ModDate => $cdate,
+               }));
+       my $id = PDFJ::Util::makerandid();
+       $self->{idstring} = $id;
+       $self->{id} = array([string($id), string($id)]);
        $self;
 }
 
+sub pagewidth {
+       my($self) = @_;
+       $self->{pagewidth};
+}
+
+sub pageheight {
+       my($self) = @_;
+       $self->{pageheight};
+}
+
 sub filter {
-       my($self, $flag) = @_;
-       if( defined $flag ) {
-               $self->{filter} = $flag; # a:ascii85, f:flate, af:both 
+       my($self, $filter) = PDFJ::Util::methodargs([qw(filter)], @_);
+       if( defined $filter ) {
+               $self->{filter} = $filter; # a:ascii85, f:flate, af:both 
        }
        $self->{filter};
 }
 
+sub setoption {
+       my($self, $name, $value) = PDFJ::Util::methodargs([qw(name value)], @_);
+       $self->{option}{$name} = $value;
+}
+
+sub getoption {
+       my($self, $name) = PDFJ::Util::methodargs([qw(name)], @_);
+       $self->{option}{$name};
+}
+
+sub add_info {
+       my($self, @args) = @_;
+       my %args;
+       if( @args == 1 && ref($args[0]) eq 'HASH' ) {
+               %args = %{$args[0]};
+       } else {
+               %args = @args;
+       }
+       for my $key(keys %args) {
+               $self->{info}->set($key => textstring($args{$key}));
+       }
+}
+
+sub encrypt {
+       my($self, $ownerpass, $userpass, $allow) = 
+               PDFJ::Util::methodargs([qw(ownerpass userpass allow)], @_);
+       my $id = $self->{idstring};
+       my($encryptkey, $Oentry, $Uentry, $Pentry) = 
+               PDFJ::Util::makecryptkey($ownerpass, $userpass, $allow, $id);
+       $self->{encryptkey} = $encryptkey;
+       $self->{encrypt} = $self->indirect(dictionary({
+               Filter => name('Standard'),
+               V => 1,
+               R => 2,
+               O => string($Oentry),
+               U => string($Uentry),
+               P => PDFJ::Util::u32toi32($Pentry),
+               }));
+       $self->{encrypt}->nocrypt;
+}
+
+sub cmap {
+       my($self, $encoding) = @_;
+       if( $PDFJ::Default{CMap}{$encoding} ) {
+               $self->makecmap($PDFJ::Default{CMap}{$encoding});
+       } else {
+               name($encoding);
+       }
+}
+
+sub makecmap {
+       my($self, $cmapdata) = @_;
+       my $name = $cmapdata->{CMapName};
+       unless( $self->{cmap}{$name} ) {
+               my($r, $o, $s) = split /-/, $cmapdata->{CIDSystemInfo};
+               my $usecmap = $cmapdata->{UseCMap};
+               my $cidrange = $cmapdata->{CIDRange};
+               my $wmode = $name =~ /-H$/ ? 0 : 1;
+               $self->{cmap}{$name} = $self->indirect(stream(dictionary => {
+                       Type => name('CMap'),
+                       CMapName => name($name),
+                       CIDSystemInfo => {
+                               Registry => $r,
+                               Ordering => $o,
+                               Supplement => $s
+                       },
+                       WMode => $wmode,
+                       UseCMap => name($usecmap),
+       }, stream => _cmap($name, $usecmap, $wmode, $r, $o, $s, $cidrange)));
+       }
+       $self->{cmap}{$name};
+}
+
+# NOT method
+sub _cmap {
+       my($name, $usecmap, $wmode, $r, $o, $s, $cidrange) = @_;
+       my $result = <<END;
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%DocumentNeededResources: CMap ($usecmap)
+%%IncludeResource: ProcSet (CIDInit)
+%%IncludeResource: CMap ($usecmap)
+%%BeginResource: CMap ($name)
+%%Title: ($name $r $o $s)
+%%Version: 1
+%%Copyright: Copyright 2004 Sey Nakajima
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/$usecmap usecmap
+/CIDSystemInfo 3 dict dup begin
+  /Registry ($r) def
+  /Ordering ($o) def
+  /Supplement $s def
+end def
+/CMapName /$name def
+/CMapVersion 1 def
+/CMapType 1 def
+/WMode $wmode def
+END
+       my $rangecount = $cidrange =~ s/\n/\n/g;
+       $result .= "$rangecount begincidrange\n";
+       $result .= $cidrange;
+       $result .= <<END;
+endcidrange
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+END
+       $result;
+}
+
 sub _add_outline {
        my($self, $title, $dest, $parent) = @_;
-       $title = PDFJ::Util::tounicode($title, 1) if $title =~ /[\x80-\xff]/;
+       $title = PDFJ::Util::tounicode($title, 1) if $title =~ /[\x80-\xff]/;
        my $lastitem = $parent->get('Last');
        my $newitem;
        if( $lastitem ) {
                $newitem = $self->indirect(dictionary({
-                       Title => string($title), 
+                       Title => textstring($title), 
                        Parent => $parent,
                        Prev => $lastitem,
                        Count => 0,
@@ -928,7 +1498,7 @@ sub _add_outline {
                $parent->set('Last', $newitem);
        } else {
                $newitem = $self->indirect(dictionary({
-                       Title => string($title), 
+                       Title => textstring($title), 
                        Parent => $parent,
                        Count => 0,
                        }));
@@ -944,7 +1514,10 @@ sub _add_outline {
 }
 
 sub add_outline {
-       my($self, $title, $dest, $level) = @_;
+       my($self, $title, $page, $x, $y, $level) = @_;
+       return unless UNIVERSAL::isa($page, 'PDFJ::Page');
+       # add to outline
+       my $dest = $page->dest('XYZ', $x, $y, 0);
        unless( $self->{outline} ) {
                $self->{outline} = $self->indirect(dictionary({
                        Type => name('Outlines'),
@@ -954,17 +1527,40 @@ sub add_outline {
                $self->{catalog}->set('PageMode', name('UseOutlines'));
        }
        my $parent = $self->{outline};
-       while( $level-- ) {
+       for( my $j = 0; $j < $level; $j++ ) {
                $parent = $parent->get('Last') ?
                        $parent->get('Last') :
                        $self->_add_outline('', undef, $parent);
        }
        $self->_add_outline($title, $dest, $parent);
+       # add to outlinetree
+       unless( $self->{outlinetree} ) {
+               $self->{outlinetree} = [];
+       }
+       $parent = $self->{outlinetree};
+       for( my $j = 0; $j < $level; $j++ ) {
+               push @$parent, ['', undef, undef, undef, []] unless @$parent;
+               $parent = $$parent[$#$parent][4];
+       }
+       push @$parent, [$title, $page, $x, $y, []];
+}
+
+sub outlinetree {
+       my($self) = @_;
+       $self->{outlinetree};
 }
 
 sub add_dest {
-       my($self, $name, $dest) = @_;
-       $self->{dest}{$name} = $dest;
+       my($self, $name, $page, $x, $y) = @_;
+       return unless UNIVERSAL::isa($page, 'PDFJ::Page');
+       my $dest = $page->dest('XYZ', $x, $y, 0);
+       push @{$self->{dest}{$name}}, $dest;
+       push @{$self->{destpage}{$name}}, [$page, $x, $y];
+}
+
+sub destnames {
+       my($self) = @_;
+       keys %{$self->{dest}};
 }
 
 sub dest {
@@ -972,43 +1568,72 @@ sub dest {
        $self->{dest}{$name};
 }
 
+sub destpage {
+       my($self, $name) = 
+               PDFJ::Util::methodargs([qw(name)], @_);
+       $self->{destpage}{$name};
+}
+
 sub indirect {
        my($self, $obj) = @_;
        $obj->indirect($self->{objtable});
 }
 
 sub print {
-       my($self, $filename) = @_;
+       my($self, $file) = PDFJ::Util::methodargs([qw(file)], @_);
        $self->_solve_link;
+       $self->_setunusedfont;
        $self->_complete_subsetfont;
-       my $handle = FileHandle->new(">$filename");
+       my($handle, $needclose);
+       if( ref($file) eq 'GLOB' || PDFJ::Util::objisa($file, 'IO::Handle') ) {
+               $handle = $file;
+               $needclose = 0;
+       } else {
+               $handle = FileHandle->new(">$file");
+               $needclose = 1;
+       }
        return unless $handle;
        my $fobj = PDFJ::File->new($self->{version}, $handle, $self->{objtable}, 
-               $self->{catalog});
+               $self->{catalog}, $self->{id}, $self->{info}, $self->{encrypt}, 
+               $self->{encryptkey}, $self->{filter});
        $fobj->print;
-       close $handle;
+       close $handle if $needclose;
 }
 
 sub new_page {
-       my $self = shift;
-       PDFJ::Page->new($self, @_);
+       my($self, $pagewidth, $pageheight, $dur, $trans)
+               = PDFJ::Util::methodargs([qw(pagewidth pageheight dur trans)], @_);
+       PDFJ::Page->new($self, -1, $pagewidth, $pageheight, $dur, $trans);
+}
+
+sub insert_page {
+       my($self, $idx, $pagewidth, $pageheight, $dur, $trans)
+               = PDFJ::Util::methodargs([qw(number pagewidth pageheight dur trans)], @_);
+       PDFJ::Page->new($self, $idx, $pagewidth, $pageheight, $dur, $trans);
 }
 
 sub get_page {
-       my($self, $idx) = @_;
+       my($self, $idx) = PDFJ::Util::methodargs([qw(number)], @_);
        $self->{pageobjlist}->[$idx];
 }
 
-sub get_lastpagenum {
+sub lastpagenum {
        my $self = shift;
        scalar @{$self->{pagelist}};
 }
 
+# for backward conpatible
+sub get_lastpagenum {
+       &lastpagenum;
+}
+
 sub new_font {
-       if( @_ > 3 ) {
-               &new_combofont;
+       my($self, $basefont, $encoding, $abasefont, $aencoding, $asize) = 
+               PDFJ::Util::methodargs([qw(basefont encoding abasefont aencoding asize)], @_);
+       if( $abasefont ) {
+               $self->new_combofont($basefont, $encoding, $abasefont, $aencoding, $asize);
        } else {
-               &new_singlefont;
+               $self->new_singlefont($basefont, $encoding);
        }
 }
 
@@ -1019,12 +1644,13 @@ sub new_singlefont {
        if( $type eq 'a' ) {
                new_afont($self, $basefont, $encoding);
        } elsif( $type eq 'j' ) {
-               new_jfont($self, $basefont, $encoding);
-       } elsif( $basefont =~ /\.ttf$/i || $basefont =~ /\.ttc:\d$/i ) {
+               new_cidfont($self, $basefont, $encoding);
+       } elsif( $basefont =~ /\.ttf$/i || $basefont =~ /\.ttc:\d$/i || 
+               $basefont =~ /\.otf$/i ) {
                if( $PDFJ::Default{Encodings}{$encoding} eq 'a' ) {
                        new_afont($self, $basefont, $encoding);
                } else {
-                       new_jfont($self, $basefont, $encoding);
+                       new_cidfont($self, $basefont, $encoding);
                }
        } else {
                croak "unknown font: $basefont";
@@ -1032,10 +1658,10 @@ sub new_singlefont {
 }
 
 sub new_combofont {
-       my($self, $zbase, $zenc, $hbase, $henc) = @_;
-       my $hfont = UNIVERSAL::isa($hbase, "PDFJ::AFont") ? $hbase :
+       my($self, $zbase, $zenc, $hbase, $henc, $hsize) = @_;
+       my $hfont = PDFJ::Util::objisa($hbase, "PDFJ::AFont") ? $hbase :
                new_afont($self, $hbase, $henc);
-       new_jfont($self, $zbase, $zenc, $hfont);
+       new_cidfont($self, $zbase, $zenc, $hfont, $hsize);
 }
 
 sub new_afont {
@@ -1046,39 +1672,46 @@ sub new_afont {
                unless $PDFJ::Default{Encodings}{$encoding} eq 'a';
        if( $basefont =~ /\.ttf$/i || $basefont =~ /\.ttc:\d$/i ) {
                PDFJ::AFont->new_ttf($self, $basefont, $encoding);
+       } elsif( $basefont =~ /\.otf$/i ) {
+               PDFJ::AFont->new_otf($self, $basefont, $encoding);
        } else {
                PDFJ::AFont->new_std($self, $basefont, $encoding);
        }
 }
 
-sub new_jfont {
-       my($self, $basefont, $encoding, $hfont) = @_;
+sub new_cidfont {
+       my($self, $basefont, $encoding, $hfont, $hsize) = @_;
        $basefont ||= $PDFJ::Default{BaseJFont};
        $encoding ||= $PDFJ::Default{JFontEncoding};
-       croak "encoding type mismatch" 
-               unless $PDFJ::Default{Encodings}{$encoding} eq 
-                       ($PDFJ::Default{Jcode} eq 'SJIS' ? 'js' : 'je');
+       my $enctype = $PDFJ::Default{Encodings}{$encoding};
+       my $codetype = $PDFJ::Default{Jcode} eq 'SJIS' ? 's' : 
+               $PDFJ::Default{Jcode} eq 'EUC' ? 'e' : 'u';
+       croak "encoding type mismatch" unless $enctype =~ /$codetype/;
        if( $basefont =~ /\.ttf$/i || $basefont =~ /\.ttc:\d$/i ) {
-               PDFJ::JFont->new_ttf($self, $basefont, $encoding, $hfont);
+               PDFJ::CIDFont->new_ttf($self, $basefont, $encoding, $hfont, $hsize);
+       } elsif( $basefont =~ /\.otf$/i ) {
+               PDFJ::CIDFont->new_otf($self, $basefont, $encoding, $hfont, $hsize);
        } else {
-               PDFJ::JFont->new_std($self, $basefont, $encoding, $hfont);
+               PDFJ::CIDFont->new_std($self, $basefont, $encoding, $hfont, $hsize);
        }
 }
 
 sub new_image {
-       my($self, $src, $pxwidth, $pxheight, $width, $height, $padding, $colorspace)
-               = @_;
+       my($self, $src, $pxwidth, $pxheight, $width, $height, $padding, 
+               $colorspace, $type)
+               = PDFJ::Util::methodargs([qw(src pxwidth pxheight width height padding 
+               colorspace type)], @_);
        PDFJ::Image->new($self, $src, $pxwidth, $pxheight, $width, $height, 
-               $padding, $colorspace);
+               $padding, $colorspace, $type);
 }
 
 sub italic {
-       my($self, @args) = @_;
+       my($self, @args) = PDFJ::Util::methodargs([qw(base decorated)], @_);
        $self->_deco('italic', @args);
 }
 
 sub bold {
-       my($self, @args) = @_;
+       my($self, @args) = PDFJ::Util::methodargs([qw(base decorated)], @_);
        $self->_deco('bold', @args);
 }
 
@@ -1092,12 +1725,12 @@ sub _deco {
                if( $base->isa("PDFJ::AFont") ) {
                        croak "font type mismatch" unless $deco->isa("PDFJ::AFont");
                        $self->{$style}{$base->{name}} = $deco->{name};
-               } elsif( $base->isa("PDFJ::JFont") ) {
-                       croak "font type mismatch" unless $deco->isa("PDFJ::JFont");
+               } elsif( $base->isa("PDFJ::CIDFont") ) {
+                       croak "font type mismatch" unless $deco->isa("PDFJ::CIDFont");
                        if( $base->{combo} ) {
                                croak "font combo type mismatch" unless $deco->{combo};
-                               $self->{$style}{$base->{zname}, $base->{hname}} = 
-                                       join($;, $deco->{zname}, $deco->{hname});
+                               $self->{$style}{$base->{zname}, $base->{hname}, $base->{hsize}}
+                                       = join($;, $deco->{zname}, $deco->{hname}, $deco->{hsize});
                        } else {
                                croak "font combo type mismatch" if $deco->{combo};
                                $self->{$style}{$base->{zname}} = $deco->{zname};
@@ -1109,14 +1742,25 @@ sub _deco {
 sub _bolditalicname {
        my($self, $name, $style) = @_; # $style: PDFJ::TStyle object
        my $dname = $name;
-       $dname = $self->{italic}{$dname} || $dname if $style->{italic};
-       $dname = $self->{bold}{$dname} || $dname if $style->{bold};
+       $dname = $self->{italic}{$dname} if $style->{italic};
+       $dname = $self->{bold}{$dname} if $style->{bold};
        $dname;
 }
 
-sub _bold {
-       my($self, $name) = @_;
-       $self->{fontlist}{$self->{bold}{$name}}
+sub _bolditalicfont {
+       my($self, $font, $style) = @_; # $style: PDFJ::TStyle object
+       my $name = $font->fname;
+       my $docobj = $font->{docobj};
+       my $dname = $name;
+       if( $style->{italic} ) {
+               $dname = $self->{italic}{$dname} 
+                       or croak "missing italic font";
+       }
+       if( $style->{bold} ) {
+               $dname = $self->{bold}{$dname} 
+                       or croak "missing bold font";
+       }
+       $dname eq $name ? $font : $docobj->_fontobj($dname);
 }
 
 sub _solve_link {
@@ -1126,15 +1770,37 @@ sub _solve_link {
        }
 }
 
+sub _usefonts {
+       my($self, @names) = @_;
+       for my $name(@names) {
+               $self->{usedfont}{$name} = 1;
+       }
+}
+
+sub _setunusedfont {
+       my $self = shift;
+       for my $name(keys %{$self->{fontlist}}) {
+               unless( $self->{usedfont}{$name} ) {
+                       $self->{fontlist}{$name}->unused(1);
+               }
+       }
+}
+
 sub _complete_subsetfont {
        my $self = shift;
        for my $name(keys %{$self->{subsetttf}}) {
                my $sttf = $self->{subsetttf}{$name};
                my $ttf = $sttf->{ttf};
                my $direction = $sttf->{direction};
+               my $encoding = $sttf->{encoding};
                my @unicodes = sort keys %{$sttf->{subset_unicodes}};
+               if( $self->{fontlist}{$name}->unused ) {
+                       carp "a font which is used in Text but not used in Page exists"
+                               if @unicodes;
+                       next;
+               }
                my $font = $self->{fontlist}{$name};
-               my($subset, $c2g, $cidset) = $ttf->subset($direction, @unicodes);
+               my($subset, $c2g, $cidset) = $ttf->subset($encoding, @unicodes);
                my $size = length $subset;
                my($encoded, $filter) = $self->_makestream(\$subset);
                croak "cannot encode ttf subset data" unless $encoded;
@@ -1161,28 +1827,35 @@ if(0) {
                        }, stream => $encoded)));
 }
        }
+       for my $name(keys %{$self->{subsetotf}}) {
+               my $sotf = $self->{subsetotf}{$name};
+               my $otf = $sotf->{otf};
+               my $direction = $sotf->{direction};
+               my $encoding = $sotf->{encoding};
+               my @unicodes = sort keys %{$sotf->{subset_unicodes}};
+               if( $self->{fontlist}{$name}->unused ) {
+                       carp "a font which is used in Text but not used in Page exists"
+                               if @unicodes;
+                       next;
+               }
+               my $font = $self->{fontlist}{$name};
+               my($subset) = $otf->subset($encoding, @unicodes);
+               my $size = length $subset;
+               my($encoded, $filter) = $self->_makestream(\$subset);
+               croak "cannot encode otf subset data" unless $encoded;
+               $font->get('DescendantFonts')->get(0)->get('FontDescriptor')->set(
+                       FontFile3 => $self->indirect(stream(dictionary => {
+                               Subtype => name('OpenType'),
+                               Filter  => $filter,
+                               Length  => length($encoded),
+                               Length1 => $size,
+                       }, stream => $encoded)));
+       }
 }
 
 sub _makestream {
        my($self, $src, @addfilters) = @_;
-       my($encoded, $deflated, @filters);
-       if( $self->filter =~ /af/ ) {
-               ($encoded, $deflated) = PDFJ::Util::deflate_ascii85encode($src);
-               return unless $encoded;
-               @filters = $deflated ? qw(ASCII85Decode FlateDecode) :
-                       qw(ASCII85Decode);
-       } elsif( $self->filter =~ /f/ ) {
-               $encoded = PDFJ::Util::deflate($src) or return;
-               @filters = qw(FlateDecode);
-       } elsif( $self->filter =~ /a/ ) {
-               $encoded = PDFJ::Util::ascii85encode($src) or return;
-               @filters = qw(ASCII85Decode);
-       } else {
-               return;
-       }
-       push @filters, @addfilters if @addfilters;
-       my $filter = @filters > 1 ? [map {name($_)} @filters] : name($filters[0]);
-       ($encoded, $filter);
+       PDFJ::Util::makestream($self->filter, $src, @addfilters);
 }
 
 sub _nextsubsettag {
@@ -1197,30 +1870,43 @@ sub _nextfontnum {
 
 sub _registfont {
        my($self, $fontobj) = @_;
-       my $baseorttf = $fontobj->{ttffile} || $fontobj->{basefont};
+       my $baseorttf = 
+               $fontobj->{ttffile} || $fontobj->{otffile} || $fontobj->{basefont};
        my $encoding = $fontobj->{encoding};
        my $name = $fontobj->{name} || $fontobj->{zname};
        my $font = $fontobj->{font} || $fontobj->{zfont};
        $self->{fontname}{$baseorttf, $encoding} = $name;
        $self->{fontlist}{$name} = $font;
        if( $fontobj->{combo} ) {
-               $self->{fontobjlist}{$name, $fontobj->{hname}} = $fontobj;
+               $self->{fontobjlist}{$name, $fontobj->{hname}, $fontobj->{hsize}} = 
+                       $fontobj;
        } else {
                $self->{fontobjlist}{$name} = $fontobj;
        }
 }
 
-sub _registsubset {
+sub _registsubset_ttf {
        my($self, %args) = @_;
        $args{subset_unicodes} = {};
        $self->{subsetttf}{$args{name}} = \%args;
 }
 
+sub _registsubset_otf {
+       my($self, %args) = @_;
+       $args{subset_unicodes} = {};
+       $self->{subsetotf}{$args{name}} = \%args;
+}
+
 sub _subsetttf {
        my($self, $name) = @_;
        $self->{subsetttf}{$name};
 }
 
+sub _subsetotf {
+       my($self, $name) = @_;
+       $self->{subsetotf}{$name};
+}
+
 sub _fontname {
        my($self, $baseorttf, $encoding) = @_;
        $self->{fontname}{$baseorttf, $encoding};
@@ -1232,31 +1918,39 @@ sub _font {
 }
 
 sub _fontobj {
-       my($self, $name, $hname) = @_;
+       my($self, $name, $hname, $hsize) = @_;
+       $hsize ||= 1;
        $hname ? 
-               $self->{fontobjlist}{$name, $hname} :
+               $self->{fontobjlist}{$name, $hname, $hsize} :
                $self->{fontobjlist}{$name};
 }
 
 sub _jcidsysteminfo {
        my $self = shift;
-       unless( $self->{jcidsysteminfo} ) {
-               $self->{jcidsysteminfo} = $self->indirect(dictionary({
-                       Registry => 'Adobe',
-                       Ordering => 'Japan1',
-                       Supplement => 2,
+       $self->_cidsysteminfo('j');
+}
+
+sub _cidsysteminfo {
+       my($self, $ename) = @_;
+       my $name = $ename . 'cidsysteminfo';
+       unless( $self->{$name} ) {
+               my($r, $o, $s) = split /-/, $PDFJ::Default{CIDSystemInfo}{$ename};
+               $self->{$name} = $self->indirect(dictionary({
+                       Registry => $r,
+                       Ordering => $o,
+                       Supplement => $s,
                }));
        }
-       $self->{jcidsysteminfo};
+       $self->{$name};
 }
 
-sub _jfontdescriptor {
+sub _fontdescriptor {
        my($self, $basefont) = @_;
-       unless( $self->{jfontdescriptor}->{$basefont} ) {
-               $self->{jfontdescriptor}->{$basefont} = 
-                       $self->indirect($PDFJ::Default{JFD}{$basefont});
+       unless( $self->{fontdescriptor}->{$basefont} ) {
+               $self->{fontdescriptor}->{$basefont} = 
+                       $self->indirect(dictionary($PDFJ::Default{FD}{$basefont}));
        }
-       $self->{jfontdescriptor}->{$basefont};
+       $self->{fontdescriptor}->{$basefont};
 }
 
 sub _nextimagenum {
@@ -1269,6 +1963,26 @@ sub _registimage {
        $self->{imagelist}->{$name} = $image;
 }
 
+sub new_minipage {
+       my($self, $width, $height, $padding, $opacity) 
+               = PDFJ::Util::methodargs([qw(width height padding opacity)], @_);
+       PDFJ::MiniPage->new($self, $width, $height, $padding, $opacity);
+}
+
+sub _nextxobjnum {
+       my $self = shift;
+       if( $self->{xobjlist} ) {
+               1 + scalar keys %{$self->{xobjlist}};
+       } else {
+               1;
+       }
+}
+
+sub _registxobj {
+       my($self, $name, $xobj) = @_;
+       $self->{xobjlist}->{$name} = $xobj;
+}
+
 #--------------------------------------------------------------------------
 package PDFJ::Font;
 use strict;
@@ -1277,7 +1991,7 @@ use strict;
 package PDFJ::AFont;
 use strict;
 use Carp;
-use SelfLoader;
+#use SelfLoader;
 use PDFJ::Object;
 use vars qw(@ISA);
 @ISA = qw(PDFJ::Font);
@@ -1294,9 +2008,11 @@ sub new_std {
                Name => name($name),
                BaseFont => name($basefont),
                Subtype => name('Type1'),
-               Encoding => name($encoding),
+               Encoding => $docobj->cmap($encoding),
        }));
-       my $width = fontwidth($basefont);
+       require PDFJ::Type1;
+       #my $width = fontwidth($basefont);
+       my $width = PDFJ::Type1::fontwidth($basefont, $encoding);
        my $self = bless {docobj => $docobj, basefont => $basefont, 
                encoding => $encoding, font => $font, name => $name, width => $width,
                direction => 'H'}, $class;
@@ -1351,46 +2067,92 @@ sub new_ttf {
        $self;
 }
 
-sub selectname {
-       my($self, $style) = @_;
-       my $docobj = $self->{docobj};
-       $docobj->_bolditalicname($self->{name}, $style);
-}
-
-sub hash {
-       my $self = shift;
-       ($self->{name}, $self->{font});
-}
-
-sub string_fontwidth {
-       my($self, $string) = @_;
-       my $fontwidth = $self->{width};
-       my $width = 0;
-       for my $c(split '', $string) {
-               $width += $fontwidth->[ord $c];
-       }
-       $width / 1000;
-}
-
-sub astring_fontwidth {
-       &string_fontwidth;
-}
-
-# NOT method
-my %FontWidth;
-sub fontwidth {
-       my($basefont) = @_;
-       $basefont =~ s/-/_/g;
-       return $FontWidth{$basefont} if $FontWidth{$basefont};
-       my $func = "fontwidth_$basefont";
-       my $result = eval { no strict 'refs'; &$func(); };
-       croak $@ if $@;
-       $FontWidth{$basefont} = $result if $result;
-       $result;
-}
+sub new_otf {
+       my($class, $docobj, $otffile, $encoding) = @_;
+       croak "OpenType embedding requires PDF version 1.6 or above"
+               if $docobj->{version} < 1.6;
+       my $name = $docobj->_fontname($otffile, $encoding);
+       return $docobj->_fontobj($name) if $name;
+       $name = "F".$docobj->_nextfontnum;
+       my $otf = PDFJ::Util::otfopen($otffile);
+       my $info = $otf->pdf_info_ascii($encoding);
+       croak "'$otffile' embedding inhibited"
+               if $info->{EmbedFlag} == 2 || $info->{EmbedFlag} & 0x200;
+       my $size = -s $otffile;
+       my($encoded, $filter) = $docobj->_makestream($otffile);
+       my $basefont = $info->{BaseFont};
+       my @widths = @{$info->{Widths}};
+       my $font = $docobj->indirect(dictionary({
+               Type => name('Font'),
+               Name => name($name),
+               BaseFont => name($basefont),
+               Subtype => name('TrueType'), # OK?
+               Encoding => name($info->{Encoding}),
+               FirstChar => $info->{FirstChar},
+               LastChar => $info->{LastChar},
+               Widths => $docobj->indirect(array(\@widths)),
+               FontDescriptor => $docobj->indirect(dictionary({
+                       Type => name('FontDescriptor'),
+                       Ascent => $info->{Ascent},
+                       CapHeight => $info->{CapHeight},
+                       Descent => $info->{Descent},
+                       Flags => $info->{Flags},
+                       FontBBox => $info->{FontBBox},
+                       FontName => name($info->{FontName}),
+                       ItalicAngle => $info->{ItalicAngle},
+                       StemV => 0, # OK?
+                       FontFile3 => $docobj->indirect(stream(dictionary => {
+                               Subtype => name('OpenType'),
+                               Filter  => $filter,
+                               Length  => length($encoded),
+                               Length1 => $size,
+                       }, stream => $encoded)),
+               })),
+       }));
+       my $self = bless {docobj => $docobj, # basefont => $basefont, 
+               encoding => $encoding, otffile => $otffile,
+               font => $font, name => $name, width => $info->{Widths}, 
+               direction => 'H'}, $class;
+       $docobj->_registfont($self);
+       $self;
+}
+
+sub fname {
+       my($self) = @_;
+       $self->{name};
+}
+
+sub selectname {
+       my($self, $style) = @_;
+       $self->{docobj}->_bolditalicname($self->fname, $style);
+}
+
+sub selectfont {
+       my($self, $style) = @_;
+       $self->{docobj}->_bolditalicfont($self, $style);
+}
+
+sub hash {
+       my $self = shift;
+       ($self->{name}, $self->{font});
+}
+
+sub string_fontwidth {
+       my($self, $string) = @_;
+       my $fontwidth = $self->{width};
+       my $width = 0;
+       for my $c(split '', $string) {
+               $width += $fontwidth->[ord $c];
+       }
+       $width / 1000;
+}
+
+sub astring_fontwidth {
+       &string_fontwidth;
+}
 
 #--------------------------------------------------------------------------
-package PDFJ::JFont;
+package PDFJ::CIDFont;
 use strict;
 use Carp;
 use PDFJ::Object;
@@ -1398,15 +2160,15 @@ use vars qw(@ISA);
 @ISA = qw(PDFJ::Font);
 
 sub new_std {
-       my($class, $docobj, $basefont, $encoding, $hfontobj) = @_;
-       croak "illegal japanese font name: $basefont"
-               unless $PDFJ::Default{Fonts}{$basefont} eq 'j';
+       my($class, $docobj, $basefont, $encoding, $hfontobj, $hsize) = @_;
+       croak "illegal CID font name: $basefont"
+               if $PDFJ::Default{Fonts}{$basefont} eq 'a';
        croak "ascii font type mismatch"
-               if $hfontobj && !UNIVERSAL::isa($hfontobj, "PDFJ::AFont");
+               if $hfontobj && !PDFJ::Util::objisa($hfontobj, "PDFJ::AFont");
        my $name = $docobj->_fontname($basefont, $encoding);
        my $hname = $hfontobj ? $hfontobj->{name} : undef;
-       return $docobj->_fontobj($name, $hname) 
-               if $name && $docobj->_fontobj($name, $hname);
+       return $docobj->_fontobj($name, $hname, $hsize
+               if $name && $docobj->_fontobj($name, $hname, $hsize);
        # Zenkaku font
        my $code = $PDFJ::Default{Jcode};
        my($direction) = $encoding =~ /-(\w+)$/;
@@ -1415,23 +2177,26 @@ sub new_std {
                $zname = $name;
                $zfont = $docobj->_font($name);
        } else {
-               my $jcidsi = $docobj->_jcidsysteminfo;
-               my $jfd = $docobj->_jfontdescriptor($basefont);
+               my $ename = substr($PDFJ::Default{Encodings}{$encoding}, 0, 1);
+               my $cidsi = $docobj->_cidsysteminfo($ename);
+               my $fd = $docobj->_fontdescriptor($basefont);
+               my $w = $ename eq 'j' ? [231, 389, 500, 631, [500]] : [];
                $zname = "F".$docobj->_nextfontnum;
                $zfont = $docobj->indirect(dictionary({
                        Name => name($zname),
                        Type => name("Font"),
                        Subtype => name('Type0'),
-                       Encoding => name($encoding),
+                       Encoding => $docobj->cmap($encoding),
                        BaseFont => name("$basefont-$encoding"),
                        DescendantFonts => [{
                                Type => name('Font'),
                                Subtype => name('CIDFontType0'),
                                BaseFont => name($basefont),
-                               CIDSystemInfo => $jcidsi,
+                               CIDSystemInfo => $cidsi,
                                DW => 1000,
-                               W => [231, 389, 500, 631, [500]],
-                               FontDescriptor => $jfd,
+                               # W => [231, 389, 500, 631, [500]],
+                               W => $w,
+                               FontDescriptor => $fd,
                        }],
                }));
        }
@@ -1439,10 +2204,12 @@ sub new_std {
        my($combo, $hfont);
        if( $hfontobj ) {
                $combo = 1;
+               $hsize ||= 1;
                $hname = $hfontobj->{name};
                $hfont = $hfontobj->{font};
        } else {
                $combo = 0;
+               $hsize = 0;
                $hname = $zname;
                $hfont = $zfont;
        }
@@ -1457,6 +2224,7 @@ sub new_std {
                direction => $direction,
                code => $code,
                combo => $combo,
+               hsize => $hsize,
                hfontobj => $hfontobj,
        }, $class;
        $docobj->_registfont($self);
@@ -1464,15 +2232,15 @@ sub new_std {
 }
 
 sub new_ttf {
-       my($class, $docobj, $ttffile, $encoding, $hfontobj) = @_;
+       my($class, $docobj, $ttffile, $encoding, $hfontobj, $hsize) = @_;
        croak "TrueType subset embedding requires PDF version 1.3 or above"
                if $docobj->{version} < 1.3;
        croak "ascii font type mismatch"
-               if $hfontobj && !UNIVERSAL::isa($hfontobj, "PDFJ::AFont");
+               if $hfontobj && !PDFJ::Util::objisa($hfontobj, "PDFJ::AFont");
        my $name = $docobj->_fontname($ttffile, $encoding);
        my $hname = $hfontobj ? $hfontobj->{name} : undef;
-       return $docobj->_fontobj($name, $hname) 
-               if $name && $docobj->_fontobj($name, $hname);
+       return $docobj->_fontobj($name, $hname, $hsize
+               if $name && $docobj->_fontobj($name, $hname, $hsize);
        # Zenkaku font
        my $code = $PDFJ::Default{Jcode};
        my($direction) = $encoding =~ /-(\w+)$/;
@@ -1482,27 +2250,30 @@ sub new_ttf {
                $zfont = $docobj->_font($name);
        } else {
                my $ttf = PDFJ::Util::ttfopen($ttffile);
-               my $info = $ttf->pdf_info_japan($encoding);
+               my $info = $ttf->pdf_info_cid($encoding);
                croak "'$ttffile' embedding inhibited ($info->{EmbedFlag})"
                        if $info->{EmbedFlag} == 2 || $info->{EmbedFlag} & 0x100 ||
                                $info->{EmbedFlag} & 0x200;
                my $subsetname = $docobj->_nextsubsettag . '+' . $info->{BaseFont};
                my $basefont = $info->{BaseFont};
-               my $jcidsi = $docobj->_jcidsysteminfo;
+               my $ename = substr($PDFJ::Default{Encodings}{$encoding}, 0, 1);
+               my $cidsi = $docobj->_cidsysteminfo($ename);
+               my $w = $ename eq 'j' ? [231, 389, 500, 631, [500]] : [];
                $zname = "F".$docobj->_nextfontnum;
                $zfont = $docobj->indirect(dictionary({
                        Name => name($zname),
                        Type => name("Font"),
                        Subtype => name('Type0'),
-                       Encoding => name($encoding),
+                       Encoding => $docobj->cmap($encoding),
                        BaseFont => name($subsetname),
                        DescendantFonts => [$docobj->indirect(dictionary({
                                Type => name('Font'),
                                Subtype => name('CIDFontType2'), # TrueType
                                BaseFont => name($basefont),
-                               CIDSystemInfo => $jcidsi,
+                               CIDSystemInfo => $cidsi,
                                DW => 1000,
-                               W => [231, 389, 500, 631, [500]],
+                               # W => [231, 389, 500, 631, [500]],
+                               W => $w,
                                FontDescriptor => $docobj->indirect(dictionary({
                                        Type => name('FontDescriptor'),
                                        Ascent => $info->{Ascent},
@@ -1518,18 +2289,21 @@ sub new_ttf {
                                # CIDToGIDMap added later
                        }))],
                }));
-               $docobj->_registsubset(
-                       name => $zname, ttf => $ttf, direction => $direction);
+               $docobj->_registsubset_ttf(
+                       name => $zname, ttf => $ttf, encoding => $encoding, 
+                       direction => $direction);
        }
        my $subset_unicodes = $docobj->_subsetttf($zname)->{subset_unicodes};
        # Hankaku font
        my($combo, $hfont);
        if( $hfontobj ) {
                $combo = 1;
+               $hsize ||= 1;
                $hname = $hfontobj->{name};
                $hfont = $hfontobj->{font};
        } else {
                $combo = 0;
+               $hsize = 0;
                $hname = $zname;
                $hfont = $zfont;
        }
@@ -1545,6 +2319,7 @@ sub new_ttf {
                direction => $direction,
                code => $code,
                combo => $combo,
+               hsize => $hsize,
                hfontobj => $hfontobj,
                subset_unicodes => $subset_unicodes,
        }, $class;
@@ -1552,15 +2327,118 @@ sub new_ttf {
        $self;
 }
 
-sub selectname { 
-       my($self, $style, $mode) = @_;
-       my $docobj = $self->{docobj};
-       if( $self->{combo} ) {
-               split $;, $docobj->_bolditalicname(
-                       join($;, $self->{zname}, $self->{hname}), $style);
+use Data::Dumper;
+
+sub new_otf {
+       my($class, $docobj, $otffile, $encoding, $hfontobj, $hsize) = @_;
+       croak "OpenType embedding requires PDF version 1.6 or above"
+               if $docobj->{version} < 1.6;
+       croak "ascii font type mismatch"
+               if $hfontobj && !PDFJ::Util::objisa($hfontobj, "PDFJ::AFont");
+       my $name = $docobj->_fontname($otffile, $encoding);
+       my $hname = $hfontobj ? $hfontobj->{name} : undef;
+       return $docobj->_fontobj($name, $hname, $hsize) 
+               if $name && $docobj->_fontobj($name, $hname, $hsize);
+       # Zenkaku font
+       my $code = $PDFJ::Default{Jcode};
+       my($direction) = $encoding =~ /-(\w+)$/;
+       my($zname, $zfont);
+       if( $name ) {
+               $zname = $name;
+               $zfont = $docobj->_font($name);
+       } else {
+               my $otf = PDFJ::Util::otfopen($otffile);
+               my $info = $otf->pdf_info_cid($encoding);
+               croak "'$otffile' embedding inhibited ($info->{EmbedFlag})"
+                       if $info->{EmbedFlag} == 2 || $info->{EmbedFlag} & 0x100 ||
+                               $info->{EmbedFlag} & 0x200;
+               my $subsetname = $docobj->_nextsubsettag . '+' . $info->{BaseFont};
+               my $basefont = $info->{BaseFont};
+               my $ename = substr($PDFJ::Default{Encodings}{$encoding}, 0, 1);
+               my $cidsi = $docobj->_cidsysteminfo($ename);
+               my $w = $ename eq 'j' ? [231, 389, 500, 631, [500]] : [];
+               $zname = "F".$docobj->_nextfontnum;
+               $zfont = $docobj->indirect(dictionary({
+                       Name => name($zname),
+                       Type => name("Font"),
+                       Subtype => name('Type0'),
+                       Encoding => $docobj->cmap($encoding),
+                       BaseFont => name($subsetname),
+                       DescendantFonts => [$docobj->indirect(dictionary({
+                               Type => name('Font'),
+                               Subtype => name('CIDFontType0'), # OpenType
+                               BaseFont => name($basefont),
+                               CIDSystemInfo => $cidsi,
+                               DW => 1000,
+                               # W => [231, 389, 500, 631, [500]],
+                               W => $w,
+                               FontDescriptor => $docobj->indirect(dictionary({
+                                       Type => name('FontDescriptor'),
+                                       Ascent => $info->{Ascent},
+                                       CapHeight => $info->{CapHeight},
+                                       Descent => $info->{Descent},
+                                       Flags => $info->{Flags},
+                                       FontBBox => $info->{FontBBox},
+                                       FontName => name($subsetname),
+                                       ItalicAngle => $info->{ItalicAngle},
+                                       StemV => 0, # OK?
+                                       # FontFile3 added later
+                               })),
+                       }))],
+               }));
+               $docobj->_registsubset_otf(
+                       name => $zname, otf => $otf, encoding => $encoding, 
+                       direction => $direction);
+       }
+       my $subset_unicodes = $docobj->_subsetotf($zname)->{subset_unicodes};
+       # Hankaku font
+       my($combo, $hfont);
+       if( $hfontobj ) {
+               $combo = 1;
+               $hsize ||= 1;
+               $hname = $hfontobj->{name};
+               $hfont = $hfontobj->{font};
        } else {
-               $docobj->_bolditalicname($self->{zname}, $style);
+               $combo = 0;
+               $hsize = 0;
+               $hname = $zname;
+               $hfont = $zfont;
        }
+       my $self = bless {
+               docobj => $docobj, 
+               #basefont => $basefont, 
+               encoding => $encoding, 
+               otffile => $otffile,
+               zfont => $zfont, 
+               hfont => $hfont, 
+               zname => $zname, 
+               hname => $hname,
+               direction => $direction,
+               code => $code,
+               combo => $combo,
+               hsize => $hsize,
+               hfontobj => $hfontobj,
+               subset_unicodes => $subset_unicodes,
+       }, $class;
+       $docobj->_registfont($self);
+       $self;
+}
+
+sub fname {
+       my($self) = @_;
+       $self->{combo} ? join($;, $self->{zname}, $self->{hname}, $self->{hsize}) :
+               $self->{zname};
+}
+
+sub selectname { 
+       my($self, $style) = @_;
+       my $docobj = $self->{docobj};
+       split $;, $docobj->_bolditalicname($self->fname, $style);
+}
+
+sub selectfont {
+       my($self, $style) = @_;
+       $self->{docobj}->_bolditalicfont($self, $style);
 }
 
 sub hash {
@@ -1573,7 +2451,7 @@ sub astring_fontwidth {
        my $combo = $self->{combo};
        my $hfont = $self->{hfontobj};
        if( $combo ) {
-               $hfont->string_fontwidth($string);
+               $self->{hsize} * $hfont->string_fontwidth($string);
        } else {
                length($string) / 2;
        }
@@ -1590,31 +2468,37 @@ sub postskip { 0 }
 sub postnobreak { 0 }
 sub breakable { 0 }
 sub float { "" }
+sub colspan { 1 }
+sub rowspan { 1 }
+sub blockalign { "" }
 
 #--------------------------------------------------------------------------
 package PDFJ::Showable;
 use Carp;
 use strict;
+use PDFJ::Object;
 use vars qw(@ISA);
 @ISA = qw(PDFJ::BlockElement);
 
+sub typename {
+       my($self, $name) = @_;
+       if( defined $name ) {
+               $self->{typename} = $name;
+       } else {
+               $self->{typename};
+       }
+}
+
 sub show {
-       my($self, $page, $x, $y, $align, $transtype, @args) = @_;
+       my($self, $page, $x, $y, $align, $transtype, @args)
+               = PDFJ::Util::methodargs([qw(page x y align transtype transargs)], @_);
+       if( ref($args[0]) eq 'ARRAY' ) {
+               @args = @{$args[0]};
+       }
        if( $transtype ) {
-               if( $transtype eq 'magnify' ) {
-                       my($xmag, $ymag) = @args;
-                       $page->addcontents("q $xmag 0 0 $ymag $x $y cm");
-               } elsif( $transtype eq 'rotate' ) {
-                       my($rad) = @args;
-                       my $sin = sin($rad);
-                       my $cos = cos($rad);
-                       my $msin = -$sin;
-                       $page->addcontents("q $cos $sin $msin $cos $x $y cm");
-               } elsif( $transtype eq 'distort' ) {
-                       my($xtan, $ytan) = @args;
-                       $page->addcontents("q 1 $xtan $ytan 1 $x $y cm");
-               } else {
-                       croak "unknown transformation type";
+               my @matrix = PDFJ::Util::transmatrix($x, $y, $transtype, @args);
+               if( @matrix ) {
+                       $page->addcontents("q", numbers(@matrix), "cm");
                }
                ($x, $y) = (0, 0);
        }
@@ -1638,6 +2522,11 @@ sub show {
        if( $transtype ) {
                $page->addcontents("Q");
        }
+       my $onshow = $self->onshow;
+       if( ref($onshow) eq 'CODE' ) {
+               &$onshow;
+       }
+       return;
 }
 
 #--------------------------------------------------------------------------
@@ -1651,34 +2540,82 @@ sub new {
                $class = ref($class);
        }
        my $self;
-       if( @args == 1 && ref($args[0]) eq 'HASH' ) {
-               %$self = %{$args[0]};
+       if( @args == 1 ) {
+               if( $args[0] && !ref($args[0]) ) {
+                       $self = PDFJ::Util::strstyle2hashref($args[0]);
+               } elsif( $args[0] && 
+                       (ref($args[0]) eq 'HASH' || ref($args[0]) eq $class) ) {
+                       %$self = %{$args[0]};
+               } else {
+                       croak "illegal $class->new() argument";
+               }
        } else {
                %$self = @args;
        }
+       if( keys %$self == 1 && $self->{style} ) {
+               $self = $class->new($self->{style});
+       }
+       for my $key(keys %$self) {
+               if( $key =~ /(style|color)$/ && 
+                       (!ref($self->{$key}) || ref($self->{$key}) eq 'HASH') ) {
+                       $self->{$key} = 
+                               $key =~ /color$/ ? PDFJ::Color->new($self->{$key}) :
+                               $key eq 'withnotestyle' ? PDFJ::TextStyle->new($self->{$key}) :
+                               $key =~ /style$/ ? PDFJ::ShapeStyle->new($self->{$key}) :
+                               $self->{$key};
+               }
+       }
        bless $self, $class;
 }
 
 sub clone {
-       my($self, @args) = @_;
-       my $clone = $self->new(%$self);
+       my $self = shift;
+       $self->_clone(0, @_);
+}
+sub linkedclone {
+       my $self = shift;
+       $self->_clone(1, @_);
+}
+sub _clone {
+       my($self, $linked, @args) = @_;
+       my $clone;
        if( @args ) {
                my %args;
-               if( @args == 1 && ref($args[0]) eq 'HASH' ) {
-                       %args = %{$args[0]};
+               if( @args == 1 ) {
+                       if( !ref($args[0]) ) {
+                               %args = %{PDFJ::Util::strstyle2hashref($args[0])};
+                       } elsif( ref($args[0]) eq 'HASH' || ref($args[0]) eq ref($self) ) {
+                               %args = %{$args[0]};
+                       } else {
+                               croak "illegal clone() argument";
+                       }
                } else {
                        %args = @args;
                }
+               if( $args{style} ) {
+                       $clone = $self->clone($args{style});
+                       delete $args{style};
+               } else {
+                       $clone = $self->new(%$self);
+               }
                for my $key(keys %args) {
                        $clone->{$key} = $args{$key};
                }
+       } else {
+               $clone = $self->new(%$self);
+       }
+       delete $clone->{_clone};
+       if( $linked ) {
+               push @{$self->{_clone}}, $clone;
        }
        $clone;
 }
 
 sub merge {
-       my($self, $from) = @_;
+       my($self, $from, @nomerge) = @_;
        for my $key(keys %$from) {
+               next if $key eq '_clone';
+               next if grep {$_ eq $key} @nomerge;
                $self->{$key} = $from->{$key} unless exists $self->{$key};
        }
        $self;
@@ -1705,19 +2642,32 @@ sub merge {
                                $PDFJ::Default{LSuffixRise} : 
                        0;
        }
-       $self->SUPER::merge($from);
+       $self->SUPER::merge($from, 'ruby');
+       if( $self->{_clone} ) {
+               for my $cstyle(@{$self->{_clone}}) {
+                       $cstyle->merge($self);
+               }
+       }
+       $self;
 }
 
 sub selectfontname {
-       my($self, $mode) = @_;
-       my $font = $self->{font} or return;
-       $font->selectname($self, $mode);
+       my($self) = @_;
+       return unless $self->{font};
+       $self->{font}->selectname($self);
+}
+
+sub selectfont {
+       my($self) = @_;
+       return unless $self->{font};
+       $self->{font}->selectfont($self);
 }
 
 #--------------------------------------------------------------------------
 package PDFJ::TextSpec;
-use strict;
 use Carp;
+use strict;
+use PDFJ::Object;
 
 sub new {
        my($class, @args) = @_;
@@ -1736,14 +2686,17 @@ sub print {
 }
 
 sub set {
-       my($self, $style, $fontname) = @_;
+       my($self, $style, $fontname, $sizeratio) = @_;
        %$self = ();
-       for my $key(qw(fontsize render rise shapestyle)) {
+       for my $key(qw(fontsize render rise shapestyle contentmark)) {
                if( exists $style->{$key} ) {
                        $self->{$key} = $style->{$key};
                }
        }
        $self->{fontname} = $fontname;
+       if( $self->{fontsize} && $sizeratio ) {
+               $self->{fontsize} *= $sizeratio;
+       }
 }
 
 sub copy {
@@ -1753,7 +2706,7 @@ sub copy {
 
 sub equal {
        my($self, $other) = @_;
-       for my $key(qw(fontname fontsize render rise shapestyle)) {
+       for my $key(qw(fontname fontsize render rise shapestyle contentmark)) {
                return 0 if ($self->{$key} || "") ne ($other->{$key} || "");
        }
        return 1;
@@ -1766,11 +2719,17 @@ sub pdf {
        my $fontsize = $self->{fontsize};
        my $rise = $self->{rise} || 0;
        my $render = $self->{render} || 0;
-       my $shapepdf = $self->{shapestyle} ? $self->{shapestyle}->pdf : "";
-       my $pdf = "q ";
-       $pdf .= "$shapepdf " if $shapepdf;
-       $pdf .= "BT /$fontname $fontsize Tf $rise Ts $render Tr ";
-       $pdf;
+       my @shapepdf = $self->{shapestyle} ? $self->{shapestyle}->pdf : ();
+       my $contentmark = $self->{contentmark};
+       my @pdf = $contentmark ne '' ? ("/$contentmark BMC q") : ("q");
+       push @pdf, @shapepdf if @shapepdf;
+       push @pdf, "BT /$fontname", number($fontsize), "Tf", number($rise), "Ts $render Tr";
+       @pdf;
+}
+
+sub endpdf {
+       my($self) = @_;
+       $self->{contentmark} ne '' ? "] TJ ET Q EMC " : "] TJ ET Q ";
 }
 
 #--------------------------------------------------------------------------
@@ -1781,10 +2740,13 @@ use strict;
 sub NewLine { PDFJ::NewLine->new(@_) }
 
 sub new { 
-       my($class) = @_;
-       bless \$class, $class;
+       my($class, $level) = PDFJ::Util::methodargs([qw(level)], @_);
+       $level ||= 0;
+       bless \$level, $class;
 }
 
+sub level { ${$_[0]} }
+
 #--------------------------------------------------------------------------
 package PDFJ::Outline;
 use Carp;
@@ -1793,7 +2755,8 @@ use strict;
 sub Outline { PDFJ::Outline->new(@_) }
 
 sub new { 
-       my($class, $title, $level) = @_;
+       my($class, $title, $level)
+               = PDFJ::Util::methodargs([qw(title level)], @_);
        bless {outlinetitle => $title, outlinelevel => $level}, $class;
 }
 
@@ -1805,49 +2768,122 @@ use strict;
 sub Dest { PDFJ::Dest->new(@_) }
 
 sub new { 
-       my($class, $name) = @_;
+       my($class, $name)
+               = PDFJ::Util::methodargs([qw(name)], @_);
        bless {destname => $name}, $class;
 }
 
 #--------------------------------------------------------------------------
+package PDFJ::Null;
+use Carp;
+use strict;
+
+sub Null { PDFJ::Null->new(@_) }
+
+sub new { 
+       my($class, @args) = @_;
+       my %args;
+       if( @args > 1 ) {
+               %args = @args;
+       } elsif( @args == 1 && ref($args[0]) eq 'HASH' ) {
+               %args = %{$args[0]};
+       }
+       bless \%args, $class;
+}
+
+#--------------------------------------------------------------------------
+package PDFJ::Space;
+use Carp;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Showable);
+
+sub Space { PDFJ::Space->new(@_) }
+
+# $glue : "min,normal,max,pref" unit is fontsize
+sub new { 
+       my($class, $size, $glue, $style) = 
+               PDFJ::Util::methodargs([qw(size glue style)], @_);
+       $size ||= 0;
+       if( defined $glue ) {
+               my($gmin, $gnormal, $gmax, $gpref) = 
+                       ref($glue) eq 'ARRAY' ? @$glue : split(/\s*,\s*/, $glue);
+               my($gluedec, $glueinc) = (($gnormal - $gmin), ($gmax - $gnormal));
+               $glue = [$gnormal, $gluedec, $glueinc, $gpref];
+       }
+       bless {size => $size, glue => $glue, style => $style}, $class;
+}
+
+sub textstyle { $_[0]->{style} }
+
+sub _show {
+       my($self, $page, $x, $y) = @_;
+       my $style = $self->{style};
+       if( $style && ref($style->{pageattr}) eq 'HASH' ) {
+               for my $key(keys %{$style->{pageattr}}) {
+                       $page->setattr($key, $style->{pageattr}{$key});
+               }
+       }
+}
+sub onshow {}
+sub size { $_[0]->{size} }
+sub width { $_[0]->{size} }
+sub height { $_[0]->{size} }
+sub left { 0 }
+sub right { $_[0]->{size} }
+sub top { $_[0]->{size} }
+sub bottom { 0 }
+sub glue { 
+       my($self) = @_;
+       my $glue = $self->{glue};
+       if( ref($glue) eq 'ARRAY' ) {
+               @$glue;
+       } else {
+               (0,0,0,0);
+       }
+}
+
+#--------------------------------------------------------------------------
 package PDFJ::Text;
 use Carp;
 use strict;
+use PDFJ::Object;
 use vars qw(@ISA);
 @ISA = qw(PDFJ::Showable);
 
 sub Text { PDFJ::Text->new(@_) }
 
 sub new {
-       my $class = shift;
-       my $style = pop; # not shift
-       if( UNIVERSAL::isa($style, 'PDFJ::TextStyle') ) {
+       my($class, $texts, $style)
+               = PDFJ::Util::listargs2ref(1, 1, 
+                       PDFJ::Util::methodargs([qw(texts style)], @_));
+       if( PDFJ::Util::objisa($style, 'PDFJ::TextStyle') ) {
                $style = $style->clone;
-       } elsif( ref($style) eq 'HASH' ) {
+       } elsif( $style && (!ref($style) || ref($style) eq 'HASH') ) {
                $style = PDFJ::TextStyle->new($style);
        } else {
                croak "style argument must be a PDFJ::TextStyle object or HASHref";
        }
-       my @texts = @_;
-       my $texts = (@texts == 1 && ref($texts[0]) eq 'ARRAY') ? $texts[0] : \@texts;
        my $self = bless { texts => $texts, style => $style }, $class;
        $self->mergestyle;
        # $self->print;
        $self->makechunks;
-       $self->makerubytext;
        $self;
 }
 
 sub mergestyle {
-       my($self) = @_;
+       my($self, $indent) = @_;
        my $style = $self->style;
        return unless $style->{font};
        for my $text(@{$self->texts}) {
-               if( UNIVERSAL::isa($text, 'PDFJ::Text') ) {
+               if( PDFJ::Util::objisa($text, 'PDFJ::Text') ) {
                        $text->style->merge($style);
-                       $text->mergestyle;
+                       $text->mergestyle("$indent  ");
                }
        }
+       for my $cstyle(@{$style->{_clone}}) {
+               $cstyle->merge($style);
+       }
 }
 
 # for debug
@@ -1856,7 +2892,7 @@ sub print {
        my $style = $self->style;
        print $indent,join(',',%$style),"\n";
        for my $text(@{$self->texts}) {
-               if( UNIVERSAL::isa($text, 'PDFJ::Text') ) {
+               if( PDFJ::Util::objisa($text, 'PDFJ::Text') ) {
                        $text->print("$indent  ");
                } else {
                        print "$indent\[$text]\n";
@@ -1868,67 +2904,70 @@ sub makechunks {
        my($self) = @_;
        my $style = $self->style;
        return unless $style->{font};
+       my $noshift = $style->{noshift};
        $self->{chunks} = [];
        $self->{lines} = [];
        for my $text(@{$self->texts}) {
-               if( UNIVERSAL::isa($text, 'PDFJ::Text') ) {
+               if( !ref($text) ) {
+                       $self->catchunks($self->splittext($text, $noshift));
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::Text') ) {
                        $text->makechunks unless $text->chunks;
-                       $self->catchunks($text->chunks);
-               } elsif( UNIVERSAL::isa($text, 'PDFJ::Showable') ) {
-                       $self->catchunks([_objchunk($text, $self->style)]);
-#              } elsif( UNIVERSAL::isa($text, 'PDFJ::Image') ) {
-#                      $self->catchunks([_imagechunk($text, $self->style)]);
-#              } elsif( UNIVERSAL::isa($text, 'PDFJ::Shape') ) {
-#                      $self->catchunks([_shapechunk($text, $self->style)]);
-               } elsif( UNIVERSAL::isa($text, 'PDFJ::NewLine') ) {
-                       $self->catchunks([_newlinechunk($self->style)]);
-               } elsif( UNIVERSAL::isa($text, 'PDFJ::Outline') ) {
-                       $self->catchunks([_outlinechunk($text, $self->style)]);
-               } elsif( UNIVERSAL::isa($text, 'PDFJ::Dest') ) {
-                       $self->catchunks([_destchunk($text, $self->style)]);
+                       if( exists $text->style->{ruby} ) {
+                               my($rubytext, $altobj, $rubyoverlap) =
+                                       $self->makerubytext($text->style->{ruby}, $text, 
+                                       $text->style);
+                               my $chunk = _rubychunk($altobj, $style, $rubyoverlap);
+                               $chunk->{RubyText} = $rubytext;
+                               $self->catchunks([$chunk]);
+                       } else {
+                               $self->catchunks($text->chunks);
+                       }
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::Showable') ) {
+                       $self->catchunks([_objchunk($text, $style)]);
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::NewLine') ) {
+                       $self->catchunks([_newlinechunk($style)]);
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::Outline') ) {
+                       $self->catchunks([_outlinechunk($text, $style)]);
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::Dest') ) {
+                       $self->catchunks([_destchunk($text, $style)]);
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::Null') ) {
+                       $self->catchunks([_nullchunk($text, $style)]);
+               } elsif( PDFJ::Util::objisa($text, 'PDFJ::TextChunk') ) {
+                       $self->catchunks([$text]);
                } else {
-                       $self->catchunks($self->splittext($text));
+                       croak "illegal texts element for Text: $text";
                }
        }
 }
 
 sub makerubytext {
-       my($self) = @_;
-       return unless $self->style->{font};
-       for my $chunk(@{$self->chunks}) {
-               my $style = $chunk->{Style};
-               if( $style->{ruby} ) {
-                       croak "ruby class mismatch" 
-                               unless $chunk->{Class} == 11 || $chunk->{Class} == 17;
-                       my $rubystyle = $style->clone;
-                       delete $rubystyle->{ruby};
-                       delete $rubystyle->{withbox};
-                       delete $rubystyle->{withline};
-                       $rubystyle->{fontsize} /= 2;
-                       my $rubytext = PDFJ::Text->new($style->{ruby}, $rubystyle);
-                       my $rubysize = $rubytext->size;
-                       my $chunksize = _chunksize($chunk, 1);
-                       if( $rubysize < $chunksize ) {
-                               my $alt = PDFJ::Paragraph->new($rubytext,
-                                       PDFJ::ParagraphStyle->new(size => $chunksize, 
-                                               align => 'ruby', linefeed => 0));
-                               $chunk->{RubyText} = $alt;
-                       } elsif( $rubysize > $chunksize ) {
-                               my $altstyle = $style->clone;
-                               delete $altstyle->{ruby};
-                               delete $altstyle->{withbox};
-                               delete $altstyle->{withline};
-                               my $alt = PDFJ::Paragraph->new(
-                                       PDFJ::Text->new($chunk->{String}, $altstyle),
-                                       PDFJ::ParagraphStyle->new(size => $rubysize, 
-                                               align => 'ruby', linefeed => 0));
-                               $chunk->{AltObj} = $alt;
-                               $chunk->{RubyText} = $rubytext;
-                       } else {
-                               $chunk->{RubyText} = $rubytext;
-                       }
-               }
+       my($self, $ruby, $parent, $style) = @_;
+       my $altparent = $parent;
+       my $rubyoverlap = 0;
+       my $rubystyle = $style->clone;
+       delete $rubystyle->{ruby};
+       delete $rubystyle->{withbox};
+       delete $rubystyle->{withline};
+       $rubystyle->{fontsize} /= 2;
+       my $rubytext = PDFJ::Text->new($style->{ruby}, $rubystyle);
+       my $rubysize = $rubytext->size;
+       my $parentsize = $parent->size;
+       if( $rubysize < $parentsize ) {
+               my $alt = PDFJ::Paragraph->new($rubytext,
+                       PDFJ::ParagraphStyle->new(size => $parentsize, 
+                               align => 'ruby', linefeed => 0));
+               $rubytext = $alt;
+       } elsif( $rubysize > $parentsize ) {
+               my $alt = PDFJ::Paragraph->new(
+                       $parent,
+                       PDFJ::ParagraphStyle->new(size => $rubysize, 
+                               align => 'ruby', linefeed => 0));
+               $altparent = $alt;
+               $rubyoverlap = $alt->line(0)->{Shift};
+               $rubyoverlap = $rubystyle->{fontsize} 
+                       if $rubyoverlap > $rubystyle->{fontsize};
        }
+       ($rubytext, $altparent, $rubyoverlap);
 }
 
 sub texts { $_[0]->{texts} }
@@ -1986,6 +3025,11 @@ sub size {
        _chunkssize($self->{chunks});
 }
 
+sub blockalign {  
+       my($self) = @_;
+       $self->{style}{blockalign};
+}
+
 sub fixsize {
        my($self, $start, $count, $fixedglues) = @_;
        _chunksfixsize($self->{chunks}, $start, $count, $fixedglues);
@@ -2014,32 +3058,33 @@ sub dehyphen {
        $self->{hyphened} = 0;
 }
 
-my %TextLineIndex = (
-       Start => 1,
-       Count => 2,
-       Shift => 3,
-       FixedGlues => 4,
-);
-
 sub _fold {
-       my($self, $linesize, $align) = @_;
+       my($self, $paraobj) = @_;
        my $chunks = $self->chunks;
-       return unless @$chunks;
+       return unless $chunks && @$chunks;
        $self->dehyphen;
        my @lines;
-       my @linesizes = ref($linesize) eq 'ARRAY' ? @$linesize : ($linesize);
-       my $lastlinesize = $linesizes[$#linesizes];
-       my $rubyshift;
-       if( $align eq 'ruby' ) {
-               $rubyshift = ($linesizes[0] - _chunkssize($chunks)) / $self->count;
-               $linesizes[0] -= $rubyshift;
+       my $rubyshift = 0;
+       if( $paraobj->align(0) eq 'ruby' ) {
+               $rubyshift = ($paraobj->linesize(0) - _chunkssize($chunks)) / 
+                       #$self->count;
+                       @$chunks;
                $rubyshift /= 2;
-               $align = 'W';
+               $paraobj->align(0, 'W');
        }
+       my $lineskipmin = $paraobj->{lineskipmin};
+       my $lineskip = $paraobj->{lineskip};
+       my $lastpostaols = 0;
        my $start = 0;
+       my $lines = 0;
        while( $start < @$chunks ) {
-               $linesize = @linesizes ? shift(@linesizes) : $lastlinesize;
+               $lines = @lines;
+               my $linesize = $paraobj->linesize($lines);
                croak "not enough paragraph size" if $linesize < 0;
+               if( $lines == 0 ) {
+                       $linesize -= $rubyshift * 2;
+               }
+               my $align = $paraobj->align($lines);
                my $size = 0;
                my $decsize = 0;
                my $foldpos = $start;
@@ -2047,6 +3092,20 @@ sub _fold {
                my $forced;
                for( my $j = $start; $j < @$chunks; $j++ ) {
                        my $chunk = $chunks->[$j];
+                       if( $chunk->{Style} ) {
+                               if( exists $chunk->{Style}{align} ) {
+                                       $paraobj->align($lines, $chunk->{Style}{align});
+                                       $align = $paraobj->align($lines);
+                               }
+                               if( exists $chunk->{Style}{beginindent} ) {
+                                       $paraobj->beginindent($lines + 1, 
+                                               $chunk->{Style}{beginindent});
+                               }
+                               if( exists $chunk->{Style}{endindent} ) {
+                                       $paraobj->endindent($lines, $chunk->{Style}{endindent});
+                                       $linesize = $paraobj->linesize($lines);
+                               }
+                       }
                        if( $chunk->{Splittable} == 2 ) {
                                $foldpos = $j + 1;
                                $forced = 1;
@@ -2075,13 +3134,20 @@ sub _fold {
                                                $foldpos = $k;
                                        } elsif( $k == $start + 1 ) {
                                                $foldpos = $k;
+                                       } elsif( $canpos == $start ) {
+                                               if( $k < @$chunks && $chunks->[$k]{Splittable} == 2 ) {
+                                                       $foldpos = $k + 1;
+                                                       $forced = 1;
+                                               } else {
+                                                       $foldpos = $k;
+                                               }
                                        } else {
                                                $foldpos = $canpos;
                                        }
                                        last;
                                }
                        }
-#print "$j:$start:($chunk->{Splittable})[$chunk->{String}] $chunksize(-$decchunksize) $size(-$decsize) $canpos\n";
+#print "$linesize [$j:$start]($chunk->{Splittable})[$chunk->{String}] $chunksize(-$decchunksize) $size(-$decsize) $canpos\n";
                }
                if( $foldpos == $start && $size > $linesize && 
                                !($align =~ /w/i && $size - $decsize <= $linesize) ) {
@@ -2115,7 +3181,26 @@ sub _fold {
                                        $self->fixsize($start, $count, $fixedglues)) / 2;
                        }
                }
-               push @lines, [\%TextLineIndex, $start, $count, $shift, $fixedglues];
+               my $preskip;
+               my($preaols, $postaols) = (0, 0);
+               if( defined $lineskipmin ) {
+                       ($preaols, $postaols) = $self->altobjlineskip($start, $count);
+                       $preskip = $lastpostaols + $preaols + $lineskipmin;
+                       $preskip = $lineskip if $preskip < $lineskip;
+                       $lastpostaols = $postaols;
+               } else {
+                       $preskip = $lineskip;
+               }
+               my %hash =(
+                   Start      => $start ,
+                   Count      => $count ,
+                   Shift      => $shift ,
+                   FixedGlues => $fixedglues ,
+                   PreAOLS    => $preaols ,
+                   PostAOLS   => $postaols,
+                   PreSkip    => $preskip ,
+                   );
+               push(@lines,\%hash);
                $start = $nextpos;
        }
        @lines;
@@ -2126,11 +3211,10 @@ sub _hyphenpos {
        return unless $chunk->{Class} == 17 && !$chunk->{Style}{nohyphen} &&
                !$chunk->{Style}{ruby};
        my $string = $chunk->{String};
-#print "$string, $decsize\n";
        my($can, $canleft, $pre, $word);
        if( $string =~ /([A-Za-z]-)([A-Za-z])/ ) {
                $can = $`.$1;
-               $canleft = $2.$';
+               $canleft = $2.$'; #'
        } elsif( $string =~ /[A-Za-z]{5,}/ ) {
                $pre = $`;
                $word = $&;
@@ -2179,6 +3263,8 @@ sub _inshyphen {
 
 sub _chunkssize {
        my($chunks, $start, $count) = @_;
+       die "cannot calc size of Text, may be missing font in TextStyle"
+               unless $chunks;
        $start += 0;
        $start = 0 if $start < 0;
        $count ||= @$chunks - $start;
@@ -2240,7 +3326,11 @@ sub _chunkcount {
 
 sub _chunksize {
        my($chunk, $noglue) = @_;
-       my $fontobj = $chunk->{Style}{font};
+       #my $fontobj = $chunk->{Style}{font};
+       my $fontobj = $chunk->{Style}->selectfont;
+       unless( $fontobj ) {
+               croak "internal error: missing font in style";
+       }
        my $fontsize = $chunk->{Style}{fontsize};
        my $direction = $fontobj->{direction};
        my $size = $direction eq 'H' ? 
@@ -2261,12 +3351,15 @@ sub _chunkfixsize {
        my($chunk, $fixedglue) = @_;
        $fixedglue ||= 0;
        my $fontobj = $chunk->{Style}{font};
+       unless( $fontobj ) {
+               croak "internal error: missing font in style";
+       }
        my $fontsize = $chunk->{Style}{fontsize};
        my $direction = $fontobj->{direction};
        my $size = $direction eq 'H' ? 
                _chunkfontsizeH($fontobj, $fontsize, $chunk) :
                _chunkfontsizeV($fontobj, $fontsize, $chunk);
-       $size += $fontsize * ($fixedglue - 
+       $size += $fontsize * ($chunk->{Glue} + $fixedglue - 
                $chunk->{PreShift} - $chunk->{PostShift});
        $size;
 }
@@ -2275,7 +3368,7 @@ sub _chunkfontsizeH {
        my($fontobj, $fontsize, $chunk) = @_;
        return $chunk->{AltObj}->size('H') if $chunk->{AltObj};
        my $size = 0;
-       if( UNIVERSAL::isa($fontobj, "PDFJ::JFont") ) {
+       if( PDFJ::Util::objisa($fontobj, "PDFJ::CIDFont") ) {
                my $combo = $fontobj->{combo};
                my $hfont = $fontobj->{hfontobj};
                my $mode = $chunk->{Mode};
@@ -2284,14 +3377,15 @@ sub _chunkfontsizeH {
                } elsif( $mode eq 'h' ) {
                        $size = $chunk->{Count} / 2;
                } elsif( $combo ) {
-                       $size = $hfont->string_fontwidth($chunk->{String});
+                       $size = $fontobj->{hsize} * 
+                               $hfont->string_fontwidth($chunk->{String});
                } else {
                        $size = $chunk->{Count} / 2;
                }
-       } elsif( UNIVERSAL::isa($fontobj, "PDFJ::AFont") ) {
+       } elsif( PDFJ::Util::objisa($fontobj, "PDFJ::AFont") ) {
                $size = $fontobj->string_fontwidth($chunk->{String});
        } else { 
-               croak "internal error: missing font object";
+               croak "internal error: missing font object ($fontobj)";
        }
        $size *= $fontsize;
        $size;
@@ -2301,7 +3395,7 @@ sub _chunkfontsizeV {
        my($fontobj, $fontsize, $chunk) = @_;
        return $chunk->{AltObj}->size('V') if $chunk->{AltObj};
        my $size = 0;
-       if( UNIVERSAL::isa($fontobj, "PDFJ::JFont") ) {
+       if( PDFJ::Util::objisa($fontobj, "PDFJ::CIDFont") ) {
                my $combo = $fontobj->{combo};
                my $hfont = $fontobj->{hfontobj};
                my $mode = $chunk->{Mode};
@@ -2311,14 +3405,14 @@ sub _chunkfontsizeV {
                        $size = $chunk->{Count};
                } elsif( $combo ) {
                        $size = $chunk->{Class} == 11 ? 1 :
-                               $hfont->string_fontwidth($chunk->{String});
+                               $fontobj->{hsize} * $hfont->string_fontwidth($chunk->{String});
                } else {
                        $size = $chunk->{Count};
                }
-       } elsif( UNIVERSAL::isa($fontobj, "PDFJ::AFont") ) {
+       } elsif( PDFJ::Util::objisa($fontobj, "PDFJ::AFont") ) {
                $size = $fontobj->string_fontwidth($chunk->{String});
        } else { 
-               croak "internal error: missing font object";
+               croak "internal error: missing font object ($fontobj)";
        }
        $size *= $fontsize;
        $size;
@@ -2413,6 +3507,8 @@ sub fixgluedec {
        \@fixedglues;
 }
 
+sub onshow { $_[0]->{style}{onshow} }
+
 sub _show {
        my($self, $page, $x, $y) = @_;
        $self->_showpart($page, $x, $y, 0, $self->chunksnum);
@@ -2424,7 +3520,7 @@ sub _showpart {
        my $docobj = $page->docobj;
        my $chunksnum = $self->chunksnum;
        my %usefontname;
-       my($tj, $dotpdf, $shapepdf) = ("") x 3;
+       my(@tj, @dotpdf, @shapepdf);
        my $lasttextspec = PDFJ::TextSpec->new;
        my($ulx, $uly, $bxx, $bxy);
        my($lastfontsize, $postshift, $slant, $lastfrx, $lastfry, $va) = (0) x 6;
@@ -2436,55 +3532,62 @@ sub _showpart {
                # my $style = $chunk->{Style};
                my $style = $chunk->{Style}->clone;
                my $direction = $style->{font}->{direction};
-               my($fontname, $hname) = $style->selectfontname($mode);
-               my $fontobj = $style->{font} = $docobj->_fontobj($fontname, $hname);
+               my($fontname, $hname, $hsize) = $style->selectfontname;
+               my $fontobj = $style->{font} = 
+                       $docobj->_fontobj($fontname, $hname, $hsize);
                my $combo = $fontobj->{combo};
                my $usefname = $mode eq 'a' && $hname ? $hname : $fontname;
                $usefontname{$usefname}++;
                my $fontsize = $style->{fontsize};
                $postshift *= $lastfontsize / $fontsize;
-               $style->{slant} = 1 if $mode eq 'z' && $style->{italic};
-               my $textspec = PDFJ::TextSpec->new($style, $usefname);
+               $style->{slant} = 1 if ($mode eq 'z' || !$combo) && $style->{italic};
+               my $textspec = PDFJ::TextSpec->new($style, $usefname, 
+                       ($mode eq 'a' ? $fontobj->{hsize} : 0));
+#print "$j:$va:[$chunk->{String}] $mode, $class, {",join(",",%$style),"}\n";
+               my $qclose = 0;
                if( $direction eq 'V' && $combo && $mode eq 'a' ) {
                        if( $va != $class ) {
-                               my($vax, $vay) = $class == 11 ? 
-                                       ($x - _chunkfontsizeH($fontobj, $fontsize, $chunk) / 2,
-                                       $y - $fontsize * $PDFJ::Default{VHShift}) : 
-                                       ($x + $fontsize * $PDFJ::Default{VAShift}, $y);
-                               $tj .= "] TJ ET Q " if $tj;
-                               $tj .= $class == 11 ? 
-                                       $textspec->pdf."$vax $vay Td  [" :
-                                       $textspec->pdf."0 -1 1 0 $vax $vay Tm [";
-                               $lasttextspec->copy($textspec);
+                               $qclose = 1;
                                $va = $class;
                        }
                } elsif( $va ) {
-                       $tj .= "] TJ ET Q " if $tj;
-                       $tj .= $textspec->pdf."$x $y Td [";
-                       $lasttextspec->copy($textspec);
+                       $qclose = 1;
                        $va = 0;
                }
                if( $style->{slant} ) {
                        #croak "slant style for ascii not allowed" 
                        #       if $mode eq 'a';
                        unless( $slant ) {
-                               my($sx, $sy) = $direction eq 'H' ? 
-                                       (0, $PDFJ::Default{SlantRatio}) : 
-                                       ($PDFJ::Default{SlantRatio}, 0);
-                               $tj .= "] TJ ET Q " if $tj;
-                               $tj .= $textspec->pdf."1 $sx $sy 1 $x $y Tm [";
-                               $lasttextspec->copy($textspec);
+                               $qclose = 1;
                                $slant = 1;
                        }
                } elsif( $slant ) {
-                       $tj .= "] TJ ET Q " if $tj;
-                       $tj .= $textspec->pdf."$x $y Td [";
-                       $lasttextspec->copy($textspec);
+                       $qclose = 1;
                        $slant = 0;
                }
-               unless( $lasttextspec->equal($textspec) ) {
-                       $tj .= "] TJ ET Q " if $tj;
-                       $tj .= $textspec->pdf."$x $y Td [";
+               $qclose = 1 unless $lasttextspec->equal($textspec);
+               if( $qclose ) {
+                       my @qopen;
+                       if( $direction eq 'V' && $combo && $mode eq 'a' ) {
+                               my($vax, $vay) = $class == 11 ? 
+                                       ($x - _chunkfontsizeH($fontobj, $fontsize, $chunk) / 2,
+                                       $y - $fontsize * $PDFJ::Default{VHShift}) : 
+                                       ($x + $fontsize * $PDFJ::Default{VAShift}, $y);
+                               @qopen = ($class == 11 ? 
+                                       ($textspec->pdf, numbers($vax, $vay), "Td [") :
+                                       $style->{slant} ? 
+                                       ($textspec->pdf, numbers(0, -1, 1, $PDFJ::Default{SlantRatio}, $vax, $vay), "Tm [") :
+                                       ($textspec->pdf, numbers(0, -1, 1, 0, $vax, $vay), "Tm ["));
+                       } elsif( $style->{slant} ) {
+                               my($sx, $sy) = $direction eq 'H' ? 
+                                       (0, $PDFJ::Default{SlantRatio}) : 
+                                       ($PDFJ::Default{SlantRatio}, 0);
+                               @qopen = ($textspec->pdf, numbers(1, $sx, $sy, 1, $x, $y), 
+                                       "Tm [");
+                       }
+                       push @tj, $lasttextspec->endpdf if @tj;
+                       push @tj, (@qopen ? @qopen : ($textspec->pdf, numbers($x, $y), 
+                               "Td ["));
                        $lasttextspec->copy($textspec);
                }
                my $shift = $va == 11 ? 0 : $j == 0 ? $chunk->{PreShift} :
@@ -2495,24 +3598,32 @@ sub _showpart {
                $shift *= 1000;
                if( $shift ) {
                        my $vs = $va ? -$shift : $shift;
-                       $tj .= "$vs " 
+                       push @tj, number($vs);
                }
                my($flx, $fly) = ($x, $y);
                my($frx, $fry) = ($x, $y);
                my($fcx, $fcy) = ($x, $y);
                if( $direction eq 'H' ) {
-                       $flx -= ($postshift - ($j == 0 ? 0 : 
+                       #$flx -= ($postshift - ($j == 0 ? 0 : 
+                       #       ($fixedglues ? $chunk->{Glue} + ($fixedglues->[$j] || 0): 
+                       #       $chunk->{Glue}))) * $fontsize;
+                       $flx -= ($j == 0 ? $chunk->{PreShift} : 
+                               $postshift + $chunk->{PreShift} - 
                                ($fixedglues ? $chunk->{Glue} + ($fixedglues->[$j] || 0): 
-                               $chunk->{Glue}))) * $fontsize;
+                               $chunk->{Glue})) * $fontsize;
                        $frx = $flx + (_chunkfontsizeH($fontobj, $fontsize, $chunk) -
                                ($chunk->{PreShift} + $chunk->{PostShift}) * $fontsize);
                        $fcx = $flx + (_chunkfontsizeH($fontobj, $fontsize, $chunk) -
                                ($chunk->{PreShift} + $chunk->{PostShift}) * $fontsize) /
                                 2;
                } else {
-                       $fly += ($postshift - ($j == 0 ? 0 : 
+                       #$fly += ($postshift - ($j == 0 ? 0 : 
+                       #       ($fixedglues ? $chunk->{Glue} + ($fixedglues->[$j] || 0): 
+                       #       $chunk->{Glue}))) * $fontsize;
+                       $fly += ($j == 0 ? $chunk->{PreShift} : 
+                               $postshift + $chunk->{PreShift} - 
                                ($fixedglues ? $chunk->{Glue} + ($fixedglues->[$j] || 0): 
-                               $chunk->{Glue}))) * $fontsize;
+                               $chunk->{Glue})) * $fontsize;
                        $fry = $fly - (_chunkfontsizeV($fontobj, $fontsize, $chunk) -
                                ($chunk->{PreShift} + $chunk->{PostShift}) * $fontsize);
                        $fcy = $fly - (_chunkfontsizeV($fontobj, $fontsize, $chunk) -
@@ -2529,11 +3640,10 @@ sub _showpart {
                        if( $mode eq 'O' ) {
                                my $title = $style->{outlinetitle};
                                my $level = $style->{outlinelevel};
-                               $docobj->add_outline($title, $page->dest('XYZ', $ox, $oy, 0), 
-                                       $level);
+                               $docobj->add_outline($title, $page, $ox, $oy, $level);
                        } elsif( $mode eq 'D' ) {
                                my $name = $style->{destname};
-                               $docobj->add_dest($name, $page->dest('XYZ', $ox, $oy, 0));
+                               $docobj->add_dest($name, $page, $ox, $oy);
                        }
                }
                if( $chunk->{AltObj} ) {
@@ -2566,35 +3676,29 @@ sub _showpart {
                        }
                        $altsize = $altsize * 1000 / $fontsize;
                        $altsize = -$altsize if $direction eq 'H';
-                       $tj .= "$altsize ";
+                       push @tj, number($altsize);
                        $altobj->show($page, $flx + $asx, $fly + $asy, $align);
-               } elsif( $chunk->{String} =~ /[^\x20-\x7e]/ ) {
-                       my $ss = unpack('H*', $chunk->{String});
-                       $tj .= "<$ss> ";
                } else {
-                       my $ss = $chunk->{String};
-                       $ss =~ s/\\/\\\\/g;
-                       $ss =~ s/\(/\\\(/g;
-                       $ss =~ s/\)/\\\)/g;
-                       $tj .= "($ss) ";
+                       my $ss = stringstring($chunk, $fontobj, $usefname);
+                       push @tj, $ss;
                }
                $postshift = $chunk->{PostShift};
                if( $style->{withline} ) {
                        ($ulx, $uly) = ($flx, $fly) unless defined $ulx;
                        $withlinestyle = $style->{withlinestyle};
                        if( $j == $count - 1 || $start + $j == $chunksnum - 1 ) {
-                               $shapepdf .= $direction eq 'H' ? 
+                               push @shapepdf, ($direction eq 'H' ? 
                                        _withlinepdf($direction, $ulx, $uly, $frx - $ulx, 
                                                $fontsize, $withlinestyle) :
                                        _withlinepdf($direction, $ulx, $uly, $fry - $uly, 
-                                               $fontsize, $withlinestyle);
+                                               $fontsize, $withlinestyle));
                        }
                } elsif( defined $ulx ) {
-                       $shapepdf .= $direction eq 'H' ? 
+                       push @shapepdf, ($direction eq 'H' ? 
                                _withlinepdf($direction, $ulx, $uly, $lastfrx - $ulx, 
                                        $lastfontsize, $withlinestyle) :
                                _withlinepdf($direction, $ulx, $uly, $lastfry - $uly, 
-                                       $lastfontsize, $withlinestyle);
+                                       $lastfontsize, $withlinestyle));
                        undef $ulx;
                        undef $uly;
                }
@@ -2603,24 +3707,24 @@ sub _showpart {
                        $withbox = $style->{withbox};
                        $withboxstyle = $style->{withboxstyle};
                        if( $j == $count - 1 || $start + $j == $chunksnum - 1 ) {
-                               $shapepdf .= $direction eq 'H' ? 
+                               push @shapepdf, ($direction eq 'H' ? 
                                        _withboxpdf($page, $direction, $bxx, $bxy, $frx - $bxx, 
                                                $fontsize, $withbox, $withboxstyle) :
                                        _withboxpdf($page, $direction, $bxx, $bxy, $fry - $bxy, 
-                                               $fontsize, $withbox, $withboxstyle);
+                                               $fontsize, $withbox, $withboxstyle));
                        }
                } elsif( defined $bxx ) {
-                       $shapepdf .= $direction eq 'H' ? 
+                       push @shapepdf, ($direction eq 'H' ? 
                                _withboxpdf($page, $direction, $bxx, $bxy, $lastfrx - $bxx, 
                                        $lastfontsize, $withbox, $withboxstyle) :
                                _withboxpdf($page, $direction, $bxx, $bxy, $lastfry - $bxy, 
-                                       $lastfontsize, $withbox, $withboxstyle);
+                                       $lastfontsize, $withbox, $withboxstyle));
                        undef $bxx;
                        undef $bxy;
                }
                if( $style->{withdot} ) {
-                       croak "withdot style needs JFont"
-                               unless UNIVERSAL::isa($fontobj, "PDFJ::JFont");
+                       croak "withdot style needs CIDFont"
+                               unless PDFJ::Util::objisa($fontobj, "PDFJ::CIDFont");
                        my($dx, $dy, $ds, $dcode);
                        if( $direction eq 'H' ) {
                                ($dx, $dy, $ds) = (
@@ -2636,7 +3740,7 @@ sub _showpart {
                                $dcode = unpack('H*', $PDFJ::Default{VDot}{$PDFJ::Default{Jcode}})
                        }
                        my $fontname = $fontobj->{zname};
-                       $dotpdf .= "BT 0 Ts 0 Tr /$fontname $ds Tf $dx $dy Td <$dcode> Tj ET ";
+                       push @dotpdf, "BT 0 Ts 0 Tr /$fontname", number($ds), "Tf", numbers($dx, $dy), "Td <$dcode> Tj ET";
                }
                if( $chunk->{RubyText} ) {
                        my $rubytext = $chunk->{RubyText};
@@ -2651,6 +3755,9 @@ sub _showpart {
                }
                if( $style->{withnote} ) {
                        my $notetext = $style->{withnote};
+                       if( !ref($notetext) && $style->{withnotestyle} ) {
+                               $notetext = PDFJ::Text->new($notetext, $style->{withnotestyle});
+                       }
                        my $notesize = $notetext->size;
                        if( $direction eq 'H' ) {
                                $notetext->show($page, $frx - $notesize, 
@@ -2661,6 +3768,29 @@ sub _showpart {
                                        $fry + $notesize);
                        }
                }
+               if( $style->{filltext} ) {
+                       my $utext = PDFJ::Text->new($style->{filltext}, 
+                               {font => $style->{font}, fontsize => $style->{fontsize}});
+                       my $usize = $utext->size;
+                       my $fillspace = $direction eq 'V' ? $lastfry - $fly : 
+                               $lastfrx - $flx;
+                       $fillspace = -$fillspace if $fillspace < 0;
+                       my($x, $y) = ($lastfrx, $lastfry);
+                       my $count = int($fillspace / $usize);
+                       for( my $j = 0; $j < $count; $j++ ) {
+                               $utext->show($page, $x, $y);
+                               if( $direction eq 'H' ) {
+                                       $x += $usize;
+                               } else {
+                                       $y -= $usize;
+                               }
+                       }
+               }
+               if( ref($style->{pageattr}) eq 'HASH' ) {
+                       for my $key(keys %{$style->{pageattr}}) {
+                               $page->setattr($key, $style->{pageattr}{$key});
+                       }
+               }
                ($lastfrx, $lastfry) = ($frx, $fry);
                $lastfontsize = $fontsize;
                if( $direction eq 'H' ) {
@@ -2671,15 +3801,80 @@ sub _showpart {
                                $shift * $fontsize / 1000;
                }
        }
-       $tj .= "] TJ ET Q " if $tj;
-       $tj =~ s/> <//g;
-       $tj =~ s/\) \(//g;
-       $page->addcontents($shapepdf);
-       $page->addcontents($tj);
-       $page->addcontents($dotpdf);
+       push @tj, $lasttextspec->endpdf if @tj;
+       $page->addcontents(@shapepdf);
+       $page->addcontents(@tj);
+       $page->addcontents(@dotpdf);
        $page->usefonts(keys %usefontname);
 }
 
+sub altobjlineskip {
+       my($self, $start, $count) = @_;
+       my $chunksnum = $self->chunksnum;
+       my $preaols = 0;
+       my $postaols = 0;
+       for( my $j = 0; $j < $count && $start + $j < $chunksnum; $j++ ) {
+               my $chunk = $self->chunk($start + $j);
+               my $style = $chunk->{Style};
+               my $direction = $style->{font}->{direction};
+               my $fontsize = $style->{fontsize};
+               if( $chunk->{AltObj} ) {
+                       my $altobj = $chunk->{AltObj};
+                       my $objalign = $style->{objalign} || "";
+                       if( $direction eq 'H' ) {
+                               my $altsize = $altobj->size('V');
+                               if( $altsize > $fontsize ) {
+                                       my $diff = $altsize - $fontsize;
+                                       if( $objalign =~ /t/ ) {
+                                               $postaols = $diff if $diff > $postaols;
+                                       } elsif( $objalign =~ /m/ ) {
+                                               $preaols = $diff / 2 if $diff / 2 > $preaols;
+                                               $postaols = $diff / 2 if $diff / 2 > $postaols;
+                                       } else { # /b/
+                                               $preaols = $diff if $diff > $preaols;
+                                       }
+                               }
+                       } else {
+                               my $altsize = $altobj->size('H');
+                               if( $altsize > $fontsize ) {
+                                       my $diff = $altsize - $fontsize;
+                                       if( $objalign =~ /l/ ) {
+                                               $preaols = $diff if $diff > $preaols;
+                                       } elsif( $objalign =~ /r/ ) {
+                                               $preaols = $diff / 2 if $diff / 2 > $preaols;
+                                               $postaols = $diff / 2 if $diff / 2 > $postaols;
+                                       } else { # /c/
+                                               $postaols = $diff if $diff > $postaols;
+                                       }
+                               }
+                       }
+               }
+       }
+       ($preaols, $postaols);
+}
+
+sub stringstring {
+       my($chunk, $fontobj, $usefname) = @_;
+       my $str = $chunk->{String};
+       if( $chunk->{Mode} eq 'a' &&
+               $PDFJ::Default{Encodings}{$fontobj->{encoding}} eq 'ju' && 
+               $usefname eq $fontobj->{zname} ) {
+               $str =~ s/./\x00$&/g;
+       }
+       my $result;
+       if( $str =~ /[^\x20-\x7e]/ ) {
+               my $ss = unpack('H*', $str);
+               $result = "<$ss>";
+       } else {
+               my $ss = $str;
+               $ss =~ s/\\/\\\\/g;
+               $ss =~ s/\(/\\\(/g;
+               $ss =~ s/\)/\\\)/g;
+               $result = "($ss)";
+       }
+       $result;
+}
+
 sub _withlinepdf {
        my($direction, $x, $y, $w, $fontsize, $style) = @_;
        my $shape = PDFJ::Shape->new;
@@ -2721,6 +3916,7 @@ sub _withboxpdf {
 # 15: unit
 # 16: space
 # 17: ascii
+# 18: special
 
 # modes are
 # 'z': zenkaku Japanese
@@ -2730,76 +3926,61 @@ sub _withboxpdf {
 # 'N': Newline
 # 'O': Outline
 # 'D': Destination
-
-# chunk array index
-my %ChunkIndex = (
-       Style => 1,                     # PDFJ::TextStyle object
-       Mode => 2,                      # description as above
-       Class => 3,                     # description as above
-       Splittable => 4,        # 1 for splittable at pre-postion
-       Glue => 5,                      # normal glue width
-       GlueDec => 6,           # decrease adjustable glue width
-       GlueInc => 7,           # increase adjustable glue width
-       GluePref => 8,          # glue preference
-       Count => 9,                     # characters count
-       String => 10,           # characters string
-       PreShift => 11,         # postion shift at pre-postion
-       PostShift => 12,        # postion shift at post-postion
-       GlueFix => 13,          # fixed glue (to be calculated)
-       Hyphened => 14,         # 1 for splitted, 2 for hyphened
-       RubyText => 15,         # ruby PDFJ::Text object
-       AltObj => 16,           # alternative object for String 
-);
+# 'U': Null
 
 sub _specialchunk {
        my($style, $mode, $class, $splittable) = @_;
-       [\%ChunkIndex, $style, $mode, $class, $splittable,
-               0, 0, 0, 0, 0, "", 0, 0];
+       PDFJ::TextChunk->new($style, $mode, $class, $splittable,
+               0, 0, 0, 0, 0, "", 0, 0);
 }
 
 sub _newlinechunk {
        my($textstyle) = @_;
-       _specialchunk($textstyle, 'N', 11, 2);
+       _specialchunk($textstyle, 'N', 18, 2);
 }
 
 sub _outlinechunk {
        my($outlineobj, $textstyle) = @_;
-       my $style = $textstyle->clone(%$outlineobj);
-       _specialchunk($style, 'O', 11, 1);
+       my $style = $textstyle->linkedclone(%$outlineobj);
+       _specialchunk($style, 'O', 18, 1);
 }
 
 sub _destchunk {
        my($destobj, $textstyle) = @_;
-       my $style = $textstyle->clone(%$destobj);
-       _specialchunk($style, 'D', 11, 1);
+       my $style = $textstyle->linkedclone(%$destobj);
+       _specialchunk($style, 'D', 18, 1);
 }
 
-sub _objchunk {
-       my($obj, $textstyle) = @_;
-       my $chunk = _specialchunk($textstyle, 'S', 11, 1);
-       $chunk->{AltObj} = $obj;
-       $chunk;
+sub _nullchunk {
+       my($nullobj, $textstyle) = @_;
+       my $style = $textstyle->linkedclone(%$nullobj);
+       _specialchunk($style, 'U', 18, 1);
 }
 
-# obsolete
-sub _imagechunk {
-       my($img, $textstyle) = @_;
-       my $chunk = _specialchunk($textstyle, 'I', 11, 1);
-       $chunk->{AltObj} = $img;
+sub _objchunk {
+       my($obj, $textstyle, $class) = @_;
+       $class ||= 18;
+       my $chunk = _specialchunk(
+               ($obj->can('textstyle') ? $textstyle->linkedclone($obj->textstyle) : 
+               $textstyle), 'S', $class, 1);
+       $chunk->{AltObj} = $obj;
+       if( $obj->can('glue') ) {
+               @$chunk{qw(Glue GlueDec GlueInc GluePref)} = $obj->glue;
+       }
        $chunk;
 }
 
-# obsolete
-sub _shapechunk {
-       my($shape, $textstyle) = @_;
-       my $chunk = _specialchunk($textstyle, 'S', 11, 1);
-       $chunk->{AltObj} = $shape;
-       my($left, $bottom) = ($shape->left, $shape->bottom);
+sub _rubychunk {
+       my($obj, $textstyle, $rubyoverlap) = @_;
+       my $chunk = _objchunk($obj, $textstyle, 13);
+       $chunk->{RubyOverlap} = $rubyoverlap;
        $chunk;
 }
 
 sub catchunks {
        my($self, $src) = @_;
+       my $noglue = $self->style->{noglue} || 0;
+       my $fontsize = $self->style->{fontsize};
        my $dest = $self->chunks;
        if( @$dest && @$src ) {
                my($splittable, $glue, $gluedec, $glueinc, $gluepref);
@@ -2809,19 +3990,31 @@ sub catchunks {
                my $class = $fchunk->{Class};
                my $mode = $fchunk->{Mode};
                my $style = $fchunk->{Style};
-               $splittable = $fchunk->{Splittable} == 2 ? 2 : 
-                       $style->{suffix} ? 0 : 
-                       $lastmode eq 'O' ? 0 :
-                       $PDFJ::Default{Splittable}->[$lastclass][$class];
-               $glue = ($lastmode =~ /^[ON]$/ || $mode =~ /^[ON]$/) ? 
-                       PDFJ::GlueNon :
-                       $PDFJ::Default{Glue}->[$lastclass][$class];
-               ($glue, $gluedec, $glueinc, $gluepref) = _calcglue($glue);
-               $fchunk->{Splittable} = $splittable;
-               $fchunk->{Glue} = $glue;
-               $fchunk->{GlueDec} = $gluedec;
-               $fchunk->{GlueInc} = $glueinc;
-               $fchunk->{GluePref} = $gluepref;
+               if( $class != 18 ) { # NOT special
+                       $splittable = $fchunk->{Splittable} == 2 ? 2 : 
+                               $style->{suffix} ? 0 : 
+                               $PDFJ::Default{Splittable}->[$lastclass][$class];
+                       $fchunk->{Splittable} = $splittable;
+                       $glue = $noglue ? 
+                               PDFJ::GlueNon :
+                               $PDFJ::Default{Glue}->[$lastclass][$class];
+                       ($glue, $gluedec, $glueinc, $gluepref) = _calcglue($glue);
+                       $fchunk->{Glue} = $glue;
+                       $fchunk->{GlueDec} = $gluedec;
+                       $fchunk->{GlueInc} = $glueinc;
+                       $fchunk->{GluePref} = $gluepref;
+               }
+               unless( $PDFJ::Default{NoRubyOverlap} ) {
+                       if( $lastclass == 13 && $PDFJ::Default{RubyPostOverlap}{$class} ) {
+                               my $lastchunk = _lastchunk($dest);
+                               my $overlap = $lastchunk->{RubyOverlap};
+                               $lastchunk->{PostShift} += $overlap / $fontsize;
+                       } elsif( $class == 13 && 
+                               $PDFJ::Default{RubyPreOverlap}{$lastclass} ) {
+                               my $overlap = $fchunk->{RubyOverlap};
+                               $fchunk->{PreShift} += $overlap / $fontsize;
+                       }
+               }
        }
        push @$dest, @$src;
 }
@@ -2831,10 +4024,14 @@ sub _appendchunks {
        $preshift ||= 0;
        $postshift ||= 0;
        my($splittable, $glue, $gluedec, $glueinc, $gluepref) = (0) x 5;
-       if( exists $style->{font} && exists $style->{font}{subset_unicodes} ) {
+       my $font = $style->selectfont;
+       if( $font && exists $font->{subset_unicodes} ) {
                my $unicode = $PDFJ::Default{Jcode} eq 'SJIS' ? 
-                       PDFJ::Unicode::s2u($char) : PDFJ::Unicode::e2u($char);
-               $style->{font}{subset_unicodes}{$unicode}++;
+                       PDFJ::Unicode::s2u($char) : 
+                       $PDFJ::Default{Jcode} eq 'EUC' ? 
+                       PDFJ::Unicode::e2u($char) :
+                       unpack("n", $char); # UNICODE or UTF8 (UTF8 already converted to UNICODE)
+               $font->{subset_unicodes}{$unicode} = 1 if $unicode;
        }
        if( @$chunks ) {
                my $lastchunk = $chunks->[$#$chunks];
@@ -2842,15 +4039,23 @@ sub _appendchunks {
                my $lastclass = $lastchunk->{Class};
                my $lastruby = $lastchunk->{Style}{ruby};
                $splittable = $style->{suffix} ? 0 : 
-                       $lastmode eq 'O' ? 0 :
+                       $lastmode eq 'O' ? 0 :
                        $PDFJ::Default{Splittable}->[$lastclass][$class];
-               $glue = ($lastmode =~ /^[ON]$/ || $mode =~ /^[ON]$/) ? 
+               #$glue = ($style->{noglue} || $lastmode =~ /^[ON]$/ || $mode =~ /^[ON]$/) ? 
+               $glue = $style->{noglue} ? 
                        PDFJ::GlueNon :
                        $PDFJ::Default{Glue}->[$lastclass][$class];
-               if( ($mode eq 'a' && $lastmode eq 'a' && $class == $lastclass && 
-                       ($class == 11 || (!@$glue && !$splittable))) ||
-                       ($style->{ruby} && $style->{ruby} eq $lastruby && 
-                       ($class == 11 || $class == 17) && $class == $lastclass)
+               if( (
+                       $mode eq 'a' && 
+                       $lastmode eq 'a' && 
+                       $class == $lastclass && 
+                       ($class == 11 || (!@$glue && !$splittable))
+                       ) 
+                       #||
+                       #(
+                       #$style->{ruby} && $style->{ruby} eq $lastruby && 
+                       #($class == 11 || $class == 17) && $class == $lastclass
+                       #)
                         ) {
                        $lastchunk->{Count}++;
                        $lastchunk->{String} .= $char;
@@ -2858,15 +4063,15 @@ sub _appendchunks {
                }
                ($glue, $gluedec, $glueinc, $gluepref) = _calcglue($glue);
        }
-       push @$chunks, [\%ChunkIndex, $style, $mode, $class, $splittable, 
+       push @$chunks, PDFJ::TextChunk->new($style, $mode, $class, $splittable, 
                $glue, $gluedec, $glueinc, $gluepref, 1, $char, 
-               $preshift, $postshift];
+               $preshift, $postshift);
 }
 
 sub _calcglue {
        my($glue) = @_;
        my($gluedec, $glueinc, $gluepref) = (0, 0, 0);
-       if( @$glue ) {
+       if( ref($glue) && @$glue ) {
                my($gmin, $gnormal, $gmax, $gpref) = @$glue;
                ($glue, $gluedec, $glueinc) = (
                        $gnormal / 1000, 
@@ -2880,34 +4085,55 @@ sub _calcglue {
        ($glue, $gluedec, $glueinc, $gluepref);
 }
 
+sub _lastchunk {
+       my($chunks) = @_;
+       @$chunks ? $chunks->[$#$chunks] : undef;
+}
+
 sub _lastclass {
        my($chunks) = @_;
-       @$chunks ? $chunks->[$#$chunks]{Class} : undef;
+       @$chunks ? $chunks->[$#$chunks]{Class} : '';
+}
+
+sub _lastclasseq {
+       my($chunks, $eqclass) = @_;
+       @$chunks && $chunks->[$#$chunks]{Class} == $eqclass;
 }
 
 sub _lastmode {
        my($chunks) = @_;
-       @$chunks ? $chunks->[$#$chunks]{Mode} : undef;
+       @$chunks ? $chunks->[$#$chunks]{Mode} : '';
 }
 
 sub splittext {
-       my($self, $str) = @_;
-       if(  UNIVERSAL::isa($self->style->{font}, "PDFJ::AFont") ) {
+       my($self, $str, $noshift) = @_;
+       return [] if $str eq '';
+       if(  PDFJ::Util::objisa($self->style->{font}, "PDFJ::AFont") ) {
                &splittext_ASCII;
+       } elsif( $self->style->{code} ) {
+               no strict 'refs';
+               my $func = "splittext_" . $self->style->{code};
+               &$func;
        } elsif( $PDFJ::Default{Jcode} eq 'SJIS' ) {
                &splittext_SJIS;
-       } else {
+       } elsif( $PDFJ::Default{Jcode} eq 'EUC' ) {
                &splittext_EUC;
+       } elsif( $PDFJ::Default{Jcode} eq 'UTF8' ) {
+               &splittext_UTF8;
+       } elsif( $PDFJ::Default{Jcode} eq 'UNICODE' ) {
+               &splittext_UNICODE;
+       } else {
        }
 }
 
 sub splittext_ASCII {
-       my($self, $str) = @_;
+       my($self, $str, $noshift) = @_;
        my $style = $self->style;
        my $result = [];
        my @c = split('', $str);
        for( my $j = 0; $j <= $#c; $j++ ) {
                my $c = $c[$j];
+               next if $c eq "\x00";
                if( $c eq " " ) {
                        _appendchunks($result, $style, 'a', 16, $c);
                } else {
@@ -2915,7 +4141,7 @@ sub splittext_ASCII {
                                _appendchunks($result, $style, 'a', 11, $c);
                        } elsif( $c =~ /[0-9]/ ) {
                                _appendchunks($result, $style, 'a', 14, $c);
-                       } elsif( $c =~ /[,. ]/ && _lastclass($result) == 14 &&
+                       } elsif( $c =~ /[,. ]/ && _lastclasseq($result, 14) &&
                                $c[$j+1] =~ /[0-9]/ ) {
                                _appendchunks($result, $style, 'a', 14, $c);
                        } else {
@@ -2926,8 +4152,59 @@ sub splittext_ASCII {
        $result;
 }
 
+sub splittext_UTF8 {
+       my($self, $str, $noshift) = @_;
+       require PDFJ::Unicode;
+       $self->splittext_UNICODE(PDFJ::Unicode::utf8tounicode($str));
+}
+
+sub splittext_UNICODE {
+       my($self, $str, $noshift) = @_;
+       $str =~ s/^\xfe\xff//;
+       my $style = $self->style;
+       my $result = [];
+       my @c = split('', $str);
+       for( my $j = 0; $j <= $#c; $j += 2 ) {
+               my $c = $c[$j].$c[$j+1];
+               my $ca = $c[$j+1];
+               if( $c ge "\xff\x61" && $c le "\xff\x9f" ) {
+                       _appendchunks($result, $style, 'h', 11, $c);
+               } elsif( $c eq "\x00\x20" ) {
+                       _appendchunks($result, $style, 'a', 16, $ca);
+               } elsif( $c le "\x00\xff" ) {
+                       if( $style->{vh} ) {
+                               _appendchunks($result, $style, 'a', 11, $ca);
+                       } elsif( $c ge "\x00\x30" && $c le "\x00\x39" ) { # /[0-9]/
+                               _appendchunks($result, $style, 'a', 14, $ca);
+                       } elsif( ($c eq "\x00\x2c" || $c eq "\x00\x2e") && # /[,.]/
+                               _lastclasseq($result, 14) &&
+                               $c[$j+2].$c[$j+3] ge "\x00\x30" && 
+                               $c[$j+2].$c[$j+3] le "\x00\x39" ) {
+                               _appendchunks($result, $style, 'a', 14, $ca);
+                       } else {
+                               _appendchunks($result, $style, 'a', 17, $ca);
+                       }
+               } else {
+                       my $class = $PDFJ::Default{Class}{UNICODE}{$c};
+                       unless( defined $class ) {
+                               if( $c ge "\x30\x41" && $c le "\x30\x93" ) { # hirakana
+                                       $class = 10;
+                               } else {
+                                       $class = 11;
+                               }
+                       }
+                       my $preshift = $noshift ? 0 : 
+                               ($PDFJ::Default{PreShift}{UNICODE}{$c} || 0) / 1000;
+                       my $postshift = $noshift ? 0 : 
+                               ($PDFJ::Default{PostShift}{UNICODE}{$c} || 0) / 1000;
+                       _appendchunks($result, $style, 'z', $class, $c, $preshift, $postshift);
+               }
+       }
+       $result;
+}
+
 sub splittext_EUC {
-       my($self, $str) = @_;
+       my($self, $str, $noshift) = @_;
        my $style = $self->style;
        my $result = [];
        my @c = split('', $str);
@@ -2937,7 +4214,13 @@ sub splittext_EUC {
                        _appendchunks($result, $style, 'h', 11, $c.$c[$j+1]);
                        $j++;
                } elsif( $c eq "\x8f" ) {
-                       _appendchunks($result, $style, 'z', 11, $c.$c[$j+1].$c[$j+2]);
+                       my $tmp = $c.$c[$j+1].$c[$j+2];
+                       my $utmp = PDFJ::Unicode::e2u($tmp);
+                       if( $utmp > 0 && $utmp <= 0xff ) {
+                               _appendchunks($result, $style, 'a', 17, chr($utmp));
+                       } else {
+                               _appendchunks($result, $style, 'z', 11, $tmp);
+                       }
                        $j += 2;
                } elsif( $c eq " " ) {
                        _appendchunks($result, $style, 'a', 16, $c);
@@ -2946,7 +4229,7 @@ sub splittext_EUC {
                                _appendchunks($result, $style, 'a', 11, $c);
                        } elsif( $c =~ /[0-9]/ ) {
                                _appendchunks($result, $style, 'a', 14, $c);
-                       } elsif( $c =~ /[,. ]/ && _lastclass($result) == 14 && 
+                       } elsif( $c =~ /[,. ]/ && _lastclasseq($result, 14) && 
                                $c[$j+1] =~ /[0-9]/ ) {
                                _appendchunks($result, $style, 'a', 14, $c);
                        } else {
@@ -2963,8 +4246,10 @@ sub splittext_EUC {
                                        $class = 11;
                                }
                        }
-                       my $preshift = ($PDFJ::Default{PreShift}{EUC}{$k} || 0) / 1000;
-                       my $postshift = ($PDFJ::Default{PostShift}{EUC}{$k} || 0) / 1000;
+                       my $preshift = $noshift ? 0 : 
+                               ($PDFJ::Default{PreShift}{EUC}{$k} || 0) / 1000;
+                       my $postshift = $noshift ? 0 : 
+                               ($PDFJ::Default{PostShift}{EUC}{$k} || 0) / 1000;
                        _appendchunks($result, $style, 'z', $class, $k, $preshift, $postshift);
                }
        }
@@ -2972,7 +4257,7 @@ sub splittext_EUC {
 }
 
 sub splittext_SJIS {
-       my($self, $str) = @_;
+       my($self, $str, $noshift) = @_;
        my $style = $self->style;
        my $result = [];
        my @c = split('', $str);
@@ -2989,8 +4274,10 @@ sub splittext_SJIS {
                                        $class = 11;
                                }
                        }
-                       my $preshift = ($PDFJ::Default{PreShift}{SJIS}{$k} || 0) / 1000;
-                       my $postshift = ($PDFJ::Default{PostShift}{SJIS}{$k} || 0) / 1000;
+                       my $preshift = $noshift ? 0 : 
+                               ($PDFJ::Default{PreShift}{SJIS}{$k} || 0) / 1000;
+                       my $postshift = $noshift ? 0 : 
+                               ($PDFJ::Default{PostShift}{SJIS}{$k} || 0) / 1000;
                        _appendchunks($result, $style, 'z', $class, $k, $preshift, $postshift);
                } elsif( $c eq " " ) {
                        _appendchunks($result, $style, 'a', 16, $c);
@@ -3001,7 +4288,7 @@ sub splittext_SJIS {
                                _appendchunks($result, $style, 'a', 11, $c);
                        } elsif( $c =~ /[0-9]/ ) {
                                _appendchunks($result, $style, 'a', 14, $c);
-                       } elsif( $c =~ /[,. ]/ && _lastclass($result) == 14 &&
+                       } elsif( $c =~ /[,. ]/ && _lastclasseq($result, 14) &&
                                defined $c[$j+1] && $c[$j+1] =~ /[0-9]/ ) {
                                _appendchunks($result, $style, 'a', 14, $c);
                        } else {
@@ -3013,6 +4300,52 @@ sub splittext_SJIS {
 }
 
 #--------------------------------------------------------------------------
+package PDFJ::TextChunk;
+use strict;
+
+# chunk array index
+my %ChunkIndex = (
+       Style       =>  0,      # PDFJ::TextStyle object
+       Mode        =>  1,      # description as above
+       Class       =>  2,      # description as above
+       Splittable  =>  3,      # 1 for splittable at pre-postion
+       Glue        =>  4,      # normal glue width
+       GlueDec     =>  5,      # decrease adjustable glue width
+       GlueInc     =>  6,      # increase adjustable glue width
+       GluePref    =>  7,      # glue preference
+       Count       =>  8,      # characters count
+       String      =>  9,      # characters string
+       PreShift    => 10,      # postion shift at pre-postion
+       PostShift   => 11,      # postion shift at post-postion
+       GlueFix     => 12,      # fixed glue (to be calculated)
+       Hyphened    => 13,      # 1 for splitted, 2 for hyphened
+       RubyText    => 14,      # ruby PDFJ::Text object
+       AltObj      => 15,      # alternative object for String 
+       RubyOverlap => 16,      # ruby overlap size
+);
+
+sub new {
+       my($class, @args) = @_;
+        my %hash  = map {  $_ => $args[ $ChunkIndex{ $_ } ] } keys(%ChunkIndex) ;
+
+       bless \%hash, $class;
+}
+
+sub clone {
+       my($self) = @_;
+       my @clone = @$self;
+       bless \@clone, ref($self);
+}
+
+sub print {
+       my($self) = @_;
+       print "TextChunk\n";
+       for my $key(sort {$ChunkIndex{$a} <=> $ChunkIndex{$b}} keys %ChunkIndex) {
+               print "  $key => $self->{$key}\n";
+       }
+}
+
+#--------------------------------------------------------------------------
 package PDFJ::ParagraphStyle;
 use Carp;
 use strict;
@@ -3031,27 +4364,63 @@ use vars qw(@ISA);
 sub Paragraph { PDFJ::Paragraph->new(@_) }
 
 sub new {
-       my($class, $text, $style) = @_;
+       my($class, $text, $style)
+               = PDFJ::Util::methodargs([qw(text style)], @_);
        croak "paragraph text argument must be a PDFJ::Text object"
-               unless UNIVERSAL::isa($text, 'PDFJ::Text');
+               unless PDFJ::Util::objisa($text, 'PDFJ::Text');
+       $style = PDFJ::ParagraphStyle->new($style) 
+               if $style && (!ref($style) || ref($style) eq 'HASH');
        croak "paragraph style argument must be a PDFJ::ParagraphStyle object"
-               unless UNIVERSAL::isa($style, 'PDFJ::ParagraphStyle');
+               unless PDFJ::Util::objisa($style, 'PDFJ::ParagraphStyle');
        croak "size specification missing" unless $style->{size};
        croak "linefeed specification missing" unless exists $style->{linefeed};
        croak "align specification missing" unless $style->{align};
        my $self = bless { text => $text, style => $style }, $class;
-       $self->{linefeed} = $style->{linefeed} =~ /(\d+)%/ ? 
-               $text->fontsize * $1 / 100 : $style->{linefeed};
+       $self->typename($style->{typename}) if $style->{typename} ne '';
+       $self->{linefeed} = $style->{linefeed};
+       if( $self->{linefeed} =~ s/s(\d+%?)// ) {
+               $self->{lineskipmin} = $1;
+               if( $self->{lineskipmin} =~ /(\d+)%/ ) { 
+                       $self->{lineskipmin} = $text->fontsize * $1 / 100;
+               }
+       }
+       if( defined $style->{objinbounds} ) {
+               $self->{objinbounds} = $style->{objinbounds};
+       } elsif( defined $self->{lineskipmin} ) {
+               $self->{objinbounds} = 1;
+       }
+       if( $self->{linefeed} =~ /(\d+)%/ ) { 
+               $self->{linefeed} = $text->fontsize * $1 / 100;
+       }
        my $lineskip = $self->{linefeed} - $text->fontsize;
        $lineskip = 0 if $lineskip < 0;
+       $self->{lineskip} = $lineskip;
        $self->{preskip} = exists $style->{preskip} ? 
                $style->{preskip} : $lineskip * $PDFJ::Default{ParaPreSkipRatio};
+       if( ref($self->{preskip}) eq 'HASH' ) {
+               for my $key(keys %{$self->{preskip}}) {
+                       if( $self->{preskip}{$key} =~ /(\d+)%/ ) {
+                               $self->{preskip}{$key} = $text->fontsize * $1 / 100;
+                       }
+               }
+       } elsif( $self->{preskip} =~ /(\d+)%/ ) {
+               $self->{preskip} = $text->fontsize * $1 / 100;
+       }
        $self->{postskip} = exists $style->{postskip} ? 
                $style->{postskip} : $lineskip * $PDFJ::Default{ParaPostSkipRatio};
+       if( ref($self->{postskip}) eq 'HASH' ) {
+               for my $key(keys %{$self->{postskip}}) {
+                       if( $self->{postskip}{$key} =~ /(\d+)%/ ) {
+                               $self->{postskip}{$key} = $text->fontsize * $1 / 100;
+                       }
+               }
+       } elsif( $self->{postskip} =~ /(\d+)%/ ) {
+               $self->{postskip} = $text->fontsize * $1 / 100;
+       }
        my $labeltext = $style->{labeltext};
        my $firstminindent = 0;
        if( $labeltext ) {
-               if( UNIVERSAL::isa($labeltext, 'PDFJ::Showable') ) {
+               if( PDFJ::Util::objisa($labeltext, 'PDFJ::Showable') ) {
                        $self->{labelobj} = $labeltext;
                } elsif( ref($labeltext) eq 'CODE' ) {
                        $self->{labelobj} = &$labeltext();
@@ -3087,50 +4456,78 @@ sub new {
                                [@{$style->{endindent}}] :
                                [$style->{endindent}] :
                        [0];
-       my @lines = $text->_fold($self->linesizes, $style->{align});
+       $self->{align} = 
+               exists $style->{align} ?
+                       ref($style->{align}) eq 'ARRAY' ?
+                               [@{$style->{align}}] :
+                               [$style->{align}] :
+                       [0];
+       my @lines = $text->_fold($self);
        $self->{lines} = \@lines;
        $self;
 }
 
 sub text { $_[0]->{text} }
 sub linesnum { scalar(@{$_[0]->{lines}}) }
-sub line { $_[0]->{lines}->[$_[1]] }
+sub line { 
+       my($self, $line) = @_;
+       while( $line >= $self->linesnum ) {
+               $line -= $self->linesnum;
+       }
+       while( $line < 0 ) {
+               $line += $self->linesnum;
+       }
+       $self->{lines}->[$line];
+}
+sub fixedsize {
+       my($self, $line) = @_;
+       my(undef, $start, $count, $shift, $fixedglues) = @{$self->line($line)};
+       ($self->text->fixsize($start, $count, $fixedglues), $shift);
+}
 sub labelsize { $_[0]->{style}->{labelsize} || 0 }
 sub labelskip { $_[0]->{style}->{labelskip} || 0 }
 sub beginpadding { $_[0]->{style}->{beginpadding} || 0 }
-sub beginindents { scalar @{$_[0]->{beginindent}} }
-sub beginindent { 
-       my($self, $idx) = @_;
-       my $count = @{$self->{beginindent}};
-       if( $idx < $count ) {
-               $self->{beginindent}[$idx];
+sub _getsetarray { 
+       my($self, $name, $idx, $value) = @_;
+       my $count = @{$self->{$name}};
+       if( defined $value ) {
+               if( $idx > $count ) {
+                       my $lastvalue = $self->{$name}[$count - 1];
+                       for( my $j = $count; $j < $idx; $j++ ) {
+                               $self->{$name}[$j] = $lastvalue;
+                       }
+               }
+               my @values = ref($value) eq 'ARRAY' ? @$value : ($value);
+               for( my $j = 0; $j < @values; $j++ ) {
+                       $self->{$name}[$idx + $j] = $values[$j];
+               }
        } else {
-               $self->{beginindent}[$count - 1];
+               if( $idx < $count ) {
+                       $self->{$name}[$idx];
+               } else {
+                       $self->{$name}[$count - 1];
+               }
        }
 }
-sub endindents { scalar @{$_[0]->{endindent}} }
+sub beginindent { 
+       my $self = shift;
+       $self->_getsetarray('beginindent', @_);
+}
 sub endindent { 
-       my($self, $idx) = @_;
-       my $count = @{$self->{endindent}};
-       if( $idx < $count ) {
-               $self->{endindent}[$idx];
-       } else {
-               $self->{endindent}[$count - 1];
-       }
+       my $self = shift;
+       $self->_getsetarray('endindent', @_);
+}
+sub align { 
+       my $self = shift;
+       $self->_getsetarray('align', @_);
 }
 sub _size { $_[0]->{style}{size} }
-sub linesizes { 
-       my($self) = @_;
-       my @linesizes;
-       my $count = $self->beginindents > $self->endindents ? 
-               $self->beginindents :
-               $self->endindents;
-       for( my $j = 0; $j < $count; $j++ ) {
-               push @linesizes, $self->_size - $self->beginpadding - $self->labelsize - 
-                       $self->beginindent($j) - $self->endindent($j);
-       }
-       \@linesizes;
+sub linesize {
+       my($self, $idx) = @_;
+       $self->_size - $self->beginpadding - $self->labelsize - 
+                       $self->beginindent($idx) - $self->endindent($idx);
 }
+
 sub linefeed { $_[0]->{linefeed} }
 sub preskip { $_[0]->{preskip} || 0 }
 sub postskip { $_[0]->{postskip} || 0 }
@@ -3150,34 +4547,84 @@ sub breakable {
 
 sub _linessize {
        my($self) = @_;
-       $self->linesnum ? 
-               $self->text->fontsize + ($self->linesnum - 1) * $self->linefeed : 0;
+       if( $self->linesnum ) {
+               if( defined $self->{lineskipmin} ) {
+                       my $size = $self->text->fontsize * $self->linesnum;
+                       if( $self->linesnum > 1 ) {
+                               for my $line(@{$self->{lines}}[1..($self->linesnum - 1)]) {
+                                       $size += $line->{PreSkip};
+                               }
+                       }
+                       if( $self->{objinbounds} ) {
+                               $size += $self->{lines}[0]{PreAOLS};
+                               $size += $self->{lines}[$#{$self->{lines}}]{PostAOLS};
+                       }
+                       $size;
+               } else {
+                       $self->text->fontsize + ($self->linesnum - 1) * $self->linefeed;
+               }
+       } else {
+               0;
+       }
 }
 
 sub break {
-       my($self, @sizes) = @_;
+       my($self, $sizes)
+               = PDFJ::Util::listargs2ref(1, 0, 
+                       PDFJ::Util::methodargs([qw(sizes)], @_));
+       my @sizes = @$sizes;
        my $unbreakable = $self->nobreak;
        my $lastsize = $sizes[$#sizes];
        my @result;
        my @lines = @{$self->{lines}};
        my @beginindents = @{$self->{beginindent}};
        my @endindents = @{$self->{endindent}};
+       my $fontsize = $self->text->fontsize;
        my $second;
        while( @lines ) {
                my $size = @sizes ? shift(@sizes) : $lastsize;
-               my $count = $unbreakable ? 
-                       ($size < $self->_linessize ? 0 : scalar(@lines)) :
-                       ($size < $self->text->fontsize ? 0 : 
-                       int(($size - $self->text->fontsize) / $self->linefeed) + 1);
+               my $firstsize = $fontsize;
+               if( $self->{objinbounds} ) {
+                       $firstsize += $lines[0]{PreAOLS};
+               }
+               my $count;
+               if( $unbreakable ) {
+                       $count = $size < $self->_linessize ? 0 : scalar(@lines);
+               } elsif( $size < $firstsize ) {
+                       $count = 0;
+               } elsif( defined $self->{lineskipmin} ) {
+                       $count = 1;
+                       my $tmpsize = $firstsize;
+                       while( $count < @lines ) {
+                               my $linefeed = $fontsize + $lines[$count]{PreSkip};
+                               my $postaols = $self->{objinbounds} ? 
+                                       $lines[$count]{PostAOLS} : 0;
+                               if( $tmpsize + $linefeed + $postaols <= $size ) {
+                                       $tmpsize += $linefeed;
+                                       $count++;
+                               } else {
+                                       last;
+                               }
+                       }
+               } else { 
+                       $count = 
+                               int(($size - $self->text->fontsize) / $self->linefeed) + 1;
+               }
                return if !$count && !@sizes;
                my @blines = splice @lines, 0, $count;
                my @bbi = splice @beginindents, 0, $count;
                @beginindents = ($bbi[$#bbi]) unless @beginindents;
                my @bei = splice @endindents, 0, $count;
                @endindents = ($bei[$#bei]) unless @endindents;
-               my $bpara = bless {text => $self->{text}, 
+               my $bpara = bless {
+                               typename => $self->{typename},
+                               text => $self->{text}, 
                                style => $self->{style},
-                               linefeed => $self->{linefeed}, preskip => $self->{preskip},
+                               linefeed => $self->{linefeed}, 
+                               lineskip => $self->{lineskip},
+                               lineskipmin => $self->{lineskipmin},
+                               objinbounds => $self->{objinbounds},
+                               preskip => $self->{preskip},
                                postskip => $self->{postskip},
                                beginindent => \@bbi, endindent => \@bei,
                                labelobj => ($second ? undef : $self->{labelobj}),
@@ -3242,12 +4689,26 @@ sub size {
        }
 }
 
+sub blockalign {  
+       my($self) = @_;
+       $self->{style}{blockalign};
+}
+
+sub onshow { $_[0]->{style}{onshow} }
+
 sub _show {
        my($self, $page, $x, $y) = @_;
+       if( $self->{objinbounds} ) {
+               my $preaols = $self->line(0)->{PreAOLS};
+               if( $self->text->style->{font}{direction} eq 'H' ) {
+                       $y -= $preaols;
+               } else {
+                       $x -= $preaols;
+               }
+       }
        for( my $j = 0; $j < $self->linesnum; $j++ ) {
                ($x, $y) = $self->_showline($page, $x, $y, $j);
        }
-       ($x, $y);
 }
 
 sub _showline {
@@ -3259,7 +4720,6 @@ sub _showline {
        my $fixedglues = $self->line($line)->{FixedGlues};
        my $shift = $self->line($line)->{Shift} + $self->beginpadding + 
                $self->labelsize + $self->beginindent($line);
-       my $linefeed = $self->linefeed;
        my $text = $self->text;
        my $tstyle = $text->style;
        croak "no font specification" unless exists $tstyle->{font};
@@ -3269,7 +4729,12 @@ sub _showline {
                        ($x, $y - $self->beginpadding);
                $self->{labelobj}->show($page, $lx, $ly);
        }
-       my($nextx, $nexty);
+       my($nextx, $nexty, $linefeed);
+       if( defined $self->{lineskipmin} && $line < $self->linesnum - 1 ) {
+               $linefeed = $text->fontsize + $self->line($line + 1)->{PreSkip};
+       } else {
+               $linefeed = $self->linefeed;
+       }
        if( $direction eq 'H' ) {
                ($nextx, $nexty) = ($x, $y - $linefeed);
                $x += $shift;
@@ -3295,19 +4760,7 @@ sub new {
        bless \$class, $class;
 }
 
-#--------------------------------------------------------------------------
-package PDFJ::BlockSkip;
-use Carp;
-use strict;
-use vars qw(@ISA);
-@ISA = qw(PDFJ::BlockElement);
-
-sub new {
-       my($class, $skip) = @_;
-       bless {skip => $skip}, $class;
-}
-
-sub size { $_[0]->{skip} || 0 }
+sub typename { 'newblock' }
 
 #--------------------------------------------------------------------------
 package PDFJ::BlockStyle;
@@ -3322,40 +4775,256 @@ sub BStyle { PDFJ::BlockStyle->new(@_) }
 package PDFJ::Block;
 use Carp;
 use strict;
-use vars qw(@ISA);
+use vars qw(@ISA %Dispatch %Require);
 @ISA = qw(PDFJ::Showable);
 
+%Dispatch = (
+       H => 'PDFJ::Block::Vector',
+       R => 'PDFJ::Block::Vector',
+       V => 'PDFJ::Block::Vector',
+       HV => 'PDFJ::Block::Matrix',
+       RV => 'PDFJ::Block::Matrix',
+       VH => 'PDFJ::Block::Matrix',
+       VR => 'PDFJ::Block::Matrix',
+       TV => 'PDFJ::Block::Tree',
+       TU => 'PDFJ::Block::Tree',
+       TH => 'PDFJ::Block::Tree',
+       TR => 'PDFJ::Block::Tree',
+);
+
+%Require = (
+       HV => 'PDFJ::Matrix',
+       RV => 'PDFJ::Matrix',
+       VH => 'PDFJ::Matrix',
+       VR => 'PDFJ::Matrix',
+       TV => 'PDFJ::Tree',
+       TU => 'PDFJ::Tree',
+       TH => 'PDFJ::Tree',
+       TR => 'PDFJ::Tree',
+);
+
 sub Block { PDFJ::Block->new(@_); }
 
 sub new {
-       my $class = shift;
-       my $direction = shift;
-       my $style = pop; # not shift
-       croak "block direction argument must be H or V or R"
-               unless $direction =~ /^H|V|R$/;
-       croak "block style argument must be a PDFJ::BlockStyle object"
-               unless UNIVERSAL::isa($style, 'PDFJ::BlockStyle');
-       my @objects = (@_ == 1 && ref($_[0]) eq 'ARRAY') ? @{$_[0]} : @_;
-       for( my $j = 0; $j < @objects; $j++ ) {
-               if( UNIVERSAL::isa($objects[$j], 'PDFJ::BlockElement') ) {
-                       # OK
-               } elsif( $objects[$j] =~ /^\d+$/ ) {
-                       $objects[$j] = PDFJ::BlockSkip->new($objects[$j]);
-               } else {
-                       croak "illegal Block element: $objects[$j]"
-               }
+       my($class, $direction, $objects, $style)
+               = PDFJ::Util::listargs2ref(2, 1, 
+                       PDFJ::Util::methodargs([qw(direction objects style)], @_));
+       my $dclass = $Dispatch{$direction}
+               or croak "unknown Block direction: $direction";
+       if( $Require{$direction} ) {
+               eval "require $Require{$direction}";
        }
+       $style = PDFJ::BlockStyle->new($style) 
+               if $style && (!ref($style) || ref($style) eq 'HASH');
+       croak "block style argument must be a PDFJ::BlockStyle object"
+               unless PDFJ::Util::objisa($style, 'PDFJ::BlockStyle');
+       my @objects = @$objects;
        my $self = bless { direction => $direction, objects => \@objects, 
                xpreshift => 0, xpostshift => 0, ypreshift => 0, ypostshift => 0, 
-               style => $style }, $class;
+               style => $style }, $dclass;
+       $self->typename($style->{typename}) if $style->{typename} ne '';
+       $self->_checkobjects;
        $self->_calcsize;
        $self->adjustwidth($style->{width}) if $style->{width};
        $self->adjustheight($style->{height}) if $style->{height};
        $self;
 }
 
+sub _checkobjects {
+       my($self) = @_;
+       my $objects = $self->{objects};
+       for( my $j = 0; $j < @$objects; $j++ ) {
+               unless( PDFJ::Util::objisa($objects->[$j], 'PDFJ::BlockElement') ) {
+                       croak "illegal Block element: $objects->[$j]"
+               }
+       }
+}
+
+sub empty {
+       my($self) = @_;
+       !@{$self->{objects}};
+}
+
+sub padding { $_[0]->{style}{padding} || 0 }
+
+sub width { 
+       my($self) = @_;
+       $self->{width} + $self->padding * 2 
+               + $self->{xpreshift} + $self->{xpostshift};
+}
+sub height {
+       my($self) = @_;
+       $self->{height} + $self->padding * 2 
+               + $self->{ypreshift} + $self->{ypostshift};
+}
+
+sub size {
+       my($self, $direction) = @_; 
+       if( $direction eq 'H' ) {
+               $self->width;
+       } else {
+               $self->height;
+       }
+}
+sub blockalign {  
+       my($self) = @_;
+       $self->{style}{blockalign};
+}
+sub left { 0 }
+sub right { $_[0]->width }
+sub top { 0 }
+sub bottom { - $_[0]->height }
+sub preskip { 
+       my $self = shift;
+       $self->{style}{preskip} || 0;
+}
+sub postskip { 
+       my $self = shift;
+       $self->{style}{postskip} || 0;
+}
+
+sub align { $_[0]->{style}{align} || "" }
+sub nobreak { $_[0]->{style}{nobreak} }
+sub postnobreak { $_[0]->{style}{postnobreak} }
+sub repeatheader { $_[0]->{style}{repeatheader} || 0 }
+sub float { $_[0]->{style}->{float} || "" }
+sub nofirstfloat { $_[0]->{style}{nofirstfloat} }
+#sub beginpadding { $_[0]->{style}{beginpadding} || 0 }
+sub bfloatsep { 
+       my $tmp = $_[0]->{style}{bfloatsep};
+       if( defined $tmp ) {
+               $tmp = [$tmp] if ref($tmp) ne 'ARRAY';
+               for( my $j = ''; $j < @$tmp; $j++ ) {
+                       $tmp->[$j]{floatsep} = "b$j" if $tmp->[$j];
+               }
+       }
+       $tmp;
+}
+sub efloatsep { 
+       my $tmp = $_[0]->{style}{efloatsep}; 
+       if( defined $tmp ) {
+               $tmp = [$tmp] if ref($tmp) ne 'ARRAY';
+               for( my $j = ''; $j < @$tmp; $j++ ) {
+                       $tmp->[$j]{floatsep} = "e$j" if $tmp->[$j];
+               }
+       }
+       $tmp;
+}
+sub direction { $_[0]->{direction} }
+sub breakable {
+       my($self, $blockdirection) = @_;
+       $self->nobreak ? 0 :
+               $blockdirection eq $self->{direction} ? 1 :
+               0;
+}
+
+sub adjustwidth {
+       my($self, $size)
+               = PDFJ::Util::methodargs([qw(size)], @_);
+       return unless $size;
+       my $align = $self->align;
+       return $self if $self->width >= $size;
+       $size -= $self->width;
+       if( $align =~ /r/ ) {
+               $self->{xpreshift} = $size;
+       } elsif( $align =~ /c/ ) {
+               $self->{xpreshift} = $size / 2;
+               $self->{xpostshift} = $size / 2;
+       } else { # l
+               $self->{xpostshift} = $size;
+       }
+       $self;
+}
+
+sub adjustheight {
+       my($self, $size)
+               = PDFJ::Util::methodargs([qw(size)], @_);
+       return unless $size;
+       my $align = $self->align;
+       return $self if $self->height >= $size;
+       $size -= $self->height;
+       if( $align =~ /b/ ) {
+               $self->{ypreshift} = $size;
+       } elsif( $align =~ /m/ ) {
+               $self->{ypreshift} = $size / 2;
+               $self->{ypostshift} = $size / 2;
+       } else { # t
+               $self->{ypostshift} = $size;
+       }
+       $self;
+}
+
+sub colspan { $_[0]->{style}{colspan} || 1 }
+sub rowspan { $_[0]->{style}{rowspan} || 1 }
+
+sub onshow { $_[0]->{style}{onshow} }
+
+sub _showbox {
+       my($self, $page, $x, $y) = @_;
+       my $style = $self->{style};
+       if( $style->{withbox} ) {
+               my $withbox = $style->{withbox};
+               my $withboxstyle = $style->{withboxstyle};
+               my $shape = PDFJ::Shape->new;
+               my($boxwidth, $boxheight) = ($self->width, $self->height);
+               $shape->box(0, 0, $boxwidth, - $boxheight, $withbox, 
+                       $withboxstyle);
+               $shape->show($page, $x, $y);
+       }
+}
+
+#--------------------------------------------------------------------------
+package PDFJ::Block::Vector;
+use Carp;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Block);
+
+sub _checkobjects {
+       my($self) = @_;
+       my $objects = $self->{objects};
+       for( my $j = 0; $j < @$objects; $j++ ) {
+               if( PDFJ::Util::objisa($objects->[$j], 'PDFJ::BlockElement') ) {
+                       # OK
+               } elsif( $objects->[$j] =~ /^\d+$/ ) {
+                       $objects->[$j] = PDFJ::BlockSkip::BlockSkip($objects->[$j]);
+               } else {
+                       croak "illegal Block element: $objects->[$j]"
+               }
+       }
+}
+
+# NOT method
+sub skipsize {
+       my($aobj, $bobj) = @_;
+       my $apostskip = $aobj->postskip;
+       my $postskip = ref($apostskip) eq 'HASH' ?
+               $apostskip->{$bobj->typename || 'default'} : $apostskip;
+       my $bpreskip = $bobj->preskip;
+       my $preskip = ref($bpreskip) eq 'HASH' ?
+               $bpreskip->{$aobj->typename || 'default'} : $bpreskip;
+       $postskip + $preskip;
+}
+
+sub preskip { 
+       my $self = shift;
+       my $preskip = $self->{style}{preskip} || 0;
+       $preskip = $self->{objects}[0]->preskip if $preskip eq 'c';
+       $preskip;
+}
+sub postskip { 
+       my $self = shift;
+       my $postskip = $self->{style}{postskip} || 0;
+       $postskip = $self->{objects}[$#{$self->{objects}}]->postskip 
+               if $postskip eq 'c';
+       $postskip;
+}
+
 sub break {
-       my($self, @sizes) = @_;
+       my($self, $sizes)
+               = PDFJ::Util::listargs2ref(1, 0, 
+                       PDFJ::Util::methodargs([qw(sizes)], @_));
+       my @sizes = @$sizes;
        my $unbreakable = $self->nobreak;
        my $nofirstfloat = $self->nofirstfloat;
        my $repeatheader = $self->repeatheader;
@@ -3363,6 +5032,18 @@ sub break {
        my $direction = $self->{direction} eq 'V' ? 'V' : 'H';
        my @result;
        my @objects = @{$self->{objects}};
+       my $bfloatsep = $self->bfloatsep;
+       my $efloatsep = $self->efloatsep;
+       if( $bfloatsep && $efloatsep ) {
+               my $match = 0;
+               for my $obj(@$bfloatsep) {
+                       if( grep {$_ eq $obj} @$efloatsep ) {
+                               $match = 1;
+                               last;
+                       }
+               }
+               carp "bfloatsep and efloatsep must be different" if $match;
+       }
        my @repeatheader = $repeatheader ? 
                        @objects[0..($repeatheader - 1)] : ();
        my @reserve;
@@ -3376,29 +5057,46 @@ sub break {
                        my $bsize = $self->padding * 2;
                        while( $bsize < $size && @objects ) {
                                my $obj = $objects[0];
+                               my $issep = 0;
                                my $float = $obj->float;
                                if( $float && @reserve ) {
                                        push @reserve, shift(@objects);
                                        next;
                                }
-                               if( $float eq 'b' && $nofirstfloat && !@result ) {
+                               if( $float =~ /b/ && $nofirstfloat && !@result ) {
                                        push @reserve, shift(@objects);
                                        next;
                                }
-                               my $inspos = _inspos(\@bobjects, $float);
+                               my($inspos, $seppos, $needsep) = _inspos(\@bobjects, $float);
+                               my $sepobj;
+                               if( $needsep ) {
+                                       my($level) = $float =~ /(\d+)/;
+                                       $sepobj = $bfloatsep->[$level] 
+                                               if $bfloatsep && $float =~ /b/ && $level < @$bfloatsep;
+                                       $sepobj = $efloatsep->[$level]
+                                               if $efloatsep && $float =~ /e/ && $level < @$efloatsep;
+                               }
+                               if( $sepobj ) {
+                                       unshift @objects, $sepobj;
+                                       $obj = $sepobj;
+                                       $inspos = $seppos;
+                                       $issep = 1;
+                               }
                                my $skipsize = 0;
                                if( $inspos == 0 ) {
-                                       $skipsize = $obj->postskip + $bobjects[$inspos]->preskip 
+                                       $skipsize = skipsize($obj, $bobjects[$inspos])
                                                if @bobjects;
                                } elsif( $inspos == @bobjects ) {
-                                       $skipsize = $bobjects[$inspos - 1]->postskip + $obj->preskip;
+                                       $skipsize = skipsize($bobjects[$inspos - 1], $obj);
                                } else {
-                                       $skipsize = $obj->preskip + $obj->postskip;
+                                       $skipsize = skipsize($bobjects[$inspos - 1], $obj) +
+                                               skipsize($obj, $bobjects[$inspos]) - 
+                                               skipsize($bobjects[$inspos - 1], $bobjects[$inspos]);
                                }
                                my $osize = $obj->size($direction);
-                               if( UNIVERSAL::isa($obj, 'PDFJ::NewBlock') ) {
+                               if( PDFJ::Util::objisa($obj, 'PDFJ::NewBlock') ) {
                                        shift(@objects);
-                                       last;
+                                       last if @bobjects;
                                } elsif( $bsize + $skipsize + $osize <= $size ) {
                                        splice @bobjects, $inspos, 0, shift(@objects);
                                        $bsize += $skipsize + $osize;
@@ -3410,7 +5108,8 @@ sub break {
                                        if( @parts ) {
                                                $obj = $parts[0];
                                                my $osize = $obj->size($direction);
-                                               if( $osize ) {
+                                               my $empty = $obj->can('empty') && $obj->empty;
+                                               if( $osize && !$empty ) {
                                                        $bsize += $skipsize + $osize;
                                                        shift @objects;
                                                        unshift @objects, @parts;
@@ -3422,10 +5121,11 @@ sub break {
                                                }
                                                last;
                                        } else {
+                                               carp "$obj->break(@bsizes) fails";
                                                return;
                                        }
                                } else {
-                                       if( $float ) {
+                                       if( $float && !$issep ) {
                                                push @reserve, shift(@objects);
                                        } else {
                                                last;
@@ -3433,10 +5133,20 @@ sub break {
                                }
                        }
                }
-               while( @bobjects && $bobjects[$#bobjects]->postnobreak && @objects ) {
+               while( @bobjects && $bobjects[$#bobjects] && 
+                       $bobjects[$#bobjects]->postnobreak && @objects ) {
                        unshift @objects, pop(@bobjects);
                }
-               return if !@bobjects && !@sizes;
+               if( !@bobjects && !@sizes ) {
+                       carp "break fails";
+                       return;
+               }
+               if( @bobjects && $bobjects[0]->{floatsep} eq 'b' ) {
+                       shift @bobjects;
+               }
+               if( @bobjects && $bobjects[$#bobjects]->{floatsep} eq 'e' ) {
+                       pop @bobjects;
+               }
                if( $repeatheader && (@bobjects >= $repeatheader) && @objects ) {
                        unshift @objects, @repeatheader;
                }
@@ -3453,21 +5163,43 @@ sub break {
 
 sub _inspos { # NOT method
        my($objects, $float) = @_;
-       my $inspos;
-       if( $float eq 'b' ) {
+       my($inspos, $seppos, $needsep);
+       if( $float =~ /b/ ) {
                $inspos = 0;
-               while( $inspos < @$objects && $objects->[$inspos]->float eq 'b' ) {
+               while( $inspos < @$objects && ($objects->[$inspos]->float ge $float ||
+                       $objects->[$inspos]->{floatsep} gt $float)) {
                        $inspos++;
                }
-       } elsif( $float eq 'e' ) {
+               unless( $inspos < @$objects && 
+                       $objects->[$inspos]->{floatsep} eq $float ) {
+                       $seppos = $inspos;
+                       $needsep = 1;
+               }
+       } elsif( $float =~ /e/ ) {
                $inspos = @$objects;
-       } else {
+               while( $inspos > 0 && ($objects->[$inspos - 1]->float ge $float ||
+                       $objects->[$inspos - 1]->{floatsep} gt $float)) {
+                       $inspos--;
+               }
+               unless( $inspos > 0 && $objects->[$inspos - 1]->{floatsep} eq $float ) {
+                       $seppos = $inspos;
+                       $needsep = 1;
+               }
+               $inspos = @$objects;
+               while( $inspos > 0 && ($objects->[$inspos - 1]->float gt $float ||
+                       $objects->[$inspos - 1]->{floatsep} gt $float)) {
+                       $inspos--;
+               }
+       } elsif( $float eq '' || $float eq 'h' ) {
                $inspos = @$objects;
-               while( $inspos > 0 && $objects->[$inspos - 1]->float eq 'e' ) {
+               while( $inspos > 0 && ($objects->[$inspos - 1]->float =~ /e/ ||
+                       $objects->[$inspos - 1]->{floatsep} =~ /e/)) {
                        $inspos--;
                }
+       } else {
+               carp "unknown float spec '$float'";
        }
-       $inspos;
+       ($inspos, $seppos, $needsep);
 }
 
 sub _calcsize {
@@ -3480,12 +5212,13 @@ sub _calcsize {
                for( my $j = 0; $j < $objnum; $j++ ) {
                        my $obj = $self->{objects}->[$j];
                        if( $j > 0 ) {
-                               $height += $self->{objects}->[$j-1]->postskip + $obj->preskip;
+                               $height += skipsize($self->{objects}->[$j-1], $obj);
                        }
-                       if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
-                               $width = $width < $obj->width ? $obj->width : $width;
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
+                               my $owidth = $obj->width + $obj->blockalign;
+                               $width = $width < $owidth ? $owidth : $width;
                                $height += $obj->height;
-                       } elsif( UNIVERSAL::isa($obj, 'PDFJ::BlockElement') ) {
+                       } elsif( PDFJ::Util::objisa($obj, 'PDFJ::BlockElement') ) {
                                $height += $obj->size($self->{direction});
                        } else {
                                croak "illegal block element";
@@ -3493,162 +5226,78 @@ sub _calcsize {
                }
                if( $adjust ) {
                        for my $obj(@{$self->{objects}}) {
-                               $obj->adjustwidth($width) if UNIVERSAL::isa($obj, 'PDFJ::Block');
+                               $obj->adjustwidth($width) if $obj->can('adjustwidth');
                        }
                }
                my @indents;
-               if( $align =~ /c/ ) {
-                       for( my $j = 0; $j < $objnum; $j++ ) {
-                               my $obj = $self->{objects}->[$j];
-                               if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
-                                       $indents[$j] = ($width - $obj->width) / 2;
-                               }
-                       }
-               } elsif( $align =~ /r/ ) {
-                       for( my $j = 0; $j < $objnum; $j++ ) {
-                               my $obj = $self->{objects}->[$j];
-                               if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
-                                       $indents[$j] = $width - $obj->width;
-                               }
-                       }
-               }
-               $self->{indents} = \@indents;
-       } else {
+               my $indentratio = ($align =~ /c/) ? 0.5 : ($align =~ /r/) ? 1 : 0;
                for( my $j = 0; $j < $objnum; $j++ ) {
                        my $obj = $self->{objects}->[$j];
-                       if( $j > 0 ) {
-                               $width += $self->{objects}->[$j-1]->postskip + $obj->preskip;
-                       }
-                       if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
-                               $height = $height < $obj->height ? $obj->height : $height;
-                               $width += $obj->width;
-                       } elsif( UNIVERSAL::isa($obj, 'PDFJ::BlockElement') ) {
-                               $width += $obj->size($self->{direction});
-                       } else {
-                               croak "illegal block element";
-                       }
-               }
-               if( $adjust ) {
-                       for my $obj(@{$self->{objects}}) {
-                               $obj->adjustheight($height) 
-                                       if UNIVERSAL::isa($obj, 'PDFJ::Block');
-                       }
-               }
-               my @indents;
-               if( $align =~ /m/ ) {
-                       for( my $j = 0; $j < $objnum; $j++ ) {
-                               my $obj = $self->{objects}->[$j];
-                               if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
-                                       $indents[$j] = ($height - $obj->height) / 2;
-                               }
-                       }
-               } elsif( $align =~ /b/ ) {
-                       for( my $j = 0; $j < $objnum; $j++ ) {
-                               my $obj = $self->{objects}->[$j];
-                               if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
-                                       $indents[$j] = $height - $obj->height;
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
+                               my $aib = $obj->blockalign;
+                               if( $aib eq '' ) {
+                                       $indents[$j] = ($width - $obj->width) * $indentratio;
+                               } elsif( $aib eq 'b' ) {
+                                       $indents[$j] = 0;
+                               } elsif( $aib eq 'm' ) {
+                                       $indents[$j] = ($width - $obj->width) / 2;
+                               } elsif( $aib eq 'e' ) {
+                                       $indents[$j] = $width - $obj->width;
+                               } elsif( $aib =~ /\d/ ) {
+                                       $indents[$j] = $aib + 0;
                                }
-                       }
-               }
-               $self->{indents} = \@indents;
-       }
-       $self->{width} = $width;
-       $self->{height} = $height;
-}
-
-sub padding { $_[0]->{style}{padding} || 0 }
-
-sub width { 
-       my($self) = @_;
-       $self->{width} + $self->padding * 2 
-               + $self->{xpreshift} + $self->{xpostshift} 
-               + ($self->direction eq 'H' ? 0 : $self->beginpadding);
-}
-sub height {
-       my($self) = @_;
-       $self->{height} + $self->padding * 2 
-               + $self->{ypreshift} + $self->{ypostshift}
-               + ($self->direction eq 'H' ? $self->beginpadding : 0);
-}
-sub size {
-       my($self, $direction) = @_; 
-       if( $direction eq 'H' ) {
-               $self->width;
-       } else {
-               $self->height;
-       }
-}
-sub left { 0 }
-sub right { $_[0]->width }
-sub top { 0 }
-sub bottom { - $_[0]->height }
-sub preskip { $_[0]->{style}{preskip} || 0 }
-sub postskip { $_[0]->{style}{postskip} || 0 }
-sub align { $_[0]->{style}{align} || "" }
-sub nobreak { $_[0]->{style}{nobreak} }
-sub postnobreak { $_[0]->{style}{postnobreak} }
-sub repeatheader { $_[0]->{style}{repeatheader} || 0 }
-sub float { $_[0]->{style}->{float} || "" }
-sub nofirstfloat { $_[0]->{style}{nofirstfloat} }
-sub beginpadding { $_[0]->{style}{beginpadding} || 0 }
-sub direction { $_[0]->{direction} }
-sub breakable {
-       my($self, $blockdirection) = @_;
-       $self->nobreak ? 0 :
-               $blockdirection eq $self->{direction} ? 1 :
-               0;
-}
-
-sub adjustwidth {
-       my($self, $size) = @_;
-       return unless $size;
-       my $align = $self->align;
-       return $self if $self->width >= $size;
-       $size -= $self->width;
-       if( $align =~ /r/ ) {
-               $self->{xpreshift} = $size;
-       } elsif( $align =~ /c/ ) {
-               $self->{xpreshift} = $size / 2;
-               $self->{xpostshift} = $size / 2;
-       } else { # l
-               $self->{xpostshift} = $size;
-       }
-       $self;
-}
-
-sub adjustheight {
-       my($self, $size) = @_;
-       return unless $size;
-       my $align = $self->align;
-       return $self if $self->height >= $size;
-       $size -= $self->height;
-       if( $align =~ /b/ ) {
-               $self->{ypreshift} = $size;
-       } elsif( $align =~ /m/ ) {
-               $self->{ypreshift} = $size / 2;
-               $self->{ypostshift} = $size / 2;
-       } else { # t
-               $self->{ypostshift} = $size;
+                       }
+               }
+               $self->{indents} = \@indents;
+       } else {
+               for( my $j = 0; $j < $objnum; $j++ ) {
+                       my $obj = $self->{objects}->[$j];
+                       if( $j > 0 ) {
+                               $width += skipsize($self->{objects}->[$j-1], $obj);
+                       }
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
+                               my $oheight = $obj->height + $obj->blockalign;
+                               $height = $height < $oheight ? $oheight : $height;
+                               $width += $obj->width;
+                       } elsif( PDFJ::Util::objisa($obj, 'PDFJ::BlockElement') ) {
+                               $width += $obj->size($self->{direction});
+                       } else {
+                               croak "illegal block element";
+                       }
+               }
+               if( $adjust ) {
+                       for my $obj(@{$self->{objects}}) {
+                               $obj->adjustheight($height) if $obj->can('adjustheight');
+                       }
+               }
+               my @indents;
+               my $indentratio = ($align =~ /m/) ? 0.5 : ($align =~ /b/) ? 1 : 0;
+               for( my $j = 0; $j < $objnum; $j++ ) {
+                       my $obj = $self->{objects}->[$j];
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
+                               my $aib = $obj->blockalign;
+                               if( $aib eq '' ) {
+                                       $indents[$j] = ($height - $obj->height) * $indentratio;
+                               } elsif( $aib eq 'b' ) {
+                                       $indents[$j] = 0;
+                               } elsif( $aib eq 'm' ) {
+                                       $indents[$j] = ($height - $obj->height) / 2;
+                               } elsif( $aib eq 'e' ) {
+                                       $indents[$j] = $height - $obj->height;
+                               } elsif( $aib =~ /\d/ ) {
+                                       $indents[$j] = $aib + 0;
+                               }
+                       }
+               }
+               $self->{indents} = \@indents;
        }
-       $self;
+       $self->{width} = $width;
+       $self->{height} = $height;
 }
 
 sub _show {
        my($self, $page, $x, $y) = @_;
-       if( $self->direction eq 'H' ) {
-               $y -= $self->beginpadding;
-       } else {
-               $x += $self->beginpadding;
-       }
-       my $style = $self->{style};
-       if( $style->{withbox} ) {
-               my $withbox = $style->{withbox};
-               my $withboxstyle = $style->{withboxstyle};
-               my $shape = PDFJ::Shape->new;
-               $shape->box(0, 0, $self->width, - $self->height, $withbox, 
-                       $withboxstyle);
-               $shape->show($page, $x, $y);
-       }
+       $self->_showbox($page, $x, $y);
        $x += $self->padding + $self->{xpreshift};
        $y -= $self->padding + $self->{ypreshift};
        my $objnum = @{$self->{objects}};
@@ -3657,12 +5306,12 @@ sub _show {
                        my $obj = $self->{objects}->[$j];
                        my $indent = $self->{indents}->[$j] || 0;
                        if( $j > 0 ) {
-                               $y -= $self->{objects}->[$j-1]->postskip + $obj->preskip;
+                               $y -= skipsize($self->{objects}->[$j-1], $obj);
                        }
-                       if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
                                $obj->show($page, $x + $indent, $y, 'tl');
                                $y -= $obj->height;
-                       } elsif( UNIVERSAL::isa($obj, 'PDFJ::BlockElement') ) {
+                       } elsif( PDFJ::Util::objisa($obj, 'PDFJ::BlockElement') ) {
                                $y -= $obj->size($self->{direction});
                        } elsif( $obj =~ /^\d+$/ ) {
                                $y -= $obj;
@@ -3675,12 +5324,12 @@ sub _show {
                        my $obj = $self->{objects}->[$j];
                        my $indent = $self->{indents}->[$j] || 0;
                        if( $j > 0 ) {
-                               $x += $self->{objects}->[$j-1]->postskip + $obj->preskip;
+                               $x += skipsize($self->{objects}->[$j-1], $obj);
                        }
-                       if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
                                $obj->show($page, $x, $y - $indent, 'tl');
                                $x += $obj->width;
-                       } elsif( UNIVERSAL::isa($obj, 'PDFJ::BlockElement') ) {
+                       } elsif( PDFJ::Util::objisa($obj, 'PDFJ::BlockElement') ) {
                                $x += $obj->size($self->{direction});
                        } else {
                                croak "illegal block element";
@@ -3692,12 +5341,12 @@ sub _show {
                        my $obj = $self->{objects}->[$j];
                        my $indent = $self->{indents}->[$j] || 0;
                        if( $j > 0 ) {
-                               $x -= $self->{objects}->[$j-1]->postskip + $obj->preskip;
+                               $x -= skipsize($self->{objects}->[$j-1], $obj);
                        }
-                       if( UNIVERSAL::isa($obj, 'PDFJ::Showable') ) {
+                       if( PDFJ::Util::objisa($obj, 'PDFJ::Showable') ) {
                                $obj->show($page, $x, $y - $indent, 'tr');
                                $x -= $obj->width;
-                       } elsif( UNIVERSAL::isa($obj, 'PDFJ::BlockElement') ) {
+                       } elsif( PDFJ::Util::objisa($obj, 'PDFJ::BlockElement') ) {
                                $x -= $obj->size($self->{direction});
                        } else {
                                croak "illegal block element";
@@ -3716,20 +5365,28 @@ use vars qw(@ISA);
 
 sub new {
        my($class, $docobj, $src, $pxwidth, $pxheight, $width, $height, $padding,
-               $colorspace) = @_;
+               $colorspace, $type) = @_;
        my($ext) = $src =~ /([^\.]+)$/;
-#      croak "unknown image file extention: $ext" 
-#              unless $ext =~ /^jpe?g$/i;
+       $type ||= $ext;
        if( $src =~ /^http:/i ) {
-               new_url($class, $docobj, $src, $pxwidth, $pxheight, $width, 
+               croak "unknown image file type: $type" 
+                       unless $type =~ /^jpe?g$/i;
+               new_url_jpeg($class, $docobj, $src, $pxwidth, $pxheight, $width, 
                        $height, $padding, $colorspace);
        } else {
-               new_file($class, $docobj, $src, $pxwidth, $pxheight, $width, 
-                       $height, $padding, $colorspace);
+               if( $type =~ /^jpe?g$/i ) {
+                       new_file_jpeg($class, $docobj, $src, $pxwidth, $pxheight, $width, 
+                               $height, $padding, $colorspace);
+               } elsif( $type =~ /^png$/i ) {
+                       new_file_png($class, $docobj, $src, 0, 0, $width, 
+                               $height, $padding);
+               } else {
+                       croak "unknown image file type: $type";
+               }
        }
 }
 
-sub new_url {
+sub new_url_jpeg {
        my($class, $docobj, $url, $pxwidth, $pxheight, $width, $height, $padding,
                $colorspace) = @_;
        $width ||= $pxwidth;
@@ -3762,7 +5419,7 @@ sub new_url {
                height => $height, padding => $padding }, $class;
 }
 
-sub new_file {
+sub new_file_jpeg {
        my($class, $docobj, $file, $pxwidth, $pxheight, $width, $height, $padding,
                $colorspace) = @_;
        $width ||= $pxwidth;
@@ -3791,6 +5448,16 @@ sub new_file {
                height => $height, padding => $padding }, $class;
 }
 
+sub new_file_png {
+       my($class, $docobj, $file, $pxwidth, $pxheight, $width, $height, $padding) 
+               = @_;
+       require PDFJ::PNG;
+       my($name, $image) = PDFJ::PNG::imagestream($docobj, $file);
+       $docobj->_registimage($name, $image);
+       bless { name => $name, image => $image, width => $width,
+               height => $height, padding => $padding }, $class;
+}
+
 sub image { $_[0]->{image} }
 sub width { $_[0]->{width} + $_[0]->padding * 2 }
 sub height { $_[0]->{height} + $_[0]->padding * 2 }
@@ -3817,6 +5484,8 @@ sub setpadding {
        $self->{padding} = $padding;
 }
 
+sub onshow {}
+
 sub _show {
        my($self, $page, $x, $y) = @_;
        $x += $self->padding;
@@ -3824,12 +5493,14 @@ sub _show {
        my $width = $self->{width};
        my $height = $self->{height};
        my $name = $self->{name};
-       $page->addcontents("q $width 0 0 $height $x $y cm /$name Do Q");
+       $page->addcontents("q", numbers($width, 0, 0, $height, $x, $y), 
+               "cm /$name Do Q");
        $page->useimage($self);
 }
 
 #--------------------------------------------------------------------------
 package PDFJ::Color;
+use PDFJ::Object;
 use Carp;
 use strict;
 
@@ -3837,48 +5508,68 @@ sub Color { PDFJ::Color->new(@_) }
 
 sub new {
        my $class = shift;
-       my $self;
        if( @_ == 1 ) {
-               my $value = $_[0];
-               if( $value =~ /^#([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})$/ ) {
-                       my(@rgb) = map {oct("0x$_")/256} ($1,$2,$3);
-                       $self = bless { type => 'rgb', value => \@rgb }, $class;
-               } else {
-                       $self = bless { type => 'gray', value => $value }, $class;
-               }
+               new1($class, @_);
        } elsif( @_ == 3 ) {
-               my @rgb = @_;
-               $self = bless { type => 'rgb', value => \@rgb }, $class;
+               new3($class, @_);
        } else {
                croak "Color arguments must be one or three";
        }
+}
+
+sub new1 {
+       my($class, $value)
+               = PDFJ::Util::methodargs([qw(value)], @_);
+       #my $class = shift;
+       my $self;
+       if( ref($value) eq 'ARRAY' ) {
+               $self = bless { type => 'rgb', value => $value }, $class;
+       } elsif( $value =~ /^#([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})$/ ) {
+               my(@rgb) = map {oct("0x$_")/256} ($1,$2,$3);
+               $self = bless { type => 'rgb', value => \@rgb }, $class;
+       } else {
+               $self = bless { type => 'gray', value => $value }, $class;
+       }
        $self;
 }
 
+sub new3 {
+       my($class, @rgb) = @_;
+       bless { type => 'rgb', value => \@rgb }, $class;
+}
+
 sub fill {
        my($self) = @_;
        if( $self->{type} eq 'gray' ) {
-               "$self->{value} g ";
+               (number($self->{value}), "g");
        } else { # 'rgb'
-               my @rgb = @{$self->{value}};
-               "@rgb rg ";
+               (numbers(@{$self->{value}}), "rg");
        }
 }
 
 sub stroke {
        my($self) = @_;
        if( $self->{type} eq 'gray' ) {
-               "$self->{value} G ";
+               (number($self->{value}), "G");
        } else { # 'rgb'
-               my @rgb = @{$self->{value}};
-               "@rgb RG ";
+               (numbers(@{$self->{value}}), "RG");
+       }
+}
+
+sub numarray {
+       my($self) = @_;
+       if( $self->{type} eq 'gray' ) {
+               ($self->{value});
+       } else { # 'rgb'
+               @{$self->{value}};
        }
 }
 
 #--------------------------------------------------------------------------
 package PDFJ::ShapeStyle;
-use strict;
 use Carp;
+use strict;
+use PDFJ::Object;
 use vars qw(@ISA);
 @ISA = qw(PDFJ::Style);
 
@@ -3886,20 +5577,22 @@ sub SStyle { PDFJ::ShapeStyle->new(@_) }
 
 sub pdf {
        my($self) = @_;
-       my $result = "";
-       $result .= $self->{fillcolor}->fill if $self->{fillcolor};
-       $result .= $self->{strokecolor}->stroke if $self->{strokecolor};
-       $result .= "$self->{linewidth} w " if $self->{linewidth};
+       my @result;
+       push @result, $self->{fillcolor}->fill if $self->{fillcolor};
+       push @result, $self->{strokecolor}->stroke if $self->{strokecolor};
+       push @result, number($self->{linewidth}), "w" if $self->{linewidth};
        if( $self->{linedash} ) {
-               my($dash, $gap, $phase) = @{$self->{linedash}};
+               my($dash, $gap, $phase) = ref($self->{linedash}) eq 'ARRAY' ? 
+                       @{$self->{linedash}} : split(/\s*,\s*/, $self->{linedash});
                $phase ||= 0;
-               $result .= "[$dash $gap] $phase d ";
+               push @result, array([numbers($dash, $gap)]), number($phase), "d";
        }
-       $result;
+       @result;
 }
 
 #--------------------------------------------------------------------------
 package PDFJ::Shape;
+use PDFJ::Object;
 use Carp;
 use strict;
 use vars qw(@ISA);
@@ -3908,9 +5601,10 @@ use vars qw(@ISA);
 sub Shape { PDFJ::Shape->new(@_) }
 
 sub new {
-       my($class, $style) = @_;
+       my($class, $style)
+               = PDFJ::Util::methodargs([qw(style)], @_);
        my $self = bless 
-               { left => 0, top => 0, right => 0, bottom => 0, pdf => "" }, $class;
+               { left => 0, top => 0, right => 0, bottom => 0, pdf => [] }, $class;
        $self->style($style) if $style;
        $self;
 }
@@ -3926,15 +5620,21 @@ sub preskip { $_[0]->{style}{preskip} || 0 }
 sub postskip { $_[0]->{style}{postskip} || 0 }
 sub postnobreak { $_[0]->{style}{postnobreak} }
 sub float { $_[0]->{style}->{float} || "" }
-sub pdf { $_[0]->{pdf} }
+sub pdf { @{$_[0]->{pdf}} }
 
 sub size {
        my($self, $direction) = @_; 
        $direction eq 'H' ? $self->width : $self->height;
 }
 
+sub blockalign {  
+       my($self) = @_;
+       $self->{style}{blockalign};
+}
+
 sub setboundary {
-       my($self, $x, $y) = @_;
+       my($self, $x, $y)
+               = PDFJ::Util::methodargs([qw(x y)], @_);
        if( $x < $self->{left} ) {
                $self->{left} = $x;
        } elsif( $x > $self->{right} ) {
@@ -3945,12 +5645,12 @@ sub setboundary {
        } elsif( $y > $self->{top} ) {
                $self->{top} = $y;
        }
+       $self;
 }
 
 sub appendpdf {
-       my($self, $pdf) = @_;
-       $pdf .= " " unless $pdf =~ / $/;
-       $self->{pdf} .= $pdf;
+       my($self, @pdf) = @_;
+       push @{$self->{pdf}}, @pdf;
        $self;
 }
 
@@ -3980,15 +5680,18 @@ sub show_link {
        }
 }
 
+sub onshow { $_[0]->{style}{onshow} }
+
 sub _show {
        my($self, $page, $x, $y) = @_;
        $x += $self->padding;
        $y += $self->padding;
-       my $stylepdf = "";
+       my @stylepdf;
        if( $self->{style} ) {
-               $stylepdf = $self->{style}->pdf if UNIVERSAL::can($self->{style}, 'pdf');
+               @stylepdf = $self->{style}->pdf if UNIVERSAL::can($self->{style}, 'pdf');
        }
-       $page->addcontents("q 1 0 0 1 $x $y cm $stylepdf $self->{pdf}");
+       $page->addcontents("q", numbers(1, 0, 0, 1, $x, $y), 
+               "cm", @stylepdf, $self->pdf);
        if( $self->{objects} ) {
                for my $objspec(@{$self->{objects}}) {
                        my($obj, @args) = @$objspec;
@@ -4001,8 +5704,11 @@ sub _show {
 
 sub style {
        my($self, $style) = @_;
+       $style = PDFJ::ShapeStyle->new($style)
+               if $style && (!ref($style) || ref($style) eq 'HASH');
        croak "shape style argument must be a PDFJ::ShapeStyle object"
-               unless UNIVERSAL::isa($style, 'PDFJ::ShapeStyle');
+               unless PDFJ::Util::objisa($style, 'PDFJ::ShapeStyle');
+       $self->typename($style->{typename}) if $style->{typename} ne '';
        $self->{style} = $style;
        $self;
 }
@@ -4021,19 +5727,19 @@ sub gstatepop {
 
 sub linewidth {
        my($self, $w) = @_;
-       $self->appendpdf("$w w");
+       $self->appendpdf(number($w), "w");
 }
 
 sub linedash {
        my($self, $dash, $gap, $phase) = @_;
        $phase ||= 0;
-       $self->appendpdf("[$dash $gap] $phase d");
+       $self->appendpdf(array([numbers($dash, $gap)]), number($phase), "d");
 }
 
 sub ctm {
        my($self, @array) = @_;
        croak "ctm array must have 6 elements" unless @array == 6;
-       $self->appendpdf("@array cm");
+       $self->appendpdf(numbers(@array), "cm");
 }
 
 # Color operators
@@ -4041,35 +5747,35 @@ sub ctm {
 sub fillcolor {
        my($self, $color) = @_;
        croak "color argument must be a PDFJ::Color object"
-               unless UNIVERSAL::isa($color, 'PDFJ::Color');
+               unless PDFJ::Util::objisa($color, 'PDFJ::Color');
        $self->appendpdf($color->fill);
 }
 
 sub strokecolor {
        my($self, $color) = @_;
        croak "color argument must be a PDFJ::Color object"
-               unless UNIVERSAL::isa($color, 'PDFJ::Color');
+               unless PDFJ::Util::objisa($color, 'PDFJ::Color');
        $self->appendpdf($color->stroke);
 }
 
 sub fillgray {
        my($self, $g) = @_;
-       $self->appendpdf("$g g");
+       $self->appendpdf(number($g), "g");
 }
 
 sub strokegray {
        my($self, $g) = @_;
-       $self->appendpdf("$g G");
+       $self->appendpdf(number($g), "G");
 }
 
 sub fillrgb {
        my($self, $r, $g, $b) = @_;
-       $self->appendpdf("$r $g $b rg");
+       $self->appendpdf(numbers($r, $g, $b), "rg");
 }
 
 sub strokergb {
        my($self, $r, $g, $b) = @_;
-       $self->appendpdf("$r $g $b RG");
+       $self->appendpdf(numbers($r, $g, $b), "RG");
 }
 
 # Path segment operators
@@ -4078,7 +5784,7 @@ sub strokergb {
 sub moveto {
        my($self, $x, $y) = @_;
        $self->setboundary($x, $y);
-       $self->appendpdf("$x $y m");
+       $self->appendpdf(numbers($x, $y), "m");
 }
 
 # appends a straight line segment from the current point to (x, y).
@@ -4086,7 +5792,7 @@ sub moveto {
 sub lineto {
        my($self, $x, $y) = @_;
        $self->setboundary($x, $y);
-       $self->appendpdf("$x $y l");
+       $self->appendpdf(numbers($x, $y), "l");
 }
 
 # appends a Bezier curve to the path. The curve extends
@@ -4098,7 +5804,7 @@ sub curveto {
        $self->setboundary($x1, $y1);
        $self->setboundary($x2, $y2);
        $self->setboundary($x3, $y3);
-       $self->appendpdf("$x1 $y1 $x2 $y2 $x3 $y3 c");
+       $self->appendpdf(numbers($x1, $y1, $x2, $y2, $x3, $y3), "c");
 }
 
 # omit 'v' and 'y'
@@ -4108,7 +5814,7 @@ sub rectangle {
        my($self, $x, $y, $w, $h) = @_;
        $self->setboundary($x, $y);
        $self->setboundary($x + $w, $y + $h);
-       $self->appendpdf("$x $y $w $h re");
+       $self->appendpdf(numbers($x, $y, $w, $h), "re");
 }
 
 # closes the current subpath by appending a straight line segment
@@ -4142,6 +5848,12 @@ sub fill {
        $self->appendpdf("f");
 }
 
+# fill and stroke
+sub fillstroke {
+       my $self = shift;
+       $self->appendpdf("B");
+}
+
 # fills the path using the even-odd rule
 sub fill2 {
        my $self = shift;
@@ -4151,15 +5863,18 @@ sub fill2 {
 # Path macro
 
 sub line {
-       my($self, $x, $y, $w, $h, $style) = @_;
-       my $stylepdf;
-       $stylepdf = $style->pdf if $style;
+       my($self, $x, $y, $w, $h, $style)
+               = PDFJ::Util::methodargs([qw(x y w h style)], @_);
+       $style = PDFJ::ShapeStyle->new($style)
+               if $style && (!ref($style) || ref($style) eq 'HASH');
+       my @stylepdf;
+       @stylepdf = $style->pdf if $style;
        my($x1, $y1, $x2, $y2) = ($x, $y, $x + $w, $y + $h);
        $self->setboundary($x1, $y1);
        $self->setboundary($x2, $y2);
-       $self->appendpdf("q $stylepdf") if $stylepdf;
-       $self->appendpdf("$x1 $y1 m $x2 $y2 l S");
-       $self->appendpdf("Q") if $stylepdf;
+       $self->appendpdf("q", @stylepdf) if @stylepdf;
+       $self->appendpdf(numbers($x1, $y1), "m", numbers($x2, $y2), "l S");
+       $self->appendpdf("Q") if @stylepdf;
        $self;
 }
 
@@ -4188,10 +5903,13 @@ sub textrline {
 }
 
 sub box {
-       my($self, $x, $y, $w, $h, $spec, $style) = @_;
+       my($self, $x, $y, $w, $h, $spec, $style)
+               = PDFJ::Util::methodargs([qw(x y w h spec style)], @_);
        $spec = "s" unless $spec;
-       my $stylepdf;
-       $stylepdf = $style->pdf if $style;
+       $style = PDFJ::ShapeStyle->new($style)
+               if $style && (!ref($style) || ref($style) eq 'HASH');
+       my @stylepdf;
+       @stylepdf = $style->pdf if $style;
        my($r);
        if( $spec =~ s/r(\d+)// ) {
                $r = $1;
@@ -4207,31 +5925,31 @@ sub box {
        $self->setboundary($x, $y);
        $self->setboundary($x + $w, $y + $h);
        if( $spec ne 'n' ) {
-               $self->appendpdf("q $stylepdf") if $stylepdf;
+               $self->appendpdf("q", @stylepdf) if @stylepdf;
                if( $r ) {
                        my $bz = $r * 0.55228475;
                        my @work = (
-                               $x+$w,        $y+$h-$r,      'm',
-                               $x+$w,        $y+$h-$r+$bz,
-                               $x+$w-$r+$bz, $y+$h,
-                               $x+$w-$r,     $y+$h,         'c',
-                               $x+$r,        $y+$h,         'l',
-                               $x+$r-$bz,    $y+$h,
-                               $x,           $y+$h-$r+$bz,
-                               $x,           $y+$h-$r,      'c',
-                               $x,           $y+$r,         'l',
-                               $x,           $y+$r-$bz,
-                               $x+$r-$bz,    $y,
-                               $x+$r,        $y,            'c',
-                               $x+$w-$r,     $y,            'l',
-                               $x+$w-$r+$bz, $y,
-                               $x+$w,        $y+$r-$bz,
-                               $x+$w,        $y+$r,         'c',
-                               $x+$w,        $y+$h-$r,      'l'
+                               numbers($x+$w,        $y+$h-$r),      'm',
+                               numbers($x+$w,        $y+$h-$r+$bz),
+                               numbers($x+$w-$r+$bz, $y+$h),
+                               numbers($x+$w-$r,     $y+$h),         'c',
+                               numbers($x+$r,        $y+$h),         'l',
+                               numbers($x+$r-$bz,    $y+$h),
+                               numbers($x,           $y+$h-$r+$bz),
+                               numbers($x,           $y+$h-$r),      'c',
+                               numbers($x,           $y+$r),         'l',
+                               numbers($x,           $y+$r-$bz),
+                               numbers($x+$r-$bz,    $y),
+                               numbers($x+$r,        $y),            'c',
+                               numbers($x+$w-$r,     $y),            'l',
+                               numbers($x+$w-$r+$bz, $y),
+                               numbers($x+$w,        $y+$r-$bz),
+                               numbers($x+$w,        $y+$r),         'c',
+                               numbers($x+$w,        $y+$h-$r),      'l'
                        );
-                       $self->appendpdf("@work ");
+                       $self->appendpdf(@work);
                } else {
-                       $self->appendpdf("$x $y m $x $y $w $h re ");
+                       $self->appendpdf(numbers($x, $y), "m", numbers($x, $y, $w, $h), "re");
                }
                if( $spec eq 'sf' ) {
                        $self->appendpdf("B");
@@ -4256,7 +5974,7 @@ sub box {
                } else {
                        croak "illegal strokefill argument: $spec";
                }
-               $self->appendpdf("Q") if $stylepdf;
+               $self->appendpdf("Q") if @stylepdf;
        }
        if( $style && $style->{link} ) {
                $self->add_link([$x, $y, $x + $w, $y + $h], $style->{link});
@@ -4289,16 +6007,20 @@ sub textbox {
 }
 
 sub circle {
-       my($self, $x, $y, $r, $spec, $arcarea, $style) = @_;
+       my($self, $x, $y, $r, $spec, $arcarea, $style)
+               = PDFJ::Util::methodargs([qw(x y r spec arcarea style)], @_);
        $self->ellipse($x, $y, $r, $r, $spec, $arcarea, $style);
 }
 
 sub ellipse {
-       my($self, $x, $y, $xr, $yr, $spec, $arcarea, $style) = @_;
+       my($self, $x, $y, $xr, $yr, $spec, $arcarea, $style)
+               = PDFJ::Util::methodargs([qw(x y xr yr spec arcarea style)], @_);
        $spec = "s" unless $spec;
-       my $stylepdf;
-       $stylepdf = $style->pdf if $style;
-       $self->appendpdf("q $stylepdf") if $stylepdf;
+       $style = PDFJ::ShapeStyle->new($style)
+               if $style && (!ref($style) || ref($style) eq 'HASH');
+       my @stylepdf;
+       @stylepdf = $style->pdf if $style;
+       $self->appendpdf("q", @stylepdf) if @stylepdf;
        my $xbz = $xr * 0.55228475;
        my $ybz = $yr * 0.55228475;
        my @pt = (
@@ -4313,16 +6035,21 @@ sub ellipse {
                $arcarea %= 4;
                $self->setboundary(@pt[$arcarea * 6, $arcarea * 6 + 1]);
                $self->setboundary(@pt[$arcarea * 6 + 6, $arcarea * 6 + 7]);
-               $self->appendpdf(join(' ',splice(@pt, $arcarea * 6, 2))." m ");
-               $self->appendpdf(join(' ',splice(@pt, $arcarea * 6, 6))." c ");
+               if( $spec =~ /f/ ) {
+                       $self->appendpdf(numbers($x, $y), "m");
+                       $self->appendpdf(numbers(splice(@pt, $arcarea * 6, 2)), "l");
+               } else {
+                       $self->appendpdf(numbers(splice(@pt, $arcarea * 6, 2)), "m");
+               }
+               $self->appendpdf(numbers(splice(@pt, $arcarea * 6, 6)), "c");
        } else {
                $self->setboundary($x - $xr, $y - $yr);
                $self->setboundary($x + $xr, $y + $yr);
-               $self->appendpdf(join(' ',splice(@pt, 0, 2))." m ");
-               $self->appendpdf(join(' ',splice(@pt, 0, 6))." c ");
-               $self->appendpdf(join(' ',splice(@pt, 0, 6))." c ");
-               $self->appendpdf(join(' ',splice(@pt, 0, 6))." c ");
-               $self->appendpdf(join(' ',splice(@pt, 0, 6))." c ");
+               $self->appendpdf(numbers(splice(@pt, 0, 2)), "m");
+               $self->appendpdf(numbers(splice(@pt, 0, 6)), "c");
+               $self->appendpdf(numbers(splice(@pt, 0, 6)), "c");
+               $self->appendpdf(numbers(splice(@pt, 0, 6)), "c");
+               $self->appendpdf(numbers(splice(@pt, 0, 6)), "c");
        }
        if( $spec eq 'sf' ) {
                $self->appendpdf("B");
@@ -4331,25 +6058,29 @@ sub ellipse {
        } elsif( $spec eq 'f' ) {
                $self->appendpdf("f");
        }
-       $self->appendpdf("Q") if $stylepdf;
+       $self->appendpdf("Q") if @stylepdf;
        $self;
 }
 
 sub polygon {
-       my($self, $coords, $spec, $style) = @_;
+       my($self, $coords, $spec, $style)
+               = PDFJ::Util::methodargs([qw(coords spec style)], @_);
        croak "coords argument must be an array ref"
                unless ref($coords) eq 'ARRAY';
        croak "coords argument must have even elements"
                if @$coords % 2;
        my @work;
        for( my $j = 0; $j < @$coords; $j += 2 ) {
-               push @work, $coords->[$j], $coords->[$j + 1];
+               push @work, numbers($coords->[$j], $coords->[$j + 1]);
                push @work, ($j == 0) ? 'm' : 'l';
+               $self->setboundary($coords->[$j], $coords->[$j + 1]);
        }
-       my $stylepdf;
-       $stylepdf = $style->pdf if $style;
-       $self->appendpdf("q $stylepdf") if $stylepdf;
-       $self->appendpdf("@work ");
+       $style = PDFJ::ShapeStyle->new($style)
+               if $style && (!ref($style) || ref($style) eq 'HASH');
+       my @stylepdf;
+       @stylepdf = $style->pdf if $style;
+       $self->appendpdf("q", @stylepdf) if @stylepdf;
+       $self->appendpdf(@work);
        if( $spec eq 'sf' ) {
                $self->appendpdf("B");
        } elsif( $spec eq 's' ) {
@@ -4357,16 +6088,238 @@ sub polygon {
        } elsif( $spec eq 'f' ) {
                $self->appendpdf("f");
        }
-       $self->appendpdf("Q") if $stylepdf;
+       $self->appendpdf("Q") if @stylepdf;
+       $self;
+}
+
+sub arc {
+       my($self, $x, $y, $r, $start, $end, $spec, $style)
+               = PDFJ::Util::methodargs([qw(x y r start end spec style)], @_);
+       croak "same start and end for arc" if $start == $end;
+       $spec = "s" unless $spec;
+       $style = PDFJ::ShapeStyle->new($style)
+               if $style && (!ref($style) || ref($style) eq 'HASH');
+       my @stylepdf;
+       @stylepdf = $style->pdf if $style;
+       $self->appendpdf("q", @stylepdf) if @stylepdf;
+       ($start, $end) = ($end, $start) if $start > $end;
+       my($x0, $y0) = ($x + $r * cos($start), $y + $r * sin($start));
+       my $ws = $start;
+       my @coords;
+       while( $ws < $end ) {
+               my $we = $ws + 1 < $end ? $ws + 1 : $end;
+               my $a = $we - $ws;
+               my $as = atan2(4 - 4 * cos($a / 2), 3 * sin($a / 2));
+               my $rs = $r / cos($as);
+               my($x1, $y1) = ($x + $rs * cos($ws + $as), $y + $rs * sin($ws + $as));
+               my($x2, $y2) = ($x + $rs * cos($we - $as), $y + $rs * sin($we - $as));
+               my($x3, $y3) = ($x + $r * cos($we), $y + $r * sin($we));
+               push @coords, [$x1, $y1, $x2, $y2, $x3, $y3];
+               $ws = $we;
+       }
+       if( $spec ne 'a' ) {
+               $self->moveto($x, $y);
+               $self->lineto($x0, $y0);
+       } else {
+               $self->moveto($x0, $y0);
+       }
+       for my $coords(@coords) {
+               $self->curveto(@$coords);
+       }
+       if( $spec ne 'a' ) {
+               $self->lineto($x, $y);
+       }
+       if( $spec eq 'f' ) {
+               $self->fill;
+       } elsif( $spec eq 'a' || $spec eq 's' ) {
+               $self->stroke;
+       } elsif( $spec eq 'sf' ) {
+               $self->fillstroke;
+       }
+       $self->appendpdf("Q") if @stylepdf;
        $self;
 }
 
 sub obj {
-       my($self, $obj, @showargs) = @_;
-       $self->appendobj($obj, @showargs);
+       my($self, $obj, $showargs)
+               = PDFJ::Util::listargs2ref(2, 0, 
+                       PDFJ::Util::methodargs([qw(obj showargs)], @_));
+       my($x, $y, $align, @trans) = @$showargs;
+       my @m = PDFJ::Util::transmatrix($x, $y, @trans);
+       if( $align ) {
+               if( $align =~ /l/ ) {
+                       $x -= $obj->left;
+               } elsif( $align =~ /r/ ) {
+                       $x -= $obj->right;
+               } elsif( $align =~ /c/ ) {
+                       $x -= ($obj->left + $obj->right) / 2;
+               }
+               if( $align =~ /t/ ) {
+                       $y -= $obj->top;
+               } elsif( $align =~ /b/ ) {
+                       $y -= $obj->bottom;
+               } elsif( $align =~ /m/ ) {
+                       $y -= ($obj->top + $obj->bottom) / 2;
+               }
+       }
+       my @pts = (
+               [$x + $obj->left, $y + $obj->top],
+               [$x + $obj->right, $y + $obj->bottom],
+               );
+       if( @m ) {
+               @pts = map {[$m[0] * $_->[0] + $m[2] * $_->[1] + $m[4], 
+                       $m[1] * $_->[0] + $m[3] * $_->[1] + $m[5]]} @pts;
+       }
+       for(@pts) {
+               $self->setboundary($_->[0], $_->[1]);
+       }
+       $self->appendobj($obj, @$showargs);
+       $self;
+}
+
+#--------------------------------------------------------------------------
+package PDFJ::MiniPage;
+use PDFJ::Object;
+use Carp;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Showable);
+
+sub new {
+       my($class, $docobj, $width, $height, $padding, $opacity) = @_;
+       my $num = $docobj->_nextxobjnum;
+       my $name = "X$num";
+       my $xobject = $docobj->indirect(contents_stream(dictionary => {
+               Type => name('XObject'),
+               Subtype => name('Form'),
+               FormType => 1,
+               Name => name($name),
+               BBox => [0, 0, $width, $height],
+               Matrix => [1, 0, 0, 1, 0, 0],
+               Resources => {ProcSet => [name('PDF'), name('Text')], Font => {}},
+               }, stream => []));
+       if( $opacity ne '' ) {
+               $xobject->dictionary->get('Resources')->set(ExtGState => {R0 => 
+                       {Type => name('ExtGState'), CA => $opacity, ca => $opacity,
+                       AIS => bool(0)}});
+               $xobject->append("/R0 gs ");
+       }
+       $docobj->_registxobj($name, $xobject);
+       my $self = bless {
+               name => $name, 
+               xobject => $xobject, 
+               width => $width,
+               height => $height, 
+               padding => $padding, 
+               docobj => $docobj, 
+               layer => 0,
+               opacity => $opacity,
+               }, $class;
+       $self;
+}
+
+sub xobject { $_[0]->{xobject} }
+
+sub width { $_[0]->{width} + $_[0]->padding * 2 }
+sub height { $_[0]->{height} + $_[0]->padding * 2 }
+sub padding { $_[0]->{padding} || 0 }
+sub left { 0 }
+sub right { $_[0]->width }
+sub top { $_[0]->height }
+sub bottom { 0 }
+
+sub size {
+       my($self, $direction) = @_; 
+       $direction eq 'H' ? $self->width : $self->height;
+}
+
+sub setpadding {
+       my($self, $padding) = @_;
+       $self->{padding} = $padding;
+}
+
+sub onshow {}
+
+sub _show {
+       my($self, $page, $x, $y) = @_;
+       $x += $self->padding;
+       $y += $self->padding;
+       my $width = $self->{width};
+       my $height = $self->{height};
+       my $name = $self->{name};
+       $page->addcontents("q", numbers(1, 0, 0, 1, $x, $y), 
+               "cm /$name Do Q");
+       $page->usexobject($self);
+}
+
+sub docobj {
+       my($self) = @_;
+       $self->{docobj};
+}
+
+sub getlayer {
+       my($self) = @_;
+       $self->{layer};
+}
+
+sub addcontents {
+       my($self, @str) = @_;
+       #my @tmp = map {($_, " ")} @str;
+       my @tmp;
+       my $lasttype;
+       for my $str(@str) {
+               my $type = ref($str) ? '' :
+                       ($str =~ /^\(/ && $str =~ /\)$/) ? 'l' :
+                       ($str =~ /^</ && $str =~ />$/) ? 'h' : '';
+               if( $type && $type eq $lasttype ) {
+                       $tmp[$#tmp] = substr($tmp[$#tmp], 0, length($tmp[$#tmp]) - 1) . 
+                               substr($str, 1);
+               } else {
+                       push @tmp, " " if @tmp;
+                       push @tmp, $str;
+               }
+               $lasttype = $type;
+       }
+       push @tmp, " " if @tmp;
+       $self->xobject->append(\@tmp, $self->getlayer);
+}
+
+sub layer {
+       my($self, $layer)
+               = PDFJ::Util::methodargs([qw(layer)], @_);
+       $self->{layer} = $layer;
        $self;
 }
 
+sub setattr {}
+sub dest {}
+sub add_link {}
+
+sub usefonts {
+       my($self, @names) = @_;
+       my $docobj = $self->docobj;
+       $docobj->_usefonts(@names);
+       my $resources = $self->xobject->dictionary->get('Resources');
+       for my $name(@names) {
+               $resources->get('Font')->set($name, $docobj->_font($name));
+       }
+}
+
+sub useimage {
+       my($self, $imageobj) = @_;
+       my $resources = $self->xobject->dictionary->get('Resources');
+       $resources->get('ProcSet')->add(name('ImageC'));
+       $resources->set(XObject => {}) unless $resources->exists('XObject');
+       $resources->get('XObject')->set($imageobj->{name}, $imageobj->{image});
+}
+
+sub usexobject {
+       my($self, $xobj) = @_;
+       my $resources = $self->xobject->dictionary->get('Resources');
+       $resources->set(XObject => {}) unless $resources->exists('XObject');
+       $resources->get('XObject')->set($xobj->{name}, $xobj->{xobject});
+}
+
 #--------------------------------------------------------------------------
 package PDFJ::Page;
 use Carp;
@@ -4374,10 +6327,10 @@ use strict;
 use PDFJ::Object;
 
 sub new {
-       my($class, $docobj, $pagewidth, $pageheight) = @_;
+       my($class, $docobj, $pos, $pagewidth, $pageheight, $dur, $trans) = @_;
        my $pagetree = $docobj->{pagetree};
-       $pagewidth ||= $docobj->{pagewidth};
-       $pageheight ||= $docobj->{pageheight};
+       $pagewidth ||= $docobj->pagewidth;
+       $pageheight ||= $docobj->pageheight;
        my $page = $docobj->indirect(dictionary({
                Type => name('Page'),
                Parent => $pagetree,
@@ -4386,9 +6339,38 @@ sub new {
                Contents => $docobj->indirect(
                        contents_stream(dictionary => {}, stream => [])),
                }));
-       push @{$docobj->{pagelist}}, $page;
-       my $pagenum = @{$docobj->{pagelist}};
-       $pagetree->get('Kids')->push($page);
+       if( $dur ) {
+               $page->set(Dur => $dur);
+       }
+       if( $trans ) {
+               my($d, $s, @opts) = split /\s*,\s*/, $trans;
+               my $transobj = dictionary({
+                       Type => name('Trans'),
+                       D => $d,
+                       S => name($s),
+               });
+               for my $opt(@opts) {
+                       if( $opt eq 'H' || $opt eq 'V' ) {
+                               $transobj->set(Dm => name($opt));
+                       } elsif( $opt eq 'I' || $opt eq 'O' ) {
+                               $transobj->set(M => name($opt));
+                       } elsif( $opt =~ /^\d+$/ ) {
+                               $transobj->set(Di => $opt);
+                       }
+               }
+               $page->set(Trans => $transobj);
+       }
+       my $pagenum;
+       $pos = -1 if $pos >= @{$docobj->{pagelist}};
+       if( $pos >= 0 ) {
+               splice @{$docobj->{pagelist}}, $pos, 0, $page;
+               $pagenum = $pos + 1;
+               $pagetree->get('Kids')->insert($pos, $page);
+       } else {
+               push @{$docobj->{pagelist}}, $page;
+               $pagenum = @{$docobj->{pagelist}};
+               $pagetree->get('Kids')->push($page);
+       }
        $pagetree->get('Count')->add(1);
        my $self = bless {
                page => $page, 
@@ -4397,10 +6379,22 @@ sub new {
                docobj => $docobj, 
                layer => 0,
        }, $class;
-       push @{$docobj->{pageobjlist}}, $self;
+       if( $pos >= 0 ) {
+               splice @{$docobj->{pageobjlist}}, $pos, 0, $self;
+               for( my $j = $pos + 1; $j < @{$docobj->{pageobjlist}}; $j++ ) {
+                       $docobj->{pageobjlist}[$j]{pagenum}++;
+               }
+       } else {
+               push @{$docobj->{pageobjlist}}, $self;
+       }
        $self;
 }
 
+sub show {
+       my($self, $obj, @args) = @_;
+       $obj->show($self, @args);
+}
+
 sub docobj {
        my($self) = @_;
        $self->{docobj};
@@ -4422,20 +6416,50 @@ sub getlayer {
 }
 
 sub addcontents {
-       my($self, $str) = @_;
-       $str .= " " unless $str =~ / $/;
-       $self->page->get('Contents')->append($str, $self->getlayer);
+       my($self, @str) = @_;
+       #my @tmp = map {($_, " ")} @str;
+       my @tmp;
+       my $lasttype;
+       for my $str(@str) {
+               my $type = ref($str) ? '' :
+                       ($str =~ /^\(/ && $str =~ /\)$/) ? 'l' :
+                       ($str =~ /^</ && $str =~ />$/) ? 'h' : '';
+               if( $type && $type eq $lasttype ) {
+                       $tmp[$#tmp] = substr($tmp[$#tmp], 0, length($tmp[$#tmp]) - 1) . 
+                               substr($str, 1);
+               } else {
+                       push @tmp, " " if @tmp;
+                       push @tmp, $str;
+               }
+               $lasttype = $type;
+       }
+       push @tmp, " " if @tmp;
+       $self->page->get('Contents')->append(\@tmp, $self->getlayer);
 }
 
 sub layer {
-       my($self, $layer) = @_;
+       my($self, $layer)
+               = PDFJ::Util::methodargs([qw(layer)], @_);
        $self->{layer} = $layer;
        $self;
 }
 
+sub setattr {
+       my($self, $name, $value)
+               = PDFJ::Util::methodargs([qw(name value)], @_);
+       $self->{attr}{$name} = $value;
+}
+
+sub getattr {
+       my($self, $name)
+               = PDFJ::Util::methodargs([qw(name)], @_);
+       $self->{attr}{$name};
+}
+
 sub usefonts {
        my($self, @names) = @_;
        my $docobj = $self->docobj;
+       $docobj->_usefonts(@names);
        my $resources = $self->page->get('Resources');
        for my $name(@names) {
                $resources->get('Font')->set($name, $docobj->_font($name));
@@ -4450,6 +6474,13 @@ sub useimage {
        $resources->get('XObject')->set($imageobj->{name}, $imageobj->{image});
 }
 
+sub usexobject {
+       my($self, $xobj) = @_;
+       my $resources = $self->page->get('Resources');
+       $resources->set(XObject => {}) unless $resources->exists('XObject');
+       $resources->get('XObject')->set($xobj->{name}, $xobj->{xobject});
+}
+
 sub dest {
        my($self, $argtype, @args) = @_;
        array([$self->page, name($argtype), map {$_ eq '' ? null : $_} @args]);
@@ -4461,13 +6492,19 @@ sub add_link {
 }
 
 sub add_annot {
-       my($self, %spec) = @_;
-       $spec{Type} = name('Annot');
+       my $self = shift;
+       my $hash;
+       if( @_ == 1 && ref($_[0]) eq 'HASH' ) {
+               $hash = $_[0];
+       } else {
+               %$hash = @_;
+       }
+       $hash->{Type} = name('Annot');
        my $docobj = $self->docobj;
        unless( $self->page->exists('Annots') ) {
                $self->page->set(Annots => []);
        }
-       $self->page->get('Annots')->push($docobj->indirect(dictionary(\%spec)));
+       $self->page->get('Annots')->push($docobj->indirect(dictionary($hash)));
 }
 
 sub solve_link {
@@ -4476,7 +6513,16 @@ sub solve_link {
        for my $rect(keys %{$self->{link}}) {
                my $name = $self->{link}{$rect};
                my @rect = split(',', $rect);
-               if( $name =~ /^URI:(.+)/ ) {
+               if( ref($name) eq 'ARRAY' ) {
+                       my($page, $x, $y) = @$name;
+                       my $dest = $page->dest('XYZ', $x, $y, 0);
+                       $self->add_annot(
+                               Subtype => name('Link'),
+                               Rect => [@rect],
+                               Border => [0,0,0],
+                               Dest => $dest,
+                       );
+               } elsif( $name =~ /^URI:(.+)/ ) {
                        my $uri = $1;
                        $self->add_annot(
                                Subtype => name('Link'),
@@ -4488,15 +6534,35 @@ sub solve_link {
                                        URI => string(PDFJ::Util::uriencode($uri))
                                },
                        );
-               } else {
-                       my $dest = $docobj->dest($name)
-                               or croak "missing dest '$name'";
+               } elsif( $name =~ /^PAGE:\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/ ) {
+                       my($pagenum, $x, $y) = ($1, $2, $3);
+                       my $page = $docobj->get_page($pagenum - 1);
+                       my $dest = $page->dest('XYZ', $x, $y, 0);
                        $self->add_annot(
                                Subtype => name('Link'),
                                Rect => [@rect],
                                Border => [0,0,0],
                                Dest => $dest,
                        );
+               } else {
+                       my $dest = $docobj->dest($name);
+                       if( $dest ) {
+                               if( ref($dest) eq 'ARRAY' ) {
+                                       $dest = $$dest[$#$dest];
+                               }
+                               $self->add_annot(
+                                       Subtype => name('Link'),
+                                       Rect => [@rect],
+                                       Border => [0,0,0],
+                                       Dest => $dest,
+                               );
+                       } elsif( $docobj->getoption('missdest') eq 'neglect' ) {
+                               # do nothing
+                       } elsif( $docobj->getoption('missdest') eq 'carp' ) {
+                               carp "missing dest '$name'\n";
+                       } else {
+                               croak "missing dest '$name'\n";
+                       }
                }
        }
 }
@@ -4507,15 +6573,22 @@ use strict;
 use PDFJ::Object;
 
 sub new {
-       my($class, $version, $handle, $objtable, $rootobj) = @_;
-       binmode $handle;
+       my($class, $version, $handle, $objtable, $rootobj, $idobj, $infoobj, 
+               $encryptobj, $encryptkey, $filter) = @_;
+       binmode $handle unless PDFJ::Util::objisa($handle, 'IO::Scalar');
        bless {
                version => $version,  # PDF version
                handle => $handle,    # file handle
                objtable => $objtable,  # PDFJ::ObjTable object
-               rootobj => $rootobj,  # document catalog object
+               rootobj => $rootobj,  # document catalog object for Root entry
+               idobj => $idobj,      # file ID array object for ID entry
+               infoobj => $infoobj,  # document information object for Info entry
+               encryptobj => $encryptobj, # encryption object for Encrypt entry
+               encryptkey => $encryptkey,
+               filter => $filter,
                objposlist => [], 
-               xrefpos => 0
+               xrefpos => 0,
+               tell => 0
        }, $class;
 }
 
@@ -4531,24 +6604,34 @@ sub print_header {
        my $self = shift;
        my $handle = $self->{handle};
        my $version = $self->{version};
-       print $handle "%PDF-$version\n";
+       #print $handle "%PDF-$version\n";
+       my $header = "%PDF-$version\n";
+       $self->{tell} += length($header);
+       print $handle $header;
 }
 
 sub print_body {
        my $self = shift;
        my $handle = $self->{handle};
+       my $encryptkey = $self->{encryptkey};
+       my $filter = $self->{filter};
        my $objtable = $self->{objtable};
        return unless $objtable->lastobjnum;
        for my $objnum(1 .. $objtable->lastobjnum) {
-               $self->{objposlist}->[$objnum] = $handle->tell;
-               $objtable->get($objnum)->print($handle);
+               next if $objtable->get($objnum)->unused;
+#              $self->{objposlist}->[$objnum] = $handle->tell;
+#              $objtable->get($objnum)->print($handle);
+               $self->{objposlist}->[$objnum] = $self->{tell};
+               $self->{tell} += $objtable->get($objnum)->
+                       print($handle, $encryptkey, $filter);
        }
 }
 
 sub print_xref {
        my $self = shift;
        my $handle = $self->{handle};
-       $self->{xrefpos} = $handle->tell;
+#      $self->{xrefpos} = $handle->tell;
+       $self->{xrefpos} =  $self->{tell};
        print $handle "xref\n";
        my $objtable = $self->{objtable};
        my $lastobjnum = $objtable->lastobjnum;
@@ -4574,356 +6657,11 @@ sub print_trailer {
                Size => $objtable->lastobjnum + 1, 
                Root => $self->{rootobj}
                });
+       $traildic->set(Info => $self->{infoobj}) if $self->{infoobj};
+       $traildic->set(Encrypt => $self->{encryptobj}) if $self->{encryptobj};
+       $traildic->set(ID => $self->{idobj}) if $self->{idobj};
        print $handle "trailer\n", $traildic->output, 
                "\nstartxref\n$xrefpos\n%%EOF\n";
 }
 
-#--------------------------------------------------------------------------
-package PDFJ::ObjTable;
-use strict;
-
-sub new {
-       my($class) = @_;
-       bless {objlist => [undef]}, $class;
-}
-
-sub lastobjnum {
-       my $self = shift;
-       $#{$self->{objlist}};
-}
-
-sub get {
-       my($self, $idx) = @_;
-       $self->{objlist}->[$idx];
-}
-
-sub set {
-       my($self, $idx, $obj) = @_;
-       $self->{objlist}->[$idx] = $obj;
-}
-
 1;
-#--------------------------------------------------------------------------
-# for SelfLoader in PDFJ::AFont
-package PDFJ::AFont;
-__DATA__
-sub fontwidth_Courier { [
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600
-] }
-sub fontwidth_Courier_Bold { [
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600
-] }
-sub fontwidth_Courier_BoldOblique { [
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600
-] }
-sub fontwidth_Courier_Oblique { [
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-       600,  600,  600
-] }
-sub fontwidth_Helvetica { [
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  355,  556,  556,  889,  667,  221,  333,  333,  389,  584,
-       278,  333,  278,  278,  556,  556,  556,  556,  556,  556,  556,
-       556,  556,  556,  278,  278,  584,  584,  584,  556, 1015,  667,
-       667,  722,  722,  667,  611,  778,  722,  278,  500,  667,  556,
-       833,  722,  778,  667,  778,  722,  667,  611,  722,  667,  944,
-       667,  667,  611,  278,  278,  278,  469,  556,  222,  556,  556,
-       500,  556,  556,  278,  556,  556,  222,  222,  500,  222,  833,
-       556,  556,  556,  556,  333,  500,  278,  556,  500,  722,  500,
-       500,  500,  334,  260,  334,  584,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  333,  556,  556,  167,
-       556,  556,  556,  556,  191,  333,  556,  333,  333,  500,  500,
-       278,  556,  556,  556,  278,  278,  537,  350,  222,  333,  333,
-       556, 1000, 1000,  278,  611,  278,  333,  333,  333,  333,  333,
-       333,  333,  333,  278,  333,  333,  278,  333,  333,  333, 1000,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278, 1000,  278,  370,  278,  278,  278,
-       278,  556,  778, 1000,  365,  278,  278,  278,  278,  278,  889,
-       278,  278,  278,  278,  278,  278,  222,  611,  944,  611,  278,
-       278,  278,  278
-] }
-sub fontwidth_Helvetica_Bold { [
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       333,  474,  556,  556,  889,  722,  278,  333,  333,  389,  584,
-       278,  333,  278,  278,  556,  556,  556,  556,  556,  556,  556,
-       556,  556,  556,  333,  333,  584,  584,  584,  611,  975,  722,
-       722,  722,  722,  667,  611,  778,  722,  278,  556,  722,  611,
-       833,  722,  778,  667,  778,  722,  667,  611,  722,  667,  944,
-       667,  667,  611,  333,  278,  333,  584,  556,  278,  556,  611,
-       556,  611,  556,  333,  611,  611,  278,  278,  556,  278,  889,
-       611,  611,  611,  611,  389,  556,  333,  611,  556,  778,  556,
-       556,  500,  389,  280,  389,  584,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  333,  556,  556,  167,
-       556,  556,  556,  556,  238,  500,  556,  333,  333,  611,  611,
-       278,  556,  556,  556,  278,  278,  556,  350,  278,  500,  500,
-       556, 1000, 1000,  278,  611,  278,  333,  333,  333,  333,  333,
-       333,  333,  333,  278,  333,  333,  278,  333,  333,  333, 1000,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278, 1000,  278,  370,  278,  278,  278,
-       278,  611,  778, 1000,  365,  278,  278,  278,  278,  278,  889,
-       278,  278,  278,  278,  278,  278,  278,  611,  944,  611,  278,
-       278,  278,  278
-] }
-sub fontwidth_Helvetica_BoldOblique { [
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       333,  474,  556,  556,  889,  722,  278,  333,  333,  389,  584,
-       278,  333,  278,  278,  556,  556,  556,  556,  556,  556,  556,
-       556,  556,  556,  333,  333,  584,  584,  584,  611,  975,  722,
-       722,  722,  722,  667,  611,  778,  722,  278,  556,  722,  611,
-       833,  722,  778,  667,  778,  722,  667,  611,  722,  667,  944,
-       667,  667,  611,  333,  278,  333,  584,  556,  278,  556,  611,
-       556,  611,  556,  333,  611,  611,  278,  278,  556,  278,  889,
-       611,  611,  611,  611,  389,  556,  333,  611,  556,  778,  556,
-       556,  500,  389,  280,  389,  584,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  333,  556,  556,  167,
-       556,  556,  556,  556,  238,  500,  556,  333,  333,  611,  611,
-       278,  556,  556,  556,  278,  278,  556,  350,  278,  500,  500,
-       556, 1000, 1000,  278,  611,  278,  333,  333,  333,  333,  333,
-       333,  333,  333,  278,  333,  333,  278,  333,  333,  333, 1000,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278, 1000,  278,  370,  278,  278,  278,
-       278,  611,  778, 1000,  365,  278,  278,  278,  278,  278,  889,
-       278,  278,  278,  278,  278,  278,  278,  611,  944,  611,  278,
-       278,  278,  278
-] }
-sub fontwidth_Helvetica_Oblique { [
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  355,  556,  556,  889,  667,  222,  333,  333,  389,  584,
-       278,  333,  278,  278,  556,  556,  556,  556,  556,  556,  556,
-       556,  556,  556,  278,  278,  584,  584,  584,  556, 1015,  667,
-       667,  722,  722,  667,  611,  778,  722,  278,  500,  667,  556,
-       833,  722,  778,  667,  778,  722,  667,  611,  722,  667,  944,
-       667,  667,  611,  278,  278,  278,  469,  556,  222,  556,  556,
-       500,  556,  556,  278,  556,  556,  222,  222,  500,  222,  833,
-       556,  556,  556,  556,  333,  500,  278,  556,  500,  722,  500,
-       500,  500,  334,  260,  334,  584,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278,  278,  278,  333,  556,  556,  167,
-       556,  556,  556,  556,  191,  333,  556,  333,  333,  500,  500,
-       278,  556,  556,  556,  278,  278,  537,  350,  222,  333,  333,
-       556, 1000, 1000,  278,  611,  278,  333,  333,  333,  333,  333,
-       333,  333,  333,  278,  333,  333,  278,  333,  333,  333, 1000,
-       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
-       278,  278,  278,  278,  278, 1000,  278,  370,  278,  278,  278,
-       278,  556,  778, 1000,  365,  278,  278,  278,  278,  278,  889,
-       278,  278,  278,  278,  278,  278,  222,  611,  944,  611,  278,
-       278,  278,  278
-] }
-# The chracter #39 (single quote) in Times-* fonts has 333 width
-# in afm files. But Acrobat uses a width nallower than it. I use an 
-# experimental value 222.
-sub fontwidth_Times_Bold { [
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-#      333,  555,  500,  500, 1000,  833,  333,  333,  333,  500,  570,
-       333,  555,  500,  500, 1000,  833,  222,  333,  333,  500,  570,
-       250,  333,  250,  278,  500,  500,  500,  500,  500,  500,  500,
-       500,  500,  500,  333,  333,  570,  570,  570,  500,  930,  722,
-       667,  722,  722,  667,  611,  778,  778,  389,  500,  778,  667,
-       944,  722,  778,  611,  778,  722,  556,  667,  722,  722, 1000,
-       722,  722,  667,  333,  278,  333,  581,  500,  333,  500,  556,
-       444,  556,  444,  333,  500,  556,  278,  333,  556,  278,  833,
-       556,  500,  556,  556,  444,  389,  333,  556,  500,  722,  500,
-       500,  444,  394,  220,  394,  520,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  333,  500,  500,  167,
-       500,  500,  500,  500,  278,  500,  500,  333,  333,  556,  556,
-       250,  500,  500,  500,  250,  250,  540,  350,  333,  500,  500,
-       500, 1000, 1000,  250,  500,  250,  333,  333,  333,  333,  333,
-       333,  333,  333,  250,  333,  333,  250,  333,  333,  333, 1000,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250, 1000,  250,  300,  250,  250,  250,
-       250,  667,  778, 1000,  330,  250,  250,  250,  250,  250,  722,
-       250,  250,  250,  278,  250,  250,  278,  500,  722,  556,  250,
-       250,  250,  250
-] }
-sub fontwidth_Times_BoldItalic { [
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-#      389,  555,  500,  500,  833,  778,  333,  333,  333,  500,  570,
-       389,  555,  500,  500,  833,  778,  222,  333,  333,  500,  570,
-       250,  333,  250,  278,  500,  500,  500,  500,  500,  500,  500,
-       500,  500,  500,  333,  333,  570,  570,  570,  500,  832,  667,
-       667,  667,  722,  667,  667,  722,  778,  389,  500,  667,  611,
-       889,  722,  722,  611,  722,  667,  556,  611,  722,  667,  889,
-       667,  611,  611,  333,  278,  333,  570,  500,  333,  500,  500,
-       444,  500,  444,  333,  500,  556,  278,  278,  500,  278,  778,
-       556,  500,  500,  500,  389,  389,  278,  556,  444,  667,  500,
-       444,  389,  348,  220,  348,  570,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  389,  500,  500,  167,
-       500,  500,  500,  500,  278,  500,  500,  333,  333,  556,  556,
-       250,  500,  500,  500,  250,  250,  500,  350,  333,  500,  500,
-       500, 1000, 1000,  250,  500,  250,  333,  333,  333,  333,  333,
-       333,  333,  333,  250,  333,  333,  250,  333,  333,  333, 1000,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  944,  250,  266,  250,  250,  250,
-       250,  611,  722,  944,  300,  250,  250,  250,  250,  250,  722,
-       250,  250,  250,  278,  250,  250,  278,  500,  722,  500,  250,
-       250,  250,  250
-] }
-sub fontwidth_Times_Italic { [
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-#      333,  420,  500,  500,  833,  778,  333,  333,  333,  500,  675,
-       333,  420,  500,  500,  833,  778,  222,  333,  333,  500,  675,
-       250,  333,  250,  278,  500,  500,  500,  500,  500,  500,  500,
-       500,  500,  500,  333,  333,  675,  675,  675,  500,  920,  611,
-       611,  667,  722,  611,  611,  722,  722,  333,  444,  667,  556,
-       833,  667,  722,  611,  722,  611,  500,  556,  722,  611,  833,
-       611,  556,  556,  389,  278,  389,  422,  500,  333,  500,  500,
-       444,  500,  444,  278,  500,  500,  278,  278,  444,  278,  722,
-       500,  500,  500,  500,  389,  389,  278,  500,  444,  667,  444,
-       444,  389,  400,  275,  400,  541,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  389,  500,  500,  167,
-       500,  500,  500,  500,  214,  556,  500,  333,  333,  500,  500,
-       250,  500,  500,  500,  250,  250,  523,  350,  333,  556,  556,
-       500,  889, 1000,  250,  500,  250,  333,  333,  333,  333,  333,
-       333,  333,  333,  250,  333,  333,  250,  333,  333,  333,  889,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  889,  250,  276,  250,  250,  250,
-       250,  556,  722,  944,  310,  250,  250,  250,  250,  250,  667,
-       250,  250,  250,  278,  250,  250,  278,  500,  667,  500,  250,
-       250,  250,  250
-] }
-sub fontwidth_Times_Roman { [
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-#      333,  408,  500,  500,  833,  778,  333,  333,  333,  500,  564,
-       333,  408,  500,  500,  833,  778,  222,  333,  333,  500,  564,
-       250,  333,  250,  278,  500,  500,  500,  500,  500,  500,  500,
-       500,  500,  500,  278,  278,  564,  564,  564,  444,  921,  722,
-       667,  667,  722,  611,  556,  722,  722,  333,  389,  722,  611,
-       889,  722,  722,  556,  722,  667,  556,  611,  722,  722,  944,
-       722,  722,  611,  333,  278,  333,  469,  500,  333,  444,  500,
-       444,  500,  444,  333,  500,  500,  278,  278,  500,  278,  778,
-       500,  500,  500,  500,  333,  389,  278,  500,  500,  722,  500,
-       500,  444,  480,  200,  480,  541,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  250,  250,  333,  500,  500,  167,
-       500,  500,  500,  500,  180,  444,  500,  333,  333,  556,  556,
-       250,  500,  500,  500,  250,  250,  453,  350,  333,  444,  444,
-       500, 1000, 1000,  250,  444,  250,  333,  333,  333,  333,  333,
-       333,  333,  333,  250,  333,  333,  250,  333,  333,  333, 1000,
-       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-       250,  250,  250,  250,  250,  889,  250,  276,  250,  250,  250,
-       250,  611,  722,  889,  310,  250,  250,  250,  250,  250,  667,
-       250,  250,  250,  278,  250,  250,  278,  500,  722,  500,  250,
-       250,  250,  250
-] }
-
diff --git a/lib/PDFJ/CFF.pm b/lib/PDFJ/CFF.pm
new file mode 100644 (file)
index 0000000..7ae9c7d
--- /dev/null
@@ -0,0 +1,1293 @@
+# PDFJ::CFF - CFF (Compact Font Format) support
+# 2005 Sey <nakajima@netstock.co.jp>
+
+package PDFJ::CFF;
+use Carp;
+use strict;
+
+my @TopEntry = qw(Header Name TopDICT String GlobalSubr);
+
+sub new {
+       my($class, $filehandle) = @_;
+       my $orgpos = tell $filehandle;
+       my $self = bless {handle => $filehandle, orgpos => $orgpos}, $class;
+       $self->read;
+       $self;
+}
+
+sub read {
+       my($self) = @_;
+       for my $entryname(@TopEntry) {
+               $self->{$entryname} = 
+                       PDFJ::CFF::Entry->new($entryname, $self->{handle}, $self->{orgpos});
+       }
+       for my $entryname(@TopEntry) {
+               $self->{$entryname}->read_subentry;
+       }
+}
+
+sub dump {
+       my($self, $handle) = @_;
+       $handle ||= \*STDOUT;
+       for my $entryname(@TopEntry) {
+               $self->{$entryname}->dump($handle, $self->{String}{data});
+       }
+}
+
+# make subset CFF for CID font 
+# (CIDCount entry exists and no Encoding entry)
+# subset charset, CharStrings and FDSelect entries 
+sub subset {
+       my($self, $cids) = @_; 
+       my @entry;
+       # make subset entries
+       for my $entryname(@TopEntry) {
+               push @entry, $self->{$entryname}->subset($cids);
+       }
+       # construct CFF
+       my $result;
+       _subset(\$result, @entry);
+       $result;
+}
+
+sub _subset {
+       my($result, @entry) = @_;
+       my @offset;
+       for( my $j = 0; $j < @entry; $j++ ) {
+               my $entry = $entry[$j];
+               if( ref($entry) eq 'ARRAY' ) {
+                       my $offset = length($$result);
+                       $offset[$j] = $offset;
+                       for my $subentry(@{$entry->[1]}) {
+                               $subentry->[2] += $offset;
+                       }
+                       $$result .= $entry->[0];
+               } else {
+                       $$result .= $entry;
+               }
+       }
+       # sub entries
+       for( my $j = 0; $j < @entry; $j++ ) {
+               my $entry = $entry[$j];
+               if( ref($entry) eq 'ARRAY' ) {
+                       for my $subentry(@{$entry->[1]}) {
+                               my $offset = $subentry->[1] eq 'O' ? length($$result) :
+                                       length($$result) - $offset[$j];
+                               substr($$result, $subentry->[2], 5) = 
+                                       PDFJ::CFF::Entry::packUINToperand($offset, 1);
+                               _subset($result, $subentry->[0]);
+                       }
+               }
+       }
+}
+
+#---------------------------------------
+package PDFJ::CFF::Entry;
+use SelfLoader;
+use Carp;
+use strict;
+
+my @NibbleChar = qw(0 1 2 3 4 5 6 7 8 9 . E E- ? -);
+
+my %DICTOpName = (
+       # Top DICT
+       '0' => 'version',
+       '1' => 'Notice',
+       '12 0' => 'Copyright',
+       '2' => 'FullName',
+       '3' => 'FamilyName',
+       '4' => 'Weight',
+       '12 1' => 'isFixedPitch',
+       '12 2' => 'ItalicAngle',
+       '12 3' => 'UnderlinePosition',
+       '12 4' => 'UnderlineThickness',
+       '12 5' => 'PaintType',
+       '12 6' => 'CharstringType',
+       '12 7' => 'FontMatrix',
+       '13' => 'UniqueID',
+       '5' => 'FontBBox',
+       '12 8' => 'StrokeWidth',
+       '14' => 'XUID',
+       '15' => 'charset',
+       '16' => 'Encoding',
+       '17' => 'CharStrings',
+       '18' => 'Private',
+       '12 20' => 'SyntheticBase',
+       '12 21' => 'PostScript',
+       '12 22' => 'BaseFontName',
+       '12 23' => 'BaseFontBlend',
+       '12 30' => 'ROS',
+       '12 31' => 'CIDFontVersion',
+       '12 32' => 'CIDFontRevision',
+       '12 33' => 'CIDFontType',
+       '12 34' => 'CIDCount',
+       '12 35' => 'UIDBase',
+       '12 36' => 'FDArray',
+       '12 37' => 'FDSelect',
+       '12 38' => 'FontName',
+       
+       # Private DICT
+       '6' => 'BlueValues',
+       '7' => 'OtherBlues',
+       '8' => 'FamilyBlues',
+       '9' => 'FamilyOtherBlues',
+       '12 9' => 'BlueScale',
+       '12 10' => 'BlueShift',
+       '12 11' => 'BlueFuzz',
+       '10' => 'StdHW',
+       '11' => 'StdVW',
+       '12 12' => 'StemSnapH',
+       '12 13' => 'StemSnapV',
+       '12 14' => 'ForceBold',
+       '12 17' => 'LanguageGroup',
+       '12 18' => 'ExpansionFactor',
+       '12 19' => 'InitialRandomSeed',
+       '19' => 'Subrs',
+       '20' => 'defaultWidthX',
+       '21' => 'nominalWidthX',
+);
+
+my %RequireSID = qw(
+       version 1
+       Notice 1
+       Copyright 1
+       FullName 1
+       FamilyName 1
+       Weight 1
+       PostScript 1
+       BaseFontName 1
+       FontName 1
+);
+
+# pre hyphen means no data read
+my %EntryType = qw(
+       Header      Header
+       Name        INDEX
+       TopDICT     DICT_INDEX
+       String      INDEX
+       GlobalSubr  -INDEX
+       CharStrings -INDEX
+       FDArray     DICT_INDEX
+       FDSelect    FDSelect
+       Encoding    Encoding
+       charset     charset
+       Private     DICT
+       Subrs       -INDEX
+);
+
+# operands: O:offset(0) o:offset(self) SO:[size offset(0)]
+# args: G:nGlyphs
+my %EntryOperandArgs = qw(
+       CharStrings O
+       FDArray     O
+       FDSelect    OG
+       Encoding    O
+       charset     OG
+       Private     SO
+       Subrs       o
+);
+
+sub new {
+       my($class, $name, $handle, $orgpos, $offset, @args) = @_;
+       $offset ||= $handle->tell;
+       my $type = $EntryType{$name};
+       my $nodataread = $type =~ s/^-//;
+       my $self = bless {
+               name => $name, 
+               type => $type,
+               nodataread => $nodataread,
+               handle => $handle, 
+               orgpos => $orgpos, 
+               offset => $offset, 
+               }, $class;
+       $self->read(@args);
+       $self;
+}
+
+sub read {
+       my($self, @args) = @_;
+       $self->rewind;
+       my $func = "read_$self->{type}";
+       $self->{data} = $self->$func(@args);
+       $self->{length} = $self->tell - $self->{offset};
+}
+
+sub read_subentry {
+       my($self) = @_;
+       if( $self->{type} eq 'DICT' ) {
+               $self->_read_subentry($self->{data});
+       } elsif( $self->{type} eq 'DICT_INDEX' ) {
+               for my $dict(@{$self->{data}}) {
+                       $self->_read_subentry($dict);
+               }
+       }
+}
+
+sub _read_subentry {
+       my($self, $dict) = @_;
+       my $nGlyphs;
+       # sort CharStrings first for getting nGlyphs
+       for my $name(sort {$a eq 'CharStrings' ? -1 : $b eq 'CharStrings' ? 1 : 0} 
+               keys %$dict) {
+               my $eoa = $EntryOperandArgs{$name};
+               if( $eoa ) {
+                       my $value = $dict->{$name}[0];
+                       my($offset, $arg);
+                       if( $eoa =~ /o/ ) {
+                               $offset = $value + $self->{offset};
+                       } elsif( $eoa =~ /SO/ ) {
+                               ($arg, $offset) = @$value;
+                               $offset += $self->{orgpos};
+                       } elsif( $eoa =~ /O/ ) {
+                               next if $value < 4; # predefined Encoding or charset
+                               $offset = $value + $self->{orgpos};
+                       }
+                       if( $eoa =~ /G/ ) {
+                               $arg = $nGlyphs;
+                       }
+                       my $subdata = PDFJ::CFF::Entry->new($name, 
+                                       $self->{handle}, $self->{orgpos}, $offset, $arg);
+                       $dict->{entry}{$name} = $subdata;
+                       if( $name eq 'CharStrings' ) {
+                               $nGlyphs = $subdata->{INDEXcount};
+                       }
+                       $subdata->read_subentry;
+               }
+       }
+}
+
+sub read_Header {
+       my($self) = @_;
+       my %data;
+       $data{major}   = $self->readCard8;
+       $data{minor}   = $self->readCard8;
+       $data{hdrSize} = $self->readCard8;
+       $data{offSize} = $self->readOffSize;
+       \%data;
+}
+
+sub read_FDSelect {
+       my($self, $nGlyphs) = @_;
+       my %data;
+       $data{format} = $self->readCard8;
+       if( $data{format} == 0 ) {
+               $data{fds} = $self->_read($nGlyphs);
+       } elsif( $data{format} == 3 ) {
+               $data{nRanges} = $self->readCard16;
+               $data{Range3} = $self->_read($data{nRanges} * 3 + 2); # 2 for sentinel
+       } else {
+               croak "unknown FDSelect format: $data{format}";
+       }
+       \%data;
+}
+
+sub read_charset {
+       my($self, $nGlyphs) = @_;
+       my %data;
+       $data{format} = $self->readCard8;
+       if( $data{format} == 0 ) {
+               $data{glyph} = $self->_read(($nGlyphs - 1) * 2);
+       } elsif( $data{format} == 1 || $data{format} == 2 ) {
+               my $count = 0;
+               my @ranges = ();
+               my $readfunc = $data{format} == 1 ? \&readCard8 : \&readCard16;
+               while(1) {
+                       my $first = $self->readSID;
+                       my $nLeft = $self->$readfunc();
+                       push @ranges, [$first, $nLeft];
+                       $count += $nLeft + 1;
+                       last if $count >= $nGlyphs - 1;
+               }
+               $data{Range} = \@ranges;
+       } else {
+               croak "unknown carset format: $data{format}";
+       }
+       \%data;
+}
+
+sub read_Encoding {
+       my($self) = @_;
+       my %data;
+       $data{format} = $self->readCard8;
+       if( $data{format} & 0x7F == 0 ) {
+               $data{nCodes} = $self->readCard8;
+               $data{code} = $self->_read($data{nCodes});
+       } elsif( $data{format} & 0x7F == 1 ) {
+               $data{nRanges} = $self->readCard8;
+               $data{Range1} = $self->_read($data{nRanges} * 2);
+       }
+       if( $data{format} & 0x80 ) {
+               $data{nSups} = $self->readCard8;
+               $data{Supplement} = $self->_read($data{nSups} * 3);
+       }
+       \%data;
+}
+
+sub read_DICT {
+       my($self, $len) = @_;
+       return unless $len;
+       my %dict;
+       my $endpos = $self->tell + $len;
+       my($b0, $b1, $b2, $b3, $b4, $rb0, $rb1, $rb2, $rb3, $rb4);
+       my(@operands, $rawoperands);
+       while($self->tell < $endpos) {
+               ($b0, $rb0) = $self->readCard8raw;
+               if( $b0 >= 0 && $b0 <= 21 ) { # operator
+                       my($operator, $rawoperator);
+                       if( $b0 == 12 ) { # 2 bytes operator
+                               croak "unexpected data end for DICT operator '$b0'"
+                                       unless $self->tell < $endpos;
+                               ($b1, $rb1) = $self->readCard8raw;
+                               $operator = "$b0 $b1";
+                               $rawoperator = $rb0.$rb1;
+                       } else {
+                               $operator = "$b0";
+                               $rawoperator = $rb0;
+                       }
+                       my $opname = $DICTOpName{$operator} || $operator;
+                       carp "operator $opname already exists" if exists $dict{$opname};
+                       $dict{$opname} = (@operands > 1) ? 
+                               [[@operands], $rawoperands, $rawoperator] : 
+                               [$operands[0], $rawoperands, $rawoperator];
+                       @operands = ();
+                       $rawoperands = '';
+               } elsif( ($b0 >= 22 && $b0 <= 27) || $b0 == 31 || $b0 == 255 ) {
+                       carp "unknown DICT byte: $b0";
+               } else { # operand
+                       my $operand;
+                       $rawoperands .= $rb0;
+                       if( $b0 >= 32 && $b0 <= 246 ) {
+                               $operand = $b0 - 139;
+                       } elsif( $b0 >= 247 && $b0 <= 250 ) {
+                               croak "unexpected data end for DICT operand '$b0'"
+                                       unless $self->tell < $endpos;
+                               ($b1, $rb1) = $self->readCard8raw;
+                               $operand = ($b0 - 247) * 256 + $b1 + 108;
+                               $rawoperands .= $rb1;
+                       } elsif( $b0 >= 251 && $b0 <= 254 ) {
+                               croak "unexpected data end for DICT operand '$b0'"
+                                       unless $self->tell < $endpos;
+                               ($b1, $rb1) = $self->readCard8raw;
+                               $operand = - ($b0 - 251) * 256 - $b1 - 108;
+                               $rawoperands .= $rb1;
+                       } elsif( $b0 == 28 ) {
+                               croak "unexpected data end for DICT operand '$b0'"
+                                       unless $self->tell < $endpos - 1;
+                               ($b1, $rb1) = $self->readCard8raw;
+                               ($b2, $rb2) = $self->readCard8raw;
+                               $operand = $b1 << 8 | $b2;
+                               $rawoperands .= $rb1.$rb2;
+                       } elsif( $b0 == 29 ) {
+                               croak "unexpected data end for DICT operand '$b0'"
+                                       unless $self->tell < $endpos - 3;
+                               ($b1, $rb1) = $self->readCard8raw;
+                               ($b2, $rb2) = $self->readCard8raw;
+                               ($b3, $rb3) = $self->readCard8raw;
+                               ($b4, $rb4) = $self->readCard8raw;
+                               $operand = $b1 << 24 | $b2 << 16 | $b3 << 8 | $b4;
+                               $rawoperands .= $rb1.$rb2.$rb3.$rb4;
+                       } elsif( $b0 == 30 ) {
+                               $operand = '';
+                               RN:while($self->tell < $endpos) {
+                                       ($b1, $rb1) = $self->readCard8raw;
+                                       $rawoperands .= $rb1;
+                                       my $ln = $b1 & 0x0f;
+                                       my $hn = $b1 >> 4;
+                                       for my $n($hn, $ln) {
+                                               last RN if $n == 15;
+                                               $operand .= $NibbleChar[$n];
+                                       }
+                               }
+                               $operand += 0;
+                       } else {
+                               carp "unknown DICT byte: $b0";
+                       }
+                       push @operands, $operand;
+               }
+       }
+       if( @operands ) {
+               croak "incomplete operand: @operands";
+       }
+       \%dict;
+}
+
+sub read_DICT_INDEX {
+       my($self) = @_;
+       $self->_read_INDEX(1);
+}
+
+sub read_INDEX {
+       my($self) = @_;
+       $self->_read_INDEX(0);
+}
+
+sub _read_INDEX {
+       my($self, $dict) = @_;
+       my $nodataread = $self->{nodataread};
+       my @result;
+       my($count, $offSize, @Offset, $datapos);
+       $count = $self->readCard16;
+       $self->{INDEXcount} = $count;
+       if( $count ) {
+               $offSize = $self->readCard8;
+               croak "illegal offSize: $offSize" if $offSize > 4;
+               for( my $j = 0; $j < $count + 1; $j++ ) {
+                       push @Offset, $self->readOffset($offSize);
+               }
+               $self->{INDEXoffSize} = $offSize;
+               $self->{INDEXOffset} = \@Offset;
+               $datapos = $self->tell - 1;
+               $self->{INDEXdatapos} = $datapos;
+               if( $nodataread ) {
+                       $self->seek($datapos + $Offset[$count]);
+               } else {
+                       for( my $j = 0; $j < $count; $j++ ) {
+                               my $offset = $Offset[$j];
+                               my $length = $Offset[$j + 1] - $offset;
+                               $self->seek($datapos + $offset);
+                               push @result, ($dict ? $self->read_DICT($length) : 
+                                       $self->_seek_read($datapos + $offset, $length));
+                       }
+               }
+       }
+       \@result;
+}
+
+#---------------------------
+sub subset {
+       my($self, $cids) = @_;
+       my $result;
+       if( $self->{type} eq 'DICT_INDEX' ) {
+               my(@elem, @subentry);
+               for my $dict(@{$self->{data}}) {
+                       my($entry, $subentry) = @{_subset_DICT($dict, $cids)};
+                       push @elem, $entry;
+                       push @subentry, $subentry;
+               }
+               my($entry, $elementoffset) = makeINDEX(\@elem, 1);
+               my @allsubentry;
+               for( my $j = 0; $j < @subentry; $j++ ) {
+                       grep {$_->[2] += $elementoffset->[$j]} @{$subentry[$j]};
+                       push @allsubentry, @{$subentry[$j]};
+               }
+               $result = [$entry, \@allsubentry];
+       } elsif( $self->{type} eq 'DICT' ) {
+               $result = _subset_DICT($self->{data}, $cids);
+       } else {
+               $result = $self->whole;
+       }
+       $result;
+}
+
+sub whole {
+       my($self) = @_;
+       $self->_seek_read($self->{offset}, $self->{length});
+}
+
+sub _oporder {
+       my($opname) = @_;
+       if( $opname eq 'ROS' ) {
+               '0ROS';
+       } elsif( $opname eq 'charset' ) {
+               '1charset';
+       } else {
+               $opname;
+       }
+}
+
+sub _subset_DICT {
+       my($dict, $cids) = @_;
+       croak "cannot subset CFF which has Encoding entry" 
+               if exists $dict->{Encoding};
+       my($this, @subentry, $gids);
+       for my $name(sort {_oporder($a) cmp _oporder($b)} keys %$dict) {
+               next if $name eq 'entry';
+               if( $dict->{entry}{$name} ) {
+                       my $subentry;
+                       if( $name eq 'charset' ) {
+                               $subentry = _subset_charset($cids);
+                               $gids = cids2gids($dict->{entry}{$name}{data}, $cids);
+                       } elsif( $name eq 'CharStrings' ) {
+                               $subentry = _subset_CharStrings($dict->{entry}{$name}, $gids);
+                       } elsif( $name eq 'FDSelect' ) {
+                               $subentry = 
+                                       _subset_FDSelect($dict->{entry}{$name}{data}, $gids);
+                       } else {
+                               $subentry = $dict->{entry}{$name}->subset($cids);
+                       }
+                       my $eoa = $EntryOperandArgs{$name};
+                       my($offsettype, $offsetpos);
+                       if( $eoa =~ /SO/ ) {
+                               $offsettype = 'O';
+                               my $size = ref($subentry) eq 'ARRAY' ? length($subentry->[0]) :
+                                       length($subentry);
+                               $this .= packUINToperand($size);
+                       } elsif( $eoa =~ /O/ ) {
+                               $offsettype = 'O';
+                       } elsif( $eoa =~ /o/ ) {
+                               $offsettype = 'o';
+                       }
+                       $offsetpos = length($this);
+                       $this .= packUINToperand(0, 1); # offset = 0 temporarily
+                       $this .= $dict->{$name}[2]; # operator
+                       push @subentry, [$subentry, $offsettype, $offsetpos];
+               } else {
+                       # copy original raw operand and operator
+                       $this .= $dict->{$name}[1].$dict->{$name}[2]; 
+               }
+       }
+       [$this, \@subentry];
+}
+
+sub _subset_charset {
+       my($cids) = @_;
+       my $result;
+       $result .= pack('C', 0); # format = 0
+       $result .= pack('n*', @$cids); # glyph
+       $result;
+}
+
+sub _subset_CharStrings {
+       my($charstrings, $gids) = @_;
+       my $datapos = $charstrings->{INDEXdatapos};
+       my $offsets = $charstrings->{INDEXOffset};
+       my @css;
+       for my $gid(0, @$gids) {
+               my $offset = $offsets->[$gid];
+               my $length = $offsets->[$gid + 1] - $offset;
+               # read data now (no data read on read_CharStrings)
+               push @css, $charstrings->_seek_read($datapos + $offset, $length);
+       }
+       makeINDEX(\@css);
+}
+
+sub _subset_FDSelect {
+       my($fdselect, $gids) = @_;
+       my @fds;
+       if( $fdselect->{format} == 0 ) {
+               my $fds = $fdselect->{fds};
+               for my $gid(0, @$gids) {
+                       push @fds, substr($fds, $gid, 1);
+               }
+       } else { # format = 3
+               my @gidfds;
+               my $nRanges = $fdselect->{nRanges};
+               my $Range3 = $fdselect->{Range3};
+               for( my $j = 0; $j < $nRanges; $j++ ) {
+                       my $first = unpack('n', substr($Range3, $j * 3, 2));
+                       my $fd = unpack('C', substr($Range3, $j * 3 + 2, 1));
+                       my $next = unpack('n', substr($Range3, ($j + 1) * 3, 2));
+                       @gidfds[$first .. ($next - 1)] = ($fd) x ($next - $first);
+               }
+               @fds = map { $gidfds[$_] } (0, @$gids);
+       }
+       # make FDSelect entry
+       my $result;
+       $result .= pack('C', 0); # format = 0
+       $result .= pack('C*', @fds); # fds
+       $result;
+}
+
+sub makeINDEX {
+       my($array, $needoffset) = @_;
+       my $result;
+       my @elementoffset;
+       my $count = @$array;
+       my $data = join '', @$array;
+       my $datalen = length($data);
+       my $offsize = $datalen < 256 ? 1 : $datalen < 65536 ? 2 : 
+               $datalen < 16777216 ? 3 : 4;
+       $result .= pack('n', $count);
+       $result .= pack('C', $offsize);
+       my $offset = 1;
+       $result .= packoffset($offset, $offsize);
+       for my $element(@$array) {
+               push @elementoffset, ($offset - 1);
+               $offset += length($element);
+               $result .= packoffset($offset, $offsize);
+       }
+       my $datapos = length($result);
+       $result .= $data;
+       if( $needoffset ) {
+               grep {$_ += $datapos} @elementoffset;
+               ($result, \@elementoffset);
+       } else {
+               $result;
+       }
+}
+
+sub packoffset {
+       my($offset, $size) = @_;
+       my $result;
+       while($size--) {
+               $result = pack('C', $offset & 0xff) . $result;
+               $offset >>= 8;
+       }
+       $result;
+}
+
+sub packUINToperand {
+       my($uint, $f5) = @_; # $f5 forces use 5 bytes format
+       my $result;
+       if( $f5 || $uint > 32767 ) {
+               for(1..4) {
+                       $result = pack('C', $uint & 0xff).$result;
+                       $uint >>= 8;
+               }
+               $result = pack('C', 29).$result;
+       } elsif( $uint <= 107 ) {
+               $result = pack('C', $uint + 139);
+       } elsif( $uint <= 1131 ) {
+               $uint -= 108;
+               $result = pack('C', ($uint >> 8) + 247).pack('C', $uint & 0xff);
+       } elsif( $uint <= 32767 ) {
+               $result = pack('C', 28).pack('C', $uint >> 8).pack('C', $uint & 0xff);
+       }
+       $result;
+}
+
+sub cids2gids {
+       my($charset, $cids) = @_;
+       my(@gids, @glyphcids);
+       if( $charset->{format} == 0 ) {
+               @glyphcids = (0, unpack("n*", $charset->{glyph})); # 0 for .notdef
+       } else { # format = 1 or 2
+               if( @{$charset->{Range}} == 1 && $charset->{Range}[0][0] == 1 ) {
+                       # @gids = @$cids;
+               } else {
+                       @glyphcids = (0);
+                       for my $range(@{$charset->{Range}}) {
+                               my($first, $nLeft) = @$range;
+                               push @glyphcids, $first;
+                               for( my $j = 1; $j <= $nLeft; $j++ ) {
+                                       push @glyphcids, ($first + $j);
+                               }
+                       }
+               }
+       }
+       if( @glyphcids ) {
+               my %gids = map {$glyphcids[$_] => $_} (0..$#glyphcids);
+               @gids = map {$gids{$_}} @$cids;
+       } else {
+               @gids = @$cids;
+       }
+       \@gids;
+}
+
+#----------------------------
+sub seek {
+       my($self, $offset) = @_;
+       my $handle = $self->{handle};
+       seek $handle, $offset, 0;
+}
+
+sub seek_relative {
+       my($self, $offset) = @_;
+       $self->seek($self->{offset} + $offset);
+}
+
+sub rewind {
+       my($self) = @_;
+       $self->seek($self->{offset});
+}
+
+sub tell {
+       my($self) = @_;
+       my $handle = $self->{handle};
+       tell $handle;
+}
+
+sub readCard8 {
+       my($self) = @_;
+       unpack "C", $self->_read(1);
+}
+
+sub readCard8raw {
+       my($self) = @_;
+       my $raw = $self->_read(1);
+       (unpack("C", $raw), $raw);
+}
+
+sub readCard16 {
+       my($self) = @_;
+       unpack "n", $self->_read(2);
+}
+
+sub readSID {
+       my($self) = @_;
+       unpack "n", $self->_read(2);
+}
+
+sub readOffSize {
+       my($self) = @_;
+       $self->readCard8;
+}
+
+sub readOffset {
+       my($self, $size) = @_;
+       my $result = 0;
+       for( my $j = 0; $j < $size; $j++ ) {
+               $result = ($result << 8) + $self->readCard8;
+       }
+       $result;
+}
+
+sub _read {
+       my($self, $length) = @_;
+       return "" unless $length;
+       my $handle = $self->{handle};
+       my $buf = "";
+       read $handle, $buf, $length or croak "read error";
+       $buf;
+}
+
+sub _seek_read {
+       my($self, $offset, $length) = @_;
+       $self->seek($offset);
+       $self->_read($length);
+}
+
+#---------------------------
+sub dump {
+       my($self, $handle, $string, $indent) = @_;
+       $handle ||= \*STDOUT;
+       print $handle $self->_dump($string, $indent);
+}
+
+sub _dump {
+       my($self, $string, $indent) = @_;
+       my $dump;
+       $dump .= "\n$indent** $self->{name} ($self->{length} bytes from $self->{offset}) **\n";
+       my $func = "dump_$self->{type}";
+       $dump .= $self->$func($string, $indent);
+       $dump;
+}
+
+sub dump_Header {
+       my($self) = @_;
+       my $data = $self->{data};
+       my $dump = <<END;
+major: $data->{major}
+minor: $data->{minor}
+hdrSize: $data->{hdrSize}
+offSize: $data->{offSize}
+END
+       $dump;
+}
+
+sub _dump_DICT {
+       my($self, $string, $indent, $dict) = @_;
+       my $dump;
+       my $StandardString = StandardString();
+       for my $key(sort keys %$dict) {
+               next if $key eq 'entry';
+               my $value = $dict->{$key}[0];
+               if( ref($value) eq 'ARRAY' ) {
+                       $dump .= "$indent  $key => [@$value]\n";
+               } else {
+                       if( $RequireSID{$key} ) {
+                               my $sid = $value;
+                               if( $value < @$StandardString ) {
+                                       $value = $StandardString->[$sid];
+                               } elsif( $value < @$StandardString + @$string ) {
+                                       $value = $string->[$sid - @$StandardString];
+                               } else {
+                                       croak "unknown SID: $sid";
+                               }
+                               $dump .= "$indent  $key => $sid($value)\n";
+                       } else {
+                               $dump .= "$indent  $key => $value\n";
+                       }
+               }
+       }
+       if( $dict->{entry} ) {
+               for my $entry(keys %{$dict->{entry}}) {
+                       $dump .= $dict->{entry}{$entry}->_dump($string, "$indent  ");
+               }
+       }
+       $dump;
+}
+
+sub dump_DICT {
+       my($self, $string, $indent) = @_;
+       $self->_dump_DICT($string, $indent, $self->{data});
+}
+
+sub dump_DICT_INDEX {
+       my($self, $string, $indent) = @_;
+       my $dump;
+       my $count = $self->{INDEXcount};
+       $dump .= "${indent}count: $count\n";
+       my $array = $self->{data};
+       for(my $j = 0; $j < @$array; $j++ ) { 
+               $dump .= $indent."[$j]\n";
+               $dump .= $self->_dump_DICT($string, $indent, $array->[$j]);
+       }
+       $dump;
+}
+
+sub dump_INDEX {
+       my($self, $string, $indent) = @_;
+       my $dump;
+       my $count = $self->{INDEXcount};
+       $dump .= "${indent}count: $count\n";
+       my $array = $self->{data};
+       for(my $j = 0; $j < @$array; $j++ ) { 
+               my $data = $array->[$j];
+               $dump .= $indent."[$j]'$data'\n"; 
+       }
+       $dump;
+}
+
+sub dump_FDSelect {
+       my($self, $string, $indent) = @_;
+       my $dump;
+       my $data = $self->{data};
+       $dump .= "${indent}format $data->{format} ";
+       if( $data->{format} == 0 ) {
+               $dump .= "(".length($data->{fds})." FD selectors)\n";
+       } elsif( $data->{format} == 3 ) {
+               $dump .= "($data->{nRanges} Range3's)\n";
+       }
+       $dump;
+}
+
+sub dump_charset {
+       my($self, $string, $indent) = @_;
+       my $dump;
+       my $data = $self->{data};
+       $dump .= "${indent}format: $data->{format}\n";
+       if( $data->{format} == 0 ) {
+       } else {
+               $dump .= $indent;
+               for my $range(@{$data->{Range}}) {
+                       $dump .= "[@$range] ";
+               }
+               $dump .= "\n";
+       }
+       $dump;
+}
+
+sub dump_Encoding {
+       my($self, $string, $indent) = @_;
+       my $dump;
+       my $data = $self->{data};
+       $dump .= "${indent}format: $data->{format}\n";
+       if( $data->{format} & 0x7F == 0 ) {
+               $dump .= "${indent}($data->{nCodes} codes)\n";
+       } elsif( $data->{format} & 0x7F == 1 ) {
+               $dump .= "${indent}($data->{nRanges} Range1's)\n";
+       }
+       if( $data->{format} & 0x80 ) {
+               $dump .= "${indent}($data->{nSups} Supplements)\n";
+       }
+       $dump;
+}
+
+my $StandardString;
+
+sub StandardString {
+       $StandardString = _StandardString() unless $StandardString;
+       $StandardString;
+}
+
+1;
+
+# for SelfLoader;
+__DATA__
+
+sub _StandardString {
+       return [qw(
+       .notdef
+       space
+       exclam
+       quotedbl
+       numbersign
+       dollar
+       percent
+       ampersand
+       quoteright
+       parenleft
+       parenright
+       asterisk
+       plus
+       comma
+       hyphen
+       period
+       slash
+       zero
+       one
+       two
+       three
+       four
+       five
+       six
+       seven
+       eight
+       nine
+       colon
+       semicolon
+       less
+       equal
+       greater
+       question
+       at
+       A
+       B
+       C
+       D
+       E
+       F
+       G
+       H
+       I
+       J
+       K
+       L
+       M
+       N
+       O
+       P
+       Q
+       R
+       S
+       T
+       U
+       V
+       W
+       X
+       Y
+       Z
+       bracketleft
+       backslash
+       bracketright
+       asciicircum
+       underscore
+       quoteleft
+       a
+       b
+       c
+       d
+       e
+       f
+       g
+       h
+       i
+       j
+       k
+       l
+       m
+       n
+       o
+       p
+       q
+       r
+       s
+       t
+       u
+       v
+       w
+       x
+       y
+       z
+       braceleft
+       bar
+       braceright
+       asciitilde
+       exclamdown
+       cent
+       sterling
+       fraction
+       yen
+       florin
+       section
+       currency
+       quotesingle
+       quotedblleft
+       guillemotleft
+       guilsinglleft
+       guilsinglright
+       fi
+       fl
+       endash
+       dagger
+       daggerdbl
+       periodcentered
+       paragraph
+       bullet
+       quotesinglbase
+       quotedblbase
+       quotedblright
+       guillemotright
+       ellipsis
+       perthousand
+       questiondown
+       grave
+       acute
+       circumflex
+       tilde
+       macron
+       breve
+       dotaccent
+       dieresis
+       ring
+       cedilla
+       hungarumlaut
+       ogonek
+       caron
+       emdash
+       AE
+       ordfeminine
+       Lslash
+       Oslash
+       OE
+       ordmasculine
+       ae
+       dotlessi
+       lslash
+       oslash
+       oe
+       germandbls
+       onesuperior
+       logicalnot
+       mu
+       trademark
+       Eth
+       onehalf
+       plusminus
+       Thorn
+       onequarter
+       divide
+       brokenbar
+       degree
+       thorn
+       threequarters
+       twosuperior
+       registered
+       minus
+       eth
+       multiply
+       threesuperior
+       copyright
+       Aacute
+       Acircumflex
+       Adieresis
+       Agrave
+       Aring
+       Atilde
+       Ccedilla
+       Eacute
+       Ecircumflex
+       Edieresis
+       Egrave
+       Iacute
+       Icircumflex
+       Idieresis
+       Igrave
+       Ntilde
+       Oacute
+       Ocircumflex
+       Odieresis
+       Ograve
+       Otilde
+       Scaron
+       Uacute
+       Ucircumflex
+       Udieresis
+       Ugrave
+       Yacute
+       Ydieresis
+       Zcaron
+       aacute
+       acircumflex
+       adieresis
+       agrave
+       aring
+       atilde
+       ccedilla
+       eacute
+       ecircumflex
+       edieresis
+       egrave
+       iacute
+       icircumflex
+       idieresis
+       igrave
+       ntilde
+       oacute
+       ocircumflex
+       odieresis
+       ograve
+       otilde
+       scaron
+       uacute
+       ucircumflex
+       udieresis
+       ugrave
+       yacute
+       ydieresis
+       zcaron
+       exclamsmall
+       Hungarumlautsmall
+       dollaroldstyle
+       dollarsuperior
+       ampersandsmall
+       Acutesmall
+       parenleftsuperior
+       parenrightsuperior
+       twodotenleader
+       onedotenleader
+       zerooldstyle
+       oneoldstyle
+       twooldstyle
+       threeoldstyle
+       fouroldstyle
+       fiveoldstyle
+       sixoldstyle
+       sevenoldstyle
+       eightoldstyle
+       nineoldstyle
+       commasuperior
+       threequartersemdash
+       periodsuperior
+       questionsmall
+       asuperior
+       bsuperior
+       centsuperior
+       dsuperior
+       esuperior
+       isuperior
+       lsuperior
+       msuperior
+       nsuperior
+       osuperior
+       rsuperior
+       ssuperior
+       tsuperior
+       ff
+       ffi
+       ffl
+       parenleftinferior
+       parenrightinferior
+       Circumflexsmall
+       hyphensuperior
+       Gravesmall
+       Asmall
+       Bsmall
+       Csmall
+       Dsmall
+       Esmall
+       Fsmall
+       Gsmall
+       Hsmall
+       Ismall
+       Jsmall
+       Ksmall
+       Lsmall
+       Msmall
+       Nsmall
+       Osmall
+       Psmall
+       Qsmall
+       Rsmall
+       Ssmall
+       Tsmall
+       Usmall
+       Vsmall
+       Wsmall
+       Xsmall
+       Ysmall
+       Zsmall
+       colonmonetary
+       onefitted
+       rupiah
+       Tildesmall
+       exclamdownsmall
+       centoldstyle
+       Lslashsmall
+       Scaronsmall
+       Zcaronsmall
+       Dieresissmall
+       Brevesmall
+       Caronsmall
+       Dotaccentsmall
+       Macronsmall
+       figuredash
+       hypheninferior
+       Ogoneksmall
+       Ringsmall
+       Cedillasmall
+       questiondownsmall
+       oneeighth
+       threeeighths
+       fiveeighths
+       seveneighths
+       onethird
+       twothirds
+       zerosuperior
+       foursuperior
+       fivesuperior
+       sixsuperior
+       sevensuperior
+       eightsuperior
+       ninesuperior
+       zeroinferior
+       oneinferior
+       twoinferior
+       threeinferior
+       fourinferior
+       fiveinferior
+       sixinferior
+       seveninferior
+       eightinferior
+       nineinferior
+       centinferior
+       dollarinferior
+       periodinferior
+       commainferior
+       Agravesmall
+       Aacutesmall
+       Acircumflexsmall
+       Atildesmall
+       Adieresissmall
+       Aringsmall
+       AEsmall
+       Ccedillasmall
+       Egravesmall
+       Eacutesmall
+       Ecircumflexsmall
+       Edieresissmall
+       Igravesmall
+       Iacutesmall
+       Icircumflexsmall
+       Idieresissmall
+       Ethsmall
+       Ntildesmall
+       Ogravesmall
+       Oacutesmall
+       Ocircumflexsmall
+       Otildesmall
+       Odieresissmall
+       OEsmall
+       Oslashsmall
+       Ugravesmall
+       Uacutesmall
+       Ucircumflexsmall
+       Udieresissmall
+       Yacutesmall
+       Thornsmall
+       Ydieresissmall
+       001.000
+       001.001
+       001.002
+       001.003
+       Black
+       Bold
+       Book
+       Light
+       Medium
+       Regular
+       Roman
+       Semibold
+)];
+}
index d8252e8..eaba900 100644 (file)
@@ -8294,6 +8294,79 @@ sub euc2unihash {
 "\x8F\xF4\xFD", "\xFA\x2D",
 "\x8F\xEC\xD6", "\x9E\x19",
 "\x8F\xF4\xFE", "\x9E\xD1",
+
+"\x8F\xA2\xC2", "\x00\xA1",
+"\x8F\xA2\xF0", "\x00\xA4",
+"\x8F\xA2\xC3", "\x00\xA6",
+"\x8F\xA2\xED", "\x00\xA9",
+"\x8F\xA2\xEC", "\x00\xAA",
+"\x8F\xA2\xEE", "\x00\xAE",
+"\x8F\xA2\xB4", "\x00\xAF",
+"\x8F\xA2\xB1", "\x00\xB8",
+"\x8F\xA2\xEB", "\x00\xBA",
+"\x8F\xA2\xC4", "\x00\xBF",
+"\x8F\xAA\xA2", "\x00\xC0",
+"\x8F\xAA\xA1", "\x00\xC1",
+"\x8F\xAA\xA4", "\x00\xC2",
+"\x8F\xAA\xAA", "\x00\xC3",
+"\x8F\xAA\xA3", "\x00\xC4",
+"\x8F\xAA\xA9", "\x00\xC5",
+"\x8F\xA9\xA1", "\x00\xC6",
+"\x8F\xAA\xAE", "\x00\xC7",
+"\x8F\xAA\xB2", "\x00\xC8",
+"\x8F\xAA\xB1", "\x00\xC9",
+"\x8F\xAA\xB4", "\x00\xCA",
+"\x8F\xAA\xB3", "\x00\xCB",
+"\x8F\xAA\xC0", "\x00\xCC",
+"\x8F\xAA\xBF", "\x00\xCD",
+"\x8F\xAA\xC2", "\x00\xCE",
+"\x8F\xAA\xC1", "\x00\xCF",
+"\x8F\xAA\xD0", "\x00\xD1",
+"\x8F\xAA\xD2", "\x00\xD2",
+"\x8F\xAA\xD1", "\x00\xD3",
+"\x8F\xAA\xD4", "\x00\xD4",
+"\x8F\xAA\xD8", "\x00\xD5",
+"\x8F\xAA\xD3", "\x00\xD6",
+"\x8F\xA9\xAC", "\x00\xD8",
+"\x8F\xAA\xE3", "\x00\xD9",
+"\x8F\xAA\xE2", "\x00\xDA",
+"\x8F\xAA\xE5", "\x00\xDB",
+"\x8F\xAA\xE4", "\x00\xDC",
+"\x8F\xAA\xF2", "\x00\xDD",
+"\x8F\xA9\xB0", "\x00\xDE",
+"\x8F\xA9\xCE", "\x00\xDF",
+"\x8F\xAB\xA2", "\x00\xE0",
+"\x8F\xAB\xA1", "\x00\xE1",
+"\x8F\xAB\xA4", "\x00\xE2",
+"\x8F\xAB\xAA", "\x00\xE3",
+"\x8F\xAB\xA3", "\x00\xE4",
+"\x8F\xAB\xA9", "\x00\xE5",
+"\x8F\xA9\xC1", "\x00\xE6",
+"\x8F\xAB\xAE", "\x00\xE7",
+"\x8F\xAB\xB2", "\x00\xE8",
+"\x8F\xAB\xB1", "\x00\xE9",
+"\x8F\xAB\xB4", "\x00\xEA",
+"\x8F\xAB\xB3", "\x00\xEB",
+"\x8F\xAB\xC0", "\x00\xEC",
+"\x8F\xAB\xBF", "\x00\xED",
+"\x8F\xAB\xC2", "\x00\xEE",
+"\x8F\xAB\xC1", "\x00\xEF",
+"\x8F\xA9\xC3", "\x00\xF0",
+"\x8F\xAB\xD0", "\x00\xF1",
+"\x8F\xAB\xD2", "\x00\xF2",
+"\x8F\xAB\xD1", "\x00\xF3",
+"\x8F\xAB\xD4", "\x00\xF4",
+"\x8F\xAB\xD8", "\x00\xF5",
+"\x8F\xAB\xD3", "\x00\xF6",
+"\x8F\xA9\xCC", "\x00\xF8",
+"\x8F\xAB\xE3", "\x00\xF9",
+"\x8F\xAB\xE2", "\x00\xFA",
+"\x8F\xAB\xE5", "\x00\xFB",
+"\x8F\xAB\xE4", "\x00\xFC",
+"\x8F\xAB\xF2", "\x00\xFD",
+"\x8F\xA9\xD0", "\x00\xFE",
+"\x8F\xAB\xF3", "\x00\xFF",
+
        };
 }
 
diff --git a/lib/PDFJ/Form.pm b/lib/PDFJ/Form.pm
new file mode 100644 (file)
index 0000000..afbd447
--- /dev/null
@@ -0,0 +1,591 @@
+# PDFJ/Form.pm - Form field support
+# 2006 nakajima@netstock.co.jp
+package PDFJ::Form;
+use PDFJ::Object;
+use Carp;
+use strict;
+
+# utility subroutines
+
+my %FieldFlag = (
+       ReadOnly =>       1,
+       Required =>       2,
+       NoExport =>       3,
+       Multiline =>     13,
+       Password =>      14,
+       NoToggleToOff => 15,
+       Radio =>         16,
+       Pushbutton =>    17,
+       Combo =>         18,
+       Edit =>          19,
+       Sort =>          20,
+       FileSelect =>    21,    # PDF 1.4
+       MultiSelect =>   22,    # PDF 1.4
+       DoNotSpellCheck => 23,  # PDF 1.4
+       DoNotScroll =>   24,    # PDF 1.4
+       Comb =>          25,    # PDF 1.5
+       RichText =>      26,    # PDF 1.5
+       RadiosInUnison => 26,   # PDF 1.5
+       CommitOnSelChange => 27,        # PDF 1.5
+);
+
+sub fieldflag {
+       my(%hash) = @_;
+       my $ff = 0;
+       for my $name(keys %hash) {
+               croak "unknown field flag: $name" unless $FieldFlag{$name};
+               $ff |= 1 << ($FieldFlag{$name} - 1) if $hash{$name};
+       }
+       $ff;
+}
+
+sub setcommonflag {
+       my($hash, $spec) = @_;
+       $hash->{ReadOnly} = 1 if $spec->{readonly};
+       $hash->{Required} = 1 if $spec->{required};
+       $hash->{NoExport} = 1 if $spec->{noexport};
+}
+
+sub anotflag {
+       my($spec) = @_;
+       my $f = 0;
+       $f |= 2 if $spec->{hidden};
+       $f |= 4 unless $spec->{noprint};
+       $f;
+}
+
+sub framespec {
+       my($spec, $fillgrey) = @_;
+       my $fwidth = $spec->{framewidth} || 1;
+       my $c_light = PDFJ::Color->new($spec->{lightcolor} || 0.9);
+       my $c_medium = PDFJ::Color->new($spec->{mediumcolor} || 0.75);
+       my $c_dark = PDFJ::Color->new($spec->{darkcolor} || 0.6);
+       my $c_fill = PDFJ::Color->new($spec->{fillcolor} || ($fillgrey ? 0.8 : 1));
+       ($fwidth, $c_light, $c_medium, $c_dark, $c_fill);
+}
+
+sub makeframe {
+       my($shape, $left, $bottom, $width, $height, $framewidth, 
+               $color_tl, $color_br, $color_fill) = @_;
+       my $right = $left + $width;
+       my $top = $bottom + $height;
+       if( $framewidth ) {
+               $shape
+               ->polygon([$left, $bottom, $left, $top, $right, $top, 
+               $right - $framewidth, $top - $framewidth,
+               $left + $framewidth, $top - $framewidth, 
+               $left + $framewidth, $bottom + $framewidth], 'f', 
+               PDFJ::ShapeStyle->new(fillcolor => $color_tl))
+               ->polygon([$left, $bottom, $right, $bottom, $right, $top, 
+               $right - $framewidth, $top - $framewidth,
+               $right - $framewidth, $bottom + $framewidth, 
+               $left + $framewidth, $bottom + $framewidth], 'f', 
+               PDFJ::ShapeStyle->new(fillcolor => $color_br));
+       }
+       $shape->box($left + $framewidth, $bottom + $framewidth, 
+               $width - $framewidth * 2, $height - $framewidth * 2, 'f', 
+               PDFJ::ShapeStyle->new(fillcolor => $color_fill));
+}
+
+sub makecircleframe {
+       my($shape, $x, $y, $r, $framewidth, $color1, $color2, $color3, 
+               $color_fill) = @_;
+       if( $framewidth ) {
+               $shape
+               ->circle($x, $y, $r, 'f', 2,
+               PDFJ::ShapeStyle->new(fillcolor => $color1))
+               ->circle($x, $y, $r, 'f', 1,
+               PDFJ::ShapeStyle->new(fillcolor => $color2))
+               ->circle($x, $y, $r, 'f', 3,
+               PDFJ::ShapeStyle->new(fillcolor => $color2))
+               ->circle($x, $y, $r, 'f', 4,
+               PDFJ::ShapeStyle->new(fillcolor => $color3));
+       }
+       $shape->circle($x, $y, $r - $framewidth, 'f', undef,
+               PDFJ::ShapeStyle->new(fillcolor => $color_fill));
+}
+
+sub makefieldobj {
+       my($docobj, %dict) = @_;
+       $dict{Type} = name('Annot');
+       $dict{Subtype} = name('Widget');
+       $dict{TU} = $dict{T} if $dict{TU} eq '' && $dict{T} ne '';
+       $dict{TM} = $dict{T} if $dict{TM} eq '' && $dict{T} ne '';
+       $docobj->indirect(dictionary(\%dict));
+}
+
+#-------------------
+package PDFJ::Doc;
+use Carp;
+use strict;
+use PDFJ::Object;
+
+sub new_field {
+       my($self, @spec) = @_;
+       my %spec;
+       if( @spec == 1 && ref($spec[0]) eq 'HASH' ) {
+               %spec = %{$spec[0]};
+       } else {
+               %spec = @spec;
+       }
+       my $type = $spec{type};
+       croak "missing field type" if $type eq '';
+       "PDFJ::Field::$type"->new($self, \%spec);
+}
+
+sub add_field {
+       my($self, $fieldobj) = @_;
+       croak "cannot add child field into AcroForm Fields"
+               if $fieldobj->{Parent};
+       $self->{catalog}->
+               set(AcroForm => dictionary({Fields => [], DR => {Font => {}}}))
+               unless $self->{catalog}->exists('AcroForm');
+       $self->{catalog}->get('AcroForm')->get('Fields')->add($fieldobj);
+       if( $fieldobj->exists('DR') && $fieldobj->get('DR')->exists('Font') ) {
+               my $formfd = $self->{catalog}->get('AcroForm')->get('DR')->get('Font');
+               my $fieldfd = $fieldobj->get('DR')->get('Font');
+               for my $fn($fieldfd->keys) {
+                       $formfd->set($fn => $fieldfd->get($fn));
+               }
+       }
+}
+
+#-------------------
+package PDFJ::Page;
+use Carp;
+use strict;
+
+sub add_field {
+       my($self, $fieldobj) = @_;
+       unless( $self->page->exists('Annots') ) {
+               $self->page->set(Annots => []);
+       }
+       $self->page->get('Annots')->push($fieldobj);
+       $self->docobj->add_field($fieldobj) unless $fieldobj->{Parent};
+}
+
+#-------------------
+package PDFJ::Field;
+use Carp;
+use strict;
+use PDFJ::Object;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Showable);
+
+sub width { $_[0]->{width} }
+sub height { $_[0]->{height} }
+sub left { 0 }
+sub right { $_[0]->width }
+sub top { $_[0]->height }
+sub bottom { 0 }
+
+sub size {
+       my($self, $direction) = @_; 
+       $direction eq 'H' ? $self->width : $self->height;
+}
+
+sub onshow {}
+
+sub _show {
+       my($self, $page, $x, $y) = @_;
+       my $fieldobj = $self->{fieldobj};
+       if( $fieldobj->exists('Rect') ) {
+               my $rect = $fieldobj->get('Rect');
+               $rect->set(0, $x);
+               $rect->set(1, $y);
+               $rect->set(2, $x + $self->{width});
+               $rect->set(3, $y + $self->{height});
+       }
+       $page->add_field($fieldobj);
+}
+
+#-------------------
+package PDFJ::Field::Text;
+use Carp;
+use strict;
+use PDFJ::Object;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Field);
+
+sub new {
+       my($class, $docobj, $spec) = @_;
+       my $type = $spec->{type};
+       my($name, $width, $height, $font, $fontsize) = map 
+               {$spec->{$_} or croak "missing $_ spec for $type field"}
+               qw(name width height font fontsize);
+       my $fname = $font->{name} || $font->{zname};
+       my $f = PDFJ::Form::anotflag($spec);
+       my %ff;
+       PDFJ::Form::setcommonflag(\%ff, $spec);
+       $ff{Multiline} = 1 if $spec->{multiline};
+       $ff{Password} = 1 if $spec->{password};
+       $ff{FileSelect} = $spec->{fileselect};
+       $ff{DoNotSpellCheck} = $spec->{donotspellcheck};
+       $ff{DoNotScroll} = $spec->{donotscroll};
+       $ff{Comb} = $spec->{comb};
+       my $ff = PDFJ::Form::fieldflag(%ff);
+       my($fwidth, $c_light, $c_medium, $c_dark, $c_fill) = 
+               PDFJ::Form::framespec($spec);
+       my $mp = $docobj->new_minipage($width, $height);
+       my $shape = PDFJ::Shape->new;
+       PDFJ::Form::makeframe($shape, 0, 0, $width, $height, $fwidth, $c_dark, 
+               $c_light, $c_fill);
+       $shape->show($mp, 0, 0);
+       my $value = $spec->{value};
+       if( $value ne '' ) {
+               $mp->addcontents("/Tx BMC ");
+               my $text = PDFJ::Text->new($value, PDFJ::TextStyle->new(font => $font, 
+               fontsize => $fontsize));
+               $text->show($mp, 0, $height / 2, ($spec->{multiline} ? 'tl' : 'ml'));
+               $mp->addcontents("EMC ");
+       }
+       my %dict = (
+               FT => name('Tx'),
+               T  => textstring($name),
+               F  => $f,
+               Ff => $ff,
+               Rect => [0, 0, $width, $height],
+               DA => string("/$fname $fontsize Tf 0 g"),
+               DR => dictionary({Font => dictionary(
+                       {$fname => $docobj->_font($fname)})}),
+               AP => dictionary({N => $mp->xobject}),
+               V => textstring($value),
+               DV => textstring($value),
+               MK => dictionary({BC => [$c_light->numarray], 
+                       BG => [$c_fill->numarray]}),
+               BS => dictionary({Type => name('Border'), W => $fwidth, 
+                       S => name('I')}),
+               );
+       $dict{MaxLen} = $spec->{maxlen} if $spec->{maxlen};
+       my $self = 
+               bless {name => $name, width => $width, height => $height}, $class;
+       $self->{fieldobj} = PDFJ::Form::makefieldobj($docobj, %dict);
+       $self;
+}
+
+#-------------------
+package PDFJ::Field::Button;
+use Carp;
+use strict;
+use PDFJ::Object;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Field);
+
+my %ButtonFlag = (
+       Include_Exclude => 1,
+       IncludeNoValueFields => 2,
+       ExportFormat => 3,
+       GetMethod => 4,
+       SubmitCoordinates => 5,
+);
+
+sub setbuttonflag {
+       my($flag, $flagname) = @_;
+       $flag |= 1 << ($ButtonFlag{$flagname} - 1);
+       $flag;
+}
+
+sub new {
+       my($class, $docobj, $spec) = @_;
+       my $type = $spec->{type};
+       my($buttontype, $name, $width, $height, $font, $fontsize, $caption) = map 
+               {$spec->{$_} or croak "missing $_ spec for $type field"}
+               qw(buttontype name width height font fontsize caption);
+       my $fname = $font->{name} || $font->{zname};
+       my $action;
+       if( $buttontype eq 'Submit' ) {
+               my $fields;
+               my $flags = 0;
+               if( $spec->{url} ) {
+                       $action = {S => name('SubmitForm'), F => string($spec->{url})};
+               } else {
+                       croak "missing url spec for submit button field";
+               }
+               $fields = [map {string($_)} @{$spec->{fields}}]
+                       if $spec->{fields};
+               $flags = setbuttonflag($flags, 'Include_Exclude')
+                       if $spec->{exclude};
+               $flags = setbuttonflag($flags, 'IncludeNoValueFields')
+                       if $spec->{includenovaluefields};
+               if( $spec->{format} =~ /^FDF$/i ) { 
+                       # default
+               } elsif( $spec->{format} =~ /^POST$/i ) { 
+                       $flags = setbuttonflag($flags, 'ExportFormat');
+               } elsif( $spec->{format} =~ /^GET$/i ) { 
+                       $flags = setbuttonflag($flags, 'ExportFormat');
+                       $flags = setbuttonflag($flags, 'GetMethod');
+               }
+               if( $spec->{submitcoordinates} ) {
+                       croak "cannot specify submitcoordinates for FDF"
+                               if $spec->{format} !~ /^POST$/i && 
+                               $spec->{format} !~ /^GET$/i;
+                       $flags = setbuttonflag($flags, 'SubmitCoordinates');
+               }
+               $action->{Fields} = $fields if $fields;
+               $action->{Flags} = $flags if $flags;
+       } elsif( $buttontype eq 'Reset' ) {
+               my $fields;
+               my $flags = 0;
+               $action = {S => name('ResetForm')};
+               $fields = [map {string($_)} @{$spec->{fields}}]
+                       if $spec->{fields};
+               $flags = setbuttonflag($flags, 'Include_Exclude')
+                       if $spec->{exclude};
+               $action->{Fields} = $fields if $fields;
+               $action->{Flags} = $flags if $flags;
+       } elsif( $buttontype eq 'Import' ) {
+               if( $spec->{file} ) {
+                       $action = {S => name('ImportData'), F => string($spec->{file})};
+               } else {
+                       croak "missing file spec for submit button field";
+               }
+       } elsif( $buttontype eq 'JavaScript' ) {
+               if( $spec->{javascript} ) {
+                       $action = {S => name('JavaScript'), JS => string($spec->{javascript})};
+               } else {
+                       croak "missing file spec for submit button field";
+               }
+       } else {
+               croak "unknown buttontype: $buttontype";
+       }
+       my $f = PDFJ::Form::anotflag($spec);
+       my %ff;
+       PDFJ::Form::setcommonflag(\%ff, $spec);
+       $ff{Pushbutton} = 1;
+       my $ff = PDFJ::Form::fieldflag(%ff);
+       my($fwidth, $c_light, $c_medium, $c_dark, $c_fill) = 
+               PDFJ::Form::framespec($spec, 1);
+       my $mp = $docobj->new_minipage($width, $height);
+       my $shape = PDFJ::Shape->new;
+       PDFJ::Form::makeframe($shape, 0, 0, $width, $height, $fwidth, $c_light, $c_dark, $c_fill);
+       $shape->show($mp, 0, 0);
+       PDFJ::Text->new($caption, PDFJ::TextStyle->new(font => $font, 
+               fontsize => $fontsize))
+               ->show($mp, $width / 2, $height / 2, 'cm');
+       my %dict = (
+               FT => name('Btn'),
+               T  => textstring($name),
+               F  => $f,
+               Ff => $ff,
+               Rect => [0, 0, $width, $height],
+               DA => string("/$fname $fontsize Tf 0 g"),
+               DR => dictionary({Font => dictionary(
+                       {$fname => $docobj->_font($fname)})}),
+               AP => dictionary({N => $mp->xobject}),
+               A => dictionary($action),
+               MK => dictionary({BC => [$c_light->numarray], 
+                       BG => [$c_fill->numarray], CA => textstring($caption)}),
+               BS => dictionary({Type => name('Border'), W => $fwidth, 
+                       S => name('B')}),
+               );
+       my $self = 
+               bless {name => $name, width => $width, height => $height}, $class;
+       $self->{fieldobj} = PDFJ::Form::makefieldobj($docobj, %dict);
+       $self;
+}
+
+#-------------------
+package PDFJ::Field::CheckBox;
+use Carp;
+use strict;
+use PDFJ::Object;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Field);
+
+sub new {
+       my($class, $docobj, $spec) = @_;
+       my $type = $spec->{type};
+       my($name, $width, $height, $size) = map 
+               {$spec->{$_} or croak "missing $_ spec for $type field"}
+               qw(name width height size);
+       my $f = PDFJ::Form::anotflag($spec);
+       my %ff;
+       PDFJ::Form::setcommonflag(\%ff, $spec);
+       my $ff = PDFJ::Form::fieldflag(%ff);
+
+       my $left = $width/2 - $size/2;
+       my $bottom = $height/2 - $size/2;
+
+       my($fwidth, $c_light, $c_medium, $c_dark, $c_fill) = 
+               PDFJ::Form::framespec($spec);
+       my $mp_on = $docobj->new_minipage($width, $height);
+       my $shape_on = PDFJ::Shape->new;
+       PDFJ::Form::makeframe($shape_on, $left, $bottom, $size, $size, $fwidth, 
+               $c_dark, $c_light, $c_fill);
+       # check mark
+       $shape_on->polygon([
+               $left + $size * 0.1, $bottom + $size * 0.65,
+               $left + $size * 0.3, $bottom + $size * 0.15,
+               $left + $size * 0.9, $bottom + $size * 0.85,
+               $left + $size * 0.33, $bottom + $size * 0.35,
+               ], 'f');
+       $shape_on->show($mp_on, 0, 0);
+
+       my $mp_off = $docobj->new_minipage($width, $height);
+       my $shape_off = PDFJ::Shape->new;
+       PDFJ::Form::makeframe($shape_off, $left, $bottom, $size, $size, $fwidth, 
+               $c_dark, $c_light, $c_fill);
+       $shape_off->show($mp_off, 0, 0);
+       
+       my $default = $spec->{on} ? 'On' : 'Off';
+       
+       my %dict = (
+               FT => name('Btn'),
+               T  => textstring($name),
+               F  => $f,
+               Ff => $ff,
+               Rect => [0, 0, $width, $height],
+               V  => name($default),
+               DV => name($default),
+               AS => name($default),
+               AP => dictionary({N => dictionary({
+                       On => $mp_on->xobject, Off => $mp_off->xobject
+                       })}),
+               );
+       my $self = 
+               bless {name => $name, width => $width, height => $height}, $class;
+       $self->{fieldobj} = PDFJ::Form::makefieldobj($docobj, %dict);
+       $self;
+}
+
+
+#-------------------
+package PDFJ::Field::RadioButton;
+use Carp;
+use strict;
+use PDFJ::Object;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Field);
+
+sub new {
+       my($class, $docobj, $spec) = @_;
+       my $type = $spec->{type};
+       my($name, $width, $height, $size, $values) = map 
+               {$spec->{$_} or croak "missing $_ spec for $type field"}
+               qw(name width height size values);
+       my $f = PDFJ::Form::anotflag($spec);
+       my %ff;
+       PDFJ::Form::setcommonflag(\%ff, $spec);
+       $ff{Radio} = 1;
+       $ff{NoToggleToOff} = $spec->{toggletooff} ? 0 : 1;
+       $ff{RadiosInUnison} = $spec->{radiosinunison};
+       my $ff = PDFJ::Form::fieldflag(%ff);
+
+       my($fwidth, $c_light, $c_medium, $c_dark, $c_fill) = 
+               PDFJ::Form::framespec($spec);
+       my $mp_on = $docobj->new_minipage($width, $height);
+       my $shape_on = PDFJ::Shape->new;
+       PDFJ::Form::makecircleframe($shape_on, $width / 2, $height / 2, $size / 2,
+               $fwidth, $c_dark, $c_medium, $c_light, $c_fill);
+       $shape_on->circle($width / 2, $height / 2, $size / 2 - 3, 'f', undef,
+               PDFJ::ShapeStyle->new(fillcolor => PDFJ::Color->new(0)));
+       $shape_on->show($mp_on, 0, 0);
+       
+       my $mp_off = $docobj->new_minipage($width, $height);
+       my $shape_off = PDFJ::Shape->new;
+       PDFJ::Form::makecircleframe($shape_off, $width / 2, $height / 2, $size / 2,
+               $fwidth, $c_dark, $c_medium, $c_light, $c_fill);
+       $shape_off->show($mp_off, 0, 0);
+
+       my $groupobj = PDFJ::Form::makefieldobj($docobj,
+               FT => name('Btn'),
+               T  => textstring($name),
+               F  => $f,
+               Ff => $ff,
+               Kids => [],
+               );
+       $docobj->add_field($groupobj);
+       
+       my @objects;
+       for my $value(@$values) {
+               my $fieldobj = PDFJ::Form::makefieldobj($docobj,
+                       Parent => $groupobj,
+                       Rect => [0, 0, $width, $height],
+                       F  => $f,
+                       Ff => $ff,
+                       AS => name('Off'),
+                       AP => dictionary({N => dictionary({
+                               $value => $mp_on->xobject, Off => $mp_off->xobject
+                               })}),
+                       );
+               $groupobj->get('Kids')->push($fieldobj);
+               my $obj = 
+                       bless {name => $name, width => $width, height => $height,
+                       fieldobj => $fieldobj, value => $value}, $class;
+               push @objects, $obj;
+       }
+       @objects;
+}
+
+sub value { $_[0]->{value} }
+
+#-------------------
+package PDFJ::Field::ComboBox;
+use Carp;
+use strict;
+use PDFJ::Object;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Field);
+
+sub new {
+       my($class, $docobj, $spec) = @_;
+       my $type = $spec->{type};
+       my($name, $width, $height, $values, $font, $fontsize) = map 
+               {$spec->{$_} or croak "missing $_ spec for $type field"}
+               qw(name width height values font fontsize);
+       my $fname = $font->{name} || $font->{zname};
+       my $f = PDFJ::Form::anotflag($spec);
+       my %ff;
+       PDFJ::Form::setcommonflag(\%ff, $spec);
+       $ff{Combo} = $spec->{list} ? 0 : 1;
+       $ff{Edit} = $spec->{edit};
+       $ff{MultiSelect} = $spec->{multiselect};
+       $ff{DoNotSpellCheck} = $spec->{donotspellcheck};
+       $ff{CommitOnSelChange} = $spec->{commitonselchange};
+       my $ff = PDFJ::Form::fieldflag(%ff);
+       my $default = exists $spec->{default} ? $spec->{default} : $values->[0];
+       my($fwidth, $c_light, $c_medium, $c_dark, $c_fill) = 
+               PDFJ::Form::framespec($spec);
+       my $mp = $docobj->new_minipage($width, $height);
+       my $shape = PDFJ::Shape->new;
+       PDFJ::Form::makeframe($shape, 0, 0, $width, $height, $fwidth, $c_dark, 
+               $c_light, $c_fill);
+       $shape->show($mp, 0, 0);
+       if( $spec->{list} ) {
+               $mp->addcontents("/Tx BMC ");
+               my $ypos = $height;
+               my $yadv = $fontsize * 1.2;
+               for my $value(@$values) {
+                       last if $ypos <= 0;
+                       my $text = PDFJ::Text->new($value,
+                               PDFJ::TextStyle->new(font => $font, fontsize => $fontsize, 
+                               ));
+                       $text->show($mp, 0, $ypos, 'tl');
+                       $ypos -= $yadv;
+               }
+               $mp->addcontents("EMC ");
+       }
+
+       my %dict = (
+               FT => name('Ch'),
+               T  => textstring($name),
+               F  => $f,
+               Ff => $ff,
+               Rect => [0, 0, $width, $height],
+               DA => string("/$fname $fontsize Tf 0 g"),
+               DR => dictionary({Font => dictionary(
+                       {$fname => $docobj->_font($fname)})}),
+               V  => textstring($default),
+               DV => textstring($default),
+               Opt => [map {textstring($_)} @$values],
+               AP => dictionary({N => $mp->xobject}),
+               MK => dictionary({BC => [$c_light->numarray], 
+                       BG => [$c_fill->numarray]}),
+               );
+       my $self = 
+               bless {name => $name, width => $width, height => $height}, $class;
+       $self->{fieldobj} = PDFJ::Form::makefieldobj($docobj, %dict);
+       $self;
+}
+
+1;
diff --git a/lib/PDFJ/Matrix.pm b/lib/PDFJ/Matrix.pm
new file mode 100644 (file)
index 0000000..6c25290
--- /dev/null
@@ -0,0 +1,428 @@
+# PDFJ/Matrix.pm - PDFJ::Block::Matrix
+# 2005 <nakajima@netstock.co.jp>
+# automatically required by Block()
+
+#--------------------------------------------------------------------------
+package PDFJ::Block::Matrix;
+use Carp;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Block);
+
+sub _checkobjects {
+       my($self) = @_;
+       my $objects = $self->{objects};
+       if( ref($objects) ne 'ARRAY' ) {
+               $self->{objects} = [[$objects]];
+               $objects = $self->{objects};
+       } elsif( !grep {ref($_) eq 'ARRAY'} @$objects ) {
+               $self->{objects} = [$objects];
+               $objects = $self->{objects};
+       }
+       for( my $j = 0; $j < @$objects; $j++ ) {
+               my $obj = $objects->[$j];
+               croak "Matrix objects must be array of array: $obj" 
+                       unless ref($obj) eq 'ARRAY';
+               for( my $k = 0; $k < @$obj; $k++ ) {
+                       if( PDFJ::Util::objisa($obj->[$k], 'PDFJ::BlockElement') ) {
+                               # OK
+                       } elsif( $obj->[$k] =~ /^\d+$/ ) {
+                               $obj->[$k] = PDFJ::BlockSkip::BlockSkip($obj->[$k]);
+                       } else {
+                               croak "illegal Matrix element: $obj->[$k]"
+                       }
+               }
+       }
+       #print "_checkobjects OK\n";
+}
+
+sub _calcsize {
+       my($self) = @_;
+       $self->_calccol;
+       $self->_calcrow;
+}
+
+sub _contcell { my $tmp; bless \$tmp, 'PDFJ::Matrix::ContCell'; }
+sub _iscontcell { ref($_[0]) eq 'PDFJ::Matrix::ContCell'; }
+
+sub _trimobjects {
+       my($self) = @_;
+       return if $self->{objectstrimmed};
+       $self->{postnobreak} = [];
+       my $matrix = $self->{objects};
+       my $trimed;
+       my $maxrows;
+       for( my $j = 0; $j < @$matrix; $j++ ) {
+               my $row = $matrix->[$j];
+               my $trow = [];
+               push @$trimed, $trow;
+               for( my $k = 0; $k < @$row; $k++ ) {
+                       my $cell = $row->[$k];
+                       push @$trow, $cell;
+                       my $colspan = $cell->colspan || 1;
+                       while( $colspan-- > 1 ) {
+                               push @$trow, _contcell;
+                       }
+                       if( $k == $#$row && $cell->postnobreak ) {
+                               $self->{postnobreak}[$j] = 1;
+                       }
+               }
+               $maxrows = @$trow if $maxrows < @$trow;
+       }
+       for( my $k = 0; $k < $maxrows; $k++ ) {
+               for( my $j = 0; $j < @$trimed; $j++ ) {
+                       my $cell = $trimed->[$j][$k];
+                       if( $cell && !_iscontcell($cell) ) {
+                               my $rowspan = $cell->rowspan || 1;
+                               my $colspan = $cell->colspan || 1;
+                               for( my $r = 1; $r < $rowspan; $r++ ) {
+                                       if( _iscontcell($trimed->[$j + $r][$k]) ) {
+                                               push @{$self->{collisioncells}}, [$j + $r, $k];
+                                       } else {
+                                               for(1..$colspan) {
+                                                       if( $k < @{$trimed->[$j + $r]} ) {
+                                                               splice @{$trimed->[$j + $r]}, $k, 0, _contcell;
+                                                       } else {
+                                                               $trimed->[$j + $r][$k] = _contcell;
+                                                       }
+                                               }
+                                       }
+                               }
+                               for( my $r = 0; $r < $rowspan - 1; $r++ ) {
+                                       $self->{postnobreak}[$j + $r] = 1;
+                               }
+                       }
+               }
+       }
+       for( my $j = 0; $j < @$trimed; $j++ ) {
+               my $row = $trimed->[$j];
+               for( my $k = 0; $k < @$row; $k++ ) {
+#print "[$j, $k] ", $row->[$k], "\n";
+                       push @{$self->{emptycells}}, [$j, $k] unless $row->[$k];
+               }
+       }
+       $self->{objectstrimmed} = 1;
+       $self->{objects} = $trimed;
+}
+
+sub _widths2width {
+       my($self) = @_;
+       my $widths = $self->{widths};
+       $self->{width} = 0;
+       grep {$self->{width} += $_} @$widths;
+       if( @$widths > 1 ) {
+               my $skip = $self->{direction} =~ /V$/ ? 
+                       $self->{style}{colskip} : $self->{style}{rowskip};
+               $self->{width} += $skip * (@$widths - 1) 
+       }
+}
+
+sub _heights2height {
+       my($self) = @_;
+       my $heights = $self->{heights};
+       $self->{height} = 0;
+       grep {$self->{height} += $_} @$heights;
+       if( @$heights > 1 ) {
+               my $skip = $self->{direction} =~ /^V/ ? 
+                       $self->{style}{colskip} : $self->{style}{rowskip};
+               $self->{height} += $skip * (@$heights - 1) 
+       }
+}
+
+sub _calccol {
+       my($self) = @_;
+       return unless @{$self->{objects}};
+       $self->_trimobjects;
+       my $matrix = $self->{objects};
+       my $adjust = $self->{style}{adjust};
+       my $direction = $self->{direction};
+#print "_calccol\n";
+       my $maxrows = 0;
+       for( my $j = 0; $j < @$matrix; $j++ ) {
+               my $row = $matrix->[$j];
+               $maxrows = @$row if $maxrows < @$row;
+       }
+       my @maxsize;
+       my $k = 0;
+       my @row;
+       for( my $j = 0; $j < @$matrix; $j++ ) {
+               push @row, $matrix->[$j][$k];
+       }
+       while(@row) {
+#print "----------\n";
+               my $maxsize = 0;
+               my @left;
+               my $one = 0;
+               for my $cell( @row ) {
+                       next if !$cell || _iscontcell($cell);
+                       my($span, $size);
+                       if( ref($cell) eq 'ARRAY' ) {
+                               ($span, $size) = @$cell;
+                       } else {
+                               $span = $cell->colspan || 1;
+                               $size = $direction =~ /V$/ ? $cell->width : $cell->height;
+                       }
+#print " [$span, $size]\n";
+                       if( $span > 1 ) {
+                               push @left, [$span, $size];
+                       } else {
+                               $maxsize = $size if $maxsize < $size;
+                               $one = 1;
+                       }
+               }
+               @row = ();
+               for my $cell( @left ) {
+                       my($span, $size) = @$cell;
+                       push @row, [$span - 1, $size - $maxsize];
+               }
+               push @maxsize, $maxsize;
+               if( $one ) {
+                       $k++;
+                       if( $k < $maxrows ) {
+                               for( my $j = 0; $j < @$matrix; $j++ ) {
+                                       push @row, $matrix->[$j][$k];
+                               }
+                       }
+               }
+       }
+       if( $direction =~ /V$/ ) {
+#print "widths: @maxsize\n";
+               $self->{widths} = \@maxsize;
+               $self->_widths2width;
+       } else {
+#print "heights: @maxsize\n";
+               $self->{heights} = \@maxsize;
+               $self->_heights2height;
+       }
+       if( $adjust ) {
+               my $skip = $self->{style}{colskip};
+               for( my $j = 0; $j < @$matrix; $j++ ) {
+                       my $row = $matrix->[$j];
+                       for( my $k = 0; $k < @$row; $k++ ) {
+                               my $cell = $row->[$k];
+                               next if !$cell || _iscontcell($cell);
+                               my $span = $cell->colspan || 1;
+                               my $size = 0;
+                               for( my $m = 0; $m < $span; $m++ ) {
+                                       $size += $skip if $m > 0;
+                                       $size += $maxsize[$k + $m];
+                               }
+                               if( $direction =~ /V$/ ) {
+                                       if( UNIVERSAL::can($cell, 'adjustwidth') ) {
+#print "adjust [$j, $k] width to $size\n";
+                                               $cell->adjustwidth($size);
+                                       }
+                               } else {
+                                       if( UNIVERSAL::can($cell, 'adjustheight') ) {
+#print "adjust [$j, $k] height to $size\n";
+                                               $cell->adjustheight($size);
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+sub _calcrow {
+       my($self) = @_;
+       return unless @{$self->{objects}};
+       $self->_trimobjects;
+       my $matrix = $self->{objects};
+       my $adjust = $self->{style}{adjust};
+       my $direction = $self->{direction};
+#print "_calcrow\n";
+       my @maxsize;
+       my $j = 0;
+       my @row = @{$matrix->[$j]};
+       while(@row) {
+#print "----------\n";
+               my $maxsize = 0;
+               my @left;
+               my $one = 0;
+               for my $cell( @row ) {
+                       next if !$cell || _iscontcell($cell);
+                       my($span, $size);
+                       if( ref($cell) eq 'ARRAY' ) {
+                               ($span, $size) = @$cell;
+                       } else {
+                               $span = $cell->rowspan || 1;
+                               $size = $direction =~ /^V/ ? $cell->width : $cell->height;
+                       }
+#print " [$span, $size]\n";
+                       if( $span > 1 ) {
+                               push @left, [$span, $size];
+                       } else {
+                               $maxsize = $size if $maxsize < $size;
+                               $one = 1;
+                       }
+               }
+               @row = ();
+               for my $cell( @left ) {
+                       my($span, $size) = @$cell;
+                       push @row, [$span - 1, $size - $maxsize];
+               }
+               push @maxsize, $maxsize;
+               if( $one ) {
+                       $j++;
+                       if( $j < @$matrix ) {
+                               push @row, @{$matrix->[$j]};
+                       }
+               }
+       }
+       if( $direction =~ /^V/ ) {
+#print "widths: @maxsize\n";
+               $self->{widths} = \@maxsize;
+               $self->_widths2width;
+       } else {
+#print "heights: @maxsize\n";
+               $self->{heights} = \@maxsize;
+               $self->_heights2height;
+       }
+       if( $adjust ) {
+               my $skip = $self->{style}{rowskip};
+               for( my $j = 0; $j < @$matrix; $j++ ) {
+                       my $row = $matrix->[$j];
+                       for( my $k = 0; $k < @$row; $k++ ) {
+                               my $cell = $row->[$k];
+                               next if !$cell || _iscontcell($cell);
+                               my $span = $cell->rowspan || 1;
+                               my $size = 0;
+                               for( my $m = 0; $m < $span; $m++ ) {
+                                       $size += $skip if $m > 0;
+                                       $size += $maxsize[$j + $m];
+                               }
+                               if( $direction =~ /^V/ ) {
+                                       if( UNIVERSAL::can($cell, 'adjustwidth') ) {
+#print "adjust [$j, $k] width to $size\n";
+                                               $cell->adjustwidth($size);
+                                       }
+                               } else {
+                                       if( UNIVERSAL::can($cell, 'adjustheight') ) {
+#print "adjust [$j, $k] height to $size\n";
+                                               $cell->adjustheight($size);
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+sub widths { $_[0]->{widths} }
+sub heights { $_[0]->{heights} }
+
+sub breakable {
+       my($self, $blockdirection) = @_;
+       $self->nobreak ? 0 : 1;
+}
+
+sub _show {
+       my($self, $page, $x, $y) = @_;
+       my $direction = $self->{direction};
+       my $colskip = $self->{style}{colskip};
+       my $rowskip = $self->{style}{rowskip};
+       $self->_showbox($page, $x, $y);
+       $x += $self->padding + $self->{xpreshift};
+       $y -= $self->padding + $self->{ypreshift};
+       my($dx, $showalign) = (1, 'tl');
+       if( $direction =~ /R/ ) {
+               $x += $self->{width};
+               ($dx, $showalign) = (-1, 'tr');
+       }
+       my($ox, $oy) = ($x, $y);
+       my $matrix = $self->{objects};
+       if( $direction =~ /V$/ ) {
+               for( $y = $oy, my $j = 0; 
+                       $j < @$matrix; 
+                       $y -= $self->{heights}[$j] + $rowskip, $j++ ) {
+                       my $row = $matrix->[$j];
+                       for( $x = $ox, my $k = 0; 
+                               $k < @$row; 
+                               $x += $dx * ($self->{widths}[$k] + $colskip), $k++ ) {
+                               my $cell = $row->[$k];
+                               if( PDFJ::Util::objisa($cell, 'PDFJ::Showable') ) {
+                                       $cell->show($page, $x, $y, $showalign);
+                               }
+                       }
+               }
+       } else { # $direction =~ /^V/
+               for( $x = $ox, my $j = 0; 
+                       $j < @$matrix; 
+                       $x += $dx * ($self->{widths}[$j] + $rowskip), $j++ ) {
+                       my $row = $matrix->[$j];
+                       for( $y = $oy, my $k = 0; 
+                               $k < @$row; 
+                               $y -= $self->{heights}[$k] + $colskip, $k++ ) {
+                               my $cell = $row->[$k];
+                               if( PDFJ::Util::objisa($cell, 'PDFJ::Showable') ) {
+                                       $cell->show($page, $x, $y, $showalign);
+                               }
+                       }
+               }
+       }
+}
+
+sub break {
+       my($self, $sizes)
+               = PDFJ::Util::listargs2ref(1, 0, 
+                       PDFJ::Util::methodargs([qw(sizes)], @_));
+       my @sizes = @$sizes;
+       my $unbreakable = $self->nobreak;
+       my $repeatheader = $self->repeatheader;
+       my $lastsize = $sizes[$#sizes];
+       my $skip = $self->{direction} =~ /^V/ ? 
+               $self->{style}{colskip} : $self->{style}{rowskip};
+       my $direction = $self->{direction} =~ /^V/ ? 'H' : 'V';
+       my @result;
+       my @objects = $direction eq 'H' ?
+               map {[$self->{objects}[$_], $self->{widths}[$_], 
+               $self->{postnobreak}[$_]]} (0..$#{$self->{objects}}) :
+               map {[$self->{objects}[$_], $self->{heights}[$_], 
+               $self->{postnobreak}[$_]]} (0..$#{$self->{objects}});
+       my @repeatheader = $repeatheader ? 
+                       @objects[0..($repeatheader - 1)] : ();
+       while( @objects ) {
+               my $size = @sizes ? shift(@sizes) : $lastsize;
+               my(@bobjects);
+               if( $unbreakable ) {
+                       @bobjects = splice @objects if $size >= $self->size($direction);
+               } else {
+                       my $bsize = $self->padding * 2;
+                       while( $bsize < $size && @objects ) {
+                               my $osize = $objects[0][1];
+                               my $skipsize = @bobjects ? $skip : 0;
+                               if( $bsize + $skipsize + $osize <= $size ) {
+                                       push @bobjects, shift(@objects);
+                                       $bsize += $skipsize + $osize;
+                               } else {
+                                       last;
+                               }
+                       }
+               }
+               while( @bobjects && $bobjects[$#bobjects][2] && @objects ) {
+                       unshift @objects, pop(@bobjects);
+               }
+               if( !@bobjects && !@sizes ) {
+                       carp "break fails";
+                       return;
+               }
+               if( $repeatheader && (@bobjects >= $repeatheader) && @objects ) {
+                       unshift @objects, @repeatheader;
+               }
+               my $bobj;
+               %$bobj = %$self;
+               bless $bobj, ref($self);
+               $bobj->{objects} = [map {$bobjects[$_][0]} (0..$#bobjects)];
+               $bobj->{postnobreak} = [map {$bobjects[$_][2]} (0..$#bobjects)];
+               if( $direction eq 'H' ) {
+                       $bobj->{widths} = [map {$bobjects[$_][1]} (0..$#bobjects)];
+                       $bobj->_widths2width;
+               } else {
+                       $bobj->{heights} = [map {$bobjects[$_][1]} (0..$#bobjects)];
+                       $bobj->_heights2height;
+               }
+               push @result, $bobj;
+       }
+       @result;
+}
+
+1;
diff --git a/lib/PDFJ/OTF.pm b/lib/PDFJ/OTF.pm
new file mode 100644 (file)
index 0000000..9d480e1
--- /dev/null
@@ -0,0 +1,91 @@
+# PDFJ::OTF - OpenType font support
+# 2005 Sey <nakajima@netstock.co.jp>
+
+package PDFJ::OTF;
+use PDFJ::TTF;
+use PDFJ::CFF;
+use PDFJ::Unicode;
+use Carp;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::TTF);
+
+sub read_CFF {
+       my($self) = @_;
+       my $tag = 'CFF ';
+       return if exists $self->{table}{$tag} && !$self->reload;
+       my $handle = $self->open;
+       $self->seek_table($tag);
+       $self->{table}{$tag} = PDFJ::CFF->new($handle);
+}
+
+sub dump_CFF {
+       my($self, $handle) = @_;
+       print $handle "\ntable(CFF )\n";
+       $self->{table}{'CFF '}->dump($handle);
+}
+
+sub subset {
+       my($self, $encoding, @unicodes) = @_; 
+       my $result;
+       my @cids = map {PDFJ::Unicode::unicodetocid($_, $encoding)} @unicodes;
+       my @tags = grep {exists $self->{tabledir}{$_}}
+               ('head','hhea','maxp','cvt ','prep','hmtx','fpgm','CFF ');
+       my %tabledata;
+       for my $tag(sort @tags) {
+               my $data;
+               if( $tag eq 'CFF ' ) {
+                       $data = $self->{table}{'CFF '}->subset(\@cids);
+               } else {
+                       my $mname = "subset_$tag";
+                       $mname =~ s#/#_#g;
+                       $mname =~ s# #_#g;
+                       my $func = $self->can($mname);
+                       $data = $func ? $self->$func() : $self->whole_table($tag);
+               }
+               my $length = length($data);
+               $data .= "\x00" x ((4 - $length % 4) % 4);
+               $tabledata{$tag} = {
+                       data => $data,
+                       length => $length,
+                       checksum => PDFJ::TTutil::_checksum($data),
+               };
+       }
+       # subtable
+       my $tables = @tags;
+       my($range, $sel);
+       for( my $tmp = 1, my $j = 0; $tmp <= $tables; $tmp *= 2, $j++ ) {
+               $range = $tmp;
+               $sel = $j;
+       }
+       $range *= 16;
+       $result = pack "Nnnnn", 
+               $self->{subtable}{scaler_type}, 
+               $tables,
+               $range,
+               $sel,
+               ($tables * 16 - $range);
+       # tabledir
+       for my $tag(sort @tags) {
+               $tabledata{$tag}{diroff} = length($result) + 8;
+               $result .= pack "A4NNN",
+                       $tag,
+                       $tabledata{$tag}{checksum},
+                       0, # set offset later
+                       $tabledata{$tag}{length};
+       }
+       # tables
+       for my $tag(@tags) {
+               $tabledata{$tag}{offset} = length $result;
+               substr($result, $tabledata{$tag}{diroff}, 4) = 
+                       pack "N", $tabledata{$tag}{offset};
+               $result .= $tabledata{$tag}{data};
+       }
+       # checkSumAdjustment
+       my $csa = 0xb1b0afba - PDFJ::TTutil::_checksum($result);
+       $csa += 4294967296 if $csa < 0;
+       substr($result, $tabledata{head}{offset} + 8, 4) = pack "N", $csa;
+       $result;
+}
+
+1;
index e6c6037..dcf0c00 100644 (file)
@@ -6,19 +6,21 @@ use Exporter;
 use vars qw($VERSION @ISA @EXPORT);
 @ISA = qw(Exporter);
 
-$VERSION = 0.2;
+$VERSION = 0.4;
 
 @EXPORT = qw(
-       null bool number string textstring name array dictionary stream 
-       contents_stream
+       null bool number numbers string textstring datestring name array 
+       dictionary stream contents_stream
 );
 
 # functions to generate an object
 sub null   {PDFJ::Obj::null->new(@_)}
 sub bool   {PDFJ::Obj::bool->new(@_)}
 sub number {PDFJ::Obj::number->new(@_)}
+sub numbers {map {PDFJ::Obj::number->new($_)} @_}
 sub string {PDFJ::Obj::string->new(@_)}
 sub textstring {PDFJ::Obj::textstring->new(@_)}
+sub datestring {PDFJ::Obj::datestring->new(@_)}
 sub name   {PDFJ::Obj::name->new(@_)}
 sub array  {PDFJ::Obj::array->new(@_)}
 sub dictionary {PDFJ::Obj::dictionary->new(@_)}
@@ -26,6 +28,30 @@ sub stream {PDFJ::Obj::stream->new(@_)}
 sub contents_stream {PDFJ::Obj::contents_stream->new(@_)}
 
 #---------------------------------------
+package PDFJ::ObjTable;
+use strict;
+
+sub new {
+       my($class) = @_;
+       bless {objlist => [undef]}, $class;
+}
+
+sub lastobjnum {
+       my $self = shift;
+       $#{$self->{objlist}};
+}
+
+sub get {
+       my($self, $idx) = @_;
+       $self->{objlist}->[$idx];
+}
+
+sub set {
+       my($self, $idx, $obj) = @_;
+       $self->{objlist}->[$idx] = $obj;
+}
+
+#---------------------------------------
 # virtual base class 
 package PDFJ::Obj;
 
@@ -37,6 +63,14 @@ sub new {
        $self;
 }
 
+sub unused {
+       my($self, $unused) = @_;
+       if( defined $unused ) {
+               $self->{unused} = $unused;
+       }
+       $self->{unused};
+}
+
 sub indirect {
        my($self, $objtable) = @_;
        unless( $self->{objnum} ) {
@@ -55,26 +89,37 @@ sub indirectnum {
 }
 
 sub output {
-       my $self = shift;
+       my($self, $rc4key, $filter) = @_;
        my $inum = $self->indirectnum;
        if( $inum ) {
                "$inum R";
        } else {
-               $self->{output} || $self->makeoutput;
+               $self->{output} || $self->makeoutput($rc4key, $filter);
        }
 }
 
 sub print {
-       my($self, $handle) = @_;
+       my($self, $handle, $encryptkey, $filter) = @_;
        my $inum = $self->indirectnum;
-       return unless $inum;
-       my $output = $self->{output} || $self->makeoutput;
-       print $handle "$inum obj\n$output\nendobj\n\n";
+       return 0 unless $inum;
+       my $rc4key;
+       if( $encryptkey ) {
+               require Digest::MD5;
+               my $md5obj = Digest::MD5->new;
+               $md5obj->add($encryptkey . substr(pack("V", $inum + 0), 0, 3) . 
+                       "\x00\x00");
+               $rc4key = substr($md5obj->digest, 0, 10);
+       }
+       my $output = $self->{output} || $self->makeoutput($rc4key, $filter);
+#      print $handle "$inum obj\n$output\nendobj\n\n";
+       my $str = "$inum obj\n$output\nendobj\n\n";
+       print $handle $str;
+       return length($str);
 }
 
 sub _toobj {
        my($self, $value) = @_;
-       return $value if UNIVERSAL::isa($value, 'PDFJ::Obj');
+       return $value if PDFJ::Util::objisa($value, 'PDFJ::Obj');
        if( ref($value) eq 'ARRAY' ) {
                $value = PDFJ::Obj::array->new($value);
        } elsif( ref($value) eq 'HASH' ) {
@@ -117,7 +162,9 @@ use vars qw(@ISA);
 
 sub makeoutput {
        my $self = shift;
-       $self->{output} = $self->{value} + 0;
+       my $num = $self->{value} + 0;
+       $num = sprintf("%.14f", $num) if int($num) != $num;
+       $self->{output} = $num;
 }
 
 sub add {
@@ -132,18 +179,25 @@ use vars qw(@ISA);
 @ISA = qw(PDFJ::Obj);
 
 sub makeoutput {
-       my $self = shift;
-       if( !defined $self->{outputtype} || 
+       my($self, $rc4key, $filter) = @_;
+       my $value = $self->{value};
+       if( $rc4key ) {
+               if( $self->{outputtype} eq 'hexliteral' ) {
+                       $value = pack('H*', $value);
+               }
+               $value = PDFJ::Util::RC4($value, $rc4key);
+               $self->{outputtype} = 'hex';
+       } elsif( !defined $self->{outputtype} || 
                $self->{outputtype} !~ /^(literal|hex|hexliteral)$/ ) {
                $self->{outputtype} = 
-                       $self->{value} =~ /[\x80-\xff]/ ? 'hex' : 'literal';
+                       $value =~ /[^\x00-\x7f]/ ? 'hex' : 'literal';
        }
        if( $self->{outputtype} eq 'literal' ) {
-               $self->{output} = '(' . escape($self->{value}) . ')';
+               $self->{output} = '(' . escape($value) . ')';
        } elsif( $self->{outputtype} eq 'hexliteral' ) {
-               $self->{output} = '<' . $self->{value} . '>';
+               $self->{output} = '<' . $value . '>';
        } else {
-               $self->{output} = '<' . tohex($self->{value}) . '>';
+               $self->{output} = '<' . tohex($value) . '>';
        }
 }
 
@@ -170,6 +224,27 @@ use strict;
 use vars qw(@ISA);
 @ISA = qw(PDFJ::Obj::string);
 
+sub value2obj {
+       my $self = shift;
+       if( $self->{value} =~ /[^\x00-\x7f]/ ) {
+               $self->{value} = PDFJ::Util::tounicode($self->{value}, 1);
+       }
+}
+
+#---------------------------------------
+package PDFJ::Obj::datestring;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Obj::string);
+
+sub value2obj {
+       my $self = shift;
+       my @time = gmtime($self->{value} || time);
+       $time[4]++;
+       $time[5] += 1900;
+       $self->{value} = sprintf("D:%04d%02d%02d%02d%02d%02dZ", @time[5,4,3,2,1,0]);
+}
+
 #---------------------------------------
 package PDFJ::Obj::name;
 use strict;
@@ -199,8 +274,9 @@ sub value2obj {
 }
 
 sub makeoutput {
-       my $self = shift;
-       $self->{output} = '[' . join(' ', map {$_->output} @{$self->{value}}) . ']';
+       my($self, $rc4key, $filter) = @_;
+       $self->{output} = '[' . join(' ', map {$_->output($rc4key, $filter)} 
+               @{$self->{value}}) . ']';
 }
 
 sub get {
@@ -213,6 +289,11 @@ sub set {
        $self->{value}->[$idx] = $self->_toobj($obj);
 }
 
+sub insert {
+       my($self, $idx, $obj) = @_;
+       splice @{$self->{value}}, $idx, 0, $self->_toobj($obj);
+}
+
 sub push {
        my($self, $obj) = @_;
        push @{$self->{value}}, $self->_toobj($obj);
@@ -254,12 +335,18 @@ sub value2obj {
        }
 }
 
-sub makeoutput {
+sub nocrypt {
        my $self = shift;
+       $self->{nocrypt} = 1;
+}
+
+sub makeoutput {
+       my($self, $rc4key, $filter) = @_;
+       $rc4key = '' if $self->{nocrypt};
        my $href = $self->{value};
        $self->{output} = '<<' . 
-               join(' ', map {(PDFJ::Obj::name->new($_)->output,
-                       $href->{$_}->output)} keys %$href) . '>>';
+               join(' ', map {(PDFJ::Obj::name->new($_)->output($rc4key, $filter),
+                       $href->{$_}->output($rc4key, $filter))} keys %$href) . '>>';
 }
 
 sub exists {
@@ -277,6 +364,11 @@ sub set {
        $self->{value}->{$key} = $self->_toobj($obj);
 }
 
+sub keys {
+       my($self) = @_;
+       keys %{$self->{value}};
+}
+
 #---------------------------------------
 package PDFJ::Obj::stream;
 use strict;
@@ -290,34 +382,54 @@ sub value2obj {
 }
 
 sub makeoutput {
-       my $self = shift;
+       my($self, $rc4key, $filter) = @_;
        my $stream = ref($self->{stream}) eq 'ARRAY' ? 
                join('', @{$self->{stream}}) : $self->{stream};
        $self->{dictionary} = PDFJ::Obj::dictionary->new() 
                unless $self->{dictionary};
        $self->{dictionary}->set(
                Length => PDFJ::Obj::number->new(length($stream)) );
-       $self->{output} = $self->{dictionary}->output . " stream\n" . 
-               $stream . "\nendstream";
+       $stream = PDFJ::Util::RC4($stream, $rc4key) if $rc4key;
+       $self->{output} = $self->{dictionary}->output($rc4key, $filter) . 
+               " stream\n" . $stream . "\nendstream";
+}
+
+sub dictionary {
+       my $self = shift;
+       $self->{dictionary};
 }
 
 sub append {
        my($self, $data, $index) = @_;
-       $index += 0;
-       if( ref($self->{stream}) eq 'ARRAY' ) {
-               $self->{stream}->[$index] .= $data;
+       if( ref($data) eq 'ARRAY' ) {
+               for my $d(@$data) {
+                       append($self, $d, $index);
+               }
        } else {
-               $self->{stream} .= $data;
+               $index += 0;
+               $data = $data->output if PDFJ::Util::objisa($data, 'PDFJ::Obj');
+               if( ref($self->{stream}) eq 'ARRAY' ) {
+                       $self->{stream}->[$index] .= $data;
+               } else {
+                       $self->{stream} .= $data;
+               }
        }
 }
 
 sub insert {
        my($self, $data, $index) = @_;
-       $index += 0;
-       if( ref($self->{stream}) eq 'ARRAY' ) {
-               $self->{stream}->[$index] = $data . $self->{stream}->[$index];
+       if( ref($data) eq 'ARRAY' ) {
+               for my $d(@$data) {
+                       insert($self, $d, $index);
+               }
        } else {
-               $self->{stream} = $data . $self->{stream};
+               $index += 0;
+               $data = $data->output if PDFJ::Util::objisa($data, 'PDFJ::Obj');
+               if( ref($self->{stream}) eq 'ARRAY' ) {
+                       $self->{stream}->[$index] = $data . $self->{stream}->[$index];
+               } else {
+                       $self->{stream} = $data . $self->{stream};
+               }
        }
 }
 
@@ -338,16 +450,21 @@ use vars qw(@ISA);
 @ISA = qw(PDFJ::Obj::stream);
 
 sub makeoutput {
-       my $self = shift;
+       my($self, $rc4key, $filter) = @_;
        my $stream = ref($self->{stream}) eq 'ARRAY' ? 
                join('', map { $_ ne '' ? " q $_ Q " : '' } @{$self->{stream}}) : 
                $self->{stream};
+       if( $filter =~ /f/ ) { # 'a' filter makes no effect
+               ($stream, $filter) = PDFJ::Util::makestream($filter, \$stream);
+       }
        $self->{dictionary} = PDFJ::Obj::dictionary->new() 
                unless $self->{dictionary};
        $self->{dictionary}->set(
                Length => PDFJ::Obj::number->new(length($stream)) );
-       $self->{output} = $self->{dictionary}->output . " stream\n" . 
-               $stream . "\nendstream";
+       $self->{dictionary}->set(Filter => $filter) if $filter;
+       $stream = PDFJ::Util::RC4($stream, $rc4key) if $rc4key;
+       $self->{output} = $self->{dictionary}->output($rc4key, $filter) . 
+               " stream\n" . $stream . "\nendstream";
 }
 
 1;
diff --git a/lib/PDFJ/PNG.pm b/lib/PDFJ/PNG.pm
new file mode 100644 (file)
index 0000000..f1112ae
--- /dev/null
@@ -0,0 +1,324 @@
+# PDFJ::PNG - png support
+# 2006 nakajima@netstock.co.jp
+package PDFJ::PNG;
+use PDFJ::Object;
+use FileHandle;
+use Compress::Zlib;
+use POSIX qw(floor);
+use Carp;
+use strict;
+
+sub imagestream {
+       my($docobj, $file) = @_;
+       my($data, $palette, $transparent, $width, $height, $bpc, $colorspace);
+       my $fh = new FileHandle $file or croak "cannot open $file";
+       binmode($fh);
+       seek($fh,8,0);
+       while( !eof($fh) ) {
+               my $len = readN($fh);
+               my $mark = readstr($fh, 4);
+#              print "$mark ($len)\n";
+               if( $mark eq 'IHDR' ) {
+                       my($cm,$fm,$im);
+                       ($width, $height, $bpc, $colorspace, $cm,$fm,$im) = 
+                               unpack('NNCCCCC', readstr($fh, $len));
+#                      print "$width, $height, $bpc, $colorspace\n";
+                       croak "PNG Compression ($cm) not supported" if $cm;
+                       croak "PNG Filter ($fm) not supported" if $fm;
+                       croak "PNG Interlace ($im) not supported" if $im;
+               } elsif( $mark eq 'IDAT') {
+                       $data .= readstr($fh, $len);
+               } elsif( $mark eq 'PLTE') {
+                       $palette = readstr($fh, $len);
+               } elsif( $mark eq 'tRNS') {
+                       $transparent = readstr($fh, $len);
+               } elsif( $mark eq 'IEND') {
+                       last;
+               } else {
+                       seek($fh, $len, 1);
+               }
+               readstr($fh, 4); # CRC
+       }
+       close($fh);
+       
+       my $num = $docobj->_nextimagenum;
+       my $name = "I$num";
+       my $stream;
+       if( $colorspace == 0 ){ # greyscale
+               croak "PNG over 8 bit greyscale not supported" if $bpc > 8;
+               $stream = $docobj->indirect(stream(dictionary => {
+                       Name     => name($name),
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => name('DeviceGray'),
+                       DecodeParms => [{
+                               Predictor => 15,
+                               BitsPerComponent => number($bpc),
+                               Colors => 1,
+                               Columns => number($width),
+                               }],
+                       Filter  => [name('FlateDecode')],
+                       Length   => length($data),
+                       }, stream => $data));
+               if( $transparent ne '' ) {
+                       my($min, $max) = lminmax(unpack('n*', $transparent));
+                       $stream->dictionary->set(Mask => 
+                               [numbers(lminmax(unpack('n*', $transparent)))]);
+               }
+       } elsif( $colorspace == 2 ) { # RGB
+               croak "PNG over 8 bit RGB not supported" if $bpc > 8;
+               $stream = $docobj->indirect(stream(dictionary => {
+                       Name     => name($name),
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => name('DeviceRGB'),
+                       DecodeParms => [{
+                               Predictor => 15,
+                               BitsPerComponent => number($bpc),
+                               Colors => 3,
+                               Columns => number($width),
+                               }],
+                       Filter  => [name('FlateDecode')],
+                       Length   => length($data),
+                       }, stream => $data));
+               if( $transparent ne '' ) {
+                       $stream->dictionary->set(Mask => 
+                               [numbers(lminmax3(unpack('n*', $transparent)))]);
+               }
+       } elsif( $colorspace == 3 ) { # palette
+               croak "PNG over 8 bit palette not supported" if $bpc > 8;
+               my($pencoded, $pfilter) = $docobj->_makestream(\$palette);
+               $stream = $docobj->indirect(stream(dictionary => {
+                       Name     => name($name),
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => [name('Indexed'), name('DeviceRGB'), 
+                               number(int(length($palette) / 3) - 1), 
+                               $docobj->indirect(stream(dictionary => {
+                                       Filter  => $pfilter,
+                                       Length  => length($pencoded),
+                               }, stream => $pencoded))],
+                       DecodeParms => [{
+                               Predictor => 15,
+                               BitsPerComponent => number($bpc),
+                               Colors => 1,
+                               Columns => number($width),
+                               }],
+                       Filter  => [name('FlateDecode')],
+                       Length   => length($data),
+                       }, stream => $data));
+               if( $transparent ne '' ) {
+                       $transparent .= "\xFF" x 256;
+                       my $maskdata;
+                       my $scanline = ceil($bpc * $width / 8) + 1;
+                       my $bpp = ceil($bpc / 8);
+                       my $clearstream = 
+                               unprocess($bpc, $bpp, 1, $width, $height, $scanline, \$data);
+                       foreach my $n (0 .. ($height * $width) - 1) {
+                               vec($maskdata, $n, 8) = 
+                                       vec($transparent, vec($clearstream, $n, $bpc), 8);
+                       }
+                       my($sencoded, $sfilter) = $docobj->_makestream(\$maskdata);
+                       my $smask = $docobj->indirect(stream(dictionary => {
+                               Type     => name("XObject"),
+                               Subtype  => name("Image"),
+                               Width    => number($width),
+                               Height   => number($height),
+                               BitsPerComponent => number(8),
+                               ColorSpace => name('DeviceGray'),
+                               Filter  => $sfilter,
+                               Length  => length($sencoded),
+                               }, stream => $sencoded));
+                       $stream->dictionary->set(SMask => $smask);
+               }
+       } elsif( $colorspace == 4 ) { # greyscale+alpha
+               croak "PNG over 8 bit greyscale+alpha not supported" if $bpc > 8;
+               my $mdata;
+               my $maskdata;
+               my $scanline = ceil($bpc * 2 * $width / 8) + 1;
+               my $bpp = ceil($bpc * 2 / 8);
+               my $clearstream = 
+                       unprocess($bpc, $bpp, 2, $width, $height, $scanline, \$data);
+               foreach my $n(0 .. ($height * $width) - 1) {
+                       vec($maskdata, $n, $bpc) = vec($clearstream, ($n * 2) + 1, $bpc);
+                       vec($mdata, $n, $bpc) = vec($clearstream, $n * 2, $bpc);
+               }
+               my($encoded, $filter) = $docobj->_makestream(\$mdata);
+               my($sencoded, $sfilter) = $docobj->_makestream(\$maskdata);
+               my $smask = $docobj->indirect(stream(dictionary => {
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => name('DeviceGray'),
+                       Filter  => $sfilter,
+                       Length  => length($sencoded),
+                       }, stream => $sencoded));
+               $stream = $docobj->indirect(stream(dictionary => {
+                       Name     => name($name),
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => name('DeviceGray'),
+                       SMask => $smask,
+                       Filter  => $filter,
+                       Length   => length($encoded),
+                       }, stream => $encoded));
+       } elsif( $colorspace == 6 ) { # RGB+alpha
+               croak "PNG over 8 bit RGB+alpha not supported" if $bpc > 8;
+               my $mdata;
+               my $maskdata;
+               my $scanline = ceil($bpc * 4 * $width / 8) + 1;
+               my $bpp = ceil($bpc * 4 / 8);
+               my $clearstream = 
+                       unprocess($bpc, $bpp, 4, $width, $height, $scanline, \$data);
+               foreach my $n(0 .. ($height * $width) - 1) {
+                       vec($maskdata, $n, $bpc) = vec($clearstream, $n * 4 + 3, $bpc);
+                       vec($mdata, $n * 3, $bpc) = vec($clearstream, $n * 4, $bpc);
+                       vec($mdata, $n * 3 + 1, $bpc) = vec($clearstream, $n * 4 + 1, $bpc);
+                       vec($mdata, $n * 3 + 2, $bpc) = vec($clearstream, $n * 4 + 2, $bpc);
+               }
+               my($encoded, $filter) = $docobj->_makestream(\$mdata);
+               my($sencoded, $sfilter) = $docobj->_makestream(\$maskdata);
+               my $smask = $docobj->indirect(stream(dictionary => {
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => name('DeviceGray'),
+                       Filter  => $sfilter,
+                       Length  => length($sencoded),
+                       }, stream => $sencoded));
+               $stream = $docobj->indirect(stream(dictionary => {
+                       Name     => name($name),
+                       Type     => name("XObject"),
+                       Subtype  => name("Image"),
+                       Width    => number($width),
+                       Height   => number($height),
+                       BitsPerComponent => number($bpc),
+                       ColorSpace => name('DeviceRGB'),
+                       SMask => $smask,
+                       Filter  => $filter,
+                       Length   => length($encoded),
+                       }, stream => $encoded));
+       } else {
+               croak "PNG color space type $colorspace not supported";
+       }
+       ($name, $stream);
+}
+
+sub readN {
+       my($fh) = @_;
+       my $buf;
+       read($fh, $buf, 4);
+       unpack('N', $buf);
+}
+
+sub readstr {
+       my($fh, $len) = @_;
+       my $buf;
+       read($fh, $buf, $len);
+       $buf;
+}
+
+sub lminmax {
+       my($min, $max);
+       for(@_) {
+               if( defined $max ) {
+                       $max = $_ if $max < $_;
+               } else {
+                       $max = $_;
+               }
+               if( defined $min ) {
+                       $min = $_ if $min > $_;
+               } else {
+                       $min = $_;
+               }
+       }
+       ($min, $max);
+}
+
+sub lminmax3 {
+       my($min, $max);
+       my $n = int(@_ / 3) - 1;
+       my @result;
+       push @result, lminmax(@_[map {$_ * 3} (0..$n)]);
+       push @result, lminmax(@_[map {$_ * 3 + 1} (0..$n)]);
+       push @result, lminmax(@_[map {$_ * 3 + 2} (0..$n)]);
+       @result;
+}
+
+sub ceil {
+       my($num) = @_;
+       my $ceil = int($num);
+       $ceil++ if $ceil != $num;
+       $ceil;
+}
+
+# below subroutines from PDF::API2
+sub PaethPredictor {
+    my ($a, $b, $c)=@_;
+    my $p = $a + $b - $c;
+    my $pa = abs($p - $a);
+    my $pb = abs($p - $b);
+    my $pc = abs($p - $c);
+    if(($pa <= $pb) && ($pa <= $pc)) {
+        return $a;
+    } elsif($pb <= $pc) {
+        return $b;
+    } else {
+        return $c;
+    }
+}
+
+sub unprocess {
+       my ($bpc,$bpp,$comp,$width,$height,$scanline,$sstream)=@_;
+       my $stream=uncompress($$sstream);
+       my $prev='';
+       my $clearstream='';
+       foreach my $n (0..$height-1) {
+               my $line=substr($stream,$n*$scanline,$scanline);
+               my $filter=vec($line,0,8);
+               my $clear='';
+               $line=substr($line,1);
+               if($filter==0) {
+                       $clear=$line;
+               } elsif($filter==1) {
+                       foreach my $x (0..length($line)-1) {
+                               vec($clear,$x,8)=(vec($line,$x,8)+vec($clear,$x-$bpp,8))%256;
+                       }
+               } elsif($filter==2) {
+                       foreach my $x (0..length($line)-1) {
+                               vec($clear,$x,8)=(vec($line,$x,8)+vec($prev,$x,8))%256;
+                       }
+               } elsif($filter==3) {
+                       foreach my $x (0..length($line)-1) {
+                               vec($clear,$x,8)=(vec($line,$x,8)+floor((vec($clear,$x-$bpp,8)+vec($prev,$x,8))/2))%256;
+                       }
+               } elsif($filter==4) {
+                       foreach my $x (0..length($line)-1) {
+                               vec($clear,$x,8)=(vec($line,$x,8)+PaethPredictor(vec($clear,$x-$bpp,8),vec($prev,$x,8),vec($prev,$x-$bpp,8)))%256;
+                       }
+               }
+               $prev=$clear;
+               foreach my $x (0..($width*$comp)-1) {
+                       vec($clearstream,($n*$width*$comp)+$x,$bpc)=vec($clear,$x,$bpc);
+               }
+       }
+       return($clearstream);
+}
+
+1;
diff --git a/lib/PDFJ/Shape.pm b/lib/PDFJ/Shape.pm
new file mode 100644 (file)
index 0000000..d0ce597
--- /dev/null
@@ -0,0 +1,100 @@
+# Additional PDFJ::Shape methods
+# 2004 nakajima@netstock.co.jp
+package PDFJ::Shape;
+use Carp;
+use strict;
+
+sub arrow {
+       my($self, $x, $y, $w, $h, $headsize, $headangle, $style)
+               = PDFJ::Util::methodargs([qw(x y w h headsize headangle style)], @_);
+       my $xt = $x + $w;
+       my $yt = $y + $h;
+       my $axisangle = atan2(-$h, -$w);
+       my $x1 = $xt + $headsize * cos($axisangle + $headangle);
+       my $y1 = $yt + $headsize * sin($axisangle + $headangle);
+       my $x2 = $xt + $headsize * cos($axisangle - $headangle);
+       my $y2 = $yt + $headsize * sin($axisangle - $headangle);
+       my $hlen = $headsize * cos($headangle);
+       $w += $hlen * cos($axisangle);
+       $h += $hlen * sin($axisangle);
+       my $coords = [$xt, $yt, $x1, $y1, $x2, $y2, $xt, $yt];
+       $self->line($x, $y, $w, $h, $style);
+       $self->polygon($coords, 'f', $style);
+}
+
+sub brace {
+       my($self, $x, $y, $w, $h, $style)
+               = PDFJ::Util::methodargs([qw(x y w h style)], @_);
+       $self->setboundary($x, $y);
+       $self->setboundary($x + $w, $y + $h);
+       ($w, $h) = ($w / 2, $h / 2);
+       my $ch = abs($w * 3 / 2);
+       croak "too wide brace" if $ch > $h / 2;
+       my $lw = ($style && $style->{linewidth}) ? $style->{linewidth} / 2 :
+               ($self->{style} && $self->{style}{linewidth}) ? 
+                       $self->{style}{linewidth} / 2 :
+               1 / 2;
+       $self->newpath;
+       $self->moveto($x, $y + $h);
+       $self->curveto(_bracecurve($x, $y + $h, $w + $lw, $ch));
+       $self->lineto($x + $w + $lw, $y + $h * 2 - $ch);
+       $self->curveto(_bracecurve2($x + $w + $lw, $y + $h * 2 - $ch, $w - $lw, $ch));
+       $self->curveto(_bracecurve($x + $w * 2, $y + $h * 2, -$w - $lw, -$ch));
+       $self->lineto($x + $w - $lw, $y + $h + $ch);
+       $self->curveto(_bracecurve2($x + $w - $lw, $y + $h + $ch, -$w + $lw, -$ch));
+       $self->fill;
+       $self->newpath;
+       $self->moveto($x, $y + $h);
+       $self->curveto(_bracecurve($x, $y + $h, $w + $lw, -$ch));
+       $self->lineto($x + $w + $lw, $y + $ch);
+       $self->curveto(_bracecurve2($x + $w + $lw, $y + $ch, $w - $lw, -$ch));
+       $self->curveto(_bracecurve($x + $w * 2, $y, -$w - $lw, $ch));
+       $self->lineto($x + $w - $lw, $y + $h - $ch);
+       $self->curveto(_bracecurve2($x + $w - $lw, $y + $h - $ch, -$w + $lw, +$ch));
+       $self->fill;
+       $self;
+}
+
+sub bracket {
+       my($self, $x, $y, $w, $h, $style)
+               = PDFJ::Util::methodargs([qw(x y w h style)], @_);
+       my $coords = [$x + $w, $y, $x, $y, $x, $y + $h, $x + $w, $y + $h];
+       $self->polygon($coords, 's', $style);
+}
+
+sub paren {
+       my($self, $x, $y, $w, $h, $style)
+               = PDFJ::Util::methodargs([qw(x y w h style)], @_);
+       $self->setboundary($x, $y);
+       $self->setboundary($x + $w, $y + $h);
+       my $lw = ($style && $style->{linewidth}) ? $style->{linewidth}:
+               ($self->{style} && $self->{style}{linewidth}) ? 
+                       $self->{style}{linewidth} :
+               1;
+       $lw = -$lw if $w < 0;
+       $h = $h / 2;
+       $self->newpath;
+       $self->moveto($x, $y + $h);
+       $self->curveto(_bracecurve2($x, $y + $h, $w, $h));
+       $self->curveto(_bracecurve($x + $w, $y + $h * 2, -$w + $lw, -$h));
+       $self->curveto(_bracecurve2($x + $lw, $y + $h, $w - $lw, -$h));
+       $self->curveto(_bracecurve($x + $w, $y, -$w, $h));
+       $self->fill;
+       $self;
+}
+
+sub _bracecurve {
+       my($x, $y, $w, $h) = @_;
+       my($x1, $y1) = ($x + $w * 2 / 3, $y + $h / 4);
+       my($x2, $y2) = ($x + $w, $y + $h / 2);
+       my($x3, $y3) = ($x + $w, $y + $h);
+       ($x1, $y1, $x2, $y2, $x3, $y3);
+}
+sub _bracecurve2 {
+       my($x, $y, $w, $h) = @_;
+       my($x1, $y1, $x2, $y2, $x3, $y3) = 
+               _bracecurve($x + $w, $y + $h, -$w, -$h);
+       ($x2, $y2, $x1, $y1, $x + $w, $y + $h);
+}
+
+1;
index 67068d8..3cfd499 100644 (file)
@@ -1,5 +1,5 @@
 # PDFJ::TTF - TrueType font support
-# 2002 Sey <nakajima@netstock.co.jp>
+# 2002-4 Sey <nakajima@netstock.co.jp>
 
 package PDFJ::TTF;
 use PDFJ::Unicode;
@@ -42,18 +42,19 @@ sub pdf_info_common {
        \%info;
 }
 
-sub pdf_info_japan {
+sub pdf_info_cid {
        my($self, $encoding) = @_;
        my $info = $self->pdf_info_common;
        $info->{Encoding} = $encoding;
        $info->{Flags} |= (1 << 2); # Symbolic
-       
+if(0) {
        my $upm = $self->{table}{head}{unitsPerEm};
        my @width = @{$self->{table}{hmtx}{hMetrics}{advanceWidth}};
        my $glphs = $self->{table}{maxp}{numGlyphs};
        while( $glphs > @width ) {
                push @width, $width[$#width];
        }
+}
        $info;
 }
 
@@ -102,11 +103,15 @@ sub toglyphunit {
 #-------------------------------------------------
 sub subset {
        my($self, $encoding, @unicodes) = @_; 
-               # $encoding: H V Hp Vp
                # @unicodes must be uniqed
        my $result;
        my @gidxs = (0, $self->unicode2gidx(@unicodes)); 
                # 0 for missing glyph required
+       if( $encoding =~ /-V$/ ) {
+               my $vgidsubst = $self->vgidsubst;
+               grep {$_ = $vgidsubst->{$_} if $vgidsubst->{$_}} @gidxs
+                       if $vgidsubst;
+       }
        my %gidxs;
        @gidxs{@gidxs} = 1 x @gidxs;
        $self->{subset_gidxs} = \%gidxs;
@@ -166,7 +171,11 @@ sub subset {
        my @cids = (0, map {PDFJ::Unicode::unicodetocid($_, $encoding)} @unicodes);
                # CID 0 -> GID 0 OK?
        my @c2g;
-       @c2g[@cids] = @gidxs;
+       #@c2g[@cids] = @gidxs;
+       for( my $j = 0; $j < @cids; $j++ ) {
+               next if $cids[$j] eq '-';
+               $c2g[$cids[$j]] = $gidxs[$j];
+       }
        my $cidtogidmap = pack "n*", map {$_ || 0} @c2g;
 if(0) {
        # make CIDSet
@@ -179,6 +188,34 @@ if(0) {
        ($result, $cidtogidmap);
 }
 
+# get vertical mode gid substitution table
+sub vgidsubst {
+       my($self) = @_;
+       return unless exists $self->{tabledir}{mort};
+       my %result;
+       $self->read_mort;
+       my $mort = $self->{table}{mort};
+       for my $chain(@{$mort->{chain}}) {
+               for my $subtable(@{$chain->{subtable}}) {
+                       if( $subtable->{coverage} == 0x8004 ) { # vetical and non-contextual
+                               my $lutable = $subtable->{lookuptable};
+                               if( $lutable->{format} == 6 ) {
+                                       for my $entry(@{$lutable->{entries}}) {
+                                               $result{$entry->{glyph}} = $entry->{value};
+                                       }
+                               } elsif( $lutable->{format} == 8 ) {
+                                       my $first = $lutable->{firstGlyph};
+                                       my $count = $lutable->{glyphCount};
+                                       for( my $j = 0; $j < $count; $j++ ) {
+                                               $result{$first + $j} = $lutable->{valueArray}[$j];
+                                       }
+                               }
+                       }
+               }
+       }
+       \%result;
+}
+
 sub subset_head {
        my($self) = @_;
        my $result = $self->whole_table('head');
@@ -258,7 +295,8 @@ sub Xsubset_hmtx {
        push @lsb, @{$self->{table}{hmtx}{leftSideBearing}} 
                if $self->{table}{hmtx}{leftSideBearing};
        PDFJ::TTutil::_short2unsigned(\@lsb);
-       for my $gidx(@{$self->{subset_gidxs}}) {
+       #for my $gidx(@{$self->{subset_gidxs}}) {
+       for my $gidx(sort {$a <=> $b} keys %{$self->{subset_gidxs}}) {
                $result .= pack "nn", $width[$gidx], $lsb[$gidx];
        }
        $result;
@@ -286,8 +324,9 @@ sub read_tabledirs {
                rangeShift:n
                ));
        my $type = $self->{subtable}{scaler_type};
-       croak "unknown type: $type"
-               unless $type == 0x10000 || $type == 0x74727565; # 1.0 or 'true';
+       croak "unknown type: $type(0x".sprintf("%x",$type).")"
+               unless $type == 0x10000 || $type == 0x74727565 || # 1.0 or 'true';
+                       $type == 0x4f54544f; # 'OTTO' for OpenType font
        my $tables = $self->{subtable}{numTables};
        my $rby16;
        for( my $r = 1; $r <= $tables; $r *= 2 ) {
@@ -338,6 +377,7 @@ sub read_table {
        }
        for my $tag(@tags) {
                my $mname = "read_$tag";
+               $mname =~ s/\s+$//;
                $mname =~ s#/#_#g;
                my $func = $self->can($mname);
                $self->$func() if $func;
@@ -571,6 +611,123 @@ sub read_cmap {
        }
 }
 
+# get only Non-contextual Glyph Substitution Subtable
+sub read_mort {
+       my($self) = @_;
+       my $tag = 'mort';
+       return if exists $self->{table}{$tag} && !$self->reload;
+       $self->seek_table($tag);
+       $self->_read_hash($self->{table}{$tag}, qw(
+               version:N
+               nChains:N
+               ));
+       my $count = $self->{table}{$tag}{nChains};
+       my $chainoffset = $self->{tabledir}{$tag}{offset} + 8;
+       while( $count-- ) {
+               if( $chainoffset % 4 ) {
+                       $chainoffset = (int($chainoffset / 4) + 1) * 4;
+               }
+               $self->seek($chainoffset);
+               my %chain;
+               $self->_read_hash(\%chain, qw(
+                       defaultFlags:N
+                       chainLength:N
+                       nFeatureEntries:n
+                       nSubtables:n
+                       ));
+               for( my $j = 0; $j < $chain{nFeatureEntries}; $j++ ) {
+                       $self->_read_hash($chain{featuretable}[$j], qw(
+                               featureType:n
+                               featureSetting:n
+                               enableFlags:N
+                               disableFlags:N
+                               ));
+               }
+               for( my $j = 0; $j < $chain{nSubtables}; $j++ ) {
+                       $self->_read_hash($chain{subtable}[$j], qw(
+                               length:n
+                               coverage:n
+                               subFeatureFlags:N
+                               ));
+                       my $type = $chain{subtable}[$j]{coverage} & 7;
+                       if( $type == 4 ) { # Non-contextual glyph substitution
+                               $chain{subtable}[$j]{lookuptable} = 
+                                       $self->_read_LookupTable('n');
+                       }
+               }
+               push @{$self->{table}{$tag}{chain}}, \%chain;
+               $chainoffset += $chain{chainLength} + 8;
+       }
+}
+
+sub read_GSUB {
+       my($self) = @_;
+       my $tag = 'GSUB';
+       return if exists $self->{table}{$tag} && !$self->reload;
+       $self->seek_table($tag);
+       $self->_read_hash($self->{table}{$tag}, qw(
+               version:N
+               ScriptList:n
+               FeatureList:n
+               LookupList:n
+               ));
+       $self->seek($self->{table}{$tag}{offset} + 
+               $self->{table}{$tag}{ScriptList});
+       
+}
+
+sub _read_LookupTable {
+       my($self, $valuetype, $lu) = @_;
+       $lu ||= {};
+       $self->_read_hash($lu, qw(format:n));
+       if( $lu->{format} == 0 ) { # simple array format
+       
+       } elsif( $lu->{format} == 2 ) { # segment single format
+               $self->_read_BinSrchHeader($lu);
+               for( my $j = 0; $j < $lu->{nUnits}; $j++ ) {
+                       push @{$lu->{segments}}, 
+                               $self->_read_hash({}, 
+                               "lastGlyph:n", "firstGlyph:n", "value:$valuetype");
+               }
+       } elsif( $lu->{format} == 4 ) { # segment array format
+               $self->_read_BinSrchHeader($lu);
+               my $vlen = $self->_typelen($valuetype);
+               my $vcount = int(($lu->{unitSize} - 4) / $vlen);
+               for( my $j = 0; $j < $lu->{nUnits}; $j++ ) {
+                       push @{$lu->{segments}}, 
+                               $self->_read_hash({}, 
+                               "lastGlyph:n", "firstGlyph:n", "value:$valuetype:$vcount");
+               }
+       } elsif( $lu->{format} == 6 ) { # single table format
+               $self->_read_BinSrchHeader($lu);
+               for( my $j = 0; $j < $lu->{nUnits}; $j++ ) {
+                       push @{$lu->{entries}}, 
+                               $self->_read_hash({}, "glyph:n", "value:$valuetype");
+               }
+       } elsif( $lu->{format} == 8 ) { # trimmed array format
+               $self->_read_hash($lu, qw(
+                       firstGlyph:n
+                       glyphCount:n
+                       ));
+               my $count = $lu->{glyphCount};
+               $self->_read_hash($lu, "valueArray:$valuetype:$count");
+       }
+       $lu;
+}
+
+sub _read_BinSrchHeader {
+       my($self, $bsh) = @_;
+       $bsh ||= {};
+       $self->_read_hash($bsh, qw(
+               unitSize:n
+               nUnits:n
+               searchRange:n
+               entrySelector:n
+               rangeShift:n
+               ));
+       $bsh;
+}
+
 sub find_cmap {
        my($self, $pid, $psid, $format) = @_;
        for my $st(@{$self->{table}{cmap}{subtable}}) {
@@ -690,8 +847,14 @@ sub dump {
                }
        }
        for my $tag(keys %{$self->{table}}) {
-               print $handle "\ntable($tag)";
-               PDFJ::TTutil::_dump($handle, "", $self->{table}{$tag});
+               my $fname = "dump_$tag";
+               $fname =~ s/\s+$//;
+               if( $self->can($fname) ) {
+                       $self->$fname($handle);
+               } else {
+                       print $handle "\ntable($tag)";
+                       PDFJ::TTutil::_dump($handle, "", $self->{table}{$tag});
+               }
        }
        print $handle "\n";
 }
@@ -805,6 +968,12 @@ sub _seek_read {
        $self->_read($length);
 }
 
+
+sub _typelen {
+       my($self, $type) = @_;
+       {C => 1, n => 2, m => 2, N => 4, M => 4}->{$type};
+}
+
 sub _read_hash {
        $_[1] = {} unless defined $_[1];
        my($self, $hashref, @specs) = @_;
@@ -818,20 +987,19 @@ sub _read_hash {
        for my $spec(@specs) {
                my($key, $type, $count) = split /:/, $spec;
                $count ||= "";
+               my $typelen = $self->_typelen($type);
                push @keys, $key;
                $count{$key} = $count;
                if( $type eq 'C' ) {
                        $template .= "C$count";
-                       $length += $count ? $count : 1;
                } elsif( $type eq 'n' || $type eq 'm' ) {
                        $template .= "n$count";
-                       $length += $count ? 2 * $count : 2;
                } elsif( $type eq 'N' || $type eq 'M' ) {
                        $template .= "N$count";
-                       $length += $count ? 4 * $count : 4;
                } else {
                        croak "unknown type '$type'";
                }
+               $length += $count ? $typelen * $count : $typelen;
                push @shortsignedkeys, $key if $type eq 'm';
                push @longsignedkeys, $key if $type eq 'M';
                last if $maxlen && $length >= $maxlen;
@@ -853,6 +1021,7 @@ sub _read_hash {
        for my $key(@longsignedkeys) {
                $hashref->{$key} = PDFJ::TTutil::_long2signed($hashref->{$key});
        }
+       $hashref;
 }
 
 sub _read_array {
diff --git a/lib/PDFJ/Tree.pm b/lib/PDFJ/Tree.pm
new file mode 100644 (file)
index 0000000..ac69ec0
--- /dev/null
@@ -0,0 +1,334 @@
+# PDFJ/Tree.pm - PDFJ::Block::Tree
+# 2005 <nakajima@netstock.co.jp>
+# automatically required by Block()
+
+#--------------------------------------------
+package PDFJ::Block::Tree;
+use Carp;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(PDFJ::Block);
+
+sub _rootnode { my $tmp; bless \$tmp, 'PDFJ::Block::Tree::Root'; }
+sub _isrootnode { PDFJ::Util::objisa($_[0], 'PDFJ::Block::Tree::Root') }
+
+# check structure of $self->{objects} and 
+# convert from 'parent, [child,...]' to '[parent, child,...]'
+sub _checkobjects {
+       my($self) = @_;
+       my $objects = $self->{objects};
+       $self->{objects} = [$objects] if ref($objects) ne 'ARRAY';
+       $self->{objects} = _checktree(_rootnode, $self->{objects});
+       #print "_checkobjects OK\n";
+}
+
+# NOT method
+sub _checktree {
+       my($parent, $child) = @_;
+       my @children = @$child;
+       my @tree = ($parent);
+       while(@children) {
+               my $node = shift @children;
+               croak "illegal Tree element: $node"
+                       unless PDFJ::Util::objisa($node, 'PDFJ::BlockElement');
+               if( @children && ref($children[0]) eq 'ARRAY' ) {
+                       push @tree, _checktree($node, shift(@children));
+               } else {
+                       push @tree, $node;
+               }
+       }
+       \@tree;
+}
+
+sub _calcsize {
+       my($self) = @_;
+       my $leveldir = $self->{direction} =~ /[VU]/ ? 'V' : 'H';
+       my $siblingdir = $self->{direction} =~ /[VU]/ ? 'H' : 'V';
+       my $levelskip = $self->{style}{levelskip};
+       my $siblingskip = $self->{style}{siblingskip};
+       my $adjust = $self->{style}{adjust};
+       my $sadjust = $adjust =~ /s/ ? $siblingdir : '';
+       my $tree = $self->{objects};
+       my ($siblingsize, $middlesize, @levelsizes) = 
+               _calctreesize($tree, $sadjust, $leveldir, $siblingdir, $siblingskip);
+       $self->{levelsizes} = \@levelsizes;
+       my $levelsize = 0;
+       grep {$levelsize += $_} @levelsizes;
+       $levelsize += $levelskip * (@levelsizes - 1) if @levelsizes > 1;
+       if( $leveldir eq 'H' ) {
+               $self->{width} = $levelsize;
+               $self->{height} = $siblingsize;
+       } else {
+               $self->{width} = $siblingsize;
+               $self->{height} = $levelsize;
+       }
+       $self->_adjustlevelsize;
+}
+
+sub _calctreesize {
+       my($tree, $sadjust, $leveldir, $siblingdir, $siblingskip, @levelsizes) = @_;
+       my($siblingsize, $middlesize);
+       if( ref($tree) eq 'ARRAY' ) {
+               my($parent, @children) = @$tree;
+               my $pssize = 0;
+               unless( _isrootnode($parent) ) {
+                       push @levelsizes, $parent->size($leveldir);
+                       $pssize = $parent->size($siblingdir);
+               }
+               my @lastlevelsizes = @levelsizes;
+               my $startlevel = @levelsizes;
+               my $cssizesum = 0;
+               my($cmmin, $cmmax) = (0, 0);
+               for my $child(@children) {
+                       my($cssize, $cmsize, @clsizes) = 
+                               _calctreesize($child, $sadjust, $leveldir, $siblingdir, 
+                               $siblingskip, @lastlevelsizes);
+                       $cmmin = $cssizesum + $cmsize if $cmmin == 0;
+                       $cmmax = ($cssizesum ? $cssizesum + $siblingskip : $cssizesum) + 
+                               $cmsize;
+                       $cssizesum += $siblingskip if $cssizesum;
+                       $cssizesum += $cssize;
+                       for( my $j = $startlevel; $j < @clsizes; $j++ ) {
+                               $levelsizes[$j] = $clsizes[$j] if $levelsizes[$j] < $clsizes[$j];
+                       }
+               }
+               $middlesize = ($cmmin + $cmmax) / 2;
+               $siblingsize = $pssize < $cssizesum ? $cssizesum : $pssize;
+               splice @$tree, 1, 0, $siblingsize, $middlesize;
+               if( $sadjust eq 'H' && $parent->can('adjustwidth') ) {
+                       $parent->adjustwidth($siblingsize);
+               } elsif( $sadjust eq 'V' && $parent->can('adjustheight') ) {
+                       $parent->adjustheight($siblingsize);
+               }
+       } else {
+               push @levelsizes, $tree->size($leveldir);
+               $siblingsize = $tree->size($siblingdir);
+               $middlesize = $siblingsize / 2;
+       }
+       return ($siblingsize, $middlesize, @levelsizes);
+}
+
+sub _adjustlevelsize {
+       my($self) = @_;
+       my $adjust = $self->{style}{adjust};
+       return unless $adjust =~ /l/;
+       
+       my $leveldir = $self->{direction} =~ /[VU]/ ? 'V' : 'H';
+       my $tree = $self->{objects};
+       my @levelsizes = @{$self->{levelsizes}};
+       _adjusttreelevelsize($tree, $leveldir, @levelsizes);
+}
+
+sub _adjusttreelevelsize {
+       my($tree, $leveldir, @levelsizes) = @_;
+       if( ref($tree) eq 'ARRAY' ) {
+               my($parent, $ssize, $msize, @children) = @$tree;
+               if( _isrootnode($parent) ) {
+                       for my $child(@children) {
+                               _adjusttreelevelsize($child, $leveldir, @levelsizes);
+                       }
+                       return;
+               }
+               my $levelsize = shift @levelsizes;
+               if( $leveldir eq 'H' && $parent->can('adjustwidth') ) {
+                       $parent->adjustwidth($levelsize);
+               } elsif( $leveldir eq 'V' && $parent->can('adjustheight') ) {
+                       $parent->adjustheight($levelsize);
+               }
+               for my $child(@children) {
+                       _adjusttreelevelsize($child, $leveldir, @levelsizes);
+               }
+       } else {
+               my $levelsize = shift @levelsizes;
+               if( $leveldir eq 'H' && $tree->can('adjustwidth') ) {
+                       $tree->adjustwidth($levelsize);
+               } elsif( $leveldir eq 'V' && $tree->can('adjustheight') ) {
+                       $tree->adjustheight($levelsize);
+               }
+       }
+}
+
+sub _show {
+       my($self, $page, $x, $y) = @_;
+       my $style = $self->{style};
+       if( $style->{withbox} ) {
+               my $withbox = $style->{withbox};
+               my $withboxstyle = $style->{withboxstyle};
+               my $shape = PDFJ::Shape->new;
+               my($boxwidth, $boxheight) = ($self->width, $self->height);
+               $shape->box(0, 0, $boxwidth, - $boxheight, $withbox, 
+                       $withboxstyle);
+               $shape->show($page, $x, $y);
+       }
+       $x += $self->padding + $self->{xpreshift};
+       $y -= $self->padding + $self->{ypreshift};
+       my $direction = $self->{direction};
+       $x += $self->{width} if $direction eq 'TR';
+       $y -= $self->{height} if $direction eq 'TU';
+       my $tree = $self->{objects};
+       my $showalign = 
+               $direction eq 'TV' ? 'tl' :
+               $direction eq 'TU' ? 'bl' :
+               $direction eq 'TH' ? 'tl' :
+               $direction eq 'TR' ? 'tr' : 'tl';
+       my @levelsizes = @{$self->{levelsizes}};
+       $self->_showtree($tree, $page, $x, $y, $showalign, undef, undef, 
+               @levelsizes);
+}
+
+sub _showtree {
+       my($self, $tree, $page, $x, $y, $showalign, $pcx, $pcy, @levelsizes) = @_;
+       my $direction = $self->{direction};
+       my $siblingalign = $self->{style}{siblingalign};
+       my $levelskip = $self->{style}{levelskip};
+       my $siblingskip = $self->{style}{siblingskip};
+       my $connectline = $self->{style}{connectline};
+       my $clstyle = $self->{style}{connectlinestyle};
+       my $hvdir = ($direction eq 'TV' || $direction eq 'TU') ? 'H' : 'V';
+       if( $connectline eq 'c' ) {
+               $connectline = $hvdir eq 'H' ? 'vh' : 'hv';
+       }
+       my($siblingsize, $middlesize);
+       if( ref($tree) eq 'ARRAY' ) {
+               my($parent, $ssize, $msize, @children) = @$tree;
+               $siblingsize = $ssize;
+               $middlesize = $msize;
+               if( _isrootnode($parent) ) {
+                       if( $hvdir eq 'H' ) {
+                               for my $child(@children) {
+                                       $x += $self->_showtree($child, $page, $x, $y, $showalign, 
+                                               $pcx, $pcy, @levelsizes) + $siblingskip;
+                               }
+                       } else {
+                               for my $child(@children) {
+                                       $y -= $self->_showtree($child, $page, $x, $y, $showalign, 
+                                               $pcx, $pcy, @levelsizes) + $siblingskip;
+                               }
+                       }
+                       return $siblingsize;
+               }
+               my($px, $py) = ($x, $y);
+               my $psize = $parent->size($hvdir);
+               if( $siblingalign eq 'M' ) {
+                       if( $hvdir eq 'H' ) {
+                               $px += ($siblingsize - $psize) / 2;
+                       } else {
+                               $py -= ($siblingsize - $psize) / 2;
+                       }
+               } elsif( $siblingalign eq 'e' ) {
+                       if( $hvdir eq 'H' ) {
+                               $px += $siblingsize - $psize;
+                       } else {
+                               $py -= $siblingsize - $psize;
+                       }
+               } elsif( $siblingalign eq 'm' ) {
+                       if( $hvdir eq 'H' ) {
+                               $px += $middlesize - $psize / 2;
+                       } else {
+                               $py -= $middlesize - $psize / 2;
+                       }
+               }
+               $parent->show($page, $px, $py, $showalign);
+               if( $connectline && defined $pcx ) {
+                       my $cpdir = 
+                               $direction eq 'TV' ? 't' : 
+                               $direction eq 'TU' ? 'b' : 
+                               $direction eq 'TH' ? 'l' : 
+                               $direction eq 'TR' ? 'r' : 'N/A';
+                       _showconnectline($page, $pcx, $pcy, 
+                               _connectpoint($parent, $px, $py, $showalign, $cpdir),
+                               $connectline, $clstyle);
+               }
+               ($pcx, $pcy) = (undef, undef);
+               if( $connectline ) {
+                       my $cpdir = 
+                               $direction eq 'TV' ? 'b' : 
+                               $direction eq 'TU' ? 't' : 
+                               $direction eq 'TH' ? 'r' : 
+                               $direction eq 'TR' ? 'l' : 'N/A';
+                       ($pcx, $pcy) = 
+                               _connectpoint($parent, $px, $py, $showalign, $cpdir);
+               }
+               my $lsize = shift @levelsizes;
+               if( $hvdir eq 'H' ) {
+                       my $dy = $lsize + $levelskip;
+                       $dy = -$dy if $direction eq 'TV';
+                       $y += $dy;
+                       for my $child(@children) {
+                               $x += $self->_showtree($child, $page, $x, $y, $showalign, 
+                                       $pcx, $pcy, @levelsizes) + $siblingskip;
+                       }
+               } else {
+                       my $dx = $lsize + $levelskip;
+                       $dx = -$dx if $direction eq 'TR';
+                       $x += $dx;
+                       for my $child(@children) {
+                               $y -= $self->_showtree($child, $page, $x, $y, $showalign, 
+                                       $pcx, $pcy, @levelsizes) + $siblingskip;
+                       }
+               }
+       } else {
+               $tree->show($page, $x, $y, $showalign);
+               if( $connectline && defined $pcx ) {
+                       my $cpdir = $direction eq 'TV' ? 't' :
+                               $direction eq 'TU' ? 'b' :
+                               $direction eq 'TH' ? 'l' :
+                               $direction eq 'TR' ? 'r' : '';
+                       _showconnectline($page, $pcx, $pcy, 
+                               _connectpoint($tree, $x, $y, $showalign, $cpdir),
+                               $connectline, $clstyle);
+               }
+               $siblingsize = $tree->size($hvdir);
+       }
+       $siblingsize;
+}
+
+sub breakable { 0 }
+
+sub break { ($_[0]) }
+
+sub _connectpoint {
+       my($obj, $x, $y, $showalign, $dir) = @_;
+       my $width = $obj->width;
+       my $height = $obj->height;
+       my($cx, $cy) = ($x, $y);
+       if( $showalign =~ /t/ ) {
+               $cy -= $height / 2;
+       } elsif( $showalign =~ /b/ ) {
+               $cy += $height / 2;
+       }
+       if( $showalign =~ /l/ ) {
+               $cx += $width / 2;
+       } elsif( $showalign =~ /r/ ) {
+               $cx -= $width / 2;
+       }
+       if( $dir eq 't' ) {
+               $cy += $height / 2;
+       } elsif( $dir eq 'b' ) {
+               $cy -= $height / 2;
+       } elsif( $dir eq 'l' ) {
+               $cx -= $width / 2;
+       } elsif( $dir eq 'r' ) {
+               $cx += $width / 2;
+       }
+       ($cx, $cy);
+}
+
+sub _showconnectline {
+       my($page, $x1, $y1, $x2, $y2, $connectline, $clstyle) = @_;
+       my $shape = PDFJ::Shape->new;
+       if( $connectline eq 's' ) {
+               $shape->line($x1, $y1, $x2 - $x1, $y2 - $y1, $clstyle);
+       } elsif( $connectline eq 'hv' ) {
+               $shape->line($x1, $y1, ($x2 - $x1) / 2, 0, $clstyle)
+                       ->line($x1 + ($x2 - $x1) / 2, $y1, 0, $y2 - $y1, $clstyle)
+                       ->line($x1 + ($x2 - $x1) / 2, $y2, ($x2 - $x1) / 2, 0, $clstyle);
+       } elsif( $connectline eq 'vh' ) {
+               $shape->line($x1, $y1, 0, ($y2 - $y1) / 2, $clstyle)
+                       ->line($x1, $y1 + ($y2 - $y1) / 2, $x2 - $x1, 0, $clstyle)
+                       ->line($x2, $y1 + ($y2 - $y1) / 2, 0, ($y2 - $y1) / 2, $clstyle);
+       }
+       $shape->show($page, 0, 0);
+}
+
+1;
diff --git a/lib/PDFJ/Type1.pm b/lib/PDFJ/Type1.pm
new file mode 100644 (file)
index 0000000..7217a1c
--- /dev/null
@@ -0,0 +1,3901 @@
+# PDFJ::Type1
+# 2004 nakajima@netstock.co.jp
+package PDFJ::Type1;
+use Carp;
+use SelfLoader;
+use strict;
+
+my %FontWidth;
+sub fontwidth {
+       my($fontname, $encoding) = @_;
+       return $FontWidth{$fontname, $encoding} if $FontWidth{$fontname, $encoding};
+       my $sub;
+       $sub = "${encoding}Array";
+       my $ea = eval { no strict 'refs'; &$sub(); };
+       croak $@ if $@;
+       $sub = "afmwx_$fontname";
+       $sub =~ s/-/_/g;
+       my $wf = eval { no strict 'refs'; &$sub(); };
+       croak $@ if $@;
+       my $result = [ map {$wf->{$ea->[$_]}} (0..255) ];
+       $FontWidth{$fontname, $encoding} = $result;
+       $result;
+}
+
+1;
+
+# for SelfLoader;
+__DATA__
+
+sub WinAnsiEncodingArray {
+       return [
+'.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', 
+'.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', 
+'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 
+'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 
+'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 
+'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 
+'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
+'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 
+'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 
+'bullet', 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', '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', 
+       ];
+}
+
+sub MacRomanEncodingArray {
+       return [
+'.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', 
+'.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', 
+'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 
+'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 
+'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 
+'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 
+'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
+'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '.notdef', 
+'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 
+'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 
+'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', '.notdef', 'AE', 'Oslash', 
+'.notdef', 'plusminus', '.notdef', '.notdef', 'yen', 'mu', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', 'ordfeminine', 'ordmasculine', '.notdef', 'ae', 'oslash', 
+'questiondown', 'exclamdown', 'logicalnot', '.notdef', 'florin', '.notdef', '.notdef', 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 
+'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', '.notdef', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 
+'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 
+'.notdef', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron'
+       ];
+}
+
+
+sub afmwx_Courier {
+       return {
+       A => 600,
+       AE => 600,
+       Aacute => 600,
+       Abreve => 600,
+       Acircumflex => 600,
+       Adieresis => 600,
+       Agrave => 600,
+       Amacron => 600,
+       Aogonek => 600,
+       Aring => 600,
+       Atilde => 600,
+       B => 600,
+       C => 600,
+       Cacute => 600,
+       Ccaron => 600,
+       Ccedilla => 600,
+       D => 600,
+       Dcaron => 600,
+       Dcroat => 600,
+       Delta => 600,
+       E => 600,
+       Eacute => 600,
+       Ecaron => 600,
+       Ecircumflex => 600,
+       Edieresis => 600,
+       Edotaccent => 600,
+       Egrave => 600,
+       Emacron => 600,
+       Eogonek => 600,
+       Eth => 600,
+       Euro => 600,
+       F => 600,
+       G => 600,
+       Gbreve => 600,
+       Gcommaaccent => 600,
+       H => 600,
+       I => 600,
+       Iacute => 600,
+       Icircumflex => 600,
+       Idieresis => 600,
+       Idotaccent => 600,
+       Igrave => 600,
+       Imacron => 600,
+       Iogonek => 600,
+       J => 600,
+       K => 600,
+       Kcommaaccent => 600,
+       L => 600,
+       Lacute => 600,
+       Lcaron => 600,
+       Lcommaaccent => 600,
+       Lslash => 600,
+       M => 600,
+       N => 600,
+       Nacute => 600,
+       Ncaron => 600,
+       Ncommaaccent => 600,
+       Ntilde => 600,
+       O => 600,
+       OE => 600,
+       Oacute => 600,
+       Ocircumflex => 600,
+       Odieresis => 600,
+       Ograve => 600,
+       Ohungarumlaut => 600,
+       Omacron => 600,
+       Oslash => 600,
+       Otilde => 600,
+       P => 600,
+       Q => 600,
+       R => 600,
+       Racute => 600,
+       Rcaron => 600,
+       Rcommaaccent => 600,
+       S => 600,
+       Sacute => 600,
+       Scaron => 600,
+       Scedilla => 600,
+       Scommaaccent => 600,
+       T => 600,
+       Tcaron => 600,
+       Tcommaaccent => 600,
+       Thorn => 600,
+       U => 600,
+       Uacute => 600,
+       Ucircumflex => 600,
+       Udieresis => 600,
+       Ugrave => 600,
+       Uhungarumlaut => 600,
+       Umacron => 600,
+       Uogonek => 600,
+       Uring => 600,
+       V => 600,
+       W => 600,
+       X => 600,
+       Y => 600,
+       Yacute => 600,
+       Ydieresis => 600,
+       Z => 600,
+       Zacute => 600,
+       Zcaron => 600,
+       Zdotaccent => 600,
+       a => 600,
+       aacute => 600,
+       abreve => 600,
+       acircumflex => 600,
+       acute => 600,
+       adieresis => 600,
+       ae => 600,
+       agrave => 600,
+       amacron => 600,
+       ampersand => 600,
+       aogonek => 600,
+       aring => 600,
+       asciicircum => 600,
+       asciitilde => 600,
+       asterisk => 600,
+       at => 600,
+       atilde => 600,
+       b => 600,
+       backslash => 600,
+       bar => 600,
+       braceleft => 600,
+       braceright => 600,
+       bracketleft => 600,
+       bracketright => 600,
+       breve => 600,
+       brokenbar => 600,
+       bullet => 600,
+       c => 600,
+       cacute => 600,
+       caron => 600,
+       ccaron => 600,
+       ccedilla => 600,
+       cedilla => 600,
+       cent => 600,
+       circumflex => 600,
+       colon => 600,
+       comma => 600,
+       commaaccent => 600,
+       copyright => 600,
+       currency => 600,
+       d => 600,
+       dagger => 600,
+       daggerdbl => 600,
+       dcaron => 600,
+       dcroat => 600,
+       degree => 600,
+       dieresis => 600,
+       divide => 600,
+       dollar => 600,
+       dotaccent => 600,
+       dotlessi => 600,
+       e => 600,
+       eacute => 600,
+       ecaron => 600,
+       ecircumflex => 600,
+       edieresis => 600,
+       edotaccent => 600,
+       egrave => 600,
+       eight => 600,
+       ellipsis => 600,
+       emacron => 600,
+       emdash => 600,
+       endash => 600,
+       eogonek => 600,
+       equal => 600,
+       eth => 600,
+       exclam => 600,
+       exclamdown => 600,
+       f => 600,
+       fi => 600,
+       five => 600,
+       fl => 600,
+       florin => 600,
+       four => 600,
+       fraction => 600,
+       g => 600,
+       gbreve => 600,
+       gcommaaccent => 600,
+       germandbls => 600,
+       grave => 600,
+       greater => 600,
+       greaterequal => 600,
+       guillemotleft => 600,
+       guillemotright => 600,
+       guilsinglleft => 600,
+       guilsinglright => 600,
+       h => 600,
+       hungarumlaut => 600,
+       hyphen => 600,
+       i => 600,
+       iacute => 600,
+       icircumflex => 600,
+       idieresis => 600,
+       igrave => 600,
+       imacron => 600,
+       iogonek => 600,
+       j => 600,
+       k => 600,
+       kcommaaccent => 600,
+       l => 600,
+       lacute => 600,
+       lcaron => 600,
+       lcommaaccent => 600,
+       less => 600,
+       lessequal => 600,
+       logicalnot => 600,
+       lozenge => 600,
+       lslash => 600,
+       m => 600,
+       macron => 600,
+       minus => 600,
+       mu => 600,
+       multiply => 600,
+       n => 600,
+       nacute => 600,
+       ncaron => 600,
+       ncommaaccent => 600,
+       nine => 600,
+       notequal => 600,
+       ntilde => 600,
+       numbersign => 600,
+       o => 600,
+       oacute => 600,
+       ocircumflex => 600,
+       odieresis => 600,
+       oe => 600,
+       ogonek => 600,
+       ograve => 600,
+       ohungarumlaut => 600,
+       omacron => 600,
+       one => 600,
+       onehalf => 600,
+       onequarter => 600,
+       onesuperior => 600,
+       ordfeminine => 600,
+       ordmasculine => 600,
+       oslash => 600,
+       otilde => 600,
+       p => 600,
+       paragraph => 600,
+       parenleft => 600,
+       parenright => 600,
+       partialdiff => 600,
+       percent => 600,
+       period => 600,
+       periodcentered => 600,
+       perthousand => 600,
+       plus => 600,
+       plusminus => 600,
+       q => 600,
+       question => 600,
+       questiondown => 600,
+       quotedbl => 600,
+       quotedblbase => 600,
+       quotedblleft => 600,
+       quotedblright => 600,
+       quoteleft => 600,
+       quoteright => 600,
+       quotesinglbase => 600,
+       quotesingle => 600,
+       r => 600,
+       racute => 600,
+       radical => 600,
+       rcaron => 600,
+       rcommaaccent => 600,
+       registered => 600,
+       ring => 600,
+       s => 600,
+       sacute => 600,
+       scaron => 600,
+       scedilla => 600,
+       scommaaccent => 600,
+       section => 600,
+       semicolon => 600,
+       seven => 600,
+       six => 600,
+       slash => 600,
+       space => 600,
+       sterling => 600,
+       summation => 600,
+       t => 600,
+       tcaron => 600,
+       tcommaaccent => 600,
+       thorn => 600,
+       three => 600,
+       threequarters => 600,
+       threesuperior => 600,
+       tilde => 600,
+       trademark => 600,
+       two => 600,
+       twosuperior => 600,
+       u => 600,
+       uacute => 600,
+       ucircumflex => 600,
+       udieresis => 600,
+       ugrave => 600,
+       uhungarumlaut => 600,
+       umacron => 600,
+       underscore => 600,
+       uogonek => 600,
+       uring => 600,
+       v => 600,
+       w => 600,
+       x => 600,
+       y => 600,
+       yacute => 600,
+       ydieresis => 600,
+       yen => 600,
+       z => 600,
+       zacute => 600,
+       zcaron => 600,
+       zdotaccent => 600,
+       zero => 600,
+       };
+}
+sub afmwx_Courier_Bold {
+       return {
+       A => 600,
+       AE => 600,
+       Aacute => 600,
+       Abreve => 600,
+       Acircumflex => 600,
+       Adieresis => 600,
+       Agrave => 600,
+       Amacron => 600,
+       Aogonek => 600,
+       Aring => 600,
+       Atilde => 600,
+       B => 600,
+       C => 600,
+       Cacute => 600,
+       Ccaron => 600,
+       Ccedilla => 600,
+       D => 600,
+       Dcaron => 600,
+       Dcroat => 600,
+       Delta => 600,
+       E => 600,
+       Eacute => 600,
+       Ecaron => 600,
+       Ecircumflex => 600,
+       Edieresis => 600,
+       Edotaccent => 600,
+       Egrave => 600,
+       Emacron => 600,
+       Eogonek => 600,
+       Eth => 600,
+       Euro => 600,
+       F => 600,
+       G => 600,
+       Gbreve => 600,
+       Gcommaaccent => 600,
+       H => 600,
+       I => 600,
+       Iacute => 600,
+       Icircumflex => 600,
+       Idieresis => 600,
+       Idotaccent => 600,
+       Igrave => 600,
+       Imacron => 600,
+       Iogonek => 600,
+       J => 600,
+       K => 600,
+       Kcommaaccent => 600,
+       L => 600,
+       Lacute => 600,
+       Lcaron => 600,
+       Lcommaaccent => 600,
+       Lslash => 600,
+       M => 600,
+       N => 600,
+       Nacute => 600,
+       Ncaron => 600,
+       Ncommaaccent => 600,
+       Ntilde => 600,
+       O => 600,
+       OE => 600,
+       Oacute => 600,
+       Ocircumflex => 600,
+       Odieresis => 600,
+       Ograve => 600,
+       Ohungarumlaut => 600,
+       Omacron => 600,
+       Oslash => 600,
+       Otilde => 600,
+       P => 600,
+       Q => 600,
+       R => 600,
+       Racute => 600,
+       Rcaron => 600,
+       Rcommaaccent => 600,
+       S => 600,
+       Sacute => 600,
+       Scaron => 600,
+       Scedilla => 600,
+       Scommaaccent => 600,
+       T => 600,
+       Tcaron => 600,
+       Tcommaaccent => 600,
+       Thorn => 600,
+       U => 600,
+       Uacute => 600,
+       Ucircumflex => 600,
+       Udieresis => 600,
+       Ugrave => 600,
+       Uhungarumlaut => 600,
+       Umacron => 600,
+       Uogonek => 600,
+       Uring => 600,
+       V => 600,
+       W => 600,
+       X => 600,
+       Y => 600,
+       Yacute => 600,
+       Ydieresis => 600,
+       Z => 600,
+       Zacute => 600,
+       Zcaron => 600,
+       Zdotaccent => 600,
+       a => 600,
+       aacute => 600,
+       abreve => 600,
+       acircumflex => 600,
+       acute => 600,
+       adieresis => 600,
+       ae => 600,
+       agrave => 600,
+       amacron => 600,
+       ampersand => 600,
+       aogonek => 600,
+       aring => 600,
+       asciicircum => 600,
+       asciitilde => 600,
+       asterisk => 600,
+       at => 600,
+       atilde => 600,
+       b => 600,
+       backslash => 600,
+       bar => 600,
+       braceleft => 600,
+       braceright => 600,
+       bracketleft => 600,
+       bracketright => 600,
+       breve => 600,
+       brokenbar => 600,
+       bullet => 600,
+       c => 600,
+       cacute => 600,
+       caron => 600,
+       ccaron => 600,
+       ccedilla => 600,
+       cedilla => 600,
+       cent => 600,
+       circumflex => 600,
+       colon => 600,
+       comma => 600,
+       commaaccent => 600,
+       copyright => 600,
+       currency => 600,
+       d => 600,
+       dagger => 600,
+       daggerdbl => 600,
+       dcaron => 600,
+       dcroat => 600,
+       degree => 600,
+       dieresis => 600,
+       divide => 600,
+       dollar => 600,
+       dotaccent => 600,
+       dotlessi => 600,
+       e => 600,
+       eacute => 600,
+       ecaron => 600,
+       ecircumflex => 600,
+       edieresis => 600,
+       edotaccent => 600,
+       egrave => 600,
+       eight => 600,
+       ellipsis => 600,
+       emacron => 600,
+       emdash => 600,
+       endash => 600,
+       eogonek => 600,
+       equal => 600,
+       eth => 600,
+       exclam => 600,
+       exclamdown => 600,
+       f => 600,
+       fi => 600,
+       five => 600,
+       fl => 600,
+       florin => 600,
+       four => 600,
+       fraction => 600,
+       g => 600,
+       gbreve => 600,
+       gcommaaccent => 600,
+       germandbls => 600,
+       grave => 600,
+       greater => 600,
+       greaterequal => 600,
+       guillemotleft => 600,
+       guillemotright => 600,
+       guilsinglleft => 600,
+       guilsinglright => 600,
+       h => 600,
+       hungarumlaut => 600,
+       hyphen => 600,
+       i => 600,
+       iacute => 600,
+       icircumflex => 600,
+       idieresis => 600,
+       igrave => 600,
+       imacron => 600,
+       iogonek => 600,
+       j => 600,
+       k => 600,
+       kcommaaccent => 600,
+       l => 600,
+       lacute => 600,
+       lcaron => 600,
+       lcommaaccent => 600,
+       less => 600,
+       lessequal => 600,
+       logicalnot => 600,
+       lozenge => 600,
+       lslash => 600,
+       m => 600,
+       macron => 600,
+       minus => 600,
+       mu => 600,
+       multiply => 600,
+       n => 600,
+       nacute => 600,
+       ncaron => 600,
+       ncommaaccent => 600,
+       nine => 600,
+       notequal => 600,
+       ntilde => 600,
+       numbersign => 600,
+       o => 600,
+       oacute => 600,
+       ocircumflex => 600,
+       odieresis => 600,
+       oe => 600,
+       ogonek => 600,
+       ograve => 600,
+       ohungarumlaut => 600,
+       omacron => 600,
+       one => 600,
+       onehalf => 600,
+       onequarter => 600,
+       onesuperior => 600,
+       ordfeminine => 600,
+       ordmasculine => 600,
+       oslash => 600,
+       otilde => 600,
+       p => 600,
+       paragraph => 600,
+       parenleft => 600,
+       parenright => 600,
+       partialdiff => 600,
+       percent => 600,
+       period => 600,
+       periodcentered => 600,
+       perthousand => 600,
+       plus => 600,
+       plusminus => 600,
+       q => 600,
+       question => 600,
+       questiondown => 600,
+       quotedbl => 600,
+       quotedblbase => 600,
+       quotedblleft => 600,
+       quotedblright => 600,
+       quoteleft => 600,
+       quoteright => 600,
+       quotesinglbase => 600,
+       quotesingle => 600,
+       r => 600,
+       racute => 600,
+       radical => 600,
+       rcaron => 600,
+       rcommaaccent => 600,
+       registered => 600,
+       ring => 600,
+       s => 600,
+       sacute => 600,
+       scaron => 600,
+       scedilla => 600,
+       scommaaccent => 600,
+       section => 600,
+       semicolon => 600,
+       seven => 600,
+       six => 600,
+       slash => 600,
+       space => 600,
+       sterling => 600,
+       summation => 600,
+       t => 600,
+       tcaron => 600,
+       tcommaaccent => 600,
+       thorn => 600,
+       three => 600,
+       threequarters => 600,
+       threesuperior => 600,
+       tilde => 600,
+       trademark => 600,
+       two => 600,
+       twosuperior => 600,
+       u => 600,
+       uacute => 600,
+       ucircumflex => 600,
+       udieresis => 600,
+       ugrave => 600,
+       uhungarumlaut => 600,
+       umacron => 600,
+       underscore => 600,
+       uogonek => 600,
+       uring => 600,
+       v => 600,
+       w => 600,
+       x => 600,
+       y => 600,
+       yacute => 600,
+       ydieresis => 600,
+       yen => 600,
+       z => 600,
+       zacute => 600,
+       zcaron => 600,
+       zdotaccent => 600,
+       zero => 600,
+       };
+}
+sub afmwx_Courier_BoldOblique {
+       return {
+       A => 600,
+       AE => 600,
+       Aacute => 600,
+       Abreve => 600,
+       Acircumflex => 600,
+       Adieresis => 600,
+       Agrave => 600,
+       Amacron => 600,
+       Aogonek => 600,
+       Aring => 600,
+       Atilde => 600,
+       B => 600,
+       C => 600,
+       Cacute => 600,
+       Ccaron => 600,
+       Ccedilla => 600,
+       D => 600,
+       Dcaron => 600,
+       Dcroat => 600,
+       Delta => 600,
+       E => 600,
+       Eacute => 600,
+       Ecaron => 600,
+       Ecircumflex => 600,
+       Edieresis => 600,
+       Edotaccent => 600,
+       Egrave => 600,
+       Emacron => 600,
+       Eogonek => 600,
+       Eth => 600,
+       Euro => 600,
+       F => 600,
+       G => 600,
+       Gbreve => 600,
+       Gcommaaccent => 600,
+       H => 600,
+       I => 600,
+       Iacute => 600,
+       Icircumflex => 600,
+       Idieresis => 600,
+       Idotaccent => 600,
+       Igrave => 600,
+       Imacron => 600,
+       Iogonek => 600,
+       J => 600,
+       K => 600,
+       Kcommaaccent => 600,
+       L => 600,
+       Lacute => 600,
+       Lcaron => 600,
+       Lcommaaccent => 600,
+       Lslash => 600,
+       M => 600,
+       N => 600,
+       Nacute => 600,
+       Ncaron => 600,
+       Ncommaaccent => 600,
+       Ntilde => 600,
+       O => 600,
+       OE => 600,
+       Oacute => 600,
+       Ocircumflex => 600,
+       Odieresis => 600,
+       Ograve => 600,
+       Ohungarumlaut => 600,
+       Omacron => 600,
+       Oslash => 600,
+       Otilde => 600,
+       P => 600,
+       Q => 600,
+       R => 600,
+       Racute => 600,
+       Rcaron => 600,
+       Rcommaaccent => 600,
+       S => 600,
+       Sacute => 600,
+       Scaron => 600,
+       Scedilla => 600,
+       Scommaaccent => 600,
+       T => 600,
+       Tcaron => 600,
+       Tcommaaccent => 600,
+       Thorn => 600,
+       U => 600,
+       Uacute => 600,
+       Ucircumflex => 600,
+       Udieresis => 600,
+       Ugrave => 600,
+       Uhungarumlaut => 600,
+       Umacron => 600,
+       Uogonek => 600,
+       Uring => 600,
+       V => 600,
+       W => 600,
+       X => 600,
+       Y => 600,
+       Yacute => 600,
+       Ydieresis => 600,
+       Z => 600,
+       Zacute => 600,
+       Zcaron => 600,
+       Zdotaccent => 600,
+       a => 600,
+       aacute => 600,
+       abreve => 600,
+       acircumflex => 600,
+       acute => 600,
+       adieresis => 600,
+       ae => 600,
+       agrave => 600,
+       amacron => 600,
+       ampersand => 600,
+       aogonek => 600,
+       aring => 600,
+       asciicircum => 600,
+       asciitilde => 600,
+       asterisk => 600,
+       at => 600,
+       atilde => 600,
+       b => 600,
+       backslash => 600,
+       bar => 600,
+       braceleft => 600,
+       braceright => 600,
+       bracketleft => 600,
+       bracketright => 600,
+       breve => 600,
+       brokenbar => 600,
+       bullet => 600,
+       c => 600,
+       cacute => 600,
+       caron => 600,
+       ccaron => 600,
+       ccedilla => 600,
+       cedilla => 600,
+       cent => 600,
+       circumflex => 600,
+       colon => 600,
+       comma => 600,
+       commaaccent => 600,
+       copyright => 600,
+       currency => 600,
+       d => 600,
+       dagger => 600,
+       daggerdbl => 600,
+       dcaron => 600,
+       dcroat => 600,
+       degree => 600,
+       dieresis => 600,
+       divide => 600,
+       dollar => 600,
+       dotaccent => 600,
+       dotlessi => 600,
+       e => 600,
+       eacute => 600,
+       ecaron => 600,
+       ecircumflex => 600,
+       edieresis => 600,
+       edotaccent => 600,
+       egrave => 600,
+       eight => 600,
+       ellipsis => 600,
+       emacron => 600,
+       emdash => 600,
+       endash => 600,
+       eogonek => 600,
+       equal => 600,
+       eth => 600,
+       exclam => 600,
+       exclamdown => 600,
+       f => 600,
+       fi => 600,
+       five => 600,
+       fl => 600,
+       florin => 600,
+       four => 600,
+       fraction => 600,
+       g => 600,
+       gbreve => 600,
+       gcommaaccent => 600,
+       germandbls => 600,
+       grave => 600,
+       greater => 600,
+       greaterequal => 600,
+       guillemotleft => 600,
+       guillemotright => 600,
+       guilsinglleft => 600,
+       guilsinglright => 600,
+       h => 600,
+       hungarumlaut => 600,
+       hyphen => 600,
+       i => 600,
+       iacute => 600,
+       icircumflex => 600,
+       idieresis => 600,
+       igrave => 600,
+       imacron => 600,
+       iogonek => 600,
+       j => 600,
+       k => 600,
+       kcommaaccent => 600,
+       l => 600,
+       lacute => 600,
+       lcaron => 600,
+       lcommaaccent => 600,
+       less => 600,
+       lessequal => 600,
+       logicalnot => 600,
+       lozenge => 600,
+       lslash => 600,
+       m => 600,
+       macron => 600,
+       minus => 600,
+       mu => 600,
+       multiply => 600,
+       n => 600,
+       nacute => 600,
+       ncaron => 600,
+       ncommaaccent => 600,
+       nine => 600,
+       notequal => 600,
+       ntilde => 600,
+       numbersign => 600,
+       o => 600,
+       oacute => 600,
+       ocircumflex => 600,
+       odieresis => 600,
+       oe => 600,
+       ogonek => 600,
+       ograve => 600,
+       ohungarumlaut => 600,
+       omacron => 600,
+       one => 600,
+       onehalf => 600,
+       onequarter => 600,
+       onesuperior => 600,
+       ordfeminine => 600,
+       ordmasculine => 600,
+       oslash => 600,
+       otilde => 600,
+       p => 600,
+       paragraph => 600,
+       parenleft => 600,
+       parenright => 600,
+       partialdiff => 600,
+       percent => 600,
+       period => 600,
+       periodcentered => 600,
+       perthousand => 600,
+       plus => 600,
+       plusminus => 600,
+       q => 600,
+       question => 600,
+       questiondown => 600,
+       quotedbl => 600,
+       quotedblbase => 600,
+       quotedblleft => 600,
+       quotedblright => 600,
+       quoteleft => 600,
+       quoteright => 600,
+       quotesinglbase => 600,
+       quotesingle => 600,
+       r => 600,
+       racute => 600,
+       radical => 600,
+       rcaron => 600,
+       rcommaaccent => 600,
+       registered => 600,
+       ring => 600,
+       s => 600,
+       sacute => 600,
+       scaron => 600,
+       scedilla => 600,
+       scommaaccent => 600,
+       section => 600,
+       semicolon => 600,
+       seven => 600,
+       six => 600,
+       slash => 600,
+       space => 600,
+       sterling => 600,
+       summation => 600,
+       t => 600,
+       tcaron => 600,
+       tcommaaccent => 600,
+       thorn => 600,
+       three => 600,
+       threequarters => 600,
+       threesuperior => 600,
+       tilde => 600,
+       trademark => 600,
+       two => 600,
+       twosuperior => 600,
+       u => 600,
+       uacute => 600,
+       ucircumflex => 600,
+       udieresis => 600,
+       ugrave => 600,
+       uhungarumlaut => 600,
+       umacron => 600,
+       underscore => 600,
+       uogonek => 600,
+       uring => 600,
+       v => 600,
+       w => 600,
+       x => 600,
+       y => 600,
+       yacute => 600,
+       ydieresis => 600,
+       yen => 600,
+       z => 600,
+       zacute => 600,
+       zcaron => 600,
+       zdotaccent => 600,
+       zero => 600,
+       };
+}
+sub afmwx_Courier_Oblique {
+       return {
+       A => 600,
+       AE => 600,
+       Aacute => 600,
+       Abreve => 600,
+       Acircumflex => 600,
+       Adieresis => 600,
+       Agrave => 600,
+       Amacron => 600,
+       Aogonek => 600,
+       Aring => 600,
+       Atilde => 600,
+       B => 600,
+       C => 600,
+       Cacute => 600,
+       Ccaron => 600,
+       Ccedilla => 600,
+       D => 600,
+       Dcaron => 600,
+       Dcroat => 600,
+       Delta => 600,
+       E => 600,
+       Eacute => 600,
+       Ecaron => 600,
+       Ecircumflex => 600,
+       Edieresis => 600,
+       Edotaccent => 600,
+       Egrave => 600,
+       Emacron => 600,
+       Eogonek => 600,
+       Eth => 600,
+       Euro => 600,
+       F => 600,
+       G => 600,
+       Gbreve => 600,
+       Gcommaaccent => 600,
+       H => 600,
+       I => 600,
+       Iacute => 600,
+       Icircumflex => 600,
+       Idieresis => 600,
+       Idotaccent => 600,
+       Igrave => 600,
+       Imacron => 600,
+       Iogonek => 600,
+       J => 600,
+       K => 600,
+       Kcommaaccent => 600,
+       L => 600,
+       Lacute => 600,
+       Lcaron => 600,
+       Lcommaaccent => 600,
+       Lslash => 600,
+       M => 600,
+       N => 600,
+       Nacute => 600,
+       Ncaron => 600,
+       Ncommaaccent => 600,
+       Ntilde => 600,
+       O => 600,
+       OE => 600,
+       Oacute => 600,
+       Ocircumflex => 600,
+       Odieresis => 600,
+       Ograve => 600,
+       Ohungarumlaut => 600,
+       Omacron => 600,
+       Oslash => 600,
+       Otilde => 600,
+       P => 600,
+       Q => 600,
+       R => 600,
+       Racute => 600,
+       Rcaron => 600,
+       Rcommaaccent => 600,
+       S => 600,
+       Sacute => 600,
+       Scaron => 600,
+       Scedilla => 600,
+       Scommaaccent => 600,
+       T => 600,
+       Tcaron => 600,
+       Tcommaaccent => 600,
+       Thorn => 600,
+       U => 600,
+       Uacute => 600,
+       Ucircumflex => 600,
+       Udieresis => 600,
+       Ugrave => 600,
+       Uhungarumlaut => 600,
+       Umacron => 600,
+       Uogonek => 600,
+       Uring => 600,
+       V => 600,
+       W => 600,
+       X => 600,
+       Y => 600,
+       Yacute => 600,
+       Ydieresis => 600,
+       Z => 600,
+       Zacute => 600,
+       Zcaron => 600,
+       Zdotaccent => 600,
+       a => 600,
+       aacute => 600,
+       abreve => 600,
+       acircumflex => 600,
+       acute => 600,
+       adieresis => 600,
+       ae => 600,
+       agrave => 600,
+       amacron => 600,
+       ampersand => 600,
+       aogonek => 600,
+       aring => 600,
+       asciicircum => 600,
+       asciitilde => 600,
+       asterisk => 600,
+       at => 600,
+       atilde => 600,
+       b => 600,
+       backslash => 600,
+       bar => 600,
+       braceleft => 600,
+       braceright => 600,
+       bracketleft => 600,
+       bracketright => 600,
+       breve => 600,
+       brokenbar => 600,
+       bullet => 600,
+       c => 600,
+       cacute => 600,
+       caron => 600,
+       ccaron => 600,
+       ccedilla => 600,
+       cedilla => 600,
+       cent => 600,
+       circumflex => 600,
+       colon => 600,
+       comma => 600,
+       commaaccent => 600,
+       copyright => 600,
+       currency => 600,
+       d => 600,
+       dagger => 600,
+       daggerdbl => 600,
+       dcaron => 600,
+       dcroat => 600,
+       degree => 600,
+       dieresis => 600,
+       divide => 600,
+       dollar => 600,
+       dotaccent => 600,
+       dotlessi => 600,
+       e => 600,
+       eacute => 600,
+       ecaron => 600,
+       ecircumflex => 600,
+       edieresis => 600,
+       edotaccent => 600,
+       egrave => 600,
+       eight => 600,
+       ellipsis => 600,
+       emacron => 600,
+       emdash => 600,
+       endash => 600,
+       eogonek => 600,
+       equal => 600,
+       eth => 600,
+       exclam => 600,
+       exclamdown => 600,
+       f => 600,
+       fi => 600,
+       five => 600,
+       fl => 600,
+       florin => 600,
+       four => 600,
+       fraction => 600,
+       g => 600,
+       gbreve => 600,
+       gcommaaccent => 600,
+       germandbls => 600,
+       grave => 600,
+       greater => 600,
+       greaterequal => 600,
+       guillemotleft => 600,
+       guillemotright => 600,
+       guilsinglleft => 600,
+       guilsinglright => 600,
+       h => 600,
+       hungarumlaut => 600,
+       hyphen => 600,
+       i => 600,
+       iacute => 600,
+       icircumflex => 600,
+       idieresis => 600,
+       igrave => 600,
+       imacron => 600,
+       iogonek => 600,
+       j => 600,
+       k => 600,
+       kcommaaccent => 600,
+       l => 600,
+       lacute => 600,
+       lcaron => 600,
+       lcommaaccent => 600,
+       less => 600,
+       lessequal => 600,
+       logicalnot => 600,
+       lozenge => 600,
+       lslash => 600,
+       m => 600,
+       macron => 600,
+       minus => 600,
+       mu => 600,
+       multiply => 600,
+       n => 600,
+       nacute => 600,
+       ncaron => 600,
+       ncommaaccent => 600,
+       nine => 600,
+       notequal => 600,
+       ntilde => 600,
+       numbersign => 600,
+       o => 600,
+       oacute => 600,
+       ocircumflex => 600,
+       odieresis => 600,
+       oe => 600,
+       ogonek => 600,
+       ograve => 600,
+       ohungarumlaut => 600,
+       omacron => 600,
+       one => 600,
+       onehalf => 600,
+       onequarter => 600,
+       onesuperior => 600,
+       ordfeminine => 600,
+       ordmasculine => 600,
+       oslash => 600,
+       otilde => 600,
+       p => 600,
+       paragraph => 600,
+       parenleft => 600,
+       parenright => 600,
+       partialdiff => 600,
+       percent => 600,
+       period => 600,
+       periodcentered => 600,
+       perthousand => 600,
+       plus => 600,
+       plusminus => 600,
+       q => 600,
+       question => 600,
+       questiondown => 600,
+       quotedbl => 600,
+       quotedblbase => 600,
+       quotedblleft => 600,
+       quotedblright => 600,
+       quoteleft => 600,
+       quoteright => 600,
+       quotesinglbase => 600,
+       quotesingle => 600,
+       r => 600,
+       racute => 600,
+       radical => 600,
+       rcaron => 600,
+       rcommaaccent => 600,
+       registered => 600,
+       ring => 600,
+       s => 600,
+       sacute => 600,
+       scaron => 600,
+       scedilla => 600,
+       scommaaccent => 600,
+       section => 600,
+       semicolon => 600,
+       seven => 600,
+       six => 600,
+       slash => 600,
+       space => 600,
+       sterling => 600,
+       summation => 600,
+       t => 600,
+       tcaron => 600,
+       tcommaaccent => 600,
+       thorn => 600,
+       three => 600,
+       threequarters => 600,
+       threesuperior => 600,
+       tilde => 600,
+       trademark => 600,
+       two => 600,
+       twosuperior => 600,
+       u => 600,
+       uacute => 600,
+       ucircumflex => 600,
+       udieresis => 600,
+       ugrave => 600,
+       uhungarumlaut => 600,
+       umacron => 600,
+       underscore => 600,
+       uogonek => 600,
+       uring => 600,
+       v => 600,
+       w => 600,
+       x => 600,
+       y => 600,
+       yacute => 600,
+       ydieresis => 600,
+       yen => 600,
+       z => 600,
+       zacute => 600,
+       zcaron => 600,
+       zdotaccent => 600,
+       zero => 600,
+       };
+}
+sub afmwx_Helvetica {
+       return {
+       A => 667,
+       AE => 1000,
+       Aacute => 667,
+       Abreve => 667,
+       Acircumflex => 667,
+       Adieresis => 667,
+       Agrave => 667,
+       Amacron => 667,
+       Aogonek => 667,
+       Aring => 667,
+       Atilde => 667,
+       B => 667,
+       C => 722,
+       Cacute => 722,
+       Ccaron => 722,
+       Ccedilla => 722,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 667,
+       Eacute => 667,
+       Ecaron => 667,
+       Ecircumflex => 667,
+       Edieresis => 667,
+       Edotaccent => 667,
+       Egrave => 667,
+       Emacron => 667,
+       Eogonek => 667,
+       Eth => 722,
+       Euro => 556,
+       F => 611,
+       G => 778,
+       Gbreve => 778,
+       Gcommaaccent => 778,
+       H => 722,
+       I => 278,
+       Iacute => 278,
+       Icircumflex => 278,
+       Idieresis => 278,
+       Idotaccent => 278,
+       Igrave => 278,
+       Imacron => 278,
+       Iogonek => 278,
+       J => 500,
+       K => 667,
+       Kcommaaccent => 667,
+       L => 556,
+       Lacute => 556,
+       Lcaron => 556,
+       Lcommaaccent => 556,
+       Lslash => 556,
+       M => 833,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 778,
+       OE => 1000,
+       Oacute => 778,
+       Ocircumflex => 778,
+       Odieresis => 778,
+       Ograve => 778,
+       Ohungarumlaut => 778,
+       Omacron => 778,
+       Oslash => 778,
+       Otilde => 778,
+       P => 667,
+       Q => 778,
+       R => 722,
+       Racute => 722,
+       Rcaron => 722,
+       Rcommaaccent => 722,
+       S => 667,
+       Sacute => 667,
+       Scaron => 667,
+       Scedilla => 667,
+       Scommaaccent => 667,
+       T => 611,
+       Tcaron => 611,
+       Tcommaaccent => 611,
+       Thorn => 667,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 667,
+       W => 944,
+       X => 667,
+       Y => 667,
+       Yacute => 667,
+       Ydieresis => 667,
+       Z => 611,
+       Zacute => 611,
+       Zcaron => 611,
+       Zdotaccent => 611,
+       a => 556,
+       aacute => 556,
+       abreve => 556,
+       acircumflex => 556,
+       acute => 333,
+       adieresis => 556,
+       ae => 889,
+       agrave => 556,
+       amacron => 556,
+       ampersand => 667,
+       aogonek => 556,
+       aring => 556,
+       asciicircum => 469,
+       asciitilde => 584,
+       asterisk => 389,
+       at => 1015,
+       atilde => 556,
+       b => 556,
+       backslash => 278,
+       bar => 260,
+       braceleft => 334,
+       braceright => 334,
+       bracketleft => 278,
+       bracketright => 278,
+       breve => 333,
+       brokenbar => 260,
+       bullet => 350,
+       c => 500,
+       cacute => 500,
+       caron => 333,
+       ccaron => 500,
+       ccedilla => 500,
+       cedilla => 333,
+       cent => 556,
+       circumflex => 333,
+       colon => 278,
+       comma => 278,
+       commaaccent => 250,
+       copyright => 737,
+       currency => 556,
+       d => 556,
+       dagger => 556,
+       daggerdbl => 556,
+       dcaron => 643,
+       dcroat => 556,
+       degree => 400,
+       dieresis => 333,
+       divide => 584,
+       dollar => 556,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 556,
+       eacute => 556,
+       ecaron => 556,
+       ecircumflex => 556,
+       edieresis => 556,
+       edotaccent => 556,
+       egrave => 556,
+       eight => 556,
+       ellipsis => 1000,
+       emacron => 556,
+       emdash => 1000,
+       endash => 556,
+       eogonek => 556,
+       equal => 584,
+       eth => 556,
+       exclam => 278,
+       exclamdown => 333,
+       f => 278,
+       fi => 500,
+       five => 556,
+       fl => 500,
+       florin => 556,
+       four => 556,
+       fraction => 167,
+       g => 556,
+       gbreve => 556,
+       gcommaaccent => 556,
+       germandbls => 611,
+       grave => 333,
+       greater => 584,
+       greaterequal => 549,
+       guillemotleft => 556,
+       guillemotright => 556,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 556,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 222,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 222,
+       j => 222,
+       k => 500,
+       kcommaaccent => 500,
+       l => 222,
+       lacute => 222,
+       lcaron => 299,
+       lcommaaccent => 222,
+       less => 584,
+       lessequal => 549,
+       logicalnot => 584,
+       lozenge => 471,
+       lslash => 222,
+       m => 833,
+       macron => 333,
+       minus => 584,
+       mu => 556,
+       multiply => 584,
+       n => 556,
+       nacute => 556,
+       ncaron => 556,
+       ncommaaccent => 556,
+       nine => 556,
+       notequal => 549,
+       ntilde => 556,
+       numbersign => 556,
+       o => 556,
+       oacute => 556,
+       ocircumflex => 556,
+       odieresis => 556,
+       oe => 944,
+       ogonek => 333,
+       ograve => 556,
+       ohungarumlaut => 556,
+       omacron => 556,
+       one => 556,
+       onehalf => 834,
+       onequarter => 834,
+       onesuperior => 333,
+       ordfeminine => 370,
+       ordmasculine => 365,
+       oslash => 611,
+       otilde => 556,
+       p => 556,
+       paragraph => 537,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 476,
+       percent => 889,
+       period => 278,
+       periodcentered => 278,
+       perthousand => 1000,
+       plus => 584,
+       plusminus => 584,
+       q => 556,
+       question => 556,
+       questiondown => 611,
+       quotedbl => 355,
+       quotedblbase => 333,
+       quotedblleft => 333,
+       quotedblright => 333,
+       quoteleft => 222,
+       quoteright => 222,
+       quotesinglbase => 222,
+       quotesingle => 191,
+       r => 333,
+       racute => 333,
+       radical => 453,
+       rcaron => 333,
+       rcommaaccent => 333,
+       registered => 737,
+       ring => 333,
+       s => 500,
+       sacute => 500,
+       scaron => 500,
+       scedilla => 500,
+       scommaaccent => 500,
+       section => 556,
+       semicolon => 278,
+       seven => 556,
+       six => 556,
+       slash => 278,
+       space => 278,
+       sterling => 556,
+       summation => 600,
+       t => 278,
+       tcaron => 317,
+       tcommaaccent => 278,
+       thorn => 556,
+       three => 556,
+       threequarters => 834,
+       threesuperior => 333,
+       tilde => 333,
+       trademark => 1000,
+       two => 556,
+       twosuperior => 333,
+       u => 556,
+       uacute => 556,
+       ucircumflex => 556,
+       udieresis => 556,
+       ugrave => 556,
+       uhungarumlaut => 556,
+       umacron => 556,
+       underscore => 556,
+       uogonek => 556,
+       uring => 556,
+       v => 500,
+       w => 722,
+       x => 500,
+       y => 500,
+       yacute => 500,
+       ydieresis => 500,
+       yen => 556,
+       z => 500,
+       zacute => 500,
+       zcaron => 500,
+       zdotaccent => 500,
+       zero => 556,
+       };
+}
+sub afmwx_Helvetica_Bold {
+       return {
+       A => 722,
+       AE => 1000,
+       Aacute => 722,
+       Abreve => 722,
+       Acircumflex => 722,
+       Adieresis => 722,
+       Agrave => 722,
+       Amacron => 722,
+       Aogonek => 722,
+       Aring => 722,
+       Atilde => 722,
+       B => 722,
+       C => 722,
+       Cacute => 722,
+       Ccaron => 722,
+       Ccedilla => 722,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 667,
+       Eacute => 667,
+       Ecaron => 667,
+       Ecircumflex => 667,
+       Edieresis => 667,
+       Edotaccent => 667,
+       Egrave => 667,
+       Emacron => 667,
+       Eogonek => 667,
+       Eth => 722,
+       Euro => 556,
+       F => 611,
+       G => 778,
+       Gbreve => 778,
+       Gcommaaccent => 778,
+       H => 722,
+       I => 278,
+       Iacute => 278,
+       Icircumflex => 278,
+       Idieresis => 278,
+       Idotaccent => 278,
+       Igrave => 278,
+       Imacron => 278,
+       Iogonek => 278,
+       J => 556,
+       K => 722,
+       Kcommaaccent => 722,
+       L => 611,
+       Lacute => 611,
+       Lcaron => 611,
+       Lcommaaccent => 611,
+       Lslash => 611,
+       M => 833,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 778,
+       OE => 1000,
+       Oacute => 778,
+       Ocircumflex => 778,
+       Odieresis => 778,
+       Ograve => 778,
+       Ohungarumlaut => 778,
+       Omacron => 778,
+       Oslash => 778,
+       Otilde => 778,
+       P => 667,
+       Q => 778,
+       R => 722,
+       Racute => 722,
+       Rcaron => 722,
+       Rcommaaccent => 722,
+       S => 667,
+       Sacute => 667,
+       Scaron => 667,
+       Scedilla => 667,
+       Scommaaccent => 667,
+       T => 611,
+       Tcaron => 611,
+       Tcommaaccent => 611,
+       Thorn => 667,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 667,
+       W => 944,
+       X => 667,
+       Y => 667,
+       Yacute => 667,
+       Ydieresis => 667,
+       Z => 611,
+       Zacute => 611,
+       Zcaron => 611,
+       Zdotaccent => 611,
+       a => 556,
+       aacute => 556,
+       abreve => 556,
+       acircumflex => 556,
+       acute => 333,
+       adieresis => 556,
+       ae => 889,
+       agrave => 556,
+       amacron => 556,
+       ampersand => 722,
+       aogonek => 556,
+       aring => 556,
+       asciicircum => 584,
+       asciitilde => 584,
+       asterisk => 389,
+       at => 975,
+       atilde => 556,
+       b => 611,
+       backslash => 278,
+       bar => 280,
+       braceleft => 389,
+       braceright => 389,
+       bracketleft => 333,
+       bracketright => 333,
+       breve => 333,
+       brokenbar => 280,
+       bullet => 350,
+       c => 556,
+       cacute => 556,
+       caron => 333,
+       ccaron => 556,
+       ccedilla => 556,
+       cedilla => 333,
+       cent => 556,
+       circumflex => 333,
+       colon => 333,
+       comma => 278,
+       commaaccent => 250,
+       copyright => 737,
+       currency => 556,
+       d => 611,
+       dagger => 556,
+       daggerdbl => 556,
+       dcaron => 743,
+       dcroat => 611,
+       degree => 400,
+       dieresis => 333,
+       divide => 584,
+       dollar => 556,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 556,
+       eacute => 556,
+       ecaron => 556,
+       ecircumflex => 556,
+       edieresis => 556,
+       edotaccent => 556,
+       egrave => 556,
+       eight => 556,
+       ellipsis => 1000,
+       emacron => 556,
+       emdash => 1000,
+       endash => 556,
+       eogonek => 556,
+       equal => 584,
+       eth => 611,
+       exclam => 333,
+       exclamdown => 333,
+       f => 333,
+       fi => 611,
+       five => 556,
+       fl => 611,
+       florin => 556,
+       four => 556,
+       fraction => 167,
+       g => 611,
+       gbreve => 611,
+       gcommaaccent => 611,
+       germandbls => 611,
+       grave => 333,
+       greater => 584,
+       greaterequal => 549,
+       guillemotleft => 556,
+       guillemotright => 556,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 611,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 278,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 278,
+       j => 278,
+       k => 556,
+       kcommaaccent => 556,
+       l => 278,
+       lacute => 278,
+       lcaron => 400,
+       lcommaaccent => 278,
+       less => 584,
+       lessequal => 549,
+       logicalnot => 584,
+       lozenge => 494,
+       lslash => 278,
+       m => 889,
+       macron => 333,
+       minus => 584,
+       mu => 611,
+       multiply => 584,
+       n => 611,
+       nacute => 611,
+       ncaron => 611,
+       ncommaaccent => 611,
+       nine => 556,
+       notequal => 549,
+       ntilde => 611,
+       numbersign => 556,
+       o => 611,
+       oacute => 611,
+       ocircumflex => 611,
+       odieresis => 611,
+       oe => 944,
+       ogonek => 333,
+       ograve => 611,
+       ohungarumlaut => 611,
+       omacron => 611,
+       one => 556,
+       onehalf => 834,
+       onequarter => 834,
+       onesuperior => 333,
+       ordfeminine => 370,
+       ordmasculine => 365,
+       oslash => 611,
+       otilde => 611,
+       p => 611,
+       paragraph => 556,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 494,
+       percent => 889,
+       period => 278,
+       periodcentered => 278,
+       perthousand => 1000,
+       plus => 584,
+       plusminus => 584,
+       q => 611,
+       question => 611,
+       questiondown => 611,
+       quotedbl => 474,
+       quotedblbase => 500,
+       quotedblleft => 500,
+       quotedblright => 500,
+       quoteleft => 278,
+       quoteright => 278,
+       quotesinglbase => 278,
+       quotesingle => 238,
+       r => 389,
+       racute => 389,
+       radical => 549,
+       rcaron => 389,
+       rcommaaccent => 389,
+       registered => 737,
+       ring => 333,
+       s => 556,
+       sacute => 556,
+       scaron => 556,
+       scedilla => 556,
+       scommaaccent => 556,
+       section => 556,
+       semicolon => 333,
+       seven => 556,
+       six => 556,
+       slash => 278,
+       space => 278,
+       sterling => 556,
+       summation => 600,
+       t => 333,
+       tcaron => 389,
+       tcommaaccent => 333,
+       thorn => 611,
+       three => 556,
+       threequarters => 834,
+       threesuperior => 333,
+       tilde => 333,
+       trademark => 1000,
+       two => 556,
+       twosuperior => 333,
+       u => 611,
+       uacute => 611,
+       ucircumflex => 611,
+       udieresis => 611,
+       ugrave => 611,
+       uhungarumlaut => 611,
+       umacron => 611,
+       underscore => 556,
+       uogonek => 611,
+       uring => 611,
+       v => 556,
+       w => 778,
+       x => 556,
+       y => 556,
+       yacute => 556,
+       ydieresis => 556,
+       yen => 556,
+       z => 500,
+       zacute => 500,
+       zcaron => 500,
+       zdotaccent => 500,
+       zero => 556,
+       };
+}
+sub afmwx_Helvetica_BoldOblique {
+       return {
+       A => 722,
+       AE => 1000,
+       Aacute => 722,
+       Abreve => 722,
+       Acircumflex => 722,
+       Adieresis => 722,
+       Agrave => 722,
+       Amacron => 722,
+       Aogonek => 722,
+       Aring => 722,
+       Atilde => 722,
+       B => 722,
+       C => 722,
+       Cacute => 722,
+       Ccaron => 722,
+       Ccedilla => 722,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 667,
+       Eacute => 667,
+       Ecaron => 667,
+       Ecircumflex => 667,
+       Edieresis => 667,
+       Edotaccent => 667,
+       Egrave => 667,
+       Emacron => 667,
+       Eogonek => 667,
+       Eth => 722,
+       Euro => 556,
+       F => 611,
+       G => 778,
+       Gbreve => 778,
+       Gcommaaccent => 778,
+       H => 722,
+       I => 278,
+       Iacute => 278,
+       Icircumflex => 278,
+       Idieresis => 278,
+       Idotaccent => 278,
+       Igrave => 278,
+       Imacron => 278,
+       Iogonek => 278,
+       J => 556,
+       K => 722,
+       Kcommaaccent => 722,
+       L => 611,
+       Lacute => 611,
+       Lcaron => 611,
+       Lcommaaccent => 611,
+       Lslash => 611,
+       M => 833,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 778,
+       OE => 1000,
+       Oacute => 778,
+       Ocircumflex => 778,
+       Odieresis => 778,
+       Ograve => 778,
+       Ohungarumlaut => 778,
+       Omacron => 778,
+       Oslash => 778,
+       Otilde => 778,
+       P => 667,
+       Q => 778,
+       R => 722,
+       Racute => 722,
+       Rcaron => 722,
+       Rcommaaccent => 722,
+       S => 667,
+       Sacute => 667,
+       Scaron => 667,
+       Scedilla => 667,
+       Scommaaccent => 667,
+       T => 611,
+       Tcaron => 611,
+       Tcommaaccent => 611,
+       Thorn => 667,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 667,
+       W => 944,
+       X => 667,
+       Y => 667,
+       Yacute => 667,
+       Ydieresis => 667,
+       Z => 611,
+       Zacute => 611,
+       Zcaron => 611,
+       Zdotaccent => 611,
+       a => 556,
+       aacute => 556,
+       abreve => 556,
+       acircumflex => 556,
+       acute => 333,
+       adieresis => 556,
+       ae => 889,
+       agrave => 556,
+       amacron => 556,
+       ampersand => 722,
+       aogonek => 556,
+       aring => 556,
+       asciicircum => 584,
+       asciitilde => 584,
+       asterisk => 389,
+       at => 975,
+       atilde => 556,
+       b => 611,
+       backslash => 278,
+       bar => 280,
+       braceleft => 389,
+       braceright => 389,
+       bracketleft => 333,
+       bracketright => 333,
+       breve => 333,
+       brokenbar => 280,
+       bullet => 350,
+       c => 556,
+       cacute => 556,
+       caron => 333,
+       ccaron => 556,
+       ccedilla => 556,
+       cedilla => 333,
+       cent => 556,
+       circumflex => 333,
+       colon => 333,
+       comma => 278,
+       commaaccent => 250,
+       copyright => 737,
+       currency => 556,
+       d => 611,
+       dagger => 556,
+       daggerdbl => 556,
+       dcaron => 743,
+       dcroat => 611,
+       degree => 400,
+       dieresis => 333,
+       divide => 584,
+       dollar => 556,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 556,
+       eacute => 556,
+       ecaron => 556,
+       ecircumflex => 556,
+       edieresis => 556,
+       edotaccent => 556,
+       egrave => 556,
+       eight => 556,
+       ellipsis => 1000,
+       emacron => 556,
+       emdash => 1000,
+       endash => 556,
+       eogonek => 556,
+       equal => 584,
+       eth => 611,
+       exclam => 333,
+       exclamdown => 333,
+       f => 333,
+       fi => 611,
+       five => 556,
+       fl => 611,
+       florin => 556,
+       four => 556,
+       fraction => 167,
+       g => 611,
+       gbreve => 611,
+       gcommaaccent => 611,
+       germandbls => 611,
+       grave => 333,
+       greater => 584,
+       greaterequal => 549,
+       guillemotleft => 556,
+       guillemotright => 556,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 611,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 278,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 278,
+       j => 278,
+       k => 556,
+       kcommaaccent => 556,
+       l => 278,
+       lacute => 278,
+       lcaron => 400,
+       lcommaaccent => 278,
+       less => 584,
+       lessequal => 549,
+       logicalnot => 584,
+       lozenge => 494,
+       lslash => 278,
+       m => 889,
+       macron => 333,
+       minus => 584,
+       mu => 611,
+       multiply => 584,
+       n => 611,
+       nacute => 611,
+       ncaron => 611,
+       ncommaaccent => 611,
+       nine => 556,
+       notequal => 549,
+       ntilde => 611,
+       numbersign => 556,
+       o => 611,
+       oacute => 611,
+       ocircumflex => 611,
+       odieresis => 611,
+       oe => 944,
+       ogonek => 333,
+       ograve => 611,
+       ohungarumlaut => 611,
+       omacron => 611,
+       one => 556,
+       onehalf => 834,
+       onequarter => 834,
+       onesuperior => 333,
+       ordfeminine => 370,
+       ordmasculine => 365,
+       oslash => 611,
+       otilde => 611,
+       p => 611,
+       paragraph => 556,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 494,
+       percent => 889,
+       period => 278,
+       periodcentered => 278,
+       perthousand => 1000,
+       plus => 584,
+       plusminus => 584,
+       q => 611,
+       question => 611,
+       questiondown => 611,
+       quotedbl => 474,
+       quotedblbase => 500,
+       quotedblleft => 500,
+       quotedblright => 500,
+       quoteleft => 278,
+       quoteright => 278,
+       quotesinglbase => 278,
+       quotesingle => 238,
+       r => 389,
+       racute => 389,
+       radical => 549,
+       rcaron => 389,
+       rcommaaccent => 389,
+       registered => 737,
+       ring => 333,
+       s => 556,
+       sacute => 556,
+       scaron => 556,
+       scedilla => 556,
+       scommaaccent => 556,
+       section => 556,
+       semicolon => 333,
+       seven => 556,
+       six => 556,
+       slash => 278,
+       space => 278,
+       sterling => 556,
+       summation => 600,
+       t => 333,
+       tcaron => 389,
+       tcommaaccent => 333,
+       thorn => 611,
+       three => 556,
+       threequarters => 834,
+       threesuperior => 333,
+       tilde => 333,
+       trademark => 1000,
+       two => 556,
+       twosuperior => 333,
+       u => 611,
+       uacute => 611,
+       ucircumflex => 611,
+       udieresis => 611,
+       ugrave => 611,
+       uhungarumlaut => 611,
+       umacron => 611,
+       underscore => 556,
+       uogonek => 611,
+       uring => 611,
+       v => 556,
+       w => 778,
+       x => 556,
+       y => 556,
+       yacute => 556,
+       ydieresis => 556,
+       yen => 556,
+       z => 500,
+       zacute => 500,
+       zcaron => 500,
+       zdotaccent => 500,
+       zero => 556,
+       };
+}
+sub afmwx_Helvetica_Oblique {
+       return {
+       A => 667,
+       AE => 1000,
+       Aacute => 667,
+       Abreve => 667,
+       Acircumflex => 667,
+       Adieresis => 667,
+       Agrave => 667,
+       Amacron => 667,
+       Aogonek => 667,
+       Aring => 667,
+       Atilde => 667,
+       B => 667,
+       C => 722,
+       Cacute => 722,
+       Ccaron => 722,
+       Ccedilla => 722,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 667,
+       Eacute => 667,
+       Ecaron => 667,
+       Ecircumflex => 667,
+       Edieresis => 667,
+       Edotaccent => 667,
+       Egrave => 667,
+       Emacron => 667,
+       Eogonek => 667,
+       Eth => 722,
+       Euro => 556,
+       F => 611,
+       G => 778,
+       Gbreve => 778,
+       Gcommaaccent => 778,
+       H => 722,
+       I => 278,
+       Iacute => 278,
+       Icircumflex => 278,
+       Idieresis => 278,
+       Idotaccent => 278,
+       Igrave => 278,
+       Imacron => 278,
+       Iogonek => 278,
+       J => 500,
+       K => 667,
+       Kcommaaccent => 667,
+       L => 556,
+       Lacute => 556,
+       Lcaron => 556,
+       Lcommaaccent => 556,
+       Lslash => 556,
+       M => 833,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 778,
+       OE => 1000,
+       Oacute => 778,
+       Ocircumflex => 778,
+       Odieresis => 778,
+       Ograve => 778,
+       Ohungarumlaut => 778,
+       Omacron => 778,
+       Oslash => 778,
+       Otilde => 778,
+       P => 667,
+       Q => 778,
+       R => 722,
+       Racute => 722,
+       Rcaron => 722,
+       Rcommaaccent => 722,
+       S => 667,
+       Sacute => 667,
+       Scaron => 667,
+       Scedilla => 667,
+       Scommaaccent => 667,
+       T => 611,
+       Tcaron => 611,
+       Tcommaaccent => 611,
+       Thorn => 667,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 667,
+       W => 944,
+       X => 667,
+       Y => 667,
+       Yacute => 667,
+       Ydieresis => 667,
+       Z => 611,
+       Zacute => 611,
+       Zcaron => 611,
+       Zdotaccent => 611,
+       a => 556,
+       aacute => 556,
+       abreve => 556,
+       acircumflex => 556,
+       acute => 333,
+       adieresis => 556,
+       ae => 889,
+       agrave => 556,
+       amacron => 556,
+       ampersand => 667,
+       aogonek => 556,
+       aring => 556,
+       asciicircum => 469,
+       asciitilde => 584,
+       asterisk => 389,
+       at => 1015,
+       atilde => 556,
+       b => 556,
+       backslash => 278,
+       bar => 260,
+       braceleft => 334,
+       braceright => 334,
+       bracketleft => 278,
+       bracketright => 278,
+       breve => 333,
+       brokenbar => 260,
+       bullet => 350,
+       c => 500,
+       cacute => 500,
+       caron => 333,
+       ccaron => 500,
+       ccedilla => 500,
+       cedilla => 333,
+       cent => 556,
+       circumflex => 333,
+       colon => 278,
+       comma => 278,
+       commaaccent => 250,
+       copyright => 737,
+       currency => 556,
+       d => 556,
+       dagger => 556,
+       daggerdbl => 556,
+       dcaron => 643,
+       dcroat => 556,
+       degree => 400,
+       dieresis => 333,
+       divide => 584,
+       dollar => 556,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 556,
+       eacute => 556,
+       ecaron => 556,
+       ecircumflex => 556,
+       edieresis => 556,
+       edotaccent => 556,
+       egrave => 556,
+       eight => 556,
+       ellipsis => 1000,
+       emacron => 556,
+       emdash => 1000,
+       endash => 556,
+       eogonek => 556,
+       equal => 584,
+       eth => 556,
+       exclam => 278,
+       exclamdown => 333,
+       f => 278,
+       fi => 500,
+       five => 556,
+       fl => 500,
+       florin => 556,
+       four => 556,
+       fraction => 167,
+       g => 556,
+       gbreve => 556,
+       gcommaaccent => 556,
+       germandbls => 611,
+       grave => 333,
+       greater => 584,
+       greaterequal => 549,
+       guillemotleft => 556,
+       guillemotright => 556,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 556,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 222,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 222,
+       j => 222,
+       k => 500,
+       kcommaaccent => 500,
+       l => 222,
+       lacute => 222,
+       lcaron => 299,
+       lcommaaccent => 222,
+       less => 584,
+       lessequal => 549,
+       logicalnot => 584,
+       lozenge => 471,
+       lslash => 222,
+       m => 833,
+       macron => 333,
+       minus => 584,
+       mu => 556,
+       multiply => 584,
+       n => 556,
+       nacute => 556,
+       ncaron => 556,
+       ncommaaccent => 556,
+       nine => 556,
+       notequal => 549,
+       ntilde => 556,
+       numbersign => 556,
+       o => 556,
+       oacute => 556,
+       ocircumflex => 556,
+       odieresis => 556,
+       oe => 944,
+       ogonek => 333,
+       ograve => 556,
+       ohungarumlaut => 556,
+       omacron => 556,
+       one => 556,
+       onehalf => 834,
+       onequarter => 834,
+       onesuperior => 333,
+       ordfeminine => 370,
+       ordmasculine => 365,
+       oslash => 611,
+       otilde => 556,
+       p => 556,
+       paragraph => 537,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 476,
+       percent => 889,
+       period => 278,
+       periodcentered => 278,
+       perthousand => 1000,
+       plus => 584,
+       plusminus => 584,
+       q => 556,
+       question => 556,
+       questiondown => 611,
+       quotedbl => 355,
+       quotedblbase => 333,
+       quotedblleft => 333,
+       quotedblright => 333,
+       quoteleft => 222,
+       quoteright => 222,
+       quotesinglbase => 222,
+       quotesingle => 191,
+       r => 333,
+       racute => 333,
+       radical => 453,
+       rcaron => 333,
+       rcommaaccent => 333,
+       registered => 737,
+       ring => 333,
+       s => 500,
+       sacute => 500,
+       scaron => 500,
+       scedilla => 500,
+       scommaaccent => 500,
+       section => 556,
+       semicolon => 278,
+       seven => 556,
+       six => 556,
+       slash => 278,
+       space => 278,
+       sterling => 556,
+       summation => 600,
+       t => 278,
+       tcaron => 317,
+       tcommaaccent => 278,
+       thorn => 556,
+       three => 556,
+       threequarters => 834,
+       threesuperior => 333,
+       tilde => 333,
+       trademark => 1000,
+       two => 556,
+       twosuperior => 333,
+       u => 556,
+       uacute => 556,
+       ucircumflex => 556,
+       udieresis => 556,
+       ugrave => 556,
+       uhungarumlaut => 556,
+       umacron => 556,
+       underscore => 556,
+       uogonek => 556,
+       uring => 556,
+       v => 500,
+       w => 722,
+       x => 500,
+       y => 500,
+       yacute => 500,
+       ydieresis => 500,
+       yen => 556,
+       z => 500,
+       zacute => 500,
+       zcaron => 500,
+       zdotaccent => 500,
+       zero => 556,
+       };
+}
+sub afmwx_Times_Bold {
+       return {
+       A => 722,
+       AE => 1000,
+       Aacute => 722,
+       Abreve => 722,
+       Acircumflex => 722,
+       Adieresis => 722,
+       Agrave => 722,
+       Amacron => 722,
+       Aogonek => 722,
+       Aring => 722,
+       Atilde => 722,
+       B => 667,
+       C => 722,
+       Cacute => 722,
+       Ccaron => 722,
+       Ccedilla => 722,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 667,
+       Eacute => 667,
+       Ecaron => 667,
+       Ecircumflex => 667,
+       Edieresis => 667,
+       Edotaccent => 667,
+       Egrave => 667,
+       Emacron => 667,
+       Eogonek => 667,
+       Eth => 722,
+       Euro => 500,
+       F => 611,
+       G => 778,
+       Gbreve => 778,
+       Gcommaaccent => 778,
+       H => 778,
+       I => 389,
+       Iacute => 389,
+       Icircumflex => 389,
+       Idieresis => 389,
+       Idotaccent => 389,
+       Igrave => 389,
+       Imacron => 389,
+       Iogonek => 389,
+       J => 500,
+       K => 778,
+       Kcommaaccent => 778,
+       L => 667,
+       Lacute => 667,
+       Lcaron => 667,
+       Lcommaaccent => 667,
+       Lslash => 667,
+       M => 944,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 778,
+       OE => 1000,
+       Oacute => 778,
+       Ocircumflex => 778,
+       Odieresis => 778,
+       Ograve => 778,
+       Ohungarumlaut => 778,
+       Omacron => 778,
+       Oslash => 778,
+       Otilde => 778,
+       P => 611,
+       Q => 778,
+       R => 722,
+       Racute => 722,
+       Rcaron => 722,
+       Rcommaaccent => 722,
+       S => 556,
+       Sacute => 556,
+       Scaron => 556,
+       Scedilla => 556,
+       Scommaaccent => 556,
+       T => 667,
+       Tcaron => 667,
+       Tcommaaccent => 667,
+       Thorn => 611,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 722,
+       W => 1000,
+       X => 722,
+       Y => 722,
+       Yacute => 722,
+       Ydieresis => 722,
+       Z => 667,
+       Zacute => 667,
+       Zcaron => 667,
+       Zdotaccent => 667,
+       a => 500,
+       aacute => 500,
+       abreve => 500,
+       acircumflex => 500,
+       acute => 333,
+       adieresis => 500,
+       ae => 722,
+       agrave => 500,
+       amacron => 500,
+       ampersand => 833,
+       aogonek => 500,
+       aring => 500,
+       asciicircum => 581,
+       asciitilde => 520,
+       asterisk => 500,
+       at => 930,
+       atilde => 500,
+       b => 556,
+       backslash => 278,
+       bar => 220,
+       braceleft => 394,
+       braceright => 394,
+       bracketleft => 333,
+       bracketright => 333,
+       breve => 333,
+       brokenbar => 220,
+       bullet => 350,
+       c => 444,
+       cacute => 444,
+       caron => 333,
+       ccaron => 444,
+       ccedilla => 444,
+       cedilla => 333,
+       cent => 500,
+       circumflex => 333,
+       colon => 333,
+       comma => 250,
+       commaaccent => 250,
+       copyright => 747,
+       currency => 500,
+       d => 556,
+       dagger => 500,
+       daggerdbl => 500,
+       dcaron => 672,
+       dcroat => 556,
+       degree => 400,
+       dieresis => 333,
+       divide => 570,
+       dollar => 500,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 444,
+       eacute => 444,
+       ecaron => 444,
+       ecircumflex => 444,
+       edieresis => 444,
+       edotaccent => 444,
+       egrave => 444,
+       eight => 500,
+       ellipsis => 1000,
+       emacron => 444,
+       emdash => 1000,
+       endash => 500,
+       eogonek => 444,
+       equal => 570,
+       eth => 500,
+       exclam => 333,
+       exclamdown => 333,
+       f => 333,
+       fi => 556,
+       five => 500,
+       fl => 556,
+       florin => 500,
+       four => 500,
+       fraction => 167,
+       g => 500,
+       gbreve => 500,
+       gcommaaccent => 500,
+       germandbls => 556,
+       grave => 333,
+       greater => 570,
+       greaterequal => 549,
+       guillemotleft => 500,
+       guillemotright => 500,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 556,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 278,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 278,
+       j => 333,
+       k => 556,
+       kcommaaccent => 556,
+       l => 278,
+       lacute => 278,
+       lcaron => 394,
+       lcommaaccent => 278,
+       less => 570,
+       lessequal => 549,
+       logicalnot => 570,
+       lozenge => 494,
+       lslash => 278,
+       m => 833,
+       macron => 333,
+       minus => 570,
+       mu => 556,
+       multiply => 570,
+       n => 556,
+       nacute => 556,
+       ncaron => 556,
+       ncommaaccent => 556,
+       nine => 500,
+       notequal => 549,
+       ntilde => 556,
+       numbersign => 500,
+       o => 500,
+       oacute => 500,
+       ocircumflex => 500,
+       odieresis => 500,
+       oe => 722,
+       ogonek => 333,
+       ograve => 500,
+       ohungarumlaut => 500,
+       omacron => 500,
+       one => 500,
+       onehalf => 750,
+       onequarter => 750,
+       onesuperior => 300,
+       ordfeminine => 300,
+       ordmasculine => 330,
+       oslash => 500,
+       otilde => 500,
+       p => 556,
+       paragraph => 540,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 494,
+       percent => 1000,
+       period => 250,
+       periodcentered => 250,
+       perthousand => 1000,
+       plus => 570,
+       plusminus => 570,
+       q => 556,
+       question => 500,
+       questiondown => 500,
+       quotedbl => 555,
+       quotedblbase => 500,
+       quotedblleft => 500,
+       quotedblright => 500,
+       quoteleft => 333,
+       quoteright => 333,
+       quotesinglbase => 333,
+       quotesingle => 278,
+       r => 444,
+       racute => 444,
+       radical => 549,
+       rcaron => 444,
+       rcommaaccent => 444,
+       registered => 747,
+       ring => 333,
+       s => 389,
+       sacute => 389,
+       scaron => 389,
+       scedilla => 389,
+       scommaaccent => 389,
+       section => 500,
+       semicolon => 333,
+       seven => 500,
+       six => 500,
+       slash => 278,
+       space => 250,
+       sterling => 500,
+       summation => 600,
+       t => 333,
+       tcaron => 416,
+       tcommaaccent => 333,
+       thorn => 556,
+       three => 500,
+       threequarters => 750,
+       threesuperior => 300,
+       tilde => 333,
+       trademark => 1000,
+       two => 500,
+       twosuperior => 300,
+       u => 556,
+       uacute => 556,
+       ucircumflex => 556,
+       udieresis => 556,
+       ugrave => 556,
+       uhungarumlaut => 556,
+       umacron => 556,
+       underscore => 500,
+       uogonek => 556,
+       uring => 556,
+       v => 500,
+       w => 722,
+       x => 500,
+       y => 500,
+       yacute => 500,
+       ydieresis => 500,
+       yen => 500,
+       z => 444,
+       zacute => 444,
+       zcaron => 444,
+       zdotaccent => 444,
+       zero => 500,
+       };
+}
+sub afmwx_Times_BoldItalic {
+       return {
+       A => 667,
+       AE => 944,
+       Aacute => 667,
+       Abreve => 667,
+       Acircumflex => 667,
+       Adieresis => 667,
+       Agrave => 667,
+       Amacron => 667,
+       Aogonek => 667,
+       Aring => 667,
+       Atilde => 667,
+       B => 667,
+       C => 667,
+       Cacute => 667,
+       Ccaron => 667,
+       Ccedilla => 667,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 667,
+       Eacute => 667,
+       Ecaron => 667,
+       Ecircumflex => 667,
+       Edieresis => 667,
+       Edotaccent => 667,
+       Egrave => 667,
+       Emacron => 667,
+       Eogonek => 667,
+       Eth => 722,
+       Euro => 500,
+       F => 667,
+       G => 722,
+       Gbreve => 722,
+       Gcommaaccent => 722,
+       H => 778,
+       I => 389,
+       Iacute => 389,
+       Icircumflex => 389,
+       Idieresis => 389,
+       Idotaccent => 389,
+       Igrave => 389,
+       Imacron => 389,
+       Iogonek => 389,
+       J => 500,
+       K => 667,
+       Kcommaaccent => 667,
+       L => 611,
+       Lacute => 611,
+       Lcaron => 611,
+       Lcommaaccent => 611,
+       Lslash => 611,
+       M => 889,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 722,
+       OE => 944,
+       Oacute => 722,
+       Ocircumflex => 722,
+       Odieresis => 722,
+       Ograve => 722,
+       Ohungarumlaut => 722,
+       Omacron => 722,
+       Oslash => 722,
+       Otilde => 722,
+       P => 611,
+       Q => 722,
+       R => 667,
+       Racute => 667,
+       Rcaron => 667,
+       Rcommaaccent => 667,
+       S => 556,
+       Sacute => 556,
+       Scaron => 556,
+       Scedilla => 556,
+       Scommaaccent => 556,
+       T => 611,
+       Tcaron => 611,
+       Tcommaaccent => 611,
+       Thorn => 611,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 667,
+       W => 889,
+       X => 667,
+       Y => 611,
+       Yacute => 611,
+       Ydieresis => 611,
+       Z => 611,
+       Zacute => 611,
+       Zcaron => 611,
+       Zdotaccent => 611,
+       a => 500,
+       aacute => 500,
+       abreve => 500,
+       acircumflex => 500,
+       acute => 333,
+       adieresis => 500,
+       ae => 722,
+       agrave => 500,
+       amacron => 500,
+       ampersand => 778,
+       aogonek => 500,
+       aring => 500,
+       asciicircum => 570,
+       asciitilde => 570,
+       asterisk => 500,
+       at => 832,
+       atilde => 500,
+       b => 500,
+       backslash => 278,
+       bar => 220,
+       braceleft => 348,
+       braceright => 348,
+       bracketleft => 333,
+       bracketright => 333,
+       breve => 333,
+       brokenbar => 220,
+       bullet => 350,
+       c => 444,
+       cacute => 444,
+       caron => 333,
+       ccaron => 444,
+       ccedilla => 444,
+       cedilla => 333,
+       cent => 500,
+       circumflex => 333,
+       colon => 333,
+       comma => 250,
+       commaaccent => 250,
+       copyright => 747,
+       currency => 500,
+       d => 500,
+       dagger => 500,
+       daggerdbl => 500,
+       dcaron => 608,
+       dcroat => 500,
+       degree => 400,
+       dieresis => 333,
+       divide => 570,
+       dollar => 500,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 444,
+       eacute => 444,
+       ecaron => 444,
+       ecircumflex => 444,
+       edieresis => 444,
+       edotaccent => 444,
+       egrave => 444,
+       eight => 500,
+       ellipsis => 1000,
+       emacron => 444,
+       emdash => 1000,
+       endash => 500,
+       eogonek => 444,
+       equal => 570,
+       eth => 500,
+       exclam => 389,
+       exclamdown => 389,
+       f => 333,
+       fi => 556,
+       five => 500,
+       fl => 556,
+       florin => 500,
+       four => 500,
+       fraction => 167,
+       g => 500,
+       gbreve => 500,
+       gcommaaccent => 500,
+       germandbls => 500,
+       grave => 333,
+       greater => 570,
+       greaterequal => 549,
+       guillemotleft => 500,
+       guillemotright => 500,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 556,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 278,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 278,
+       j => 278,
+       k => 500,
+       kcommaaccent => 500,
+       l => 278,
+       lacute => 278,
+       lcaron => 382,
+       lcommaaccent => 278,
+       less => 570,
+       lessequal => 549,
+       logicalnot => 606,
+       lozenge => 494,
+       lslash => 278,
+       m => 778,
+       macron => 333,
+       minus => 606,
+       mu => 576,
+       multiply => 570,
+       n => 556,
+       nacute => 556,
+       ncaron => 556,
+       ncommaaccent => 556,
+       nine => 500,
+       notequal => 549,
+       ntilde => 556,
+       numbersign => 500,
+       o => 500,
+       oacute => 500,
+       ocircumflex => 500,
+       odieresis => 500,
+       oe => 722,
+       ogonek => 333,
+       ograve => 500,
+       ohungarumlaut => 500,
+       omacron => 500,
+       one => 500,
+       onehalf => 750,
+       onequarter => 750,
+       onesuperior => 300,
+       ordfeminine => 266,
+       ordmasculine => 300,
+       oslash => 500,
+       otilde => 500,
+       p => 500,
+       paragraph => 500,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 494,
+       percent => 833,
+       period => 250,
+       periodcentered => 250,
+       perthousand => 1000,
+       plus => 570,
+       plusminus => 570,
+       q => 500,
+       question => 500,
+       questiondown => 500,
+       quotedbl => 555,
+       quotedblbase => 500,
+       quotedblleft => 500,
+       quotedblright => 500,
+       quoteleft => 333,
+       quoteright => 333,
+       quotesinglbase => 333,
+       quotesingle => 278,
+       r => 389,
+       racute => 389,
+       radical => 549,
+       rcaron => 389,
+       rcommaaccent => 389,
+       registered => 747,
+       ring => 333,
+       s => 389,
+       sacute => 389,
+       scaron => 389,
+       scedilla => 389,
+       scommaaccent => 389,
+       section => 500,
+       semicolon => 333,
+       seven => 500,
+       six => 500,
+       slash => 278,
+       space => 250,
+       sterling => 500,
+       summation => 600,
+       t => 278,
+       tcaron => 366,
+       tcommaaccent => 278,
+       thorn => 500,
+       three => 500,
+       threequarters => 750,
+       threesuperior => 300,
+       tilde => 333,
+       trademark => 1000,
+       two => 500,
+       twosuperior => 300,
+       u => 556,
+       uacute => 556,
+       ucircumflex => 556,
+       udieresis => 556,
+       ugrave => 556,
+       uhungarumlaut => 556,
+       umacron => 556,
+       underscore => 500,
+       uogonek => 556,
+       uring => 556,
+       v => 444,
+       w => 667,
+       x => 500,
+       y => 444,
+       yacute => 444,
+       ydieresis => 444,
+       yen => 500,
+       z => 389,
+       zacute => 389,
+       zcaron => 389,
+       zdotaccent => 389,
+       zero => 500,
+       };
+}
+sub afmwx_Times_Italic {
+       return {
+       A => 611,
+       AE => 889,
+       Aacute => 611,
+       Abreve => 611,
+       Acircumflex => 611,
+       Adieresis => 611,
+       Agrave => 611,
+       Amacron => 611,
+       Aogonek => 611,
+       Aring => 611,
+       Atilde => 611,
+       B => 611,
+       C => 667,
+       Cacute => 667,
+       Ccaron => 667,
+       Ccedilla => 667,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 611,
+       Eacute => 611,
+       Ecaron => 611,
+       Ecircumflex => 611,
+       Edieresis => 611,
+       Edotaccent => 611,
+       Egrave => 611,
+       Emacron => 611,
+       Eogonek => 611,
+       Eth => 722,
+       Euro => 500,
+       F => 611,
+       G => 722,
+       Gbreve => 722,
+       Gcommaaccent => 722,
+       H => 722,
+       I => 333,
+       Iacute => 333,
+       Icircumflex => 333,
+       Idieresis => 333,
+       Idotaccent => 333,
+       Igrave => 333,
+       Imacron => 333,
+       Iogonek => 333,
+       J => 444,
+       K => 667,
+       Kcommaaccent => 667,
+       L => 556,
+       Lacute => 556,
+       Lcaron => 611,
+       Lcommaaccent => 556,
+       Lslash => 556,
+       M => 833,
+       N => 667,
+       Nacute => 667,
+       Ncaron => 667,
+       Ncommaaccent => 667,
+       Ntilde => 667,
+       O => 722,
+       OE => 944,
+       Oacute => 722,
+       Ocircumflex => 722,
+       Odieresis => 722,
+       Ograve => 722,
+       Ohungarumlaut => 722,
+       Omacron => 722,
+       Oslash => 722,
+       Otilde => 722,
+       P => 611,
+       Q => 722,
+       R => 611,
+       Racute => 611,
+       Rcaron => 611,
+       Rcommaaccent => 611,
+       S => 500,
+       Sacute => 500,
+       Scaron => 500,
+       Scedilla => 500,
+       Scommaaccent => 500,
+       T => 556,
+       Tcaron => 556,
+       Tcommaaccent => 556,
+       Thorn => 611,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 611,
+       W => 833,
+       X => 611,
+       Y => 556,
+       Yacute => 556,
+       Ydieresis => 556,
+       Z => 556,
+       Zacute => 556,
+       Zcaron => 556,
+       Zdotaccent => 556,
+       a => 500,
+       aacute => 500,
+       abreve => 500,
+       acircumflex => 500,
+       acute => 333,
+       adieresis => 500,
+       ae => 667,
+       agrave => 500,
+       amacron => 500,
+       ampersand => 778,
+       aogonek => 500,
+       aring => 500,
+       asciicircum => 422,
+       asciitilde => 541,
+       asterisk => 500,
+       at => 920,
+       atilde => 500,
+       b => 500,
+       backslash => 278,
+       bar => 275,
+       braceleft => 400,
+       braceright => 400,
+       bracketleft => 389,
+       bracketright => 389,
+       breve => 333,
+       brokenbar => 275,
+       bullet => 350,
+       c => 444,
+       cacute => 444,
+       caron => 333,
+       ccaron => 444,
+       ccedilla => 444,
+       cedilla => 333,
+       cent => 500,
+       circumflex => 333,
+       colon => 333,
+       comma => 250,
+       commaaccent => 250,
+       copyright => 760,
+       currency => 500,
+       d => 500,
+       dagger => 500,
+       daggerdbl => 500,
+       dcaron => 544,
+       dcroat => 500,
+       degree => 400,
+       dieresis => 333,
+       divide => 675,
+       dollar => 500,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 444,
+       eacute => 444,
+       ecaron => 444,
+       ecircumflex => 444,
+       edieresis => 444,
+       edotaccent => 444,
+       egrave => 444,
+       eight => 500,
+       ellipsis => 889,
+       emacron => 444,
+       emdash => 889,
+       endash => 500,
+       eogonek => 444,
+       equal => 675,
+       eth => 500,
+       exclam => 333,
+       exclamdown => 389,
+       f => 278,
+       fi => 500,
+       five => 500,
+       fl => 500,
+       florin => 500,
+       four => 500,
+       fraction => 167,
+       g => 500,
+       gbreve => 500,
+       gcommaaccent => 500,
+       germandbls => 500,
+       grave => 333,
+       greater => 675,
+       greaterequal => 549,
+       guillemotleft => 500,
+       guillemotright => 500,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 500,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 278,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 278,
+       j => 278,
+       k => 444,
+       kcommaaccent => 444,
+       l => 278,
+       lacute => 278,
+       lcaron => 300,
+       lcommaaccent => 278,
+       less => 675,
+       lessequal => 549,
+       logicalnot => 675,
+       lozenge => 471,
+       lslash => 278,
+       m => 722,
+       macron => 333,
+       minus => 675,
+       mu => 500,
+       multiply => 675,
+       n => 500,
+       nacute => 500,
+       ncaron => 500,
+       ncommaaccent => 500,
+       nine => 500,
+       notequal => 549,
+       ntilde => 500,
+       numbersign => 500,
+       o => 500,
+       oacute => 500,
+       ocircumflex => 500,
+       odieresis => 500,
+       oe => 667,
+       ogonek => 333,
+       ograve => 500,
+       ohungarumlaut => 500,
+       omacron => 500,
+       one => 500,
+       onehalf => 750,
+       onequarter => 750,
+       onesuperior => 300,
+       ordfeminine => 276,
+       ordmasculine => 310,
+       oslash => 500,
+       otilde => 500,
+       p => 500,
+       paragraph => 523,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 476,
+       percent => 833,
+       period => 250,
+       periodcentered => 250,
+       perthousand => 1000,
+       plus => 675,
+       plusminus => 675,
+       q => 500,
+       question => 500,
+       questiondown => 500,
+       quotedbl => 420,
+       quotedblbase => 556,
+       quotedblleft => 556,
+       quotedblright => 556,
+       quoteleft => 333,
+       quoteright => 333,
+       quotesinglbase => 333,
+       quotesingle => 214,
+       r => 389,
+       racute => 389,
+       radical => 453,
+       rcaron => 389,
+       rcommaaccent => 389,
+       registered => 760,
+       ring => 333,
+       s => 389,
+       sacute => 389,
+       scaron => 389,
+       scedilla => 389,
+       scommaaccent => 389,
+       section => 500,
+       semicolon => 333,
+       seven => 500,
+       six => 500,
+       slash => 278,
+       space => 250,
+       sterling => 500,
+       summation => 600,
+       t => 278,
+       tcaron => 300,
+       tcommaaccent => 278,
+       thorn => 500,
+       three => 500,
+       threequarters => 750,
+       threesuperior => 300,
+       tilde => 333,
+       trademark => 980,
+       two => 500,
+       twosuperior => 300,
+       u => 500,
+       uacute => 500,
+       ucircumflex => 500,
+       udieresis => 500,
+       ugrave => 500,
+       uhungarumlaut => 500,
+       umacron => 500,
+       underscore => 500,
+       uogonek => 500,
+       uring => 500,
+       v => 444,
+       w => 667,
+       x => 444,
+       y => 444,
+       yacute => 444,
+       ydieresis => 444,
+       yen => 500,
+       z => 389,
+       zacute => 389,
+       zcaron => 389,
+       zdotaccent => 389,
+       zero => 500,
+       };
+}
+sub afmwx_Times_Roman {
+       return {
+       A => 722,
+       AE => 889,
+       Aacute => 722,
+       Abreve => 722,
+       Acircumflex => 722,
+       Adieresis => 722,
+       Agrave => 722,
+       Amacron => 722,
+       Aogonek => 722,
+       Aring => 722,
+       Atilde => 722,
+       B => 667,
+       C => 667,
+       Cacute => 667,
+       Ccaron => 667,
+       Ccedilla => 667,
+       D => 722,
+       Dcaron => 722,
+       Dcroat => 722,
+       Delta => 612,
+       E => 611,
+       Eacute => 611,
+       Ecaron => 611,
+       Ecircumflex => 611,
+       Edieresis => 611,
+       Edotaccent => 611,
+       Egrave => 611,
+       Emacron => 611,
+       Eogonek => 611,
+       Eth => 722,
+       Euro => 500,
+       F => 556,
+       G => 722,
+       Gbreve => 722,
+       Gcommaaccent => 722,
+       H => 722,
+       I => 333,
+       Iacute => 333,
+       Icircumflex => 333,
+       Idieresis => 333,
+       Idotaccent => 333,
+       Igrave => 333,
+       Imacron => 333,
+       Iogonek => 333,
+       J => 389,
+       K => 722,
+       Kcommaaccent => 722,
+       L => 611,
+       Lacute => 611,
+       Lcaron => 611,
+       Lcommaaccent => 611,
+       Lslash => 611,
+       M => 889,
+       N => 722,
+       Nacute => 722,
+       Ncaron => 722,
+       Ncommaaccent => 722,
+       Ntilde => 722,
+       O => 722,
+       OE => 889,
+       Oacute => 722,
+       Ocircumflex => 722,
+       Odieresis => 722,
+       Ograve => 722,
+       Ohungarumlaut => 722,
+       Omacron => 722,
+       Oslash => 722,
+       Otilde => 722,
+       P => 556,
+       Q => 722,
+       R => 667,
+       Racute => 667,
+       Rcaron => 667,
+       Rcommaaccent => 667,
+       S => 556,
+       Sacute => 556,
+       Scaron => 556,
+       Scedilla => 556,
+       Scommaaccent => 556,
+       T => 611,
+       Tcaron => 611,
+       Tcommaaccent => 611,
+       Thorn => 556,
+       U => 722,
+       Uacute => 722,
+       Ucircumflex => 722,
+       Udieresis => 722,
+       Ugrave => 722,
+       Uhungarumlaut => 722,
+       Umacron => 722,
+       Uogonek => 722,
+       Uring => 722,
+       V => 722,
+       W => 944,
+       X => 722,
+       Y => 722,
+       Yacute => 722,
+       Ydieresis => 722,
+       Z => 611,
+       Zacute => 611,
+       Zcaron => 611,
+       Zdotaccent => 611,
+       a => 444,
+       aacute => 444,
+       abreve => 444,
+       acircumflex => 444,
+       acute => 333,
+       adieresis => 444,
+       ae => 667,
+       agrave => 444,
+       amacron => 444,
+       ampersand => 778,
+       aogonek => 444,
+       aring => 444,
+       asciicircum => 469,
+       asciitilde => 541,
+       asterisk => 500,
+       at => 921,
+       atilde => 444,
+       b => 500,
+       backslash => 278,
+       bar => 200,
+       braceleft => 480,
+       braceright => 480,
+       bracketleft => 333,
+       bracketright => 333,
+       breve => 333,
+       brokenbar => 200,
+       bullet => 350,
+       c => 444,
+       cacute => 444,
+       caron => 333,
+       ccaron => 444,
+       ccedilla => 444,
+       cedilla => 333,
+       cent => 500,
+       circumflex => 333,
+       colon => 278,
+       comma => 250,
+       commaaccent => 250,
+       copyright => 760,
+       currency => 500,
+       d => 500,
+       dagger => 500,
+       daggerdbl => 500,
+       dcaron => 588,
+       dcroat => 500,
+       degree => 400,
+       dieresis => 333,
+       divide => 564,
+       dollar => 500,
+       dotaccent => 333,
+       dotlessi => 278,
+       e => 444,
+       eacute => 444,
+       ecaron => 444,
+       ecircumflex => 444,
+       edieresis => 444,
+       edotaccent => 444,
+       egrave => 444,
+       eight => 500,
+       ellipsis => 1000,
+       emacron => 444,
+       emdash => 1000,
+       endash => 500,
+       eogonek => 444,
+       equal => 564,
+       eth => 500,
+       exclam => 333,
+       exclamdown => 333,
+       f => 333,
+       fi => 556,
+       five => 500,
+       fl => 556,
+       florin => 500,
+       four => 500,
+       fraction => 167,
+       g => 500,
+       gbreve => 500,
+       gcommaaccent => 500,
+       germandbls => 500,
+       grave => 333,
+       greater => 564,
+       greaterequal => 549,
+       guillemotleft => 500,
+       guillemotright => 500,
+       guilsinglleft => 333,
+       guilsinglright => 333,
+       h => 500,
+       hungarumlaut => 333,
+       hyphen => 333,
+       i => 278,
+       iacute => 278,
+       icircumflex => 278,
+       idieresis => 278,
+       igrave => 278,
+       imacron => 278,
+       iogonek => 278,
+       j => 278,
+       k => 500,
+       kcommaaccent => 500,
+       l => 278,
+       lacute => 278,
+       lcaron => 344,
+       lcommaaccent => 278,
+       less => 564,
+       lessequal => 549,
+       logicalnot => 564,
+       lozenge => 471,
+       lslash => 278,
+       m => 778,
+       macron => 333,
+       minus => 564,
+       mu => 500,
+       multiply => 564,
+       n => 500,
+       nacute => 500,
+       ncaron => 500,
+       ncommaaccent => 500,
+       nine => 500,
+       notequal => 549,
+       ntilde => 500,
+       numbersign => 500,
+       o => 500,
+       oacute => 500,
+       ocircumflex => 500,
+       odieresis => 500,
+       oe => 722,
+       ogonek => 333,
+       ograve => 500,
+       ohungarumlaut => 500,
+       omacron => 500,
+       one => 500,
+       onehalf => 750,
+       onequarter => 750,
+       onesuperior => 300,
+       ordfeminine => 276,
+       ordmasculine => 310,
+       oslash => 500,
+       otilde => 500,
+       p => 500,
+       paragraph => 453,
+       parenleft => 333,
+       parenright => 333,
+       partialdiff => 476,
+       percent => 833,
+       period => 250,
+       periodcentered => 250,
+       perthousand => 1000,
+       plus => 564,
+       plusminus => 564,
+       q => 500,
+       question => 444,
+       questiondown => 444,
+       quotedbl => 408,
+       quotedblbase => 444,
+       quotedblleft => 444,
+       quotedblright => 444,
+       quoteleft => 333,
+       quoteright => 333,
+       quotesinglbase => 333,
+       quotesingle => 180,
+       r => 333,
+       racute => 333,
+       radical => 453,
+       rcaron => 333,
+       rcommaaccent => 333,
+       registered => 760,
+       ring => 333,
+       s => 389,
+       sacute => 389,
+       scaron => 389,
+       scedilla => 389,
+       scommaaccent => 389,
+       section => 500,
+       semicolon => 278,
+       seven => 500,
+       six => 500,
+       slash => 278,
+       space => 250,
+       sterling => 500,
+       summation => 600,
+       t => 278,
+       tcaron => 326,
+       tcommaaccent => 278,
+       thorn => 500,
+       three => 500,
+       threequarters => 750,
+       threesuperior => 300,
+       tilde => 333,
+       trademark => 980,
+       two => 500,
+       twosuperior => 300,
+       u => 500,
+       uacute => 500,
+       ucircumflex => 500,
+       udieresis => 500,
+       ugrave => 500,
+       uhungarumlaut => 500,
+       umacron => 500,
+       underscore => 500,
+       uogonek => 500,
+       uring => 500,
+       v => 500,
+       w => 722,
+       x => 500,
+       y => 500,
+       yacute => 500,
+       ydieresis => 500,
+       yen => 500,
+       z => 444,
+       zacute => 444,
+       zcaron => 444,
+       zdotaccent => 444,
+       zero => 500,
+       };
+}
+
index 7b0cd8f..fc58680 100644 (file)
 # PDFJ::U2C
-# subcontract of PDFJ::Unicode
+# Unicode to CID conversion
 # 2002 <nakajima@netstock.co.jp>
-package PDFJ::Unicode;
+package PDFJ::U2C;
+use Carp;
+use SelfLoader;
+use strict;
 
-sub unicode2cidhash_hp {
+sub hashes {
+       my($encoding) = @_;
+       my $enctype = $PDFJ::Default{Encodings}{$encoding};
+       my($direction) = $encoding =~ /-(\w+)$/;
+       if( $enctype =~ /j/ ) {
+               $direction eq 'H' ? [u2c_JIS_HW_H(), u2c_JIS_H()] : 
+                       [u2c_JIS_HW_V(), u2c_JIS_H()];
+       } elsif( $enctype =~ /g/ ) {
+               $direction eq 'H' ? [u2c_GB_H()] : [u2c_GB_V(), u2c_GB_H()];
+       } elsif( $enctype =~ /c/ ) {
+               $direction eq 'H' ? [u2c_CNS_H()] : [u2c_CNS_V(), u2c_CNS_H()];
+       } elsif( $enctype =~ /k/ ) {
+               $direction eq 'H' ? [u2c_KS_H()] : [u2c_KS_V(), u2c_KS_H()];
+       } else {
+               croak "unknown encoding '$encoding'";
+       }
+}
+
+1;
+
+# for SelfLoader;
+__DATA__
+
+# by UniCNS-UCS2-H Cmap
+sub u2c_CNS_H {
+       return {
+32,1,
+33,2,
+34,3,
+35,4,
+36,5,
+37,6,
+38,7,
+39,8,
+40,9,
+41,10,
+42,11,
+43,12,
+44,13,
+45,14,
+46,15,
+47,16,
+48,17,
+49,18,
+50,19,
+51,20,
+52,21,
+53,22,
+54,23,
+55,24,
+56,25,
+57,26,
+58,27,
+59,28,
+60,29,
+61,30,
+62,31,
+63,32,
+64,33,
+65,34,
+66,35,
+67,36,
+68,37,
+69,38,
+70,39,
+71,40,
+72,41,
+73,42,
+74,43,
+75,44,
+76,45,
+77,46,
+78,47,
+79,48,
+80,49,
+81,50,
+82,51,
+83,52,
+84,53,
+85,54,
+86,55,
+87,56,
+88,57,
+89,58,
+90,59,
+91,60,
+92,61,
+93,62,
+94,63,
+95,64,
+96,65,
+97,66,
+98,67,
+99,68,
+100,69,
+101,70,
+102,71,
+103,72,
+104,73,
+105,74,
+106,75,
+107,76,
+108,77,
+109,78,
+110,79,
+111,80,
+112,81,
+113,82,
+114,83,
+115,84,
+116,85,
+117,86,
+118,87,
+119,88,
+120,89,
+121,90,
+122,91,
+123,92,
+124,93,
+125,94,
+126,95,
+162,262,
+163,263,
+165,260,
+167,178,
+168,13747,
+172,14049,
+176,280,
+177,212,
+183,115,
+192,18788,
+193,18786,
+200,18792,
+201,18790,
+202,18801,
+210,18796,
+211,18794,
+215,210,
+224,18805,
+225,18803,
+232,18810,
+233,18808,
+234,18832,
+236,18814,
+237,18812,
+242,18818,
+243,18816,
+247,211,
+248,18840,
+249,18822,
+250,18820,
+252,18827,
+256,18785,
+257,18802,
+274,18789,
+275,18807,
+282,18791,
+283,18809,
+299,18811,
+331,18841,
+332,18793,
+333,18815,
+339,18839,
+363,18819,
+461,18787,
+462,18804,
+464,18813,
+465,18795,
+466,18817,
+468,18821,
+470,18823,
+472,18824,
+474,18825,
+476,18826,
+592,18835,
+593,18806,
+596,18837,
+603,18836,
+609,18833,
+618,18843,
+629,18838,
+643,18834,
+650,18842,
+710,13748,
+711,504,
+714,503,
+715,505,
+729,502,
+776,13747,
+913,417,
+914,418,
+915,419,
+916,420,
+917,421,
+918,422,
+919,423,
+920,424,
+921,425,
+922,426,
+923,427,
+924,428,
+925,429,
+926,430,
+927,431,
+928,432,
+929,433,
+931,434,
+932,435,
+933,436,
+934,437,
+935,438,
+936,439,
+937,440,
+945,441,
+946,442,
+947,443,
+948,444,
+949,445,
+950,446,
+951,447,
+952,448,
+953,449,
+954,450,
+955,451,
+956,452,
+957,453,
+958,454,
+959,455,
+960,456,
+961,457,
+963,458,
+964,459,
+965,460,
+966,461,
+967,462,
+968,463,
+969,464,
+1025,13936,
+1040,13930,
+1041,13931,
+1042,13932,
+1043,13933,
+1044,13934,
+1045,13935,
+1046,13937,
+1047,13938,
+1048,13939,
+1049,13940,
+1050,13941,
+1051,13942,
+1052,13943,
+1053,13944,
+1054,13945,
+1055,13946,
+1056,13947,
+1057,13948,
+1058,13949,
+1059,13950,
+1060,13951,
+1061,13952,
+1062,13953,
+1063,13954,
+1064,13955,
+1065,13956,
+1066,13957,
+1067,13958,
+1068,13959,
+1069,13960,
+1070,13961,
+1071,13962,
+1072,13963,
+1073,13964,
+1074,13965,
+1075,13966,
+1076,13967,
+1077,13968,
+1078,13970,
+1079,13971,
+1080,13972,
+1081,13973,
+1082,13974,
+1083,13975,
+1084,13976,
+1085,13977,
+1086,13978,
+1087,13979,
+1088,13980,
+1089,13981,
+1090,13982,
+1091,13983,
+1092,13984,
+1093,13985,
+1094,13986,
+1095,13987,
+1096,13988,
+1097,13989,
+1098,13990,
+1099,13991,
+1100,13992,
+1101,13993,
+1102,13994,
+1103,13995,
+1105,13969,
+7870,18798,
+7871,18829,
+7872,18800,
+7873,18831,
+8211,121,
+8212,123,
+8216,166,
+8217,167,
+8220,168,
+8221,169,
+8226,104,
+8229,111,
+8230,110,
+8242,173,
+8245,172,
+8251,177,
+8254,195,
+8364,17601,
+8451,266,
+8453,194,
+8457,267,
+8470,14054,
+8481,14055,
+8544,343,
+8545,344,
+8546,345,
+8547,346,
+8548,347,
+8549,348,
+8550,349,
+8551,350,
+8552,351,
+8553,352,
+8560,526,
+8561,527,
+8562,528,
+8563,529,
+8564,530,
+8565,531,
+8566,532,
+8567,533,
+8568,534,
+8569,535,
+8592,248,
+8593,245,
+8594,247,
+8595,246,
+8598,249,
+8599,250,
+8600,252,
+8601,251,
+8632,13997,
+8633,13998,
+8679,13996,
+8730,213,
+8734,220,
+8735,233,
+8736,232,
+8739,254,
+8741,253,
+8745,229,
+8746,230,
+8747,237,
+8750,238,
+8756,240,
+8757,239,
+8764,228,
+8786,221,
+8800,219,
+8801,222,
+8806,217,
+8807,218,
+8869,231,
+8895,234,
+9216,562,
+9217,563,
+9218,564,
+9219,565,
+9220,566,
+9221,567,
+9222,568,
+9223,569,
+9224,570,
+9225,571,
+9226,572,
+9227,573,
+9228,574,
+9229,575,
+9230,576,
+9231,577,
+9232,578,
+9233,579,
+9234,580,
+9235,581,
+9236,582,
+9237,583,
+9238,584,
+9239,585,
+9240,586,
+9241,587,
+9242,588,
+9243,589,
+9244,590,
+9245,591,
+9246,592,
+9247,593,
+9249,594,
+9312,506,
+9313,507,
+9314,508,
+9315,509,
+9316,510,
+9317,511,
+9318,512,
+9319,513,
+9320,514,
+9321,515,
+9332,516,
+9333,517,
+9334,518,
+9335,519,
+9336,520,
+9337,521,
+9338,522,
+9339,523,
+9340,524,
+9341,525,
+9472,311,
+9474,312,
+9484,314,
+9488,315,
+9492,316,
+9496,317,
+9500,309,
+9508,308,
+9516,307,
+9524,306,
+9532,305,
+9552,322,
+9553,14090,
+9554,14072,
+9555,14081,
+9556,14063,
+9557,14074,
+9558,14083,
+9559,14065,
+9560,14078,
+9561,14087,
+9562,14069,
+9563,14080,
+9564,14089,
+9565,14071,
+9566,323,
+9567,14084,
+9568,14066,
+9569,325,
+9570,14086,
+9571,14068,
+9572,14073,
+9573,14082,
+9574,14064,
+9575,14079,
+9576,14088,
+9577,14070,
+9578,324,
+9579,14085,
+9580,14067,
+9581,318,
+9582,319,
+9583,321,
+9584,320,
+9585,330,
+9586,331,
+9587,332,
+9601,290,
+9602,291,
+9603,292,
+9604,293,
+9605,294,
+9606,295,
+9607,296,
+9608,297,
+9609,304,
+9610,303,
+9611,302,
+9612,301,
+9613,300,
+9614,299,
+9615,298,
+9619,14096,
+9620,310,
+9621,313,
+9632,190,
+9633,189,
+9650,183,
+9651,182,
+9660,192,
+9661,191,
+9670,188,
+9671,187,
+9675,180,
+9678,184,
+9679,181,
+9698,326,
+9699,327,
+9700,329,
+9701,328,
+9733,186,
+9734,185,
+9737,244,
+9792,241,
+9793,243,
+9794,242,
+10045,13760,
+11904,17608,
+11908,17692,
+11910,17693,
+11911,17694,
+11912,17695,
+11914,17696,
+11916,17697,
+11917,17698,
+11925,17699,
+11932,17700,
+11933,732,
+11941,17701,
+11943,17702,
+11946,17703,
+11948,17704,
+11950,17705,
+11958,17706,
+11964,17707,
+11966,17708,
+11974,1289,
+11978,17709,
+11980,17710,
+11981,17711,
+11983,17712,
+11990,17713,
+11991,17714,
+11998,17715,
+12003,2550,
+12083,551,
+12288,99,
+12289,101,
+12290,102,
+12291,179,
+12293,13754,
+12294,13755,
+12295,13756,
+12296,148,
+12297,149,
+12298,144,
+12299,145,
+12300,152,
+12301,153,
+12302,156,
+12303,157,
+12304,140,
+12305,141,
+12306,261,
+12308,136,
+12309,137,
+12317,170,
+12318,171,
+12321,353,
+12322,354,
+12323,355,
+12324,356,
+12325,357,
+12326,358,
+12327,359,
+12328,360,
+12329,361,
+12353,13761,
+12354,13762,
+12355,13763,
+12356,13764,
+12357,13765,
+12358,13766,
+12359,13767,
+12360,13768,
+12361,13769,
+12362,13770,
+12363,13771,
+12364,13772,
+12365,13773,
+12366,13774,
+12367,13775,
+12368,13776,
+12369,13777,
+12370,13778,
+12371,13779,
+12372,13780,
+12373,13781,
+12374,13782,
+12375,13783,
+12376,13784,
+12377,13785,
+12378,13786,
+12379,13787,
+12380,13788,
+12381,13789,
+12382,13790,
+12383,13791,
+12384,13792,
+12385,13793,
+12386,13794,
+12387,13795,
+12388,13796,
+12389,13797,
+12390,13798,
+12391,13799,
+12392,13800,
+12393,13801,
+12394,13802,
+12395,13803,
+12396,13804,
+12397,13805,
+12398,13806,
+12399,13807,
+12400,13808,
+12401,13809,
+12402,13810,
+12403,13811,
+12404,13812,
+12405,13813,
+12406,13814,
+12407,13815,
+12408,13816,
+12409,13817,
+12410,13818,
+12411,13819,
+12412,13820,
+12413,13821,
+12414,13822,
+12415,13823,
+12416,13824,
+12417,13825,
+12418,13826,
+12419,13827,
+12420,13828,
+12421,13829,
+12422,13830,
+12423,13831,
+12424,13832,
+12425,13833,
+12426,13834,
+12427,13835,
+12428,13836,
+12429,13837,
+12430,13838,
+12431,13839,
+12432,13840,
+12433,13841,
+12434,13842,
+12435,13843,
+12443,17606,
+12444,17607,
+12445,13751,
+12446,13752,
+12449,13844,
+12450,13845,
+12451,13846,
+12452,13847,
+12453,13848,
+12454,13849,
+12455,13850,
+12456,13851,
+12457,13852,
+12458,13853,
+12459,13854,
+12460,13855,
+12461,13856,
+12462,13857,
+12463,13858,
+12464,13859,
+12465,13860,
+12466,13861,
+12467,13862,
+12468,13863,
+12469,13864,
+12470,13865,
+12471,13866,
+12472,13867,
+12473,13868,
+12474,13869,
+12475,13870,
+12476,13871,
+12477,13872,
+12478,13873,
+12479,13874,
+12480,13875,
+12481,13876,
+12482,13877,
+12483,13878,
+12484,13879,
+12485,13880,
+12486,13881,
+12487,13882,
+12488,13883,
+12489,13884,
+12490,13885,
+12491,13886,
+12492,13887,
+12493,13888,
+12494,13889,
+12495,13890,
+12496,13891,
+12497,13892,
+12498,13893,
+12499,13894,
+12500,13895,
+12501,13896,
+12502,13897,
+12503,13898,
+12504,13899,
+12505,13900,
+12506,13901,
+12507,13902,
+12508,13903,
+12509,13904,
+12510,13905,
+12511,13906,
+12512,13907,
+12513,13908,
+12514,13909,
+12515,13910,
+12516,13911,
+12517,13912,
+12518,13913,
+12519,13914,
+12520,13915,
+12521,13916,
+12522,13917,
+12523,13918,
+12524,13919,
+12525,13920,
+12526,13921,
+12527,13922,
+12528,13923,
+12529,13924,
+12530,13925,
+12531,13926,
+12532,13927,
+12533,13928,
+12534,13929,
+12540,13757,
+12541,13749,
+12542,13750,
+12549,465,
+12550,466,
+12551,467,
+12552,468,
+12553,469,
+12554,470,
+12555,471,
+12556,472,
+12557,473,
+12558,474,
+12559,475,
+12560,476,
+12561,477,
+12562,478,
+12563,479,
+12564,480,
+12565,481,
+12566,482,
+12567,483,
+12568,484,
+12569,485,
+12570,486,
+12571,487,
+12572,488,
+12573,489,
+12574,490,
+12575,491,
+12576,492,
+12577,493,
+12578,494,
+12579,495,
+12580,496,
+12581,497,
+12582,498,
+12583,499,
+12584,500,
+12585,501,
+12849,14053,
+12963,193,
+13198,277,
+13199,278,
+13212,272,
+13213,273,
+13214,274,
+13217,276,
+13252,279,
+13262,275,
+13265,236,
+13266,235,
+13269,271,
+13365,14781,
+13376,15463,
+13388,17811,
+13412,14981,
+13427,15813,
+13434,16435,
+13437,17815,
+13438,18083,
+13459,17310,
+13462,14300,
+13477,17816,
+13487,15487,
+13500,17280,
+13505,17659,
+13512,15616,
+13535,16036,
+13540,15956,
+13563,15818,
+13574,17206,
+13630,17639,
+13649,17825,
+13651,17317,
+13665,16600,
+13677,17828,
+13680,15151,
+13682,17829,
+13687,16075,
+13688,17273,
+13700,14843,
+13719,15149,
+13720,17840,
+13729,16610,
+13733,17841,
+13741,16124,
+13759,17842,
+13761,17792,
+13765,17844,
+13767,17823,
+13770,15939,
+13774,16001,
+13778,16329,
+13782,16309,
+13787,18189,
+13789,17324,
+13809,18070,
+13810,17959,
+13811,16236,
+13819,17864,
+13822,16234,
+13833,17909,
+13848,18545,
+13850,17946,
+13859,16582,
+13869,16006,
+13877,18734,
+13881,16741,
+13886,14856,
+13895,18438,
+13896,14342,
+13897,16403,
+13902,18072,
+13919,15859,
+13946,16099,
+13953,17830,
+13978,15473,
+13989,18690,
+13994,15152,
+13996,18688,
+14000,15583,
+14001,16589,
+14005,15298,
+14009,18567,
+14012,15615,
+14017,14277,
+14019,16613,
+14020,14597,
+14021,17046,
+14023,15674,
+14024,18464,
+14035,14904,
+14036,15283,
+14038,15628,
+14045,14902,
+14049,14716,
+14050,15581,
+14053,16918,
+14054,16636,
+14069,14872,
+14081,14900,
+14083,17935,
+14088,16639,
+14090,15573,
+14093,16952,
+14108,15870,
+14114,14713,
+14115,14720,
+14117,14409,
+14124,15500,
+14125,15671,
+14128,18780,
+14130,16646,
+14131,14743,
+14138,15958,
+14144,16898,
+14147,16438,
+14178,15798,
+14191,18379,
+14231,17901,
+14240,14888,
+14265,17335,
+14270,14654,
+14322,15265,
+14328,17106,
+14331,16117,
+14351,17964,
+14361,14767,
+14368,17967,
+14381,16686,
+14390,16691,
+14392,17339,
+14435,18115,
+14496,16709,
+14531,14610,
+14540,16502,
+14545,14997,
+14586,17643,
+14600,17970,
+14612,17342,
+14631,15409,
+14642,16770,
+14655,17971,
+14669,17972,
+14691,16739,
+14720,14452,
+14729,17976,
+14730,15592,
+14738,17270,
+14745,14778,
+14747,15795,
+14753,15897,
+14756,15887,
+14776,17979,
+14812,16078,
+14818,18120,
+14821,14651,
+14828,17168,
+14840,17982,
+14843,17221,
+14846,17256,
+14849,16864,
+14851,17984,
+14854,17271,
+14871,16784,
+14872,17295,
+14889,14942,
+14890,16095,
+14900,17177,
+14923,17988,
+14930,16083,
+14935,16798,
+14940,16324,
+14942,15111,
+14950,16796,
+14951,17203,
+14999,17991,
+15019,16529,
+15037,17993,
+15070,16716,
+15072,14970,
+15088,18098,
+15090,17996,
+15099,15090,
+15118,14568,
+15129,18117,
+15138,17998,
+15147,18774,
+15161,18251,
+15170,18000,
+15192,18002,
+15200,14650,
+15217,18006,
+15218,18005,
+15227,18007,
+15228,14426,
+15232,16866,
+15254,15004,
+15257,15000,
+15265,16873,
+15292,17352,
+15294,15793,
+15298,16692,
+15300,15008,
+15319,15020,
+15325,18015,
+15340,18020,
+15346,18022,
+15347,16883,
+15348,14958,
+15373,16887,
+15377,15936,
+15381,14744,
+15444,15872,
+15563,18032,
+15565,15589,
+15569,16387,
+15574,15607,
+15580,16462,
+15595,16919,
+15599,18037,
+15635,14195,
+15645,14652,
+15666,18775,
+15675,16965,
+15686,18053,
+15692,15595,
+15694,16962,
+15697,14570,
+15711,16729,
+15714,15454,
+15721,15594,
+15722,18057,
+15727,15612,
+15733,18058,
+15741,15407,
+15749,18763,
+15754,18061,
+15759,15037,
+15761,18063,
+15781,15702,
+15789,18073,
+15796,16550,
+15807,14288,
+15814,18654,
+15815,16740,
+15820,15727,
+15821,15091,
+15827,14305,
+15835,16383,
+15847,14745,
+15848,16989,
+15851,15962,
+15859,18132,
+15863,18603,
+15868,17963,
+15869,15380,
+15878,18717,
+15936,16745,
+15939,17261,
+15944,17813,
+15957,17023,
+15988,16098,
+16040,17156,
+16041,18157,
+16042,16501,
+16045,15261,
+16049,15064,
+16056,14923,
+16063,15115,
+16066,15320,
+16071,14709,
+16074,18161,
+16076,15330,
+16080,14420,
+16081,18162,
+16086,15533,
+16087,17055,
+16090,15618,
+16094,14834,
+16097,15528,
+16098,18166,
+16103,15324,
+16105,15524,
+16107,14698,
+16112,18167,
+16115,15069,
+16116,18168,
+16122,18169,
+16124,15336,
+16127,15093,
+16128,15373,
+16132,17091,
+16134,15063,
+16142,18171,
+16211,18172,
+16216,15081,
+16217,16521,
+16227,15078,
+16252,18176,
+16275,17869,
+16320,17359,
+16343,17361,
+16348,18180,
+16357,18143,
+16365,17205,
+16377,17879,
+16378,17236,
+16388,16654,
+16413,18185,
+16441,18187,
+16453,18188,
+16467,17846,
+16471,14749,
+16482,15307,
+16485,16339,
+16490,18191,
+16495,18192,
+16552,17365,
+16571,17856,
+16575,16108,
+16584,15118,
+16600,16811,
+16607,15895,
+16634,16062,
+16643,17367,
+16644,16988,
+16649,18204,
+16654,15131,
+16690,15141,
+16743,18207,
+16748,14510,
+16750,15139,
+16767,15234,
+16784,18112,
+16818,18208,
+16836,18211,
+16842,14143,
+16847,18214,
+16859,14271,
+16879,14147,
+16889,15166,
+16913,15169,
+16960,14321,
+16992,18219,
+17002,15189,
+17018,18220,
+17036,18223,
+17044,18225,
+17077,16400,
+17081,14502,
+17084,15498,
+17140,15289,
+17147,15598,
+17148,16870,
+17195,14205,
+17262,18122,
+17303,18235,
+17338,17247,
+17345,18069,
+17369,17214,
+17375,15945,
+17389,18245,
+17394,15944,
+17409,18250,
+17410,15219,
+17427,18255,
+17445,18257,
+17453,18258,
+17530,14255,
+17551,18264,
+17567,15074,
+17568,14317,
+17570,16505,
+17584,18268,
+17591,16289,
+17600,15367,
+17605,16912,
+17614,15651,
+17629,14813,
+17631,15650,
+17636,14306,
+17641,16847,
+17642,15217,
+17643,15602,
+17644,16052,
+17652,14738,
+17667,18079,
+17668,18275,
+17673,15952,
+17675,14292,
+17686,14329,
+17693,14183,
+17703,14327,
+17710,15571,
+17715,15441,
+17723,18282,
+17725,14532,
+17727,15890,
+17731,14323,
+17745,15076,
+17746,16563,
+17749,16958,
+17756,14219,
+17762,18752,
+17770,14340,
+17783,18286,
+17797,14533,
+17897,16100,
+17926,18291,
+17935,14357,
+17941,14403,
+17943,18292,
+18011,14365,
+18042,14825,
+18048,15617,
+18127,15264,
+18128,15866,
+18165,15263,
+18195,14387,
+18200,15815,
+18254,16060,
+18300,15821,
+18328,18305,
+18342,16547,
+18358,16106,
+18389,17178,
+18413,18307,
+18420,17199,
+18432,17950,
+18443,17234,
+18487,18311,
+18525,16655,
+18545,15619,
+18587,15293,
+18605,18321,
+18606,18765,
+18640,15783,
+18653,16672,
+18669,17032,
+18675,16065,
+18682,15940,
+18694,15303,
+18705,17796,
+18718,18324,
+18725,15375,
+18730,18094,
+18733,18125,
+18741,15555,
+18748,15352,
+18750,15622,
+18757,18339,
+18769,18340,
+18771,17069,
+18789,14489,
+18794,18345,
+18802,14884,
+18825,14235,
+18849,14519,
+18855,18350,
+18911,14506,
+18917,18353,
+18919,17953,
+18959,14531,
+18973,15340,
+18980,18354,
+18997,18356,
+19094,15591,
+19124,17249,
+19128,15784,
+19153,14563,
+19172,18359,
+19199,14578,
+19225,18361,
+19244,17951,
+19255,16809,
+19311,15382,
+19312,18368,
+19314,14588,
+19323,15501,
+19326,16394,
+19342,14839,
+19344,15392,
+19347,14988,
+19350,14658,
+19351,15396,
+19357,18370,
+19389,15395,
+19390,14676,
+19392,15836,
+19460,16315,
+19463,16311,
+19470,14604,
+19515,16188,
+19518,17787,
+19547,16089,
+19565,18377,
+19581,15974,
+19620,18622,
+19630,15426,
+19632,15429,
+19639,15905,
+19661,17784,
+19681,16115,
+19693,16555,
+19721,16086,
+19728,16663,
+19764,14645,
+19857,17397,
+19868,18628,
+19968,595,
+19969,597,
+19971,598,
+19972,18686,
+19975,6001,
+19976,617,
+19977,615,
+19978,618,
+19979,616,
+19980,6002,
+19981,660,
+19982,6010,
+19983,6008,
+19984,659,
+19985,658,
+19988,754,
+19989,753,
+19990,752,
+19992,755,
+19993,751,
+19994,18685,
+19996,18656,
+19998,878,
+19999,879,
+20001,15725,
+20004,17805,
+20006,1320,
+20008,536,
+20010,16215,
+20011,619,
+20012,17651,
+20013,661,
+20014,6011,
+20016,662,
+20017,6030,
+20018,1045,
+20019,6388,
+20022,537,
+20023,17687,
+20024,620,
+20025,663,
+20027,756,
+20028,6031,
+20029,17719,
+20031,538,
+20033,13999,
+20034,5996,
+20035,599,
+20037,622,
+20039,6003,
+20040,623,
+20041,16526,
+20043,664,
+20045,757,
+20046,759,
+20047,758,
+20050,880,
+20051,881,
+20054,1321,
+20056,2097,
+20057,596,
+20058,14001,
+20059,17637,
+20060,5997,
+20061,600,
+20062,625,
+20063,624,
+20073,882,
+20074,15845,
+20083,1322,
+20088,15758,
+20094,2555,
+20095,7733,
+20096,17806,
+20097,17340,
+20098,3518,
+20099,9057,
+20100,9058,
+20101,539,
+20102,601,
+20103,17807,
+20104,666,
+20105,17820,
+20107,1323,
+20108,602,
+20109,6004,
+20110,626,
+20113,667,
+20114,669,
+20115,6012,
+20116,670,
+20117,668,
+20120,14788,
+20121,883,
+20122,18645,
+20123,1324,
+20126,1325,
+20127,1699,
+20128,540,
+20129,627,
+20130,671,
+20132,884,
+20133,886,
+20134,885,
+20136,1046,
+20139,1326,
+20140,1327,
+20141,1700,
+20142,1701,
+20147,2098,
+20150,9059,
+20151,16700,
+20153,13175,
+20154,603,
+20155,17638,
+20156,14769,
+20159,17808,
+20160,673,
+20161,672,
+20162,6013,
+20163,674,
+20164,680,
+20166,675,
+20167,676,
+20168,6015,
+20169,6014,
+20170,678,
+20171,679,
+20173,677,
+20174,16226,
+20180,762,
+20181,763,
+20182,764,
+20183,765,
+20184,761,
+20185,768,
+20186,6037,
+20188,6033,
+20189,6036,
+20190,769,
+20191,785,
+20193,6035,
+20195,766,
+20196,767,
+20197,760,
+20200,6032,
+20201,6034,
+20202,18635,
+20203,17809,
+20206,15734,
+20208,899,
+20209,6074,
+20210,896,
+20211,900,
+20212,6084,
+20213,6072,
+20214,897,
+20215,6076,
+20216,14765,
+20219,898,
+20221,901,
+20223,887,
+20224,6075,
+20225,902,
+20226,6079,
+20227,14792,
+20228,6083,
+20229,6080,
+20232,6077,
+20233,888,
+20234,890,
+20235,903,
+20237,892,
+20238,6069,
+20239,895,
+20240,893,
+20241,894,
+20242,6085,
+20243,6082,
+20244,6073,
+20245,891,
+20248,6070,
+20249,889,
+20250,17724,
+20253,6078,
+20258,6081,
+20264,17725,
+20265,14782,
+20268,6071,
+20269,6191,
+20271,1068,
+20272,1055,
+20274,14653,
+20275,6192,
+20276,1052,
+20278,1070,
+20279,17810,
+20280,1060,
+20281,16229,
+20282,1059,
+20283,6180,
+20284,1063,
+20285,1058,
+20286,6185,
+20287,6193,
+20289,6189,
+20290,14795,
+20291,1061,
+20293,15247,
+20294,1064,
+20295,1049,
+20296,1073,
+20297,6182,
+20299,14772,
+20300,6400,
+20301,1047,
+20302,1069,
+20303,1048,
+20304,1056,
+20305,1057,
+20306,6187,
+20307,6183,
+20308,1062,
+20309,1054,
+20310,6179,
+20311,1050,
+20312,6190,
+20313,1071,
+20314,1074,
+20315,1053,
+20316,1066,
+20317,1072,
+20318,1051,
+20319,6188,
+20320,1067,
+20321,6194,
+20322,6181,
+20323,1065,
+20324,6184,
+20327,6186,
+20329,1341,
+20330,6402,
+20331,6414,
+20332,1333,
+20334,6415,
+20335,1328,
+20336,1338,
+20338,15474,
+20339,1331,
+20340,6396,
+20341,1339,
+20342,6395,
+20343,6399,
+20344,6406,
+20345,6404,
+20346,1347,
+20347,1342,
+20348,6390,
+20349,6392,
+20350,1344,
+20351,1332,
+20352,6393,
+20353,6405,
+20354,6412,
+20355,1337,
+20356,6398,
+20357,6391,
+20358,1336,
+20359,6394,
+20360,1340,
+20361,6397,
+20362,14773,
+20363,1335,
+20365,1330,
+20367,1345,
+20368,6407,
+20369,1346,
+20370,6411,
+20372,6409,
+20373,6413,
+20374,1343,
+20375,6401,
+20376,6389,
+20378,6403,
+20379,1334,
+20380,6408,
+20381,1329,
+20382,6410,
+20386,14791,
+20392,17726,
+20395,16418,
+20398,1716,
+20399,1704,
+20400,15690,
+20402,6749,
+20403,6757,
+20405,1703,
+20406,1711,
+20407,1723,
+20409,6763,
+20410,6761,
+20411,6756,
+20413,17812,
+20415,1705,
+20416,6762,
+20417,6752,
+20418,1719,
+20419,1710,
+20420,1718,
+20421,6747,
+20423,6759,
+20424,18152,
+20425,6750,
+20426,1714,
+20427,6751,
+20428,14799,
+20429,6746,
+20430,1721,
+20431,1708,
+20432,1717,
+20433,1707,
+20435,6748,
+20436,6753,
+20438,6760,
+20439,1715,
+20440,1712,
+20441,6755,
+20442,1720,
+20443,6758,
+20444,6754,
+20445,1709,
+20446,1722,
+20447,1713,
+20448,1706,
+20449,1702,
+20452,15462,
+20453,14800,
+20460,6764,
+20462,2124,
+20463,2102,
+20465,2118,
+20466,16168,
+20467,2123,
+20468,7204,
+20469,7203,
+20470,7208,
+20471,7209,
+20472,2105,
+20473,14259,
+20474,2114,
+20477,16166,
+20478,2127,
+20480,2115,
+20483,17814,
+20485,7197,
+20486,2108,
+20487,7198,
+20488,16420,
+20489,2129,
+20491,2120,
+20492,2099,
+20493,2100,
+20494,7217,
+20495,2572,
+20497,2113,
+20498,2112,
+20499,7199,
+20500,2116,
+20501,7749,
+20502,2107,
+20503,7210,
+20504,2122,
+20505,2121,
+20506,2111,
+20507,7202,
+20508,7211,
+20510,7196,
+20511,2110,
+20512,7212,
+20513,2119,
+20514,7200,
+20515,2101,
+20517,2104,
+20518,2103,
+20519,7213,
+20520,2117,
+20521,2106,
+20522,2126,
+20523,2128,
+20524,7207,
+20525,2125,
+20526,14796,
+20527,7215,
+20528,7201,
+20529,7216,
+20531,7205,
+20532,14608,
+20533,7214,
+20535,7206,
+20540,2109,
+20544,7757,
+20545,7745,
+20547,2560,
+20549,7750,
+20550,7756,
+20551,2559,
+20552,7743,
+20553,2563,
+20554,7747,
+20555,7740,
+20556,2561,
+20557,7744,
+20558,2566,
+20559,2571,
+20561,7761,
+20563,7739,
+20565,2567,
+20566,16172,
+20567,7760,
+20568,14801,
+20570,2562,
+20571,7746,
+20572,2558,
+20573,7741,
+20574,7737,
+20575,7751,
+20576,7738,
+20577,7736,
+20578,7748,
+20579,7754,
+20580,7755,
+20581,2564,
+20582,15817,
+20584,8376,
+20585,7752,
+20586,7735,
+20587,7753,
+20588,14797,
+20589,2574,
+20590,7758,
+20591,2573,
+20592,7734,
+20594,7742,
+20595,7759,
+20596,2569,
+20597,2568,
+20598,2565,
+20599,2570,
+20602,2556,
+20605,2557,
+20608,3052,
+20609,14798,
+20610,8379,
+20611,8372,
+20613,3049,
+20615,8380,
+20616,17308,
+20619,8370,
+20620,8373,
+20621,3048,
+20622,8374,
+20624,16876,
+20625,3051,
+20626,8378,
+20628,8368,
+20629,8367,
+20630,3053,
+20632,3054,
+20633,3050,
+20634,3055,
+20635,8366,
+20636,8377,
+20637,8375,
+20638,8369,
+20642,3047,
+20643,8371,
+20646,16191,
+20652,3525,
+20653,3519,
+20654,9063,
+20655,3528,
+20656,9069,
+20657,9072,
+20658,3521,
+20659,3522,
+20660,9066,
+20661,3520,
+20662,9075,
+20663,3526,
+20664,9076,
+20666,9071,
+20667,3527,
+20669,9060,
+20670,3524,
+20671,9061,
+20673,9070,
+20674,9068,
+20676,9064,
+20677,3523,
+20678,9062,
+20679,3529,
+20680,9067,
+20681,9074,
+20682,9065,
+20683,9073,
+20685,14789,
+20686,3976,
+20687,3973,
+20688,14545,
+20689,3974,
+20691,9756,
+20692,9748,
+20693,3972,
+20694,3969,
+20695,9749,
+20697,16334,
+20698,3971,
+20699,9752,
+20701,9754,
+20702,16433,
+20703,15101,
+20704,9761,
+20705,16753,
+20707,9760,
+20708,9755,
+20709,3968,
+20710,9747,
+20711,3966,
+20712,9750,
+20713,3977,
+20714,9753,
+20716,9757,
+20717,3970,
+20718,3967,
+20719,9759,
+20720,9758,
+20721,3975,
+20723,9751,
+20724,15593,
+20725,4357,
+20726,10371,
+20728,10368,
+20729,4358,
+20731,4356,
+20732,14802,
+20733,10375,
+20734,10372,
+20735,10365,
+20736,4355,
+20737,16434,
+20738,4359,
+20739,10366,
+20740,4354,
+20741,4362,
+20742,10369,
+20743,10370,
+20744,4360,
+20745,4361,
+20746,10376,
+20747,10373,
+20748,10374,
+20749,14790,
+20750,16436,
+20752,4749,
+20753,11012,
+20754,4746,
+20755,11009,
+20756,4748,
+20757,4750,
+20759,11010,
+20760,4747,
+20762,11011,
+20764,11008,
+20767,5045,
+20768,11582,
+20769,5046,
+20770,11580,
+20772,11581,
+20773,11579,
+20774,11578,
+20777,11583,
+20778,5044,
+20779,14766,
+20781,12047,
+20782,12048,
+20784,10367,
+20785,12046,
+20786,5047,
+20787,5493,
+20788,12410,
+20789,12411,
+20791,5736,
+20792,5737,
+20793,12998,
+20794,12997,
+20795,5820,
+20796,5819,
+20797,13326,
+20799,604,
+20800,628,
+20801,682,
+20803,681,
+20804,771,
+20805,770,
+20806,906,
+20807,905,
+20808,907,
+20809,904,
+20811,1076,
+20812,1075,
+20813,1077,
+20818,1349,
+20820,1348,
+20821,1350,
+20822,17306,
+20823,1724,
+20825,281,
+20826,7218,
+20827,282,
+20828,2575,
+20829,284,
+20830,283,
+20831,8381,
+20832,16442,
+20833,285,
+20834,3978,
+20835,286,
+20837,605,
+20839,683,
+20840,908,
+20841,1351,
+20842,16444,
+20843,606,
+20844,686,
+20845,684,
+20846,685,
+20849,909,
+20852,17727,
+20853,1078,
+20854,1353,
+20855,1352,
+20856,1354,
+20857,15054,
+20860,2130,
+20864,4751,
+20866,541,
+20870,17311,
+20871,6009,
+20872,14006,
+20873,772,
+20874,773,
+20877,910,
+20879,6195,
+20881,1726,
+20882,1725,
+20883,7220,
+20884,7219,
+20885,2576,
+20886,542,
+20887,687,
+20888,6016,
+20890,16035,
+20892,17728,
+20894,6416,
+20896,1727,
+20898,2133,
+20900,2131,
+20901,2132,
+20903,16038,
+20904,14810,
+20906,4752,
+20907,543,
+20908,774,
+20912,911,
+20913,6086,
+20914,16456,
+20915,16465,
+20916,15740,
+20917,16402,
+20918,1079,
+20919,1080,
+20920,16457,
+20921,6196,
+20924,6417,
+20925,1355,
+20926,6418,
+20931,14811,
+20932,7222,
+20933,7223,
+20934,2136,
+20935,16938,
+20936,7224,
+20937,16459,
+20938,7221,
+20939,2137,
+20940,2135,
+20941,2134,
+20942,7225,
+20943,16460,
+20944,7762,
+20945,16461,
+20946,15789,
+20947,16463,
+20948,8382,
+20951,9077,
+20952,9762,
+20955,17818,
+20956,4363,
+20957,4753,
+20958,11013,
+20959,16975,
+20960,607,
+20961,621,
+20962,16466,
+20964,17729,
+20973,16468,
+20976,2577,
+20977,3057,
+20979,3979,
+20980,16760,
+20981,5998,
+20982,688,
+20984,777,
+20985,775,
+20986,776,
+20988,17819,
+20989,1356,
+20990,16138,
+20992,608,
+20993,609,
+20994,14003,
+20995,629,
+20997,17313,
+20998,689,
+20999,690,
+21000,691,
+21001,6039,
+21002,778,
+21003,16473,
+21004,6038,
+21006,915,
+21008,6088,
+21009,913,
+21010,914,
+21011,6087,
+21014,916,
+21015,912,
+21020,6197,
+21021,1675,
+21022,6198,
+21023,16224,
+21024,18736,
+21025,6199,
+21028,1082,
+21029,1081,
+21030,16474,
+21031,17314,
+21032,1085,
+21033,1083,
+21034,1084,
+21038,1362,
+21040,1361,
+21041,6423,
+21042,6420,
+21043,6421,
+21044,16123,
+21045,6419,
+21046,1363,
+21047,1359,
+21048,1358,
+21050,1360,
+21051,1357,
+21052,16475,
+21057,1364,
+21059,1729,
+21060,6765,
+21062,6422,
+21063,1734,
+21065,6766,
+21066,1730,
+21067,1733,
+21068,1732,
+21069,1731,
+21070,1728,
+21074,7228,
+21076,2140,
+21077,7231,
+21078,2138,
+21079,16477,
+21081,14820,
+21082,7227,
+21083,2141,
+21084,2139,
+21085,2142,
+21086,7229,
+21087,7230,
+21088,16169,
+21089,7226,
+21090,7232,
+21096,17945,
+21097,3061,
+21098,2578,
+21099,7763,
+21100,7765,
+21101,7764,
+21102,7766,
+21103,2579,
+21106,3058,
+21107,16195,
+21108,3059,
+21109,3060,
+21111,3531,
+21112,9079,
+21113,17315,
+21114,9078,
+21115,9080,
+21116,9081,
+21117,3532,
+21119,3530,
+21120,9763,
+21121,9764,
+21122,3981,
+21123,3980,
+21124,10102,
+21127,4364,
+21128,4365,
+21129,4366,
+21130,4368,
+21131,10377,
+21132,10378,
+21133,4367,
+21135,15807,
+21136,17821,
+21137,4754,
+21139,4755,
+21140,16478,
+21142,12412,
+21143,13000,
+21144,12999,
+21145,13327,
+21146,16232,
+21147,610,
+21151,780,
+21152,779,
+21153,17730,
+21155,917,
+21156,14821,
+21158,6089,
+21160,17731,
+21161,1087,
+21162,1088,
+21163,1086,
+21164,1089,
+21165,6200,
+21166,6201,
+21173,16476,
+21177,16479,
+21179,1366,
+21180,6424,
+21182,1365,
+21184,6767,
+21185,1738,
+21186,6768,
+21187,1737,
+21189,16480,
+21191,1735,
+21193,1736,
+21196,16097,
+21197,7233,
+21200,16649,
+21201,16170,
+21202,2580,
+21203,7768,
+21205,2583,
+21206,7767,
+21207,2767,
+21208,2582,
+21209,2581,
+21211,3064,
+21213,3063,
+21214,3062,
+21215,3533,
+21216,16483,
+21217,14823,
+21218,3536,
+21219,3537,
+21220,3535,
+21222,3534,
+21225,9765,
+21227,9766,
+21231,10380,
+21232,4369,
+21233,10379,
+21235,4756,
+21236,11584,
+21237,5048,
+21239,12413,
+21240,5641,
+21241,544,
+21242,630,
+21243,692,
+21244,6017,
+21246,693,
+21247,694,
+21249,15737,
+21253,781,
+21254,782,
+21256,918,
+21257,6202,
+21258,6425,
+21259,6426,
+21261,1739,
+21262,7234,
+21263,2585,
+21264,2584,
+21265,8384,
+21266,8383,
+21269,611,
+21270,695,
+21271,783,
+21273,2586,
+21274,5999,
+21276,6040,
+21277,784,
+21279,6091,
+21280,920,
+21281,919,
+21282,6090,
+21283,1090,
+21287,17822,
+21290,2143,
+21292,16182,
+21293,7769,
+21295,3538,
+21296,9767,
+21297,3982,
+21298,16336,
+21299,16493,
+21300,11014,
+21303,12743,
+21304,545,
+21305,696,
+21307,17732,
+21308,6427,
+21309,6769,
+21310,2589,
+21311,2587,
+21312,2588,
+21313,612,
+21314,18759,
+21315,631,
+21316,363,
+21317,699,
+21319,698,
+21320,697,
+21321,787,
+21322,786,
+21324,6041,
+21325,6092,
+21326,17733,
+21329,1370,
+21330,1367,
+21331,1369,
+21332,1368,
+21335,1740,
+21338,3065,
+21340,613,
+21341,17665,
+21342,700,
+21343,17319,
+21344,789,
+21345,788,
+21347,6203,
+21348,18442,
+21350,1371,
+21351,16077,
+21353,546,
+21356,6018,
+21357,16506,
+21358,791,
+21359,790,
+21360,921,
+21361,922,
+21362,6204,
+21363,1091,
+21364,16507,
+21365,1092,
+21367,1372,
+21368,1373,
+21369,1374,
+21371,1741,
+21372,6770,
+21373,18689,
+21374,16509,
+21375,2144,
+21378,6000,
+21380,701,
+21386,6093,
+21390,6205,
+21391,6206,
+21394,6428,
+21395,16514,
+21396,6429,
+21398,6772,
+21399,6771,
+21400,6774,
+21401,6773,
+21402,1742,
+21404,7770,
+21405,2146,
+21406,7235,
+21407,2145,
+21408,16516,
+21410,15915,
+21412,8385,
+21413,3066,
+21414,16699,
+21415,8386,
+21416,16702,
+21417,17824,
+21418,16326,
+21419,16517,
+21420,9768,
+21421,3983,
+21422,16518,
+21424,17826,
+21426,4370,
+21428,12414,
+21430,547,
+21433,6019,
+21435,792,
+21441,16523,
+21442,17318,
+21443,2590,
+21445,16524,
+21448,614,
+21449,632,
+21450,703,
+21451,702,
+21452,14518,
+21453,704,
+21456,14842,
+21457,17734,
+21458,15933,
+21460,1376,
+21462,1375,
+21463,1377,
+21464,17735,
+21465,16528,
+21466,16185,
+21467,1743,
+21471,2147,
+21472,16531,
+21473,11015,
+21474,5321,
+21475,633,
+21476,794,
+21477,809,
+21478,804,
+21480,799,
+21481,798,
+21482,805,
+21483,803,
+21484,796,
+21485,810,
+21486,797,
+21487,793,
+21488,808,
+21489,807,
+21490,806,
+21491,795,
+21493,802,
+21494,16534,
+21495,14344,
+21496,801,
+21499,811,
+21500,800,
+21502,16577,
+21505,928,
+21507,934,
+21508,930,
+21510,936,
+21511,6094,
+21512,933,
+21513,923,
+21514,926,
+21515,929,
+21516,925,
+21517,932,
+21518,935,
+21519,924,
+21520,927,
+21521,931,
+21522,937,
+21523,16536,
+21524,15479,
+21526,15999,
+21528,6215,
+21529,6212,
+21530,15972,
+21531,1105,
+21532,6213,
+21533,1093,
+21534,1095,
+21535,1119,
+21536,1114,
+21537,16899,
+21539,17827,
+21540,6220,
+21541,6214,
+21542,1097,
+21543,1099,
+21544,6219,
+21545,1106,
+21546,6209,
+21547,1118,
+21548,1120,
+21549,1094,
+21550,1111,
+21551,16556,
+21552,6207,
+21553,1117,
+21554,15989,
+21555,1102,
+21557,1112,
+21558,1113,
+21559,6208,
+21560,1110,
+21561,1108,
+21563,1109,
+21564,1115,
+21565,6216,
+21566,1096,
+21568,1116,
+21569,6218,
+21570,1104,
+21571,1101,
+21573,6211,
+21574,1100,
+21575,6221,
+21576,1103,
+21578,1107,
+21579,16081,
+21581,16039,
+21582,1098,
+21583,6217,
+21588,6210,
+21600,6446,
+21601,6445,
+21602,1395,
+21603,6448,
+21604,6450,
+21605,6439,
+21606,6442,
+21607,6449,
+21608,1396,
+21609,16178,
+21610,15747,
+21611,6436,
+21612,6440,
+21613,16541,
+21615,6444,
+21616,6789,
+21617,1391,
+21618,6793,
+21619,1378,
+21620,6441,
+21621,1379,
+21622,1392,
+21623,1385,
+21624,1381,
+21626,6437,
+21627,1384,
+21628,1389,
+21629,1398,
+21630,6438,
+21631,6431,
+21632,1383,
+21633,6432,
+21634,6434,
+21636,1386,
+21637,18137,
+21638,1388,
+21639,6430,
+21640,6435,
+21643,1397,
+21644,1393,
+21645,6443,
+21646,1399,
+21647,16545,
+21648,1390,
+21649,6433,
+21650,1387,
+21651,17831,
+21652,16024,
+21653,1382,
+21654,1380,
+21655,16010,
+21656,6447,
+21658,1394,
+21660,16230,
+21662,18413,
+21664,6788,
+21665,6776,
+21666,6791,
+21667,17832,
+21668,16546,
+21669,6778,
+21670,1750,
+21671,1764,
+21672,1746,
+21673,1763,
+21674,1755,
+21675,1760,
+21676,1744,
+21677,6777,
+21678,6783,
+21679,1759,
+21680,6795,
+21681,1761,
+21682,14148,
+21683,1751,
+21684,17833,
+21686,6785,
+21687,6782,
+21688,1749,
+21689,17834,
+21690,6775,
+21691,1762,
+21692,6790,
+21693,1754,
+21694,6792,
+21695,1765,
+21696,1745,
+21697,1756,
+21698,1753,
+21699,6780,
+21700,1757,
+21701,6786,
+21702,6787,
+21703,1752,
+21704,1758,
+21705,1748,
+21707,14755,
+21708,17320,
+21709,14848,
+21710,1747,
+21711,6779,
+21712,17835,
+21718,6784,
+21722,18723,
+21726,6794,
+21728,7255,
+21729,2160,
+21730,7237,
+21731,17217,
+21732,7242,
+21733,2153,
+21734,2164,
+21735,7240,
+21736,2148,
+21737,2158,
+21738,2163,
+21739,7247,
+21741,2159,
+21742,2162,
+21743,17836,
+21745,7250,
+21746,2154,
+21747,7241,
+21751,7253,
+21752,7254,
+21754,2156,
+21755,7252,
+21756,2152,
+21757,2167,
+21759,7244,
+21761,2150,
+21762,15564,
+21763,7257,
+21764,7245,
+21765,7249,
+21766,2155,
+21767,2166,
+21768,7246,
+21769,2161,
+21770,7251,
+21771,7258,
+21772,7785,
+21773,14963,
+21774,7256,
+21775,2168,
+21776,2149,
+21777,7248,
+21778,7239,
+21779,16041,
+21780,2157,
+21783,7238,
+21784,17837,
+21786,7243,
+21790,16040,
+21795,17838,
+21797,17161,
+21798,7236,
+21799,2165,
+21800,17839,
+21802,7777,
+21803,16538,
+21804,2609,
+21805,7791,
+21806,2607,
+21807,2604,
+21808,7782,
+21809,2600,
+21810,7786,
+21811,2611,
+21812,7776,
+21813,7781,
+21814,7780,
+21815,2151,
+21816,2606,
+21817,7789,
+21819,7792,
+21820,7773,
+21822,3084,
+21823,17321,
+21824,7793,
+21825,2612,
+21827,2598,
+21828,2595,
+21829,7784,
+21830,2592,
+21831,16554,
+21832,7790,
+21833,16488,
+21834,2599,
+21835,7794,
+21837,7774,
+21838,7788,
+21839,2602,
+21840,7775,
+21841,7778,
+21842,7783,
+21843,17326,
+21845,2603,
+21846,2601,
+21847,2613,
+21852,2608,
+21853,16544,
+21854,2596,
+21855,2748,
+21857,2597,
+21858,7779,
+21859,2610,
+21860,2605,
+21861,7787,
+21862,2594,
+21865,16031,
+21866,2593,
+21867,15150,
+21873,15302,
+21874,16011,
+21875,16164,
+21877,7771,
+21878,7772,
+21879,8391,
+21881,17245,
+21883,3067,
+21884,3070,
+21885,8402,
+21886,3090,
+21887,8405,
+21888,3068,
+21889,8398,
+21890,3074,
+21891,3080,
+21892,3355,
+21894,16558,
+21895,3078,
+21896,8395,
+21897,3091,
+21898,3071,
+21899,3079,
+21900,8403,
+21901,9095,
+21902,8408,
+21903,8396,
+21904,17166,
+21905,8387,
+21906,8400,
+21907,8394,
+21908,3077,
+21909,8406,
+21912,3073,
+21913,3093,
+21914,3086,
+21916,3075,
+21917,3072,
+21919,3083,
+21921,8407,
+21922,8393,
+21923,8399,
+21924,8401,
+21925,8389,
+21926,8404,
+21927,3069,
+21928,8388,
+21929,16559,
+21930,3076,
+21931,3092,
+21932,3088,
+21933,8390,
+21934,3082,
+21936,14581,
+21937,3089,
+21938,3085,
+21939,3081,
+21940,14846,
+21941,8397,
+21945,17322,
+21946,16009,
+21947,3087,
+21948,15811,
+21951,9093,
+21952,9089,
+21953,15951,
+21954,9104,
+21955,9082,
+21956,9091,
+21957,3552,
+21958,3553,
+21959,3545,
+21960,9100,
+21961,3555,
+21962,9087,
+21963,9086,
+21964,9084,
+21965,9102,
+21966,3543,
+21967,9096,
+21968,9085,
+21969,3546,
+21970,9094,
+21971,3541,
+21972,9090,
+21973,9097,
+21974,9099,
+21975,17843,
+21976,17323,
+21977,9103,
+21978,3550,
+21979,9083,
+21980,3544,
+21981,9088,
+21982,16020,
+21983,3539,
+21985,3551,
+21986,9098,
+21987,3547,
+21988,3548,
+21989,3554,
+21990,3542,
+21991,287,
+21992,3540,
+21993,9092,
+21994,15996,
+21996,14290,
+21999,3549,
+22000,16008,
+22001,16003,
+22002,9101,
+22005,18310,
+22006,3999,
+22007,3994,
+22009,9783,
+22010,9779,
+22011,17958,
+22012,9773,
+22013,3988,
+22014,3984,
+22015,9782,
+22016,3985,
+22017,9776,
+22018,9778,
+22020,9781,
+22021,16002,
+22022,3990,
+22024,3997,
+22025,3991,
+22028,9771,
+22029,3992,
+22030,3993,
+22031,9774,
+22032,3998,
+22033,16205,
+22034,9772,
+22035,9777,
+22036,3989,
+22037,9770,
+22038,3995,
+22039,3987,
+22043,3986,
+22044,9775,
+22045,9780,
+22046,15976,
+22047,3996,
+22048,16253,
+22049,17325,
+22050,15975,
+22051,18183,
+22053,15992,
+22055,9769,
+22057,4377,
+22058,10397,
+22060,10394,
+22061,15971,
+22062,4371,
+22063,4383,
+22064,4384,
+22066,4374,
+22067,10392,
+22068,4376,
+22069,10384,
+22070,4382,
+22071,16567,
+22072,10396,
+22073,4373,
+22074,10398,
+22075,4372,
+22077,10393,
+22078,10395,
+22079,4375,
+22080,10391,
+22081,10385,
+22082,10382,
+22083,15998,
+22085,8392,
+22086,10388,
+22088,10381,
+22089,10387,
+22090,10386,
+22092,10383,
+22093,16572,
+22094,4379,
+22095,16573,
+22096,18383,
+22098,17858,
+22099,4378,
+22100,17327,
+22103,4380,
+22104,10389,
+22105,4757,
+22106,10390,
+22109,16121,
+22110,11024,
+22112,11017,
+22113,14354,
+22114,4769,
+22115,11021,
+22116,4761,
+22117,4765,
+22118,11020,
+22120,4764,
+22121,4760,
+22122,4763,
+22123,4758,
+22124,4768,
+22125,11022,
+22126,11018,
+22127,4767,
+22128,11016,
+22129,4766,
+22130,11023,
+22131,11019,
+22132,4381,
+22134,4770,
+22135,11025,
+22136,4762,
+22137,4759,
+22138,15749,
+22139,16055,
+22140,16109,
+22142,11591,
+22143,11593,
+22144,5050,
+22145,11594,
+22146,11592,
+22147,11590,
+22148,11589,
+22149,5052,
+22150,11588,
+22151,5053,
+22153,17960,
+22154,14665,
+22155,15948,
+22156,11586,
+22157,11587,
+22158,5049,
+22159,5054,
+22160,5051,
+22162,14758,
+22163,11585,
+22165,5322,
+22167,12051,
+22168,12049,
+22169,12054,
+22170,12052,
+22172,12050,
+22173,12053,
+22174,14756,
+22175,14664,
+22177,17259,
+22180,15560,
+22181,5494,
+22182,12417,
+22183,12418,
+22184,5495,
+22186,12419,
+22187,12415,
+22188,12420,
+22189,12416,
+22190,5323,
+22191,17911,
+22193,17983,
+22194,12744,
+22195,12746,
+22196,5644,
+22197,12745,
+22198,5643,
+22199,5642,
+22201,18543,
+22204,5645,
+22205,13002,
+22206,13003,
+22207,15965,
+22208,5739,
+22209,5738,
+22210,5740,
+22211,13001,
+22213,13177,
+22214,13176,
+22216,5821,
+22217,5823,
+22218,5822,
+22219,13178,
+22220,5878,
+22221,13441,
+22225,5919,
+22227,13440,
+22228,13513,
+22230,18570,
+22231,6005,
+22234,813,
+22235,812,
+22237,940,
+22238,939,
+22239,6096,
+22240,938,
+22241,6095,
+22242,17736,
+22244,1123,
+22245,6224,
+22247,6223,
+22250,1121,
+22251,1124,
+22253,16580,
+22254,6222,
+22255,16579,
+22256,1122,
+22257,16575,
+22263,6451,
+22265,6452,
+22266,1400,
+22269,15716,
+22271,1766,
+22272,16578,
+22273,7259,
+22274,7260,
+22275,2169,
+22276,2170,
+22279,7796,
+22280,2614,
+22281,2616,
+22282,7795,
+22283,2615,
+22284,8409,
+22285,3094,
+22290,3556,
+22291,3557,
+22292,9105,
+22293,15926,
+22294,4001,
+22296,4000,
+22298,10399,
+22299,11027,
+22300,11026,
+22301,14850,
+22302,13573,
+22303,634,
+22304,6020,
+22306,6042,
+22307,6043,
+22312,943,
+22313,947,
+22314,6098,
+22316,945,
+22317,944,
+22318,6097,
+22319,946,
+22320,942,
+22322,15097,
+22323,941,
+22324,6099,
+22331,1134,
+22334,1131,
+22335,18517,
+22336,1127,
+22337,6225,
+22338,16588,
+22339,16606,
+22341,6226,
+22342,16584,
+22343,1129,
+22345,6228,
+22346,1125,
+22347,6229,
+22348,6227,
+22349,1128,
+22350,1130,
+22351,1133,
+22352,1132,
+22353,1126,
+22354,6230,
+22356,18309,
+22359,18406,
+22363,14722,
+22367,16319,
+22369,1405,
+22370,6465,
+22372,1407,
+22374,1406,
+22375,16171,
+22376,6466,
+22377,1404,
+22378,1403,
+22379,6456,
+22381,6455,
+22383,6453,
+22384,6458,
+22385,6457,
+22386,6454,
+22387,6463,
+22388,6464,
+22389,6461,
+22390,6459,
+22391,1402,
+22394,16223,
+22395,6462,
+22396,1408,
+22397,6467,
+22398,18140,
+22399,14855,
+22400,6460,
+22402,1767,
+22403,1401,
+22408,18507,
+22410,15483,
+22411,1768,
+22412,6800,
+22413,14854,
+22415,6806,
+22416,16742,
+22419,1774,
+22420,6804,
+22421,6810,
+22423,6801,
+22424,6805,
+22425,6807,
+22426,6809,
+22427,6803,
+22428,17928,
+22429,6802,
+22430,6797,
+22431,6798,
+22432,1769,
+22433,18532,
+22434,1771,
+22435,1770,
+22436,6799,
+22437,6808,
+22439,18708,
+22442,18693,
+22446,1773,
+22452,18241,
+22453,6796,
+22454,7270,
+22456,7269,
+22457,7274,
+22458,7265,
+22459,15481,
+22460,7268,
+22461,7267,
+22462,14124,
+22463,7271,
+22465,7275,
+22466,2171,
+22467,2174,
+22468,15195,
+22470,7266,
+22471,7272,
+22472,15627,
+22475,2173,
+22476,7261,
+22478,1772,
+22479,7810,
+22480,7273,
+22482,7264,
+22484,2172,
+22485,7263,
+22487,15485,
+22492,7801,
+22493,14853,
+22494,16129,
+22495,2617,
+22496,2621,
+22497,7817,
+22498,7799,
+22499,7813,
+22500,2622,
+22501,7815,
+22502,16591,
+22503,7821,
+22505,7825,
+22508,7816,
+22509,7804,
+22510,7812,
+22511,18260,
+22512,7826,
+22513,7824,
+22514,7814,
+22515,7809,
+22516,7802,
+22517,8417,
+22518,7800,
+22519,2626,
+22520,7807,
+22521,2627,
+22522,2623,
+22523,7797,
+22524,7819,
+22525,7805,
+22526,16527,
+22528,7803,
+22529,7822,
+22530,2624,
+22531,16593,
+22532,7828,
+22533,2618,
+22534,2620,
+22535,7811,
+22536,7806,
+22537,2175,
+22538,2619,
+22539,7808,
+22540,7823,
+22541,7827,
+22542,7818,
+22544,7820,
+22546,15626,
+22548,7798,
+22553,8412,
+22555,8421,
+22556,8420,
+22557,3102,
+22558,8413,
+22560,3103,
+22561,3101,
+22562,15400,
+22563,8415,
+22564,3098,
+22565,8419,
+22566,16596,
+22567,8414,
+22568,8416,
+22569,8410,
+22570,3096,
+22572,8429,
+22573,8428,
+22574,8425,
+22575,3095,
+22576,3099,
+22577,3100,
+22578,7262,
+22579,8422,
+22580,3097,
+22581,2625,
+22582,8424,
+22583,8411,
+22584,8427,
+22585,8426,
+22586,15730,
+22587,8430,
+22589,9119,
+22591,8423,
+22592,15746,
+22596,18363,
+22599,15042,
+22600,8418,
+22601,9111,
+22602,3567,
+22603,3570,
+22604,3565,
+22605,9110,
+22606,9114,
+22607,9109,
+22609,3559,
+22610,3569,
+22611,9106,
+22612,3563,
+22613,9113,
+22615,3561,
+22616,3560,
+22617,9116,
+22618,3562,
+22619,9118,
+22620,18761,
+22621,9115,
+22622,3558,
+22623,17375,
+22626,3568,
+22627,9120,
+22628,9108,
+22629,9117,
+22632,9107,
+22633,15717,
+22635,3564,
+22636,14746,
+22637,3566,
+22639,9112,
+22641,9121,
+22642,15398,
+22643,17237,
+22644,9791,
+22645,4002,
+22646,9797,
+22649,4007,
+22650,9793,
+22651,9800,
+22652,9785,
+22653,4009,
+22654,4003,
+22655,9790,
+22656,4385,
+22657,9789,
+22658,9798,
+22659,4004,
+22661,4008,
+22662,9788,
+22663,9794,
+22664,9799,
+22665,9784,
+22666,4006,
+22667,9792,
+22670,9796,
+22671,9802,
+22672,9786,
+22673,9795,
+22675,4005,
+22676,9801,
+22680,9787,
+22681,17944,
+22682,18691,
+22684,4389,
+22685,10401,
+22686,4387,
+22687,4386,
+22688,10403,
+22689,10408,
+22691,10404,
+22693,10407,
+22694,4392,
+22695,16107,
+22696,4744,
+22697,4391,
+22698,16599,
+22699,10400,
+22700,10406,
+22702,4390,
+22703,10405,
+22704,14244,
+22705,10402,
+22707,4388,
+22709,18496,
+22710,15869,
+22714,11032,
+22715,14059,
+22716,11034,
+22717,11029,
+22718,4772,
+22719,11031,
+22721,4771,
+22722,11033,
+22725,4774,
+22726,11035,
+22727,4773,
+22728,11028,
+22729,11030,
+22731,14857,
+22734,5058,
+22735,11597,
+22737,5057,
+22738,11598,
+22739,5056,
+22740,11596,
+22741,5055,
+22742,11595,
+22744,5325,
+22745,5324,
+22746,12421,
+22747,12423,
+22748,16602,
+22749,12422,
+22750,5496,
+22751,5497,
+22752,16601,
+22754,5498,
+22755,12747,
+22756,5646,
+22759,13329,
+22760,13328,
+22761,5920,
+22763,635,
+22764,705,
+22767,1135,
+22768,17737,
+22770,15720,
+22771,15482,
+22772,6811,
+22777,3104,
+22778,3105,
+22779,16604,
+22780,9122,
+22781,4010,
+22782,9803,
+22783,10409,
+22786,548,
+22787,6021,
+22788,17738,
+22789,17817,
+22790,6231,
+22791,17739,
+22794,548,
+22796,6468,
+22797,6812,
+22798,7276,
+22799,2176,
+22801,17012,
+22802,12424,
+22804,5741,
+22805,636,
+22806,814,
+22807,6044,
+22809,948,
+22810,949,
+22812,1409,
+22815,16611,
+22816,2628,
+22818,4012,
+22820,4013,
+22821,4011,
+22823,637,
+22825,706,
+22826,708,
+22827,707,
+22828,6022,
+22829,709,
+22830,815,
+22831,6045,
+22833,816,
+22834,17740,
+22836,17741,
+22839,950,
+22840,951,
+22844,6100,
+22846,1136,
+22848,6232,
+22852,1413,
+22853,6469,
+22855,1411,
+22856,1412,
+22857,1410,
+22858,7277,
+22862,1778,
+22863,1777,
+22864,1779,
+22865,1776,
+22867,6813,
+22868,1414,
+22869,1775,
+22871,2177,
+22872,2178,
+22874,2179,
+22876,7829,
+22880,3106,
+22881,8431,
+22882,2629,
+22885,18514,
+22887,3571,
+22889,4015,
+22890,4014,
+22891,9804,
+22893,4393,
+22894,4775,
+22896,12055,
+22897,13179,
+22898,13330,
+22899,638,
+22900,817,
+22901,15978,
+22902,818,
+22903,6106,
+22904,953,
+22905,956,
+22907,6104,
+22908,6102,
+22909,955,
+22910,6105,
+22911,6107,
+22912,6101,
+22913,958,
+22914,957,
+22915,954,
+22916,952,
+22917,6103,
+22921,15664,
+22922,1147,
+22925,1144,
+22926,6237,
+22927,6240,
+22928,6239,
+22930,1138,
+22931,1146,
+22932,15513,
+22934,1143,
+22935,6236,
+22936,6234,
+22937,1142,
+22938,15280,
+22941,1137,
+22942,1140,
+22943,15791,
+22944,6235,
+22945,6242,
+22946,6238,
+22947,1141,
+22948,1145,
+22949,1148,
+22950,6233,
+22951,6241,
+22952,1139,
+22956,15745,
+22958,1419,
+22959,1427,
+22960,15576,
+22961,6481,
+22962,6474,
+22963,1428,
+22964,6485,
+22965,6470,
+22966,6477,
+22967,16173,
+22968,14864,
+22969,1418,
+22970,6471,
+22971,1416,
+22972,6478,
+22973,6482,
+22974,1415,
+22976,6483,
+22977,6476,
+22979,6479,
+22980,15620,
+22981,1430,
+22982,1421,
+22983,6486,
+22984,6484,
+22985,16620,
+22986,1426,
+22987,1424,
+22988,6475,
+22989,1423,
+22990,6473,
+22991,6472,
+22992,1422,
+22993,1420,
+22994,1429,
+22995,1425,
+22996,1417,
+22998,6480,
+23000,1781,
+23001,16625,
+23002,1788,
+23003,6827,
+23004,1780,
+23005,6819,
+23006,6815,
+23008,6831,
+23009,6814,
+23011,1783,
+23012,6824,
+23013,1786,
+23014,1789,
+23016,1784,
+23017,6828,
+23018,1787,
+23019,15705,
+23020,2186,
+23021,6834,
+23022,6816,
+23023,15672,
+23024,15282,
+23025,6818,
+23026,6825,
+23027,6829,
+23028,6833,
+23029,6830,
+23030,6823,
+23031,6826,
+23032,15946,
+23033,16632,
+23034,6820,
+23035,1791,
+23036,6822,
+23037,6821,
+23038,6832,
+23039,1782,
+23040,6817,
+23041,1790,
+23042,15245,
+23043,1785,
+23049,2192,
+23050,7285,
+23051,15497,
+23052,2191,
+23053,15160,
+23055,7283,
+23057,2180,
+23058,14867,
+23059,2185,
+23061,7282,
+23062,7279,
+23063,7284,
+23064,2181,
+23065,7278,
+23067,2184,
+23068,2182,
+23070,7286,
+23071,2183,
+23072,2187,
+23073,14875,
+23075,2188,
+23076,16616,
+23077,2190,
+23079,15841,
+23081,2189,
+23082,15163,
+23083,15680,
+23084,14863,
+23085,7280,
+23086,7281,
+23091,7287,
+23093,7836,
+23094,2630,
+23095,8445,
+23096,7835,
+23097,7854,
+23100,2636,
+23101,15040,
+23102,7852,
+23104,2635,
+23105,2631,
+23106,7861,
+23107,7845,
+23108,7848,
+23109,14615,
+23110,2639,
+23111,7858,
+23112,7850,
+23113,2632,
+23114,2640,
+23116,7855,
+23117,7853,
+23120,7838,
+23121,7859,
+23122,7847,
+23123,7842,
+23124,17923,
+23125,7832,
+23126,7860,
+23127,7844,
+23128,7831,
+23129,15156,
+23130,2638,
+23131,7849,
+23132,7862,
+23133,7846,
+23134,7834,
+23135,7839,
+23136,7830,
+23137,15667,
+23138,2637,
+23139,16635,
+23140,7843,
+23141,7840,
+23142,2633,
+23143,7833,
+23144,14775,
+23145,7857,
+23146,2634,
+23147,14914,
+23148,7841,
+23149,7837,
+23150,15679,
+23152,7856,
+23153,15668,
+23159,3107,
+23160,8438,
+23161,15585,
+23162,8435,
+23163,8452,
+23164,8440,
+23165,8453,
+23166,14865,
+23167,3109,
+23169,14877,
+23170,15665,
+23171,8449,
+23172,8446,
+23174,15233,
+23176,16995,
+23178,8447,
+23179,8450,
+23180,8454,
+23182,7851,
+23183,8456,
+23184,9142,
+23185,16949,
+23186,3110,
+23187,8457,
+23188,8433,
+23189,8443,
+23190,16640,
+23191,8448,
+23193,14858,
+23194,3108,
+23195,3111,
+23196,8455,
+23197,8458,
+23198,8437,
+23199,8434,
+23200,16754,
+23201,15580,
+23202,8436,
+23205,8441,
+23206,8439,
+23207,3112,
+23209,8451,
+23211,16634,
+23212,8442,
+23214,8444,
+23215,8432,
+23216,9130,
+23217,9128,
+23218,3580,
+23219,3578,
+23220,9138,
+23221,9129,
+23222,9139,
+23223,9135,
+23224,9127,
+23225,9141,
+23226,9126,
+23227,9133,
+23228,3577,
+23229,3576,
+23230,3575,
+23231,9131,
+23232,9136,
+23233,3572,
+23234,3579,
+23235,14486,
+23236,9124,
+23238,9134,
+23239,9123,
+23240,9132,
+23241,3573,
+23242,9137,
+23243,9125,
+23244,3574,
+23245,9140,
+23246,15496,
+23247,17333,
+23251,16642,
+23253,9808,
+23254,4020,
+23255,4019,
+23256,4021,
+23257,9820,
+23258,9810,
+23259,9816,
+23260,9805,
+23261,9819,
+23262,9818,
+23263,9822,
+23264,9815,
+23265,4016,
+23266,9814,
+23267,4022,
+23268,15238,
+23269,9807,
+23270,4017,
+23272,9821,
+23273,4018,
+23274,9809,
+23275,9812,
+23276,9817,
+23277,9811,
+23278,9806,
+23280,16103,
+23282,14325,
+23283,9813,
+23284,10411,
+23285,4397,
+23286,10414,
+23287,10413,
+23288,10416,
+23289,10418,
+23290,14062,
+23291,4395,
+23293,10412,
+23294,15389,
+23295,10410,
+23297,10419,
+23298,10417,
+23299,10415,
+23301,10421,
+23303,10420,
+23304,4399,
+23305,4394,
+23307,4396,
+23308,4398,
+23309,18687,
+23311,10422,
+23312,11042,
+23313,15350,
+23315,11041,
+23316,11040,
+23318,11043,
+23319,11036,
+23321,11037,
+23322,11045,
+23323,11038,
+23325,4776,
+23326,11047,
+23327,18753,
+23328,11046,
+23329,11039,
+23331,11602,
+23332,5061,
+23333,11600,
+23334,11605,
+23335,11604,
+23336,11044,
+23338,5060,
+23339,15236,
+23340,11603,
+23341,11599,
+23342,11607,
+23343,11606,
+23344,5059,
+23346,11601,
+23348,4777,
+23352,5326,
+23356,12056,
+23357,12425,
+23358,12426,
+23359,12427,
+23360,5647,
+23361,14536,
+23363,5648,
+23364,14916,
+23365,12748,
+23366,17074,
+23367,13005,
+23368,13004,
+23370,14541,
+23371,13180,
+23372,13181,
+23373,13331,
+23374,13442,
+23375,14897,
+23376,639,
+23377,640,
+23379,641,
+23380,710,
+23381,819,
+23382,6108,
+23383,959,
+23384,960,
+23386,1151,
+23387,1152,
+23388,1150,
+23389,1149,
+23391,1431,
+23394,6487,
+23395,1433,
+23396,1432,
+23397,6488,
+23398,17742,
+23400,17949,
+23401,1792,
+23403,2193,
+23404,7288,
+23405,15967,
+23406,7864,
+23408,2641,
+23409,3114,
+23410,7863,
+23411,3113,
+23412,14130,
+23413,4023,
+23414,16650,
+23415,9823,
+23416,4778,
+23418,5062,
+23419,11608,
+23420,16652,
+23421,5649,
+23423,5824,
+23424,549,
+23425,6046,
+23426,16452,
+23427,820,
+23428,6047,
+23429,963,
+23431,961,
+23432,962,
+23433,964,
+23435,1154,
+23436,1153,
+23438,6243,
+23439,1155,
+23440,18665,
+23442,6244,
+23443,6489,
+23445,6490,
+23447,1434,
+23448,1436,
+23449,1438,
+23450,1435,
+23451,1439,
+23452,1437,
+23453,16662,
+23454,17743,
+23455,17744,
+23458,1796,
+23459,1793,
+23460,1795,
+23461,1797,
+23462,1794,
+23463,7289,
+23464,6835,
+23466,16763,
+23468,7291,
+23469,7290,
+23470,2199,
+23472,2195,
+23475,2196,
+23476,2198,
+23477,2200,
+23478,2197,
+23480,2202,
+23481,2201,
+23487,2646,
+23488,7866,
+23489,7865,
+23490,2645,
+23491,16165,
+23492,2644,
+23493,2643,
+23494,2647,
+23495,2642,
+23498,8464,
+23499,8461,
+23500,3116,
+23501,8460,
+23502,8465,
+23504,3118,
+23505,8463,
+23506,3115,
+23507,3117,
+23508,8462,
+23509,16657,
+23510,9143,
+23511,17083,
+23512,9144,
+23513,9145,
+23518,4024,
+23519,4032,
+23520,9824,
+23521,4026,
+23522,4030,
+23523,9825,
+23524,4031,
+23525,4027,
+23526,4028,
+23527,4025,
+23528,4029,
+23529,4402,
+23530,8459,
+23531,4403,
+23532,4401,
+23534,4400,
+23535,11048,
+23536,4779,
+23537,11609,
+23538,11610,
+23539,16661,
+23541,5499,
+23542,5650,
+23544,642,
+23546,965,
+23551,16605,
+23553,1798,
+23555,7292,
+23556,2203,
+23557,16664,
+23559,2650,
+23560,2649,
+23561,2648,
+23562,3119,
+23563,3120,
+23564,8466,
+23565,4033,
+23566,4780,
+23567,643,
+23568,6023,
+23569,711,
+23570,6048,
+23571,16666,
+23572,16668,
+23573,6109,
+23574,966,
+23578,1440,
+23580,17898,
+23582,14889,
+23583,9146,
+23584,15753,
+23586,644,
+23587,17640,
+23588,712,
+23589,6110,
+23592,6245,
+23594,6246,
+23596,1156,
+23600,8467,
+23601,3121,
+23603,9147,
+23607,5063,
+23608,645,
+23609,665,
+23610,713,
+23611,6049,
+23612,821,
+23614,1160,
+23615,1159,
+23616,1157,
+23617,1158,
+23620,6491,
+23621,1442,
+23622,1443,
+23623,6492,
+23624,1441,
+23625,16671,
+23626,16220,
+23627,1802,
+23628,6836,
+23629,1801,
+23630,1799,
+23631,1800,
+23632,2206,
+23633,2204,
+23635,16130,
+23636,7294,
+23637,2205,
+23638,7293,
+23640,2194,
+23641,7867,
+23644,2652,
+23645,2653,
+23646,15719,
+23648,2651,
+23650,4034,
+23651,9826,
+23652,4404,
+23653,4405,
+23655,10423,
+23656,5064,
+23657,12057,
+23658,12058,
+23660,5742,
+23661,13443,
+23662,6006,
+23663,714,
+23665,646,
+23667,6051,
+23668,6050,
+23673,967,
+23674,6112,
+23675,6113,
+23676,6111,
+23678,6114,
+23685,16673,
+23686,6254,
+23688,6249,
+23689,6251,
+23690,6253,
+23691,6250,
+23692,1164,
+23693,6247,
+23695,6248,
+23696,1161,
+23697,1162,
+23698,6252,
+23699,6255,
+23700,1163,
+23701,6256,
+23705,18060,
+23706,17745,
+23708,18778,
+23709,6506,
+23710,14890,
+23711,6500,
+23712,6495,
+23713,1445,
+23714,6503,
+23715,6501,
+23716,6494,
+23717,6507,
+23718,6510,
+23719,6505,
+23720,6498,
+23721,1447,
+23722,6504,
+23723,1448,
+23724,6499,
+23725,6502,
+23726,6493,
+23727,6497,
+23728,6509,
+23729,1449,
+23731,1450,
+23733,6496,
+23734,6508,
+23735,1444,
+23736,1446,
+23738,16683,
+23745,17336,
+23746,15692,
+23750,6853,
+23751,6846,
+23752,6852,
+23753,6845,
+23754,6847,
+23755,6841,
+23756,6839,
+23758,6854,
+23759,6851,
+23760,6837,
+23761,16147,
+23762,1804,
+23763,6849,
+23764,6850,
+23766,6848,
+23767,6840,
+23768,6838,
+23769,1803,
+23770,6844,
+23771,6842,
+23774,6843,
+23775,6855,
+23781,17975,
+23784,2211,
+23785,16674,
+23786,2210,
+23788,7295,
+23789,2207,
+23790,7297,
+23791,16675,
+23792,2212,
+23793,7298,
+23796,2215,
+23798,2213,
+23799,7299,
+23800,6856,
+23801,7301,
+23803,2209,
+23805,2208,
+23807,7296,
+23808,7300,
+23809,2214,
+23814,2655,
+23815,2654,
+23819,7869,
+23820,7873,
+23821,7875,
+23822,2656,
+23823,7878,
+23824,16679,
+23825,2660,
+23826,7880,
+23828,2662,
+23829,17337,
+23830,2658,
+23831,2666,
+23832,16680,
+23833,2663,
+23834,7871,
+23835,2657,
+23837,7870,
+23838,7868,
+23839,7882,
+23840,7872,
+23842,2659,
+23843,7881,
+23844,2664,
+23845,7877,
+23846,7876,
+23847,2665,
+23848,7874,
+23849,2661,
+23852,15863,
+23854,7883,
+23855,18131,
+23856,7879,
+23857,8482,
+23858,8489,
+23859,8478,
+23860,3124,
+23861,8474,
+23862,8490,
+23863,8468,
+23864,8487,
+23865,8485,
+23866,8479,
+23868,8488,
+23869,8481,
+23870,17961,
+23871,8473,
+23872,8491,
+23873,8471,
+23874,8484,
+23875,8469,
+23877,8492,
+23878,16681,
+23879,3125,
+23880,17962,
+23881,8486,
+23882,9150,
+23883,8472,
+23884,3122,
+23886,8476,
+23888,3123,
+23889,8475,
+23890,8480,
+23893,8477,
+23894,17338,
+23895,16330,
+23897,8483,
+23899,15829,
+23902,9154,
+23906,9157,
+23907,9149,
+23909,9151,
+23911,9156,
+23912,9155,
+23913,3581,
+23915,8470,
+23916,9153,
+23919,3582,
+23920,18148,
+23921,9148,
+23922,9152,
+23924,16111,
+23927,9833,
+23929,9840,
+23930,9831,
+23932,9838,
+23933,9829,
+23934,9837,
+23935,9841,
+23936,9828,
+23937,9832,
+23938,9827,
+23940,4035,
+23941,15924,
+23942,9830,
+23943,4036,
+23944,9836,
+23945,9835,
+23946,9834,
+23947,16676,
+23949,9839,
+23950,16140,
+23954,10427,
+23955,10429,
+23956,4407,
+23957,10430,
+23959,10425,
+23961,10424,
+23962,10434,
+23964,10432,
+23965,4406,
+23966,10435,
+23967,10426,
+23968,10431,
+23969,10433,
+23970,10428,
+23972,17965,
+23975,11052,
+23976,11057,
+23977,11051,
+23978,11056,
+23979,15929,
+23980,11049,
+23981,11059,
+23982,11055,
+23983,11060,
+23984,11054,
+23985,11050,
+23986,11058,
+23988,11061,
+23989,11053,
+23990,16728,
+23991,11611,
+23992,5068,
+23993,17966,
+23994,5066,
+23996,5065,
+23997,5067,
+24000,12059,
+24001,15359,
+24002,12323,
+24003,12428,
+24006,12749,
+24007,12750,
+24009,5651,
+24011,13006,
+24013,5743,
+24015,13007,
+24017,13183,
+24018,5826,
+24020,5825,
+24021,13182,
+24022,5879,
+24023,16684,
+24024,13332,
+24027,550,
+24029,647,
+24030,968,
+24031,6115,
+24032,6257,
+24033,1306,
+24034,2667,
+24037,648,
+24038,824,
+24039,823,
+24040,822,
+24043,1165,
+24046,2216,
+24048,9158,
+24049,649,
+24050,650,
+24051,651,
+24052,715,
+24053,16225,
+24055,1805,
+24057,6857,
+24061,3126,
+24062,652,
+24063,6024,
+24066,825,
+24067,826,
+24068,6052,
+24070,969,
+24073,16704,
+24074,6258,
+24075,15754,
+24076,1166,
+24078,6259,
+24081,1456,
+24082,16174,
+24084,6512,
+24085,1454,
+24086,1453,
+24087,6511,
+24088,1451,
+24089,6513,
+24090,1452,
+24091,1455,
+24093,1806,
+24095,1808,
+24096,6861,
+24097,6858,
+24098,6859,
+24099,6860,
+24100,6862,
+24101,1807,
+24104,7303,
+24105,7302,
+24107,2218,
+24109,2217,
+24110,16693,
+24115,2670,
+24116,7885,
+24118,2669,
+24119,2671,
+24120,2668,
+24125,3128,
+24126,7884,
+24128,3129,
+24129,8494,
+24130,17312,
+24131,3130,
+24132,8493,
+24133,3127,
+24136,14892,
+24138,9161,
+24139,9163,
+24140,3583,
+24141,9162,
+24142,9160,
+24143,9159,
+24147,9844,
+24148,4041,
+24149,4039,
+24151,4040,
+24152,9842,
+24153,9843,
+24155,4037,
+24156,10439,
+24157,10437,
+24158,14891,
+24159,4409,
+24160,10438,
+24161,4410,
+24162,4408,
+24163,4038,
+24166,11064,
+24167,11062,
+24168,11063,
+24169,10436,
+24170,11613,
+24171,5069,
+24172,11612,
+24173,12060,
+24174,12061,
+24175,11065,
+24176,12429,
+24178,653,
+24179,827,
+24180,971,
+24181,6116,
+24182,970,
+24184,1457,
+24185,3584,
+24186,551,
+24187,716,
+24188,828,
+24189,1809,
+24190,3131,
+24191,552,
+24192,6053,
+24194,6054,
+24195,16648,
+24196,6117,
+24198,17746,
+24199,1168,
+24200,6263,
+24201,6261,
+24202,1169,
+24203,6260,
+24204,6262,
+24205,6264,
+24207,1167,
+24213,1461,
+24214,1462,
+24215,1459,
+24218,1458,
+24219,6866,
+24220,1460,
+24224,1810,
+24226,6865,
+24227,6867,
+24228,6864,
+24229,6868,
+24230,1811,
+24231,2221,
+24232,7304,
+24234,7306,
+24235,2219,
+24236,7307,
+24237,2220,
+24238,7305,
+24240,6863,
+24241,7886,
+24242,7889,
+24243,7890,
+24244,7887,
+24245,2675,
+24246,2674,
+24247,2672,
+24248,2673,
+24249,7888,
+24253,17341,
+24254,2676,
+24257,3133,
+24258,3134,
+24260,3135,
+24261,9164,
+24262,9166,
+24263,9168,
+24264,3586,
+24265,3585,
+24266,3132,
+24267,9167,
+24268,9165,
+24269,14896,
+24270,9848,
+24272,16701,
+24273,9846,
+24274,9852,
+24275,4042,
+24276,9853,
+24277,9850,
+24278,4043,
+24279,9847,
+24280,9845,
+24281,9851,
+24282,4412,
+24283,10441,
+24284,9849,
+24285,4414,
+24286,10442,
+24287,4413,
+24288,4416,
+24289,10443,
+24290,4411,
+24291,4415,
+24293,11070,
+24294,11068,
+24295,11067,
+24296,11069,
+24297,11066,
+24300,5501,
+24302,12751,
+24303,12752,
+24305,13008,
+24306,13184,
+24307,5954,
+24308,553,
+24310,1463,
+24311,1170,
+24312,14447,
+24313,16707,
+24314,1812,
+24315,16708,
+24316,16710,
+24318,654,
+24319,717,
+24321,829,
+24322,6118,
+24324,1171,
+24325,6265,
+24327,6869,
+24328,1813,
+24330,4044,
+24331,655,
+24332,14910,
+24333,16713,
+24334,14911,
+24335,972,
+24338,3587,
+24339,656,
+24340,718,
+24341,719,
+24343,831,
+24344,830,
+24346,6119,
+24347,973,
+24349,6266,
+24351,1172,
+24354,6515,
+24355,6516,
+24356,6517,
+24357,17968,
+24358,1464,
+24359,1465,
+24360,6514,
+24361,1466,
+24365,1814,
+24366,6870,
+24368,7309,
+24369,2222,
+24371,7308,
+24373,2677,
+24374,7891,
+24375,2678,
+24376,7892,
+24378,16718,
+24380,3136,
+24384,9169,
+24387,9855,
+24388,9854,
+24390,4045,
+24392,4417,
+24393,10444,
+24394,4781,
+24395,11071,
+24396,5070,
+24397,15269,
+24398,5827,
+24399,13334,
+24400,554,
+24401,17641,
+24404,6518,
+24406,6871,
+24407,2679,
+24408,8495,
+24409,3588,
+24412,15706,
+24413,5327,
+24417,555,
+24418,1174,
+24419,16722,
+24420,1173,
+24421,1815,
+24423,7310,
+24425,2681,
+24426,2953,
+24427,2682,
+24428,2680,
+24429,3137,
+24431,9856,
+24432,4046,
+24433,4418,
+24434,16724,
+24435,6007,
+24436,6120,
+24438,6268,
+24439,1175,
+24440,6267,
+24441,1176,
+24443,16472,
+24444,1470,
+24445,6521,
+24446,6520,
+24447,1469,
+24448,1467,
+24449,1468,
+24450,6519,
+24451,17969,
+24453,1817,
+24454,6872,
+24455,1820,
+24456,1816,
+24457,1822,
+24458,1818,
+24459,1819,
+24460,1821,
+24464,2225,
+24465,2224,
+24466,2223,
+24470,7894,
+24471,2683,
+24472,2686,
+24473,2684,
+24475,7893,
+24476,2689,
+24478,2685,
+24479,7895,
+24480,2688,
+24481,2687,
+24484,16428,
+24485,8497,
+24486,8496,
+24487,16727,
+24488,3140,
+24489,3138,
+24490,3139,
+24491,8498,
+24492,3589,
+24493,9171,
+24494,3590,
+24495,9170,
+24497,15768,
+24498,10445,
+24501,4420,
+24502,9857,
+24503,4419,
+24505,4047,
+24506,16287,
+24507,11073,
+24508,11072,
+24509,5071,
+24510,11614,
+24511,12430,
+24512,12753,
+24513,12754,
+24515,720,
+24516,17642,
+24517,832,
+24521,6055,
+24524,1178,
+24525,1180,
+24527,6123,
+24528,6271,
+24529,6270,
+24530,6269,
+24532,6122,
+24533,6121,
+24534,975,
+24535,1179,
+24536,1177,
+24537,974,
+24539,14922,
+24541,1471,
+24542,6522,
+24543,16815,
+24544,1472,
+24545,6276,
+24547,6278,
+24548,6277,
+24549,6523,
+24552,6273,
+24554,1184,
+24555,1182,
+24557,6272,
+24558,6274,
+24559,6280,
+24561,1181,
+24563,6275,
+24564,6284,
+24565,1474,
+24567,6281,
+24568,1183,
+24570,6279,
+24571,6282,
+24573,1473,
+24575,1475,
+24576,6283,
+24585,6543,
+24586,6530,
+24587,6528,
+24588,6542,
+24589,6537,
+24590,1827,
+24591,1476,
+24592,6538,
+24593,6541,
+24594,1823,
+24595,6540,
+24596,1477,
+24597,1482,
+24598,1480,
+24599,6531,
+24601,6526,
+24602,6533,
+24603,1487,
+24604,6544,
+24605,1824,
+24606,6534,
+24608,1825,
+24609,1483,
+24610,6536,
+24611,16773,
+24612,6887,
+24613,1826,
+24614,6525,
+24615,1484,
+24616,1828,
+24617,1485,
+24618,1481,
+24619,1486,
+24620,6535,
+24621,6524,
+24622,6539,
+24623,1478,
+24625,16737,
+24626,6527,
+24627,6532,
+24628,6529,
+24629,1479,
+24631,6873,
+24633,6874,
+24635,17747,
+24640,6884,
+24641,7314,
+24642,6885,
+24643,1834,
+24644,6888,
+24645,6878,
+24646,1833,
+24647,6880,
+24649,6881,
+24650,16500,
+24652,6883,
+24653,1829,
+24656,2229,
+24658,14060,
+24659,6879,
+24660,6875,
+24661,2230,
+24664,6889,
+24665,2226,
+24666,7312,
+24667,6882,
+24669,7311,
+24670,6877,
+24671,6886,
+24674,1832,
+24675,2227,
+24676,1838,
+24677,2228,
+24678,6890,
+24679,7313,
+24680,1831,
+24681,2232,
+24682,1837,
+24683,1836,
+24684,1835,
+24685,2231,
+24686,6891,
+24687,2233,
+24688,1830,
+24690,6876,
+24693,14934,
+24695,16389,
+24702,14919,
+24703,2690,
+24704,7317,
+24705,7319,
+24707,7321,
+24708,2234,
+24709,2240,
+24710,7898,
+24711,7325,
+24712,7316,
+24713,2692,
+24714,7896,
+24716,2239,
+24717,2237,
+24718,7327,
+24720,7897,
+24722,7318,
+24724,2238,
+24725,7322,
+24726,2241,
+24727,7324,
+24730,2236,
+24731,7323,
+24732,7326,
+24733,7320,
+24734,16746,
+24735,2235,
+24736,2693,
+24738,7315,
+24739,2691,
+24740,16385,
+24743,15068,
+24744,2694,
+24752,7900,
+24753,7909,
+24754,3143,
+24755,16748,
+24756,2696,
+24757,2701,
+24758,3144,
+24759,7911,
+24760,2708,
+24761,8500,
+24762,7901,
+24763,2700,
+24764,2703,
+24765,2698,
+24766,7899,
+24767,7913,
+24768,7916,
+24769,8515,
+24771,7914,
+24772,8504,
+24773,2699,
+24774,2706,
+24775,2710,
+24776,7908,
+24777,8499,
+24778,7912,
+24779,2695,
+24780,8501,
+24781,7915,
+24782,8503,
+24783,7904,
+24785,3141,
+24787,7902,
+24788,7903,
+24789,2705,
+24791,17973,
+24792,2704,
+24793,7906,
+24794,2709,
+24795,7910,
+24796,2702,
+24797,7907,
+24798,15820,
+24799,2707,
+24800,3145,
+24801,3142,
+24802,8502,
+24803,15733,
+24804,7905,
+24806,2697,
+24807,15748,
+24808,15739,
+24809,16393,
+24816,3150,
+24817,3154,
+24818,8506,
+24819,3595,
+24820,3152,
+24821,8510,
+24822,3156,
+24823,9172,
+24824,8512,
+24825,3597,
+24826,3148,
+24827,3151,
+24828,8513,
+24829,16296,
+24830,8514,
+24831,8520,
+24832,3158,
+24833,3598,
+24835,8516,
+24836,8521,
+24837,8509,
+24838,3608,
+24839,15413,
+24840,3599,
+24841,3157,
+24842,8507,
+24843,8522,
+24844,15495,
+24845,3607,
+24846,3155,
+24847,3592,
+24848,8519,
+24850,3159,
+24851,8511,
+24852,8505,
+24853,3149,
+24854,8508,
+24856,8517,
+24857,16118,
+24858,3591,
+24859,3596,
+24860,3146,
+24861,8518,
+24863,3594,
+24867,3147,
+24871,3606,
+24872,9859,
+24873,9183,
+24875,9175,
+24876,9858,
+24878,9179,
+24879,9181,
+24880,16183,
+24882,9178,
+24884,3605,
+24886,9177,
+24887,3609,
+24891,9874,
+24893,17974,
+24894,3604,
+24895,4049,
+24896,9184,
+24897,9860,
+24898,16756,
+24900,3602,
+24901,9176,
+24902,9180,
+24903,4048,
+24904,3593,
+24905,9173,
+24906,9174,
+24907,4050,
+24908,3601,
+24909,3603,
+24910,3600,
+24911,9182,
+24912,15410,
+24914,9864,
+24915,9865,
+24916,9870,
+24917,4425,
+24918,9877,
+24920,4056,
+24921,16314,
+24922,4055,
+24923,9872,
+24924,16774,
+24925,4424,
+24926,9861,
+24927,4054,
+24928,18764,
+24929,9876,
+24930,4052,
+24931,4053,
+24932,16755,
+24933,9873,
+24934,10462,
+24935,4422,
+24936,3153,
+24938,9875,
+24939,4429,
+24940,9867,
+24942,4423,
+24943,16320,
+24944,4428,
+24945,9862,
+24946,9866,
+24947,9863,
+24948,9869,
+24949,4057,
+24950,4421,
+24951,4051,
+24953,10448,
+24954,9871,
+24956,4427,
+24957,16317,
+24958,4430,
+24960,9868,
+24961,16759,
+24962,4426,
+24963,10447,
+24967,16762,
+24969,10452,
+24970,4785,
+24971,10446,
+24972,11085,
+24973,10461,
+24974,4434,
+24976,4432,
+24977,4783,
+24978,10458,
+24979,10454,
+24980,4438,
+24981,15840,
+24982,11076,
+24984,14933,
+24985,14932,
+24986,4436,
+24987,10453,
+24988,16386,
+24989,11074,
+24991,10457,
+24993,10460,
+24994,10451,
+24996,4437,
+24999,4431,
+25000,11075,
+25001,4784,
+25002,10459,
+25003,4433,
+25004,4435,
+25005,10456,
+25006,4439,
+25007,10455,
+25008,10450,
+25009,10449,
+25010,4782,
+25011,10463,
+25012,11078,
+25013,11616,
+25014,4787,
+25015,17977,
+25016,11084,
+25017,17343,
+25018,11082,
+25020,11617,
+25022,4788,
+25023,11083,
+25024,14928,
+25025,11080,
+25026,5073,
+25027,11615,
+25029,11077,
+25030,11079,
+25031,5074,
+25032,4790,
+25033,5072,
+25034,4789,
+25035,5076,
+25036,11081,
+25037,4786,
+25039,17978,
+25040,16769,
+25043,16766,
+25046,12070,
+25048,12062,
+25050,14513,
+25054,11623,
+25055,12063,
+25056,11619,
+25058,16325,
+25059,5328,
+25060,11621,
+25061,11620,
+25062,5075,
+25063,11618,
+25064,11622,
+25065,12071,
+25066,12067,
+25067,12069,
+25069,12064,
+25070,12065,
+25072,12068,
+25073,12066,
+25074,5502,
+25077,5505,
+25078,5504,
+25079,5503,
+25080,5652,
+25081,12755,
+25082,5653,
+25083,12431,
+25084,5744,
+25085,13009,
+25086,5745,
+25087,5828,
+25088,5880,
+25089,13335,
+25091,13336,
+25092,13337,
+25095,13619,
+25096,721,
+25097,6056,
+25098,833,
+25100,977,
+25101,978,
+25102,976,
+25104,979,
+25105,1186,
+25106,1185,
+25108,6545,
+25109,1489,
+25110,1488,
+25113,7328,
+25114,2711,
+25115,2712,
+25119,3160,
+25120,9185,
+25121,3610,
+25122,3611,
+25123,9187,
+25124,9189,
+25125,9188,
+25127,9879,
+25129,9878,
+25130,4058,
+25131,9880,
+25132,17980,
+25133,10464,
+25134,4440,
+25136,4791,
+25138,5077,
+25139,5329,
+25140,5078,
+25142,722,
+25143,17690,
+25145,16322,
+25146,6285,
+25149,6546,
+25150,1491,
+25151,1490,
+25152,1492,
+25153,1839,
+25154,6892,
+25155,6893,
+25158,7329,
+25159,2242,
+25160,2713,
+25161,3161,
+25162,8523,
+25163,723,
+25164,17644,
+25165,657,
+25166,724,
+25168,6057,
+25169,837,
+25170,836,
+25171,834,
+25172,835,
+25176,982,
+25177,6130,
+25178,6132,
+25179,981,
+25180,6124,
+25182,6125,
+25184,6131,
+25185,6127,
+25186,6129,
+25187,980,
+25188,6126,
+25189,6133,
+25190,6128,
+25192,16149,
+25197,1193,
+25198,1202,
+25199,1200,
+25200,6295,
+25201,6292,
+25202,6300,
+25203,1198,
+25204,6301,
+25206,1191,
+25207,6298,
+25209,1197,
+25210,6294,
+25211,6293,
+25212,1195,
+25213,6299,
+25214,1196,
+25215,1493,
+25216,1190,
+25217,6296,
+25218,16262,
+25219,6286,
+25220,1187,
+25221,16208,
+25222,1206,
+25223,6291,
+25224,6297,
+25225,1192,
+25226,1194,
+25228,6287,
+25230,6288,
+25231,6289,
+25232,17344,
+25233,1205,
+25234,1199,
+25235,1204,
+25236,6290,
+25237,1203,
+25238,1189,
+25239,1188,
+25240,1201,
+25245,16022,
+25252,14953,
+25254,16321,
+25256,1507,
+25257,6558,
+25258,6551,
+25259,1502,
+25260,1521,
+25261,6547,
+25262,6554,
+25263,6556,
+25264,6559,
+25265,1516,
+25267,6555,
+25268,6548,
+25269,1514,
+25270,6552,
+25272,6560,
+25273,1499,
+25275,6557,
+25276,1509,
+25277,1508,
+25278,6550,
+25279,1497,
+25282,1498,
+25283,15759,
+25284,1496,
+25285,16778,
+25286,1520,
+25287,1512,
+25288,1506,
+25289,1494,
+25290,6553,
+25291,1505,
+25292,1495,
+25293,1513,
+25294,1522,
+25295,6894,
+25296,1510,
+25297,6549,
+25298,1500,
+25299,1503,
+25300,1504,
+25301,16780,
+25302,1518,
+25303,1519,
+25304,1517,
+25305,1511,
+25306,1515,
+25307,1501,
+25308,1840,
+25311,16412,
+25317,17981,
+25323,6900,
+25324,1852,
+25325,1844,
+25326,1846,
+25327,1851,
+25328,6912,
+25329,1849,
+25330,7330,
+25331,2243,
+25332,1854,
+25333,6897,
+25334,6905,
+25335,1850,
+25336,6904,
+25337,6901,
+25338,6909,
+25339,6911,
+25340,1843,
+25341,1847,
+25342,1853,
+25343,2245,
+25344,6906,
+25345,1845,
+25346,1856,
+25347,6899,
+25351,1848,
+25352,2244,
+25353,1842,
+25355,6896,
+25356,6903,
+25357,6895,
+25358,6898,
+25359,6902,
+25360,7331,
+25361,1855,
+25363,6907,
+25364,6908,
+25365,6910,
+25366,1841,
+25368,17345,
+25384,2259,
+25385,7343,
+25386,2257,
+25387,2258,
+25388,7333,
+25389,7349,
+25390,16093,
+25391,2248,
+25393,14949,
+25394,7917,
+25395,7351,
+25396,7345,
+25397,16150,
+25398,7336,
+25399,14947,
+25400,7354,
+25401,7339,
+25402,2254,
+25403,7940,
+25404,7342,
+25405,2256,
+25406,2247,
+25408,7356,
+25409,7344,
+25410,2250,
+25411,7337,
+25412,7334,
+25413,7335,
+25414,2251,
+25415,7350,
+25416,7357,
+25417,2253,
+25418,7341,
+25419,7340,
+25420,2261,
+25421,2260,
+25422,2246,
+25423,2252,
+25424,2255,
+25425,7353,
+25428,7347,
+25429,2249,
+25430,7332,
+25431,7355,
+25432,7346,
+25433,7348,
+25434,7352,
+25444,16327,
+25445,7918,
+25447,2721,
+25448,2741,
+25449,2740,
+25451,2729,
+25452,16782,
+25453,7936,
+25454,7932,
+25455,7929,
+25456,7947,
+25457,2724,
+25458,2716,
+25461,7934,
+25462,3177,
+25463,2720,
+25464,7942,
+25465,17255,
+25466,2742,
+25467,2739,
+25468,7938,
+25469,7921,
+25471,16203,
+25472,2738,
+25473,7944,
+25474,7920,
+25475,2727,
+25476,2731,
+25477,7943,
+25479,7930,
+25480,2732,
+25481,2726,
+25482,7919,
+25483,16776,
+25484,3163,
+25485,7946,
+25486,7928,
+25487,2737,
+25488,7931,
+25489,7945,
+25490,2736,
+25492,8524,
+25494,2717,
+25495,7926,
+25496,2722,
+25497,2733,
+25499,2728,
+25500,7935,
+25501,7925,
+25502,7923,
+25503,7941,
+25504,2714,
+25505,2734,
+25506,2718,
+25507,3162,
+25508,7939,
+25509,2719,
+25511,2715,
+25512,2730,
+25513,2725,
+25514,2723,
+25515,7927,
+25516,2735,
+25517,7924,
+25518,7937,
+25519,7933,
+25520,8526,
+25521,8525,
+25529,16029,
+25533,7922,
+25534,8542,
+25536,3165,
+25537,18088,
+25538,8548,
+25539,8531,
+25540,8545,
+25541,9190,
+25542,3168,
+25543,8549,
+25544,8552,
+25545,3167,
+25546,8534,
+25547,8551,
+25548,8550,
+25549,3169,
+25550,8527,
+25551,3164,
+25552,3172,
+25553,14950,
+25554,3170,
+25555,8547,
+25557,8537,
+25558,3174,
+25559,8554,
+25560,8546,
+25561,8555,
+25562,3182,
+25563,3180,
+25564,8544,
+25565,8543,
+25566,15968,
+25567,8541,
+25568,8535,
+25569,3173,
+25570,17985,
+25571,3171,
+25572,7338,
+25573,8528,
+25574,18591,
+25575,9220,
+25576,8529,
+25577,3166,
+25578,3179,
+25579,9192,
+25581,3175,
+25582,3176,
+25583,8530,
+25584,8553,
+25585,9191,
+25586,8538,
+25587,8533,
+25588,3178,
+25589,8539,
+25590,8536,
+25592,16786,
+25593,3183,
+25595,17986,
+25596,16028,
+25598,16030,
+25606,3626,
+25607,17987,
+25609,9195,
+25610,9214,
+25611,9219,
+25612,9207,
+25613,3622,
+25614,9224,
+25615,3619,
+25616,9193,
+25618,9194,
+25619,3612,
+25620,3621,
+25621,9201,
+25622,3624,
+25623,3625,
+25624,9202,
+25626,9215,
+25627,9221,
+25628,3620,
+25630,3614,
+25631,9200,
+25632,9196,
+25633,9223,
+25634,9205,
+25635,9206,
+25636,9197,
+25637,9217,
+25638,9208,
+25639,9218,
+25640,9210,
+25642,3615,
+25643,9881,
+25644,3618,
+25645,3616,
+25646,9222,
+25647,9213,
+25648,9209,
+25650,17881,
+25651,9198,
+25652,4068,
+25653,9212,
+25654,3623,
+25655,9204,
+25656,16785,
+25657,9203,
+25658,16797,
+25659,14955,
+25661,3617,
+25662,3613,
+25663,9902,
+25664,9216,
+25665,9211,
+25667,9199,
+25675,9897,
+25677,9882,
+25678,9893,
+25680,9900,
+25681,4066,
+25682,3181,
+25683,9898,
+25684,4061,
+25688,4060,
+25689,9905,
+25690,17346,
+25691,9883,
+25692,9896,
+25693,9884,
+25694,9895,
+25695,4064,
+25696,9899,
+25697,8540,
+25701,9906,
+25702,9891,
+25703,4067,
+25704,10478,
+25705,4441,
+25707,9904,
+25708,9903,
+25709,4069,
+25710,10465,
+25711,4442,
+25712,10466,
+25713,14939,
+25714,9887,
+25715,9888,
+25716,9885,
+25717,9890,
+25718,9886,
+25719,9907,
+25720,4063,
+25721,4443,
+25722,4065,
+25723,4070,
+25724,17260,
+25725,9889,
+25727,9901,
+25730,9894,
+25733,10469,
+25735,4059,
+25736,4446,
+25737,11092,
+25738,10474,
+25739,10473,
+25740,10475,
+25741,17187,
+25743,10472,
+25744,4447,
+25745,17347,
+25746,4453,
+25747,4450,
+25749,4451,
+25750,10467,
+25751,10470,
+25752,10480,
+25753,4459,
+25754,4457,
+25756,10471,
+25757,8532,
+25758,4444,
+25759,10477,
+25760,10468,
+25762,4460,
+25763,10476,
+25764,4062,
+25765,4449,
+25766,9892,
+25769,4452,
+25771,4456,
+25772,4458,
+25773,4455,
+25774,4454,
+25775,17121,
+25776,4448,
+25777,10479,
+25778,4445,
+25779,4461,
+25780,17216,
+25782,14948,
+25787,4795,
+25788,4796,
+25789,11091,
+25790,4805,
+25791,4802,
+25792,17989,
+25793,4793,
+25794,4800,
+25795,11093,
+25796,4798,
+25797,4792,
+25799,4799,
+25801,11090,
+25802,5080,
+25803,4794,
+25805,4801,
+25806,5079,
+25807,11089,
+25808,11088,
+25810,4803,
+25811,16131,
+25812,4804,
+25814,11087,
+25815,11086,
+25816,5081,
+25817,11096,
+25818,4797,
+25819,11094,
+25821,17182,
+25824,5082,
+25825,16793,
+25826,5087,
+25827,11626,
+25828,11628,
+25829,16794,
+25830,5084,
+25831,14248,
+25832,11629,
+25833,11625,
+25834,17226,
+25835,11627,
+25836,5085,
+25837,5088,
+25839,11624,
+25840,5083,
+25841,5086,
+25842,5331,
+25843,11095,
+25844,5330,
+25847,5336,
+25848,12075,
+25850,5334,
+25851,5335,
+25852,12078,
+25853,12074,
+25854,5332,
+25855,12072,
+25856,5506,
+25857,12076,
+25859,12077,
+25860,12073,
+25862,5333,
+25863,12432,
+25865,12435,
+25866,17718,
+25868,12436,
+25869,12434,
+25870,12437,
+25871,5507,
+25872,12433,
+25873,15017,
+25875,12759,
+25876,5655,
+25877,12758,
+25878,12757,
+25879,12756,
+25880,5654,
+25881,5656,
+25883,13010,
+25884,5747,
+25885,5746,
+25886,16775,
+25887,16064,
+25888,13186,
+25889,13185,
+25890,13188,
+25891,5881,
+25892,5829,
+25893,13339,
+25894,13187,
+25897,13338,
+25898,5883,
+25899,5882,
+25900,5921,
+25901,13444,
+25902,13514,
+25903,725,
+25904,15970,
+25906,8556,
+25907,11097,
+25908,556,
+25909,17645,
+25910,983,
+25911,6134,
+25912,1209,
+25913,1207,
+25915,1208,
+25917,6561,
+25918,1523,
+25919,1857,
+25921,6913,
+25923,6914,
+25925,1858,
+25926,7359,
+25928,2262,
+25929,2263,
+25930,7358,
+25933,16799,
+25935,2749,
+25937,2745,
+25939,7948,
+25940,2752,
+25941,2751,
+25942,2744,
+25943,2747,
+25944,2750,
+25945,2746,
+25948,8560,
+25949,2743,
+25950,3184,
+25951,16805,
+25954,3186,
+25955,3187,
+25956,8559,
+25957,8562,
+25958,3185,
+25959,8557,
+25960,8561,
+25962,8558,
+25963,14956,
+25964,3627,
+25965,16804,
+25967,9225,
+25970,4071,
+25971,9908,
+25972,4806,
+25973,4462,
+25974,10481,
+25975,4463,
+25976,4464,
+25977,10483,
+25978,10482,
+25979,10484,
+25980,11099,
+25983,11098,
+25984,11631,
+25985,11630,
+25986,5089,
+25987,5090,
+25988,12438,
+25989,16803,
+25990,17992,
+25991,726,
+25992,16651,
+25993,17748,
+25996,8563,
+26000,3189,
+26001,3188,
+26002,9226,
+26004,12079,
+26005,5748,
+26006,13340,
+26007,727,
+26009,2264,
+26011,2754,
+26012,2753,
+26013,8564,
+26014,8565,
+26015,3628,
+26016,9909,
+26017,4072,
+26018,11100,
+26020,728,
+26021,838,
+26023,1524,
+26024,6562,
+26026,6915,
+26027,1859,
+26028,2755,
+26030,8566,
+26031,3190,
+26032,3629,
+26034,10485,
+26035,10486,
+26037,16807,
+26038,11632,
+26039,5337,
+26040,13515,
+26041,729,
+26043,6563,
+26044,1525,
+26045,1860,
+26046,15931,
+26047,6916,
+26049,2265,
+26050,7363,
+26051,7361,
+26052,7362,
+26053,2266,
+26054,7360,
+26059,2757,
+26060,2758,
+26061,7949,
+26062,2759,
+26063,2756,
+26064,8567,
+26065,16810,
+26066,8568,
+26067,9227,
+26068,15272,
+26070,4074,
+26071,4073,
+26074,11633,
+26075,12080,
+26077,12440,
+26078,12439,
+26079,12760,
+26080,557,
+26081,6025,
+26082,1861,
+26083,16814,
+26085,730,
+26086,839,
+26088,985,
+26089,984,
+26092,986,
+26093,987,
+26094,6136,
+26095,6135,
+26096,6302,
+26097,1210,
+26098,6305,
+26099,6304,
+26100,6303,
+26101,6306,
+26106,1526,
+26107,6569,
+26108,6565,
+26109,6574,
+26111,17994,
+26112,1533,
+26114,1531,
+26115,6570,
+26116,6566,
+26117,6573,
+26118,1530,
+26119,1537,
+26120,6568,
+26121,6564,
+26122,1536,
+26123,6571,
+26124,1529,
+26125,6572,
+26126,1532,
+26127,1534,
+26128,6576,
+26129,6575,
+26130,6567,
+26131,1528,
+26132,1527,
+26133,1535,
+26136,16817,
+26140,6921,
+26141,6927,
+26142,14995,
+26143,1867,
+26144,1864,
+26145,6918,
+26146,6923,
+26147,17045,
+26148,1870,
+26149,1862,
+26150,6922,
+26151,1865,
+26152,1868,
+26155,6925,
+26157,1863,
+26158,6930,
+26159,1866,
+26160,14989,
+26161,1869,
+26162,6919,
+26163,6924,
+26164,6928,
+26165,6920,
+26166,6917,
+26169,6929,
+26170,6926,
+26177,2274,
+26178,2267,
+26179,2270,
+26180,16820,
+26181,2273,
+26183,7366,
+26184,15769,
+26185,2268,
+26186,7364,
+26187,16823,
+26188,2272,
+26191,2269,
+26193,7367,
+26194,2271,
+26195,17995,
+26199,16539,
+26201,7953,
+26202,2761,
+26203,7952,
+26204,7954,
+26205,2760,
+26206,2765,
+26207,7365,
+26209,7951,
+26210,7955,
+26211,14992,
+26212,2762,
+26213,7950,
+26214,2764,
+26215,16825,
+26216,2763,
+26218,8575,
+26219,14987,
+26220,8570,
+26222,3191,
+26223,3195,
+26224,3192,
+26225,8573,
+26226,8576,
+26227,16827,
+26228,3193,
+26230,3194,
+26231,3199,
+26232,9236,
+26233,8574,
+26234,3197,
+26235,8571,
+26236,8569,
+26237,18075,
+26238,3198,
+26240,8572,
+26244,3635,
+26245,16738,
+26246,9228,
+26247,3632,
+26248,3633,
+26249,3631,
+26250,9233,
+26251,9232,
+26252,9229,
+26253,3637,
+26254,14985,
+26256,9231,
+26257,3196,
+26258,17997,
+26260,9235,
+26261,9230,
+26262,3634,
+26263,3630,
+26264,3636,
+26265,9234,
+26266,15677,
+26269,4077,
+26271,9912,
+26272,9911,
+26273,9910,
+26274,4075,
+26276,16570,
+26280,4076,
+26281,10489,
+26282,10492,
+26283,4466,
+26285,18760,
+26286,4465,
+26287,10493,
+26288,10488,
+26289,4468,
+26290,10490,
+26291,16565,
+26292,4467,
+26293,10487,
+26294,15891,
+26295,10491,
+26296,4812,
+26297,4809,
+26298,11109,
+26299,11108,
+26301,11107,
+26302,11102,
+26303,15770,
+26304,11103,
+26308,4810,
+26310,4807,
+26311,4811,
+26312,11101,
+26313,4808,
+26314,11104,
+26315,11105,
+26316,11110,
+26317,16568,
+26318,14967,
+26319,11106,
+26322,11634,
+26326,5092,
+26328,12083,
+26329,5091,
+26330,12081,
+26331,12082,
+26332,5338,
+26333,5509,
+26334,12441,
+26336,5508,
+26339,12762,
+26340,12763,
+26342,5657,
+26344,12761,
+26345,5749,
+26347,13341,
+26348,5884,
+26349,13445,
+26350,13446,
+26352,731,
+26353,16004,
+26354,988,
+26355,989,
+26356,1211,
+26358,6577,
+26359,1871,
+26360,2275,
+26361,2766,
+26364,2591,
+26366,3200,
+26367,3201,
+26368,3056,
+26369,8577,
+26370,16836,
+26371,3638,
+26372,9914,
+26373,9913,
+26376,732,
+26377,990,
+26378,6578,
+26379,1539,
+26380,16354,
+26381,1538,
+26382,15777,
+26383,6931,
+26384,6932,
+26386,7368,
+26387,7369,
+26388,2276,
+26389,2277,
+26390,17999,
+26391,2278,
+26392,7956,
+26395,2768,
+26397,3203,
+26398,15755,
+26399,3202,
+26400,9237,
+26401,9506,
+26402,9915,
+26403,11111,
+26405,14239,
+26406,5339,
+26407,5658,
+26408,733,
+26410,842,
+26411,843,
+26412,841,
+26413,844,
+26414,840,
+26417,993,
+26419,6144,
+26420,992,
+26421,994,
+26422,15937,
+26424,6139,
+26425,6138,
+26426,6141,
+26427,6140,
+26428,6143,
+26429,991,
+26430,6137,
+26431,6142,
+26436,16411,
+26437,6307,
+26438,1221,
+26439,6308,
+26440,6312,
+26441,1220,
+26443,6316,
+26444,6311,
+26445,6314,
+26446,1213,
+26447,1214,
+26448,1215,
+26449,1216,
+26451,1223,
+26453,6310,
+26454,1218,
+26455,1224,
+26457,6309,
+26458,6315,
+26460,1217,
+26461,6313,
+26462,1219,
+26463,1212,
+26464,1222,
+26465,15718,
+26466,16843,
+26471,16842,
+26474,1560,
+26476,6580,
+26477,1540,
+26479,1550,
+26480,1551,
+26481,1543,
+26482,1561,
+26483,1545,
+26484,6588,
+26485,1556,
+26486,6583,
+26487,1546,
+26488,6598,
+26489,6599,
+26490,6591,
+26491,6584,
+26492,1559,
+26493,6596,
+26494,1554,
+26495,1552,
+26497,6597,
+26499,6595,
+26500,6587,
+26501,6579,
+26502,6586,
+26503,1547,
+26505,1553,
+26507,1541,
+26508,6590,
+26509,6589,
+26510,6581,
+26511,18113,
+26512,1555,
+26513,6593,
+26514,6582,
+26515,1558,
+26516,6600,
+26517,1542,
+26519,1549,
+26520,6585,
+26521,6594,
+26522,1557,
+26524,1544,
+26525,1548,
+26527,6592,
+26528,15738,
+26532,18001,
+26540,16867,
+26542,6964,
+26543,1879,
+26544,1892,
+26545,16884,
+26546,6959,
+26547,6949,
+26548,1885,
+26549,6947,
+26550,1878,
+26551,6942,
+26552,1888,
+26553,6955,
+26554,6936,
+26555,6938,
+26559,14330,
+26560,6941,
+26561,6933,
+26562,6954,
+26563,6970,
+26564,1883,
+26565,6943,
+26566,6961,
+26568,6935,
+26569,6968,
+26570,6969,
+26571,6972,
+26572,6963,
+26573,6948,
+26574,6956,
+26575,1889,
+26576,1876,
+26577,1884,
+26578,1896,
+26579,1873,
+26580,1875,
+26582,15192,
+26583,16846,
+26584,6940,
+26585,1893,
+26586,1886,
+26587,6966,
+26588,6937,
+26589,1895,
+26590,1890,
+26591,6946,
+26594,1894,
+26595,6953,
+26596,6945,
+26597,1887,
+26598,6965,
+26599,6957,
+26601,1881,
+26602,6971,
+26603,6944,
+26604,1877,
+26605,6962,
+26606,6952,
+26607,1882,
+26608,6958,
+26609,1874,
+26610,6934,
+26611,1891,
+26612,2293,
+26613,1880,
+26614,6951,
+26615,6950,
+26616,6939,
+26617,14742,
+26618,6967,
+26620,6960,
+26622,17749,
+26623,1872,
+26624,17351,
+26625,16851,
+26626,16328,
+26627,15722,
+26628,17750,
+26637,17025,
+26640,14748,
+26642,7389,
+26643,2300,
+26644,7390,
+26646,7378,
+26647,2289,
+26648,2301,
+26650,7371,
+26651,16498,
+26652,7380,
+26653,7388,
+26654,18114,
+26655,7370,
+26656,7397,
+26657,2279,
+26658,16848,
+26661,7396,
+26662,7391,
+26664,7392,
+26665,2287,
+26666,2298,
+26667,7382,
+26669,7383,
+26670,7393,
+26671,7384,
+26673,7379,
+26674,7373,
+26675,7374,
+26676,7387,
+26677,7381,
+26678,15918,
+26679,16925,
+26680,2280,
+26681,2284,
+26682,7395,
+26683,7375,
+26684,2296,
+26685,2292,
+26686,16711,
+26688,2295,
+26689,2302,
+26690,2285,
+26691,2297,
+26692,7386,
+26693,2299,
+26694,2282,
+26695,15339,
+26696,2281,
+26697,7372,
+26698,18003,
+26699,7376,
+26700,2290,
+26701,7394,
+26702,7385,
+26703,7377,
+26704,2294,
+26705,2291,
+26707,2283,
+26708,2286,
+26709,15760,
+26710,14356,
+26717,16854,
+26725,17751,
+26731,7977,
+26733,7961,
+26734,7962,
+26735,7966,
+26737,7981,
+26738,7978,
+26740,7971,
+26741,7970,
+26742,2775,
+26743,7974,
+26744,7989,
+26745,7957,
+26747,7990,
+26748,7976,
+26749,7994,
+26750,7982,
+26751,2774,
+26752,7980,
+26753,2769,
+26754,2790,
+26755,2780,
+26756,18004,
+26757,2784,
+26758,2783,
+26759,7958,
+26760,18103,
+26761,7987,
+26762,7993,
+26763,7985,
+26764,7992,
+26767,7973,
+26768,7959,
+26769,7991,
+26770,7975,
+26771,2772,
+26772,2785,
+26774,7984,
+26775,2778,
+26776,15018,
+26779,7983,
+26780,7960,
+26781,2786,
+26783,2788,
+26784,7986,
+26785,2789,
+26786,2771,
+26787,7967,
+26788,7988,
+26790,16612,
+26791,2777,
+26792,2787,
+26793,7969,
+26794,7979,
+26795,7964,
+26796,7968,
+26797,2782,
+26798,7963,
+26799,2770,
+26800,2779,
+26801,2776,
+26802,7972,
+26803,2288,
+26804,8600,
+26805,2773,
+26806,15006,
+26809,15636,
+26813,17020,
+26819,16860,
+26820,2781,
+26821,15406,
+26822,8603,
+26823,8625,
+26824,8614,
+26825,3223,
+26826,17131,
+26827,3218,
+26828,8597,
+26829,3219,
+26830,8613,
+26832,8606,
+26833,8619,
+26834,3215,
+26835,8579,
+26836,8621,
+26837,3205,
+26838,8587,
+26839,3208,
+26840,3207,
+26842,3224,
+26844,8581,
+26845,8615,
+26846,8616,
+26847,3210,
+26848,3206,
+26849,8595,
+26851,3217,
+26852,8590,
+26854,8617,
+26855,3213,
+26856,8609,
+26857,8622,
+26858,8584,
+26859,8589,
+26860,8583,
+26862,3212,
+26863,8602,
+26864,9259,
+26865,8585,
+26866,3216,
+26867,8594,
+26868,8618,
+26869,3211,
+26870,8591,
+26871,8588,
+26872,8605,
+26873,3214,
+26874,3204,
+26875,3226,
+26876,8608,
+26877,8607,
+26880,16863,
+26881,16862,
+26882,17147,
+26883,17052,
+26884,8580,
+26885,3209,
+26886,8620,
+26887,8596,
+26888,8598,
+26889,18008,
+26890,8611,
+26891,8610,
+26892,8578,
+26893,3220,
+26894,3222,
+26895,8586,
+26896,8593,
+26897,8601,
+26898,3221,
+26899,8592,
+26900,8604,
+26901,8623,
+26903,8612,
+26904,15778,
+26906,15744,
+26907,14269,
+26917,8624,
+26922,8582,
+26924,16184,
+26927,9279,
+26928,3646,
+26930,9277,
+26931,9256,
+26932,9261,
+26933,9254,
+26934,16871,
+26935,9273,
+26936,9240,
+26937,9247,
+26939,9271,
+26940,9281,
+26941,9257,
+26942,16470,
+26943,9244,
+26944,9263,
+26945,9268,
+26946,9248,
+26947,18009,
+26948,9265,
+26949,9245,
+26950,17775,
+26952,9252,
+26953,9253,
+26954,3648,
+26955,9272,
+26956,9270,
+26958,9241,
+26959,9275,
+26961,9276,
+26962,9278,
+26963,3652,
+26964,3644,
+26965,15750,
+26966,7965,
+26967,9249,
+26968,9267,
+26969,9250,
+26970,3641,
+26971,3657,
+26972,9274,
+26973,3655,
+26974,3651,
+26975,9239,
+26976,3643,
+26977,16868,
+26978,9242,
+26979,3656,
+26980,18011,
+26981,9258,
+26982,9238,
+26983,15637,
+26984,3649,
+26985,9262,
+26986,9246,
+26987,3650,
+26988,9255,
+26989,3640,
+26990,3225,
+26991,9264,
+26992,8599,
+26993,9243,
+26994,14957,
+26995,16859,
+26996,9269,
+26997,3645,
+26998,9266,
+26999,3642,
+27000,9260,
+27001,3653,
+27002,9251,
+27003,9280,
+27008,16190,
+27010,3647,
+27011,9391,
+27013,18013,
+27014,3654,
+27018,15732,
+27021,9929,
+27022,9927,
+27024,9949,
+27025,9925,
+27027,9943,
+27028,3639,
+27029,4080,
+27030,9921,
+27031,9948,
+27032,16872,
+27033,9926,
+27034,9940,
+27035,4085,
+27036,4078,
+27038,9946,
+27039,18012,
+27040,9919,
+27041,9945,
+27042,14128,
+27043,4096,
+27044,9936,
+27045,9952,
+27046,4094,
+27047,9928,
+27048,4079,
+27049,9930,
+27050,9944,
+27051,4088,
+27052,9923,
+27053,4092,
+27054,4082,
+27055,9932,
+27056,9922,
+27057,9916,
+27058,16374,
+27059,9942,
+27060,4089,
+27061,9951,
+27062,9917,
+27063,4086,
+27065,9938,
+27067,4087,
+27068,9924,
+27069,9935,
+27070,9931,
+27071,9933,
+27072,16221,
+27073,4081,
+27074,9950,
+27075,4095,
+27076,9934,
+27078,9953,
+27081,9918,
+27082,9939,
+27083,4084,
+27084,4093,
+27085,4091,
+27086,9920,
+27087,9941,
+27088,4090,
+27089,14831,
+27091,4083,
+27092,9937,
+27093,15932,
+27094,18014,
+27097,9947,
+27105,16856,
+27106,10505,
+27108,10501,
+27109,10497,
+27110,10517,
+27111,10514,
+27112,4471,
+27113,15761,
+27115,10521,
+27116,10504,
+27117,4482,
+27118,10511,
+27121,10500,
+27122,10510,
+27123,4479,
+27124,10530,
+27126,10527,
+27127,10513,
+27128,10498,
+27129,16877,
+27130,16839,
+27131,10518,
+27132,10520,
+27133,4475,
+27134,10508,
+27135,10503,
+27136,10494,
+27137,4472,
+27138,4480,
+27139,15913,
+27140,10523,
+27141,4481,
+27142,10495,
+27143,10529,
+27144,10516,
+27145,10522,
+27146,4478,
+27147,16857,
+27148,15696,
+27149,10519,
+27151,10526,
+27153,4483,
+27155,4477,
+27156,10512,
+27157,10499,
+27158,10531,
+27159,10496,
+27160,10524,
+27161,4474,
+27162,15646,
+27163,10506,
+27164,15208,
+27165,10507,
+27166,4473,
+27167,4470,
+27168,10502,
+27169,4476,
+27171,4469,
+27173,10525,
+27174,10528,
+27175,10509,
+27176,11124,
+27179,15682,
+27180,17067,
+27181,15135,
+27186,11116,
+27187,15012,
+27188,11112,
+27189,4825,
+27192,4814,
+27193,4819,
+27194,4815,
+27195,11126,
+27196,11137,
+27197,4813,
+27198,11118,
+27199,11127,
+27200,10515,
+27201,11128,
+27204,4820,
+27205,16880,
+27206,11143,
+27207,4824,
+27208,4827,
+27209,11114,
+27211,4823,
+27212,15019,
+27213,11141,
+27214,11142,
+27215,11132,
+27216,11131,
+27217,11123,
+27218,15013,
+27219,14252,
+27220,11133,
+27221,11140,
+27222,11139,
+27223,14298,
+27224,4818,
+27225,4816,
+27226,11125,
+27227,11122,
+27229,11119,
+27230,11138,
+27231,4826,
+27232,11136,
+27233,4822,
+27234,4821,
+27236,11130,
+27237,18016,
+27238,11113,
+27239,11115,
+27240,11117,
+27241,11135,
+27242,11129,
+27243,4817,
+27245,11120,
+27247,11134,
+27249,18018,
+27252,18017,
+27254,11121,
+27258,15021,
+27262,5100,
+27263,11652,
+27264,5093,
+27265,11637,
+27266,18019,
+27267,11648,
+27268,5095,
+27269,11655,
+27271,11644,
+27273,11639,
+27274,16694,
+27276,11656,
+27277,11635,
+27278,11646,
+27279,15387,
+27280,5102,
+27281,11651,
+27282,11657,
+27283,11645,
+27284,5094,
+27285,11647,
+27286,11636,
+27287,5101,
+27289,18021,
+27290,11654,
+27291,11641,
+27292,5097,
+27293,16882,
+27294,11643,
+27295,11640,
+27296,5103,
+27297,11642,
+27298,5096,
+27299,5099,
+27300,11650,
+27301,11638,
+27302,11653,
+27303,14307,
+27304,11649,
+27307,18023,
+27308,5341,
+27309,12094,
+27310,5346,
+27311,5347,
+27313,15955,
+27314,15179,
+27315,5340,
+27316,12093,
+27317,18024,
+27318,12090,
+27319,12091,
+27320,5344,
+27321,12085,
+27322,12089,
+27323,5343,
+27325,12086,
+27326,15009,
+27330,5345,
+27331,5342,
+27333,12084,
+27334,12088,
+27335,12092,
+27336,16885,
+27337,15014,
+27338,16204,
+27339,12447,
+27340,12444,
+27341,12453,
+27343,12452,
+27344,12450,
+27345,12445,
+27347,5513,
+27348,18025,
+27352,15530,
+27353,12446,
+27354,5512,
+27355,5098,
+27356,12449,
+27357,5511,
+27358,12454,
+27359,12448,
+27360,12443,
+27361,12087,
+27365,5510,
+27367,12442,
+27368,12767,
+27370,12766,
+27371,12451,
+27372,5659,
+27374,12770,
+27375,12771,
+27376,12765,
+27377,12769,
+27379,12764,
+27382,18026,
+27384,13014,
+27385,12768,
+27386,5752,
+27387,5750,
+27388,13012,
+27392,13015,
+27394,13011,
+27395,13013,
+27396,5751,
+27397,15015,
+27400,13190,
+27401,13191,
+27402,5830,
+27403,13189,
+27407,13344,
+27408,5885,
+27409,13342,
+27410,13343,
+27411,13447,
+27414,5955,
+27415,13518,
+27416,13516,
+27417,13517,
+27418,13519,
+27421,16888,
+27422,13620,
+27424,734,
+27425,995,
+27427,1562,
+27429,6601,
+27432,6973,
+27436,7398,
+27437,7400,
+27439,7399,
+27441,7401,
+27442,2791,
+27443,7996,
+27444,7402,
+27445,16891,
+27446,7995,
+27447,7997,
+27448,7998,
+27449,8626,
+27450,3228,
+27451,8627,
+27452,8629,
+27453,3229,
+27454,3227,
+27455,8628,
+27457,9287,
+27458,9285,
+27459,9284,
+27461,9283,
+27462,9282,
+27463,3658,
+27464,9286,
+27465,4097,
+27466,9954,
+27467,9956,
+27468,4098,
+27469,9955,
+27470,4485,
+27472,4484,
+27473,10532,
+27474,16238,
+27476,11145,
+27477,11144,
+27478,11146,
+27479,15022,
+27481,4828,
+27483,11658,
+27484,5104,
+27486,12095,
+27487,5348,
+27488,12455,
+27489,5831,
+27490,735,
+27491,845,
+27492,996,
+27493,1225,
+27494,1563,
+27495,1564,
+27498,1897,
+27501,7403,
+27503,17685,
+27506,3659,
+27508,16892,
+27510,10658,
+27511,4829,
+27512,5349,
+27513,736,
+27514,17646,
+27515,997,
+27518,6603,
+27519,1565,
+27520,6602,
+27521,18027,
+27522,6974,
+27523,1898,
+27524,6975,
+27526,1899,
+27528,7405,
+27529,2304,
+27530,2303,
+27532,8003,
+27533,8001,
+27534,8002,
+27535,8000,
+27537,7999,
+27540,8630,
+27541,8633,
+27542,3231,
+27543,8631,
+27544,3230,
+27545,8632,
+27547,9288,
+27550,9957,
+27551,9958,
+27552,9959,
+27554,10535,
+27555,10534,
+27556,4486,
+27557,10533,
+27558,10536,
+27559,11147,
+27562,11148,
+27563,11149,
+27565,11659,
+27566,5105,
+27567,5350,
+27568,12456,
+27570,5753,
+27571,6026,
+27573,1900,
+27574,6976,
+27575,2305,
+27578,2792,
+27580,3232,
+27581,8634,
+27583,3661,
+27584,3660,
+27585,18028,
+27587,9960,
+27588,9961,
+27589,4487,
+27590,4488,
+27591,11151,
+27592,11150,
+27593,12096,
+27594,13345,
+27595,737,
+27596,6027,
+27597,846,
+27599,1226,
+27600,6317,
+27602,1901,
+27603,3662,
+27604,738,
+27606,6977,
+27607,1902,
+27608,6978,
+27610,5106,
+27611,739,
+27612,16903,
+27614,6604,
+27616,6979,
+27617,16901,
+27618,7410,
+27619,7409,
+27620,7407,
+27622,7406,
+27623,7411,
+27624,7408,
+27626,18029,
+27627,2793,
+27628,2794,
+27631,3233,
+27632,8635,
+27634,8636,
+27635,8637,
+27639,9292,
+27640,9293,
+27641,9291,
+27642,16249,
+27643,9289,
+27644,9290,
+27645,3663,
+27646,9962,
+27647,10539,
+27648,10538,
+27649,10537,
+27650,10540,
+27651,11153,
+27652,11152,
+27653,4830,
+27654,11154,
+27656,5107,
+27657,11660,
+27659,12097,
+27660,12457,
+27661,13192,
+27663,740,
+27664,848,
+27665,847,
+27667,1566,
+27668,6028,
+27669,6058,
+27670,998,
+27672,6145,
+27673,6318,
+27674,6319,
+27675,1567,
+27676,14507,
+27677,6605,
+27679,1903,
+27680,6980,
+27681,6981,
+27683,2306,
+27684,2310,
+27685,7412,
+27686,2309,
+27687,2307,
+27688,2308,
+27690,8004,
+27691,2795,
+27692,3236,
+27694,3234,
+27695,3235,
+27696,8638,
+27697,16227,
+27699,4099,
+27700,741,
+27701,17647,
+27702,6059,
+27703,16904,
+27704,849,
+27705,15877,
+27706,17648,
+27707,6062,
+27709,17281,
+27710,852,
+27711,6061,
+27712,851,
+27713,850,
+27714,1227,
+27715,6060,
+27718,6146,
+27721,16525,
+27722,6150,
+27723,6152,
+27724,6153,
+27725,1008,
+27726,1009,
+27727,6149,
+27728,1004,
+27730,6147,
+27732,6151,
+27733,1005,
+27735,1000,
+27736,15290,
+27737,1001,
+27738,16908,
+27739,1007,
+27740,6148,
+27741,999,
+27742,1228,
+27743,1002,
+27744,1003,
+27745,1006,
+27749,6336,
+27750,6334,
+27751,6321,
+27752,1240,
+27753,6328,
+27754,1235,
+27755,6322,
+27757,6330,
+27758,16586,
+27759,6327,
+27760,1238,
+27761,6326,
+27762,1245,
+27763,6335,
+27764,1247,
+27765,18030,
+27766,1249,
+27768,6320,
+27769,16910,
+27770,1236,
+27771,6337,
+27773,1243,
+27774,1246,
+27775,14246,
+27776,6628,
+27777,1230,
+27778,1253,
+27779,1244,
+27780,6323,
+27781,1233,
+27782,1248,
+27783,6331,
+27784,1231,
+27785,1232,
+27786,6626,
+27787,6324,
+27788,1239,
+27789,1250,
+27790,6338,
+27791,6325,
+27792,1237,
+27794,1242,
+27795,6606,
+27796,1251,
+27797,6332,
+27798,1241,
+27800,1252,
+27801,1229,
+27802,6329,
+27803,1234,
+27804,6333,
+27805,6627,
+27807,14473,
+27810,15715,
+27818,18031,
+27819,1579,
+27820,1595,
+27821,6613,
+27822,1586,
+27823,15606,
+27824,6634,
+27825,1571,
+27826,16076,
+27827,1574,
+27828,6625,
+27830,6611,
+27831,6615,
+27832,1582,
+27833,1584,
+27834,6618,
+27835,1591,
+27836,1577,
+27837,1575,
+27838,1576,
+27839,1590,
+27840,6630,
+27841,1585,
+27842,6617,
+27843,6619,
+27844,1583,
+27845,1588,
+27846,6620,
+27847,6633,
+27849,1904,
+27850,1594,
+27851,16496,
+27852,1572,
+27853,6632,
+27854,16273,
+27855,6636,
+27856,6616,
+27857,6638,
+27858,6623,
+27859,1581,
+27860,6612,
+27861,1580,
+27862,1598,
+27863,1587,
+27865,6610,
+27866,6990,
+27867,1593,
+27868,1597,
+27869,6624,
+27870,6629,
+27871,15703,
+27872,1599,
+27873,1592,
+27874,1578,
+27875,1568,
+27877,1573,
+27879,6614,
+27880,1569,
+27881,6637,
+27882,16269,
+27883,6608,
+27884,6607,
+27885,6621,
+27886,6609,
+27887,1596,
+27888,2311,
+27889,1589,
+27890,6622,
+27891,1570,
+27893,1919,
+27897,6635,
+27904,6997,
+27905,7000,
+27906,18033,
+27907,7003,
+27908,6992,
+27909,14873,
+27910,18034,
+27911,7006,
+27912,7009,
+27913,7011,
+27914,6989,
+27915,1905,
+27916,1910,
+27917,7417,
+27918,1926,
+27919,7004,
+27920,7012,
+27921,6996,
+27922,6988,
+27926,7444,
+27927,1913,
+27928,7001,
+27929,6993,
+27930,6995,
+27931,1918,
+27933,6998,
+27934,1912,
+27935,6985,
+27936,7007,
+27938,7010,
+27940,15043,
+27941,1909,
+27942,18035,
+27943,1921,
+27944,6982,
+27945,1923,
+27946,1907,
+27947,1927,
+27948,7008,
+27949,6984,
+27950,1924,
+27951,7438,
+27952,6631,
+27953,1911,
+27954,1906,
+27955,6991,
+27956,6983,
+27957,1925,
+27958,1917,
+27959,7002,
+27960,1922,
+27961,1920,
+27962,6994,
+27963,1914,
+27964,6986,
+27965,1915,
+27966,1916,
+27967,6987,
+27968,7005,
+27969,1908,
+27970,6999,
+27982,17752,
+27991,15603,
+27992,7420,
+27993,2319,
+27994,2324,
+27995,16540,
+27996,16930,
+27998,7429,
+27999,7435,
+28000,7431,
+28001,7418,
+28002,7421,
+28003,7414,
+28004,7415,
+28005,2331,
+28006,2316,
+28007,7430,
+28008,7439,
+28009,2326,
+28010,2312,
+28012,2321,
+28013,7422,
+28014,2323,
+28015,7423,
+28016,7433,
+28017,16629,
+28018,14807,
+28020,2325,
+28021,7448,
+28022,7416,
+28023,2318,
+28024,2317,
+28025,2329,
+28026,7413,
+28027,7446,
+28028,7434,
+28029,7447,
+28030,7441,
+28031,7427,
+28032,7442,
+28033,18036,
+28034,7436,
+28035,7445,
+28036,7443,
+28037,2330,
+28038,7428,
+28039,2315,
+28040,2314,
+28041,2322,
+28042,2328,
+28043,7440,
+28044,2327,
+28045,7425,
+28046,2796,
+28047,15848,
+28048,7449,
+28049,7424,
+28050,7419,
+28051,2320,
+28052,2332,
+28053,2313,
+28054,16929,
+28055,7432,
+28056,7437,
+28068,18038,
+28069,15033,
+28074,2830,
+28075,8006,
+28076,8010,
+28078,2811,
+28079,2809,
+28081,18039,
+28082,2800,
+28083,8008,
+28084,8007,
+28085,2820,
+28087,8013,
+28088,2814,
+28089,16379,
+28090,8031,
+28091,8043,
+28092,2797,
+28093,8028,
+28094,8021,
+28095,2832,
+28096,8005,
+28098,8033,
+28100,2829,
+28101,2817,
+28102,2828,
+28103,2807,
+28104,8017,
+28105,8035,
+28106,8027,
+28107,2808,
+28108,2802,
+28109,8041,
+28111,8034,
+28112,8036,
+28113,2810,
+28114,2818,
+28115,8038,
+28116,8015,
+28117,8032,
+28118,8020,
+28119,8040,
+28120,2823,
+28121,2799,
+28122,2821,
+28123,8025,
+28124,8023,
+28125,8024,
+28126,2812,
+28127,8019,
+28128,8018,
+28129,2801,
+28130,8012,
+28131,8042,
+28132,2803,
+28133,8022,
+28134,2833,
+28136,2827,
+28137,8011,
+28138,2824,
+28139,2822,
+28140,2831,
+28141,8029,
+28142,2826,
+28143,7426,
+28144,8030,
+28145,2825,
+28146,8037,
+28147,2798,
+28148,8026,
+28149,2816,
+28150,8014,
+28151,2815,
+28153,2813,
+28154,2805,
+28155,2804,
+28156,8639,
+28157,8039,
+28160,8016,
+28162,15610,
+28163,8660,
+28164,15038,
+28165,2806,
+28170,15041,
+28175,15600,
+28181,18040,
+28184,18041,
+28185,3265,
+28186,2819,
+28187,3247,
+28188,8654,
+28189,3261,
+28191,8642,
+28192,3244,
+28193,3240,
+28194,8672,
+28195,3246,
+28196,3250,
+28197,3245,
+28198,3254,
+28199,8676,
+28200,8667,
+28201,18042,
+28202,17154,
+28203,8649,
+28204,3259,
+28205,3253,
+28206,8661,
+28207,3237,
+28208,8673,
+28209,8666,
+28210,3241,
+28211,8655,
+28212,3256,
+28213,8684,
+28214,8685,
+28216,3238,
+28217,8671,
+28218,3258,
+28219,8659,
+28220,8645,
+28221,8646,
+28222,3262,
+28223,8650,
+28224,8657,
+28225,8651,
+28227,3260,
+28228,3268,
+28229,8647,
+28230,8640,
+28231,8641,
+28233,8643,
+28234,3243,
+28235,8656,
+28237,3257,
+28238,3266,
+28239,16948,
+28240,16849,
+28241,8658,
+28242,8682,
+28243,8674,
+28244,3239,
+28245,8680,
+28246,3251,
+28248,3249,
+28249,16614,
+28250,8686,
+28251,3248,
+28252,8664,
+28253,8652,
+28254,8662,
+28255,3271,
+28256,8668,
+28257,8665,
+28258,8648,
+28259,3267,
+28260,8678,
+28261,8675,
+28262,8683,
+28263,3242,
+28264,8663,
+28265,3270,
+28267,8670,
+28270,3252,
+28271,3255,
+28273,8669,
+28274,3269,
+28275,8653,
+28276,8009,
+28278,14803,
+28279,8679,
+28280,8677,
+28281,8681,
+28284,16931,
+28294,18043,
+28296,8644,
+28297,3264,
+28299,15295,
+28301,9324,
+28302,9323,
+28303,9297,
+28304,3669,
+28306,9322,
+28307,9300,
+28308,9301,
+28310,3679,
+28311,9331,
+28312,3674,
+28313,9321,
+28314,17793,
+28315,9294,
+28316,3680,
+28317,3670,
+28318,9309,
+28319,9299,
+28320,9302,
+28321,9326,
+28322,3664,
+28323,9333,
+28324,9325,
+28325,3673,
+28326,9314,
+28327,3684,
+28330,3683,
+28331,3677,
+28334,9332,
+28335,3665,
+28336,9312,
+28337,9303,
+28338,9316,
+28339,9328,
+28340,3685,
+28341,16894,
+28342,3667,
+28343,9311,
+28344,15884,
+28345,9304,
+28346,3676,
+28347,18045,
+28348,3675,
+28349,9307,
+28350,9317,
+28351,9327,
+28352,9298,
+28353,9308,
+28354,3668,
+28355,9318,
+28356,3681,
+28357,3672,
+28358,9305,
+28359,3671,
+28360,9296,
+28361,9310,
+28362,9330,
+28363,3263,
+28364,4127,
+28365,9313,
+28366,9963,
+28367,9315,
+28368,9329,
+28369,3678,
+28370,9306,
+28371,3666,
+28372,3682,
+28373,4506,
+28374,9295,
+28376,9320,
+28377,16489,
+28378,18047,
+28379,16431,
+28380,9319,
+28381,17720,
+28386,18046,
+28392,18049,
+28393,18050,
+28395,9991,
+28396,4124,
+28397,9980,
+28398,9985,
+28399,4113,
+28401,9965,
+28402,4126,
+28404,4104,
+28405,9964,
+28406,9997,
+28407,4128,
+28408,9968,
+28409,9984,
+28410,16955,
+28411,9970,
+28412,10000,
+28413,9996,
+28414,4102,
+28415,4112,
+28416,10566,
+28417,4125,
+28418,4110,
+28419,9966,
+28420,16932,
+28421,9995,
+28422,4114,
+28423,9992,
+28424,10005,
+28425,9972,
+28426,9981,
+28427,15034,
+28428,15611,
+28429,10003,
+28430,9993,
+28431,4109,
+28434,9979,
+28435,4103,
+28436,4101,
+28437,4119,
+28438,16800,
+28439,18126,
+28440,9977,
+28441,9974,
+28442,9975,
+28444,9999,
+28446,10004,
+28447,10002,
+28448,4107,
+28449,10006,
+28450,4111,
+28451,4118,
+28452,18051,
+28453,9967,
+28454,10542,
+28455,9976,
+28457,4105,
+28458,4123,
+28459,4120,
+28460,4108,
+28461,9986,
+28462,9971,
+28463,4121,
+28464,9988,
+28465,4115,
+28466,4117,
+28467,4100,
+28468,18052,
+28469,9990,
+28470,9982,
+28471,9969,
+28472,4116,
+28473,9998,
+28474,10001,
+28475,9978,
+28476,9989,
+28477,17026,
+28478,4106,
+28479,4489,
+28480,9987,
+28481,10541,
+28483,9994,
+28484,16960,
+28494,9973,
+28495,10551,
+28496,10561,
+28497,4492,
+28498,10560,
+28499,10572,
+28500,4494,
+28501,10558,
+28502,15954,
+28503,10562,
+28504,4505,
+28506,10553,
+28507,4497,
+28508,16961,
+28509,10565,
+28510,11162,
+28511,4509,
+28512,4508,
+28513,10567,
+28514,10550,
+28515,10577,
+28516,4503,
+28518,4493,
+28519,10570,
+28521,10574,
+28522,10579,
+28523,10568,
+28524,10556,
+28525,4496,
+28526,4499,
+28527,4507,
+28528,4502,
+28530,10559,
+28531,9983,
+28532,16963,
+28534,10555,
+28535,10578,
+28536,4498,
+28537,15294,
+28538,4501,
+28539,10580,
+28540,4490,
+28541,10569,
+28542,10543,
+28543,10575,
+28544,5116,
+28545,18055,
+28546,10557,
+28548,4491,
+28549,10552,
+28550,4495,
+28551,10544,
+28552,4122,
+28553,10548,
+28554,16789,
+28555,10573,
+28556,10549,
+28557,10547,
+28558,4500,
+28560,10571,
+28562,10546,
+28563,10564,
+28564,10563,
+28565,10576,
+28566,10554,
+28567,4504,
+28573,16953,
+28574,11165,
+28575,16966,
+28576,4843,
+28577,4833,
+28578,11177,
+28579,11157,
+28580,4835,
+28581,11169,
+28582,4842,
+28583,4837,
+28584,11167,
+28585,11662,
+28586,11173,
+28587,11179,
+28588,11172,
+28589,11155,
+28590,11170,
+28591,11181,
+28592,11183,
+28593,4832,
+28594,11182,
+28595,4838,
+28596,4844,
+28597,15911,
+28598,4841,
+28600,11176,
+28601,4840,
+28602,11171,
+28603,15291,
+28604,11159,
+28605,11164,
+28606,18056,
+28607,11175,
+28608,4839,
+28609,4836,
+28610,4831,
+28611,4834,
+28612,11163,
+28614,10545,
+28615,11158,
+28616,11161,
+28617,11178,
+28618,11166,
+28619,11156,
+28620,11661,
+28621,11180,
+28622,11160,
+28623,11174,
+28627,16968,
+28628,11664,
+28629,5120,
+28632,5108,
+28633,15476,
+28634,15475,
+28635,5112,
+28636,11666,
+28637,11672,
+28638,11670,
+28639,5110,
+28640,5111,
+28641,5118,
+28642,11673,
+28643,11665,
+28644,5113,
+28646,11669,
+28647,11668,
+28648,11674,
+28649,5119,
+28651,5114,
+28652,5117,
+28653,11667,
+28654,5121,
+28655,5115,
+28656,5122,
+28657,5109,
+28658,11671,
+28660,11663,
+28662,14501,
+28663,12110,
+28664,16951,
+28666,5355,
+28667,12107,
+28668,12109,
+28670,5353,
+28671,12105,
+28672,12106,
+28673,12101,
+28675,18146,
+28676,11168,
+28677,12102,
+28678,5354,
+28679,12098,
+28681,5351,
+28682,12111,
+28683,5352,
+28684,12099,
+28685,12100,
+28686,12104,
+28687,5357,
+28689,5356,
+28692,12103,
+28693,5519,
+28694,12461,
+28695,12467,
+28696,5520,
+28697,12458,
+28698,5517,
+28699,5514,
+28700,12469,
+28701,5518,
+28702,15478,
+28703,5515,
+28704,12460,
+28705,12463,
+28706,12464,
+28707,12465,
+28708,12468,
+28710,12108,
+28711,12459,
+28712,5516,
+28713,12466,
+28714,12783,
+28715,12462,
+28716,18062,
+28719,12774,
+28720,5661,
+28721,12777,
+28722,5662,
+28723,12786,
+28724,12776,
+28725,12773,
+28727,12775,
+28728,12779,
+28729,12782,
+28730,12781,
+28731,12785,
+28732,12772,
+28734,5660,
+28735,12780,
+28736,12784,
+28737,12787,
+28738,12778,
+28739,13016,
+28740,13017,
+28741,13021,
+28742,13022,
+28744,13019,
+28745,13020,
+28746,13018,
+28747,16980,
+28748,5754,
+28752,18064,
+28753,5832,
+28754,13196,
+28756,18065,
+28757,13193,
+28758,13194,
+28759,13195,
+28760,5833,
+28762,13347,
+28763,13346,
+28764,14418,
+28765,13450,
+28766,5922,
+28767,13448,
+28768,13451,
+28769,13449,
+28770,13520,
+28771,5956,
+28772,5970,
+28773,13596,
+28774,13574,
+28775,15605,
+28776,13595,
+28777,13639,
+28778,13640,
+28779,742,
+28780,17649,
+28783,18066,
+28784,1010,
+28785,6154,
+28788,6339,
+28789,14535,
+28790,1254,
+28792,1257,
+28793,16537,
+28794,6340,
+28796,1255,
+28797,1256,
+28798,16981,
+28799,18067,
+28801,18777,
+28802,6647,
+28803,6649,
+28804,6644,
+28805,6641,
+28806,6643,
+28809,17401,
+28810,1603,
+28811,16587,
+28814,1601,
+28815,18099,
+28817,6645,
+28818,1602,
+28819,6642,
+28820,6639,
+28821,1600,
+28822,6646,
+28824,6640,
+28825,1604,
+28826,6648,
+28831,7014,
+28832,18242,
+28833,7018,
+28835,14706,
+28836,1936,
+28837,15543,
+28838,15699,
+28839,16982,
+28841,7021,
+28843,1928,
+28844,1931,
+28845,1933,
+28846,1935,
+28847,1932,
+28848,7017,
+28849,7016,
+28851,1930,
+28852,7019,
+28853,7020,
+28855,7013,
+28856,1934,
+28857,15721,
+28858,1929,
+28859,18450,
+28860,17753,
+28861,17008,
+28862,7015,
+28864,18227,
+28868,15274,
+28869,7463,
+28870,7464,
+28871,7465,
+28872,2337,
+28874,2333,
+28875,7454,
+28876,16984,
+28877,7462,
+28878,7467,
+28879,2338,
+28880,14701,
+28881,7452,
+28882,7458,
+28883,7451,
+28884,7461,
+28885,16985,
+28886,16986,
+28887,7457,
+28888,2334,
+28889,2336,
+28890,7466,
+28892,7450,
+28893,7453,
+28894,7459,
+28895,16987,
+28896,7460,
+28897,7468,
+28898,7456,
+28900,2335,
+28911,2838,
+28912,8050,
+28913,15048,
+28915,8052,
+28916,8048,
+28917,18272,
+28918,8060,
+28919,8046,
+28920,8059,
+28921,2834,
+28922,8044,
+28923,8690,
+28924,8054,
+28925,2837,
+28926,15630,
+28927,8055,
+28928,8058,
+28930,8062,
+28932,8051,
+28933,14883,
+28934,8056,
+28937,2835,
+28938,2836,
+28939,8061,
+28940,8049,
+28941,8045,
+28942,8063,
+28944,8053,
+28947,8057,
+28951,8047,
+28953,3272,
+28954,3273,
+28955,8700,
+28956,3279,
+28957,15687,
+28958,8688,
+28959,8697,
+28960,8687,
+28961,3276,
+28962,8695,
+28963,8693,
+28965,8694,
+28966,3274,
+28968,8698,
+28969,15273,
+28971,16993,
+28972,17002,
+28974,8691,
+28975,8689,
+28976,3275,
+28977,8692,
+28978,8696,
+28979,15700,
+28980,15486,
+28981,14189,
+28982,3277,
+28986,8699,
+28987,15045,
+28990,14126,
+28992,17304,
+28993,9339,
+28994,9346,
+28995,9348,
+28996,9354,
+28997,16994,
+28998,3698,
+28999,9334,
+29001,3690,
+29002,16996,
+29003,9349,
+29004,3695,
+29005,9355,
+29006,3686,
+29007,16999,
+29008,9352,
+29009,18533,
+29010,9336,
+29011,9353,
+29012,9335,
+29014,3700,
+29016,9347,
+29017,3687,
+29018,9356,
+29020,3692,
+29021,9340,
+29022,3697,
+29023,9351,
+29024,9338,
+29025,9345,
+29026,9341,
+29027,9337,
+29028,3689,
+29029,3696,
+29030,3694,
+29031,3691,
+29032,3699,
+29033,3688,
+29034,9344,
+29035,15557,
+29036,3693,
+29038,3278,
+29040,9350,
+29041,15808,
+29042,9342,
+29043,18407,
+29045,15597,
+29046,16384,
+29047,14679,
+29048,9343,
+29050,18724,
+29051,10014,
+29052,14389,
+29053,4131,
+29054,14704,
+29056,10010,
+29057,10016,
+29058,10012,
+29060,4133,
+29061,10011,
+29062,10015,
+29063,10007,
+29064,18182,
+29065,10009,
+29066,4132,
+29068,14826,
+29070,15675,
+29071,10013,
+29072,10008,
+29074,4134,
+29076,4129,
+29078,16991,
+29079,10017,
+29080,18461,
+29081,4130,
+29082,10586,
+29083,10583,
+29084,10595,
+29085,10589,
+29086,10591,
+29087,4510,
+29088,10585,
+29089,10593,
+29090,18625,
+29091,16072,
+29092,10592,
+29093,10590,
+29095,10596,
+29096,4513,
+29097,10587,
+29098,10594,
+29100,4511,
+29101,15901,
+29103,10582,
+29104,10584,
+29105,4512,
+29106,10581,
+29107,10597,
+29108,16990,
+29109,10588,
+29111,18059,
+29112,11187,
+29113,4851,
+29114,17006,
+29116,11198,
+29117,11196,
+29118,4845,
+29119,11186,
+29120,11189,
+29121,11190,
+29122,11185,
+29123,4855,
+29124,4856,
+29125,11184,
+29126,11199,
+29127,11194,
+29128,4849,
+29129,4846,
+29130,11193,
+29131,11191,
+29134,4852,
+29135,11195,
+29136,4847,
+29137,14141,
+29138,4848,
+29140,11192,
+29141,4850,
+29142,11188,
+29144,11197,
+29145,4853,
+29146,11200,
+29147,11201,
+29148,4854,
+29149,16504,
+29151,5124,
+29152,5131,
+29153,11675,
+29154,11681,
+29156,11679,
+29157,5127,
+29158,5126,
+29159,5123,
+29160,11677,
+29163,15489,
+29164,5129,
+29165,5128,
+29166,5125,
+29168,11680,
+29169,11676,
+29170,11678,
+29172,5130,
+29173,18158,
+29174,16026,
+29176,5361,
+29177,12114,
+29179,5358,
+29180,5359,
+29181,12116,
+29182,5360,
+29183,12113,
+29185,12112,
+29186,12473,
+29187,12115,
+29189,12474,
+29190,5521,
+29191,12472,
+29193,15803,
+29194,12471,
+29196,12470,
+29197,5522,
+29198,17009,
+29199,14844,
+29200,5663,
+29203,12788,
+29204,12789,
+29205,17011,
+29206,14675,
+29207,14697,
+29209,13025,
+29210,13024,
+29211,5755,
+29213,13023,
+29214,13197,
+29215,13198,
+29218,13348,
+29219,13452,
+29220,17014,
+29222,13521,
+29223,13621,
+29224,5990,
+29225,13641,
+29226,743,
+29227,17650,
+29228,1605,
+29229,1606,
+29230,17017,
+29232,1937,
+29237,5132,
+29238,744,
+29240,1607,
+29241,2339,
+29242,3701,
+29243,745,
+29245,2839,
+29246,4135,
+29247,6029,
+29248,17018,
+29249,7022,
+29250,7469,
+29252,10018,
+29254,5133,
+29255,746,
+29256,1608,
+29257,7023,
+29258,7024,
+29259,8701,
+29260,3280,
+29263,9357,
+29264,15049,
+29266,3702,
+29267,10019,
+29269,17021,
+29270,4514,
+29271,17022,
+29272,5523,
+29273,747,
+29274,8702,
+29275,748,
+29276,18010,
+29277,1012,
+29278,6155,
+29279,1011,
+29280,1260,
+29281,1259,
+29282,1258,
+29283,6341,
+29286,16059,
+29287,1609,
+29289,1610,
+29290,6650,
+29292,7025,
+29294,7028,
+29295,1939,
+29296,7026,
+29298,1938,
+29299,7027,
+29300,1940,
+29302,7472,
+29303,7471,
+29304,7470,
+29305,2340,
+29307,8065,
+29308,8066,
+29309,2840,
+29310,8064,
+29311,8067,
+29312,3282,
+29313,2841,
+29314,17027,
+29316,3281,
+29317,8706,
+29318,8705,
+29319,15050,
+29320,8703,
+29321,8704,
+29323,8707,
+29324,9359,
+29325,9358,
+29326,9362,
+29327,17353,
+29328,9361,
+29329,9360,
+29330,4136,
+29331,10022,
+29332,15051,
+29333,10021,
+29334,4137,
+29335,10020,
+29336,10598,
+29338,10599,
+29339,4515,
+29341,11202,
+29342,11203,
+29343,18234,
+29345,12479,
+29346,5524,
+29347,12478,
+29348,12477,
+29349,12475,
+29350,12476,
+29351,5756,
+29352,12790,
+29353,13199,
+29354,13522,
+29356,749,
+29357,17652,
+29358,6063,
+29359,853,
+29360,6064,
+29362,16310,
+29364,6156,
+29365,6157,
+29370,6347,
+29373,6343,
+29375,6342,
+29376,1611,
+29377,6346,
+29378,1262,
+29379,6344,
+29380,1261,
+29381,6348,
+29382,6345,
+29385,6654,
+29386,7029,
+29387,6652,
+29388,6659,
+29389,17354,
+29390,1612,
+29392,1615,
+29393,6660,
+29394,6656,
+29396,6657,
+29398,6651,
+29399,1614,
+29400,6653,
+29401,1613,
+29402,6658,
+29404,6655,
+29407,7033,
+29408,1942,
+29409,1943,
+29410,16279,
+29411,7036,
+29412,7030,
+29414,7035,
+29416,7031,
+29417,1941,
+29418,7034,
+29419,7032,
+29427,7478,
+29428,7475,
+29430,7477,
+29431,2345,
+29432,2344,
+29433,2342,
+29434,7474,
+29435,7479,
+29436,2341,
+29437,2343,
+29438,7476,
+29439,8075,
+29440,7473,
+29441,7480,
+29442,16282,
+29444,16053,
+29447,8070,
+29448,8074,
+29450,8073,
+29451,8709,
+29452,8720,
+29455,8076,
+29456,18154,
+29457,8071,
+29458,8708,
+29459,2845,
+29462,2844,
+29463,8069,
+29464,8072,
+29465,2846,
+29467,2843,
+29468,2842,
+29469,8068,
+29470,8077,
+29474,8711,
+29475,8718,
+29477,3284,
+29478,8717,
+29479,8714,
+29480,17034,
+29481,3286,
+29482,15728,
+29483,17029,
+29484,16306,
+29485,8716,
+29486,17035,
+29488,8710,
+29489,8712,
+29490,8715,
+29491,8713,
+29492,3285,
+29493,8719,
+29494,3283,
+29495,3703,
+29496,18155,
+29497,17356,
+29498,9366,
+29499,9365,
+29500,9363,
+29502,3706,
+29503,3705,
+29504,9367,
+29505,18156,
+29506,9364,
+29507,10023,
+29508,4138,
+29509,3704,
+29512,17402,
+29513,9369,
+29514,9368,
+29516,10026,
+29517,10024,
+29518,4516,
+29519,16209,
+29520,4139,
+29521,10025,
+29522,10601,
+29527,4517,
+29528,10600,
+29529,10609,
+29530,10608,
+29531,10606,
+29533,10605,
+29534,10602,
+29535,10603,
+29536,10604,
+29537,10607,
+29538,10610,
+29541,11208,
+29542,11205,
+29543,11206,
+29544,4857,
+29545,11204,
+29546,11210,
+29547,11209,
+29548,11207,
+29550,11683,
+29551,11684,
+29552,5134,
+29553,16280,
+29554,5135,
+29555,11682,
+29556,16084,
+29557,5363,
+29558,12117,
+29559,5362,
+29560,5525,
+29562,5526,
+29563,5664,
+29564,12792,
+29565,12791,
+29566,13026,
+29567,13200,
+29568,5834,
+29569,13350,
+29570,13349,
+29571,13351,
+29572,854,
+29573,7037,
+29574,2346,
+29575,2847,
+29576,8078,
+29577,855,
+29578,6065,
+29579,750,
+29582,6158,
+29583,18149,
+29586,6353,
+29587,6351,
+29588,6352,
+29589,6349,
+29590,1263,
+29591,6350,
+29592,14838,
+29596,16522,
+29597,6668,
+29598,14683,
+29599,1618,
+29600,6666,
+29601,6662,
+29602,6665,
+29604,6661,
+29605,1620,
+29606,6664,
+29607,16519,
+29608,1617,
+29609,1616,
+29610,17037,
+29611,1619,
+29612,6667,
+29613,6663,
+29618,1947,
+29619,1950,
+29620,7045,
+29621,7044,
+29622,7043,
+29623,1944,
+29624,7052,
+29625,7042,
+29627,1946,
+29628,7485,
+29630,7049,
+29631,7047,
+29632,1949,
+29634,7039,
+29635,7050,
+29637,7041,
+29638,7051,
+29639,7048,
+29640,7040,
+29641,17040,
+29642,1945,
+29643,7053,
+29644,7038,
+29645,1948,
+29646,16667,
+29647,17036,
+29648,15127,
+29650,7490,
+29651,7481,
+29652,7492,
+29653,16499,
+29654,7484,
+29655,7495,
+29656,7496,
+29657,7482,
+29658,7494,
+29659,7491,
+29660,7489,
+29661,7493,
+29662,2352,
+29664,2350,
+29665,18160,
+29666,15523,
+29667,7487,
+29668,17061,
+29669,7483,
+29670,15546,
+29671,7486,
+29672,7497,
+29673,7488,
+29674,2351,
+29675,7046,
+29677,2347,
+29678,2349,
+29679,16401,
+29683,15531,
+29684,8092,
+29685,8081,
+29686,8079,
+29687,17050,
+29688,8080,
+29689,15353,
+29690,8087,
+29691,15532,
+29692,8088,
+29693,8084,
+29694,2852,
+29695,8089,
+29696,8086,
+29697,8083,
+29699,2850,
+29700,8082,
+29701,2848,
+29702,2851,
+29703,8085,
+29704,8093,
+29705,2348,
+29706,2849,
+29707,8091,
+29708,8090,
+29709,2853,
+29713,17772,
+29714,15334,
+29716,14836,
+29717,17051,
+29718,8725,
+29719,16557,
+29721,18163,
+29722,8726,
+29723,3296,
+29724,14557,
+29725,8732,
+29726,18164,
+29727,18165,
+29728,8734,
+29729,8727,
+29730,3290,
+29731,8731,
+29732,8730,
+29733,3291,
+29734,3297,
+29736,3298,
+29737,8733,
+29738,3288,
+29739,8724,
+29740,8722,
+29741,8728,
+29742,8721,
+29743,3295,
+29744,8723,
+29745,8729,
+29746,8735,
+29747,3289,
+29748,3294,
+29749,3292,
+29750,3293,
+29751,15073,
+29752,15113,
+29753,17054,
+29754,3287,
+29756,15071,
+29759,3713,
+29760,9376,
+29761,3712,
+29762,9380,
+29763,14874,
+29764,9370,
+29765,15319,
+29766,9381,
+29767,17060,
+29768,15541,
+29769,17041,
+29770,9371,
+29771,9372,
+29773,9382,
+29774,9379,
+29775,9377,
+29776,9378,
+29777,9374,
+29778,9373,
+29779,16945,
+29780,9383,
+29781,3709,
+29782,14837,
+29783,9375,
+29785,3714,
+29786,3708,
+29787,3715,
+29788,3716,
+29789,17094,
+29790,3711,
+29791,3710,
+29792,17058,
+29794,10027,
+29795,4141,
+29796,4140,
+29797,16641,
+29799,10032,
+29800,15086,
+29801,4518,
+29802,4142,
+29803,15335,
+29804,17064,
+29805,4144,
+29806,10033,
+29807,3707,
+29808,4143,
+29809,10029,
+29810,10031,
+29811,10028,
+29812,17065,
+29813,10030,
+29814,17062,
+29817,10620,
+29818,15057,
+29820,10619,
+29821,10616,
+29822,4521,
+29823,11211,
+29824,4522,
+29825,10615,
+29826,17068,
+29827,4520,
+29829,10617,
+29830,10614,
+29831,10611,
+29832,10618,
+29833,10612,
+29834,10613,
+29835,4519,
+29836,14881,
+29837,18077,
+29840,11688,
+29842,11215,
+29844,11214,
+29845,11216,
+29847,11685,
+29848,4860,
+29849,14835,
+29850,11212,
+29851,15114,
+29852,4858,
+29854,4862,
+29855,4861,
+29856,11213,
+29857,11217,
+29859,4859,
+29860,16752,
+29861,11692,
+29862,5138,
+29863,5364,
+29864,5139,
+29865,5136,
+29866,11689,
+29867,11687,
+29869,11690,
+29871,11693,
+29872,5137,
+29873,11691,
+29874,11686,
+29876,15525,
+29877,12120,
+29878,12123,
+29879,12482,
+29880,12118,
+29882,12793,
+29883,12124,
+29885,5527,
+29886,12122,
+29887,5365,
+29888,12119,
+29889,12121,
+29890,12125,
+29891,12483,
+29893,12481,
+29896,17077,
+29898,5528,
+29899,12480,
+29900,15070,
+29903,5665,
+29904,15003,
+29907,18170,
+29908,5758,
+29909,13202,
+29910,5757,
+29911,13204,
+29912,13201,
+29913,13203,
+29914,5886,
+29915,13453,
+29916,856,
+29917,6669,
+29918,7498,
+29919,7499,
+29920,2854,
+29921,9384,
+29922,4863,
+29923,5529,
+29924,5835,
+29925,13454,
+29926,857,
+29927,16382,
+29928,6670,
+29929,288,
+29932,7054,
+29934,7055,
+29936,16358,
+29937,16283,
+29938,16351,
+29940,7500,
+29941,7501,
+29942,2855,
+29943,2856,
+29944,16372,
+29947,8736,
+29949,9387,
+29950,9386,
+29951,9385,
+29952,10034,
+29954,10035,
+29955,10036,
+29956,4145,
+29957,16350,
+29959,10622,
+29960,10621,
+29963,11218,
+29964,4864,
+29965,4865,
+29966,17079,
+29967,11697,
+29968,11694,
+29969,11695,
+29970,11696,
+29971,12127,
+29972,12126,
+29973,5366,
+29974,12484,
+29975,13027,
+29976,858,
+29977,17795,
+29978,1951,
+29980,2857,
+29981,9388,
+29982,17080,
+29983,859,
+29985,7502,
+29986,2858,
+29989,3299,
+29990,3300,
+29992,860,
+29993,861,
+29994,6159,
+29995,1265,
+29996,1264,
+29997,1952,
+29998,7056,
+29999,8737,
+30000,862,
+30001,863,
+30002,864,
+30003,865,
+30004,16007,
+30005,17754,
+30007,1266,
+30008,1267,
+30009,6355,
+30010,6354,
+30011,15867,
+30013,1621,
+30014,6673,
+30015,6671,
+30016,6672,
+30018,17357,
+30022,16192,
+30023,7057,
+30024,7058,
+30026,17087,
+30027,1956,
+30028,1954,
+30029,17086,
+30030,1955,
+30031,1953,
+30033,15614,
+30035,16363,
+30036,2353,
+30037,15082,
+30041,2357,
+30042,2356,
+30043,7503,
+30044,2355,
+30045,2354,
+30047,7504,
+30048,15729,
+30050,2861,
+30051,8095,
+30052,8094,
+30053,2859,
+30054,2860,
+30055,17088,
+30058,3302,
+30059,3301,
+30060,8739,
+30061,18173,
+30062,17089,
+30063,8738,
+30064,2862,
+30066,18174,
+30070,3717,
+30071,9390,
+30072,3718,
+30073,9389,
+30074,16207,
+30077,10037,
+30078,10623,
+30079,4523,
+30080,11219,
+30083,15077,
+30084,11698,
+30086,5531,
+30087,5530,
+30090,5836,
+30091,866,
+30092,6674,
+30093,18175,
+30094,17093,
+30095,2863,
+30096,10038,
+30097,4146,
+30098,558,
+30100,6356,
+30101,6357,
+30104,6675,
+30105,1623,
+30106,1624,
+30109,1622,
+30110,17095,
+30114,1960,
+30115,1961,
+30116,1958,
+30117,1959,
+30119,7059,
+30122,7060,
+30123,1957,
+30128,7505,
+30129,16045,
+30130,2361,
+30131,2362,
+30132,17096,
+30133,2866,
+30134,7511,
+30136,2367,
+30137,2365,
+30138,7512,
+30139,7507,
+30140,2364,
+30141,2363,
+30142,2358,
+30143,7510,
+30144,7509,
+30145,7506,
+30146,2366,
+30147,16275,
+30148,7508,
+30149,2359,
+30151,2360,
+30152,18177,
+30154,2867,
+30155,8099,
+30156,8100,
+30157,2868,
+30158,8096,
+30159,8098,
+30160,8102,
+30161,8101,
+30162,8097,
+30164,2864,
+30165,2865,
+30167,8747,
+30168,3307,
+30169,3306,
+30170,8741,
+30171,3304,
+30172,17358,
+30173,8744,
+30174,3308,
+30175,8745,
+30176,3309,
+30177,8742,
+30178,3303,
+30179,3305,
+30180,8746,
+30182,8743,
+30183,8740,
+30189,9403,
+30191,9392,
+30192,3720,
+30193,3723,
+30194,3722,
+30195,3727,
+30196,3726,
+30197,9404,
+30198,9402,
+30199,9395,
+30200,9399,
+30201,9398,
+30202,3724,
+30203,9401,
+30204,9397,
+30205,9405,
+30206,9396,
+30207,3725,
+30208,3719,
+30209,3721,
+30210,17097,
+30211,9394,
+30215,16271,
+30216,10040,
+30217,4150,
+30218,10044,
+30219,4149,
+30220,10041,
+30221,4148,
+30223,9393,
+30224,9400,
+30225,10043,
+30227,4151,
+30228,10045,
+30229,10042,
+30230,10039,
+30233,10626,
+30234,10630,
+30235,10632,
+30236,10628,
+30237,10627,
+30238,10625,
+30239,4526,
+30240,4524,
+30241,4529,
+30242,4530,
+30243,10629,
+30244,4527,
+30245,10624,
+30246,4528,
+30247,4147,
+30248,10631,
+30249,4525,
+30252,17098,
+30253,11221,
+30255,11220,
+30256,11228,
+30257,11222,
+30258,11227,
+30259,11224,
+30260,4866,
+30261,11226,
+30264,4867,
+30266,4868,
+30267,15984,
+30268,11225,
+30269,11223,
+30272,16102,
+30274,5141,
+30275,11699,
+30278,5140,
+30279,11702,
+30280,11700,
+30281,11701,
+30284,5142,
+30285,18178,
+30286,15986,
+30287,17100,
+30288,12131,
+30289,17099,
+30290,5369,
+30291,12132,
+30292,16112,
+30294,5367,
+30295,12133,
+30296,5368,
+30297,12130,
+30298,12134,
+30300,12128,
+30303,5532,
+30304,12485,
+30305,5533,
+30306,5666,
+30308,12129,
+30309,5667,
+30310,16042,
+30311,16297,
+30313,5759,
+30314,13028,
+30316,5838,
+30317,13205,
+30318,5837,
+30319,17101,
+30320,13352,
+30321,5923,
+30322,5924,
+30323,15083,
+30324,18179,
+30325,13635,
+30326,559,
+30328,1962,
+30329,7061,
+30330,18181,
+30331,3310,
+30332,3311,
+30333,867,
+30334,1013,
+30335,6160,
+30336,17363,
+30337,6358,
+30338,1268,
+30340,1625,
+30342,1963,
+30343,1964,
+30344,1965,
+30345,8104,
+30346,7513,
+30347,2368,
+30348,17364,
+30350,2869,
+30351,8103,
+30352,17104,
+30354,8749,
+30355,3313,
+30357,8748,
+30358,3312,
+30361,9406,
+30362,4531,
+30363,10636,
+30364,10633,
+30365,10634,
+30366,10635,
+30369,17109,
+30372,11703,
+30373,17110,
+30374,12135,
+30378,12795,
+30379,12794,
+30381,13206,
+30382,868,
+30383,6676,
+30384,2369,
+30388,3314,
+30389,9407,
+30391,17111,
+30392,10046,
+30394,4532,
+30395,11229,
+30397,12136,
+30398,12796,
+30399,869,
+30402,1626,
+30403,1968,
+30404,7062,
+30405,1969,
+30406,1967,
+30408,1966,
+30409,7514,
+30410,2370,
+30412,17112,
+30413,2371,
+30414,2372,
+30418,2871,
+30419,8105,
+30420,2870,
+30422,16213,
+30426,8750,
+30427,2872,
+30428,3315,
+30429,9408,
+30430,3728,
+30431,3729,
+30433,4152,
+30435,4153,
+30436,4533,
+30437,4870,
+30438,11230,
+30439,4869,
+30441,11704,
+30442,5143,
+30444,12137,
+30445,12797,
+30446,870,
+30447,1269,
+30448,6679,
+30449,6678,
+30450,1627,
+30451,6677,
+30452,1628,
+30453,6680,
+30455,7068,
+30456,1972,
+30457,1971,
+30458,7070,
+30459,7069,
+30460,1976,
+30462,1975,
+30465,1970,
+30467,7064,
+30468,7065,
+30469,7066,
+30471,1977,
+30472,7063,
+30473,1973,
+30474,7067,
+30475,1974,
+30476,15714,
+30478,15106,
+30479,15107,
+30480,7517,
+30481,7521,
+30482,7519,
+30483,7518,
+30485,7522,
+30489,7523,
+30490,7524,
+30491,7516,
+30493,7515,
+30494,17118,
+30495,2374,
+30496,2375,
+30498,7525,
+30499,7520,
+30500,16360,
+30501,8114,
+30502,17119,
+30503,7526,
+30504,2376,
+30505,2373,
+30507,16371,
+30509,8108,
+30511,8107,
+30513,8109,
+30514,8110,
+30515,8112,
+30516,8111,
+30517,8116,
+30518,2876,
+30519,2873,
+30520,2877,
+30521,8106,
+30522,2878,
+30523,8115,
+30524,2875,
+30525,8113,
+30526,2874,
+30528,17120,
+30531,18186,
+30532,8753,
+30533,8755,
+30534,8751,
+30535,8752,
+30538,8756,
+30539,8758,
+30540,8759,
+30541,8754,
+30542,8757,
+30543,3316,
+30546,9412,
+30548,9417,
+30549,9409,
+30550,9413,
+30552,17123,
+30553,9418,
+30554,9414,
+30555,3730,
+30556,3738,
+30558,3733,
+30559,9410,
+30560,9411,
+30561,4157,
+30562,3741,
+30563,3734,
+30565,3739,
+30566,3732,
+30567,9416,
+30568,3740,
+30569,9415,
+30570,3736,
+30571,3731,
+30572,3737,
+30573,9419,
+30574,10051,
+30575,10053,
+30578,14699,
+30583,18089,
+30584,15104,
+30585,3735,
+30586,17175,
+30587,15108,
+30588,10048,
+30589,4155,
+30590,10054,
+30591,4156,
+30592,10052,
+30593,10047,
+30594,10050,
+30595,10055,
+30596,4154,
+30597,10049,
+30599,4535,
+30600,10640,
+30601,10639,
+30603,4538,
+30604,4536,
+30605,10637,
+30606,4534,
+30607,10638,
+30609,4537,
+30611,14381,
+30613,11238,
+30615,11240,
+30616,18190,
+30617,11239,
+30618,11231,
+30619,11235,
+30620,11234,
+30621,11232,
+30622,4872,
+30623,4873,
+30624,4871,
+30625,11233,
+30626,11236,
+30627,11237,
+30629,4874,
+30631,5148,
+30632,11712,
+30634,5145,
+30635,11706,
+30636,5147,
+30637,5149,
+30639,17125,
+30640,5146,
+30641,11711,
+30642,11707,
+30643,5144,
+30644,11710,
+30645,11705,
+30646,11709,
+30647,11708,
+30649,15987,
+30650,12139,
+30651,5372,
+30652,5373,
+30653,5370,
+30654,18193,
+30655,5371,
+30658,12138,
+30659,15281,
+30660,12488,
+30661,16833,
+30663,5534,
+30665,12486,
+30666,12487,
+30667,18194,
+30668,12798,
+30669,12801,
+30670,12799,
+30671,12800,
+30672,13029,
+30675,5760,
+30676,13353,
+30677,13455,
+30679,5925,
+30680,13523,
+30681,13524,
+30682,5971,
+30683,871,
+30684,1978,
+30686,8760,
+30688,9420,
+30690,872,
+30691,1270,
+30693,1629,
+30694,16513,
+30695,7071,
+30696,7072,
+30697,2377,
+30700,8761,
+30701,3317,
+30702,3742,
+30703,5150,
+30704,11713,
+30705,12489,
+30706,12802,
+30707,873,
+30708,17129,
+30711,6686,
+30712,6681,
+30713,6683,
+30714,6685,
+30715,6684,
+30716,6682,
+30717,1630,
+30718,16341,
+30722,1979,
+30723,7081,
+30725,7076,
+30726,7073,
+30728,15942,
+30729,7080,
+30732,1981,
+30733,1982,
+30734,7079,
+30735,7078,
+30736,7077,
+30737,7074,
+30738,7075,
+30739,7082,
+30740,1980,
+30744,18195,
+30748,18196,
+30749,2381,
+30750,15123,
+30751,2387,
+30752,2386,
+30753,7535,
+30754,7529,
+30755,7527,
+30757,2384,
+30758,8123,
+30759,2379,
+30760,7532,
+30761,7536,
+30762,7538,
+30763,7534,
+30764,7528,
+30765,2385,
+30766,7533,
+30767,7531,
+30768,2378,
+30769,7539,
+30770,2388,
+30771,7537,
+30772,2382,
+30773,7530,
+30775,2383,
+30776,2380,
+30777,17366,
+30780,16410,
+30781,15466,
+30786,15044,
+30787,2880,
+30788,15403,
+30789,8124,
+30791,18197,
+30792,8117,
+30793,8119,
+30794,8121,
+30795,15469,
+30796,8122,
+30797,8120,
+30798,2881,
+30800,8125,
+30801,18198,
+30802,8118,
+30803,16277,
+30804,15467,
+30812,8765,
+30813,3318,
+30814,8773,
+30816,8762,
+30818,8774,
+30820,8763,
+30821,8764,
+30822,18199,
+30824,8772,
+30825,8771,
+30826,8768,
+30827,2879,
+30828,3319,
+30829,8766,
+30830,8769,
+30831,3320,
+30832,8770,
+30833,8767,
+30841,9431,
+30842,16105,
+30843,9435,
+30844,3749,
+30846,10061,
+30847,3752,
+30848,9433,
+30849,14056,
+30851,9430,
+30852,9425,
+30853,9427,
+30854,9428,
+30855,9421,
+30856,15125,
+30857,3748,
+30860,3747,
+30861,15124,
+30862,3743,
+30863,9424,
+30865,3750,
+30867,3751,
+30868,9423,
+30869,9426,
+30870,9434,
+30871,3745,
+30872,3746,
+30873,9432,
+30874,9422,
+30878,10063,
+30879,4159,
+30880,10065,
+30881,9429,
+30882,10067,
+30883,4163,
+30884,10068,
+30885,10064,
+30887,4160,
+30888,10060,
+30889,4162,
+30890,10057,
+30891,10062,
+30892,10066,
+30893,10059,
+30895,17132,
+30896,3744,
+30897,17140,
+30898,10056,
+30899,4161,
+30900,10058,
+30902,15468,
+30904,17777,
+30905,15459,
+30906,4541,
+30907,10642,
+30908,4545,
+30910,4543,
+30913,4158,
+30915,10649,
+30916,10650,
+30917,4540,
+30919,17133,
+30920,10648,
+30921,10651,
+30922,4542,
+30923,4539,
+30924,10644,
+30925,10641,
+30926,10646,
+30927,10643,
+30928,4546,
+30929,10645,
+30930,15126,
+30931,17134,
+30932,10647,
+30933,4544,
+30935,17138,
+30936,16268,
+30938,4876,
+30939,11247,
+30941,11241,
+30942,11245,
+30943,11251,
+30944,11252,
+30945,11248,
+30946,11249,
+30947,11246,
+30949,11243,
+30951,4878,
+30952,4875,
+30953,11242,
+30954,11244,
+30956,4877,
+30957,11250,
+30958,14977,
+30959,5154,
+30960,15162,
+30961,16574,
+30962,11720,
+30963,11714,
+30964,5153,
+30965,14515,
+30967,5151,
+30969,11722,
+30970,5152,
+30971,11717,
+30972,11718,
+30973,11715,
+30974,11723,
+30975,11719,
+30977,5155,
+30978,11716,
+30980,11724,
+30981,11721,
+30982,16335,
+30985,12143,
+30988,12140,
+30990,5374,
+30992,12144,
+30993,12146,
+30994,12145,
+30995,12141,
+30996,12142,
+30999,12494,
+31001,5535,
+31003,12491,
+31004,12493,
+31005,12490,
+31006,12495,
+31009,12492,
+31011,12804,
+31012,12807,
+31013,12803,
+31014,5668,
+31015,12805,
+31016,12806,
+31017,12808,
+31018,5669,
+31019,5671,
+31020,5670,
+31021,13030,
+31022,17136,
+31023,13032,
+31025,13031,
+31026,18203,
+31027,18202,
+31028,17139,
+31029,13207,
+31030,14211,
+31032,13456,
+31033,13525,
+31034,874,
+31035,17655,
+31036,17152,
+31037,6359,
+31038,1631,
+31039,6688,
+31040,1632,
+31041,1633,
+31042,6687,
+31044,7087,
+31045,7086,
+31046,1983,
+31047,1986,
+31048,1985,
+31049,1984,
+31050,7083,
+31051,7085,
+31052,7084,
+31055,7542,
+31056,2390,
+31057,7546,
+31058,7545,
+31059,7544,
+31060,7540,
+31061,2389,
+31062,2393,
+31063,2396,
+31064,14309,
+31065,15128,
+31066,2397,
+31067,7541,
+31068,7543,
+31069,2395,
+31070,2394,
+31071,2392,
+31072,2391,
+31073,8132,
+31074,15997,
+31075,8130,
+31076,8126,
+31077,2882,
+31079,8127,
+31080,2883,
+31081,8128,
+31082,8129,
+31083,8131,
+31085,2884,
+31088,8778,
+31089,16744,
+31090,8777,
+31091,8776,
+31092,8775,
+31097,9439,
+31098,3753,
+31100,9436,
+31101,9438,
+31102,15910,
+31103,3754,
+31104,17148,
+31105,3755,
+31106,9437,
+31107,15862,
+31110,17145,
+31111,17800,
+31112,10077,
+31114,10070,
+31115,10071,
+31117,4166,
+31118,4164,
+31119,4165,
+31120,10079,
+31121,18205,
+31122,10078,
+31123,10075,
+31124,10074,
+31125,10073,
+31126,10072,
+31127,10076,
+31128,10069,
+31129,17404,
+31130,10652,
+31131,10657,
+31132,10655,
+31133,17150,
+31135,14686,
+31136,10654,
+31137,10653,
+31138,10656,
+31140,11253,
+31141,15134,
+31142,4879,
+31143,5156,
+31144,11726,
+31145,17153,
+31146,5157,
+31147,11725,
+31148,12148,
+31149,12147,
+31150,5375,
+31152,12496,
+31153,5536,
+31154,12809,
+31155,5839,
+31156,13208,
+31158,13458,
+31159,13457,
+31160,6066,
+31161,1987,
+31162,1988,
+31163,8133,
+31165,3757,
+31166,875,
+31167,1273,
+31168,1272,
+31169,1271,
+31172,15565,
+31173,6689,
+31174,17157,
+31176,1635,
+31177,1634,
+31179,1991,
+31180,16947,
+31181,7089,
+31182,7092,
+31183,7090,
+31185,1989,
+31186,1990,
+31188,17159,
+31189,7088,
+31190,7091,
+31192,2404,
+31196,7553,
+31197,7555,
+31198,7554,
+31199,2401,
+31200,7549,
+31202,15450,
+31203,2399,
+31204,2398,
+31206,2402,
+31207,2400,
+31209,2403,
+31210,7552,
+31211,7547,
+31212,7548,
+31213,7551,
+31214,7550,
+31217,15143,
+31220,15138,
+31222,8136,
+31223,8137,
+31224,8135,
+31226,8134,
+31227,2885,
+31232,3325,
+31234,8779,
+31235,8781,
+31236,8783,
+31237,3324,
+31238,18206,
+31240,3322,
+31242,8780,
+31243,3323,
+31244,8782,
+31245,3321,
+31248,9449,
+31249,9440,
+31250,9443,
+31251,9447,
+31252,3761,
+31253,9445,
+31255,9444,
+31256,9441,
+31257,9442,
+31258,3759,
+31259,9448,
+31260,3758,
+31262,3763,
+31263,3762,
+31264,3760,
+31266,9446,
+31270,10085,
+31272,10084,
+31275,10080,
+31277,16346,
+31278,4167,
+31279,10083,
+31280,10082,
+31281,4168,
+31287,4551,
+31289,10659,
+31290,15137,
+31291,4552,
+31292,4548,
+31293,4550,
+31294,16267,
+31295,4547,
+31296,4549,
+31299,14700,
+31300,11254,
+31301,15857,
+31302,4882,
+31303,11256,
+31304,11255,
+31305,14131,
+31306,10081,
+31307,4884,
+31308,4883,
+31309,4880,
+31310,4881,
+31316,11731,
+31318,11729,
+31319,5158,
+31320,11730,
+31322,11732,
+31323,11728,
+31324,11727,
+31327,12149,
+31328,5378,
+31329,5376,
+31330,5377,
+31333,14134,
+31335,12497,
+31336,12498,
+31337,5538,
+31339,5537,
+31340,12811,
+31341,12812,
+31342,12810,
+31344,13209,
+31345,13210,
+31348,876,
+31349,6161,
+31350,1274,
+31352,6690,
+31353,1637,
+31354,1636,
+31355,6691,
+31357,14135,
+31358,7094,
+31359,1992,
+31360,7093,
+31361,1993,
+31363,15741,
+31364,2405,
+31365,7558,
+31366,7556,
+31367,7562,
+31368,2406,
+31369,7557,
+31370,7561,
+31371,7559,
+31372,7560,
+31375,8138,
+31376,8140,
+31377,17368,
+31378,2886,
+31380,8139,
+31381,2887,
+31382,3328,
+31383,3327,
+31384,3326,
+31385,8784,
+31390,9452,
+31391,3764,
+31392,3765,
+31394,9451,
+31395,9450,
+31400,10086,
+31401,4170,
+31402,4169,
+31403,10087,
+31404,10088,
+31406,4554,
+31407,4553,
+31408,14138,
+31409,11260,
+31410,10660,
+31411,10662,
+31412,10661,
+31413,11259,
+31414,11257,
+31415,11261,
+31416,11258,
+31418,4885,
+31419,14137,
+31420,18209,
+31422,11733,
+31423,5159,
+31424,11734,
+31425,11735,
+31426,14139,
+31427,14140,
+31428,5379,
+31429,5380,
+31431,5672,
+31432,15743,
+31433,17776,
+31434,5887,
+31435,877,
+31439,18212,
+31441,7095,
+31443,16266,
+31448,7563,
+31449,2407,
+31450,14144,
+31451,18213,
+31452,14673,
+31453,14145,
+31455,3038,
+31456,3037,
+31458,15155,
+31459,3330,
+31460,8786,
+31461,3329,
+31462,8785,
+31463,14429,
+31465,14385,
+31466,14146,
+31467,9453,
+31469,4171,
+31470,10089,
+31471,4172,
+31478,5673,
+31479,12813,
+31481,1014,
+31482,1638,
+31483,6692,
+31485,1995,
+31486,15165,
+31487,1994,
+31488,7096,
+31489,7097,
+31492,7565,
+31493,7567,
+31494,2408,
+31496,7569,
+31497,7572,
+31498,7570,
+31499,14150,
+31500,15203,
+31502,7571,
+31503,7568,
+31504,7564,
+31505,2409,
+31506,7573,
+31507,7566,
+31508,16247,
+31512,8149,
+31513,2893,
+31514,8158,
+31515,2890,
+31517,8151,
+31518,2894,
+31519,16145,
+31520,2888,
+31522,8146,
+31523,8159,
+31524,8147,
+31525,8144,
+31526,2892,
+31527,15199,
+31528,2889,
+31529,14152,
+31530,8150,
+31531,8153,
+31532,2891,
+31533,8154,
+31534,2895,
+31535,8155,
+31536,8145,
+31537,8152,
+31538,8156,
+31539,8148,
+31540,8143,
+31541,8141,
+31544,8157,
+31545,15726,
+31547,8142,
+31552,8793,
+31554,15853,
+31555,15909,
+31556,8789,
+31557,8795,
+31558,3333,
+31559,8788,
+31560,8790,
+31561,3331,
+31562,8787,
+31563,3338,
+31564,8791,
+31565,3337,
+31566,8792,
+31567,3339,
+31568,3334,
+31569,3340,
+31570,3335,
+31572,3336,
+31573,14151,
+31574,3332,
+31576,8794,
+31584,3768,
+31585,9464,
+31586,18215,
+31587,9467,
+31588,9455,
+31589,9460,
+31590,9454,
+31591,3770,
+31593,9458,
+31596,18216,
+31597,9456,
+31598,3769,
+31599,14156,
+31600,9463,
+31601,9462,
+31602,9459,
+31603,9461,
+31604,9457,
+31605,4176,
+31606,9466,
+31607,3766,
+31608,9465,
+31611,18217,
+31618,10105,
+31620,4183,
+31621,10100,
+31623,4182,
+31624,10090,
+31626,10092,
+31627,4175,
+31628,10097,
+31629,10096,
+31630,10099,
+31631,4180,
+31632,10094,
+31633,10093,
+31634,14162,
+31636,4179,
+31637,4174,
+31638,10095,
+31639,4177,
+31640,10101,
+31641,10103,
+31643,10098,
+31644,10091,
+31645,4178,
+31648,4562,
+31649,4173,
+31650,14155,
+31651,16148,
+31652,10104,
+31660,10666,
+31661,4555,
+31663,10668,
+31665,4556,
+31666,17948,
+31668,4558,
+31669,10671,
+31671,10663,
+31672,4181,
+31673,10669,
+31678,10665,
+31680,3767,
+31681,4561,
+31684,4557,
+31686,4559,
+31687,4560,
+31689,4888,
+31690,10670,
+31691,10664,
+31692,4563,
+31694,10667,
+31695,16152,
+31696,14160,
+31700,11271,
+31701,11266,
+31704,11276,
+31705,4886,
+31706,11268,
+31707,4890,
+31708,11274,
+31709,11265,
+31710,11262,
+31711,11277,
+31712,5165,
+31713,4891,
+31714,11273,
+31715,11263,
+31716,4889,
+31717,11267,
+31718,4893,
+31719,11264,
+31720,11269,
+31721,4892,
+31722,11272,
+31723,11275,
+31728,11753,
+31729,11754,
+31730,11738,
+31731,11745,
+31732,11743,
+31735,5163,
+31736,11750,
+31737,11270,
+31738,14167,
+31739,11741,
+31740,16159,
+31741,11751,
+31742,5162,
+31743,11740,
+31744,11739,
+31745,11749,
+31746,11746,
+31747,11748,
+31749,11736,
+31750,11752,
+31751,5160,
+31753,11747,
+31754,11756,
+31755,11744,
+31756,5164,
+31757,5161,
+31758,11742,
+31759,11737,
+31760,11755,
+31761,4887,
+31762,18218,
+31765,16481,
+31769,12152,
+31771,17369,
+31772,12150,
+31773,12156,
+31774,5384,
+31775,12154,
+31776,12153,
+31777,5386,
+31778,12159,
+31779,5385,
+31781,12160,
+31782,12157,
+31783,5382,
+31784,12158,
+31785,12151,
+31786,5383,
+31787,5381,
+31788,12502,
+31789,12155,
+31792,12161,
+31795,12499,
+31797,14169,
+31799,5543,
+31800,5541,
+31801,12501,
+31803,12503,
+31804,12500,
+31805,5542,
+31806,5539,
+31807,5540,
+31808,5544,
+31810,16156,
+31811,5675,
+31812,14171,
+31813,12818,
+31815,12817,
+31816,12815,
+31817,12814,
+31818,12816,
+31820,5674,
+31821,5676,
+31824,5761,
+31825,16312,
+31827,13034,
+31828,13033,
+31830,16127,
+31831,13211,
+31833,13213,
+31834,13215,
+31835,13214,
+31836,13212,
+31837,15167,
+31839,5841,
+31840,5840,
+31843,5889,
+31844,5888,
+31845,5890,
+31846,13355,
+31847,13354,
+31849,13526,
+31850,13459,
+31851,13527,
+31852,5957,
+31853,15168,
+31854,5958,
+31855,13575,
+31856,16210,
+31858,5995,
+31859,1015,
+31860,18076,
+31861,6693,
+31864,7099,
+31865,7100,
+31866,7098,
+31867,18221,
+31868,15177,
+31869,1996,
+31870,16154,
+31871,7101,
+31872,7102,
+31873,7103,
+31875,14172,
+31876,7574,
+31877,7580,
+31878,16157,
+31880,7578,
+31881,2410,
+31882,7576,
+31884,7577,
+31885,7579,
+31886,15176,
+31889,7575,
+31890,2896,
+31892,8160,
+31893,2898,
+31894,8162,
+31895,2897,
+31896,8161,
+31900,18222,
+31902,8797,
+31903,3341,
+31905,8799,
+31906,8796,
+31907,8163,
+31909,3342,
+31910,14174,
+31911,14061,
+31912,8798,
+31916,14469,
+31918,15178,
+31919,9470,
+31921,3771,
+31922,9468,
+31923,3772,
+31924,9469,
+31925,3773,
+31928,18224,
+31929,4184,
+31930,10109,
+31931,10106,
+31932,10108,
+31933,4185,
+31934,4186,
+31935,10107,
+31938,16343,
+31941,10672,
+31943,14177,
+31944,10673,
+31945,14176,
+31946,4564,
+31947,10675,
+31948,10674,
+31949,15173,
+31950,289,
+31952,11281,
+31953,11282,
+31954,11278,
+31955,15708,
+31956,11279,
+31957,4894,
+31958,4895,
+31959,11280,
+31961,5171,
+31962,16345,
+31964,5167,
+31965,5172,
+31966,5168,
+31967,5170,
+31968,5166,
+31970,5169,
+31974,14178,
+31975,5387,
+31976,11757,
+31978,12505,
+31980,12504,
+31981,17370,
+31982,12819,
+31983,5677,
+31984,5678,
+31985,13217,
+31986,13035,
+31987,14180,
+31988,13216,
+31989,14181,
+31990,13528,
+31991,13597,
+31992,1016,
+31993,17656,
+31995,1275,
+31996,17773,
+31997,6694,
+31998,1639,
+32000,1999,
+32001,7106,
+32002,1997,
+32003,7104,
+32004,2002,
+32005,1998,
+32006,2003,
+32007,2001,
+32008,7105,
+32009,2000,
+32010,2414,
+32011,2413,
+32012,7591,
+32013,2422,
+32014,7584,
+32015,7590,
+32016,2418,
+32017,7583,
+32018,7589,
+32019,7587,
+32020,2417,
+32021,2419,
+32022,7586,
+32023,2412,
+32024,7585,
+32025,2423,
+32026,2420,
+32027,2424,
+32028,2421,
+32029,7582,
+32030,7581,
+32031,7588,
+32032,2415,
+32033,2411,
+32034,2416,
+32037,16094,
+32040,8178,
+32041,8171,
+32043,3347,
+32044,8170,
+32046,2902,
+32047,2909,
+32048,2906,
+32049,2912,
+32050,2911,
+32051,2907,
+32053,8164,
+32054,8167,
+32056,8166,
+32057,2903,
+32058,8168,
+32059,8177,
+32060,2904,
+32061,8165,
+32062,8174,
+32063,8175,
+32064,2905,
+32065,8172,
+32066,2910,
+32067,2900,
+32068,2908,
+32069,8169,
+32070,2899,
+32071,8173,
+32074,8176,
+32077,16349,
+32078,8816,
+32079,8807,
+32080,3344,
+32081,8814,
+32082,8811,
+32083,8803,
+32084,8812,
+32085,3346,
+32086,8804,
+32088,8800,
+32090,16019,
+32091,3779,
+32092,8809,
+32093,14185,
+32094,3343,
+32095,8815,
+32097,3350,
+32098,3352,
+32099,8802,
+32102,3351,
+32103,8805,
+32104,3345,
+32105,8813,
+32106,8806,
+32107,8810,
+32109,8808,
+32110,3348,
+32111,8801,
+32112,3353,
+32113,2901,
+32114,3349,
+32115,3354,
+32121,3775,
+32122,9477,
+32123,9479,
+32124,9481,
+32125,9485,
+32127,9475,
+32128,9473,
+32129,3777,
+32131,9480,
+32132,9484,
+32133,9476,
+32134,9472,
+32136,9471,
+32137,14187,
+32140,9482,
+32141,9474,
+32142,9478,
+32143,3778,
+32145,3776,
+32146,9486,
+32147,3774,
+32148,9483,
+32150,10126,
+32151,15187,
+32156,4189,
+32157,10118,
+32158,4577,
+32159,10128,
+32160,4192,
+32161,10132,
+32162,4198,
+32163,10113,
+32164,18135,
+32166,10129,
+32167,10110,
+32168,15516,
+32169,10131,
+32170,10114,
+32171,14188,
+32172,4205,
+32173,4202,
+32174,10130,
+32175,10124,
+32176,4188,
+32177,4196,
+32178,4195,
+32179,14190,
+32180,4194,
+32181,4200,
+32183,10111,
+32184,4201,
+32185,10125,
+32186,4197,
+32187,4187,
+32188,10127,
+32189,4190,
+32190,4191,
+32191,4199,
+32192,10116,
+32193,10115,
+32194,10112,
+32196,10120,
+32197,10117,
+32198,10121,
+32199,4204,
+32201,10133,
+32202,4193,
+32203,10122,
+32204,10123,
+32205,17774,
+32206,10119,
+32207,18229,
+32208,18231,
+32210,4203,
+32211,15182,
+32212,18230,
+32214,14191,
+32215,10680,
+32216,4569,
+32217,4578,
+32218,4574,
+32219,10677,
+32220,15180,
+32221,4571,
+32222,4575,
+32223,10689,
+32224,4565,
+32225,10681,
+32227,4573,
+32228,14194,
+32229,14198,
+32230,10684,
+32231,10679,
+32232,4572,
+32233,4576,
+32234,10678,
+32236,4570,
+32238,10688,
+32239,4567,
+32240,10687,
+32241,10686,
+32242,4579,
+32243,10440,
+32244,4566,
+32245,14196,
+32246,10685,
+32247,10676,
+32249,4580,
+32250,10683,
+32251,4568,
+32253,18232,
+32254,15567,
+32259,10682,
+32263,15181,
+32264,4898,
+32265,4903,
+32266,4896,
+32267,11295,
+32268,11286,
+32269,11298,
+32270,11290,
+32271,11296,
+32272,4904,
+32273,4897,
+32274,11283,
+32275,11289,
+32276,11299,
+32277,11292,
+32278,11297,
+32279,11285,
+32282,11293,
+32283,4899,
+32284,11291,
+32285,4902,
+32286,4901,
+32287,11287,
+32288,11288,
+32289,11284,
+32290,11294,
+32291,4900,
+32292,11301,
+32293,11300,
+32295,14207,
+32297,11768,
+32298,11764,
+32299,5179,
+32301,11758,
+32302,5173,
+32303,5189,
+32304,11770,
+32305,5181,
+32306,5177,
+32307,11761,
+32308,5184,
+32309,5187,
+32310,11772,
+32311,5176,
+32312,11763,
+32313,5185,
+32314,11774,
+32315,11771,
+32316,11759,
+32317,5180,
+32318,5174,
+32319,5188,
+32320,11766,
+32321,5183,
+32322,11760,
+32323,5178,
+32324,11773,
+32325,5182,
+32326,5175,
+32327,11767,
+32328,5186,
+32329,11765,
+32332,11769,
+32336,12163,
+32337,12169,
+32338,5393,
+32339,12172,
+32340,5388,
+32341,5389,
+32342,12164,
+32343,12171,
+32344,12166,
+32345,5394,
+32346,5391,
+32348,12162,
+32350,5390,
+32351,12168,
+32352,12170,
+32353,5392,
+32354,12167,
+32355,12165,
+32357,18130,
+32359,14182,
+32360,12515,
+32361,5548,
+32362,5549,
+32363,5545,
+32365,5546,
+32366,14203,
+32367,12511,
+32368,12509,
+32370,12513,
+32371,5550,
+32372,12514,
+32373,12507,
+32374,12506,
+32375,12510,
+32376,12508,
+32377,5547,
+32378,12512,
+32379,12820,
+32380,5681,
+32381,5680,
+32382,12821,
+32383,15953,
+32384,12823,
+32385,12822,
+32386,5682,
+32390,13040,
+32391,13037,
+32392,13038,
+32394,13036,
+32395,13039,
+32396,5763,
+32397,13041,
+32398,16073,
+32399,5762,
+32401,13218,
+32402,18078,
+32403,5891,
+32404,5893,
+32405,13356,
+32406,5892,
+32407,13460,
+32408,13530,
+32409,13532,
+32410,13529,
+32411,13531,
+32412,5977,
+32415,18619,
+32420,17755,
+32428,17756,
+32442,17757,
+32455,17758,
+32463,17759,
+32479,17760,
+32518,17761,
+32566,1017,
+32567,17762,
+32568,2004,
+32569,7455,
+32570,2425,
+32573,2913,
+32574,8817,
+32575,8818,
+32576,14208,
+32577,14209,
+32579,11302,
+32580,5190,
+32581,11775,
+32583,14210,
+32584,5395,
+32585,15977,
+32586,12517,
+32587,12516,
+32588,5683,
+32589,13042,
+32590,15183,
+32591,13219,
+32592,5926,
+32593,6162,
+32594,17654,
+32595,17657,
+32596,1640,
+32597,1276,
+32600,7107,
+32603,7597,
+32604,7592,
+32605,7596,
+32606,7594,
+32607,2426,
+32608,7595,
+32609,7593,
+32611,8179,
+32613,8819,
+32614,8820,
+32615,9489,
+32616,9490,
+32617,3781,
+32618,3782,
+32619,9488,
+32620,9491,
+32621,9487,
+32622,3780,
+32624,4206,
+32625,16391,
+32626,3783,
+32627,10134,
+32629,4581,
+32630,10690,
+32631,4582,
+32632,16251,
+32633,4905,
+32634,11305,
+32635,11303,
+32636,11304,
+32637,11778,
+32638,11777,
+32639,11776,
+32643,12518,
+32645,5551,
+32646,12519,
+32647,13220,
+32648,5927,
+32649,13461,
+32650,1018,
+32651,1642,
+32652,1641,
+32653,7109,
+32654,2005,
+32655,16924,
+32657,7108,
+32658,7599,
+32659,17371,
+32660,2427,
+32661,8180,
+32662,7598,
+32663,14214,
+32666,2915,
+32667,8183,
+32668,8181,
+32669,8182,
+32670,2914,
+32672,8822,
+32673,8823,
+32674,8821,
+32675,14216,
+32676,3786,
+32677,9493,
+32678,9492,
+32679,9494,
+32680,3785,
+32681,3784,
+32684,10691,
+32685,10693,
+32686,17372,
+32687,4583,
+32688,10692,
+32689,11306,
+32690,4906,
+32691,12174,
+32692,18233,
+32693,12173,
+32694,5552,
+32695,12520,
+32696,5554,
+32697,5553,
+32698,12824,
+32699,13043,
+32700,5764,
+32701,1019,
+32702,7110,
+32703,2006,
+32704,7602,
+32705,2429,
+32706,7601,
+32707,7600,
+32709,2428,
+32711,8189,
+32713,8191,
+32714,8184,
+32715,8185,
+32716,2916,
+32717,8186,
+32718,2917,
+32719,8190,
+32720,8187,
+32721,8188,
+32722,2918,
+32724,3356,
+32725,3357,
+32727,8824,
+32731,9495,
+32732,9496,
+32733,15198,
+32734,10138,
+32735,4209,
+32736,4207,
+32737,4208,
+32738,10135,
+32739,10136,
+32741,10137,
+32742,10698,
+32743,18153,
+32744,10699,
+32745,4584,
+32746,10696,
+32747,10695,
+32748,10697,
+32749,10694,
+32750,4909,
+32751,11307,
+32752,4907,
+32753,4908,
+32754,11780,
+32755,5191,
+32756,11779,
+32757,12031,
+32759,12175,
+32760,12176,
+32761,5396,
+32762,14222,
+32763,5397,
+32764,5192,
+32765,12521,
+32766,12522,
+32767,12825,
+32768,5684,
+32769,1020,
+32770,17661,
+32771,1021,
+32772,2431,
+32773,1643,
+32774,2430,
+32775,7111,
+32776,14225,
+32779,3358,
+32780,1022,
+32781,2008,
+32782,7112,
+32783,7113,
+32784,2007,
+32785,2009,
+32786,1023,
+32788,7114,
+32789,2433,
+32790,7603,
+32791,2435,
+32792,2432,
+32793,2434,
+32795,8194,
+32796,2919,
+32797,14226,
+32798,8193,
+32799,8192,
+32800,18236,
+32801,9497,
+32804,10139,
+32805,18237,
+32806,4585,
+32808,4910,
+32809,11309,
+32810,11308,
+32812,11781,
+32814,18238,
+32815,14228,
+32816,13044,
+32817,18239,
+32819,1024,
+32820,6360,
+32821,6695,
+32822,2010,
+32823,7115,
+32825,7605,
+32827,14231,
+32828,14232,
+32829,2436,
+32830,7604,
+32831,2437,
+32835,8196,
+32838,2921,
+32839,8195,
+32840,8197,
+32842,2920,
+32847,8826,
+32848,8827,
+32849,8825,
+32850,3359,
+32852,18240,
+32854,3787,
+32856,3788,
+32858,4211,
+32859,16357,
+32860,10141,
+32861,10140,
+32862,4210,
+32865,14233,
+32866,16355,
+32867,16348,
+32868,10700,
+32870,16347,
+32871,10701,
+32876,11310,
+32879,5196,
+32880,5195,
+32881,5193,
+32882,5194,
+32883,5197,
+32885,12177,
+32886,5399,
+32887,5398,
+32888,12523,
+32889,12826,
+32893,5843,
+32894,5842,
+32895,1025,
+32896,17662,
+32898,7404,
+32900,3790,
+32901,3360,
+32902,3789,
+32903,4212,
+32905,1026,
+32906,6067,
+32907,1027,
+32908,1028,
+32911,6696,
+32912,6363,
+32914,6364,
+32915,1278,
+32917,6361,
+32918,1277,
+32920,1280,
+32921,6362,
+32922,1282,
+32923,1281,
+32924,6365,
+32925,1279,
+32927,17782,
+32929,1648,
+32930,1646,
+32931,6698,
+32933,1645,
+32935,14240,
+32937,1650,
+32938,1652,
+32939,1649,
+32941,6701,
+32942,6697,
+32943,1653,
+32945,1647,
+32946,1283,
+32948,1651,
+32949,6700,
+32950,16046,
+32951,18243,
+32952,6699,
+32954,1644,
+32956,17778,
+32957,15995,
+32962,7121,
+32963,2014,
+32964,2015,
+32965,7123,
+32966,15220,
+32967,7117,
+32968,7120,
+32969,7129,
+32970,7127,
+32972,2016,
+32973,7133,
+32974,2019,
+32975,7130,
+32976,7122,
+32977,7119,
+32980,8829,
+32981,7128,
+32982,2011,
+32983,7131,
+32984,7116,
+32985,7125,
+32986,2013,
+32987,2018,
+32988,7126,
+32989,2022,
+32990,2020,
+32992,7118,
+32993,2017,
+32995,7124,
+32996,2021,
+32997,2012,
+32998,7132,
+33001,18244,
+33004,17897,
+33005,2442,
+33007,2451,
+33008,2440,
+33009,2438,
+33010,7607,
+33011,2446,
+33012,2443,
+33013,7609,
+33014,17780,
+33016,2445,
+33017,7608,
+33018,7606,
+33019,7611,
+33020,2450,
+33021,2448,
+33022,8828,
+33024,7612,
+33025,7610,
+33026,2439,
+33027,16359,
+33029,2441,
+33030,2444,
+33031,14242,
+33032,2447,
+33033,15221,
+33034,2449,
+33036,18246,
+33038,18247,
+33042,18248,
+33044,18249,
+33045,8207,
+33046,2923,
+33047,15981,
+33048,8198,
+33049,8200,
+33050,14243,
+33051,8201,
+33053,8209,
+33054,8205,
+33055,8203,
+33057,8206,
+33058,8210,
+33059,2924,
+33060,2928,
+33061,8199,
+33063,8208,
+33065,2926,
+33066,14905,
+33067,2925,
+33068,8204,
+33069,8202,
+33071,2922,
+33072,2927,
+33074,15993,
+33076,17900,
+33079,15218,
+33081,3366,
+33082,8837,
+33085,8835,
+33086,3368,
+33090,15222,
+33091,8830,
+33092,9511,
+33094,3367,
+33095,8834,
+33096,15990,
+33098,8831,
+33099,3363,
+33100,3369,
+33101,8836,
+33102,3365,
+33103,8833,
+33104,4213,
+33105,3364,
+33106,8832,
+33107,3370,
+33108,3362,
+33109,3361,
+33110,18252,
+33113,18253,
+33114,18254,
+33115,9503,
+33116,9501,
+33118,9507,
+33120,9499,
+33121,9512,
+33122,9504,
+33124,9498,
+33125,3794,
+33126,3800,
+33127,9509,
+33129,9502,
+33131,3797,
+33133,17348,
+33134,3795,
+33135,9510,
+33136,3792,
+33137,3791,
+33138,9505,
+33139,3796,
+33140,3371,
+33142,9508,
+33143,9500,
+33144,3793,
+33145,3798,
+33146,3799,
+33148,18256,
+33151,4218,
+33152,4214,
+33154,4219,
+33155,10144,
+33156,17349,
+33158,10143,
+33159,10145,
+33160,4216,
+33161,10142,
+33162,4217,
+33163,10148,
+33164,10147,
+33165,10146,
+33167,4215,
+33171,17350,
+33173,10705,
+33175,10708,
+33176,4591,
+33177,10707,
+33178,4590,
+33179,4586,
+33180,4587,
+33181,4588,
+33182,10704,
+33183,10703,
+33184,4589,
+33186,10706,
+33187,10702,
+33189,18259,
+33190,11312,
+33191,11322,
+33192,4913,
+33193,4912,
+33194,17252,
+33195,11316,
+33196,11318,
+33198,11313,
+33200,11317,
+33201,11311,
+33202,11320,
+33203,4911,
+33204,11319,
+33205,11315,
+33206,16050,
+33207,11321,
+33209,11314,
+33210,5200,
+33211,11782,
+33212,11788,
+33213,5204,
+33214,5206,
+33215,5203,
+33216,5202,
+33217,18261,
+33218,5201,
+33219,5199,
+33220,11783,
+33221,11786,
+33222,5198,
+33223,11787,
+33224,16366,
+33225,5205,
+33226,11785,
+33228,11784,
+33229,5400,
+33231,5401,
+33232,12180,
+33233,12178,
+33234,12179,
+33237,12525,
+33239,12524,
+33240,5555,
+33241,12828,
+33242,5685,
+33243,12827,
+33245,13045,
+33246,13221,
+33247,5844,
+33248,13533,
+33249,13534,
+33250,5894,
+33251,1029,
+33252,18262,
+33253,1654,
+33254,8838,
+33255,4220,
+33256,5207,
+33257,11789,
+33258,1030,
+33260,2453,
+33261,2452,
+33262,8839,
+33263,17105,
+33266,11323,
+33267,1031,
+33268,2023,
+33270,15713,
+33271,8840,
+33272,8841,
+33273,8842,
+33274,4221,
+33275,4914,
+33276,1032,
+33278,1655,
+33279,7134,
+33280,2454,
+33281,7613,
+33282,2929,
+33284,8843,
+33285,3801,
+33287,4222,
+33288,4915,
+33289,5208,
+33290,5402,
+33291,12526,
+33292,1033,
+33293,1656,
+33296,2455,
+33297,8211,
+33298,3372,
+33300,4223,
+33301,10149,
+33302,10709,
+33304,14250,
+33306,16353,
+33307,1034,
+33308,3373,
+33309,9513,
+33310,4224,
+33311,1035,
+33312,6702,
+33313,7135,
+33314,2024,
+33317,7615,
+33318,16909,
+33320,2458,
+33321,14256,
+33322,2456,
+33323,2457,
+33324,2459,
+33325,16080,
+33327,7614,
+33330,8216,
+33331,8213,
+33332,8215,
+33333,2930,
+33334,2932,
+33335,2931,
+33336,8212,
+33337,2933,
+33338,8214,
+33340,8844,
+33341,8845,
+33342,17794,
+33343,8846,
+33344,9516,
+33346,9517,
+33348,9515,
+33349,9518,
+33351,3802,
+33353,9514,
+33355,4225,
+33358,10714,
+33359,10710,
+33360,10713,
+33361,10715,
+33362,10712,
+33363,10711,
+33364,18263,
+33365,11324,
+33366,11325,
+33367,11326,
+33368,4916,
+33369,4917,
+33370,11791,
+33371,11790,
+33372,11792,
+33374,12182,
+33375,12181,
+33377,12528,
+33378,15226,
+33379,12529,
+33380,12527,
+33381,15227,
+33382,5686,
+33384,12829,
+33385,12830,
+33387,13222,
+33388,13357,
+33389,13462,
+33390,1036,
+33391,1284,
+33393,5209,
+33394,1037,
+33396,8217,
+33397,8847,
+33398,18265,
+33399,5934,
+33400,6163,
+33401,18210,
+33402,17763,
+33403,14280,
+33404,6164,
+33405,6166,
+33406,1038,
+33407,6167,
+33408,6165,
+33411,6373,
+33412,6374,
+33413,6368,
+33415,16690,
+33418,6372,
+33419,1286,
+33421,1287,
+33422,6369,
+33423,6367,
+33424,6366,
+33425,6370,
+33426,1285,
+33427,6371,
+33428,7136,
+33432,6707,
+33433,1659,
+33434,6706,
+33435,6708,
+33437,1658,
+33438,6713,
+33439,1662,
+33440,6703,
+33441,6717,
+33442,6723,
+33443,1669,
+33444,6720,
+33445,1666,
+33446,15731,
+33447,6710,
+33448,6716,
+33449,6718,
+33450,14268,
+33451,6705,
+33452,1665,
+33453,1660,
+33454,6711,
+33455,1667,
+33456,1670,
+33457,1664,
+33459,1657,
+33460,6715,
+33461,6709,
+33462,6722,
+33463,1672,
+33464,1668,
+33465,1663,
+33466,6714,
+33467,2460,
+33468,6712,
+33469,1661,
+33470,1671,
+33472,6704,
+33474,6719,
+33475,6721,
+33476,17891,
+33482,18266,
+33487,17764,
+33488,14273,
+33489,2041,
+33490,2035,
+33491,2043,
+33492,2040,
+33493,7143,
+33494,7146,
+33495,2036,
+33496,18267,
+33497,7137,
+33499,2029,
+33500,2039,
+33502,2042,
+33503,2044,
+33504,7158,
+33505,7149,
+33506,14281,
+33507,2028,
+33508,7157,
+33509,2032,
+33510,2030,
+33511,2025,
+33512,7141,
+33514,7156,
+33515,7145,
+33516,7148,
+33517,7161,
+33518,16408,
+33519,2045,
+33520,7155,
+33521,2037,
+33522,7150,
+33523,7160,
+33524,7147,
+33525,7151,
+33526,7154,
+33527,15991,
+33529,7139,
+33530,7159,
+33531,7153,
+33532,16685,
+33533,15762,
+33534,7138,
+33535,17374,
+33536,7142,
+33537,2038,
+33538,2033,
+33539,2026,
+33540,2031,
+33541,2027,
+33542,2046,
+33543,7140,
+33544,7632,
+33545,2034,
+33547,16054,
+33548,7152,
+33549,6781,
+33558,7635,
+33559,2474,
+33560,14282,
+33561,7619,
+33562,14274,
+33563,7630,
+33564,7626,
+33565,14289,
+33566,7645,
+33568,7637,
+33570,7627,
+33572,7636,
+33573,7621,
+33574,7625,
+33575,7648,
+33576,2477,
+33577,7640,
+33578,7631,
+33579,2461,
+33580,7646,
+33581,7617,
+33583,7639,
+33585,2476,
+33586,2471,
+33587,7616,
+33588,2469,
+33589,2468,
+33590,2473,
+33591,7638,
+33592,2465,
+33593,2472,
+33594,7144,
+33595,8848,
+33596,7633,
+33597,15658,
+33599,7623,
+33600,2475,
+33601,7624,
+33602,7628,
+33603,2478,
+33604,7618,
+33605,7642,
+33607,7641,
+33608,7649,
+33609,2467,
+33610,2464,
+33611,7647,
+33612,7643,
+33613,7634,
+33614,7629,
+33615,2470,
+33616,2466,
+33617,7620,
+33618,2462,
+33619,7644,
+33620,2463,
+33622,7622,
+33623,18269,
+33634,14262,
+33635,16875,
+33638,15902,
+33647,17765,
+33651,8223,
+33652,8225,
+33653,8230,
+33654,8250,
+33655,2947,
+33656,2937,
+33658,8222,
+33659,2948,
+33660,2949,
+33661,8233,
+33662,8240,
+33663,8246,
+33665,8227,
+33667,8234,
+33669,14291,
+33670,2950,
+33671,8248,
+33672,8243,
+33673,2945,
+33674,2943,
+33675,8239,
+33676,8235,
+33677,8221,
+33678,2934,
+33679,8226,
+33680,8218,
+33681,14316,
+33682,2942,
+33683,2944,
+33684,8231,
+33685,8228,
+33686,2939,
+33687,8244,
+33688,2936,
+33689,8229,
+33690,8889,
+33691,8237,
+33692,14157,
+33693,8236,
+33694,2935,
+33696,2946,
+33698,2938,
+33699,8219,
+33700,8224,
+33701,8241,
+33702,8247,
+33703,2951,
+33704,8220,
+33705,8232,
+33706,8238,
+33707,2941,
+33708,14294,
+33710,8249,
+33711,8242,
+33712,8245,
+33721,17063,
+33725,2940,
+33726,16217,
+33727,8864,
+33728,8852,
+33729,3381,
+33730,8881,
+33731,8890,
+33732,8893,
+33733,3379,
+33734,8860,
+33735,8885,
+33736,8861,
+33737,8875,
+33738,3392,
+33739,8871,
+33740,3389,
+33741,16469,
+33742,8872,
+33743,8849,
+33745,8886,
+33747,14296,
+33748,3398,
+33749,8883,
+33750,8873,
+33751,8895,
+33752,8868,
+33753,9550,
+33755,8898,
+33756,3396,
+33757,8866,
+33758,8878,
+33759,3399,
+33760,3378,
+33761,8870,
+33762,8896,
+33763,8863,
+33764,8856,
+33765,8867,
+33767,8855,
+33768,8853,
+33769,3374,
+33770,8887,
+33771,8862,
+33772,8891,
+33773,15660,
+33774,8892,
+33775,3382,
+33776,3387,
+33777,3383,
+33778,3391,
+33779,8882,
+33780,3384,
+33781,8874,
+33782,8858,
+33784,3376,
+33785,8850,
+33786,8884,
+33787,8894,
+33788,8857,
+33789,3390,
+33790,8899,
+33791,8869,
+33793,8865,
+33795,3375,
+33796,3395,
+33797,18271,
+33798,8880,
+33799,3397,
+33801,8876,
+33802,3386,
+33803,3380,
+33804,3388,
+33805,3377,
+33806,3394,
+33807,8877,
+33808,8859,
+33809,8879,
+33810,8854,
+33811,8888,
+33812,15376,
+33814,16439,
+33816,15994,
+33819,8897,
+33820,16051,
+33824,15445,
+33825,14161,
+33827,8851,
+33828,18769,
+33830,18136,
+33833,9549,
+33835,9571,
+33836,3756,
+33837,9554,
+33838,16941,
+33839,9552,
+33840,9531,
+33841,3806,
+33842,9547,
+33843,9567,
+33844,9543,
+33845,3814,
+33846,9566,
+33847,9541,
+33848,3393,
+33849,9557,
+33850,9542,
+33851,9564,
+33852,3813,
+33853,3805,
+33854,15649,
+33855,9520,
+33856,9528,
+33858,9553,
+33859,9545,
+33860,9570,
+33861,9548,
+33862,3819,
+33863,9565,
+33864,18200,
+33865,3810,
+33866,14308,
+33867,9551,
+33868,9559,
+33869,9532,
+33870,9558,
+33872,9575,
+33873,9527,
+33874,9560,
+33875,15229,
+33876,9573,
+33877,14731,
+33878,9521,
+33879,3385,
+33880,14302,
+33881,9535,
+33882,9534,
+33883,3812,
+33884,16091,
+33885,9538,
+33886,9540,
+33887,9555,
+33888,9572,
+33889,3815,
+33890,17114,
+33891,3816,
+33892,18273,
+33893,9526,
+33894,3808,
+33895,9530,
+33896,9568,
+33897,3817,
+33899,3809,
+33900,3811,
+33901,3818,
+33902,9574,
+33903,9561,
+33904,9556,
+33905,14304,
+33906,15507,
+33907,9537,
+33908,9536,
+33909,3807,
+33910,9522,
+33911,3804,
+33912,9546,
+33913,9523,
+33914,9544,
+33917,9533,
+33918,9569,
+33919,14670,
+33920,15214,
+33922,3803,
+33926,9529,
+33928,18274,
+33933,9525,
+33934,9563,
+33935,9524,
+33936,4238,
+33937,10189,
+33938,14166,
+33939,14318,
+33940,10172,
+33942,15133,
+33943,10150,
+33944,10180,
+33945,4230,
+33946,10165,
+33947,10175,
+33948,4233,
+33949,10168,
+33950,4231,
+33951,10153,
+33952,10183,
+33953,10152,
+33954,10171,
+33955,15262,
+33956,10151,
+33959,10169,
+33960,10178,
+33961,10176,
+33962,10164,
+33963,10159,
+33964,10157,
+33965,15756,
+33966,10158,
+33967,10177,
+33968,10188,
+33969,10166,
+33970,4232,
+33972,10161,
+33974,10181,
+33976,4235,
+33977,10160,
+33978,10154,
+33979,10170,
+33980,4239,
+33981,15436,
+33982,18276,
+33983,4227,
+33984,4236,
+33985,10162,
+33986,10156,
+33988,4229,
+33989,9562,
+33990,4228,
+33991,10173,
+33993,4226,
+33994,4241,
+33995,4234,
+33996,10174,
+33997,10163,
+33998,10155,
+33999,10182,
+34000,10167,
+34001,4240,
+34002,10186,
+34003,4237,
+34004,10185,
+34006,10179,
+34007,10184,
+34010,16373,
+34011,10187,
+34014,14314,
+34017,18277,
+34018,14261,
+34020,14319,
+34021,15312,
+34023,10755,
+34024,10756,
+34025,10743,
+34026,10742,
+34027,10738,
+34028,4603,
+34030,4595,
+34031,10758,
+34032,10757,
+34033,9519,
+34034,10735,
+34035,10739,
+34036,10733,
+34038,10752,
+34039,10737,
+34040,18278,
+34041,10759,
+34042,10730,
+34043,10728,
+34044,10740,
+34045,10750,
+34046,10745,
+34047,4605,
+34048,10719,
+34050,10749,
+34051,14730,
+34053,16619,
+34054,4606,
+34055,9539,
+34056,10731,
+34057,10722,
+34058,10725,
+34059,10763,
+34060,10732,
+34061,10723,
+34062,10721,
+34063,10718,
+34064,18279,
+34065,4599,
+34066,10741,
+34067,4598,
+34068,4602,
+34069,10736,
+34070,10744,
+34071,4592,
+34072,10760,
+34073,10764,
+34074,4594,
+34076,10727,
+34077,10747,
+34078,10751,
+34079,10724,
+34080,10761,
+34081,4601,
+34083,4600,
+34084,10716,
+34085,4604,
+34086,10754,
+34087,10726,
+34088,10746,
+34089,10720,
+34090,10734,
+34091,10729,
+34092,4596,
+34093,4597,
+34094,10748,
+34095,10765,
+34096,10762,
+34097,10753,
+34099,16936,
+34100,14324,
+34104,18280,
+34107,10717,
+34109,4593,
+34110,11343,
+34112,11334,
+34113,11337,
+34114,16482,
+34115,4923,
+34116,11339,
+34117,11328,
+34118,11335,
+34119,11341,
+34120,4920,
+34121,4924,
+34122,4918,
+34123,14272,
+34124,16399,
+34125,11330,
+34126,11346,
+34129,11340,
+34130,18281,
+34131,11331,
+34132,11355,
+34133,11349,
+34134,11327,
+34135,11811,
+34136,11333,
+34137,4919,
+34138,14299,
+34139,11344,
+34141,11354,
+34142,4927,
+34144,11351,
+34145,11332,
+34146,11338,
+34147,11342,
+34148,11336,
+34149,11356,
+34150,11353,
+34151,11350,
+34152,4921,
+34153,4922,
+34154,4926,
+34155,11329,
+34156,11357,
+34157,4925,
+34158,11347,
+34159,18283,
+34160,18284,
+34161,11345,
+34163,14328,
+34165,11348,
+34166,11824,
+34167,11805,
+34168,11810,
+34169,11823,
+34170,11809,
+34171,11801,
+34172,11806,
+34174,5212,
+34176,11794,
+34177,11818,
+34178,11820,
+34179,11793,
+34180,5211,
+34181,11822,
+34182,11814,
+34183,5218,
+34184,11821,
+34185,11807,
+34186,5220,
+34187,11799,
+34188,11352,
+34189,11815,
+34190,11812,
+34191,11795,
+34192,11826,
+34193,5214,
+34196,5215,
+34197,11797,
+34198,11813,
+34200,11825,
+34201,11816,
+34202,11803,
+34203,5217,
+34204,5213,
+34205,11817,
+34206,11804,
+34207,11827,
+34208,11798,
+34209,11808,
+34210,11819,
+34211,11800,
+34212,11802,
+34214,5221,
+34215,11796,
+34216,5219,
+34217,5404,
+34218,5210,
+34223,5216,
+34224,5408,
+34225,12198,
+34227,12188,
+34228,12183,
+34229,12189,
+34230,12199,
+34231,12203,
+34232,12202,
+34233,5410,
+34234,5409,
+34237,12190,
+34238,12204,
+34239,12193,
+34240,12185,
+34241,14334,
+34242,12187,
+34243,12186,
+34244,12192,
+34245,12197,
+34246,12184,
+34247,12191,
+34248,12196,
+34249,5407,
+34251,12194,
+34253,5405,
+34254,12195,
+34255,5403,
+34256,5406,
+34257,12545,
+34258,12200,
+34261,5559,
+34263,12537,
+34264,12541,
+34265,12533,
+34266,12536,
+34268,12544,
+34269,5557,
+34270,12549,
+34271,12542,
+34272,18285,
+34273,12534,
+34274,12550,
+34275,12543,
+34276,5560,
+34277,5561,
+34278,12547,
+34280,12535,
+34281,5556,
+34282,5558,
+34283,12530,
+34284,12538,
+34285,12532,
+34286,15446,
+34287,12548,
+34288,12546,
+34289,12531,
+34290,12539,
+34294,12837,
+34295,5562,
+34296,12540,
+34297,5688,
+34298,5690,
+34299,5687,
+34300,15440,
+34301,12842,
+34302,12834,
+34303,12832,
+34304,12836,
+34305,12833,
+34306,14336,
+34308,12838,
+34309,12840,
+34310,5691,
+34311,5693,
+34313,12839,
+34314,5694,
+34315,5692,
+34316,12841,
+34317,16484,
+34320,15231,
+34321,5689,
+34324,18110,
+34326,14331,
+34327,5765,
+34328,13046,
+34329,13052,
+34330,5767,
+34331,12835,
+34332,13051,
+34334,13058,
+34335,13049,
+34336,13056,
+34337,13055,
+34338,12831,
+34339,13050,
+34340,12201,
+34341,13059,
+34342,13048,
+34343,13053,
+34344,14341,
+34345,13057,
+34346,13047,
+34348,13226,
+34349,5766,
+34350,13054,
+34351,16286,
+34353,13362,
+34354,13227,
+34355,13225,
+34356,13223,
+34357,13224,
+34358,13228,
+34360,5895,
+34361,13360,
+34362,13358,
+34363,13363,
+34364,13361,
+34366,13364,
+34367,5896,
+34368,13359,
+34370,14529,
+34371,13463,
+34373,15206,
+34374,13535,
+34375,13536,
+34376,13537,
+34379,13630,
+34380,13622,
+34381,6168,
+34382,1673,
+34384,2047,
+34386,7651,
+34387,7650,
+34388,2479,
+34389,2952,
+34390,8252,
+34393,8251,
+34395,3400,
+34396,3821,
+34398,3820,
+34399,3822,
+34401,10190,
+34402,10766,
+34403,11358,
+34404,11360,
+34405,11359,
+34407,5222,
+34408,11828,
+34409,12205,
+34410,13598,
+34411,1039,
+34412,14355,
+34413,6726,
+34414,6727,
+34415,6725,
+34416,6724,
+34417,1674,
+34418,18287,
+34419,7165,
+34420,7163,
+34423,7162,
+34425,2048,
+34426,2050,
+34427,2049,
+34428,7164,
+34430,14346,
+34437,7663,
+34438,7660,
+34439,7658,
+34442,2480,
+34443,7661,
+34444,2485,
+34445,7655,
+34446,7670,
+34448,7672,
+34449,7656,
+34450,18288,
+34451,2482,
+34452,7673,
+34453,7668,
+34454,7654,
+34455,7659,
+34456,7669,
+34457,7665,
+34458,7662,
+34460,2487,
+34461,7671,
+34462,7657,
+34464,15240,
+34465,7666,
+34466,7652,
+34467,2486,
+34468,2483,
+34469,7664,
+34471,7667,
+34472,7653,
+34473,2484,
+34474,2481,
+34477,16134,
+34479,2962,
+34480,8259,
+34481,2961,
+34482,17376,
+34483,8262,
+34484,8265,
+34485,2958,
+34486,2956,
+34487,8254,
+34488,8263,
+34489,8261,
+34490,8258,
+34491,8266,
+34492,8267,
+34493,8269,
+34494,8270,
+34495,8253,
+34496,2955,
+34497,8256,
+34498,8255,
+34499,8268,
+34500,2957,
+34501,8257,
+34502,2959,
+34503,2954,
+34504,8260,
+34505,2963,
+34507,2960,
+34508,8264,
+34512,3407,
+34513,8914,
+34515,8903,
+34516,3404,
+34518,9581,
+34519,8912,
+34520,8900,
+34521,3402,
+34522,8905,
+34523,3405,
+34524,8909,
+34525,8907,
+34526,3408,
+34527,3401,
+34530,8901,
+34531,8904,
+34532,3406,
+34534,8902,
+34536,8913,
+34537,8911,
+34538,8906,
+34539,8908,
+34540,8910,
+34541,3403,
+34543,18289,
+34549,9582,
+34550,9588,
+34551,9578,
+34552,9584,
+34553,3823,
+34554,9580,
+34555,3829,
+34558,3828,
+34560,3827,
+34561,9587,
+34562,3830,
+34563,3831,
+34564,9577,
+34565,9590,
+34566,3832,
+34567,3826,
+34568,3825,
+34569,9586,
+34570,3833,
+34571,9576,
+34572,9579,
+34573,9589,
+34574,9585,
+34577,10222,
+34578,10211,
+34579,3824,
+34584,4248,
+34585,10199,
+34586,10220,
+34587,10200,
+34588,4243,
+34590,10197,
+34592,10206,
+34593,10198,
+34594,4245,
+34595,10192,
+34596,10219,
+34597,4246,
+34598,10216,
+34599,10217,
+34600,10193,
+34601,4251,
+34602,10208,
+34604,10202,
+34605,10209,
+34606,10196,
+34608,10221,
+34609,10213,
+34610,10207,
+34611,10191,
+34612,4247,
+34613,10214,
+34615,4250,
+34616,10218,
+34618,10212,
+34619,4244,
+34620,10210,
+34622,10204,
+34623,4242,
+34624,10195,
+34625,10203,
+34626,10215,
+34627,10201,
+34630,10205,
+34636,4616,
+34637,9583,
+34638,10784,
+34639,10793,
+34640,10783,
+34641,10779,
+34642,10776,
+34643,4617,
+34644,10774,
+34645,4249,
+34646,10767,
+34647,4615,
+34648,10773,
+34649,4614,
+34650,10778,
+34651,10775,
+34652,10791,
+34653,10786,
+34654,10780,
+34655,10785,
+34656,4610,
+34657,10777,
+34658,10796,
+34659,10768,
+34660,10769,
+34661,10792,
+34662,4611,
+34663,10797,
+34664,4613,
+34665,10798,
+34666,10782,
+34667,10194,
+34668,10788,
+34669,10781,
+34670,10790,
+34671,10787,
+34672,15980,
+34673,14347,
+34675,10772,
+34676,4608,
+34677,10795,
+34678,4609,
+34679,10770,
+34680,4612,
+34681,11371,
+34682,10789,
+34683,10794,
+34685,16453,
+34689,11368,
+34690,4607,
+34691,4928,
+34692,11378,
+34693,11374,
+34694,16048,
+34695,11372,
+34696,11367,
+34697,11382,
+34699,17378,
+34700,16367,
+34701,4932,
+34703,11363,
+34704,11375,
+34705,11376,
+34706,11366,
+34707,11365,
+34708,11379,
+34710,11369,
+34711,11364,
+34712,11370,
+34714,11381,
+34715,11362,
+34716,11380,
+34717,11377,
+34718,4930,
+34719,4929,
+34722,4931,
+34723,11373,
+34724,11361,
+34725,15752,
+34729,16364,
+34730,11830,
+34731,5228,
+34732,11834,
+34733,11831,
+34734,11838,
+34735,11844,
+34736,11833,
+34737,14351,
+34738,11853,
+34739,5225,
+34740,11847,
+34741,11836,
+34742,11848,
+34743,11843,
+34744,11850,
+34745,11835,
+34746,5230,
+34747,5229,
+34748,11837,
+34749,11851,
+34750,11829,
+34751,11849,
+34752,5223,
+34753,16380,
+34754,11841,
+34755,11840,
+34756,11845,
+34757,11832,
+34758,5227,
+34760,5231,
+34761,11839,
+34762,11846,
+34763,5232,
+34764,11842,
+34766,16365,
+34769,5224,
+34770,5226,
+34771,12218,
+34772,12216,
+34774,16274,
+34775,12222,
+34776,12220,
+34777,12223,
+34778,14352,
+34779,12209,
+34780,12217,
+34781,12227,
+34782,11852,
+34783,12213,
+34784,5414,
+34785,10771,
+34786,12208,
+34787,12221,
+34788,12215,
+34789,12212,
+34790,12207,
+34791,12206,
+34792,12226,
+34794,12211,
+34795,12210,
+34796,5412,
+34797,12219,
+34798,14349,
+34799,5411,
+34802,5413,
+34803,12214,
+34804,12225,
+34805,16302,
+34806,12554,
+34807,12555,
+34809,5566,
+34810,12552,
+34811,5563,
+34812,12560,
+34814,5567,
+34815,12562,
+34816,12551,
+34817,12224,
+34818,12564,
+34819,12553,
+34820,16047,
+34821,5564,
+34822,12559,
+34824,12561,
+34825,12556,
+34826,12563,
+34827,12558,
+34828,12557,
+34829,5565,
+34831,14353,
+34832,12844,
+34833,12845,
+34835,12847,
+34836,5695,
+34837,5696,
+34838,12848,
+34839,12846,
+34840,16250,
+34841,12843,
+34843,13062,
+34844,13065,
+34845,13061,
+34847,5771,
+34848,13063,
+34849,5770,
+34850,5769,
+34851,5768,
+34852,13064,
+34853,13233,
+34854,13231,
+34855,15879,
+34856,13230,
+34857,13060,
+34858,13232,
+34859,13066,
+34860,13229,
+34861,15243,
+34862,13367,
+34863,13333,
+34864,13365,
+34865,5897,
+34866,13366,
+34867,13368,
+34869,13466,
+34870,5928,
+34871,13465,
+34872,13464,
+34873,5929,
+34875,5959,
+34876,13576,
+34877,13600,
+34878,13599,
+34879,13601,
+34880,1040,
+34881,7166,
+34882,16218,
+34883,7674,
+34884,7675,
+34885,14358,
+34886,14359,
+34888,8915,
+34890,13067,
+34891,13467,
+34892,1041,
+34893,2051,
+34894,7167,
+34895,14404,
+34898,8271,
+34899,2964,
+34901,8917,
+34902,8916,
+34903,3409,
+34905,3834,
+34906,10799,
+34907,4618,
+34909,4619,
+34910,14363,
+34912,14918,
+34913,4933,
+34914,5930,
+34915,1042,
+34916,17666,
+34917,15868,
+34919,7168,
+34920,1676,
+34921,7170,
+34922,7169,
+34923,2052,
+34925,7676,
+34926,15246,
+34927,7683,
+34928,2488,
+34929,7681,
+34930,7679,
+34932,7686,
+34933,7677,
+34934,7678,
+34935,2489,
+34937,2493,
+34940,7687,
+34941,2492,
+34942,7685,
+34943,7682,
+34944,7680,
+34945,2490,
+34946,2491,
+34947,7684,
+34948,17143,
+34951,15248,
+34952,2966,
+34953,8272,
+34955,2971,
+34956,8288,
+34957,2970,
+34958,8290,
+34961,8278,
+34962,2968,
+34963,8289,
+34965,8273,
+34966,2969,
+34967,8285,
+34968,8281,
+34969,8283,
+34970,8277,
+34971,8284,
+34972,14364,
+34974,2965,
+34975,8280,
+34976,16288,
+34977,8279,
+34978,8275,
+34980,8286,
+34983,8282,
+34984,8274,
+34986,8276,
+34987,2967,
+34988,8287,
+34990,18293,
+34993,3412,
+34994,8928,
+34996,14366,
+34997,14367,
+34998,8924,
+34999,8926,
+35000,8921,
+35001,8920,
+35002,8918,
+35004,8925,
+35005,8927,
+35006,8923,
+35007,15249,
+35008,8922,
+35009,3410,
+35010,3411,
+35013,14368,
+35015,16049,
+35017,8930,
+35018,3842,
+35019,9592,
+35020,9598,
+35021,9593,
+35022,9594,
+35023,14058,
+35024,9599,
+35026,3844,
+35028,3836,
+35029,3843,
+35030,9591,
+35031,8919,
+35032,3839,
+35033,3837,
+35034,9597,
+35035,9596,
+35036,3838,
+35037,3840,
+35038,9595,
+35039,3835,
+35041,3841,
+35046,15250,
+35047,10224,
+35048,4258,
+35051,10235,
+35052,10234,
+35054,10229,
+35055,4260,
+35056,10233,
+35057,10225,
+35058,10226,
+35059,4252,
+35060,4254,
+35061,15880,
+35062,10231,
+35063,10223,
+35064,4256,
+35065,4255,
+35066,10227,
+35067,10232,
+35068,10230,
+35069,4257,
+35070,10228,
+35071,18294,
+35072,17146,
+35073,8929,
+35074,4253,
+35077,10800,
+35078,10807,
+35079,4621,
+35081,10811,
+35082,4625,
+35083,10803,
+35084,10801,
+35086,10810,
+35088,4620,
+35089,10809,
+35090,4622,
+35091,4623,
+35092,10802,
+35093,4624,
+35094,10808,
+35095,10804,
+35096,10805,
+35097,10806,
+35098,4259,
+35102,11383,
+35103,11395,
+35105,4938,
+35106,11390,
+35107,11392,
+35108,18295,
+35109,4936,
+35110,11384,
+35111,11388,
+35113,11391,
+35114,4934,
+35115,4937,
+35116,11394,
+35117,11386,
+35118,11387,
+35119,11393,
+35120,11385,
+35121,11389,
+35122,4935,
+35123,11855,
+35125,11854,
+35126,5234,
+35127,11860,
+35128,5236,
+35131,5233,
+35132,11856,
+35133,5237,
+35134,11857,
+35137,11858,
+35138,11861,
+35139,15894,
+35140,5235,
+35142,12232,
+35143,17379,
+35145,12235,
+35147,12229,
+35148,12231,
+35149,15252,
+35151,12230,
+35152,12233,
+35153,12234,
+35154,11859,
+35155,12228,
+35156,15254,
+35158,5570,
+35159,12568,
+35160,12571,
+35161,12573,
+35162,12566,
+35163,12567,
+35164,12570,
+35165,12572,
+35166,5571,
+35167,5569,
+35168,5568,
+35169,12569,
+35170,12565,
+35171,12849,
+35172,5697,
+35173,15251,
+35174,12850,
+35177,13069,
+35178,5772,
+35179,13071,
+35180,5773,
+35181,13068,
+35182,13070,
+35183,5846,
+35185,13234,
+35186,5845,
+35187,13371,
+35188,13370,
+35190,13369,
+35191,15850,
+35193,13538,
+35194,13539,
+35195,13541,
+35196,13540,
+35198,6169,
+35199,1043,
+35200,18184,
+35201,2053,
+35202,8291,
+35203,3413,
+35205,9600,
+35206,5415,
+35207,14370,
+35208,12574,
+35209,16361,
+35210,14371,
+35211,1288,
+35215,2973,
+35217,18296,
+35219,2972,
+35220,16352,
+35221,8931,
+35222,3414,
+35223,8933,
+35224,8932,
+35227,9601,
+35228,3845,
+35229,10236,
+35230,10239,
+35231,10238,
+35233,10237,
+35234,10812,
+35235,10814,
+35236,10813,
+35237,15763,
+35238,4940,
+35239,14374,
+35241,14373,
+35242,4939,
+35244,5238,
+35245,11862,
+35246,11864,
+35247,11863,
+35250,5416,
+35254,12576,
+35255,12575,
+35257,12851,
+35258,5698,
+35260,14375,
+35261,5774,
+35262,13236,
+35263,13235,
+35264,5960,
+35265,17667,
+35270,17766,
+35282,1289,
+35283,7171,
+35284,2054,
+35285,8294,
+35286,8292,
+35289,8293,
+35290,8935,
+35291,8936,
+35292,9608,
+35293,8934,
+35295,9602,
+35296,9606,
+35297,9605,
+35298,9607,
+35299,3846,
+35300,9604,
+35301,9603,
+35302,9609,
+35303,14377,
+35304,10242,
+35305,10240,
+35307,10241,
+35308,10817,
+35309,10815,
+35312,10816,
+35313,11396,
+35314,11865,
+35315,11866,
+35316,5417,
+35318,12577,
+35319,12852,
+35320,5699,
+35322,13072,
+35323,13237,
+35324,5847,
+35326,13372,
+35327,13542,
+35328,1290,
+35330,2056,
+35331,2057,
+35332,7172,
+35335,7173,
+35336,2055,
+35338,2499,
+35340,2497,
+35342,2496,
+35343,2503,
+35344,2495,
+35345,2504,
+35346,7688,
+35347,2501,
+35349,2498,
+35350,2502,
+35351,2500,
+35352,2494,
+35355,2981,
+35356,15267,
+35357,2975,
+35358,8298,
+35359,2980,
+35362,2982,
+35363,2976,
+35365,2977,
+35367,8296,
+35369,17381,
+35370,2974,
+35371,15313,
+35372,8297,
+35373,2979,
+35376,8295,
+35377,2978,
+35380,3425,
+35382,3427,
+35384,18298,
+35385,8939,
+35386,3426,
+35387,3415,
+35388,3419,
+35389,15266,
+35390,3865,
+35391,9614,
+35392,8941,
+35393,3420,
+35396,8944,
+35397,8945,
+35398,3424,
+35400,8947,
+35401,16368,
+35402,8949,
+35404,8950,
+35405,8938,
+35406,8937,
+35407,8951,
+35408,3423,
+35409,8948,
+35410,8946,
+35412,3421,
+35413,3417,
+35414,3428,
+35415,8942,
+35416,8943,
+35417,8940,
+35419,3422,
+35422,3418,
+35424,3416,
+35425,9613,
+35426,3860,
+35427,3855,
+35430,3850,
+35431,16270,
+35432,3866,
+35433,3851,
+35435,3847,
+35436,3862,
+35437,3859,
+35438,3861,
+35440,3852,
+35441,3857,
+35442,3848,
+35443,3849,
+35444,9621,
+35445,9618,
+35446,9610,
+35447,9615,
+35449,3863,
+35450,9622,
+35451,3864,
+35452,3854,
+35454,16293,
+35455,9612,
+35457,9620,
+35458,9616,
+35459,9619,
+35460,9617,
+35461,3858,
+35462,9611,
+35463,3853,
+35467,10245,
+35468,4262,
+35469,4265,
+35471,10247,
+35472,14383,
+35473,4273,
+35474,10246,
+35475,4267,
+35476,18299,
+35477,4630,
+35478,10248,
+35480,4272,
+35481,10244,
+35482,4274,
+35484,14380,
+35486,4263,
+35488,3856,
+35489,4266,
+35491,4264,
+35492,4268,
+35493,4270,
+35494,4261,
+35495,4275,
+35496,4271,
+35497,14397,
+35498,4269,
+35499,10243,
+35503,14401,
+35504,4637,
+35506,4633,
+35508,18300,
+35510,4640,
+35512,10820,
+35513,4641,
+35514,10832,
+35515,10825,
+35516,4626,
+35517,10833,
+35518,10827,
+35519,4636,
+35520,10828,
+35522,4635,
+35523,10831,
+35524,4629,
+35525,10829,
+35526,10819,
+35527,4628,
+35528,11407,
+35529,4634,
+35531,4631,
+35533,4639,
+35535,10818,
+35537,10822,
+35538,4627,
+35539,10821,
+35540,10823,
+35541,10824,
+35542,4638,
+35543,10826,
+35544,10830,
+35545,10834,
+35546,14786,
+35547,4642,
+35548,4946,
+35549,11402,
+35550,11408,
+35551,11405,
+35552,11397,
+35553,11409,
+35554,11398,
+35556,11404,
+35558,4941,
+35559,4947,
+35560,11410,
+35562,15833,
+35563,4943,
+35565,4953,
+35566,4948,
+35567,11412,
+35568,11406,
+35569,4944,
+35570,11399,
+35571,4954,
+35572,11400,
+35573,11401,
+35574,4955,
+35575,4952,
+35576,4632,
+35578,4942,
+35579,11413,
+35580,4956,
+35582,4949,
+35583,11411,
+35584,4945,
+35585,4950,
+35586,4951,
+35588,5246,
+35589,11871,
+35590,11880,
+35591,11877,
+35592,11879,
+35594,5243,
+35595,11872,
+35596,14390,
+35597,11878,
+35598,5239,
+35599,11874,
+35600,5247,
+35601,11870,
+35602,11875,
+35603,11882,
+35604,11403,
+35605,11876,
+35606,11869,
+35607,5240,
+35608,11868,
+35609,5241,
+35610,11883,
+35611,5242,
+35612,11881,
+35613,5245,
+35614,11867,
+35615,14391,
+35616,5244,
+35618,11873,
+35619,12238,
+35620,12252,
+35621,12247,
+35622,12249,
+35623,12237,
+35624,5418,
+35626,12236,
+35627,5421,
+35628,5420,
+35629,16281,
+35630,12251,
+35631,12243,
+35632,12240,
+35633,12246,
+35635,12239,
+35637,12241,
+35638,12250,
+35639,12248,
+35641,5419,
+35642,12255,
+35643,12253,
+35644,12244,
+35645,12254,
+35646,12245,
+35647,14394,
+35648,12581,
+35649,5572,
+35650,12588,
+35651,16370,
+35653,13075,
+35654,5579,
+35655,12242,
+35656,12579,
+35657,5575,
+35658,12580,
+35659,12585,
+35660,14395,
+35661,14396,
+35662,5577,
+35663,5578,
+35664,12578,
+35665,12587,
+35666,12589,
+35667,12582,
+35668,12584,
+35669,12586,
+35670,12583,
+35671,12590,
+35672,5574,
+35673,5580,
+35674,5576,
+35676,5573,
+35677,12855,
+35678,15800,
+35679,5704,
+35680,12853,
+35682,15828,
+35683,12857,
+35685,12858,
+35686,5702,
+35687,12859,
+35688,12856,
+35689,15351,
+35690,12854,
+35691,5705,
+35692,5701,
+35693,12860,
+35695,5703,
+35696,5700,
+35700,5775,
+35703,5776,
+35704,13074,
+35705,13073,
+35706,13076,
+35707,13077,
+35709,5777,
+35710,13238,
+35711,13243,
+35712,5848,
+35713,15757,
+35714,13240,
+35716,13239,
+35717,13242,
+35718,13241,
+35720,13376,
+35722,5898,
+35723,13375,
+35724,13373,
+35726,13374,
+35728,14399,
+35730,5932,
+35731,5931,
+35732,13468,
+35733,13469,
+35734,5933,
+35736,13543,
+35737,13544,
+35738,5972,
+35739,14400,
+35740,5978,
+35742,13602,
+35743,13631,
+35744,17669,
+35774,17767,
+35810,17768,
+35895,1291,
+35897,8299,
+35899,8300,
+35900,9623,
+35901,10249,
+35902,10835,
+35903,5249,
+35905,5248,
+35906,12256,
+35907,12591,
+35909,13377,
+35910,1292,
+35911,7689,
+35912,2505,
+35913,2983,
+35914,9625,
+35915,9624,
+35916,4643,
+35917,10836,
+35918,4644,
+35919,11884,
+35920,5422,
+35921,18301,
+35924,5987,
+35925,1293,
+35926,6728,
+35927,7690,
+35930,2984,
+35932,8301,
+35933,8302,
+35935,8952,
+35937,3429,
+35938,3867,
+35940,9627,
+35941,9626,
+35942,9628,
+35944,10250,
+35945,10251,
+35946,4276,
+35947,4957,
+35948,4645,
+35949,4958,
+35951,11888,
+35952,11885,
+35953,11887,
+35954,11886,
+35955,5250,
+35957,12257,
+35958,12593,
+35959,12592,
+35960,6375,
+35961,2507,
+35962,2506,
+35963,7691,
+35965,8303,
+35968,8954,
+35969,8953,
+35970,3430,
+35972,9630,
+35973,9631,
+35974,9629,
+35977,3869,
+35978,3868,
+35980,4278,
+35981,4277,
+35983,10837,
+35984,11416,
+35985,11414,
+35986,11415,
+35987,4959,
+35988,11890,
+35989,11889,
+35991,12260,
+35992,12259,
+35993,12258,
+35994,12594,
+35995,14405,
+35996,13603,
+35997,1294,
+35998,2058,
+35999,15277,
+36000,2059,
+36001,2508,
+36002,2509,
+36003,7693,
+36004,7692,
+36005,8304,
+36007,2990,
+36008,2988,
+36009,2985,
+36010,2989,
+36011,2987,
+36012,2986,
+36013,16369,
+36015,3431,
+36016,8957,
+36018,3874,
+36019,3433,
+36020,3438,
+36021,8959,
+36022,3440,
+36023,3439,
+36024,3442,
+36025,8958,
+36026,8955,
+36027,3436,
+36028,3432,
+36029,3434,
+36030,8956,
+36031,3441,
+36032,3437,
+36033,3435,
+36034,3876,
+36035,3875,
+36036,3873,
+36037,3877,
+36039,3871,
+36040,3872,
+36042,3870,
+36044,9632,
+36045,16025,
+36047,10253,
+36049,4280,
+36050,4281,
+36051,4279,
+36052,18302,
+36053,10252,
+36054,14411,
+36055,10254,
+36057,10840,
+36058,10842,
+36059,14417,
+36060,4654,
+36061,10843,
+36062,4647,
+36063,10839,
+36064,4646,
+36065,4656,
+36066,4652,
+36067,4653,
+36068,4649,
+36069,10838,
+36070,4648,
+36071,10844,
+36072,10841,
+36073,15278,
+36074,4655,
+36075,16284,
+36076,4650,
+36077,4651,
+36078,11418,
+36080,11420,
+36081,11419,
+36082,18303,
+36083,11421,
+36084,4960,
+36085,11417,
+36087,16305,
+36088,5254,
+36089,11891,
+36090,5251,
+36091,5255,
+36092,5253,
+36093,5252,
+36094,12261,
+36096,12264,
+36098,12263,
+36099,14415,
+36100,12262,
+36101,5423,
+36102,12595,
+36103,12596,
+36104,5581,
+36105,12597,
+36106,5582,
+36107,17779,
+36108,16278,
+36109,5707,
+36111,5706,
+36112,13078,
+36113,14419,
+36114,14414,
+36115,5778,
+36116,13079,
+36117,13244,
+36118,5849,
+36119,5850,
+36120,15983,
+36121,13378,
+36123,5935,
+36124,18304,
+36125,17670,
+36196,1295,
+36198,2992,
+36199,2991,
+36200,9633,
+36201,9634,
+36203,4282,
+36204,11422,
+36205,4657,
+36206,11423,
+36207,11892,
+36208,1296,
+36210,7174,
+36211,2061,
+36212,2060,
+36214,7694,
+36215,2510,
+36216,7695,
+36217,8307,
+36218,14817,
+36219,8306,
+36221,8305,
+36224,8961,
+36225,3445,
+36226,16233,
+36228,8960,
+36229,3444,
+36233,8962,
+36234,3443,
+36236,9636,
+36237,9639,
+36238,9637,
+36239,9638,
+36240,9642,
+36241,9635,
+36242,9643,
+36243,9640,
+36244,9641,
+36245,4284,
+36246,10255,
+36249,4283,
+36251,10848,
+36252,10846,
+36255,4658,
+36256,10845,
+36257,10847,
+36259,4659,
+36261,11424,
+36262,16375,
+36263,11425,
+36264,5256,
+36265,14422,
+36266,12599,
+36267,12601,
+36268,12598,
+36269,12600,
+36270,12861,
+36271,13080,
+36274,13577,
+36275,1297,
+36276,2062,
+36277,7696,
+36278,7698,
+36279,7697,
+36281,8310,
+36282,2994,
+36284,8308,
+36286,2993,
+36287,8311,
+36288,17258,
+36289,8312,
+36290,8309,
+36291,18306,
+36293,8974,
+36294,3453,
+36295,8966,
+36296,8972,
+36299,3448,
+36300,3451,
+36301,8965,
+36302,3446,
+36303,8969,
+36304,9649,
+36305,3450,
+36307,8964,
+36308,16258,
+36309,8970,
+36310,8967,
+36311,8973,
+36312,8963,
+36313,8971,
+36314,3449,
+36315,3452,
+36316,8968,
+36317,3447,
+36319,3879,
+36320,9645,
+36321,3878,
+36322,9652,
+36323,9651,
+36324,3885,
+36326,3886,
+36327,9653,
+36328,3880,
+36329,9650,
+36330,3884,
+36331,9655,
+36332,9646,
+36334,9648,
+36335,3881,
+36336,9644,
+36337,9647,
+36338,9654,
+36339,3882,
+36340,9656,
+36346,3883,
+36348,4285,
+36349,10260,
+36350,10266,
+36351,10258,
+36352,10267,
+36353,16261,
+36354,10257,
+36355,10262,
+36356,10268,
+36357,10265,
+36358,10264,
+36359,10263,
+36361,10256,
+36362,10261,
+36365,10259,
+36366,15966,
+36367,4664,
+36368,4661,
+36369,10857,
+36370,10862,
+36371,10864,
+36372,10861,
+36373,10854,
+36374,10856,
+36375,10866,
+36376,10863,
+36377,10858,
+36378,10867,
+36379,10855,
+36380,10865,
+36381,4662,
+36382,4668,
+36383,4666,
+36384,10849,
+36385,4667,
+36386,4663,
+36387,10850,
+36388,10852,
+36389,10851,
+36390,10859,
+36391,10860,
+36392,16264,
+36393,4665,
+36394,15284,
+36395,4660,
+36397,16043,
+36398,10853,
+36400,11435,
+36401,4962,
+36403,11426,
+36404,4963,
+36405,4966,
+36406,11431,
+36408,11428,
+36409,4965,
+36410,18308,
+36412,11432,
+36413,11433,
+36414,11427,
+36415,11436,
+36416,11429,
+36417,11434,
+36418,4964,
+36420,4961,
+36421,11430,
+36422,17170,
+36423,11898,
+36424,5259,
+36425,5257,
+36426,5260,
+36427,5258,
+36428,11897,
+36429,11894,
+36430,11893,
+36431,16259,
+36432,11896,
+36435,11895,
+36436,12278,
+36437,5429,
+36438,12269,
+36439,12268,
+36441,5424,
+36442,12274,
+36443,12273,
+36444,12265,
+36445,12276,
+36446,12270,
+36447,5428,
+36448,12267,
+36449,12275,
+36450,12266,
+36451,5425,
+36452,5427,
+36453,12271,
+36454,5426,
+36455,12272,
+36456,17229,
+36457,12277,
+36458,12605,
+36460,5587,
+36461,12602,
+36463,12606,
+36465,17383,
+36466,5584,
+36467,12604,
+36468,5589,
+36469,16265,
+36470,5586,
+36471,16255,
+36472,12603,
+36474,5588,
+36475,12607,
+36476,5583,
+36478,17188,
+36480,15959,
+36481,5709,
+36482,5711,
+36484,12864,
+36485,5710,
+36486,12862,
+36487,5585,
+36488,12863,
+36489,5708,
+36490,5779,
+36491,5781,
+36492,13082,
+36493,5780,
+36494,13081,
+36496,13249,
+36497,5851,
+36498,13248,
+36499,5852,
+36500,13246,
+36501,13245,
+36502,13250,
+36503,13251,
+36504,13379,
+36506,13247,
+36509,13473,
+36510,13470,
+36511,13471,
+36512,13472,
+36513,5961,
+36515,13547,
+36516,13546,
+36517,13545,
+36518,13578,
+36519,15285,
+36520,13623,
+36521,13604,
+36522,5979,
+36523,1298,
+36524,2511,
+36525,14430,
+36528,17385,
+36530,3887,
+36534,14431,
+36538,4669,
+36540,14496,
+36541,11437,
+36544,5430,
+36546,12608,
+36547,14432,
+36553,13605,
+36554,1299,
+36555,1677,
+36556,2064,
+36557,2063,
+36558,18312,
+36559,2514,
+36561,7699,
+36562,2512,
+36563,7700,
+36564,2513,
+36567,8317,
+36568,8313,
+36570,15806,
+36571,2995,
+36572,8316,
+36573,8315,
+36574,8314,
+36575,2996,
+36576,8318,
+36577,8319,
+36578,18313,
+36580,18314,
+36581,8981,
+36582,8979,
+36583,8983,
+36584,8984,
+36585,8990,
+36587,8986,
+36588,8988,
+36589,18315,
+36590,8980,
+36591,8975,
+36593,8987,
+36594,18316,
+36596,8989,
+36597,8982,
+36598,8985,
+36599,8976,
+36600,3455,
+36601,8978,
+36602,8977,
+36603,3454,
+36604,3456,
+36606,3890,
+36607,9658,
+36608,9660,
+36609,9659,
+36610,9664,
+36611,3888,
+36613,9661,
+36614,9657,
+36615,9662,
+36616,9663,
+36617,3889,
+36618,3891,
+36619,9665,
+36621,10272,
+36622,10271,
+36624,10269,
+36625,10270,
+36626,4287,
+36627,4289,
+36628,4286,
+36629,4288,
+36630,10874,
+36631,10875,
+36632,10870,
+36633,14434,
+36634,10871,
+36635,4671,
+36636,4676,
+36637,4670,
+36638,4677,
+36639,4672,
+36640,10872,
+36643,10873,
+36644,10869,
+36645,4678,
+36646,4674,
+36649,4673,
+36650,4675,
+36652,10868,
+36653,14435,
+36654,11439,
+36655,4968,
+36656,15287,
+36658,11441,
+36659,4970,
+36660,11444,
+36661,11440,
+36662,11438,
+36663,11443,
+36664,4969,
+36665,11442,
+36667,4967,
+36670,5262,
+36671,5265,
+36672,11900,
+36673,15623,
+36674,5263,
+36675,11899,
+36676,5261,
+36677,5264,
+36678,12279,
+36679,12280,
+36680,12281,
+36681,5431,
+36682,15288,
+36683,12282,
+36685,5432,
+36686,5591,
+36687,12611,
+36688,12612,
+36689,12610,
+36690,12609,
+36691,12613,
+36692,5590,
+36693,12868,
+36694,12866,
+36695,12867,
+36696,12869,
+36697,12865,
+36698,12870,
+36699,13084,
+36700,16177,
+36701,13085,
+36702,13083,
+36703,5782,
+36704,13252,
+36705,5853,
+36706,13253,
+36707,13381,
+36708,13380,
+36710,17769,
+36711,17770,
+36718,17771,
+36755,18226,
+36763,1300,
+36764,3457,
+36767,3892,
+36768,15764,
+36771,4290,
+36773,14438,
+36774,4972,
+36776,4971,
+36781,5592,
+36782,5679,
+36783,5783,
+36784,1301,
+36785,2515,
+36786,3893,
+36787,14442,
+36788,12614,
+36789,560,
+36790,18387,
+36791,17405,
+36792,17142,
+36793,18633,
+36794,18631,
+36795,15723,
+36796,15724,
+36798,18630,
+36799,6377,
+36801,18317,
+36802,1302,
+36804,1305,
+36805,1304,
+36806,1303,
+36809,6376,
+36810,18318,
+36811,6730,
+36812,18319,
+36813,6732,
+36814,1678,
+36816,18606,
+36817,1680,
+36818,6729,
+36819,6731,
+36820,1679,
+36821,6734,
+36822,6733,
+36823,6735,
+36826,16331,
+36832,7178,
+36833,7176,
+36834,2067,
+36835,7175,
+36836,2072,
+36837,2069,
+36838,2066,
+36840,2073,
+36842,2068,
+36843,2071,
+36845,2070,
+36846,7177,
+36848,2065,
+36852,2521,
+36853,7702,
+36854,7708,
+36855,2518,
+36856,2525,
+36857,14449,
+36858,2520,
+36859,7705,
+36860,7707,
+36861,2523,
+36862,7701,
+36863,7704,
+36864,2519,
+36865,2516,
+36866,7703,
+36867,2522,
+36868,7706,
+36869,2524,
+36870,2517,
+36872,16096,
+36875,8321,
+36876,8324,
+36877,2998,
+36879,3008,
+36880,3004,
+36881,8322,
+36882,15950,
+36884,3012,
+36885,3005,
+36886,3010,
+36887,3000,
+36889,2997,
+36890,2999,
+36891,3011,
+36892,8323,
+36893,3003,
+36894,3006,
+36895,3002,
+36896,3007,
+36897,8325,
+36898,3009,
+36899,3001,
+36900,8320,
+36909,8991,
+36910,3458,
+36911,8993,
+36913,3460,
+36914,3462,
+36915,18320,
+36916,8992,
+36917,3459,
+36918,3463,
+36919,14454,
+36920,3461,
+36924,3899,
+36925,9670,
+36926,3907,
+36927,9667,
+36929,3908,
+36930,3897,
+36932,9668,
+36935,3902,
+36937,9669,
+36938,3895,
+36939,3894,
+36940,16144,
+36941,3905,
+36942,3904,
+36943,3903,
+36944,3901,
+36945,3906,
+36946,9666,
+36947,3896,
+36948,3898,
+36949,3900,
+36950,15826,
+36952,4292,
+36953,4295,
+36955,4299,
+36956,4293,
+36957,4298,
+36958,4296,
+36960,4291,
+36961,14457,
+36962,4297,
+36963,4294,
+36964,15464,
+36967,10879,
+36968,4681,
+36969,4679,
+36971,10880,
+36972,15712,
+36973,4682,
+36974,4680,
+36975,10878,
+36976,10877,
+36978,4976,
+36979,10876,
+36980,4974,
+36981,4973,
+36982,11445,
+36983,4683,
+36984,4975,
+36985,11446,
+36986,4978,
+36987,11447,
+36988,4977,
+36989,5267,
+36990,11902,
+36991,5266,
+36992,5271,
+36993,5269,
+36994,5270,
+36995,5434,
+36996,5268,
+36997,11901,
+36998,11448,
+36999,5433,
+37000,5435,
+37002,5593,
+37003,5594,
+37005,12871,
+37007,5900,
+37008,5899,
+37009,1307,
+37012,6174,
+37013,2526,
+37015,6171,
+37016,6172,
+37017,6170,
+37019,6173,
+37022,6381,
+37023,6378,
+37024,6383,
+37025,6379,
+37026,1308,
+37027,1311,
+37029,6380,
+37030,1310,
+37031,6382,
+37032,14460,
+37034,1309,
+37038,14464,
+37039,6738,
+37040,6740,
+37041,1683,
+37042,6736,
+37043,6739,
+37044,6737,
+37045,1681,
+37046,1684,
+37048,1682,
+37051,15300,
+37053,7180,
+37054,7184,
+37055,7181,
+37057,2076,
+37059,2077,
+37060,14462,
+37061,7183,
+37063,7185,
+37064,7187,
+37066,2074,
+37067,7186,
+37070,2075,
+37076,8332,
+37077,7182,
+37078,7709,
+37079,7718,
+37080,7716,
+37081,7711,
+37082,7712,
+37083,7717,
+37084,7719,
+37085,2528,
+37087,7714,
+37088,7710,
+37089,2527,
+37090,2529,
+37091,7713,
+37092,7720,
+37093,7715,
+37096,3013,
+37097,8335,
+37098,8327,
+37099,8333,
+37100,8334,
+37101,3014,
+37103,8326,
+37104,8328,
+37105,7179,
+37106,8330,
+37107,8331,
+37108,8329,
+37109,3465,
+37113,9000,
+37114,11449,
+37115,9001,
+37116,8998,
+37117,3015,
+37118,3467,
+37119,8997,
+37120,9003,
+37121,9002,
+37122,3464,
+37123,9006,
+37124,8996,
+37125,9005,
+37126,8994,
+37127,9004,
+37128,8999,
+37129,3466,
+37131,9677,
+37133,9672,
+37134,9678,
+37135,9673,
+37136,9671,
+37137,9674,
+37138,3909,
+37140,9676,
+37142,9675,
+37143,3910,
+37144,4301,
+37145,4300,
+37146,10279,
+37147,10282,
+37148,10274,
+37149,10278,
+37150,4302,
+37151,10277,
+37152,10275,
+37153,10281,
+37154,10276,
+37155,10273,
+37156,10280,
+37158,10886,
+37159,4686,
+37160,12283,
+37161,10883,
+37162,10884,
+37163,10882,
+37164,8995,
+37165,4685,
+37166,10887,
+37167,10881,
+37168,4684,
+37169,4687,
+37170,10885,
+37171,11450,
+37172,4979,
+37173,11451,
+37174,11452,
+37176,11903,
+37177,5272,
+37178,12284,
+37179,12285,
+37182,12286,
+37183,12616,
+37184,12615,
+37185,12873,
+37187,12872,
+37188,13087,
+37189,13088,
+37190,13086,
+37191,13254,
+37192,5854,
+37193,1312,
+37194,2079,
+37195,2078,
+37196,2532,
+37197,2531,
+37198,7722,
+37199,7723,
+37200,7721,
+37201,16201,
+37202,2530,
+37203,8339,
+37205,8340,
+37206,8336,
+37207,3016,
+37208,8337,
+37209,16197,
+37210,8338,
+37212,16199,
+37214,17387,
+37215,9009,
+37216,9011,
+37217,9007,
+37218,9010,
+37219,3468,
+37220,9008,
+37221,3469,
+37223,14466,
+37224,9186,
+37225,3913,
+37226,3912,
+37228,3911,
+37230,9679,
+37231,9680,
+37232,16056,
+37234,10284,
+37235,10286,
+37236,4306,
+37237,4303,
+37238,16027,
+37239,4305,
+37240,4304,
+37241,10285,
+37242,10283,
+37244,16239,
+37248,10894,
+37249,10891,
+37250,10892,
+37251,4691,
+37252,10893,
+37253,10888,
+37254,10889,
+37255,4688,
+37257,4689,
+37258,10890,
+37259,4690,
+37260,17388,
+37261,11456,
+37262,16206,
+37263,11457,
+37264,11454,
+37265,11455,
+37266,4980,
+37267,11453,
+37273,11907,
+37274,11904,
+37275,11906,
+37276,5275,
+37277,11910,
+37278,5274,
+37279,11908,
+37280,11911,
+37281,11909,
+37282,11905,
+37283,5273,
+37285,12288,
+37287,12289,
+37288,12287,
+37289,14467,
+37290,12291,
+37291,5436,
+37292,5437,
+37293,12618,
+37294,5596,
+37295,12290,
+37296,12617,
+37297,5595,
+37298,12876,
+37299,12877,
+37300,5712,
+37301,12875,
+37302,17903,
+37303,12874,
+37305,13089,
+37306,5784,
+37307,15304,
+37308,13382,
+37309,13475,
+37310,13474,
+37312,5936,
+37313,5962,
+37314,13476,
+37315,13579,
+37316,14468,
+37317,5980,
+37318,1313,
+37319,1685,
+37321,3914,
+37323,5713,
+37324,1314,
+37325,2080,
+37326,3017,
+37327,3470,
+37328,5438,
+37329,1686,
+37331,7189,
+37332,7188,
+37333,7724,
+37334,16734,
+37335,2535,
+37336,2533,
+37337,2537,
+37338,7726,
+37340,2536,
+37341,2534,
+37343,17722,
+37346,7725,
+37347,3020,
+37348,8346,
+37349,15366,
+37350,3019,
+37351,3021,
+37352,8351,
+37353,3023,
+37354,8348,
+37355,8349,
+37356,8341,
+37357,3022,
+37358,8352,
+37361,8343,
+37363,8344,
+37364,8342,
+37365,3018,
+37367,8350,
+37368,8345,
+37369,8347,
+37370,15096,
+37373,9023,
+37374,14382,
+37375,9022,
+37376,9020,
+37377,9012,
+37378,9027,
+37379,9015,
+37380,9025,
+37381,9032,
+37382,9024,
+37383,3478,
+37384,16057,
+37385,3474,
+37386,9013,
+37388,9019,
+37389,3476,
+37390,14472,
+37391,9018,
+37392,3477,
+37393,3479,
+37394,9021,
+37395,18323,
+37396,3471,
+37397,3472,
+37398,9033,
+37399,9031,
+37401,9030,
+37402,9016,
+37404,9028,
+37406,3475,
+37411,3473,
+37412,9029,
+37413,9014,
+37414,9017,
+37415,9026,
+37416,18325,
+37418,15374,
+37419,15270,
+37421,10321,
+37422,9690,
+37424,9683,
+37425,9702,
+37426,9711,
+37427,9686,
+37428,3925,
+37429,15142,
+37430,9699,
+37431,3915,
+37432,3917,
+37433,3929,
+37434,9684,
+37436,16850,
+37437,3918,
+37438,3920,
+37439,3930,
+37440,3919,
+37441,14474,
+37444,14490,
+37445,3928,
+37446,9692,
+37448,9681,
+37449,3926,
+37450,9691,
+37451,3922,
+37452,9709,
+37453,3927,
+37454,9707,
+37455,9695,
+37456,9705,
+37457,3924,
+37458,9682,
+37459,9708,
+37460,9703,
+37461,15943,
+37462,9710,
+37463,3916,
+37464,18326,
+37466,3931,
+37467,3921,
+37469,14851,
+37470,9688,
+37471,15584,
+37472,9696,
+37473,9700,
+37474,14475,
+37475,9704,
+37476,3923,
+37477,9687,
+37478,9685,
+37479,9697,
+37483,18327,
+37484,9694,
+37485,9693,
+37486,15621,
+37487,9698,
+37488,9701,
+37490,9706,
+37494,10289,
+37495,15460,
+37496,4307,
+37497,10299,
+37498,10291,
+37499,4313,
+37500,4317,
+37501,10308,
+37502,10316,
+37503,10301,
+37504,4309,
+37505,15873,
+37506,10305,
+37507,9689,
+37508,15545,
+37509,4310,
+37510,10312,
+37511,10317,
+37512,10309,
+37513,15029,
+37514,10311,
+37515,10320,
+37516,10313,
+37517,10295,
+37518,10304,
+37519,18109,
+37521,4318,
+37523,4314,
+37524,10293,
+37525,10306,
+37526,4312,
+37527,10300,
+37528,4311,
+37529,10314,
+37530,10297,
+37531,10290,
+37532,4315,
+37533,10319,
+37536,10292,
+37537,10310,
+37538,10307,
+37539,10302,
+37540,10288,
+37541,10287,
+37542,10296,
+37543,10315,
+37544,4316,
+37545,10318,
+37546,10294,
+37547,10298,
+37548,4308,
+37550,18329,
+37553,18328,
+37554,4703,
+37555,4698,
+37556,10928,
+37557,10924,
+37558,10900,
+37559,4694,
+37561,14057,
+37562,15349,
+37563,4693,
+37564,4699,
+37566,15456,
+37567,18330,
+37568,10898,
+37569,4697,
+37570,10910,
+37571,10896,
+37572,10897,
+37573,4692,
+37574,10927,
+37575,4701,
+37576,10913,
+37577,10918,
+37578,10912,
+37579,11475,
+37580,10908,
+37581,10916,
+37582,10914,
+37583,10901,
+37584,10895,
+37585,10922,
+37586,4700,
+37587,10923,
+37588,14433,
+37589,10917,
+37591,10906,
+37592,10904,
+37593,10899,
+37595,16396,
+37597,10907,
+37598,10920,
+37599,10903,
+37600,10919,
+37601,10925,
+37603,18331,
+37604,4696,
+37605,15522,
+37606,10915,
+37607,10921,
+37608,10911,
+37609,10905,
+37610,4695,
+37611,18332,
+37612,14692,
+37614,10303,
+37615,10909,
+37616,4702,
+37617,10902,
+37618,15026,
+37619,18333,
+37620,18334,
+37622,15364,
+37623,11480,
+37624,4983,
+37625,11479,
+37626,11477,
+37627,11495,
+37628,4987,
+37629,18335,
+37630,11492,
+37631,11484,
+37632,11494,
+37633,11470,
+37634,11482,
+37635,14439,
+37636,4989,
+37638,11462,
+37639,15121,
+37640,11460,
+37641,11493,
+37643,11491,
+37644,11490,
+37645,11474,
+37646,11473,
+37647,11463,
+37648,4991,
+37650,11469,
+37651,11478,
+37652,11489,
+37653,4994,
+37654,11496,
+37656,5283,
+37657,4996,
+37658,4990,
+37659,11467,
+37661,11476,
+37662,11459,
+37663,11461,
+37664,4981,
+37665,4993,
+37666,4986,
+37667,11468,
+37668,11483,
+37669,10926,
+37670,4992,
+37671,11458,
+37672,5278,
+37673,11485,
+37674,11488,
+37675,4988,
+37676,14482,
+37677,11472,
+37678,4995,
+37679,4985,
+37680,15875,
+37681,15549,
+37683,4984,
+37684,11481,
+37685,11487,
+37686,4982,
+37688,11465,
+37689,11486,
+37692,11466,
+37696,16725,
+37697,17015,
+37698,15098,
+37699,18336,
+37700,16406,
+37701,15988,
+37702,11471,
+37703,11917,
+37704,15457,
+37705,11922,
+37706,5280,
+37707,5282,
+37708,11928,
+37709,5276,
+37710,11942,
+37711,11934,
+37712,11923,
+37713,11924,
+37714,11933,
+37716,5289,
+37717,11932,
+37718,11916,
+37719,11931,
+37720,11919,
+37721,11943,
+37722,5288,
+37723,5286,
+37724,11920,
+37726,11939,
+37727,15547,
+37728,11925,
+37729,11938,
+37730,17000,
+37731,11940,
+37732,11915,
+37733,5281,
+37734,18108,
+37735,11941,
+37736,15344,
+37737,14689,
+37738,11929,
+37739,14483,
+37740,5285,
+37741,11926,
+37742,14824,
+37744,5287,
+37745,11935,
+37747,14494,
+37748,15588,
+37749,5279,
+37750,11921,
+37751,11936,
+37752,14585,
+37753,11930,
+37754,11464,
+37755,11937,
+37756,11918,
+37757,15397,
+37758,5284,
+37760,12308,
+37761,14693,
+37762,5277,
+37763,11913,
+37764,18337,
+37765,17085,
+37766,15552,
+37767,15072,
+37768,12305,
+37769,12298,
+37770,5440,
+37772,12293,
+37773,12309,
+37774,12300,
+37775,11927,
+37776,15676,
+37777,12311,
+37778,12294,
+37780,5439,
+37781,12304,
+37782,5441,
+37783,5449,
+37784,5447,
+37785,12306,
+37786,5448,
+37787,12296,
+37788,14764,
+37789,12297,
+37790,12302,
+37791,12307,
+37792,15025,
+37793,11912,
+37794,5442,
+37795,12316,
+37796,12313,
+37797,12640,
+37798,12303,
+37799,12299,
+37800,12314,
+37801,12629,
+37802,12301,
+37804,5445,
+37805,18338,
+37806,5444,
+37807,11914,
+37808,5446,
+37809,12310,
+37810,12312,
+37811,5443,
+37812,12315,
+37813,12292,
+37815,12295,
+37816,15504,
+37818,17399,
+37819,15503,
+37821,14887,
+37823,15917,
+37824,12638,
+37826,12622,
+37827,5600,
+37828,12636,
+37830,14762,
+37831,12620,
+37832,5601,
+37834,12631,
+37835,14694,
+37836,12627,
+37837,5606,
+37838,12637,
+37839,12621,
+37840,12624,
+37841,5598,
+37842,12639,
+37843,16609,
+37844,12632,
+37845,12635,
+37846,5604,
+37847,5609,
+37848,5607,
+37849,12628,
+37850,12623,
+37851,15455,
+37852,5602,
+37853,5603,
+37854,12619,
+37855,5599,
+37856,14880,
+37857,5597,
+37858,5605,
+37859,12634,
+37860,5608,
+37862,12630,
+37863,12641,
+37864,5610,
+37868,12626,
+37870,12633,
+37872,16959,
+37873,17066,
+37875,14690,
+37877,12890,
+37878,12905,
+37879,12892,
+37880,12899,
+37881,12625,
+37882,12897,
+37883,12880,
+37884,12903,
+37885,5716,
+37886,12884,
+37887,12902,
+37888,12891,
+37889,15572,
+37891,5715,
+37892,15305,
+37894,12907,
+37895,12893,
+37896,14885,
+37897,12898,
+37898,12901,
+37899,12878,
+37900,12904,
+37901,12889,
+37902,12894,
+37903,12882,
+37904,12886,
+37905,12906,
+37906,12896,
+37907,12879,
+37908,12883,
+37909,12885,
+37910,12895,
+37911,18341,
+37912,5714,
+37913,12888,
+37915,16712,
+37917,18342,
+37920,12881,
+37924,14659,
+37925,14544,
+37926,14499,
+37927,15309,
+37928,12887,
+37929,13093,
+37930,13097,
+37931,5791,
+37932,13099,
+37933,18343,
+37934,5785,
+37936,13095,
+37937,13101,
+37938,5790,
+37939,5786,
+37941,5787,
+37942,13092,
+37943,13098,
+37944,5789,
+37945,13096,
+37946,5788,
+37947,13091,
+37948,12900,
+37949,13094,
+37950,18344,
+37951,13090,
+37952,13100,
+37954,17010,
+37955,17013,
+37956,5855,
+37957,13261,
+37958,13264,
+37959,13260,
+37960,13262,
+37961,13263,
+37962,13257,
+37963,13258,
+37964,13255,
+37965,15461,
+37967,13259,
+37968,13256,
+37969,5856,
+37970,5857,
+37972,18346,
+37973,13384,
+37975,13386,
+37976,15408,
+37979,14495,
+37981,13385,
+37982,13387,
+37984,5902,
+37986,13383,
+37987,5901,
+37988,5903,
+37989,15838,
+37991,15032,
+37992,13478,
+37993,13479,
+37994,5937,
+37995,13477,
+37996,14206,
+37997,13549,
+37998,13548,
+37999,13550,
+38000,5964,
+38001,13551,
+38002,5963,
+38003,13552,
+38004,13580,
+38005,13583,
+38006,13582,
+38007,5973,
+38008,13581,
+38009,18347,
+38011,16795,
+38012,5983,
+38013,5981,
+38014,5982,
+38015,5988,
+38016,13625,
+38017,13626,
+38018,13624,
+38019,13632,
+38021,17671,
+38047,18565,
+38050,17691,
+38081,18401,
+38083,18399,
+38108,18391,
+38134,18386,
+38189,18348,
+38215,18623,
+38263,1687,
+38264,17672,
+38266,8353,
+38267,9034,
+38268,10929,
+38269,12642,
+38271,17673,
+38272,1688,
+38274,2081,
+38275,2538,
+38277,14497,
+38278,8354,
+38280,8355,
+38281,3024,
+38283,3482,
+38284,9036,
+38285,9035,
+38286,3486,
+38287,3481,
+38288,9037,
+38289,3483,
+38290,3485,
+38291,3484,
+38292,3480,
+38294,15317,
+38295,15316,
+38296,3932,
+38297,15314,
+38299,9715,
+38300,9713,
+38302,9714,
+38303,9712,
+38304,14500,
+38305,4319,
+38306,18349,
+38307,4322,
+38308,4324,
+38309,4323,
+38310,14498,
+38311,15315,
+38312,4320,
+38313,4321,
+38314,17301,
+38315,10931,
+38316,10930,
+38317,4704,
+38318,10932,
+38320,10933,
+38321,4705,
+38325,11504,
+38326,11502,
+38327,11949,
+38329,11500,
+38330,11501,
+38331,4997,
+38332,11497,
+38333,11505,
+38334,11499,
+38335,11503,
+38336,11945,
+38339,11947,
+38341,11948,
+38342,5294,
+38343,11944,
+38344,5293,
+38345,11946,
+38346,5290,
+38347,5291,
+38348,5292,
+38349,11498,
+38352,5452,
+38353,12319,
+38354,12317,
+38355,12318,
+38356,5450,
+38357,5453,
+38358,5451,
+38362,12643,
+38363,12644,
+38364,5611,
+38366,12908,
+38367,12910,
+38368,12909,
+38369,5717,
+38370,5792,
+38371,13104,
+38372,13103,
+38373,13102,
+38376,17674,
+38388,18351,
+38428,1689,
+38429,17689,
+38430,6068,
+38432,6177,
+38433,1044,
+38434,6175,
+38435,6178,
+38436,6176,
+38440,6385,
+38442,1318,
+38444,1319,
+38445,6387,
+38446,1316,
+38447,6386,
+38448,6384,
+38449,1317,
+38450,1315,
+38451,18352,
+38456,16337,
+38457,6741,
+38458,6744,
+38459,1692,
+38460,6743,
+38461,6742,
+38463,1691,
+38464,1690,
+38465,16189,
+38466,1694,
+38467,6745,
+38468,1693,
+38469,18290,
+38474,7194,
+38475,2083,
+38476,2084,
+38477,2085,
+38478,7195,
+38479,7191,
+38480,2082,
+38481,7192,
+38483,7193,
+38484,7190,
+38486,15847,
+38488,2545,
+38491,2542,
+38492,7727,
+38493,2543,
+38494,2546,
+38495,7728,
+38497,2541,
+38498,2539,
+38499,2540,
+38500,2544,
+38505,18270,
+38506,3025,
+38507,8358,
+38508,3033,
+38509,8357,
+38511,8360,
+38512,3029,
+38513,8359,
+38514,3494,
+38515,3027,
+38516,3030,
+38517,3026,
+38518,3031,
+38519,3032,
+38520,3028,
+38523,14508,
+38524,8356,
+38525,3490,
+38526,9039,
+38528,9043,
+38529,16198,
+38531,9042,
+38532,3495,
+38533,3491,
+38534,3492,
+38535,9038,
+38536,9040,
+38537,9041,
+38538,3487,
+38539,3489,
+38541,3493,
+38542,3488,
+38543,15326,
+38545,9718,
+38546,9716,
+38547,9717,
+38548,3934,
+38549,3935,
+38550,14509,
+38551,9719,
+38552,3933,
+38553,4325,
+38555,4327,
+38556,4326,
+38558,10322,
+38561,10323,
+38562,10935,
+38563,14511,
+38564,10934,
+38565,17135,
+38567,4998,
+38568,4999,
+38569,11506,
+38570,5000,
+38572,11952,
+38574,11950,
+38576,11951,
+38577,5295,
+38579,12320,
+38580,5612,
+38582,561,
+38584,5296,
+38585,1695,
+38587,2547,
+38588,7729,
+38589,14517,
+38591,8361,
+38592,3034,
+38593,3496,
+38594,9044,
+38595,9046,
+38596,3498,
+38597,3497,
+38598,3499,
+38599,3500,
+38600,9045,
+38601,3938,
+38602,3939,
+38603,3937,
+38604,4328,
+38605,3936,
+38606,9720,
+38610,4329,
+38611,10936,
+38612,11507,
+38613,5001,
+38614,5297,
+38615,12321,
+38616,12325,
+38617,5456,
+38618,12322,
+38619,5457,
+38620,5455,
+38621,12326,
+38622,5458,
+38623,12324,
+38625,12645,
+38626,5454,
+38627,5613,
+38629,13480,
+38632,1696,
+38633,3036,
+38634,3035,
+38639,3501,
+38640,9048,
+38641,9047,
+38642,3502,
+38644,14852,
+38645,9724,
+38646,3943,
+38647,3940,
+38648,9723,
+38649,3942,
+38650,9721,
+38651,3941,
+38653,9722,
+38655,10324,
+38656,4330,
+38658,10939,
+38659,16141,
+38660,4706,
+38661,10937,
+38662,4707,
+38663,4708,
+38664,10938,
+38665,4709,
+38667,11508,
+38669,5005,
+38670,5002,
+38671,5007,
+38672,11510,
+38673,5003,
+38674,11509,
+38675,5006,
+38678,5004,
+38680,11955,
+38681,11957,
+38683,14537,
+38684,5298,
+38685,11956,
+38686,5299,
+38687,11954,
+38688,11953,
+38689,16307,
+38690,12328,
+38691,12327,
+38692,5459,
+38693,12329,
+38694,12650,
+38695,5615,
+38696,12649,
+38697,12646,
+38698,5614,
+38699,12647,
+38700,12648,
+38702,12911,
+38703,12912,
+38704,5718,
+38705,14528,
+38706,5795,
+38709,13105,
+38710,14530,
+38712,5793,
+38713,5794,
+38714,13106,
+38717,5858,
+38718,5859,
+38719,13265,
+38720,18355,
+38721,15337,
+38722,5938,
+38723,13482,
+38724,5940,
+38726,13481,
+38727,13483,
+38728,5939,
+38729,13553,
+38731,13606,
+38737,17635,
+38738,1697,
+38742,3944,
+38743,14540,
+38744,10325,
+38746,10940,
+38747,5008,
+38748,5009,
+38749,15343,
+38750,1698,
+38751,14543,
+38752,4710,
+38753,5616,
+38754,2086,
+38758,5010,
+38760,5904,
+38761,2087,
+38762,8362,
+38764,9049,
+38765,16023,
+38766,9051,
+38768,9050,
+38769,15356,
+38770,9728,
+38771,9725,
+38772,3945,
+38774,3946,
+38775,9726,
+38776,9727,
+38778,10327,
+38779,10332,
+38780,4331,
+38781,10326,
+38782,10328,
+38783,10335,
+38784,10330,
+38785,10334,
+38786,10331,
+38787,10329,
+38788,10333,
+38789,4332,
+38791,16576,
+38792,10943,
+38793,14548,
+38794,10941,
+38795,4712,
+38797,4711,
+38798,10942,
+38799,4713,
+38804,11513,
+38807,11512,
+38808,5011,
+38809,11511,
+38810,11958,
+38811,15355,
+38812,11960,
+38813,11962,
+38814,11961,
+38815,14549,
+38816,5300,
+38817,11959,
+38818,12336,
+38819,5460,
+38820,12334,
+38821,12337,
+38822,5461,
+38824,12332,
+38826,12335,
+38827,12333,
+38828,12330,
+38829,5462,
+38830,12331,
+38833,14550,
+38834,18357,
+38835,12651,
+38836,16179,
+38838,12653,
+38839,12652,
+38840,15765,
+38841,12913,
+38842,16181,
+38843,12914,
+38845,18766,
+38846,14551,
+38847,13107,
+38848,14552,
+38849,5861,
+38850,18358,
+38851,5860,
+38852,13388,
+38853,13389,
+38854,5941,
+38855,13484,
+38856,16175,
+38857,5974,
+38859,2088,
+38860,3503,
+38861,10337,
+38862,10336,
+38863,10945,
+38864,10944,
+38866,14553,
+38867,5301,
+38868,11964,
+38869,11963,
+38870,12340,
+38871,12338,
+38872,12341,
+38873,12339,
+38876,5617,
+38877,12654,
+38878,12655,
+38879,12656,
+38880,14554,
+38881,13108,
+38883,13266,
+38885,13485,
+38886,17676,
+38893,2089,
+38894,14556,
+38896,11514,
+38897,11965,
+38898,14669,
+38899,2090,
+38901,14560,
+38902,4333,
+38904,11515,
+38905,5463,
+38906,12342,
+38907,5618,
+38909,12915,
+38910,12916,
+38911,5796,
+38912,13390,
+38913,2091,
+38914,3039,
+38915,3040,
+38916,8363,
+38917,3504,
+38918,3505,
+38919,9052,
+38920,3506,
+38922,3950,
+38924,3952,
+38925,9730,
+38926,9731,
+38927,9729,
+38928,3947,
+38929,3948,
+38930,3951,
+38931,3949,
+38932,18770,
+38933,17212,
+38934,10338,
+38935,4334,
+38936,4335,
+38939,10952,
+38940,4716,
+38941,10947,
+38942,10946,
+38943,15362,
+38944,10951,
+38945,4714,
+38947,15927,
+38948,5018,
+38950,10948,
+38951,10953,
+38952,10950,
+38953,10949,
+38955,4715,
+38957,5016,
+38958,16242,
+38959,11517,
+38960,5012,
+38962,11518,
+38963,14565,
+38964,14564,
+38965,11516,
+38967,5015,
+38968,5013,
+38969,5017,
+38971,5014,
+38977,11966,
+38979,11971,
+38980,11967,
+38981,11970,
+38982,5302,
+38983,15766,
+38984,11762,
+38985,11969,
+38986,11968,
+38987,14566,
+38988,5466,
+38989,5464,
+38990,5467,
+38991,5465,
+38992,12343,
+38993,12344,
+38994,12345,
+38995,5468,
+38999,12660,
+39000,5620,
+39001,12658,
+39003,5621,
+39004,12657,
+39005,12659,
+39006,5619,
+39007,12920,
+39008,12917,
+39010,12918,
+39011,12919,
+39012,13109,
+39013,5798,
+39014,14567,
+39015,5797,
+39017,13268,
+39018,13267,
+39019,5862,
+39020,16437,
+39023,5905,
+39024,5942,
+39025,5965,
+39026,13554,
+39027,13607,
+39028,13608,
+39029,17677,
+39080,2092,
+39081,9053,
+39084,9732,
+39085,10339,
+39086,10340,
+39087,4336,
+39089,4337,
+39090,10954,
+39091,4717,
+39092,16243,
+39094,5303,
+39095,14575,
+39096,12346,
+39097,18360,
+39098,5469,
+39099,12663,
+39100,5622,
+39101,12662,
+39102,12664,
+39103,12661,
+39104,13112,
+39105,12921,
+39106,12922,
+39107,15224,
+39108,5719,
+39110,13111,
+39111,14577,
+39112,14576,
+39113,13110,
+39114,14574,
+39115,13269,
+39116,13609,
+39118,17678,
+39131,2093,
+39132,15371,
+39134,17679,
+39135,2094,
+39136,18322,
+39137,14582,
+39138,2548,
+39139,7730,
+39141,8364,
+39142,14583,
+39143,3507,
+39145,3510,
+39146,3508,
+39147,9054,
+39148,14584,
+39149,3512,
+39151,3509,
+39153,18362,
+39154,3511,
+39156,3954,
+39157,17253,
+39158,9733,
+39161,9734,
+39162,10956,
+39164,3953,
+39165,3955,
+39166,3956,
+39168,10342,
+39170,10341,
+39171,4338,
+39173,4339,
+39175,10343,
+39176,10955,
+39177,4341,
+39178,4718,
+39180,4340,
+39182,17389,
+39184,5019,
+39185,10957,
+39186,4720,
+39187,4719,
+39188,10958,
+39189,10961,
+39190,10959,
+39191,10960,
+39192,4721,
+39193,18364,
+39194,5024,
+39195,5022,
+39196,17390,
+39198,5021,
+39199,11520,
+39201,5023,
+39204,11519,
+39205,11972,
+39207,11521,
+39208,5020,
+39209,11522,
+39210,11975,
+39211,11973,
+39212,11974,
+39213,11979,
+39214,5473,
+39215,11978,
+39216,11981,
+39217,11980,
+39218,11977,
+39219,11976,
+39221,5304,
+39223,18365,
+39224,15357,
+39225,14586,
+39226,12349,
+39227,15377,
+39228,12348,
+39229,5472,
+39230,5470,
+39231,5471,
+39232,16180,
+39233,12347,
+39234,17407,
+39235,12667,
+39237,5623,
+39239,12666,
+39240,12665,
+39241,5624,
+39242,16313,
+39243,12927,
+39244,12926,
+39245,15378,
+39246,12924,
+39248,12923,
+39249,5721,
+39250,5720,
+39251,12928,
+39252,13270,
+39253,5863,
+39254,13114,
+39255,5799,
+39256,13113,
+39257,12925,
+39259,13271,
+39260,5906,
+39261,18366,
+39262,5966,
+39263,13555,
+39265,13610,
+39266,17391,
+39267,17680,
+39318,2095,
+39319,8365,
+39320,11982,
+39321,2096,
+39323,15381,
+39324,10345,
+39325,10344,
+39326,11523,
+39329,11984,
+39331,11983,
+39332,16835,
+39333,5474,
+39334,12668,
+39335,12669,
+39336,5722,
+39338,15383,
+39339,13611,
+39340,2549,
+39341,3514,
+39342,3513,
+39343,9735,
+39344,9737,
+39345,3958,
+39346,9736,
+39347,3957,
+39348,3959,
+39349,9738,
+39352,14667,
+39353,10347,
+39354,10349,
+39355,10348,
+39356,15394,
+39357,10351,
+39361,4342,
+39362,10350,
+39363,10346,
+39364,15735,
+39365,18369,
+39367,10352,
+39369,10968,
+39371,10971,
+39372,10973,
+39373,10963,
+39374,10967,
+39375,10964,
+39376,4723,
+39377,4726,
+39378,4728,
+39379,10965,
+39380,10966,
+39381,4727,
+39382,10969,
+39383,10972,
+39384,10970,
+39385,4729,
+39386,16194,
+39387,4725,
+39388,10962,
+39389,4722,
+39391,4724,
+39393,14213,
+39394,5026,
+39395,11529,
+39396,11527,
+39397,11526,
+39398,15205,
+39399,11532,
+39401,11531,
+39402,11530,
+39404,11525,
+39405,5025,
+39406,11524,
+39408,11528,
+39409,5027,
+39412,11987,
+39413,14591,
+39414,11991,
+39415,11988,
+39416,11990,
+39417,11989,
+39418,11986,
+39419,11992,
+39420,11995,
+39421,11993,
+39422,11994,
+39423,5306,
+39425,5305,
+39426,11985,
+39427,11996,
+39428,12354,
+39429,12357,
+39430,12359,
+39431,12358,
+39433,12352,
+39434,12356,
+39435,12351,
+39436,14592,
+39437,12353,
+39438,5475,
+39439,12350,
+39440,14594,
+39441,12355,
+39444,12682,
+39445,12671,
+39446,5625,
+39449,5626,
+39450,12670,
+39451,12675,
+39452,12681,
+39453,12673,
+39454,12680,
+39455,15212,
+39456,12677,
+39457,15388,
+39458,12676,
+39459,12679,
+39460,12674,
+39461,12672,
+39462,15858,
+39463,12678,
+39465,12935,
+39466,12933,
+39467,5723,
+39468,12932,
+39469,12938,
+39470,12936,
+39471,15390,
+39472,5724,
+39473,12931,
+39474,12929,
+39476,12930,
+39477,5726,
+39478,12934,
+39479,5725,
+39480,12937,
+39481,13115,
+39482,13121,
+39483,14593,
+39484,18371,
+39485,13116,
+39486,5803,
+39487,13122,
+39488,5802,
+39489,13120,
+39490,13119,
+39491,5801,
+39492,13118,
+39493,5800,
+39494,13117,
+39496,13277,
+39497,13279,
+39498,13278,
+39500,13275,
+39501,5865,
+39502,13272,
+39503,13276,
+39504,13281,
+39506,13280,
+39507,13273,
+39508,13274,
+39509,5864,
+39510,13391,
+39511,5909,
+39512,14595,
+39513,13392,
+39514,5907,
+39515,5908,
+39516,15384,
+39518,13486,
+39519,5943,
+39520,13584,
+39522,5975,
+39523,15207,
+39524,13612,
+39525,5976,
+39526,13613,
+39527,13614,
+39528,13628,
+39529,13627,
+39530,5991,
+39531,13636,
+39532,17797,
+39567,17798,
+39592,2550,
+39595,9740,
+39597,9739,
+39599,4343,
+39600,4344,
+39601,10353,
+39602,17202,
+39603,10974,
+39604,11535,
+39606,17392,
+39607,4730,
+39608,5028,
+39609,11533,
+39610,16244,
+39611,11536,
+39612,5029,
+39613,15767,
+39614,11997,
+39615,11534,
+39616,12360,
+39617,5476,
+39618,12683,
+39622,12941,
+39623,12939,
+39626,12940,
+39629,13123,
+39631,5804,
+39632,13282,
+39633,5912,
+39634,5866,
+39635,5910,
+39636,5911,
+39637,13487,
+39638,5967,
+39639,16298,
+39640,2551,
+39644,12361,
+39647,7731,
+39648,14600,
+39649,3960,
+39650,14601,
+39651,10354,
+39654,4345,
+39655,10355,
+39659,10976,
+39660,10975,
+39661,5031,
+39662,4731,
+39663,4732,
+39665,10979,
+39666,10978,
+39667,10977,
+39668,14603,
+39670,11537,
+39671,11540,
+39673,11539,
+39674,11538,
+39675,5030,
+39676,12001,
+39677,11999,
+39678,11998,
+39679,16151,
+39681,12000,
+39682,16146,
+39683,5477,
+39684,12363,
+39685,12364,
+39686,5478,
+39688,12362,
+39689,16160,
+39690,12685,
+39691,12684,
+39692,12687,
+39693,5627,
+39694,12686,
+39695,18372,
+39696,12942,
+39697,12944,
+39698,12943,
+39700,14605,
+39701,13124,
+39702,13127,
+39703,13125,
+39704,13126,
+39705,13283,
+39706,5867,
+39710,13393,
+39711,13394,
+39712,13395,
+39714,5944,
+39715,5968,
+39716,13615,
+39717,2552,
+39719,4733,
+39720,5032,
+39721,12365,
+39722,16153,
+39723,13284,
+39725,14606,
+39726,13585,
+39727,7732,
+39729,5992,
+39730,2553,
+39731,11541,
+39732,14609,
+39733,12366,
+39735,12688,
+39737,16128,
+39738,13128,
+39739,13285,
+39740,2554,
+39742,10356,
+39743,10357,
+39744,14613,
+39745,4346,
+39746,4347,
+39747,10981,
+39748,4735,
+39749,4734,
+39750,10980,
+39752,12002,
+39754,12367,
+39755,12369,
+39756,12368,
+39757,5481,
+39758,5480,
+39759,5479,
+39760,14612,
+39761,5806,
+39762,13129,
+39764,5805,
+39765,13287,
+39766,13286,
+39768,5945,
+39769,13488,
+39770,3041,
+39771,9741,
+39775,10360,
+39776,10358,
+39777,10359,
+39780,10990,
+39782,10985,
+39783,10982,
+39784,10989,
+39785,18373,
+39788,10991,
+39791,4737,
+39792,10988,
+39793,10984,
+39796,10983,
+39797,10987,
+39798,10986,
+39799,4736,
+39802,11552,
+39803,11547,
+39804,11545,
+39805,11554,
+39806,11546,
+39807,15419,
+39808,11542,
+39809,17393,
+39810,11548,
+39811,16921,
+39813,11543,
+39814,12011,
+39815,11544,
+39816,11555,
+39819,16110,
+39821,17955,
+39822,14617,
+39823,16301,
+39824,11551,
+39825,5033,
+39826,11550,
+39827,11549,
+39829,11553,
+39831,16241,
+39834,12003,
+39835,12006,
+39837,16214,
+39838,12005,
+39839,15422,
+39840,12013,
+39841,12008,
+39842,12012,
+39844,12010,
+39845,12009,
+39846,12007,
+39848,12004,
+39850,5309,
+39851,5308,
+39853,5310,
+39854,5307,
+39855,12014,
+39856,16308,
+39861,12375,
+39862,12378,
+39864,12376,
+39865,12380,
+39869,12381,
+39871,12373,
+39872,5486,
+39873,12374,
+39875,12372,
+39876,12379,
+39878,12371,
+39879,12370,
+39880,5485,
+39881,5483,
+39882,5482,
+39887,15420,
+39891,12377,
+39892,12697,
+39893,12703,
+39894,5630,
+39895,12698,
+39897,12701,
+39898,12705,
+39899,5631,
+39900,12700,
+39901,18374,
+39902,12692,
+39904,12691,
+39905,12704,
+39906,12695,
+39908,12693,
+39909,12702,
+39910,12694,
+39911,5629,
+39912,5628,
+39913,15297,
+39914,12689,
+39915,12690,
+39916,12699,
+39917,16087,
+39920,12696,
+39921,18375,
+39924,18376,
+39927,12947,
+39928,12950,
+39933,5484,
+39935,14619,
+39938,14618,
+39941,12948,
+39942,12954,
+39943,12952,
+39944,12946,
+39945,12957,
+39946,16186,
+39947,12945,
+39948,14620,
+39949,5728,
+39950,12953,
+39952,15418,
+39954,12949,
+39955,5727,
+39956,12956,
+39957,16158,
+39959,12955,
+39963,18715,
+39964,13132,
+39965,13131,
+39967,17954,
+39968,18378,
+39969,13138,
+39971,13134,
+39972,13137,
+39973,5808,
+39974,17894,
+39976,13135,
+39977,13136,
+39979,13130,
+39980,13133,
+39981,5807,
+39982,16162,
+39983,15751,
+39985,5869,
+39986,13298,
+39987,13293,
+39988,13297,
+39989,15417,
+39990,13300,
+39991,13296,
+39993,13292,
+39994,15742,
+39995,5871,
+39996,13295,
+39997,13299,
+39998,5870,
+39999,13290,
+40000,12951,
+40001,13294,
+40004,13291,
+40005,15985,
+40006,13288,
+40008,13289,
+40009,5868,
+40010,13399,
+40011,13401,
+40012,13404,
+40013,13400,
+40014,13405,
+40015,15414,
+40016,13398,
+40018,13396,
+40019,15415,
+40020,5913,
+40021,13402,
+40022,5915,
+40023,5914,
+40024,13397,
+40025,13403,
+40029,16063,
+40030,13493,
+40031,5946,
+40032,13494,
+40034,13492,
+40035,13489,
+40038,13491,
+40039,13490,
+40040,13556,
+40045,13558,
+40046,13557,
+40049,13588,
+40050,16033,
+40051,13587,
+40052,13586,
+40053,13589,
+40055,5984,
+40056,5985,
+40057,13633,
+40058,13637,
+40059,15416,
+40060,17682,
+40165,3042,
+40166,9055,
+40167,9744,
+40169,3961,
+40170,9742,
+40173,9743,
+40177,10361,
+40178,10362,
+40179,4350,
+40180,4348,
+40181,10363,
+40182,4349,
+40183,10996,
+40185,10999,
+40186,10993,
+40187,11000,
+40188,10992,
+40189,10994,
+40191,10995,
+40192,10998,
+40194,16187,
+40195,4740,
+40196,11003,
+40197,11002,
+40198,4738,
+40199,10997,
+40200,11001,
+40201,4739,
+40204,15430,
+40208,11565,
+40210,5038,
+40212,11560,
+40213,5034,
+40214,15484,
+40215,11557,
+40216,11563,
+40217,11566,
+40219,5039,
+40221,11562,
+40222,11559,
+40223,11567,
+40224,11558,
+40225,15425,
+40226,11564,
+40227,5035,
+40229,11556,
+40230,5036,
+40232,5037,
+40233,11561,
+40237,12032,
+40238,12019,
+40239,12020,
+40240,12023,
+40241,12021,
+40243,12015,
+40244,16458,
+40246,12018,
+40247,12028,
+40248,12022,
+40249,14638,
+40251,5311,
+40253,12030,
+40254,12027,
+40255,5312,
+40256,12029,
+40257,12016,
+40258,12025,
+40259,12026,
+40260,16299,
+40261,12024,
+40265,18381,
+40266,12385,
+40267,12387,
+40268,12390,
+40270,17721,
+40271,12384,
+40272,16074,
+40273,5487,
+40274,12392,
+40275,12383,
+40276,12393,
+40278,12389,
+40279,12391,
+40280,12395,
+40281,12388,
+40282,12396,
+40283,12386,
+40284,12382,
+40285,5488,
+40286,15982,
+40287,12394,
+40288,5489,
+40289,5633,
+40295,12017,
+40296,12731,
+40297,12722,
+40298,5635,
+40299,12718,
+40300,5636,
+40301,15276,
+40302,17211,
+40303,12727,
+40304,12721,
+40305,12711,
+40306,5634,
+40307,12724,
+40308,12719,
+40309,12720,
+40311,12706,
+40312,12713,
+40313,12728,
+40315,12725,
+40316,16126,
+40317,12717,
+40318,14629,
+40319,12729,
+40320,12712,
+40321,12707,
+40322,12726,
+40323,14630,
+40324,12709,
+40325,12723,
+40326,12714,
+40327,12730,
+40328,12710,
+40329,5632,
+40330,12708,
+40331,12715,
+40332,12716,
+40336,12964,
+40338,12962,
+40339,17395,
+40340,12967,
+40342,12979,
+40343,12970,
+40344,12963,
+40345,12959,
+40346,12972,
+40347,12965,
+40348,12968,
+40349,12961,
+40350,12975,
+40351,12958,
+40352,12966,
+40353,12971,
+40354,12973,
+40355,12976,
+40356,12960,
+40357,15435,
+40358,12980,
+40359,12981,
+40360,12974,
+40361,12978,
+40362,12969,
+40363,16176,
+40364,13154,
+40365,13157,
+40367,5809,
+40369,13156,
+40370,13161,
+40371,13159,
+40372,5810,
+40373,13150,
+40374,13140,
+40375,13139,
+40376,5812,
+40377,13152,
+40378,13153,
+40379,13149,
+40380,13141,
+40381,18384,
+40382,13146,
+40383,12977,
+40384,17394,
+40385,13142,
+40386,5811,
+40387,13148,
+40388,14633,
+40389,13147,
+40391,13143,
+40392,13155,
+40393,17785,
+40394,13144,
+40395,13305,
+40396,13158,
+40397,13160,
+40398,13151,
+40399,13145,
+40400,13306,
+40401,13308,
+40402,13302,
+40403,5872,
+40404,14622,
+40405,13315,
+40406,13313,
+40407,5873,
+40408,13312,
+40409,13311,
+40410,13304,
+40411,13301,
+40412,13307,
+40413,13316,
+40414,13303,
+40415,13309,
+40417,13414,
+40418,13419,
+40419,13409,
+40420,13412,
+40421,5916,
+40422,13416,
+40424,13423,
+40425,13310,
+40427,13410,
+40428,13420,
+40429,13424,
+40430,13415,
+40431,13408,
+40432,13418,
+40434,13417,
+40435,13422,
+40436,13421,
+40437,13314,
+40438,13413,
+40439,13407,
+40440,13411,
+40441,5947,
+40442,5948,
+40443,13406,
+40444,18385,
+40445,13505,
+40446,13496,
+40447,13504,
+40448,13501,
+40449,13502,
+40450,13495,
+40451,13498,
+40452,13506,
+40453,13500,
+40454,13499,
+40455,13497,
+40457,13503,
+40458,17790,
+40459,13559,
+40460,17786,
+40461,13560,
+40462,14632,
+40463,13562,
+40464,13561,
+40465,13564,
+40466,13563,
+40467,13591,
+40468,13590,
+40469,13616,
+40471,13617,
+40472,15428,
+40473,13629,
+40474,5989,
+40475,5993,
+40476,16260,
+40477,13638,
+40478,5994,
+40479,17683,
+40565,3043,
+40569,5729,
+40570,13162,
+40571,17400,
+40572,5949,
+40573,5950,
+40575,3044,
+40576,9745,
+40577,16143,
+40578,3962,
+40579,11004,
+40580,16246,
+40581,16114,
+40582,11569,
+40583,11570,
+40584,11568,
+40585,12034,
+40586,12033,
+40587,5313,
+40588,12398,
+40589,12035,
+40590,12397,
+40592,14641,
+40593,12733,
+40594,5637,
+40595,5639,
+40596,12732,
+40597,14642,
+40598,16316,
+40599,5638,
+40600,16167,
+40601,12982,
+40602,12984,
+40603,12983,
+40604,13163,
+40605,5813,
+40606,14643,
+40607,5917,
+40608,13507,
+40609,13565,
+40610,14644,
+40612,13642,
+40613,3045,
+40614,18756,
+40615,10364,
+40616,16245,
+40617,4741,
+40618,14646,
+40619,16018,
+40620,17396,
+40621,11572,
+40622,11571,
+40623,14647,
+40624,12036,
+40625,18388,
+40628,5640,
+40629,5730,
+40630,13317,
+40631,13634,
+40635,3046,
+40636,4351,
+40637,18389,
+40638,4742,
+40639,15736,
+40640,12734,
+40641,14649,
+40642,13425,
+40643,3515,
+40644,17684,
+40646,18390,
+40647,17783,
+40648,12037,
+40652,5969,
+40653,3516,
+40654,4743,
+40655,5314,
+40656,13426,
+40657,3517,
+40659,11005,
+40660,5041,
+40661,11573,
+40662,11574,
+40664,5040,
+40666,12038,
+40667,5318,
+40668,5316,
+40669,5317,
+40670,5315,
+40671,12399,
+40672,5490,
+40674,18392,
+40676,12986,
+40677,12985,
+40678,12988,
+40679,12987,
+40680,5731,
+40683,13164,
+40685,13166,
+40686,13165,
+40687,5814,
+40688,13318,
+40689,18393,
+40690,13427,
+40691,13428,
+40692,5918,
+40693,13566,
+40694,13592,
+40695,5986,
+40696,18394,
+40697,9056,
+40698,11575,
+40699,12039,
+40700,12735,
+40701,9746,
+40702,18382,
+40703,12040,
+40704,12401,
+40705,12400,
+40706,14656,
+40710,13429,
+40711,5951,
+40712,14657,
+40713,13567,
+40714,13593,
+40718,3963,
+40719,11006,
+40720,11007,
+40722,11576,
+40723,3964,
+40725,5491,
+40726,12402,
+40727,14661,
+40728,13168,
+40729,5815,
+40730,13169,
+40731,13167,
+40732,13430,
+40734,13508,
+40736,3965,
+40738,12043,
+40739,12042,
+40740,12041,
+40741,12403,
+40742,16272,
+40743,17952,
+40744,12407,
+40745,12406,
+40746,12405,
+40747,12404,
+40748,5492,
+40749,12736,
+40750,12990,
+40751,5732,
+40752,12989,
+40753,13170,
+40754,13321,
+40755,13320,
+40756,5874,
+40757,13319,
+40758,13433,
+40759,13432,
+40760,13431,
+40761,14663,
+40763,4352,
+40765,11577,
+40766,5319,
+40768,12737,
+40769,12738,
+40770,13322,
+40771,13434,
+40772,18395,
+40773,14666,
+40774,13509,
+40775,13568,
+40776,13618,
+40777,13644,
+40778,4353,
+40779,5320,
+40780,12408,
+40781,12739,
+40782,13171,
+40783,13435,
+40784,18755,
+40786,4745,
+40787,16256,
+40788,12044,
+40789,12409,
+40790,12740,
+40791,12741,
+40792,12742,
+40793,12995,
+40794,16163,
+40795,12991,
+40796,5816,
+40797,12994,
+40798,12993,
+40799,5733,
+40800,12992,
+40801,5735,
+40802,14671,
+40803,5734,
+40804,13173,
+40805,13172,
+40806,5817,
+40807,5818,
+40809,14672,
+40810,5876,
+40811,13323,
+40812,5875,
+40814,13438,
+40815,13439,
+40816,13437,
+40817,13436,
+40818,5953,
+40820,13510,
+40821,13511,
+40822,13512,
+40823,5952,
+40824,13569,
+40825,13572,
+40826,13571,
+40827,13570,
+40830,13643,
+40831,18048,
+40845,5042,
+40846,14674,
+40848,5500,
+40849,12996,
+40850,13174,
+40852,5877,
+40853,13324,
+40856,13645,
+40857,17799,
+40860,5043,
+40863,17990,
+40864,12045,
+40866,13325,
+40868,13594,
+40869,16240,
+57344,16395,
+57346,16397,
+57347,16398,
+57353,16404,
+57354,16405,
+57356,16407,
+57358,16409,
+57362,16413,
+57363,16414,
+57364,16415,
+57365,16416,
+57366,16417,
+57368,16419,
+57370,16421,
+57371,16422,
+57372,16423,
+57373,16424,
+57374,16425,
+57376,16427,
+57378,16429,
+57379,16430,
+57381,16432,
+57389,16440,
+57390,16441,
+57392,16443,
+57394,16445,
+57395,16446,
+57396,16447,
+57397,16448,
+57398,16449,
+57399,16450,
+57400,16451,
+57403,16454,
+57404,16455,
+57413,16464,
+57420,16471,
+57434,16485,
+57436,16487,
+57439,16490,
+57440,16491,
+57441,16492,
+57444,16495,
+57446,16497,
+57452,16503,
+57457,16508,
+57460,16511,
+57461,16512,
+57464,16515,
+57469,16520,
+57479,16530,
+57481,16532,
+57482,16533,
+57484,16535,
+57491,16542,
+57492,16543,
+57497,16548,
+57498,16549,
+57500,16551,
+57501,16552,
+57502,16553,
+57510,16561,
+57511,16562,
+57513,16564,
+57515,16566,
+57518,16569,
+57530,16581,
+57532,16583,
+57534,16585,
+57539,16590,
+57541,16592,
+57543,16594,
+57544,16595,
+57546,16597,
+57552,16603,
+57556,16607,
+57557,16608,
+57564,16615,
+57567,16618,
+57570,16621,
+57571,16622,
+57572,16623,
+57573,16624,
+57575,16626,
+57576,16627,
+57577,16628,
+57579,16630,
+57580,16631,
+57582,16633,
+57586,16637,
+57592,16643,
+57593,16644,
+57595,16645,
+57597,16647,
+57603,16653,
+57606,16656,
+57609,16658,
+57610,16659,
+57611,16660,
+57616,16665,
+57620,16669,
+57621,16670,
+57628,16677,
+57629,16678,
+57633,16682,
+57638,16687,
+57639,16688,
+57640,16689,
+57648,16697,
+57649,16698,
+57654,16703,
+57657,16706,
+57665,16714,
+57666,16715,
+57669,16717,
+57671,16719,
+57672,16720,
+57674,16721,
+57677,16723,
+57680,16726,
+57684,16730,
+57685,16731,
+57686,16732,
+57687,16733,
+57689,16735,
+57690,16736,
+57693,18767,
+57698,16743,
+57704,16749,
+57705,16750,
+57706,16751,
+57713,16757,
+57714,16758,
+57717,16761,
+57720,16764,
+57721,16765,
+57723,16767,
+57724,16768,
+57727,16771,
+57728,16772,
+57733,16777,
+57735,16779,
+57737,16781,
+57739,16783,
+57743,16787,
+57744,16788,
+57747,16790,
+57749,18771,
+57750,16792,
+57759,16801,
+57760,16802,
+57764,18772,
+57766,16808,
+57770,16812,
+57774,16816,
+57776,16818,
+57777,16819,
+57779,16821,
+57780,16822,
+57782,16824,
+57784,16826,
+57787,18773,
+57788,16829,
+57789,16830,
+57790,16831,
+57791,16832,
+57793,16834,
+57796,16837,
+57797,16838,
+57800,16840,
+57804,16844,
+57805,16845,
+57812,16852,
+57813,16853,
+57815,16855,
+57818,16858,
+57821,16861,
+57826,16865,
+57830,16869,
+57835,16874,
+57839,16878,
+57840,16879,
+57842,16881,
+57847,16886,
+57850,16889,
+57854,16893,
+57856,16895,
+57857,18776,
+57858,16897,
+57861,16900,
+57863,16902,
+57866,16905,
+57867,16906,
+57868,16907,
+57872,16911,
+57874,16913,
+57875,16914,
+57876,16915,
+57877,16916,
+57878,16917,
+57881,16920,
+57883,16922,
+57884,16923,
+57887,16926,
+57888,16927,
+57889,16928,
+57894,16933,
+57895,16934,
+57896,16935,
+57898,16937,
+57903,16942,
+57905,16944,
+57907,16946,
+57911,16950,
+57915,16954,
+57917,16956,
+57918,16957,
+57925,16964,
+57928,16967,
+57930,16969,
+57931,16970,
+57932,16971,
+57933,16972,
+57934,16973,
+57935,16974,
+57937,16976,
+57938,16977,
+57939,16978,
+57940,16979,
+57953,16992,
+57960,16998,
+57963,17001,
+57965,17003,
+57966,17004,
+57967,17005,
+57969,17007,
+57978,17016,
+57981,17019,
+57986,17024,
+57992,17030,
+57993,17031,
+57995,17033,
+58000,17038,
+58001,17039,
+58004,17042,
+58005,17043,
+58006,17044,
+58009,17047,
+58010,17048,
+58011,17049,
+58015,17053,
+58017,18779,
+58020,17057,
+58022,17059,
+58034,17070,
+58035,17071,
+58036,17072,
+58037,17073,
+58039,17075,
+58040,17076,
+58042,17078,
+58046,17081,
+58047,17082,
+58049,17084,
+58055,17090,
+58057,17092,
+58068,17103,
+58072,17107,
+58073,17108,
+58078,17113,
+58080,17115,
+58081,17116,
+58082,17117,
+58087,17122,
+58089,17124,
+58091,17126,
+58092,17127,
+58093,17128,
+58096,18781,
+58097,18782,
+58104,17137,
+58108,17141,
+58111,18783,
+58112,18784,
+58113,17144,
+58118,17149,
+58120,17151,
+58124,17155,
+58127,17158,
+58129,14123,
+58131,14125,
+58133,14127,
+58136,14129,
+58139,14132,
+58140,14133,
+58143,14136,
+58149,14142,
+58156,14149,
+58160,14153,
+58161,14154,
+58165,14158,
+58166,14159,
+58171,14164,
+58173,18074,
+58178,14170,
+58181,14173,
+58184,14175,
+58194,14184,
+58196,14186,
+58203,14192,
+58204,14193,
+58208,14197,
+58210,14199,
+58212,14201,
+58213,14202,
+58223,14212,
+58226,14215,
+58228,14217,
+58229,14218,
+58231,14220,
+58233,14221,
+58235,14223,
+58241,14229,
+58242,14230,
+58246,14234,
+58248,14236,
+58249,14237,
+58250,14238,
+58253,14241,
+58257,14245,
+58259,14247,
+58260,18080,
+58262,14249,
+58264,14251,
+58266,14253,
+58267,14254,
+58270,18081,
+58271,14257,
+58272,14258,
+58274,14260,
+58277,18082,
+58278,14264,
+58279,14265,
+58280,14266,
+58281,14267,
+58284,14270,
+58289,14275,
+58290,14276,
+58292,14278,
+58293,14279,
+58297,14283,
+58298,14284,
+58299,14285,
+58300,14286,
+58301,14287,
+58307,14293,
+58312,14297,
+58316,14301,
+58317,18084,
+58319,14303,
+58325,18085,
+58328,14311,
+58329,14312,
+58330,14313,
+58337,14320,
+58339,14322,
+58343,18086,
+58349,14332,
+58350,14333,
+58352,14335,
+58354,14337,
+58355,14338,
+58356,14339,
+58360,14343,
+58362,14345,
+58365,14348,
+58367,14350,
+58377,14360,
+58378,14361,
+58379,14362,
+58388,14369,
+58395,14376,
+58397,14378,
+58398,14379,
+58403,14384,
+58405,14386,
+58406,18091,
+58408,14388,
+58412,14392,
+58413,14393,
+58418,14398,
+58422,14402,
+58426,14406,
+58427,14407,
+58428,14408,
+58430,14410,
+58432,14412,
+58433,14413,
+58436,14416,
+58440,18093,
+58444,14423,
+58445,14424,
+58446,14425,
+58448,14427,
+58449,14428,
+58457,14436,
+58458,14437,
+58461,14440,
+58462,14441,
+58465,14444,
+58466,14445,
+58467,14446,
+58469,14448,
+58471,18095,
+58472,18096,
+58473,18097,
+58474,14451,
+58476,14453,
+58478,14455,
+58479,14456,
+58481,14458,
+58482,14459,
+58484,14461,
+58486,14463,
+58494,14470,
+58495,14471,
+58500,14476,
+58502,14477,
+58503,14478,
+58504,14479,
+58505,14480,
+58506,14481,
+58509,14484,
+58510,14485,
+58513,14487,
+58514,14488,
+58517,14491,
+58518,14492,
+58519,14493,
+58529,18100,
+58530,14503,
+58531,14504,
+58532,14505,
+58539,14512,
+58543,14516,
+58547,14520,
+58548,14521,
+58549,14522,
+58550,14523,
+58551,14524,
+58552,14525,
+58553,14526,
+58554,14527,
+58561,14534,
+58566,14539,
+58569,14542,
+58573,14546,
+58574,14547,
+58582,14555,
+58585,14558,
+58588,14561,
+58589,14562,
+58596,14569,
+58598,14571,
+58599,14572,
+58600,14573,
+58606,14579,
+58607,14580,
+58614,14587,
+58616,14589,
+58617,14590,
+58623,14596,
+58625,14598,
+58626,14599,
+58629,14602,
+58634,14607,
+58637,18101,
+58639,14611,
+58642,14614,
+58644,14616,
+58646,18102,
+58650,14621,
+58652,14623,
+58653,14624,
+58654,14625,
+58655,14626,
+58656,14627,
+58657,14628,
+58660,14631,
+58664,18104,
+58665,14634,
+58666,14635,
+58667,14636,
+58668,14637,
+58670,14639,
+58671,14640,
+58679,14648,
+58686,14655,
+58691,14660,
+58699,14668,
+58708,14677,
+58709,14678,
+58711,14680,
+58712,14681,
+58713,14682,
+58715,14684,
+58716,14685,
+58718,14687,
+58719,14688,
+58722,14691,
+58726,14695,
+58727,14696,
+58733,14702,
+58734,14703,
+58736,14705,
+58738,14707,
+58739,14708,
+58741,14710,
+58742,14711,
+58743,14712,
+58745,14714,
+58746,14715,
+58748,14717,
+58749,14718,
+58750,14719,
+58752,14721,
+58754,14723,
+58755,14724,
+58756,14725,
+58757,14726,
+58758,14727,
+58760,14729,
+58763,14732,
+58764,14733,
+58765,14734,
+58766,14735,
+58767,14736,
+58768,14737,
+58770,14739,
+58771,14740,
+58772,14741,
+58778,14747,
+58781,14750,
+58782,14751,
+58783,14752,
+58784,14753,
+58785,14754,
+58788,14757,
+58790,14759,
+58791,14760,
+58792,14761,
+58794,14763,
+58799,14768,
+58801,14770,
+58802,18107,
+58805,14774,
+58807,14776,
+58808,14777,
+58810,14779,
+58811,14780,
+58814,14783,
+58815,14784,
+58816,14785,
+58818,14787,
+58824,14793,
+58825,14794,
+58839,14804,
+58840,14805,
+58841,14806,
+58843,14808,
+58844,14809,
+58847,14812,
+58849,14814,
+58850,14815,
+58851,14816,
+58853,14818,
+58854,14819,
+58857,14822,
+58862,14827,
+58863,14828,
+58864,14829,
+58865,14830,
+58867,14832,
+58875,14840,
+58876,14841,
+58880,14845,
+58882,14847,
+58884,14849,
+58895,14859,
+58896,14860,
+58897,14861,
+58898,14862,
+58905,14868,
+58906,14869,
+58907,14870,
+58908,14871,
+58913,14876,
+58915,14878,
+58916,14879,
+58919,14882,
+58923,14886,
+58930,14893,
+58931,14894,
+58932,14895,
+58935,14898,
+58936,14899,
+58938,14901,
+58940,14903,
+58943,14906,
+58944,14907,
+58945,14908,
+58946,14909,
+58949,14912,
+58950,14913,
+58952,14915,
+58955,14917,
+58958,14920,
+58959,14921,
+58962,14924,
+58963,14925,
+58964,14926,
+58965,14927,
+58967,14929,
+58968,14930,
+58969,14931,
+58973,14935,
+58974,14936,
+58975,14937,
+58976,14938,
+58978,14940,
+58979,14941,
+58981,14943,
+58982,14944,
+58983,14945,
+58984,14946,
+58986,18111,
+58990,14951,
+58991,14952,
+58993,14954,
+58998,14959,
+58999,14960,
+59000,14961,
+59001,14962,
+59003,14964,
+59004,14965,
+59005,14966,
+59007,14968,
+59008,14969,
+59011,14971,
+59012,14972,
+59013,14973,
+59014,14974,
+59015,14975,
+59016,14976,
+59018,14978,
+59019,14979,
+59020,14980,
+59022,14982,
+59023,14983,
+59024,14984,
+59026,14986,
+59030,14990,
+59031,14991,
+59033,14993,
+59034,14994,
+59036,14996,
+59038,14998,
+59039,14999,
+59041,15001,
+59042,15002,
+59046,15005,
+59052,15010,
+59053,15011,
+59058,15016,
+59065,15023,
+59066,15024,
+59069,15027,
+59070,15028,
+59072,15030,
+59073,15031,
+59077,18116,
+59079,15036,
+59082,15039,
+59089,15046,
+59090,15047,
+59095,15052,
+59096,15053,
+59098,15055,
+59099,15056,
+59101,15058,
+59102,15059,
+59103,15060,
+59104,15061,
+59105,15062,
+59108,15065,
+59109,15066,
+59110,15067,
+59118,15075,
+59122,15079,
+59123,15080,
+59127,15084,
+59130,15087,
+59131,15088,
+59132,15089,
+59135,15092,
+59137,15094,
+59138,15095,
+59142,15099,
+59143,15100,
+59145,15102,
+59146,15103,
+59148,15105,
+59152,15109,
+59153,15110,
+59155,15112,
+59159,15116,
+59160,15117,
+59162,15119,
+59163,15120,
+59165,15122,
+59172,15129,
+59173,15130,
+59179,15136,
+59183,15140,
+59187,15144,
+59188,15145,
+59189,15146,
+59190,15147,
+59191,15148,
+59196,15153,
+59197,15154,
+59200,15157,
+59201,15158,
+59202,15159,
+59204,15161,
+59207,15164,
+59213,15170,
+59214,15171,
+59215,15172,
+59217,15174,
+59218,15175,
+59227,15184,
+59228,15185,
+59229,15186,
+59231,15188,
+59233,15190,
+59234,15191,
+59236,15193,
+59237,15194,
+59239,15196,
+59240,15197,
+59241,18119,
+59244,15200,
+59245,15201,
+59246,15202,
+59248,15204,
+59253,15209,
+59255,15210,
+59256,15211,
+59258,15213,
+59260,15215,
+59261,15216,
+59268,15223,
+59270,15225,
+59273,15228,
+59275,15230,
+59277,15232,
+59280,15235,
+59282,15237,
+59284,15239,
+59286,15241,
+59287,15242,
+59289,15244,
+59298,15253,
+59300,15255,
+59301,15256,
+59302,15257,
+59303,15258,
+59304,15259,
+59305,15260,
+59313,15268,
+59316,15271,
+59320,15275,
+59324,15279,
+59332,15286,
+59338,15292,
+59342,15296,
+59345,15299,
+59352,15306,
+59354,15308,
+59356,15310,
+59357,15311,
+59364,15318,
+59367,15321,
+59368,15322,
+59369,15323,
+59371,15325,
+59373,15327,
+59374,15328,
+59375,15329,
+59377,15331,
+59378,15332,
+59379,15333,
+59384,15338,
+59387,15341,
+59388,15342,
+59391,15345,
+59392,15346,
+59393,15347,
+59394,15348,
+59400,15354,
+59404,15358,
+59406,15360,
+59407,15361,
+59409,15363,
+59411,15365,
+59414,15368,
+59415,15369,
+59416,15370,
+59418,15372,
+59425,15379,
+59431,15385,
+59432,15386,
+59437,15391,
+59439,15393,
+59445,15399,
+59447,15401,
+59448,15402,
+59450,15404,
+59451,15405,
+59457,15411,
+59458,15412,
+59467,15421,
+59469,15423,
+59470,15424,
+59473,15427,
+59477,15431,
+59478,15432,
+59479,15433,
+59480,15434,
+59483,15437,
+59484,15438,
+59485,15439,
+59488,15442,
+59489,15443,
+59490,15444,
+59493,15447,
+59494,15448,
+59495,15449,
+59497,15451,
+59498,15452,
+59500,15453,
+59505,15458,
+59512,15465,
+59517,15470,
+59518,15471,
+59519,15472,
+59527,15480,
+59535,15488,
+59537,15490,
+59538,15491,
+59540,15493,
+59541,15494,
+59546,15499,
+59549,15502,
+59552,15505,
+59553,15506,
+59555,15508,
+59556,15509,
+59557,15510,
+59558,15511,
+59559,15512,
+59561,15514,
+59562,15515,
+59564,15517,
+59565,15518,
+59566,15519,
+59567,15520,
+59568,15521,
+59573,15526,
+59574,15527,
+59576,15529,
+59581,15534,
+59582,15535,
+59583,15536,
+59584,15537,
+59585,15538,
+59586,15539,
+59587,15540,
+59589,15542,
+59591,15544,
+59595,15548,
+59597,15550,
+59598,15551,
+59600,15553,
+59601,15554,
+59603,15556,
+59605,15558,
+59606,15559,
+59608,15561,
+59609,15562,
+59610,15563,
+59613,15566,
+59615,15568,
+59616,15569,
+59617,15570,
+59621,15574,
+59622,15575,
+59624,15577,
+59625,15578,
+59626,15579,
+59629,15582,
+59633,15586,
+59634,15587,
+59637,15590,
+59643,15596,
+59646,15599,
+59648,15601,
+59651,15604,
+59655,15608,
+59656,15609,
+59660,15613,
+59671,15624,
+59672,15625,
+59676,15629,
+59678,15631,
+59679,15632,
+59680,15633,
+59681,15634,
+59682,15635,
+59685,15638,
+59686,15639,
+59687,15640,
+59688,15641,
+59689,15642,
+59690,15643,
+59691,15644,
+59692,15645,
+59694,15647,
+59695,15648,
+59699,15652,
+59700,15653,
+59701,15654,
+59702,15655,
+59704,18127,
+59706,15659,
+59708,15661,
+59709,15662,
+59710,15663,
+59713,15666,
+59716,15669,
+59717,15670,
+59720,15673,
+59725,15678,
+59728,15681,
+59730,15683,
+59731,15684,
+59732,15685,
+59733,15686,
+59735,15688,
+59736,15689,
+59738,15691,
+59740,15693,
+59741,15694,
+59742,15695,
+59744,15697,
+59745,15698,
+59748,15701,
+59751,15704,
+59752,18129,
+59758,18133,
+59759,18134,
+59763,18138,
+59764,15707,
+59765,18139,
+59767,18141,
+59768,18142,
+59770,18144,
+59771,18145,
+59773,18147,
+59777,18150,
+59778,18151,
+59783,15709,
+59786,15710,
+59790,15711,
+59793,18159,
+59824,17364,
+59851,18201,
+59887,18228,
+59971,18297,
+60073,18380,
+60095,18396,
+60096,18397,
+60097,18398,
+60101,18400,
+60105,18402,
+60106,18403,
+60107,18404,
+60108,18405,
+60111,18408,
+60112,18409,
+60113,18410,
+60115,18411,
+60116,18412,
+60118,18414,
+60119,18415,
+60120,18416,
+60121,18417,
+60122,18418,
+60124,18419,
+60126,18420,
+60127,18421,
+60128,18422,
+60129,18423,
+60130,18424,
+60131,18425,
+60135,18426,
+60136,18427,
+60137,18428,
+60138,18429,
+60139,18430,
+60140,18431,
+60142,18432,
+60144,18433,
+60145,18434,
+60146,18435,
+60148,17328,
+60149,18436,
+60150,18437,
+60152,18439,
+60153,17330,
+60154,18440,
+60155,18441,
+60158,18443,
+60159,18444,
+60160,18445,
+60162,18446,
+60163,18447,
+60164,18448,
+60165,18449,
+60168,18451,
+60169,18452,
+60170,18453,
+60171,18454,
+60172,18455,
+60173,18456,
+60174,18457,
+60175,18458,
+60177,18459,
+60178,18460,
+60181,18462,
+60184,18465,
+60185,18466,
+60186,18467,
+60187,18468,
+60188,18469,
+60189,18470,
+60191,18471,
+60192,18472,
+60193,18473,
+60195,18474,
+60197,18475,
+60199,18476,
+60202,18477,
+60204,18478,
+60205,18479,
+60206,18480,
+60207,18481,
+60208,18482,
+60209,18483,
+60210,18484,
+60211,18485,
+60212,18486,
+60213,18487,
+60214,18488,
+60215,18489,
+60216,18490,
+60217,18491,
+60221,15771,
+60222,18492,
+60223,18493,
+60225,15773,
+60227,18494,
+60228,18495,
+60230,15776,
+60234,18497,
+60235,15779,
+60236,15780,
+60237,18498,
+60238,18499,
+60239,15781,
+60240,15782,
+60243,18500,
+60244,15785,
+60245,18501,
+60246,18502,
+60247,15786,
+60248,18503,
+60249,18504,
+60250,15787,
+60251,15788,
+60253,15790,
+60255,15792,
+60257,15794,
+60258,18505,
+60259,18506,
+60261,18508,
+60263,18509,
+60264,15796,
+60265,15797,
+60267,15799,
+60269,15801,
+60271,18510,
+60272,18511,
+60273,18512,
+60275,18513,
+60276,15804,
+60278,17360,
+60279,18515,
+60280,15805,
+60282,18516,
+60286,18518,
+60287,18519,
+60288,15809,
+60289,15810,
+60291,18520,
+60292,18521,
+60293,15812,
+60296,18522,
+60297,15814,
+60298,18523,
+60300,18524,
+60301,18525,
+60302,18526,
+60303,15816,
+60304,18527,
+60307,15819,
+60309,18528,
+60311,15822,
+60312,18529,
+60313,18530,
+60314,18531,
+60315,15823,
+60319,18534,
+60320,15825,
+60322,18535,
+60323,15827,
+60325,18536,
+60326,18537,
+60328,15830,
+60330,18538,
+60331,15832,
+60333,15834,
+60334,18539,
+60335,15835,
+60336,18540,
+60338,18541,
+60339,18542,
+60340,15837,
+60342,15839,
+60345,15842,
+60348,15844,
+60349,18544,
+60351,15846,
+60354,15849,
+60357,18546,
+60358,18547,
+60359,15851,
+60360,18548,
+60362,18549,
+60364,15854,
+60365,15855,
+60366,18550,
+60368,18551,
+60371,18552,
+60373,18553,
+60375,15860,
+60376,15861,
+60378,18554,
+60379,18555,
+60381,15864,
+60383,18556,
+60385,18557,
+60388,18558,
+60391,15871,
+60392,18559,
+60393,18560,
+60395,18561,
+60396,18562,
+60398,15874,
+60399,18563,
+60401,18564,
+60402,15876,
+60405,18566,
+60406,15878,
+60409,15881,
+60410,15882,
+60411,15883,
+60413,15885,
+60414,15886,
+60421,15892,
+60422,15893,
+60424,18568,
+60425,18569,
+60428,15896,
+60430,15898,
+60431,15899,
+60432,15900,
+60435,18571,
+60436,15903,
+60439,15906,
+60440,15907,
+60441,18572,
+60442,18573,
+60443,18574,
+60444,18575,
+60445,15908,
+60448,18576,
+60450,15912,
+60452,15914,
+60454,15916,
+60458,15920,
+60459,18577,
+60460,15921,
+60461,15922,
+60462,15923,
+60463,18578,
+60465,15925,
+60466,18579,
+60469,15928,
+60471,15930,
+60475,15934,
+60476,15935,
+60479,18580,
+60480,18581,
+60481,18582,
+60482,15938,
+60483,18583,
+60484,17384,
+60485,18584,
+60486,18585,
+60487,18586,
+60488,18587,
+60489,18588,
+60491,18589,
+60492,18590,
+60495,18592,
+60498,18593,
+60500,18594,
+60502,18595,
+60503,18596,
+60504,18597,
+60506,18598,
+60508,18599,
+60509,18600,
+60511,18601,
+60512,18602,
+60514,18604,
+60515,18605,
+60519,18607,
+60520,15949,
+60521,18608,
+60522,18609,
+60523,18610,
+60524,18611,
+60525,18612,
+60526,18613,
+60527,18614,
+60528,18615,
+60529,18616,
+60530,18617,
+60531,18618,
+60533,18620,
+60534,18621,
+60537,18624,
+60539,18626,
+60542,18627,
+60544,18629,
+60548,18632,
+60550,18634,
+60557,18636,
+60558,15957,
+60561,18638,
+60562,15960,
+60563,18639,
+60564,18640,
+60565,15961,
+60566,18641,
+60568,18642,
+60569,15963,
+60570,18643,
+60571,18644,
+60573,18646,
+60574,15964,
+60576,18647,
+60579,18648,
+60580,18649,
+60583,18650,
+60584,18651,
+60587,18652,
+60589,18653,
+60591,15973,
+60596,18655,
+60598,15979,
+60601,18657,
+60602,18658,
+60603,18659,
+60623,16000,
+60628,16005,
+60635,16012,
+60636,16013,
+60638,18660,
+60639,16015,
+60640,16016,
+60641,16017,
+60645,16021,
+60656,16032,
+60658,16034,
+60661,16037,
+60668,16044,
+60676,18663,
+60679,18664,
+60682,18666,
+60684,18667,
+60685,18668,
+60686,18669,
+60687,18670,
+60688,18671,
+60689,18672,
+60691,18673,
+60693,18674,
+60694,18675,
+60695,18676,
+60696,16058,
+60698,18677,
+60700,18678,
+60701,16061,
+60702,18679,
+60706,18680,
+60708,16066,
+60709,16067,
+60710,18681,
+60711,18682,
+60713,16069,
+60714,18683,
+60716,16071,
+60717,18684,
+60731,16079,
+60733,18692,
+60737,18694,
+60738,18695,
+60741,18696,
+60743,16085,
+60746,18697,
+60747,18698,
+60749,18699,
+60750,18700,
+60751,16090,
+60753,18701,
+60754,16092,
+60755,18702,
+60756,18703,
+60759,18704,
+60760,18705,
+60767,16101,
+60770,16104,
+60779,16113,
+60785,18706,
+60786,16119,
+60789,18707,
+60791,18709,
+60792,16122,
+60794,18710,
+60801,18711,
+60804,16132,
+60805,16133,
+60806,18712,
+60808,16135,
+60809,18713,
+60810,18714,
+60811,16136,
+60814,16139,
+60817,16142,
+60838,18716,
+60870,16193,
+60879,16202,
+60881,18718,
+60887,18719,
+60890,16211,
+60891,18720,
+60893,18721,
+60897,16216,
+60909,16228,
+60936,16254,
+60945,16263,
+60949,18725,
+60955,18726,
+60960,16276,
+60962,18727,
+60970,16285,
+60976,18728,
+60977,16291,
+60980,16294,
+61000,18729,
+61014,18730,
+61019,18731,
+61021,16332,
+61024,18732,
+61028,16338,
+61034,16344,
+61046,16356,
+61052,16362,
+61054,18733,
+61073,16381,
+61084,18735,
+61089,18737,
+61090,18738,
+61091,18739,
+61092,18740,
+61093,18741,
+61094,18742,
+61095,17332,
+61096,18743,
+61097,18744,
+61098,18745,
+61100,18746,
+61101,18747,
+61102,18748,
+61103,18749,
+61104,18750,
+61105,18751,
+61108,18754,
+61111,18757,
+62211,17609,
+62212,17610,
+62213,17611,
+62214,17612,
+62215,17613,
+62216,17614,
+62217,17615,
+62218,17616,
+62219,17617,
+62220,17618,
+62221,17619,
+62222,17620,
+62223,17621,
+62224,17622,
+62225,17623,
+62226,17624,
+62227,17625,
+62228,17626,
+62229,17627,
+62230,17628,
+62231,17629,
+62232,17630,
+62245,18797,
+62247,18799,
+62276,18828,
+62278,18830,
+62282,18844,
+62283,18845,
+62368,17716,
+62369,17717,
+62380,17723,
+62448,17781,
+62457,17788,
+62458,17789,
+62460,17791,
+62472,17801,
+62473,17802,
+62474,17803,
+62475,17804,
+62525,17845,
+62528,17163,
+62529,17164,
+62530,17165,
+62532,17167,
+62534,17169,
+62536,17171,
+62537,17172,
+62539,17174,
+62541,17176,
+62544,17179,
+62545,17180,
+62546,17181,
+62548,17183,
+62549,17184,
+62550,17185,
+62551,17847,
+62554,17189,
+62555,17848,
+62556,17191,
+62557,17192,
+62558,17193,
+62559,17194,
+62561,17196,
+62562,17197,
+62563,17198,
+62565,17200,
+62566,17201,
+62569,17204,
+62572,17207,
+62573,17208,
+62574,17849,
+62575,17210,
+62580,17850,
+62583,17851,
+62584,17219,
+62585,17852,
+62587,17853,
+62588,17223,
+62589,17224,
+62590,17225,
+62592,17227,
+62593,17228,
+62595,17854,
+62596,17231,
+62597,17232,
+62600,17235,
+62603,17238,
+62605,17240,
+62606,17241,
+62607,17242,
+62608,17243,
+62609,17855,
+62615,17250,
+62616,17251,
+62619,17254,
+62622,17257,
+62628,17263,
+62629,17264,
+62630,17265,
+62631,17857,
+62633,17268,
+62634,17269,
+62637,17272,
+62639,17274,
+62640,17275,
+62642,17859,
+62643,17278,
+62644,17279,
+62647,17282,
+62650,17285,
+62651,17286,
+62652,17287,
+62653,17288,
+62654,17289,
+62655,17290,
+62656,17291,
+62657,17860,
+62659,17861,
+62660,17862,
+62661,17863,
+62663,17865,
+62664,17866,
+62665,17867,
+62666,17868,
+62668,17870,
+62669,17871,
+62670,17872,
+62671,17873,
+62673,17874,
+62674,17875,
+62675,17876,
+62676,17877,
+62677,17878,
+62679,17880,
+62681,17882,
+62682,17883,
+62683,17292,
+62684,17293,
+62685,17884,
+62686,17885,
+62687,17294,
+62688,17886,
+62690,17887,
+62691,17296,
+62692,17888,
+62693,17297,
+62694,17889,
+62695,17298,
+62696,17299,
+62697,17300,
+62703,17893,
+62706,17303,
+62707,17896,
+62712,17899,
+62716,17902,
+62718,17904,
+62719,17905,
+62720,17906,
+62721,17907,
+62723,17908,
+62725,17910,
+62727,17912,
+62728,17913,
+62729,17914,
+62730,17915,
+62731,17916,
+62732,17917,
+62733,17918,
+62734,17919,
+62735,17920,
+62736,17921,
+62737,17922,
+62739,17924,
+62740,17925,
+62741,17926,
+62742,17927,
+62744,17929,
+62745,17930,
+62746,17931,
+62747,17932,
+62748,17933,
+62749,17934,
+62751,17936,
+62752,17937,
+62753,17938,
+62754,17939,
+62755,17940,
+62756,17941,
+62757,17942,
+62758,17943,
+62762,17947,
+62771,17956,
+62772,17957,
+62778,17633,
+62779,17634,
+62781,17636,
+62798,17653,
+62803,17658,
+62806,17660,
+62809,17663,
+62810,17664,
+62814,17668,
+62821,17675,
+62827,17681,
+62834,17688,
+63124,18044,
+63134,18054,
+63149,18068,
+63152,18071,
+63461,13999,
+63462,14000,
+63464,14002,
+63466,14004,
+63467,14005,
+63469,14007,
+63470,14008,
+64012,628,
+64013,9089,
+65072,109,
+65073,122,
+65075,13743,
+65076,13745,
+65077,130,
+65078,131,
+65079,134,
+65080,135,
+65081,138,
+65082,139,
+65083,142,
+65084,143,
+65085,146,
+65086,147,
+65087,150,
+65088,151,
+65089,154,
+65090,155,
+65091,158,
+65092,159,
+65097,199,
+65098,200,
+65099,203,
+65100,204,
+65101,201,
+65102,202,
+65103,13746,
+65104,112,
+65106,114,
+65108,116,
+65109,117,
+65110,118,
+65111,119,
+65113,160,
+65114,161,
+65115,162,
+65116,163,
+65117,164,
+65118,165,
+65119,205,
+65120,206,
+65121,207,
+65122,223,
+65123,224,
+65124,225,
+65125,226,
+65126,227,
+65129,268,
+65130,269,
+65131,270,
+65281,108,
+65282,14052,
+65283,174,
+65284,259,
+65285,264,
+65286,175,
+65287,14051,
+65288,128,
+65289,129,
+65290,176,
+65291,208,
+65292,100,
+65293,209,
+65294,103,
+65295,257,
+65296,333,
+65297,334,
+65298,335,
+65299,336,
+65300,337,
+65301,338,
+65302,339,
+65303,340,
+65304,341,
+65305,342,
+65306,106,
+65307,105,
+65308,214,
+65309,216,
+65310,215,
+65311,107,
+65312,265,
+65313,365,
+65314,366,
+65315,367,
+65316,368,
+65317,369,
+65318,370,
+65319,371,
+65320,372,
+65321,373,
+65322,374,
+65323,375,
+65324,376,
+65325,377,
+65326,378,
+65327,379,
+65328,380,
+65329,381,
+65330,382,
+65331,383,
+65332,384,
+65333,385,
+65334,386,
+65335,387,
+65336,388,
+65337,389,
+65338,390,
+65339,13758,
+65340,258,
+65341,13759,
+65342,13748,
+65343,197,
+65345,391,
+65346,392,
+65347,393,
+65348,394,
+65349,395,
+65350,396,
+65351,397,
+65352,398,
+65353,399,
+65354,400,
+65355,401,
+65356,402,
+65357,403,
+65358,404,
+65359,405,
+65360,406,
+65361,407,
+65362,408,
+65363,409,
+65364,410,
+65365,411,
+65366,412,
+65367,413,
+65368,414,
+65369,415,
+65370,416,
+65371,132,
+65372,120,
+65373,133,
+65380,113,
+65506,14049,
+65508,14050,
+       };
+}
+
+# by UniCNS-UCS2-V Cmap
+sub u2c_CNS_V {
+       return {
+8211,120,
+8212,122,
+8229,109,
+12298,146,
+12299,147,
+12296,150,
+12297,151,
+12300,154,
+12301,155,
+12302,158,
+12303,159,
+12304,142,
+12305,143,
+12308,138,
+12309,139,
+65103,13745,
+65288,130,
+65289,131,
+65371,134,
+65373,135,
+       };
+}
+
+# by UniGB-UCS2-H Cmap
+sub u2c_GB_H {
+       return {
+32,1,
+33,2,
+34,3,
+35,4,
+36,5,
+37,6,
+38,7,
+39,8,
+40,9,
+41,10,
+42,11,
+43,12,
+44,13,
+45,14,
+46,15,
+47,16,
+48,17,
+49,18,
+50,19,
+51,20,
+52,21,
+53,22,
+54,23,
+55,24,
+56,25,
+57,26,
+58,27,
+59,28,
+60,29,
+61,30,
+62,31,
+63,32,
+64,33,
+65,34,
+66,35,
+67,36,
+68,37,
+69,38,
+70,39,
+71,40,
+72,41,
+73,42,
+74,43,
+75,44,
+76,45,
+77,46,
+78,47,
+79,48,
+80,49,
+81,50,
+82,51,
+83,52,
+84,53,
+85,54,
+86,55,
+87,56,
+88,57,
+89,58,
+90,59,
+91,60,
+92,61,
+93,62,
+94,63,
+95,64,
+96,65,
+97,66,
+98,67,
+99,68,
+100,69,
+101,70,
+102,71,
+103,72,
+104,73,
+105,74,
+106,75,
+107,76,
+108,77,
+109,78,
+110,79,
+111,80,
+112,81,
+113,82,
+114,83,
+115,84,
+116,85,
+117,86,
+118,87,
+119,88,
+120,89,
+121,90,
+122,91,
+123,92,
+124,93,
+125,94,
+126,95,
+164,167,
+165,22354,
+167,171,
+168,102,
+176,162,
+177,127,
+215,128,
+224,671,
+225,669,
+232,675,
+233,673,
+234,693,
+236,679,
+237,677,
+242,683,
+243,681,
+247,129,
+249,687,
+250,685,
+252,692,
+257,668,
+275,672,
+283,674,
+299,676,
+333,680,
+363,684,
+462,670,
+464,678,
+466,682,
+468,686,
+470,688,
+472,689,
+474,690,
+476,691,
+505,698,
+711,101,
+713,100,
+714,9907,
+715,9908,
+729,9909,
+913,525,
+914,526,
+915,527,
+916,528,
+917,529,
+918,530,
+919,531,
+920,532,
+921,533,
+922,534,
+923,535,
+924,536,
+925,537,
+926,538,
+927,539,
+928,540,
+929,541,
+931,542,
+932,543,
+933,544,
+934,545,
+935,546,
+936,547,
+937,548,
+945,549,
+946,550,
+947,551,
+948,552,
+949,553,
+950,554,
+951,555,
+952,556,
+953,557,
+954,558,
+955,559,
+956,560,
+957,561,
+958,562,
+959,563,
+960,564,
+961,565,
+963,566,
+964,567,
+965,568,
+966,569,
+967,570,
+968,571,
+969,572,
+1025,608,
+1040,602,
+1041,603,
+1042,604,
+1043,605,
+1044,606,
+1045,607,
+1046,609,
+1047,610,
+1048,611,
+1049,612,
+1050,613,
+1051,614,
+1052,615,
+1053,616,
+1054,617,
+1055,618,
+1056,619,
+1057,620,
+1058,621,
+1059,622,
+1060,623,
+1061,624,
+1062,625,
+1063,626,
+1064,627,
+1065,628,
+1066,629,
+1067,630,
+1068,631,
+1069,632,
+1070,633,
+1071,634,
+1072,635,
+1073,636,
+1074,637,
+1075,638,
+1076,639,
+1077,640,
+1078,642,
+1079,643,
+1080,644,
+1081,645,
+1082,646,
+1083,647,
+1084,648,
+1085,649,
+1086,650,
+1087,651,
+1088,652,
+1089,653,
+1090,654,
+1091,655,
+1092,656,
+1093,657,
+1094,658,
+1095,659,
+1096,660,
+1097,661,
+1098,662,
+1099,663,
+1100,664,
+1101,665,
+1102,666,
+1103,667,
+1105,641,
+7743,695,
+8208,10018,
+8211,9910,
+8212,105,
+8213,9911,
+8214,107,
+8216,109,
+8217,110,
+8220,111,
+8221,112,
+8229,9912,
+8230,108,
+8240,170,
+8242,163,
+8243,164,
+8245,9913,
+8251,184,
+8364,22353,
+8451,165,
+8453,9914,
+8457,9915,
+8470,172,
+8481,10016,
+8544,250,
+8545,251,
+8546,252,
+8547,253,
+8548,254,
+8549,255,
+8550,256,
+8551,257,
+8552,258,
+8553,259,
+8554,260,
+8555,261,
+8560,9897,
+8561,9898,
+8562,9899,
+8563,9900,
+8564,9901,
+8565,9902,
+8566,9903,
+8567,9904,
+8568,9905,
+8569,9906,
+8592,186,
+8593,187,
+8594,185,
+8595,188,
+8598,9916,
+8599,9917,
+8600,9918,
+8601,9919,
+8712,137,
+8719,134,
+8721,133,
+8725,9920,
+8730,139,
+8733,151,
+8734,157,
+8735,9921,
+8736,142,
+8739,9922,
+8741,141,
+8743,131,
+8744,132,
+8745,136,
+8746,135,
+8747,145,
+8750,146,
+8756,159,
+8757,158,
+8758,130,
+8759,138,
+8765,150,
+8776,149,
+8780,148,
+8786,9923,
+8800,152,
+8801,147,
+8804,155,
+8805,156,
+8806,9924,
+8807,9925,
+8814,153,
+8815,154,
+8853,9988,
+8857,144,
+8869,140,
+8895,9926,
+8943,108,
+8978,143,
+9312,230,
+9313,231,
+9314,232,
+9315,233,
+9316,234,
+9317,235,
+9318,236,
+9319,237,
+9320,238,
+9321,239,
+9332,210,
+9333,211,
+9334,212,
+9335,213,
+9336,214,
+9337,215,
+9338,216,
+9339,217,
+9340,218,
+9341,219,
+9342,220,
+9343,221,
+9344,222,
+9345,223,
+9346,224,
+9347,225,
+9348,226,
+9349,227,
+9350,228,
+9351,229,
+9352,190,
+9353,191,
+9354,192,
+9355,193,
+9356,194,
+9357,195,
+9358,196,
+9359,197,
+9360,198,
+9361,199,
+9362,200,
+9363,201,
+9364,202,
+9365,203,
+9366,204,
+9367,205,
+9368,206,
+9369,207,
+9370,208,
+9371,209,
+9472,738,
+9473,739,
+9474,740,
+9475,741,
+9476,742,
+9477,743,
+9478,744,
+9479,745,
+9480,746,
+9481,747,
+9482,748,
+9483,749,
+9484,750,
+9485,751,
+9486,752,
+9487,753,
+9488,754,
+9489,755,
+9490,756,
+9491,757,
+9492,758,
+9493,759,
+9494,760,
+9495,761,
+9496,762,
+9497,763,
+9498,764,
+9499,765,
+9500,766,
+9501,767,
+9502,768,
+9503,769,
+9504,770,
+9505,771,
+9506,772,
+9507,773,
+9508,774,
+9509,775,
+9510,776,
+9511,777,
+9512,778,
+9513,779,
+9514,780,
+9515,781,
+9516,782,
+9517,783,
+9518,784,
+9519,785,
+9520,786,
+9521,787,
+9522,788,
+9523,789,
+9524,790,
+9525,791,
+9526,792,
+9527,793,
+9528,794,
+9529,795,
+9530,796,
+9531,797,
+9532,798,
+9533,799,
+9534,800,
+9535,801,
+9536,802,
+9537,803,
+9538,804,
+9539,805,
+9540,806,
+9541,807,
+9542,808,
+9543,809,
+9544,810,
+9545,811,
+9546,812,
+9547,813,
+9552,9927,
+9553,9928,
+9554,9929,
+9555,9930,
+9556,9931,
+9557,9932,
+9558,9933,
+9559,9934,
+9560,9935,
+9561,9936,
+9562,9937,
+9563,9938,
+9564,9939,
+9565,9940,
+9566,9941,
+9567,9942,
+9568,9943,
+9569,9944,
+9570,9945,
+9571,9946,
+9572,9947,
+9573,9948,
+9574,9949,
+9575,9950,
+9576,9951,
+9577,9952,
+9578,9953,
+9579,9954,
+9580,9955,
+9581,9956,
+9582,9957,
+9583,9958,
+9584,9959,
+9585,9960,
+9586,9961,
+9587,9962,
+9601,9963,
+9602,9964,
+9603,9965,
+9604,9966,
+9605,9967,
+9606,9968,
+9607,9969,
+9608,9970,
+9609,9971,
+9610,9972,
+9611,9973,
+9612,9974,
+9613,9975,
+9614,9976,
+9615,9977,
+9619,9978,
+9620,9979,
+9621,9980,
+9632,181,
+9633,180,
+9650,183,
+9651,182,
+9660,9981,
+9661,9982,
+9670,179,
+9671,178,
+9675,175,
+9678,177,
+9679,176,
+9698,9983,
+9699,9984,
+9700,9985,
+9701,9986,
+9733,174,
+9734,173,
+9737,9987,
+9792,161,
+9794,160,
+11904,22428,
+11905,22047,
+11906,22429,
+11907,22430,
+11908,22051,
+11909,22431,
+11910,22432,
+11911,22433,
+11912,22054,
+11913,22434,
+11914,22435,
+11915,22055,
+11916,22060,
+11917,22436,
+11918,22437,
+11919,22438,
+11920,22439,
+11921,22440,
+11922,22441,
+11923,22442,
+11924,22443,
+11925,22444,
+11926,22445,
+11927,22061,
+11928,22446,
+11929,22447,
+11931,22448,
+11932,22449,
+11933,22450,
+11934,22451,
+11935,22452,
+11936,22453,
+11937,22454,
+11938,22455,
+11939,22456,
+11940,22457,
+11941,22458,
+11942,22459,
+11943,22074,
+11944,22460,
+11945,22461,
+11946,22077,
+11947,22462,
+11948,22463,
+11949,22464,
+11950,22080,
+11951,22465,
+11952,22466,
+11953,22467,
+11954,22468,
+11955,22082,
+11956,22469,
+11957,22470,
+11958,22083,
+11959,22084,
+11960,22471,
+11961,22472,
+11962,22473,
+11963,22088,
+11964,22474,
+11965,22475,
+11966,22476,
+11967,22477,
+11968,22478,
+11969,22479,
+11970,22480,
+11971,22481,
+11972,22482,
+11973,22483,
+11974,22484,
+11975,22485,
+11976,22486,
+11977,22487,
+11978,22098,
+11979,22488,
+11980,22489,
+11981,22490,
+11982,22491,
+11983,22492,
+11984,22493,
+11985,22494,
+11986,22495,
+11987,22496,
+11988,22497,
+11989,22498,
+11990,22499,
+11991,22500,
+11992,22501,
+11993,22502,
+11994,22503,
+11995,22504,
+11996,22505,
+11997,22506,
+11998,22507,
+11999,22508,
+12000,22509,
+12001,22510,
+12002,22511,
+12003,22512,
+12004,22513,
+12005,22514,
+12006,22515,
+12007,22516,
+12008,22517,
+12009,22518,
+12010,22519,
+12011,22520,
+12012,22521,
+12013,22522,
+12014,22523,
+12015,22524,
+12016,22525,
+12017,22526,
+12018,22527,
+12019,22528,
+12032,4162,
+12033,4707,
+12034,4722,
+12035,4709,
+12036,4185,
+12037,10131,
+12038,1597,
+12039,4867,
+12040,3238,
+12041,1592,
+12042,3270,
+12043,982,
+12044,4765,
+12045,4884,
+12046,4879,
+12047,2091,
+12048,5017,
+12049,1431,
+12050,2543,
+12051,4860,
+12052,4710,
+12053,4740,
+12054,10778,
+12055,3397,
+12056,1150,
+12057,4946,
+12058,1228,
+12059,5020,
+12060,4283,
+12061,2407,
+12062,5523,
+12063,3698,
+12064,3414,
+12065,5660,
+12066,11565,
+12067,3859,
+12068,1398,
+12069,2927,
+12070,4656,
+12071,5934,
+12072,1386,
+12073,3948,
+12074,5302,
+12075,3395,
+12076,6004,
+12077,3318,
+12078,6165,
+12079,1789,
+12080,2093,
+12081,2238,
+12082,1732,
+12083,6163,
+12084,1852,
+12085,5016,
+12086,5293,
+12087,5366,
+12088,1798,
+12089,5986,
+12090,5614,
+12091,5600,
+12092,3983,
+12093,1765,
+12094,12946,
+12095,3437,
+12096,4518,
+12097,6409,
+12098,3795,
+12099,1526,
+12100,2240,
+12101,1626,
+12102,3821,
+12103,3248,
+12104,4350,
+12105,4357,
+12106,2849,
+12107,3124,
+12108,4536,
+12109,1400,
+12110,6589,
+12111,3826,
+12112,1073,
+12113,2736,
+12114,3430,
+12115,3095,
+12116,3491,
+12117,2053,
+12118,4611,
+12119,1715,
+12120,4713,
+12121,5789,
+12122,3019,
+12123,4073,
+12124,2916,
+12125,3209,
+12126,4041,
+12127,4310,
+12128,1832,
+12129,3728,
+12130,1733,
+12131,3379,
+12132,4264,
+12133,3650,
+12134,7110,
+12135,7008,
+12136,16063,
+12137,994,
+12138,3011,
+12139,2808,
+12140,2850,
+12141,2737,
+12142,3407,
+12143,3398,
+12144,3413,
+12145,16587,
+12146,1923,
+12147,4049,
+12148,2539,
+12149,4592,
+12150,2780,
+12151,7399,
+12152,7262,
+12153,3753,
+12154,4123,
+12155,4309,
+12156,2490,
+12157,1591,
+12158,7115,
+12159,1593,
+12160,6686,
+12161,3261,
+12162,1249,
+12163,4657,
+12164,4544,
+12165,2297,
+12166,3353,
+12167,5656,
+12168,4570,
+12169,7388,
+12170,3300,
+12171,17826,
+12172,7152,
+12173,1291,
+12174,4051,
+12175,3995,
+12176,4169,
+12177,18908,
+12178,8086,
+12179,2200,
+12180,4093,
+12181,1825,
+12182,1528,
+12183,7445,
+12184,7504,
+12185,7739,
+12186,1285,
+12187,4668,
+12188,4672,
+12189,3366,
+12190,7803,
+12191,3980,
+12192,1250,
+12193,19731,
+12194,4191,
+12195,4276,
+12196,19992,
+12197,2522,
+12198,2241,
+12199,7797,
+12200,8317,
+12201,1714,
+12202,2542,
+12203,7545,
+12204,4303,
+12205,20714,
+12206,1636,
+12207,2795,
+12208,1770,
+12209,8589,
+12210,2289,
+12211,4219,
+12212,8713,
+12213,7936,
+12214,7924,
+12215,3402,
+12216,3438,
+12217,3920,
+12218,8301,
+12219,1824,
+12220,1754,
+12221,7660,
+12222,7888,
+12223,5019,
+12224,4704,
+12225,1862,
+12226,8761,
+12227,8348,
+12228,9864,
+12229,2656,
+12230,8305,
+12231,2704,
+12232,21894,
+12233,3465,
+12234,1937,
+12235,6741,
+12236,9752,
+12237,1509,
+12238,1821,
+12239,3466,
+12240,1072,
+12241,8390,
+12242,7814,
+12243,8247,
+12244,7988,
+12245,4851,
+12272,10060,
+12273,10061,
+12274,10062,
+12275,10063,
+12276,10064,
+12277,10065,
+12278,10066,
+12279,10067,
+12280,10068,
+12281,10069,
+12282,10070,
+12283,10071,
+12288,96,
+12289,97,
+12290,98,
+12291,103,
+12293,104,
+12294,10024,
+12295,7703,
+12296,115,
+12297,116,
+12298,117,
+12299,118,
+12300,119,
+12301,120,
+12302,121,
+12303,122,
+12304,125,
+12305,126,
+12306,9989,
+12307,189,
+12308,113,
+12309,114,
+12310,123,
+12311,124,
+12317,9990,
+12318,9991,
+12321,9992,
+12322,9993,
+12323,9994,
+12324,9995,
+12325,9996,
+12326,9997,
+12327,9998,
+12328,9999,
+12329,10000,
+12339,22395,
+12340,22396,
+12341,22397,
+12344,22398,
+12345,22399,
+12346,22400,
+12350,10059,
+12351,22357,
+12353,356,
+12354,357,
+12355,358,
+12356,359,
+12357,360,
+12358,361,
+12359,362,
+12360,363,
+12361,364,
+12362,365,
+12363,366,
+12364,367,
+12365,368,
+12366,369,
+12367,370,
+12368,371,
+12369,372,
+12370,373,
+12371,374,
+12372,375,
+12373,376,
+12374,377,
+12375,378,
+12376,379,
+12377,380,
+12378,381,
+12379,382,
+12380,383,
+12381,384,
+12382,385,
+12383,386,
+12384,387,
+12385,388,
+12386,389,
+12387,390,
+12388,391,
+12389,392,
+12390,393,
+12391,394,
+12392,395,
+12393,396,
+12394,397,
+12395,398,
+12396,399,
+12397,400,
+12398,401,
+12399,402,
+12400,403,
+12401,404,
+12402,405,
+12403,406,
+12404,407,
+12405,408,
+12406,409,
+12407,410,
+12408,411,
+12409,412,
+12410,413,
+12411,414,
+12412,415,
+12413,416,
+12414,417,
+12415,418,
+12416,419,
+12417,420,
+12418,421,
+12419,422,
+12420,423,
+12421,424,
+12422,425,
+12423,426,
+12424,427,
+12425,428,
+12426,429,
+12427,430,
+12428,431,
+12429,432,
+12430,433,
+12431,434,
+12432,435,
+12433,436,
+12434,437,
+12435,438,
+12436,22375,
+12443,10020,
+12444,10021,
+12445,10025,
+12446,10026,
+12449,439,
+12450,440,
+12451,441,
+12452,442,
+12453,443,
+12454,444,
+12455,445,
+12456,446,
+12457,447,
+12458,448,
+12459,449,
+12460,450,
+12461,451,
+12462,452,
+12463,453,
+12464,454,
+12465,455,
+12466,456,
+12467,457,
+12468,458,
+12469,459,
+12470,460,
+12471,461,
+12472,462,
+12473,463,
+12474,464,
+12475,465,
+12476,466,
+12477,467,
+12478,468,
+12479,469,
+12480,470,
+12481,471,
+12482,472,
+12483,473,
+12484,474,
+12485,475,
+12486,476,
+12487,477,
+12488,478,
+12489,479,
+12490,480,
+12491,481,
+12492,482,
+12493,483,
+12494,484,
+12495,485,
+12496,486,
+12497,487,
+12498,488,
+12499,489,
+12500,490,
+12501,491,
+12502,492,
+12503,493,
+12504,494,
+12505,495,
+12506,496,
+12507,497,
+12508,498,
+12509,499,
+12510,500,
+12511,501,
+12512,502,
+12513,503,
+12514,504,
+12515,505,
+12516,506,
+12517,507,
+12518,508,
+12519,509,
+12520,510,
+12521,511,
+12522,512,
+12523,513,
+12524,514,
+12525,515,
+12526,516,
+12527,517,
+12528,518,
+12529,519,
+12530,520,
+12531,521,
+12532,522,
+12533,523,
+12534,524,
+12535,22390,
+12536,22391,
+12537,22392,
+12538,22393,
+12539,99,
+12540,10019,
+12541,10022,
+12542,10023,
+12549,700,
+12550,701,
+12551,702,
+12552,703,
+12553,704,
+12554,705,
+12555,706,
+12556,707,
+12557,708,
+12558,709,
+12559,710,
+12560,711,
+12561,712,
+12562,713,
+12563,714,
+12564,715,
+12565,716,
+12566,717,
+12567,718,
+12568,719,
+12569,720,
+12570,721,
+12571,722,
+12572,723,
+12573,724,
+12574,725,
+12575,726,
+12576,727,
+12577,728,
+12578,729,
+12579,730,
+12580,731,
+12581,732,
+12582,733,
+12583,734,
+12584,735,
+12585,736,
+12586,22401,
+12587,22402,
+12588,22403,
+12704,22404,
+12705,22405,
+12706,22406,
+12707,22407,
+12708,22408,
+12709,22409,
+12710,22410,
+12711,22411,
+12712,22412,
+12713,22413,
+12714,22414,
+12715,22415,
+12716,22416,
+12717,22417,
+12718,22418,
+12719,22419,
+12720,22420,
+12721,22421,
+12722,22422,
+12723,22423,
+12724,22424,
+12725,22425,
+12726,22426,
+12727,22427,
+12832,240,
+12833,241,
+12834,242,
+12835,243,
+12836,244,
+12837,245,
+12838,246,
+12839,247,
+12840,248,
+12841,249,
+12849,10017,
+12963,10001,
+13198,10002,
+13199,10003,
+13212,10004,
+13213,10005,
+13214,10006,
+13217,10007,
+13252,10008,
+13262,10009,
+13265,10010,
+13266,10011,
+13269,10012,
+13312,22529,
+13313,22530,
+13314,22531,
+13315,22532,
+13316,22533,
+13317,22534,
+13318,22535,
+13319,22536,
+13320,22537,
+13321,22538,
+13322,22539,
+13323,22540,
+13324,22541,
+13325,22542,
+13326,22543,
+13327,22544,
+13328,22545,
+13329,22546,
+13330,22547,
+13331,22548,
+13332,22549,
+13333,22550,
+13334,22551,
+13335,22552,
+13336,22553,
+13337,22554,
+13338,22555,
+13339,22556,
+13340,22557,
+13341,22558,
+13342,22559,
+13343,22560,
+13344,22561,
+13345,22562,
+13346,22563,
+13347,22564,
+13348,22565,
+13349,22566,
+13350,22567,
+13351,22568,
+13352,22569,
+13353,22570,
+13354,22571,
+13355,22572,
+13356,22573,
+13357,22574,
+13358,22575,
+13359,22576,
+13360,22577,
+13361,22578,
+13362,22579,
+13363,22580,
+13364,22581,
+13365,22582,
+13366,22583,
+13367,22584,
+13368,22585,
+13369,22586,
+13370,22587,
+13371,22588,
+13372,22589,
+13373,22590,
+13374,22591,
+13375,22592,
+13376,22593,
+13377,22594,
+13378,22595,
+13379,22596,
+13380,22597,
+13381,22598,
+13382,22599,
+13383,22053,
+13384,22600,
+13385,22601,
+13386,22602,
+13387,22603,
+13388,22604,
+13389,22605,
+13390,22606,
+13391,22607,
+13392,22608,
+13393,22609,
+13394,22610,
+13395,22611,
+13396,22612,
+13397,22613,
+13398,22614,
+13399,22615,
+13400,22616,
+13401,22617,
+13402,22618,
+13403,22619,
+13404,22620,
+13405,22621,
+13406,22622,
+13407,22623,
+13408,22624,
+13409,22625,
+13410,22626,
+13411,22627,
+13412,22628,
+13413,22629,
+13414,22630,
+13415,22631,
+13416,22632,
+13417,22633,
+13418,22634,
+13419,22635,
+13420,22636,
+13421,22637,
+13422,22638,
+13423,22639,
+13424,22640,
+13425,22641,
+13426,22642,
+13427,22052,
+13428,22643,
+13429,22644,
+13430,22645,
+13431,22646,
+13432,22647,
+13433,22648,
+13434,22649,
+13435,22650,
+13436,22651,
+13437,22652,
+13438,22653,
+13439,22654,
+13440,22655,
+13441,22656,
+13442,22657,
+13443,22658,
+13444,22659,
+13445,22660,
+13446,22661,
+13447,22662,
+13448,22663,
+13449,22664,
+13450,22665,
+13451,22666,
+13452,22667,
+13453,22668,
+13454,22669,
+13455,22670,
+13456,22671,
+13457,22672,
+13458,22673,
+13459,22674,
+13460,22675,
+13461,22676,
+13462,22677,
+13463,22678,
+13464,22679,
+13465,22680,
+13466,22681,
+13467,22682,
+13468,22683,
+13469,22684,
+13470,22685,
+13471,22686,
+13472,22687,
+13473,22688,
+13474,22689,
+13475,22690,
+13476,22691,
+13477,22692,
+13478,22693,
+13479,22694,
+13480,22695,
+13481,22696,
+13482,22697,
+13483,22698,
+13484,22699,
+13485,22700,
+13486,22701,
+13487,22702,
+13488,22703,
+13489,22704,
+13490,22705,
+13491,22706,
+13492,22707,
+13493,22708,
+13494,22709,
+13495,22710,
+13496,22711,
+13497,22712,
+13498,22713,
+13499,22714,
+13500,22715,
+13501,22716,
+13502,22717,
+13503,22718,
+13504,22719,
+13505,22720,
+13506,22721,
+13507,22722,
+13508,22723,
+13509,22724,
+13510,22725,
+13511,22726,
+13512,22727,
+13513,22728,
+13514,22729,
+13515,22730,
+13516,22731,
+13517,22732,
+13518,22733,
+13519,22734,
+13520,22735,
+13521,22736,
+13522,22737,
+13523,22738,
+13524,22739,
+13525,22740,
+13526,22741,
+13527,22742,
+13528,22743,
+13529,22744,
+13530,22745,
+13531,22746,
+13532,22747,
+13533,22748,
+13534,22749,
+13535,22750,
+13536,22751,
+13537,22752,
+13538,22753,
+13539,22754,
+13540,22755,
+13541,22756,
+13542,22757,
+13543,22758,
+13544,22759,
+13545,22760,
+13546,22761,
+13547,22762,
+13548,22763,
+13549,22764,
+13550,22765,
+13551,22766,
+13552,22767,
+13553,22768,
+13554,22769,
+13555,22770,
+13556,22771,
+13557,22772,
+13558,22773,
+13559,22774,
+13560,22775,
+13561,22776,
+13562,22777,
+13563,22778,
+13564,22779,
+13565,22780,
+13566,22781,
+13567,22782,
+13568,22783,
+13569,22784,
+13570,22785,
+13571,22786,
+13572,22787,
+13573,22788,
+13574,22789,
+13575,22790,
+13576,22791,
+13577,22792,
+13578,22793,
+13579,22794,
+13580,22795,
+13581,22796,
+13582,22797,
+13583,22798,
+13584,22799,
+13585,22800,
+13586,22801,
+13587,22802,
+13588,22803,
+13589,22804,
+13590,22805,
+13591,22806,
+13592,22807,
+13593,22808,
+13594,22809,
+13595,22810,
+13596,22811,
+13597,22812,
+13598,22813,
+13599,22814,
+13600,22815,
+13601,22816,
+13602,22817,
+13603,22818,
+13604,22819,
+13605,22820,
+13606,22821,
+13607,22822,
+13608,22823,
+13609,22824,
+13610,22825,
+13611,22826,
+13612,22827,
+13613,22828,
+13614,22829,
+13615,22830,
+13616,22831,
+13617,22832,
+13618,22833,
+13619,22834,
+13620,22835,
+13621,22836,
+13622,22837,
+13623,22838,
+13624,22839,
+13625,22840,
+13626,22841,
+13627,22842,
+13628,22843,
+13629,22844,
+13630,22845,
+13631,22846,
+13632,22847,
+13633,22848,
+13634,22849,
+13635,22850,
+13636,22851,
+13637,22852,
+13638,22853,
+13639,22854,
+13640,22855,
+13641,22856,
+13642,22857,
+13643,22858,
+13644,22859,
+13645,22860,
+13646,22861,
+13647,22862,
+13648,22863,
+13649,22864,
+13650,22865,
+13651,22866,
+13652,22867,
+13653,22868,
+13654,22869,
+13655,22870,
+13656,22871,
+13657,22872,
+13658,22873,
+13659,22874,
+13660,22875,
+13661,22876,
+13662,22877,
+13663,22878,
+13664,22879,
+13665,22880,
+13666,22881,
+13667,22882,
+13668,22883,
+13669,22884,
+13670,22885,
+13671,22886,
+13672,22887,
+13673,22888,
+13674,22889,
+13675,22890,
+13676,22891,
+13677,22892,
+13678,22893,
+13679,22894,
+13680,22895,
+13681,22896,
+13682,22897,
+13683,22898,
+13684,22899,
+13685,22900,
+13686,22901,
+13687,22902,
+13688,22903,
+13689,22904,
+13690,22905,
+13691,22906,
+13692,22907,
+13693,22908,
+13694,22909,
+13695,22910,
+13696,22911,
+13697,22912,
+13698,22913,
+13699,22914,
+13700,22915,
+13701,22916,
+13702,22917,
+13703,22918,
+13704,22919,
+13705,22920,
+13706,22921,
+13707,22922,
+13708,22923,
+13709,22924,
+13710,22925,
+13711,22926,
+13712,22927,
+13713,22928,
+13714,22929,
+13715,22930,
+13716,22931,
+13717,22932,
+13718,22933,
+13719,22934,
+13720,22935,
+13721,22936,
+13722,22937,
+13723,22938,
+13724,22939,
+13725,22940,
+13726,22057,
+13727,22941,
+13728,22942,
+13729,22943,
+13730,22944,
+13731,22945,
+13732,22946,
+13733,22947,
+13734,22948,
+13735,22949,
+13736,22950,
+13737,22951,
+13738,22952,
+13739,22953,
+13740,22954,
+13741,22955,
+13742,22956,
+13743,22957,
+13744,22958,
+13745,22959,
+13746,22960,
+13747,22961,
+13748,22962,
+13749,22963,
+13750,22964,
+13751,22965,
+13752,22966,
+13753,22967,
+13754,22968,
+13755,22969,
+13756,22970,
+13757,22971,
+13758,22972,
+13759,22973,
+13760,22974,
+13761,22975,
+13762,22976,
+13763,22977,
+13764,22978,
+13765,22979,
+13766,22980,
+13767,22981,
+13768,22982,
+13769,22983,
+13770,22984,
+13771,22985,
+13772,22986,
+13773,22987,
+13774,22988,
+13775,22989,
+13776,22990,
+13777,22991,
+13778,22992,
+13779,22993,
+13780,22994,
+13781,22995,
+13782,22996,
+13783,22997,
+13784,22998,
+13785,22999,
+13786,23000,
+13787,23001,
+13788,23002,
+13789,23003,
+13790,23004,
+13791,23005,
+13792,23006,
+13793,23007,
+13794,23008,
+13795,23009,
+13796,23010,
+13797,23011,
+13798,23012,
+13799,23013,
+13800,23014,
+13801,23015,
+13802,23016,
+13803,23017,
+13804,23018,
+13805,23019,
+13806,23020,
+13807,23021,
+13808,23022,
+13809,23023,
+13810,23024,
+13811,23025,
+13812,23026,
+13813,23027,
+13814,23028,
+13815,23029,
+13816,23030,
+13817,23031,
+13818,23032,
+13819,23033,
+13820,23034,
+13821,23035,
+13822,23036,
+13823,23037,
+13824,23038,
+13825,23039,
+13826,23040,
+13827,23041,
+13828,23042,
+13829,23043,
+13830,23044,
+13831,23045,
+13832,23046,
+13833,23047,
+13834,23048,
+13835,23049,
+13836,23050,
+13837,23051,
+13838,22059,
+13839,23052,
+13840,23053,
+13841,23054,
+13842,23055,
+13843,23056,
+13844,23057,
+13845,23058,
+13846,23059,
+13847,23060,
+13848,23061,
+13849,23062,
+13850,22058,
+13851,23063,
+13852,23064,
+13853,23065,
+13854,23066,
+13855,23067,
+13856,23068,
+13857,23069,
+13858,23070,
+13859,23071,
+13860,23072,
+13861,23073,
+13862,23074,
+13863,23075,
+13864,23076,
+13865,23077,
+13866,23078,
+13867,23079,
+13868,23080,
+13869,23081,
+13870,23082,
+13871,23083,
+13872,23084,
+13873,23085,
+13874,23086,
+13875,23087,
+13876,23088,
+13877,23089,
+13878,23090,
+13879,23091,
+13880,23092,
+13881,23093,
+13882,23094,
+13883,23095,
+13884,23096,
+13885,23097,
+13886,23098,
+13887,23099,
+13888,23100,
+13889,23101,
+13890,23102,
+13891,23103,
+13892,23104,
+13893,23105,
+13894,23106,
+13895,23107,
+13896,23108,
+13897,23109,
+13898,23110,
+13899,23111,
+13900,23112,
+13901,23113,
+13902,23114,
+13903,23115,
+13904,23116,
+13905,23117,
+13906,23118,
+13907,23119,
+13908,23120,
+13909,23121,
+13910,23122,
+13911,23123,
+13912,23124,
+13913,23125,
+13914,23126,
+13915,23127,
+13916,23128,
+13917,23129,
+13918,23130,
+13919,23131,
+13920,23132,
+13921,23133,
+13922,23134,
+13923,23135,
+13924,23136,
+13925,23137,
+13926,23138,
+13927,23139,
+13928,23140,
+13929,23141,
+13930,23142,
+13931,23143,
+13932,23144,
+13933,23145,
+13934,23146,
+13935,23147,
+13936,23148,
+13937,23149,
+13938,23150,
+13939,23151,
+13940,23152,
+13941,23153,
+13942,23154,
+13943,23155,
+13944,23156,
+13945,23157,
+13946,23158,
+13947,23159,
+13948,23160,
+13949,23161,
+13950,23162,
+13951,23163,
+13952,23164,
+13953,23165,
+13954,23166,
+13955,23167,
+13956,23168,
+13957,23169,
+13958,23170,
+13959,23171,
+13960,23172,
+13961,23173,
+13962,23174,
+13963,23175,
+13964,23176,
+13965,23177,
+13966,23178,
+13967,23179,
+13968,23180,
+13969,23181,
+13970,23182,
+13971,23183,
+13972,23184,
+13973,23185,
+13974,23186,
+13975,23187,
+13976,23188,
+13977,23189,
+13978,23190,
+13979,23191,
+13980,23192,
+13981,23193,
+13982,23194,
+13983,23195,
+13984,23196,
+13985,23197,
+13986,23198,
+13987,23199,
+13988,23200,
+13989,23201,
+13990,23202,
+13991,23203,
+13992,23204,
+13993,23205,
+13994,23206,
+13995,23207,
+13996,23208,
+13997,23209,
+13998,23210,
+13999,23211,
+14000,23212,
+14001,23213,
+14002,23214,
+14003,23215,
+14004,23216,
+14005,23217,
+14006,23218,
+14007,23219,
+14008,23220,
+14009,23221,
+14010,23222,
+14011,23223,
+14012,23224,
+14013,23225,
+14014,23226,
+14015,23227,
+14016,23228,
+14017,23229,
+14018,23230,
+14019,23231,
+14020,23232,
+14021,23233,
+14022,23234,
+14023,23235,
+14024,23236,
+14025,23237,
+14026,23238,
+14027,23239,
+14028,23240,
+14029,23241,
+14030,23242,
+14031,23243,
+14032,23244,
+14033,23245,
+14034,23246,
+14035,23247,
+14036,23248,
+14037,23249,
+14038,23250,
+14039,23251,
+14040,23252,
+14041,23253,
+14042,23254,
+14043,23255,
+14044,23256,
+14045,23257,
+14046,23258,
+14047,23259,
+14048,23260,
+14049,23261,
+14050,23262,
+14051,23263,
+14052,23264,
+14053,23265,
+14054,23266,
+14055,23267,
+14056,23268,
+14057,23269,
+14058,23270,
+14059,23271,
+14060,23272,
+14061,23273,
+14062,23274,
+14063,23275,
+14064,23276,
+14065,23277,
+14066,23278,
+14067,23279,
+14068,23280,
+14069,23281,
+14070,23282,
+14071,23283,
+14072,23284,
+14073,23285,
+14074,23286,
+14075,23287,
+14076,23288,
+14077,23289,
+14078,23290,
+14079,23291,
+14080,23292,
+14081,23293,
+14082,23294,
+14083,23295,
+14084,23296,
+14085,23297,
+14086,23298,
+14087,23299,
+14088,23300,
+14089,23301,
+14090,23302,
+14091,23303,
+14092,23304,
+14093,23305,
+14094,23306,
+14095,23307,
+14096,23308,
+14097,23309,
+14098,23310,
+14099,23311,
+14100,23312,
+14101,23313,
+14102,23314,
+14103,23315,
+14104,23316,
+14105,23317,
+14106,23318,
+14107,23319,
+14108,23320,
+14109,23321,
+14110,23322,
+14111,23323,
+14112,23324,
+14113,23325,
+14114,23326,
+14115,23327,
+14116,23328,
+14117,23329,
+14118,23330,
+14119,23331,
+14120,23332,
+14121,23333,
+14122,23334,
+14123,23335,
+14124,23336,
+14125,23337,
+14126,23338,
+14127,23339,
+14128,23340,
+14129,23341,
+14130,23342,
+14131,23343,
+14132,23344,
+14133,23345,
+14134,23346,
+14135,23347,
+14136,23348,
+14137,23349,
+14138,23350,
+14139,23351,
+14140,23352,
+14141,23353,
+14142,23354,
+14143,23355,
+14144,23356,
+14145,23357,
+14146,23358,
+14147,23359,
+14148,23360,
+14149,23361,
+14150,23362,
+14151,23363,
+14152,23364,
+14153,23365,
+14154,23366,
+14155,23367,
+14156,23368,
+14157,23369,
+14158,23370,
+14159,23371,
+14160,23372,
+14161,23373,
+14162,23374,
+14163,23375,
+14164,23376,
+14165,23377,
+14166,23378,
+14167,23379,
+14168,23380,
+14169,23381,
+14170,23382,
+14171,23383,
+14172,23384,
+14173,23385,
+14174,23386,
+14175,23387,
+14176,23388,
+14177,23389,
+14178,23390,
+14179,23391,
+14180,23392,
+14181,23393,
+14182,23394,
+14183,23395,
+14184,23396,
+14185,23397,
+14186,23398,
+14187,23399,
+14188,23400,
+14189,23401,
+14190,23402,
+14191,23403,
+14192,23404,
+14193,23405,
+14194,23406,
+14195,23407,
+14196,23408,
+14197,23409,
+14198,23410,
+14199,23411,
+14200,23412,
+14201,23413,
+14202,23414,
+14203,23415,
+14204,23416,
+14205,23417,
+14206,23418,
+14207,23419,
+14208,23420,
+14209,23421,
+14210,23422,
+14211,23423,
+14212,23424,
+14213,23425,
+14214,23426,
+14215,23427,
+14216,23428,
+14217,23429,
+14218,23430,
+14219,23431,
+14220,23432,
+14221,23433,
+14222,23434,
+14223,23435,
+14224,23436,
+14225,23437,
+14226,23438,
+14227,23439,
+14228,23440,
+14229,23441,
+14230,23442,
+14231,23443,
+14232,23444,
+14233,23445,
+14234,23446,
+14235,23447,
+14236,23448,
+14237,23449,
+14238,23450,
+14239,23451,
+14240,23452,
+14241,23453,
+14242,23454,
+14243,23455,
+14244,23456,
+14245,23457,
+14246,23458,
+14247,23459,
+14248,23460,
+14249,23461,
+14250,23462,
+14251,23463,
+14252,23464,
+14253,23465,
+14254,23466,
+14255,23467,
+14256,23468,
+14257,23469,
+14258,23470,
+14259,23471,
+14260,23472,
+14261,23473,
+14262,23474,
+14263,23475,
+14264,23476,
+14265,23477,
+14266,23478,
+14267,23479,
+14268,23480,
+14269,23481,
+14270,23482,
+14271,23483,
+14272,23484,
+14273,23485,
+14274,23486,
+14275,23487,
+14276,23488,
+14277,23489,
+14278,23490,
+14279,23491,
+14280,23492,
+14281,23493,
+14282,23494,
+14283,23495,
+14284,23496,
+14285,23497,
+14286,23498,
+14287,23499,
+14288,23500,
+14289,23501,
+14290,23502,
+14291,23503,
+14292,23504,
+14293,23505,
+14294,23506,
+14295,23507,
+14296,23508,
+14297,23509,
+14298,23510,
+14299,23511,
+14300,23512,
+14301,23513,
+14302,23514,
+14303,23515,
+14304,23516,
+14305,23517,
+14306,23518,
+14307,23519,
+14308,23520,
+14309,23521,
+14310,23522,
+14311,23523,
+14312,23524,
+14313,23525,
+14314,23526,
+14315,23527,
+14316,23528,
+14317,23529,
+14318,23530,
+14319,23531,
+14320,23532,
+14321,23533,
+14322,23534,
+14323,23535,
+14324,23536,
+14325,23537,
+14326,23538,
+14327,23539,
+14328,23540,
+14329,23541,
+14330,23542,
+14331,23543,
+14332,23544,
+14333,23545,
+14334,23546,
+14335,23547,
+14336,23548,
+14337,23549,
+14338,23550,
+14339,23551,
+14340,23552,
+14341,23553,
+14342,23554,
+14343,23555,
+14344,23556,
+14345,23557,
+14346,23558,
+14347,23559,
+14348,23560,
+14349,23561,
+14350,23562,
+14351,23563,
+14352,23564,
+14353,23565,
+14354,23566,
+14355,23567,
+14356,23568,
+14357,23569,
+14358,23570,
+14359,23571,
+14360,23572,
+14361,23573,
+14362,23574,
+14363,23575,
+14364,23576,
+14365,23577,
+14366,23578,
+14367,23579,
+14368,23580,
+14369,23581,
+14370,23582,
+14371,23583,
+14372,23584,
+14373,23585,
+14374,23586,
+14375,23587,
+14376,23588,
+14377,23589,
+14378,23590,
+14379,23591,
+14380,23592,
+14381,23593,
+14382,23594,
+14383,23595,
+14384,23596,
+14385,23597,
+14386,23598,
+14387,23599,
+14388,23600,
+14389,23601,
+14390,23602,
+14391,23603,
+14392,23604,
+14393,23605,
+14394,23606,
+14395,23607,
+14396,23608,
+14397,23609,
+14398,23610,
+14399,23611,
+14400,23612,
+14401,23613,
+14402,23614,
+14403,23615,
+14404,23616,
+14405,23617,
+14406,23618,
+14407,23619,
+14408,23620,
+14409,23621,
+14410,23622,
+14411,23623,
+14412,23624,
+14413,23625,
+14414,23626,
+14415,23627,
+14416,23628,
+14417,23629,
+14418,23630,
+14419,23631,
+14420,23632,
+14421,23633,
+14422,23634,
+14423,23635,
+14424,23636,
+14425,23637,
+14426,23638,
+14427,23639,
+14428,23640,
+14429,23641,
+14430,23642,
+14431,23643,
+14432,23644,
+14433,23645,
+14434,23646,
+14435,23647,
+14436,23648,
+14437,23649,
+14438,23650,
+14439,23651,
+14440,23652,
+14441,23653,
+14442,23654,
+14443,23655,
+14444,23656,
+14445,23657,
+14446,23658,
+14447,23659,
+14448,23660,
+14449,23661,
+14450,23662,
+14451,23663,
+14452,23664,
+14453,23665,
+14454,23666,
+14455,23667,
+14456,23668,
+14457,23669,
+14458,23670,
+14459,23671,
+14460,23672,
+14461,23673,
+14462,23674,
+14463,23675,
+14464,23676,
+14465,23677,
+14466,23678,
+14467,23679,
+14468,23680,
+14469,23681,
+14470,23682,
+14471,23683,
+14472,23684,
+14473,23685,
+14474,23686,
+14475,23687,
+14476,23688,
+14477,23689,
+14478,23690,
+14479,23691,
+14480,23692,
+14481,23693,
+14482,23694,
+14483,23695,
+14484,23696,
+14485,23697,
+14486,23698,
+14487,23699,
+14488,23700,
+14489,23701,
+14490,23702,
+14491,23703,
+14492,23704,
+14493,23705,
+14494,23706,
+14495,23707,
+14496,23708,
+14497,23709,
+14498,23710,
+14499,23711,
+14500,23712,
+14501,23713,
+14502,23714,
+14503,23715,
+14504,23716,
+14505,23717,
+14506,23718,
+14507,23719,
+14508,23720,
+14509,23721,
+14510,23722,
+14511,23723,
+14512,23724,
+14513,23725,
+14514,23726,
+14515,23727,
+14516,23728,
+14517,23729,
+14518,23730,
+14519,23731,
+14520,23732,
+14521,23733,
+14522,23734,
+14523,23735,
+14524,23736,
+14525,23737,
+14526,23738,
+14527,23739,
+14528,23740,
+14529,23741,
+14530,23742,
+14531,23743,
+14532,23744,
+14533,23745,
+14534,23746,
+14535,23747,
+14536,23748,
+14537,23749,
+14538,23750,
+14539,23751,
+14540,23752,
+14541,23753,
+14542,23754,
+14543,23755,
+14544,23756,
+14545,23757,
+14546,23758,
+14547,23759,
+14548,23760,
+14549,23761,
+14550,23762,
+14551,23763,
+14552,23764,
+14553,23765,
+14554,23766,
+14555,23767,
+14556,23768,
+14557,23769,
+14558,23770,
+14559,23771,
+14560,23772,
+14561,23773,
+14562,23774,
+14563,23775,
+14564,23776,
+14565,23777,
+14566,23778,
+14567,23779,
+14568,23780,
+14569,23781,
+14570,23782,
+14571,23783,
+14572,23784,
+14573,23785,
+14574,23786,
+14575,23787,
+14576,23788,
+14577,23789,
+14578,23790,
+14579,23791,
+14580,23792,
+14581,23793,
+14582,23794,
+14583,23795,
+14584,23796,
+14585,23797,
+14586,23798,
+14587,23799,
+14588,23800,
+14589,23801,
+14590,23802,
+14591,23803,
+14592,23804,
+14593,23805,
+14594,23806,
+14595,23807,
+14596,23808,
+14597,23809,
+14598,23810,
+14599,23811,
+14600,23812,
+14601,23813,
+14602,23814,
+14603,23815,
+14604,23816,
+14605,23817,
+14606,23818,
+14607,23819,
+14608,23820,
+14609,23821,
+14610,23822,
+14611,23823,
+14612,23824,
+14613,23825,
+14614,23826,
+14615,23827,
+14616,22063,
+14617,23828,
+14618,23829,
+14619,23830,
+14620,23831,
+14621,23832,
+14622,23833,
+14623,23834,
+14624,23835,
+14625,23836,
+14626,23837,
+14627,23838,
+14628,23839,
+14629,23840,
+14630,23841,
+14631,23842,
+14632,23843,
+14633,23844,
+14634,23845,
+14635,23846,
+14636,23847,
+14637,23848,
+14638,23849,
+14639,23850,
+14640,23851,
+14641,23852,
+14642,23853,
+14643,23854,
+14644,23855,
+14645,23856,
+14646,23857,
+14647,23858,
+14648,23859,
+14649,23860,
+14650,23861,
+14651,23862,
+14652,23863,
+14653,23864,
+14654,23865,
+14655,23866,
+14656,23867,
+14657,23868,
+14658,23869,
+14659,23870,
+14660,23871,
+14661,23872,
+14662,23873,
+14663,23874,
+14664,23875,
+14665,23876,
+14666,23877,
+14667,23878,
+14668,23879,
+14669,23880,
+14670,23881,
+14671,23882,
+14672,23883,
+14673,23884,
+14674,23885,
+14675,23886,
+14676,23887,
+14677,23888,
+14678,23889,
+14679,23890,
+14680,23891,
+14681,23892,
+14682,23893,
+14683,23894,
+14684,23895,
+14685,23896,
+14686,23897,
+14687,23898,
+14688,23899,
+14689,23900,
+14690,23901,
+14691,23902,
+14692,23903,
+14693,23904,
+14694,23905,
+14695,23906,
+14696,23907,
+14697,23908,
+14698,23909,
+14699,23910,
+14700,23911,
+14701,23912,
+14702,22062,
+14703,23913,
+14704,23914,
+14705,23915,
+14706,23916,
+14707,23917,
+14708,23918,
+14709,23919,
+14710,23920,
+14711,23921,
+14712,23922,
+14713,23923,
+14714,23924,
+14715,23925,
+14716,23926,
+14717,23927,
+14718,23928,
+14719,23929,
+14720,23930,
+14721,23931,
+14722,23932,
+14723,23933,
+14724,23934,
+14725,23935,
+14726,23936,
+14727,23937,
+14728,23938,
+14729,23939,
+14730,23940,
+14731,23941,
+14732,23942,
+14733,23943,
+14734,23944,
+14735,23945,
+14736,23946,
+14737,23947,
+14738,23948,
+14739,23949,
+14740,23950,
+14741,23951,
+14742,23952,
+14743,23953,
+14744,23954,
+14745,23955,
+14746,23956,
+14747,23957,
+14748,23958,
+14749,23959,
+14750,23960,
+14751,23961,
+14752,23962,
+14753,23963,
+14754,23964,
+14755,23965,
+14756,23966,
+14757,23967,
+14758,23968,
+14759,23969,
+14760,23970,
+14761,23971,
+14762,23972,
+14763,23973,
+14764,23974,
+14765,23975,
+14766,23976,
+14767,23977,
+14768,23978,
+14769,23979,
+14770,23980,
+14771,23981,
+14772,23982,
+14773,23983,
+14774,23984,
+14775,23985,
+14776,23986,
+14777,23987,
+14778,23988,
+14779,23989,
+14780,23990,
+14781,23991,
+14782,23992,
+14783,23993,
+14784,23994,
+14785,23995,
+14786,23996,
+14787,23997,
+14788,23998,
+14789,23999,
+14790,24000,
+14791,24001,
+14792,24002,
+14793,24003,
+14794,24004,
+14795,24005,
+14796,24006,
+14797,24007,
+14798,24008,
+14799,22065,
+14800,22068,
+14801,24009,
+14802,24010,
+14803,24011,
+14804,24012,
+14805,24013,
+14806,24014,
+14807,24015,
+14808,24016,
+14809,24017,
+14810,24018,
+14811,24019,
+14812,24020,
+14813,24021,
+14814,24022,
+14815,22066,
+14816,24023,
+14817,24024,
+14818,24025,
+14819,24026,
+14820,24027,
+14821,24028,
+14822,24029,
+14823,24030,
+14824,24031,
+14825,24032,
+14826,24033,
+14827,24034,
+14828,24035,
+14829,24036,
+14830,24037,
+14831,24038,
+14832,24039,
+14833,24040,
+14834,24041,
+14835,24042,
+14836,24043,
+14837,24044,
+14838,24045,
+14839,24046,
+14840,24047,
+14841,24048,
+14842,24049,
+14843,24050,
+14844,24051,
+14845,24052,
+14846,24053,
+14847,24054,
+14848,24055,
+14849,24056,
+14850,24057,
+14851,24058,
+14852,24059,
+14853,24060,
+14854,24061,
+14855,24062,
+14856,24063,
+14857,24064,
+14858,24065,
+14859,24066,
+14860,24067,
+14861,24068,
+14862,24069,
+14863,24070,
+14864,24071,
+14865,24072,
+14866,24073,
+14867,24074,
+14868,24075,
+14869,24076,
+14870,24077,
+14871,24078,
+14872,24079,
+14873,24080,
+14874,24081,
+14875,24082,
+14876,24083,
+14877,24084,
+14878,24085,
+14879,24086,
+14880,24087,
+14881,24088,
+14882,24089,
+14883,24090,
+14884,24091,
+14885,24092,
+14886,24093,
+14887,24094,
+14888,24095,
+14889,24096,
+14890,24097,
+14891,24098,
+14892,24099,
+14893,24100,
+14894,24101,
+14895,24102,
+14896,24103,
+14897,24104,
+14898,24105,
+14899,24106,
+14900,24107,
+14901,24108,
+14902,24109,
+14903,24110,
+14904,24111,
+14905,24112,
+14906,24113,
+14907,24114,
+14908,24115,
+14909,24116,
+14910,24117,
+14911,24118,
+14912,24119,
+14913,24120,
+14914,24121,
+14915,24122,
+14916,24123,
+14917,24124,
+14918,24125,
+14919,24126,
+14920,24127,
+14921,24128,
+14922,24129,
+14923,24130,
+14924,24131,
+14925,24132,
+14926,24133,
+14927,24134,
+14928,24135,
+14929,24136,
+14930,24137,
+14931,24138,
+14932,24139,
+14933,24140,
+14934,24141,
+14935,24142,
+14936,24143,
+14937,24144,
+14938,24145,
+14939,24146,
+14940,24147,
+14941,24148,
+14942,24149,
+14943,24150,
+14944,24151,
+14945,24152,
+14946,24153,
+14947,24154,
+14948,24155,
+14949,24156,
+14950,24157,
+14951,24158,
+14952,24159,
+14953,24160,
+14954,24161,
+14955,24162,
+14956,24163,
+14957,24164,
+14958,24165,
+14959,24166,
+14960,24167,
+14961,24168,
+14962,24169,
+14963,22067,
+14964,24170,
+14965,24171,
+14966,24172,
+14967,24173,
+14968,24174,
+14969,24175,
+14970,24176,
+14971,24177,
+14972,24178,
+14973,24179,
+14974,24180,
+14975,24181,
+14976,24182,
+14977,24183,
+14978,24184,
+14979,24185,
+14980,24186,
+14981,24187,
+14982,24188,
+14983,24189,
+14984,24190,
+14985,24191,
+14986,24192,
+14987,24193,
+14988,24194,
+14989,24195,
+14990,24196,
+14991,24197,
+14992,24198,
+14993,24199,
+14994,24200,
+14995,24201,
+14996,24202,
+14997,24203,
+14998,24204,
+14999,24205,
+15000,24206,
+15001,24207,
+15002,24208,
+15003,24209,
+15004,24210,
+15005,24211,
+15006,24212,
+15007,24213,
+15008,24214,
+15009,24215,
+15010,24216,
+15011,24217,
+15012,24218,
+15013,24219,
+15014,24220,
+15015,24221,
+15016,24222,
+15017,24223,
+15018,24224,
+15019,24225,
+15020,24226,
+15021,24227,
+15022,24228,
+15023,24229,
+15024,24230,
+15025,24231,
+15026,24232,
+15027,24233,
+15028,24234,
+15029,24235,
+15030,24236,
+15031,24237,
+15032,24238,
+15033,24239,
+15034,24240,
+15035,24241,
+15036,24242,
+15037,24243,
+15038,24244,
+15039,24245,
+15040,24246,
+15041,24247,
+15042,24248,
+15043,24249,
+15044,24250,
+15045,24251,
+15046,24252,
+15047,24253,
+15048,24254,
+15049,24255,
+15050,24256,
+15051,24257,
+15052,24258,
+15053,24259,
+15054,24260,
+15055,24261,
+15056,24262,
+15057,24263,
+15058,24264,
+15059,24265,
+15060,24266,
+15061,24267,
+15062,24268,
+15063,24269,
+15064,24270,
+15065,24271,
+15066,24272,
+15067,24273,
+15068,24274,
+15069,24275,
+15070,24276,
+15071,24277,
+15072,24278,
+15073,24279,
+15074,24280,
+15075,24281,
+15076,24282,
+15077,24283,
+15078,24284,
+15079,24285,
+15080,24286,
+15081,24287,
+15082,24288,
+15083,24289,
+15084,24290,
+15085,24291,
+15086,24292,
+15087,24293,
+15088,24294,
+15089,24295,
+15090,24296,
+15091,24297,
+15092,24298,
+15093,24299,
+15094,24300,
+15095,24301,
+15096,24302,
+15097,24303,
+15098,24304,
+15099,24305,
+15100,24306,
+15101,24307,
+15102,24308,
+15103,24309,
+15104,24310,
+15105,24311,
+15106,24312,
+15107,24313,
+15108,24314,
+15109,24315,
+15110,24316,
+15111,24317,
+15112,24318,
+15113,24319,
+15114,24320,
+15115,24321,
+15116,24322,
+15117,24323,
+15118,24324,
+15119,24325,
+15120,24326,
+15121,24327,
+15122,24328,
+15123,24329,
+15124,24330,
+15125,24331,
+15126,24332,
+15127,24333,
+15128,24334,
+15129,24335,
+15130,24336,
+15131,24337,
+15132,24338,
+15133,24339,
+15134,24340,
+15135,24341,
+15136,24342,
+15137,24343,
+15138,24344,
+15139,24345,
+15140,24346,
+15141,24347,
+15142,24348,
+15143,24349,
+15144,24350,
+15145,24351,
+15146,24352,
+15147,24353,
+15148,24354,
+15149,24355,
+15150,24356,
+15151,24357,
+15152,24358,
+15153,24359,
+15154,24360,
+15155,24361,
+15156,24362,
+15157,24363,
+15158,24364,
+15159,24365,
+15160,24366,
+15161,24367,
+15162,24368,
+15163,24369,
+15164,24370,
+15165,24371,
+15166,24372,
+15167,24373,
+15168,24374,
+15169,24375,
+15170,24376,
+15171,24377,
+15172,24378,
+15173,24379,
+15174,24380,
+15175,24381,
+15176,24382,
+15177,24383,
+15178,24384,
+15179,24385,
+15180,24386,
+15181,24387,
+15182,22071,
+15183,24388,
+15184,24389,
+15185,24390,
+15186,24391,
+15187,24392,
+15188,24393,
+15189,24394,
+15190,24395,
+15191,24396,
+15192,24397,
+15193,24398,
+15194,24399,
+15195,24400,
+15196,24401,
+15197,24402,
+15198,24403,
+15199,24404,
+15200,24405,
+15201,24406,
+15202,24407,
+15203,24408,
+15204,24409,
+15205,24410,
+15206,24411,
+15207,24412,
+15208,24413,
+15209,24414,
+15210,24415,
+15211,24416,
+15212,24417,
+15213,24418,
+15214,24419,
+15215,24420,
+15216,24421,
+15217,24422,
+15218,24423,
+15219,24424,
+15220,24425,
+15221,24426,
+15222,24427,
+15223,24428,
+15224,24429,
+15225,24430,
+15226,24431,
+15227,24432,
+15228,24433,
+15229,24434,
+15230,24435,
+15231,24436,
+15232,24437,
+15233,24438,
+15234,24439,
+15235,24440,
+15236,24441,
+15237,24442,
+15238,24443,
+15239,24444,
+15240,24445,
+15241,24446,
+15242,24447,
+15243,24448,
+15244,24449,
+15245,24450,
+15246,24451,
+15247,24452,
+15248,24453,
+15249,24454,
+15250,24455,
+15251,24456,
+15252,24457,
+15253,24458,
+15254,24459,
+15255,24460,
+15256,24461,
+15257,24462,
+15258,24463,
+15259,24464,
+15260,24465,
+15261,24466,
+15262,24467,
+15263,24468,
+15264,24469,
+15265,24470,
+15266,24471,
+15267,24472,
+15268,24473,
+15269,24474,
+15270,24475,
+15271,24476,
+15272,24477,
+15273,24478,
+15274,24479,
+15275,24480,
+15276,24481,
+15277,24482,
+15278,24483,
+15279,24484,
+15280,24485,
+15281,24486,
+15282,24487,
+15283,24488,
+15284,24489,
+15285,24490,
+15286,24491,
+15287,24492,
+15288,24493,
+15289,24494,
+15290,24495,
+15291,24496,
+15292,24497,
+15293,24498,
+15294,24499,
+15295,24500,
+15296,24501,
+15297,24502,
+15298,24503,
+15299,24504,
+15300,24505,
+15301,24506,
+15302,24507,
+15303,24508,
+15304,24509,
+15305,24510,
+15306,24511,
+15307,24512,
+15308,24513,
+15309,24514,
+15310,24515,
+15311,24516,
+15312,24517,
+15313,24518,
+15314,24519,
+15315,24520,
+15316,24521,
+15317,24522,
+15318,24523,
+15319,24524,
+15320,24525,
+15321,24526,
+15322,24527,
+15323,24528,
+15324,24529,
+15325,24530,
+15326,24531,
+15327,24532,
+15328,24533,
+15329,24534,
+15330,24535,
+15331,24536,
+15332,24537,
+15333,24538,
+15334,24539,
+15335,24540,
+15336,24541,
+15337,24542,
+15338,24543,
+15339,24544,
+15340,24545,
+15341,24546,
+15342,24547,
+15343,24548,
+15344,24549,
+15345,24550,
+15346,24551,
+15347,24552,
+15348,24553,
+15349,24554,
+15350,24555,
+15351,24556,
+15352,24557,
+15353,24558,
+15354,24559,
+15355,24560,
+15356,24561,
+15357,24562,
+15358,24563,
+15359,24564,
+15360,24565,
+15361,24566,
+15362,24567,
+15363,24568,
+15364,24569,
+15365,24570,
+15366,24571,
+15367,24572,
+15368,24573,
+15369,24574,
+15370,24575,
+15371,24576,
+15372,24577,
+15373,24578,
+15374,24579,
+15375,24580,
+15376,24581,
+15377,24582,
+15378,24583,
+15379,24584,
+15380,24585,
+15381,24586,
+15382,24587,
+15383,24588,
+15384,24589,
+15385,24590,
+15386,24591,
+15387,24592,
+15388,24593,
+15389,24594,
+15390,24595,
+15391,24596,
+15392,24597,
+15393,24598,
+15394,24599,
+15395,24600,
+15396,24601,
+15397,24602,
+15398,24603,
+15399,24604,
+15400,24605,
+15401,24606,
+15402,24607,
+15403,24608,
+15404,24609,
+15405,24610,
+15406,24611,
+15407,24612,
+15408,24613,
+15409,24614,
+15410,24615,
+15411,24616,
+15412,24617,
+15413,24618,
+15414,24619,
+15415,24620,
+15416,24621,
+15417,24622,
+15418,24623,
+15419,24624,
+15420,24625,
+15421,24626,
+15422,24627,
+15423,24628,
+15424,24629,
+15425,24630,
+15426,24631,
+15427,24632,
+15428,24633,
+15429,24634,
+15430,24635,
+15431,24636,
+15432,24637,
+15433,24638,
+15434,24639,
+15435,24640,
+15436,24641,
+15437,24642,
+15438,24643,
+15439,24644,
+15440,24645,
+15441,24646,
+15442,24647,
+15443,24648,
+15444,24649,
+15445,24650,
+15446,24651,
+15447,24652,
+15448,24653,
+15449,24654,
+15450,24655,
+15451,24656,
+15452,24657,
+15453,24658,
+15454,24659,
+15455,24660,
+15456,24661,
+15457,24662,
+15458,24663,
+15459,24664,
+15460,24665,
+15461,24666,
+15462,24667,
+15463,24668,
+15464,24669,
+15465,24670,
+15466,24671,
+15467,24672,
+15468,24673,
+15469,24674,
+15470,22072,
+15471,24675,
+15472,24676,
+15473,24677,
+15474,24678,
+15475,24679,
+15476,24680,
+15477,24681,
+15478,24682,
+15479,24683,
+15480,24684,
+15481,24685,
+15482,24686,
+15483,24687,
+15484,24688,
+15485,24689,
+15486,24690,
+15487,24691,
+15488,24692,
+15489,24693,
+15490,24694,
+15491,24695,
+15492,24696,
+15493,24697,
+15494,24698,
+15495,24699,
+15496,24700,
+15497,24701,
+15498,24702,
+15499,24703,
+15500,24704,
+15501,24705,
+15502,24706,
+15503,24707,
+15504,24708,
+15505,24709,
+15506,24710,
+15507,24711,
+15508,24712,
+15509,24713,
+15510,24714,
+15511,24715,
+15512,24716,
+15513,24717,
+15514,24718,
+15515,24719,
+15516,24720,
+15517,24721,
+15518,24722,
+15519,24723,
+15520,24724,
+15521,24725,
+15522,24726,
+15523,24727,
+15524,24728,
+15525,24729,
+15526,24730,
+15527,24731,
+15528,24732,
+15529,24733,
+15530,24734,
+15531,24735,
+15532,24736,
+15533,24737,
+15534,24738,
+15535,24739,
+15536,24740,
+15537,24741,
+15538,24742,
+15539,24743,
+15540,24744,
+15541,24745,
+15542,24746,
+15543,24747,
+15544,24748,
+15545,24749,
+15546,24750,
+15547,24751,
+15548,24752,
+15549,24753,
+15550,24754,
+15551,24755,
+15552,24756,
+15553,24757,
+15554,24758,
+15555,24759,
+15556,24760,
+15557,24761,
+15558,24762,
+15559,24763,
+15560,24764,
+15561,24765,
+15562,24766,
+15563,24767,
+15564,24768,
+15565,24769,
+15566,24770,
+15567,24771,
+15568,24772,
+15569,24773,
+15570,24774,
+15571,24775,
+15572,24776,
+15573,24777,
+15574,24778,
+15575,24779,
+15576,24780,
+15577,24781,
+15578,24782,
+15579,24783,
+15580,24784,
+15581,24785,
+15582,24786,
+15583,24787,
+15584,22073,
+15585,24788,
+15586,24789,
+15587,24790,
+15588,24791,
+15589,24792,
+15590,24793,
+15591,24794,
+15592,24795,
+15593,24796,
+15594,24797,
+15595,24798,
+15596,24799,
+15597,24800,
+15598,24801,
+15599,24802,
+15600,24803,
+15601,24804,
+15602,24805,
+15603,24806,
+15604,24807,
+15605,24808,
+15606,24809,
+15607,24810,
+15608,24811,
+15609,24812,
+15610,24813,
+15611,24814,
+15612,24815,
+15613,24816,
+15614,24817,
+15615,24818,
+15616,24819,
+15617,24820,
+15618,24821,
+15619,24822,
+15620,24823,
+15621,24824,
+15622,24825,
+15623,24826,
+15624,24827,
+15625,24828,
+15626,24829,
+15627,24830,
+15628,24831,
+15629,24832,
+15630,24833,
+15631,24834,
+15632,24835,
+15633,24836,
+15634,24837,
+15635,24838,
+15636,24839,
+15637,24840,
+15638,24841,
+15639,24842,
+15640,24843,
+15641,24844,
+15642,24845,
+15643,24846,
+15644,24847,
+15645,24848,
+15646,24849,
+15647,24850,
+15648,24851,
+15649,24852,
+15650,24853,
+15651,24854,
+15652,24855,
+15653,24856,
+15654,24857,
+15655,24858,
+15656,24859,
+15657,24860,
+15658,24861,
+15659,24862,
+15660,24863,
+15661,24864,
+15662,24865,
+15663,24866,
+15664,24867,
+15665,24868,
+15666,24869,
+15667,24870,
+15668,24871,
+15669,24872,
+15670,24873,
+15671,24874,
+15672,24875,
+15673,24876,
+15674,24877,
+15675,24878,
+15676,24879,
+15677,24880,
+15678,24881,
+15679,24882,
+15680,24883,
+15681,24884,
+15682,24885,
+15683,24886,
+15684,24887,
+15685,24888,
+15686,24889,
+15687,24890,
+15688,24891,
+15689,24892,
+15690,24893,
+15691,24894,
+15692,24895,
+15693,24896,
+15694,24897,
+15695,24898,
+15696,24899,
+15697,24900,
+15698,24901,
+15699,24902,
+15700,24903,
+15701,24904,
+15702,24905,
+15703,24906,
+15704,24907,
+15705,24908,
+15706,24909,
+15707,24910,
+15708,24911,
+15709,24912,
+15710,24913,
+15711,24914,
+15712,24915,
+15713,24916,
+15714,24917,
+15715,24918,
+15716,24919,
+15717,24920,
+15718,24921,
+15719,24922,
+15720,24923,
+15721,24924,
+15722,24925,
+15723,24926,
+15724,24927,
+15725,24928,
+15726,24929,
+15727,24930,
+15728,24931,
+15729,24932,
+15730,24933,
+15731,24934,
+15732,24935,
+15733,24936,
+15734,24937,
+15735,24938,
+15736,24939,
+15737,24940,
+15738,24941,
+15739,24942,
+15740,24943,
+15741,24944,
+15742,24945,
+15743,24946,
+15744,24947,
+15745,24948,
+15746,24949,
+15747,24950,
+15748,24951,
+15749,24952,
+15750,24953,
+15751,24954,
+15752,24955,
+15753,24956,
+15754,24957,
+15755,24958,
+15756,24959,
+15757,24960,
+15758,24961,
+15759,24962,
+15760,24963,
+15761,24964,
+15762,24965,
+15763,24966,
+15764,24967,
+15765,24968,
+15766,24969,
+15767,24970,
+15768,24971,
+15769,24972,
+15770,24973,
+15771,24974,
+15772,24975,
+15773,24976,
+15774,24977,
+15775,24978,
+15776,24979,
+15777,24980,
+15778,24981,
+15779,24982,
+15780,24983,
+15781,24984,
+15782,24985,
+15783,24986,
+15784,24987,
+15785,24988,
+15786,24989,
+15787,24990,
+15788,24991,
+15789,24992,
+15790,24993,
+15791,24994,
+15792,24995,
+15793,24996,
+15794,24997,
+15795,24998,
+15796,24999,
+15797,25000,
+15798,25001,
+15799,25002,
+15800,25003,
+15801,25004,
+15802,25005,
+15803,25006,
+15804,25007,
+15805,25008,
+15806,25009,
+15807,25010,
+15808,25011,
+15809,25012,
+15810,25013,
+15811,25014,
+15812,25015,
+15813,25016,
+15814,25017,
+15815,25018,
+15816,25019,
+15817,25020,
+15818,25021,
+15819,25022,
+15820,25023,
+15821,25024,
+15822,25025,
+15823,25026,
+15824,25027,
+15825,25028,
+15826,25029,
+15827,25030,
+15828,25031,
+15829,25032,
+15830,25033,
+15831,25034,
+15832,25035,
+15833,25036,
+15834,25037,
+15835,25038,
+15836,25039,
+15837,25040,
+15838,25041,
+15839,25042,
+15840,25043,
+15841,25044,
+15842,25045,
+15843,25046,
+15844,25047,
+15845,25048,
+15846,25049,
+15847,25050,
+15848,25051,
+15849,25052,
+15850,25053,
+15851,25054,
+15852,25055,
+15853,25056,
+15854,25057,
+15855,25058,
+15856,25059,
+15857,25060,
+15858,25061,
+15859,25062,
+15860,25063,
+15861,25064,
+15862,25065,
+15863,25066,
+15864,25067,
+15865,25068,
+15866,25069,
+15867,25070,
+15868,25071,
+15869,25072,
+15870,25073,
+15871,25074,
+15872,25075,
+15873,25076,
+15874,25077,
+15875,25078,
+15876,25079,
+15877,25080,
+15878,25081,
+15879,25082,
+15880,25083,
+15881,25084,
+15882,25085,
+15883,25086,
+15884,25087,
+15885,25088,
+15886,25089,
+15887,25090,
+15888,25091,
+15889,25092,
+15890,25093,
+15891,25094,
+15892,25095,
+15893,25096,
+15894,25097,
+15895,25098,
+15896,25099,
+15897,25100,
+15898,25101,
+15899,25102,
+15900,25103,
+15901,25104,
+15902,25105,
+15903,25106,
+15904,25107,
+15905,25108,
+15906,25109,
+15907,25110,
+15908,25111,
+15909,25112,
+15910,25113,
+15911,25114,
+15912,25115,
+15913,25116,
+15914,25117,
+15915,25118,
+15916,25119,
+15917,25120,
+15918,25121,
+15919,25122,
+15920,25123,
+15921,25124,
+15922,25125,
+15923,25126,
+15924,25127,
+15925,25128,
+15926,25129,
+15927,25130,
+15928,25131,
+15929,25132,
+15930,25133,
+15931,25134,
+15932,25135,
+15933,25136,
+15934,25137,
+15935,25138,
+15936,25139,
+15937,25140,
+15938,25141,
+15939,25142,
+15940,25143,
+15941,25144,
+15942,25145,
+15943,25146,
+15944,25147,
+15945,25148,
+15946,25149,
+15947,25150,
+15948,25151,
+15949,25152,
+15950,25153,
+15951,25154,
+15952,25155,
+15953,25156,
+15954,25157,
+15955,25158,
+15956,25159,
+15957,25160,
+15958,25161,
+15959,25162,
+15960,25163,
+15961,25164,
+15962,25165,
+15963,25166,
+15964,25167,
+15965,25168,
+15966,25169,
+15967,25170,
+15968,25171,
+15969,25172,
+15970,25173,
+15971,25174,
+15972,25175,
+15973,25176,
+15974,25177,
+15975,25178,
+15976,25179,
+15977,25180,
+15978,25181,
+15979,25182,
+15980,25183,
+15981,25184,
+15982,25185,
+15983,25186,
+15984,25187,
+15985,25188,
+15986,25189,
+15987,25190,
+15988,25191,
+15989,25192,
+15990,25193,
+15991,25194,
+15992,25195,
+15993,25196,
+15994,25197,
+15995,25198,
+15996,25199,
+15997,25200,
+15998,25201,
+15999,25202,
+16000,25203,
+16001,25204,
+16002,25205,
+16003,25206,
+16004,25207,
+16005,25208,
+16006,25209,
+16007,25210,
+16008,25211,
+16009,25212,
+16010,25213,
+16011,25214,
+16012,25215,
+16013,25216,
+16014,25217,
+16015,25218,
+16016,25219,
+16017,25220,
+16018,25221,
+16019,25222,
+16020,25223,
+16021,25224,
+16022,25225,
+16023,25226,
+16024,25227,
+16025,25228,
+16026,25229,
+16027,25230,
+16028,25231,
+16029,25232,
+16030,25233,
+16031,25234,
+16032,25235,
+16033,25236,
+16034,25237,
+16035,25238,
+16036,25239,
+16037,25240,
+16038,25241,
+16039,25242,
+16040,25243,
+16041,25244,
+16042,25245,
+16043,25246,
+16044,25247,
+16045,25248,
+16046,25249,
+16047,25250,
+16048,25251,
+16049,25252,
+16050,25253,
+16051,25254,
+16052,25255,
+16053,25256,
+16054,25257,
+16055,25258,
+16056,25259,
+16057,25260,
+16058,25261,
+16059,25262,
+16060,25263,
+16061,25264,
+16062,25265,
+16063,25266,
+16064,25267,
+16065,25268,
+16066,25269,
+16067,25270,
+16068,25271,
+16069,25272,
+16070,25273,
+16071,25274,
+16072,25275,
+16073,25276,
+16074,25277,
+16075,25278,
+16076,25279,
+16077,25280,
+16078,25281,
+16079,25282,
+16080,25283,
+16081,25284,
+16082,25285,
+16083,25286,
+16084,25287,
+16085,25288,
+16086,25289,
+16087,25290,
+16088,25291,
+16089,25292,
+16090,25293,
+16091,25294,
+16092,25295,
+16093,25296,
+16094,25297,
+16095,25298,
+16096,25299,
+16097,25300,
+16098,25301,
+16099,25302,
+16100,25303,
+16101,25304,
+16102,25305,
+16103,25306,
+16104,25307,
+16105,25308,
+16106,25309,
+16107,25310,
+16108,25311,
+16109,25312,
+16110,25313,
+16111,25314,
+16112,25315,
+16113,25316,
+16114,25317,
+16115,25318,
+16116,25319,
+16117,25320,
+16118,25321,
+16119,25322,
+16120,25323,
+16121,25324,
+16122,25325,
+16123,25326,
+16124,25327,
+16125,25328,
+16126,25329,
+16127,25330,
+16128,25331,
+16129,25332,
+16130,25333,
+16131,25334,
+16132,25335,
+16133,25336,
+16134,25337,
+16135,25338,
+16136,25339,
+16137,25340,
+16138,25341,
+16139,25342,
+16140,25343,
+16141,25344,
+16142,25345,
+16143,25346,
+16144,25347,
+16145,25348,
+16146,25349,
+16147,25350,
+16148,25351,
+16149,25352,
+16150,25353,
+16151,25354,
+16152,25355,
+16153,25356,
+16154,25357,
+16155,25358,
+16156,25359,
+16157,25360,
+16158,25361,
+16159,25362,
+16160,25363,
+16161,25364,
+16162,25365,
+16163,25366,
+16164,25367,
+16165,25368,
+16166,25369,
+16167,25370,
+16168,25371,
+16169,25372,
+16170,25373,
+16171,25374,
+16172,25375,
+16173,25376,
+16174,25377,
+16175,25378,
+16176,25379,
+16177,25380,
+16178,25381,
+16179,25382,
+16180,25383,
+16181,25384,
+16182,25385,
+16183,25386,
+16184,25387,
+16185,25388,
+16186,25389,
+16187,25390,
+16188,25391,
+16189,25392,
+16190,25393,
+16191,25394,
+16192,25395,
+16193,25396,
+16194,25397,
+16195,25398,
+16196,25399,
+16197,25400,
+16198,25401,
+16199,25402,
+16200,25403,
+16201,25404,
+16202,25405,
+16203,25406,
+16204,25407,
+16205,25408,
+16206,25409,
+16207,25410,
+16208,25411,
+16209,25412,
+16210,25413,
+16211,25414,
+16212,25415,
+16213,25416,
+16214,25417,
+16215,25418,
+16216,25419,
+16217,25420,
+16218,25421,
+16219,25422,
+16220,25423,
+16221,25424,
+16222,25425,
+16223,25426,
+16224,25427,
+16225,25428,
+16226,25429,
+16227,25430,
+16228,25431,
+16229,25432,
+16230,25433,
+16231,25434,
+16232,25435,
+16233,25436,
+16234,25437,
+16235,25438,
+16236,25439,
+16237,25440,
+16238,25441,
+16239,25442,
+16240,25443,
+16241,25444,
+16242,25445,
+16243,25446,
+16244,25447,
+16245,25448,
+16246,25449,
+16247,25450,
+16248,25451,
+16249,25452,
+16250,25453,
+16251,25454,
+16252,25455,
+16253,25456,
+16254,25457,
+16255,25458,
+16256,25459,
+16257,25460,
+16258,25461,
+16259,25462,
+16260,25463,
+16261,25464,
+16262,25465,
+16263,25466,
+16264,25467,
+16265,25468,
+16266,25469,
+16267,25470,
+16268,25471,
+16269,25472,
+16270,25473,
+16271,25474,
+16272,25475,
+16273,25476,
+16274,25477,
+16275,25478,
+16276,25479,
+16277,25480,
+16278,25481,
+16279,25482,
+16280,25483,
+16281,25484,
+16282,25485,
+16283,25486,
+16284,25487,
+16285,25488,
+16286,25489,
+16287,25490,
+16288,25491,
+16289,25492,
+16290,25493,
+16291,25494,
+16292,25495,
+16293,25496,
+16294,25497,
+16295,25498,
+16296,25499,
+16297,25500,
+16298,25501,
+16299,25502,
+16300,25503,
+16301,25504,
+16302,25505,
+16303,25506,
+16304,25507,
+16305,25508,
+16306,25509,
+16307,25510,
+16308,25511,
+16309,25512,
+16310,25513,
+16311,25514,
+16312,25515,
+16313,25516,
+16314,25517,
+16315,25518,
+16316,25519,
+16317,25520,
+16318,25521,
+16319,25522,
+16320,25523,
+16321,25524,
+16322,25525,
+16323,25526,
+16324,25527,
+16325,25528,
+16326,25529,
+16327,25530,
+16328,25531,
+16329,25532,
+16330,25533,
+16331,25534,
+16332,25535,
+16333,25536,
+16334,25537,
+16335,25538,
+16336,25539,
+16337,25540,
+16338,25541,
+16339,25542,
+16340,25543,
+16341,25544,
+16342,25545,
+16343,25546,
+16344,25547,
+16345,25548,
+16346,25549,
+16347,25550,
+16348,25551,
+16349,25552,
+16350,25553,
+16351,25554,
+16352,25555,
+16353,25556,
+16354,25557,
+16355,25558,
+16356,25559,
+16357,25560,
+16358,25561,
+16359,25562,
+16360,25563,
+16361,25564,
+16362,25565,
+16363,25566,
+16364,25567,
+16365,25568,
+16366,25569,
+16367,25570,
+16368,25571,
+16369,25572,
+16370,25573,
+16371,25574,
+16372,25575,
+16373,25576,
+16374,25577,
+16375,25578,
+16376,25579,
+16377,25580,
+16378,25581,
+16379,25582,
+16380,25583,
+16381,25584,
+16382,25585,
+16383,25586,
+16384,25587,
+16385,25588,
+16386,25589,
+16387,25590,
+16388,25591,
+16389,25592,
+16390,25593,
+16391,25594,
+16392,25595,
+16393,25596,
+16394,25597,
+16395,25598,
+16396,25599,
+16397,25600,
+16398,25601,
+16399,25602,
+16400,25603,
+16401,25604,
+16402,25605,
+16403,25606,
+16404,25607,
+16405,25608,
+16406,25609,
+16407,25610,
+16408,25611,
+16409,25612,
+16410,25613,
+16411,25614,
+16412,25615,
+16413,25616,
+16414,25617,
+16415,25618,
+16416,25619,
+16417,25620,
+16418,25621,
+16419,25622,
+16420,25623,
+16421,25624,
+16422,25625,
+16423,25626,
+16424,25627,
+16425,25628,
+16426,25629,
+16427,25630,
+16428,25631,
+16429,25632,
+16430,25633,
+16431,25634,
+16432,25635,
+16433,25636,
+16434,25637,
+16435,25638,
+16436,25639,
+16437,25640,
+16438,25641,
+16439,25642,
+16440,25643,
+16441,25644,
+16442,25645,
+16443,25646,
+16444,25647,
+16445,25648,
+16446,25649,
+16447,25650,
+16448,25651,
+16449,25652,
+16450,25653,
+16451,25654,
+16452,25655,
+16453,25656,
+16454,25657,
+16455,25658,
+16456,25659,
+16457,25660,
+16458,25661,
+16459,25662,
+16460,25663,
+16461,25664,
+16462,25665,
+16463,25666,
+16464,25667,
+16465,25668,
+16466,25669,
+16467,25670,
+16468,25671,
+16469,25672,
+16470,22078,
+16471,25673,
+16472,25674,
+16473,25675,
+16474,25676,
+16475,25677,
+16476,25678,
+16477,25679,
+16478,25680,
+16479,25681,
+16480,25682,
+16481,25683,
+16482,25684,
+16483,25685,
+16484,25686,
+16485,25687,
+16486,25688,
+16487,25689,
+16488,25690,
+16489,25691,
+16490,25692,
+16491,25693,
+16492,25694,
+16493,25695,
+16494,25696,
+16495,25697,
+16496,25698,
+16497,25699,
+16498,25700,
+16499,25701,
+16500,25702,
+16501,25703,
+16502,25704,
+16503,25705,
+16504,25706,
+16505,25707,
+16506,25708,
+16507,25709,
+16508,25710,
+16509,25711,
+16510,25712,
+16511,25713,
+16512,25714,
+16513,25715,
+16514,25716,
+16515,25717,
+16516,25718,
+16517,25719,
+16518,25720,
+16519,25721,
+16520,25722,
+16521,25723,
+16522,25724,
+16523,25725,
+16524,25726,
+16525,25727,
+16526,25728,
+16527,25729,
+16528,25730,
+16529,25731,
+16530,25732,
+16531,25733,
+16532,25734,
+16533,25735,
+16534,25736,
+16535,25737,
+16536,25738,
+16537,25739,
+16538,25740,
+16539,25741,
+16540,25742,
+16541,25743,
+16542,25744,
+16543,25745,
+16544,25746,
+16545,25747,
+16546,25748,
+16547,25749,
+16548,25750,
+16549,25751,
+16550,25752,
+16551,25753,
+16552,25754,
+16553,25755,
+16554,25756,
+16555,25757,
+16556,25758,
+16557,25759,
+16558,25760,
+16559,25761,
+16560,25762,
+16561,25763,
+16562,25764,
+16563,25765,
+16564,25766,
+16565,25767,
+16566,25768,
+16567,25769,
+16568,25770,
+16569,25771,
+16570,25772,
+16571,25773,
+16572,25774,
+16573,25775,
+16574,25776,
+16575,25777,
+16576,25778,
+16577,25779,
+16578,25780,
+16579,25781,
+16580,25782,
+16581,25783,
+16582,25784,
+16583,25785,
+16584,25786,
+16585,25787,
+16586,25788,
+16587,25789,
+16588,25790,
+16589,25791,
+16590,25792,
+16591,25793,
+16592,25794,
+16593,25795,
+16594,25796,
+16595,25797,
+16596,25798,
+16597,25799,
+16598,25800,
+16599,25801,
+16600,25802,
+16601,25803,
+16602,25804,
+16603,25805,
+16604,25806,
+16605,25807,
+16606,25808,
+16607,25809,
+16608,25810,
+16609,25811,
+16610,25812,
+16611,25813,
+16612,25814,
+16613,25815,
+16614,25816,
+16615,25817,
+16616,25818,
+16617,25819,
+16618,25820,
+16619,25821,
+16620,25822,
+16621,25823,
+16622,25824,
+16623,25825,
+16624,25826,
+16625,25827,
+16626,25828,
+16627,25829,
+16628,25830,
+16629,25831,
+16630,25832,
+16631,25833,
+16632,25834,
+16633,25835,
+16634,25836,
+16635,25837,
+16636,25838,
+16637,25839,
+16638,25840,
+16639,25841,
+16640,25842,
+16641,25843,
+16642,25844,
+16643,25845,
+16644,25846,
+16645,25847,
+16646,25848,
+16647,25849,
+16648,25850,
+16649,25851,
+16650,25852,
+16651,25853,
+16652,25854,
+16653,25855,
+16654,25856,
+16655,25857,
+16656,25858,
+16657,25859,
+16658,25860,
+16659,25861,
+16660,25862,
+16661,25863,
+16662,25864,
+16663,25865,
+16664,25866,
+16665,25867,
+16666,25868,
+16667,25869,
+16668,25870,
+16669,25871,
+16670,25872,
+16671,25873,
+16672,25874,
+16673,25875,
+16674,25876,
+16675,25877,
+16676,25878,
+16677,25879,
+16678,25880,
+16679,25881,
+16680,25882,
+16681,25883,
+16682,25884,
+16683,25885,
+16684,25886,
+16685,25887,
+16686,25888,
+16687,25889,
+16688,25890,
+16689,25891,
+16690,25892,
+16691,25893,
+16692,25894,
+16693,25895,
+16694,25896,
+16695,25897,
+16696,25898,
+16697,25899,
+16698,25900,
+16699,25901,
+16700,25902,
+16701,25903,
+16702,25904,
+16703,25905,
+16704,25906,
+16705,25907,
+16706,25908,
+16707,25909,
+16708,25910,
+16709,25911,
+16710,25912,
+16711,25913,
+16712,25914,
+16713,25915,
+16714,25916,
+16715,25917,
+16716,25918,
+16717,25919,
+16718,25920,
+16719,25921,
+16720,25922,
+16721,25923,
+16722,25924,
+16723,25925,
+16724,25926,
+16725,25927,
+16726,25928,
+16727,25929,
+16728,25930,
+16729,25931,
+16730,25932,
+16731,25933,
+16732,25934,
+16733,25935,
+16734,25936,
+16735,22079,
+16736,25937,
+16737,25938,
+16738,25939,
+16739,25940,
+16740,25941,
+16741,25942,
+16742,25943,
+16743,25944,
+16744,25945,
+16745,25946,
+16746,25947,
+16747,25948,
+16748,25949,
+16749,25950,
+16750,25951,
+16751,25952,
+16752,25953,
+16753,25954,
+16754,25955,
+16755,25956,
+16756,25957,
+16757,25958,
+16758,25959,
+16759,25960,
+16760,25961,
+16761,25962,
+16762,25963,
+16763,25964,
+16764,25965,
+16765,25966,
+16766,25967,
+16767,25968,
+16768,25969,
+16769,25970,
+16770,25971,
+16771,25972,
+16772,25973,
+16773,25974,
+16774,25975,
+16775,25976,
+16776,25977,
+16777,25978,
+16778,25979,
+16779,25980,
+16780,25981,
+16781,25982,
+16782,25983,
+16783,25984,
+16784,25985,
+16785,25986,
+16786,25987,
+16787,25988,
+16788,25989,
+16789,25990,
+16790,25991,
+16791,25992,
+16792,25993,
+16793,25994,
+16794,25995,
+16795,25996,
+16796,25997,
+16797,25998,
+16798,25999,
+16799,26000,
+16800,26001,
+16801,26002,
+16802,26003,
+16803,26004,
+16804,26005,
+16805,26006,
+16806,26007,
+16807,26008,
+16808,26009,
+16809,26010,
+16810,26011,
+16811,26012,
+16812,26013,
+16813,26014,
+16814,26015,
+16815,26016,
+16816,26017,
+16817,26018,
+16818,26019,
+16819,26020,
+16820,26021,
+16821,26022,
+16822,26023,
+16823,26024,
+16824,26025,
+16825,26026,
+16826,26027,
+16827,26028,
+16828,26029,
+16829,26030,
+16830,26031,
+16831,26032,
+16832,26033,
+16833,26034,
+16834,26035,
+16835,26036,
+16836,26037,
+16837,26038,
+16838,26039,
+16839,26040,
+16840,26041,
+16841,26042,
+16842,26043,
+16843,26044,
+16844,26045,
+16845,26046,
+16846,26047,
+16847,26048,
+16848,26049,
+16849,26050,
+16850,26051,
+16851,26052,
+16852,26053,
+16853,26054,
+16854,26055,
+16855,26056,
+16856,26057,
+16857,26058,
+16858,26059,
+16859,26060,
+16860,26061,
+16861,26062,
+16862,26063,
+16863,26064,
+16864,26065,
+16865,26066,
+16866,26067,
+16867,26068,
+16868,26069,
+16869,26070,
+16870,26071,
+16871,26072,
+16872,26073,
+16873,26074,
+16874,26075,
+16875,26076,
+16876,26077,
+16877,26078,
+16878,26079,
+16879,26080,
+16880,26081,
+16881,26082,
+16882,26083,
+16883,26084,
+16884,26085,
+16885,26086,
+16886,26087,
+16887,26088,
+16888,26089,
+16889,26090,
+16890,26091,
+16891,26092,
+16892,26093,
+16893,26094,
+16894,26095,
+16895,26096,
+16896,26097,
+16897,26098,
+16898,26099,
+16899,26100,
+16900,26101,
+16901,26102,
+16902,26103,
+16903,26104,
+16904,26105,
+16905,26106,
+16906,26107,
+16907,26108,
+16908,26109,
+16909,26110,
+16910,26111,
+16911,26112,
+16912,26113,
+16913,26114,
+16914,26115,
+16915,26116,
+16916,26117,
+16917,26118,
+16918,26119,
+16919,26120,
+16920,26121,
+16921,26122,
+16922,26123,
+16923,26124,
+16924,26125,
+16925,26126,
+16926,26127,
+16927,26128,
+16928,26129,
+16929,26130,
+16930,26131,
+16931,26132,
+16932,26133,
+16933,26134,
+16934,26135,
+16935,26136,
+16936,26137,
+16937,26138,
+16938,26139,
+16939,26140,
+16940,26141,
+16941,26142,
+16942,26143,
+16943,26144,
+16944,26145,
+16945,26146,
+16946,26147,
+16947,26148,
+16948,26149,
+16949,26150,
+16950,26151,
+16951,26152,
+16952,26153,
+16953,26154,
+16954,26155,
+16955,26156,
+16956,26157,
+16957,26158,
+16958,26159,
+16959,26160,
+16960,26161,
+16961,26162,
+16962,26163,
+16963,26164,
+16964,26165,
+16965,26166,
+16966,26167,
+16967,26168,
+16968,26169,
+16969,26170,
+16970,26171,
+16971,26172,
+16972,26173,
+16973,26174,
+16974,26175,
+16975,26176,
+16976,26177,
+16977,26178,
+16978,26179,
+16979,26180,
+16980,26181,
+16981,26182,
+16982,26183,
+16983,26184,
+16984,26185,
+16985,26186,
+16986,26187,
+16987,26188,
+16988,26189,
+16989,26190,
+16990,26191,
+16991,26192,
+16992,26193,
+16993,26194,
+16994,26195,
+16995,26196,
+16996,26197,
+16997,26198,
+16998,26199,
+16999,26200,
+17000,26201,
+17001,26202,
+17002,26203,
+17003,26204,
+17004,26205,
+17005,26206,
+17006,26207,
+17007,26208,
+17008,26209,
+17009,26210,
+17010,26211,
+17011,26212,
+17012,26213,
+17013,26214,
+17014,26215,
+17015,26216,
+17016,26217,
+17017,26218,
+17018,26219,
+17019,26220,
+17020,26221,
+17021,26222,
+17022,26223,
+17023,26224,
+17024,26225,
+17025,26226,
+17026,26227,
+17027,26228,
+17028,26229,
+17029,26230,
+17030,26231,
+17031,26232,
+17032,26233,
+17033,26234,
+17034,26235,
+17035,26236,
+17036,26237,
+17037,26238,
+17038,26239,
+17039,26240,
+17040,26241,
+17041,26242,
+17042,26243,
+17043,26244,
+17044,26245,
+17045,26246,
+17046,26247,
+17047,26248,
+17048,26249,
+17049,26250,
+17050,26251,
+17051,26252,
+17052,26253,
+17053,26254,
+17054,26255,
+17055,26256,
+17056,26257,
+17057,26258,
+17058,26259,
+17059,26260,
+17060,26261,
+17061,26262,
+17062,26263,
+17063,26264,
+17064,26265,
+17065,26266,
+17066,26267,
+17067,26268,
+17068,26269,
+17069,26270,
+17070,26271,
+17071,26272,
+17072,26273,
+17073,26274,
+17074,26275,
+17075,26276,
+17076,26277,
+17077,26278,
+17078,26279,
+17079,26280,
+17080,26281,
+17081,26282,
+17082,26283,
+17083,26284,
+17084,26285,
+17085,26286,
+17086,26287,
+17087,26288,
+17088,26289,
+17089,26290,
+17090,26291,
+17091,26292,
+17092,26293,
+17093,26294,
+17094,26295,
+17095,26296,
+17096,26297,
+17097,26298,
+17098,26299,
+17099,26300,
+17100,26301,
+17101,26302,
+17102,26303,
+17103,26304,
+17104,26305,
+17105,26306,
+17106,26307,
+17107,26308,
+17108,26309,
+17109,26310,
+17110,26311,
+17111,26312,
+17112,26313,
+17113,26314,
+17114,26315,
+17115,26316,
+17116,26317,
+17117,26318,
+17118,26319,
+17119,26320,
+17120,26321,
+17121,26322,
+17122,26323,
+17123,26324,
+17124,26325,
+17125,26326,
+17126,26327,
+17127,26328,
+17128,26329,
+17129,26330,
+17130,26331,
+17131,26332,
+17132,26333,
+17133,26334,
+17134,26335,
+17135,26336,
+17136,26337,
+17137,26338,
+17138,26339,
+17139,26340,
+17140,26341,
+17141,26342,
+17142,26343,
+17143,26344,
+17144,26345,
+17145,26346,
+17146,26347,
+17147,26348,
+17148,26349,
+17149,26350,
+17150,26351,
+17151,26352,
+17152,26353,
+17153,26354,
+17154,26355,
+17155,26356,
+17156,26357,
+17157,26358,
+17158,26359,
+17159,26360,
+17160,26361,
+17161,26362,
+17162,26363,
+17163,26364,
+17164,26365,
+17165,26366,
+17166,26367,
+17167,26368,
+17168,26369,
+17169,26370,
+17170,26371,
+17171,26372,
+17172,26373,
+17173,26374,
+17174,26375,
+17175,26376,
+17176,26377,
+17177,26378,
+17178,26379,
+17179,26380,
+17180,26381,
+17181,26382,
+17182,26383,
+17183,26384,
+17184,26385,
+17185,26386,
+17186,26387,
+17187,26388,
+17188,26389,
+17189,26390,
+17190,26391,
+17191,26392,
+17192,26393,
+17193,26394,
+17194,26395,
+17195,26396,
+17196,26397,
+17197,26398,
+17198,26399,
+17199,26400,
+17200,26401,
+17201,26402,
+17202,26403,
+17203,26404,
+17204,26405,
+17205,26406,
+17206,26407,
+17207,22081,
+17208,26408,
+17209,26409,
+17210,26410,
+17211,26411,
+17212,26412,
+17213,26413,
+17214,26414,
+17215,26415,
+17216,26416,
+17217,26417,
+17218,26418,
+17219,26419,
+17220,26420,
+17221,26421,
+17222,26422,
+17223,26423,
+17224,26424,
+17225,26425,
+17226,26426,
+17227,26427,
+17228,26428,
+17229,26429,
+17230,26430,
+17231,26431,
+17232,26432,
+17233,26433,
+17234,26434,
+17235,26435,
+17236,26436,
+17237,26437,
+17238,26438,
+17239,26439,
+17240,26440,
+17241,26441,
+17242,26442,
+17243,26443,
+17244,26444,
+17245,26445,
+17246,26446,
+17247,26447,
+17248,26448,
+17249,26449,
+17250,26450,
+17251,26451,
+17252,26452,
+17253,26453,
+17254,26454,
+17255,26455,
+17256,26456,
+17257,26457,
+17258,26458,
+17259,26459,
+17260,26460,
+17261,26461,
+17262,26462,
+17263,26463,
+17264,26464,
+17265,26465,
+17266,26466,
+17267,26467,
+17268,26468,
+17269,26469,
+17270,26470,
+17271,26471,
+17272,26472,
+17273,26473,
+17274,26474,
+17275,26475,
+17276,26476,
+17277,26477,
+17278,26478,
+17279,26479,
+17280,26480,
+17281,26481,
+17282,26482,
+17283,26483,
+17284,26484,
+17285,26485,
+17286,26486,
+17287,26487,
+17288,26488,
+17289,26489,
+17290,26490,
+17291,26491,
+17292,26492,
+17293,26493,
+17294,26494,
+17295,26495,
+17296,26496,
+17297,26497,
+17298,26498,
+17299,26499,
+17300,26500,
+17301,26501,
+17302,26502,
+17303,26503,
+17304,26504,
+17305,26505,
+17306,26506,
+17307,26507,
+17308,26508,
+17309,26509,
+17310,26510,
+17311,26511,
+17312,26512,
+17313,26513,
+17314,26514,
+17315,26515,
+17316,26516,
+17317,26517,
+17318,26518,
+17319,26519,
+17320,26520,
+17321,26521,
+17322,26522,
+17323,26523,
+17324,22087,
+17325,26524,
+17326,26525,
+17327,26526,
+17328,26527,
+17329,22086,
+17330,26528,
+17331,26529,
+17332,26530,
+17333,26531,
+17334,26532,
+17335,26533,
+17336,26534,
+17337,26535,
+17338,26536,
+17339,26537,
+17340,26538,
+17341,26539,
+17342,26540,
+17343,26541,
+17344,26542,
+17345,26543,
+17346,26544,
+17347,26545,
+17348,26546,
+17349,26547,
+17350,26548,
+17351,26549,
+17352,26550,
+17353,26551,
+17354,26552,
+17355,26553,
+17356,26554,
+17357,26555,
+17358,26556,
+17359,26557,
+17360,26558,
+17361,26559,
+17362,26560,
+17363,26561,
+17364,26562,
+17365,26563,
+17366,26564,
+17367,26565,
+17368,26566,
+17369,26567,
+17370,26568,
+17371,26569,
+17372,26570,
+17373,22089,
+17374,26571,
+17375,26572,
+17376,26573,
+17377,26574,
+17378,26575,
+17379,26576,
+17380,26577,
+17381,26578,
+17382,26579,
+17383,26580,
+17384,26581,
+17385,26582,
+17386,26583,
+17387,26584,
+17388,26585,
+17389,26586,
+17390,26587,
+17391,26588,
+17392,26589,
+17393,26590,
+17394,26591,
+17395,26592,
+17396,26593,
+17397,26594,
+17398,26595,
+17399,26596,
+17400,26597,
+17401,26598,
+17402,26599,
+17403,26600,
+17404,26601,
+17405,26602,
+17406,26603,
+17407,26604,
+17408,26605,
+17409,26606,
+17410,26607,
+17411,26608,
+17412,26609,
+17413,26610,
+17414,26611,
+17415,26612,
+17416,26613,
+17417,26614,
+17418,26615,
+17419,26616,
+17420,26617,
+17421,26618,
+17422,26619,
+17423,26620,
+17424,26621,
+17425,26622,
+17426,26623,
+17427,26624,
+17428,26625,
+17429,26626,
+17430,26627,
+17431,26628,
+17432,26629,
+17433,26630,
+17434,26631,
+17435,26632,
+17436,26633,
+17437,26634,
+17438,26635,
+17439,26636,
+17440,26637,
+17441,26638,
+17442,26639,
+17443,26640,
+17444,26641,
+17445,26642,
+17446,26643,
+17447,26644,
+17448,26645,
+17449,26646,
+17450,26647,
+17451,26648,
+17452,26649,
+17453,26650,
+17454,26651,
+17455,26652,
+17456,26653,
+17457,26654,
+17458,26655,
+17459,26656,
+17460,26657,
+17461,26658,
+17462,26659,
+17463,26660,
+17464,26661,
+17465,26662,
+17466,26663,
+17467,26664,
+17468,26665,
+17469,26666,
+17470,26667,
+17471,26668,
+17472,26669,
+17473,26670,
+17474,26671,
+17475,26672,
+17476,26673,
+17477,26674,
+17478,26675,
+17479,26676,
+17480,26677,
+17481,26678,
+17482,26679,
+17483,26680,
+17484,26681,
+17485,26682,
+17486,26683,
+17487,26684,
+17488,26685,
+17489,26686,
+17490,26687,
+17491,26688,
+17492,26689,
+17493,26690,
+17494,26691,
+17495,26692,
+17496,26693,
+17497,26694,
+17498,26695,
+17499,26696,
+17500,26697,
+17501,26698,
+17502,26699,
+17503,26700,
+17504,26701,
+17505,26702,
+17506,26703,
+17507,26704,
+17508,26705,
+17509,26706,
+17510,26707,
+17511,26708,
+17512,26709,
+17513,26710,
+17514,26711,
+17515,26712,
+17516,26713,
+17517,26714,
+17518,26715,
+17519,26716,
+17520,26717,
+17521,26718,
+17522,26719,
+17523,26720,
+17524,26721,
+17525,26722,
+17526,26723,
+17527,26724,
+17528,26725,
+17529,26726,
+17530,26727,
+17531,26728,
+17532,26729,
+17533,26730,
+17534,26731,
+17535,26732,
+17536,26733,
+17537,26734,
+17538,26735,
+17539,26736,
+17540,26737,
+17541,26738,
+17542,26739,
+17543,26740,
+17544,26741,
+17545,26742,
+17546,26743,
+17547,26744,
+17548,26745,
+17549,26746,
+17550,26747,
+17551,26748,
+17552,26749,
+17553,26750,
+17554,26751,
+17555,26752,
+17556,26753,
+17557,26754,
+17558,26755,
+17559,26756,
+17560,26757,
+17561,26758,
+17562,26759,
+17563,26760,
+17564,26761,
+17565,26762,
+17566,26763,
+17567,26764,
+17568,26765,
+17569,26766,
+17570,26767,
+17571,26768,
+17572,26769,
+17573,26770,
+17574,26771,
+17575,26772,
+17576,26773,
+17577,26774,
+17578,26775,
+17579,26776,
+17580,26777,
+17581,26778,
+17582,26779,
+17583,26780,
+17584,26781,
+17585,26782,
+17586,26783,
+17587,26784,
+17588,26785,
+17589,26786,
+17590,26787,
+17591,26788,
+17592,26789,
+17593,26790,
+17594,26791,
+17595,26792,
+17596,26793,
+17597,26794,
+17598,26795,
+17599,26796,
+17600,26797,
+17601,26798,
+17602,26799,
+17603,26800,
+17604,26801,
+17605,26802,
+17606,26803,
+17607,26804,
+17608,26805,
+17609,26806,
+17610,26807,
+17611,26808,
+17612,26809,
+17613,26810,
+17614,26811,
+17615,26812,
+17616,26813,
+17617,26814,
+17618,26815,
+17619,26816,
+17620,26817,
+17621,26818,
+17622,22090,
+17623,26819,
+17624,26820,
+17625,26821,
+17626,26822,
+17627,26823,
+17628,26824,
+17629,26825,
+17630,26826,
+17631,26827,
+17632,26828,
+17633,26829,
+17634,26830,
+17635,26831,
+17636,26832,
+17637,26833,
+17638,26834,
+17639,26835,
+17640,26836,
+17641,26837,
+17642,26838,
+17643,26839,
+17644,26840,
+17645,26841,
+17646,26842,
+17647,26843,
+17648,26844,
+17649,26845,
+17650,26846,
+17651,26847,
+17652,26848,
+17653,26849,
+17654,26850,
+17655,26851,
+17656,26852,
+17657,26853,
+17658,26854,
+17659,26855,
+17660,26856,
+17661,26857,
+17662,26858,
+17663,26859,
+17664,26860,
+17665,26861,
+17666,26862,
+17667,26863,
+17668,26864,
+17669,26865,
+17670,26866,
+17671,26867,
+17672,26868,
+17673,26869,
+17674,26870,
+17675,26871,
+17676,26872,
+17677,26873,
+17678,26874,
+17679,26875,
+17680,26876,
+17681,26877,
+17682,26878,
+17683,26879,
+17684,26880,
+17685,26881,
+17686,26882,
+17687,26883,
+17688,26884,
+17689,26885,
+17690,26886,
+17691,26887,
+17692,26888,
+17693,26889,
+17694,26890,
+17695,26891,
+17696,26892,
+17697,26893,
+17698,26894,
+17699,26895,
+17700,26896,
+17701,26897,
+17702,26898,
+17703,26899,
+17704,26900,
+17705,26901,
+17706,26902,
+17707,26903,
+17708,26904,
+17709,26905,
+17710,26906,
+17711,26907,
+17712,26908,
+17713,26909,
+17714,26910,
+17715,26911,
+17716,26912,
+17717,26913,
+17718,26914,
+17719,26915,
+17720,26916,
+17721,26917,
+17722,26918,
+17723,26919,
+17724,26920,
+17725,26921,
+17726,26922,
+17727,26923,
+17728,26924,
+17729,26925,
+17730,26926,
+17731,26927,
+17732,26928,
+17733,26929,
+17734,26930,
+17735,26931,
+17736,26932,
+17737,26933,
+17738,26934,
+17739,26935,
+17740,26936,
+17741,26937,
+17742,26938,
+17743,26939,
+17744,26940,
+17745,26941,
+17746,26942,
+17747,26943,
+17748,26944,
+17749,26945,
+17750,26946,
+17751,26947,
+17752,26948,
+17753,26949,
+17754,26950,
+17755,26951,
+17756,26952,
+17757,26953,
+17758,26954,
+17759,26955,
+17760,26956,
+17761,26957,
+17762,26958,
+17763,26959,
+17764,26960,
+17765,26961,
+17766,26962,
+17767,26963,
+17768,26964,
+17769,26965,
+17770,26966,
+17771,26967,
+17772,26968,
+17773,26969,
+17774,26970,
+17775,26971,
+17776,26972,
+17777,26973,
+17778,26974,
+17779,26975,
+17780,26976,
+17781,26977,
+17782,26978,
+17783,26979,
+17784,26980,
+17785,26981,
+17786,26982,
+17787,26983,
+17788,26984,
+17789,26985,
+17790,26986,
+17791,26987,
+17792,26988,
+17793,26989,
+17794,26990,
+17795,26991,
+17796,26992,
+17797,26993,
+17798,26994,
+17799,26995,
+17800,26996,
+17801,26997,
+17802,26998,
+17803,26999,
+17804,27000,
+17805,27001,
+17806,27002,
+17807,27003,
+17808,27004,
+17809,27005,
+17810,27006,
+17811,27007,
+17812,27008,
+17813,27009,
+17814,27010,
+17815,27011,
+17816,27012,
+17817,27013,
+17818,27014,
+17819,27015,
+17820,27016,
+17821,27017,
+17822,27018,
+17823,27019,
+17824,27020,
+17825,27021,
+17826,27022,
+17827,27023,
+17828,27024,
+17829,27025,
+17830,27026,
+17831,27027,
+17832,27028,
+17833,27029,
+17834,27030,
+17835,27031,
+17836,27032,
+17837,27033,
+17838,27034,
+17839,27035,
+17840,27036,
+17841,27037,
+17842,27038,
+17843,27039,
+17844,27040,
+17845,27041,
+17846,27042,
+17847,27043,
+17848,27044,
+17849,27045,
+17850,27046,
+17851,27047,
+17852,27048,
+17853,27049,
+17854,27050,
+17855,27051,
+17856,27052,
+17857,27053,
+17858,27054,
+17859,27055,
+17860,27056,
+17861,27057,
+17862,27058,
+17863,27059,
+17864,27060,
+17865,27061,
+17866,27062,
+17867,27063,
+17868,27064,
+17869,27065,
+17870,27066,
+17871,27067,
+17872,27068,
+17873,27069,
+17874,27070,
+17875,27071,
+17876,27072,
+17877,27073,
+17878,27074,
+17879,27075,
+17880,27076,
+17881,27077,
+17882,27078,
+17883,27079,
+17884,27080,
+17885,27081,
+17886,27082,
+17887,27083,
+17888,27084,
+17889,27085,
+17890,27086,
+17891,27087,
+17892,27088,
+17893,27089,
+17894,27090,
+17895,27091,
+17896,27092,
+17897,27093,
+17898,27094,
+17899,27095,
+17900,27096,
+17901,27097,
+17902,27098,
+17903,27099,
+17904,27100,
+17905,27101,
+17906,27102,
+17907,27103,
+17908,27104,
+17909,27105,
+17910,27106,
+17911,27107,
+17912,27108,
+17913,27109,
+17914,27110,
+17915,27111,
+17916,27112,
+17917,27113,
+17918,27114,
+17919,27115,
+17920,27116,
+17921,27117,
+17922,27118,
+17923,27119,
+17924,27120,
+17925,27121,
+17926,27122,
+17927,27123,
+17928,27124,
+17929,27125,
+17930,27126,
+17931,27127,
+17932,27128,
+17933,27129,
+17934,27130,
+17935,27131,
+17936,27132,
+17937,27133,
+17938,27134,
+17939,27135,
+17940,27136,
+17941,27137,
+17942,27138,
+17943,27139,
+17944,27140,
+17945,27141,
+17946,27142,
+17947,27143,
+17948,27144,
+17949,27145,
+17950,27146,
+17951,27147,
+17952,27148,
+17953,27149,
+17954,27150,
+17955,27151,
+17956,27152,
+17957,27153,
+17958,27154,
+17959,27155,
+17960,27156,
+17961,27157,
+17962,27158,
+17963,27159,
+17964,27160,
+17965,27161,
+17966,27162,
+17967,27163,
+17968,27164,
+17969,27165,
+17970,27166,
+17971,27167,
+17972,27168,
+17973,27169,
+17974,27170,
+17975,27171,
+17976,27172,
+17977,27173,
+17978,27174,
+17979,27175,
+17980,27176,
+17981,27177,
+17982,27178,
+17983,27179,
+17984,27180,
+17985,27181,
+17986,27182,
+17987,27183,
+17988,27184,
+17989,27185,
+17990,27186,
+17991,27187,
+17992,27188,
+17993,27189,
+17994,27190,
+17995,27191,
+17996,22092,
+17997,27192,
+17998,27193,
+17999,27194,
+18000,27195,
+18001,27196,
+18002,27197,
+18003,27198,
+18004,27199,
+18005,27200,
+18006,27201,
+18007,27202,
+18008,27203,
+18009,27204,
+18010,27205,
+18011,27206,
+18012,27207,
+18013,27208,
+18014,27209,
+18015,27210,
+18016,27211,
+18017,22091,
+18018,27212,
+18019,27213,
+18020,27214,
+18021,27215,
+18022,27216,
+18023,27217,
+18024,27218,
+18025,27219,
+18026,27220,
+18027,27221,
+18028,27222,
+18029,27223,
+18030,27224,
+18031,27225,
+18032,27226,
+18033,27227,
+18034,27228,
+18035,27229,
+18036,27230,
+18037,27231,
+18038,27232,
+18039,27233,
+18040,27234,
+18041,27235,
+18042,27236,
+18043,27237,
+18044,27238,
+18045,27239,
+18046,27240,
+18047,27241,
+18048,27242,
+18049,27243,
+18050,27244,
+18051,27245,
+18052,27246,
+18053,27247,
+18054,27248,
+18055,27249,
+18056,27250,
+18057,27251,
+18058,27252,
+18059,27253,
+18060,27254,
+18061,27255,
+18062,27256,
+18063,27257,
+18064,27258,
+18065,27259,
+18066,27260,
+18067,27261,
+18068,27262,
+18069,27263,
+18070,27264,
+18071,27265,
+18072,27266,
+18073,27267,
+18074,27268,
+18075,27269,
+18076,27270,
+18077,27271,
+18078,27272,
+18079,27273,
+18080,27274,
+18081,27275,
+18082,27276,
+18083,27277,
+18084,27278,
+18085,27279,
+18086,27280,
+18087,27281,
+18088,27282,
+18089,27283,
+18090,27284,
+18091,27285,
+18092,27286,
+18093,27287,
+18094,27288,
+18095,27289,
+18096,27290,
+18097,27291,
+18098,27292,
+18099,27293,
+18100,27294,
+18101,27295,
+18102,27296,
+18103,27297,
+18104,27298,
+18105,27299,
+18106,27300,
+18107,27301,
+18108,27302,
+18109,27303,
+18110,27304,
+18111,27305,
+18112,27306,
+18113,27307,
+18114,27308,
+18115,27309,
+18116,27310,
+18117,27311,
+18118,27312,
+18119,27313,
+18120,27314,
+18121,27315,
+18122,27316,
+18123,27317,
+18124,27318,
+18125,27319,
+18126,27320,
+18127,27321,
+18128,27322,
+18129,27323,
+18130,27324,
+18131,27325,
+18132,27326,
+18133,27327,
+18134,27328,
+18135,27329,
+18136,27330,
+18137,27331,
+18138,27332,
+18139,27333,
+18140,27334,
+18141,27335,
+18142,27336,
+18143,27337,
+18144,27338,
+18145,27339,
+18146,27340,
+18147,27341,
+18148,27342,
+18149,27343,
+18150,27344,
+18151,27345,
+18152,27346,
+18153,27347,
+18154,27348,
+18155,27349,
+18156,27350,
+18157,27351,
+18158,27352,
+18159,27353,
+18160,27354,
+18161,27355,
+18162,27356,
+18163,27357,
+18164,27358,
+18165,27359,
+18166,27360,
+18167,27361,
+18168,27362,
+18169,27363,
+18170,27364,
+18171,27365,
+18172,27366,
+18173,27367,
+18174,27368,
+18175,27369,
+18176,27370,
+18177,27371,
+18178,27372,
+18179,27373,
+18180,27374,
+18181,27375,
+18182,27376,
+18183,27377,
+18184,27378,
+18185,27379,
+18186,27380,
+18187,27381,
+18188,27382,
+18189,27383,
+18190,27384,
+18191,27385,
+18192,27386,
+18193,27387,
+18194,27388,
+18195,27389,
+18196,27390,
+18197,27391,
+18198,27392,
+18199,27393,
+18200,27394,
+18201,27395,
+18202,27396,
+18203,27397,
+18204,27398,
+18205,27399,
+18206,27400,
+18207,27401,
+18208,27402,
+18209,27403,
+18210,27404,
+18211,22094,
+18212,27405,
+18213,27406,
+18214,27407,
+18215,27408,
+18216,27409,
+18217,22095,
+18218,27410,
+18219,27411,
+18220,27412,
+18221,27413,
+18222,27414,
+18223,27415,
+18224,27416,
+18225,27417,
+18226,27418,
+18227,27419,
+18228,27420,
+18229,27421,
+18230,27422,
+18231,27423,
+18232,27424,
+18233,27425,
+18234,27426,
+18235,27427,
+18236,27428,
+18237,27429,
+18238,27430,
+18239,27431,
+18240,27432,
+18241,27433,
+18242,27434,
+18243,27435,
+18244,27436,
+18245,27437,
+18246,27438,
+18247,27439,
+18248,27440,
+18249,27441,
+18250,27442,
+18251,27443,
+18252,27444,
+18253,27445,
+18254,27446,
+18255,27447,
+18256,27448,
+18257,27449,
+18258,27450,
+18259,27451,
+18260,27452,
+18261,27453,
+18262,27454,
+18263,27455,
+18264,27456,
+18265,27457,
+18266,27458,
+18267,27459,
+18268,27460,
+18269,27461,
+18270,27462,
+18271,27463,
+18272,27464,
+18273,27465,
+18274,27466,
+18275,27467,
+18276,27468,
+18277,27469,
+18278,27470,
+18279,27471,
+18280,27472,
+18281,27473,
+18282,27474,
+18283,27475,
+18284,27476,
+18285,27477,
+18286,27478,
+18287,27479,
+18288,27480,
+18289,27481,
+18290,27482,
+18291,27483,
+18292,27484,
+18293,27485,
+18294,27486,
+18295,27487,
+18296,27488,
+18297,27489,
+18298,27490,
+18299,27491,
+18300,22096,
+18301,27492,
+18302,27493,
+18303,27494,
+18304,27495,
+18305,27496,
+18306,27497,
+18307,27498,
+18308,27499,
+18309,27500,
+18310,27501,
+18311,27502,
+18312,27503,
+18313,27504,
+18314,27505,
+18315,27506,
+18316,27507,
+18317,22097,
+18318,27508,
+18319,27509,
+18320,27510,
+18321,27511,
+18322,27512,
+18323,27513,
+18324,27514,
+18325,27515,
+18326,27516,
+18327,27517,
+18328,27518,
+18329,27519,
+18330,27520,
+18331,27521,
+18332,27522,
+18333,27523,
+18334,27524,
+18335,27525,
+18336,27526,
+18337,27527,
+18338,27528,
+18339,27529,
+18340,27530,
+18341,27531,
+18342,27532,
+18343,27533,
+18344,27534,
+18345,27535,
+18346,27536,
+18347,27537,
+18348,27538,
+18349,27539,
+18350,27540,
+18351,27541,
+18352,27542,
+18353,27543,
+18354,27544,
+18355,27545,
+18356,27546,
+18357,27547,
+18358,27548,
+18359,27549,
+18360,27550,
+18361,27551,
+18362,27552,
+18363,27553,
+18364,27554,
+18365,27555,
+18366,27556,
+18367,27557,
+18368,27558,
+18369,27559,
+18370,27560,
+18371,27561,
+18372,27562,
+18373,27563,
+18374,27564,
+18375,27565,
+18376,27566,
+18377,27567,
+18378,27568,
+18379,27569,
+18380,27570,
+18381,27571,
+18382,27572,
+18383,27573,
+18384,27574,
+18385,27575,
+18386,27576,
+18387,27577,
+18388,27578,
+18389,27579,
+18390,27580,
+18391,27581,
+18392,27582,
+18393,27583,
+18394,27584,
+18395,27585,
+18396,27586,
+18397,27587,
+18398,27588,
+18399,27589,
+18400,27590,
+18401,27591,
+18402,27592,
+18403,27593,
+18404,27594,
+18405,27595,
+18406,27596,
+18407,27597,
+18408,27598,
+18409,27599,
+18410,27600,
+18411,27601,
+18412,27602,
+18413,27603,
+18414,27604,
+18415,27605,
+18416,27606,
+18417,27607,
+18418,27608,
+18419,27609,
+18420,27610,
+18421,27611,
+18422,27612,
+18423,27613,
+18424,27614,
+18425,27615,
+18426,27616,
+18427,27617,
+18428,27618,
+18429,27619,
+18430,27620,
+18431,27621,
+18432,27622,
+18433,27623,
+18434,27624,
+18435,27625,
+18436,27626,
+18437,27627,
+18438,27628,
+18439,27629,
+18440,27630,
+18441,27631,
+18442,27632,
+18443,27633,
+18444,27634,
+18445,27635,
+18446,27636,
+18447,27637,
+18448,27638,
+18449,27639,
+18450,27640,
+18451,27641,
+18452,27642,
+18453,27643,
+18454,27644,
+18455,27645,
+18456,27646,
+18457,27647,
+18458,27648,
+18459,27649,
+18460,27650,
+18461,27651,
+18462,27652,
+18463,27653,
+18464,27654,
+18465,27655,
+18466,27656,
+18467,27657,
+18468,27658,
+18469,27659,
+18470,27660,
+18471,27661,
+18472,27662,
+18473,27663,
+18474,27664,
+18475,27665,
+18476,27666,
+18477,27667,
+18478,27668,
+18479,27669,
+18480,27670,
+18481,27671,
+18482,27672,
+18483,27673,
+18484,27674,
+18485,27675,
+18486,27676,
+18487,27677,
+18488,27678,
+18489,27679,
+18490,27680,
+18491,27681,
+18492,27682,
+18493,27683,
+18494,27684,
+18495,27685,
+18496,27686,
+18497,27687,
+18498,27688,
+18499,27689,
+18500,27690,
+18501,27691,
+18502,27692,
+18503,27693,
+18504,27694,
+18505,27695,
+18506,27696,
+18507,27697,
+18508,27698,
+18509,27699,
+18510,27700,
+18511,27701,
+18512,27702,
+18513,27703,
+18514,27704,
+18515,27705,
+18516,27706,
+18517,27707,
+18518,27708,
+18519,27709,
+18520,27710,
+18521,27711,
+18522,27712,
+18523,27713,
+18524,27714,
+18525,27715,
+18526,27716,
+18527,27717,
+18528,27718,
+18529,27719,
+18530,27720,
+18531,27721,
+18532,27722,
+18533,27723,
+18534,27724,
+18535,27725,
+18536,27726,
+18537,27727,
+18538,27728,
+18539,27729,
+18540,27730,
+18541,27731,
+18542,27732,
+18543,27733,
+18544,27734,
+18545,27735,
+18546,27736,
+18547,27737,
+18548,27738,
+18549,27739,
+18550,27740,
+18551,27741,
+18552,27742,
+18553,27743,
+18554,27744,
+18555,27745,
+18556,27746,
+18557,27747,
+18558,27748,
+18559,27749,
+18560,27750,
+18561,27751,
+18562,27752,
+18563,27753,
+18564,27754,
+18565,27755,
+18566,27756,
+18567,27757,
+18568,27758,
+18569,27759,
+18570,27760,
+18571,27761,
+18572,27762,
+18573,27763,
+18574,27764,
+18575,27765,
+18576,27766,
+18577,27767,
+18578,27768,
+18579,27769,
+18580,27770,
+18581,27771,
+18582,27772,
+18583,27773,
+18584,27774,
+18585,27775,
+18586,27776,
+18587,27777,
+18588,27778,
+18589,27779,
+18590,27780,
+18591,27781,
+18592,27782,
+18593,27783,
+18594,27784,
+18595,27785,
+18596,27786,
+18597,27787,
+18598,27788,
+18599,27789,
+18600,27790,
+18601,27791,
+18602,27792,
+18603,27793,
+18604,27794,
+18605,27795,
+18606,27796,
+18607,27797,
+18608,27798,
+18609,27799,
+18610,27800,
+18611,27801,
+18612,27802,
+18613,27803,
+18614,27804,
+18615,27805,
+18616,27806,
+18617,27807,
+18618,27808,
+18619,27809,
+18620,27810,
+18621,27811,
+18622,27812,
+18623,27813,
+18624,27814,
+18625,27815,
+18626,27816,
+18627,27817,
+18628,27818,
+18629,27819,
+18630,27820,
+18631,27821,
+18632,27822,
+18633,27823,
+18634,27824,
+18635,27825,
+18636,27826,
+18637,27827,
+18638,27828,
+18639,27829,
+18640,27830,
+18641,27831,
+18642,27832,
+18643,27833,
+18644,27834,
+18645,27835,
+18646,27836,
+18647,27837,
+18648,27838,
+18649,27839,
+18650,27840,
+18651,27841,
+18652,27842,
+18653,27843,
+18654,27844,
+18655,27845,
+18656,27846,
+18657,27847,
+18658,27848,
+18659,27849,
+18660,27850,
+18661,27851,
+18662,27852,
+18663,27853,
+18664,27854,
+18665,27855,
+18666,27856,
+18667,27857,
+18668,27858,
+18669,27859,
+18670,27860,
+18671,27861,
+18672,27862,
+18673,27863,
+18674,27864,
+18675,27865,
+18676,27866,
+18677,27867,
+18678,27868,
+18679,27869,
+18680,27870,
+18681,27871,
+18682,27872,
+18683,27873,
+18684,27874,
+18685,27875,
+18686,27876,
+18687,27877,
+18688,27878,
+18689,27879,
+18690,27880,
+18691,27881,
+18692,27882,
+18693,27883,
+18694,27884,
+18695,27885,
+18696,27886,
+18697,27887,
+18698,27888,
+18699,27889,
+18700,27890,
+18701,27891,
+18702,27892,
+18703,27893,
+18704,27894,
+18705,27895,
+18706,27896,
+18707,27897,
+18708,27898,
+18709,27899,
+18710,27900,
+18711,27901,
+18712,27902,
+18713,27903,
+18714,27904,
+18715,27905,
+18716,27906,
+18717,27907,
+18718,27908,
+18719,27909,
+18720,27910,
+18721,27911,
+18722,27912,
+18723,27913,
+18724,27914,
+18725,27915,
+18726,27916,
+18727,27917,
+18728,27918,
+18729,27919,
+18730,27920,
+18731,27921,
+18732,27922,
+18733,27923,
+18734,27924,
+18735,27925,
+18736,27926,
+18737,27927,
+18738,27928,
+18739,27929,
+18740,27930,
+18741,27931,
+18742,27932,
+18743,27933,
+18744,27934,
+18745,27935,
+18746,27936,
+18747,27937,
+18748,27938,
+18749,27939,
+18750,27940,
+18751,27941,
+18752,27942,
+18753,27943,
+18754,27944,
+18755,27945,
+18756,27946,
+18757,27947,
+18758,27948,
+18759,22099,
+18760,27949,
+18761,27950,
+18762,27951,
+18763,27952,
+18764,27953,
+18765,27954,
+18766,27955,
+18767,27956,
+18768,27957,
+18769,27958,
+18770,27959,
+18771,27960,
+18772,27961,
+18773,27962,
+18774,27963,
+18775,27964,
+18776,27965,
+18777,27966,
+18778,27967,
+18779,27968,
+18780,27969,
+18781,27970,
+18782,27971,
+18783,27972,
+18784,27973,
+18785,27974,
+18786,27975,
+18787,27976,
+18788,27977,
+18789,27978,
+18790,27979,
+18791,27980,
+18792,27981,
+18793,27982,
+18794,27983,
+18795,27984,
+18796,27985,
+18797,27986,
+18798,27987,
+18799,27988,
+18800,27989,
+18801,27990,
+18802,27991,
+18803,27992,
+18804,27993,
+18805,27994,
+18806,27995,
+18807,27996,
+18808,27997,
+18809,27998,
+18810,22100,
+18811,27999,
+18812,28000,
+18813,22101,
+18814,28001,
+18815,28002,
+18816,28003,
+18817,28004,
+18818,22102,
+18819,22103,
+18820,28005,
+18821,22104,
+18822,22105,
+18823,28006,
+18824,28007,
+18825,28008,
+18826,28009,
+18827,28010,
+18828,28011,
+18829,28012,
+18830,28013,
+18831,28014,
+18832,28015,
+18833,28016,
+18834,28017,
+18835,28018,
+18836,28019,
+18837,28020,
+18838,28021,
+18839,28022,
+18840,28023,
+18841,28024,
+18842,28025,
+18843,22107,
+18844,28026,
+18845,28027,
+18846,28028,
+18847,22106,
+18848,28029,
+18849,28030,
+18850,28031,
+18851,28032,
+18852,28033,
+18853,28034,
+18854,28035,
+18855,28036,
+18856,28037,
+18857,28038,
+18858,28039,
+18859,28040,
+18860,28041,
+18861,28042,
+18862,28043,
+18863,28044,
+18864,28045,
+18865,28046,
+18866,28047,
+18867,28048,
+18868,28049,
+18869,28050,
+18870,22109,
+18871,22108,
+18872,28051,
+18873,28052,
+18874,28053,
+18875,28054,
+18876,28055,
+18877,28056,
+18878,28057,
+18879,28058,
+18880,28059,
+18881,28060,
+18882,28061,
+18883,28062,
+18884,28063,
+18885,28064,
+18886,28065,
+18887,28066,
+18888,28067,
+18889,28068,
+18890,28069,
+18891,28070,
+18892,28071,
+18893,28072,
+18894,28073,
+18895,28074,
+18896,28075,
+18897,28076,
+18898,28077,
+18899,28078,
+18900,28079,
+18901,28080,
+18902,28081,
+18903,28082,
+18904,28083,
+18905,28084,
+18906,28085,
+18907,28086,
+18908,28087,
+18909,28088,
+18910,28089,
+18911,28090,
+18912,28091,
+18913,28092,
+18914,28093,
+18915,28094,
+18916,28095,
+18917,28096,
+18918,28097,
+18919,28098,
+18920,28099,
+18921,28100,
+18922,28101,
+18923,28102,
+18924,28103,
+18925,28104,
+18926,28105,
+18927,28106,
+18928,28107,
+18929,28108,
+18930,28109,
+18931,28110,
+18932,28111,
+18933,28112,
+18934,28113,
+18935,28114,
+18936,28115,
+18937,28116,
+18938,28117,
+18939,28118,
+18940,28119,
+18941,28120,
+18942,28121,
+18943,28122,
+18944,28123,
+18945,28124,
+18946,28125,
+18947,28126,
+18948,28127,
+18949,28128,
+18950,28129,
+18951,28130,
+18952,28131,
+18953,28132,
+18954,28133,
+18955,28134,
+18956,28135,
+18957,28136,
+18958,28137,
+18959,28138,
+18960,28139,
+18961,28140,
+18962,28141,
+18963,28142,
+18964,28143,
+18965,28144,
+18966,28145,
+18967,28146,
+18968,28147,
+18969,28148,
+18970,28149,
+18971,28150,
+18972,28151,
+18973,28152,
+18974,28153,
+18975,28154,
+18976,28155,
+18977,28156,
+18978,28157,
+18979,28158,
+18980,28159,
+18981,28160,
+18982,28161,
+18983,28162,
+18984,28163,
+18985,28164,
+18986,28165,
+18987,28166,
+18988,28167,
+18989,28168,
+18990,28169,
+18991,28170,
+18992,28171,
+18993,28172,
+18994,28173,
+18995,28174,
+18996,28175,
+18997,28176,
+18998,28177,
+18999,28178,
+19000,28179,
+19001,28180,
+19002,28181,
+19003,28182,
+19004,28183,
+19005,28184,
+19006,28185,
+19007,28186,
+19008,28187,
+19009,28188,
+19010,28189,
+19011,28190,
+19012,28191,
+19013,28192,
+19014,28193,
+19015,28194,
+19016,28195,
+19017,28196,
+19018,28197,
+19019,28198,
+19020,28199,
+19021,28200,
+19022,28201,
+19023,28202,
+19024,28203,
+19025,28204,
+19026,28205,
+19027,28206,
+19028,28207,
+19029,28208,
+19030,28209,
+19031,28210,
+19032,28211,
+19033,28212,
+19034,28213,
+19035,28214,
+19036,28215,
+19037,28216,
+19038,28217,
+19039,28218,
+19040,28219,
+19041,28220,
+19042,28221,
+19043,28222,
+19044,28223,
+19045,28224,
+19046,28225,
+19047,28226,
+19048,28227,
+19049,28228,
+19050,28229,
+19051,28230,
+19052,28231,
+19053,28232,
+19054,28233,
+19055,28234,
+19056,28235,
+19057,28236,
+19058,28237,
+19059,28238,
+19060,28239,
+19061,28240,
+19062,28241,
+19063,28242,
+19064,28243,
+19065,28244,
+19066,28245,
+19067,28246,
+19068,28247,
+19069,28248,
+19070,28249,
+19071,28250,
+19072,28251,
+19073,28252,
+19074,28253,
+19075,28254,
+19076,28255,
+19077,28256,
+19078,28257,
+19079,28258,
+19080,28259,
+19081,28260,
+19082,28261,
+19083,28262,
+19084,28263,
+19085,28264,
+19086,28265,
+19087,28266,
+19088,28267,
+19089,28268,
+19090,28269,
+19091,28270,
+19092,28271,
+19093,28272,
+19094,28273,
+19095,28274,
+19096,28275,
+19097,28276,
+19098,28277,
+19099,28278,
+19100,28279,
+19101,28280,
+19102,28281,
+19103,28282,
+19104,28283,
+19105,28284,
+19106,28285,
+19107,28286,
+19108,28287,
+19109,28288,
+19110,28289,
+19111,28290,
+19112,28291,
+19113,28292,
+19114,28293,
+19115,28294,
+19116,28295,
+19117,28296,
+19118,28297,
+19119,28298,
+19120,28299,
+19121,28300,
+19122,28301,
+19123,28302,
+19124,28303,
+19125,28304,
+19126,28305,
+19127,28306,
+19128,28307,
+19129,28308,
+19130,28309,
+19131,28310,
+19132,28311,
+19133,28312,
+19134,28313,
+19135,28314,
+19136,28315,
+19137,28316,
+19138,28317,
+19139,28318,
+19140,28319,
+19141,28320,
+19142,28321,
+19143,28322,
+19144,28323,
+19145,28324,
+19146,28325,
+19147,28326,
+19148,28327,
+19149,28328,
+19150,28329,
+19151,28330,
+19152,28331,
+19153,28332,
+19154,28333,
+19155,28334,
+19156,28335,
+19157,28336,
+19158,28337,
+19159,28338,
+19160,28339,
+19161,28340,
+19162,28341,
+19163,28342,
+19164,28343,
+19165,28344,
+19166,28345,
+19167,28346,
+19168,28347,
+19169,28348,
+19170,28349,
+19171,28350,
+19172,28351,
+19173,28352,
+19174,28353,
+19175,28354,
+19176,28355,
+19177,28356,
+19178,28357,
+19179,28358,
+19180,28359,
+19181,28360,
+19182,28361,
+19183,28362,
+19184,28363,
+19185,28364,
+19186,28365,
+19187,28366,
+19188,28367,
+19189,28368,
+19190,28369,
+19191,28370,
+19192,28371,
+19193,28372,
+19194,28373,
+19195,28374,
+19196,28375,
+19197,28376,
+19198,28377,
+19199,28378,
+19200,28379,
+19201,28380,
+19202,28381,
+19203,28382,
+19204,28383,
+19205,28384,
+19206,28385,
+19207,28386,
+19208,28387,
+19209,28388,
+19210,28389,
+19211,28390,
+19212,28391,
+19213,28392,
+19214,28393,
+19215,28394,
+19216,28395,
+19217,28396,
+19218,28397,
+19219,28398,
+19220,28399,
+19221,28400,
+19222,28401,
+19223,28402,
+19224,28403,
+19225,28404,
+19226,28405,
+19227,28406,
+19228,28407,
+19229,28408,
+19230,28409,
+19231,28410,
+19232,28411,
+19233,28412,
+19234,28413,
+19235,28414,
+19236,28415,
+19237,28416,
+19238,28417,
+19239,28418,
+19240,28419,
+19241,28420,
+19242,28421,
+19243,28422,
+19244,28423,
+19245,28424,
+19246,28425,
+19247,28426,
+19248,28427,
+19249,28428,
+19250,28429,
+19251,28430,
+19252,28431,
+19253,28432,
+19254,28433,
+19255,28434,
+19256,28435,
+19257,28436,
+19258,28437,
+19259,28438,
+19260,28439,
+19261,28440,
+19262,28441,
+19263,28442,
+19264,28443,
+19265,28444,
+19266,28445,
+19267,28446,
+19268,28447,
+19269,28448,
+19270,28449,
+19271,28450,
+19272,28451,
+19273,28452,
+19274,28453,
+19275,28454,
+19276,28455,
+19277,28456,
+19278,28457,
+19279,28458,
+19280,28459,
+19281,28460,
+19282,28461,
+19283,28462,
+19284,28463,
+19285,28464,
+19286,28465,
+19287,28466,
+19288,28467,
+19289,28468,
+19290,28469,
+19291,28470,
+19292,28471,
+19293,28472,
+19294,28473,
+19295,28474,
+19296,28475,
+19297,28476,
+19298,28477,
+19299,28478,
+19300,28479,
+19301,28480,
+19302,28481,
+19303,28482,
+19304,28483,
+19305,28484,
+19306,28485,
+19307,28486,
+19308,28487,
+19309,28488,
+19310,28489,
+19311,28490,
+19312,28491,
+19313,28492,
+19314,28493,
+19315,28494,
+19316,28495,
+19317,28496,
+19318,28497,
+19319,28498,
+19320,28499,
+19321,28500,
+19322,28501,
+19323,28502,
+19324,28503,
+19325,28504,
+19326,28505,
+19327,28506,
+19328,28507,
+19329,28508,
+19330,28509,
+19331,28510,
+19332,28511,
+19333,28512,
+19334,28513,
+19335,28514,
+19336,28515,
+19337,28516,
+19338,28517,
+19339,28518,
+19340,28519,
+19341,28520,
+19342,28521,
+19343,28522,
+19344,28523,
+19345,28524,
+19346,28525,
+19347,28526,
+19348,28527,
+19349,28528,
+19350,28529,
+19351,28530,
+19352,28531,
+19353,28532,
+19354,28533,
+19355,28534,
+19356,28535,
+19357,28536,
+19358,28537,
+19359,28538,
+19360,28539,
+19361,28540,
+19362,28541,
+19363,28542,
+19364,28543,
+19365,28544,
+19366,28545,
+19367,28546,
+19368,28547,
+19369,28548,
+19370,28549,
+19371,28550,
+19372,28551,
+19373,28552,
+19374,28553,
+19375,28554,
+19376,28555,
+19377,28556,
+19378,28557,
+19379,28558,
+19380,28559,
+19381,28560,
+19382,28561,
+19383,28562,
+19384,28563,
+19385,28564,
+19386,28565,
+19387,28566,
+19388,28567,
+19389,28568,
+19390,28569,
+19391,28570,
+19392,28571,
+19393,28572,
+19394,28573,
+19395,28574,
+19396,28575,
+19397,28576,
+19398,28577,
+19399,28578,
+19400,28579,
+19401,28580,
+19402,28581,
+19403,28582,
+19404,28583,
+19405,28584,
+19406,28585,
+19407,28586,
+19408,28587,
+19409,28588,
+19410,28589,
+19411,28590,
+19412,28591,
+19413,28592,
+19414,28593,
+19415,28594,
+19416,28595,
+19417,28596,
+19418,28597,
+19419,28598,
+19420,28599,
+19421,28600,
+19422,28601,
+19423,28602,
+19424,28603,
+19425,28604,
+19426,28605,
+19427,28606,
+19428,28607,
+19429,28608,
+19430,28609,
+19431,28610,
+19432,28611,
+19433,28612,
+19434,28613,
+19435,28614,
+19436,28615,
+19437,28616,
+19438,28617,
+19439,28618,
+19440,28619,
+19441,28620,
+19442,28621,
+19443,28622,
+19444,28623,
+19445,28624,
+19446,28625,
+19447,28626,
+19448,28627,
+19449,28628,
+19450,28629,
+19451,28630,
+19452,28631,
+19453,28632,
+19454,28633,
+19455,28634,
+19456,28635,
+19457,28636,
+19458,28637,
+19459,28638,
+19460,28639,
+19461,28640,
+19462,28641,
+19463,28642,
+19464,28643,
+19465,28644,
+19466,28645,
+19467,28646,
+19468,28647,
+19469,28648,
+19470,28649,
+19471,28650,
+19472,28651,
+19473,28652,
+19474,28653,
+19475,28654,
+19476,28655,
+19477,28656,
+19478,28657,
+19479,28658,
+19480,28659,
+19481,28660,
+19482,28661,
+19483,28662,
+19484,28663,
+19485,28664,
+19486,28665,
+19487,28666,
+19488,28667,
+19489,28668,
+19490,28669,
+19491,28670,
+19492,28671,
+19493,28672,
+19494,28673,
+19495,28674,
+19496,28675,
+19497,28676,
+19498,28677,
+19499,28678,
+19500,28679,
+19501,28680,
+19502,28681,
+19503,28682,
+19504,28683,
+19505,28684,
+19506,28685,
+19507,28686,
+19508,28687,
+19509,28688,
+19510,28689,
+19511,28690,
+19512,28691,
+19513,28692,
+19514,28693,
+19515,28694,
+19516,28695,
+19517,28696,
+19518,28697,
+19519,28698,
+19520,28699,
+19521,28700,
+19522,28701,
+19523,28702,
+19524,28703,
+19525,28704,
+19526,28705,
+19527,28706,
+19528,28707,
+19529,28708,
+19530,28709,
+19531,28710,
+19532,28711,
+19533,28712,
+19534,28713,
+19535,28714,
+19536,28715,
+19537,28716,
+19538,28717,
+19539,28718,
+19540,28719,
+19541,28720,
+19542,28721,
+19543,28722,
+19544,28723,
+19545,28724,
+19546,28725,
+19547,28726,
+19548,28727,
+19549,28728,
+19550,28729,
+19551,28730,
+19552,28731,
+19553,28732,
+19554,28733,
+19555,28734,
+19556,28735,
+19557,28736,
+19558,28737,
+19559,28738,
+19560,28739,
+19561,28740,
+19562,28741,
+19563,28742,
+19564,28743,
+19565,28744,
+19566,28745,
+19567,28746,
+19568,28747,
+19569,28748,
+19570,28749,
+19571,28750,
+19572,28751,
+19573,28752,
+19574,28753,
+19575,22116,
+19576,28754,
+19577,28755,
+19578,28756,
+19579,28757,
+19580,28758,
+19581,28759,
+19582,28760,
+19583,28761,
+19584,28762,
+19585,28763,
+19586,28764,
+19587,28765,
+19588,28766,
+19589,28767,
+19590,28768,
+19591,28769,
+19592,28770,
+19593,28771,
+19594,28772,
+19595,28773,
+19596,28774,
+19597,28775,
+19598,28776,
+19599,28777,
+19600,28778,
+19601,28779,
+19602,28780,
+19603,28781,
+19604,28782,
+19605,28783,
+19606,28784,
+19607,28785,
+19608,28786,
+19609,28787,
+19610,28788,
+19611,28789,
+19612,28790,
+19613,28791,
+19614,28792,
+19615,22113,
+19616,22114,
+19617,22115,
+19618,22117,
+19619,22112,
+19620,28793,
+19621,28794,
+19622,28795,
+19623,28796,
+19624,28797,
+19625,28798,
+19626,28799,
+19627,28800,
+19628,28801,
+19629,28802,
+19630,28803,
+19631,28804,
+19632,28805,
+19633,28806,
+19634,28807,
+19635,28808,
+19636,28809,
+19637,28810,
+19638,28811,
+19639,28812,
+19640,28813,
+19641,28814,
+19642,28815,
+19643,28816,
+19644,28817,
+19645,28818,
+19646,28819,
+19647,28820,
+19648,28821,
+19649,28822,
+19650,28823,
+19651,28824,
+19652,28825,
+19653,28826,
+19654,28827,
+19655,28828,
+19656,28829,
+19657,28830,
+19658,28831,
+19659,28832,
+19660,28833,
+19661,28834,
+19662,28835,
+19663,28836,
+19664,28837,
+19665,28838,
+19666,28839,
+19667,28840,
+19668,28841,
+19669,28842,
+19670,28843,
+19671,28844,
+19672,28845,
+19673,28846,
+19674,28847,
+19675,28848,
+19676,28849,
+19677,28850,
+19678,28851,
+19679,28852,
+19680,28853,
+19681,28854,
+19682,28855,
+19683,28856,
+19684,28857,
+19685,28858,
+19686,28859,
+19687,28860,
+19688,28861,
+19689,28862,
+19690,28863,
+19691,28864,
+19692,28865,
+19693,28866,
+19694,28867,
+19695,28868,
+19696,28869,
+19697,28870,
+19698,28871,
+19699,28872,
+19700,28873,
+19701,28874,
+19702,28875,
+19703,28876,
+19704,28877,
+19705,28878,
+19706,28879,
+19707,28880,
+19708,28881,
+19709,28882,
+19710,28883,
+19711,28884,
+19712,28885,
+19713,28886,
+19714,28887,
+19715,28888,
+19716,28889,
+19717,28890,
+19718,28891,
+19719,28892,
+19720,28893,
+19721,28894,
+19722,28895,
+19723,28896,
+19724,28897,
+19725,28898,
+19726,28899,
+19727,28900,
+19728,28901,
+19729,28902,
+19730,28903,
+19731,22118,
+19732,22119,
+19733,22120,
+19734,22121,
+19735,22122,
+19736,22123,
+19737,22124,
+19738,28904,
+19739,28905,
+19740,28906,
+19741,28907,
+19742,28908,
+19743,28909,
+19744,28910,
+19745,28911,
+19746,28912,
+19747,28913,
+19748,28914,
+19749,28915,
+19750,28916,
+19751,28917,
+19752,28918,
+19753,28919,
+19754,28920,
+19755,28921,
+19756,28922,
+19757,28923,
+19758,28924,
+19759,28925,
+19760,28926,
+19761,28927,
+19762,28928,
+19763,28929,
+19764,28930,
+19765,28931,
+19766,28932,
+19767,28933,
+19768,28934,
+19769,28935,
+19770,28936,
+19771,28937,
+19772,28938,
+19773,28939,
+19774,28940,
+19775,28941,
+19776,28942,
+19777,28943,
+19778,28944,
+19779,28945,
+19780,28946,
+19781,28947,
+19782,28948,
+19783,28949,
+19784,28950,
+19785,28951,
+19786,28952,
+19787,28953,
+19788,28954,
+19789,28955,
+19790,28956,
+19791,28957,
+19792,28958,
+19793,28959,
+19794,28960,
+19795,28961,
+19796,28962,
+19797,28963,
+19798,28964,
+19799,28965,
+19800,28966,
+19801,28967,
+19802,28968,
+19803,28969,
+19804,28970,
+19805,28971,
+19806,28972,
+19807,28973,
+19808,28974,
+19809,28975,
+19810,28976,
+19811,28977,
+19812,28978,
+19813,28979,
+19814,28980,
+19815,28981,
+19816,28982,
+19817,28983,
+19818,28984,
+19819,28985,
+19820,28986,
+19821,28987,
+19822,28988,
+19823,28989,
+19824,28990,
+19825,28991,
+19826,28992,
+19827,28993,
+19828,28994,
+19829,28995,
+19830,28996,
+19831,28997,
+19832,28998,
+19833,28999,
+19834,29000,
+19835,29001,
+19836,29002,
+19837,29003,
+19838,29004,
+19839,29005,
+19840,29006,
+19841,29007,
+19842,29008,
+19843,29009,
+19844,29010,
+19845,29011,
+19846,29012,
+19847,29013,
+19848,29014,
+19849,29015,
+19850,29016,
+19851,29017,
+19852,29018,
+19853,29019,
+19854,29020,
+19855,29021,
+19856,29022,
+19857,29023,
+19858,29024,
+19859,29025,
+19860,29026,
+19861,29027,
+19862,29028,
+19863,29029,
+19864,29030,
+19865,29031,
+19866,29032,
+19867,29033,
+19868,29034,
+19869,29035,
+19870,29036,
+19871,29037,
+19872,29038,
+19873,29039,
+19874,29040,
+19875,29041,
+19876,29042,
+19877,29043,
+19878,29044,
+19879,29045,
+19880,29046,
+19881,29047,
+19882,29048,
+19883,29049,
+19884,29050,
+19885,29051,
+19886,22125,
+19887,29052,
+19888,29053,
+19889,29054,
+19890,29055,
+19891,29056,
+19892,29057,
+19893,29058,
+19968,4162,
+19969,1504,
+19970,10072,
+19971,3070,
+19972,10073,
+19973,10074,
+19974,10075,
+19975,3747,
+19976,4458,
+19977,3288,
+19978,3336,
+19979,3887,
+19980,4696,
+19981,1154,
+19982,4304,
+19983,10076,
+19984,4698,
+19985,1304,
+19986,10077,
+19987,4613,
+19988,3151,
+19989,4701,
+19990,3415,
+19991,10078,
+19992,3181,
+19993,1124,
+19994,4156,
+19995,1367,
+19996,1514,
+19997,3508,
+19998,4703,
+19999,10079,
+20000,10080,
+20001,10081,
+20002,1513,
+20003,10082,
+20004,2566,
+20005,4088,
+20006,10083,
+20007,3294,
+20008,4707,
+20009,10084,
+20010,1777,
+20011,4071,
+20012,5788,
+20013,4559,
+20014,10085,
+20015,10086,
+20016,1662,
+20017,10087,
+20018,1329,
+20019,10088,
+20020,2594,
+20021,10089,
+20022,4722,
+20023,10090,
+20024,3737,
+20025,1413,
+20026,3769,
+20027,4598,
+20028,10091,
+20029,2529,
+20030,2312,
+20031,4709,
+20032,10092,
+20033,10093,
+20034,10094,
+20035,2862,
+20036,10095,
+20037,2290,
+20038,10096,
+20039,4711,
+20040,2745,
+20041,4204,
+20042,10097,
+20043,4525,
+20044,3817,
+20045,4424,
+20046,1964,
+20047,1603,
+20048,2497,
+20049,10098,
+20050,3032,
+20051,2963,
+20052,3140,
+20053,10099,
+20054,1837,
+20055,10100,
+20056,1264,
+20057,4185,
+20058,10101,
+20059,10102,
+20060,4725,
+20061,2292,
+20062,3089,
+20063,4153,
+20064,3869,
+20065,3924,
+20066,10103,
+20067,10104,
+20068,10105,
+20069,10106,
+20070,3456,
+20071,10107,
+20072,10108,
+20073,4726,
+20074,10109,
+20075,10110,
+20076,10111,
+20077,10112,
+20078,10113,
+20079,10114,
+20080,2713,
+20081,2681,
+20082,10115,
+20083,3268,
+20084,10116,
+20085,10117,
+20086,10118,
+20087,10119,
+20088,10120,
+20089,10121,
+20090,10122,
+20091,10123,
+20092,10124,
+20093,10125,
+20094,3113,
+20095,10126,
+20096,10127,
+20097,10128,
+20098,8281,
+20099,10129,
+20100,10130,
+20101,10131,
+20102,2580,
+20103,10132,
+20104,4301,
+20105,4506,
+20106,10133,
+20107,3417,
+20108,1597,
+20109,4695,
+20110,4287,
+20111,2436,
+20112,10134,
+20113,4361,
+20114,1978,
+20115,4727,
+20116,3828,
+20117,2269,
+20118,10135,
+20119,10136,
+20120,4702,
+20121,10137,
+20122,4080,
+20123,3956,
+20124,10138,
+20125,10139,
+20126,8689,
+20127,4723,
+20128,4867,
+20129,3751,
+20130,2375,
+20131,10140,
+20132,2188,
+20133,1884,
+20134,4199,
+20135,1217,
+20136,1943,
+20137,2841,
+20138,10141,
+20139,3930,
+20140,2264,
+20141,3669,
+20142,2570,
+20143,10142,
+20144,10143,
+20145,10144,
+20146,3156,
+20147,4869,
+20148,10145,
+20149,4872,
+20150,10146,
+20151,10147,
+20152,10148,
+20153,10149,
+20154,3238,
+20155,4767,
+20156,10150,
+20157,10151,
+20158,10152,
+20159,4193,
+20160,3401,
+20161,3237,
+20162,4770,
+20163,4768,
+20164,4732,
+20165,2247,
+20166,3052,
+20167,1301,
+20168,10153,
+20169,4769,
+20170,2242,
+20171,2234,
+20172,10154,
+20173,3247,
+20174,1366,
+20175,10155,
+20176,10156,
+20177,2687,
+20178,10157,
+20179,1181,
+20180,4653,
+20181,3426,
+20182,3568,
+20183,4461,
+20184,1713,
+20185,3894,
+20186,10158,
+20187,10159,
+20188,10160,
+20189,4846,
+20190,4774,
+20191,3111,
+20192,10161,
+20193,4772,
+20194,10162,
+20195,1405,
+20196,2615,
+20197,4187,
+20198,10163,
+20199,10164,
+20200,4771,
+20201,10165,
+20202,4174,
+20203,4773,
+20204,2764,
+20205,10166,
+20206,10167,
+20207,10168,
+20208,4127,
+20209,10169,
+20210,4568,
+20211,4776,
+20212,10170,
+20213,4779,
+20214,2161,
+20215,2126,
+20216,10171,
+20217,10172,
+20218,10173,
+20219,3241,
+20220,10174,
+20221,1658,
+20222,10175,
+20223,1631,
+20224,10176,
+20225,3090,
+20226,10177,
+20227,10178,
+20228,10179,
+20229,10180,
+20230,10181,
+20231,10182,
+20232,10183,
+20233,4782,
+20234,4168,
+20235,10184,
+20236,10185,
+20237,3832,
+20238,2098,
+20239,1689,
+20240,1602,
+20241,4008,
+20242,10186,
+20243,10187,
+20244,10188,
+20245,10189,
+20246,10190,
+20247,4569,
+20248,4266,
+20249,2052,
+20250,2038,
+20251,4775,
+20252,10191,
+20253,10192,
+20254,3290,
+20255,3775,
+20256,1326,
+20257,10193,
+20258,4777,
+20259,10194,
+20260,3332,
+20261,4780,
+20262,2686,
+20263,4781,
+20264,10195,
+20265,10196,
+20266,3776,
+20267,4783,
+20268,10197,
+20269,10198,
+20270,10199,
+20271,1141,
+20272,1817,
+20273,10200,
+20274,4791,
+20275,10201,
+20276,1012,
+20277,10202,
+20278,2607,
+20279,10203,
+20280,3365,
+20281,10204,
+20282,3514,
+20283,10205,
+20284,3515,
+20285,4792,
+20286,10206,
+20287,10207,
+20288,10208,
+20289,10209,
+20290,10210,
+20291,1481,
+20292,10211,
+20293,10212,
+20294,1420,
+20295,10213,
+20296,10214,
+20297,10215,
+20298,10216,
+20299,10217,
+20300,10218,
+20301,3786,
+20302,1454,
+20303,4606,
+20304,4689,
+20305,4280,
+20306,10219,
+20307,3640,
+20308,10220,
+20309,1925,
+20310,10221,
+20311,4790,
+20312,4848,
+20313,4293,
+20314,4787,
+20315,1677,
+20316,4692,
+20317,4788,
+20318,4784,
+20319,4789,
+20320,2886,
+20321,10222,
+20322,10223,
+20323,4251,
+20324,4778,
+20325,4849,
+20326,10224,
+20327,4785,
+20328,10225,
+20329,2982,
+20330,10226,
+20331,10227,
+20332,2491,
+20333,10228,
+20334,10229,
+20335,4121,
+20336,998,
+20337,10230,
+20338,10231,
+20339,2116,
+20340,4794,
+20341,10232,
+20342,4793,
+20343,10233,
+20344,10234,
+20345,10235,
+20346,10236,
+20347,4800,
+20348,4802,
+20349,10237,
+20350,4799,
+20351,3408,
+20352,10238,
+20353,10239,
+20354,10240,
+20355,4797,
+20356,4533,
+20357,10241,
+20358,8178,
+20359,10242,
+20360,1283,
+20361,4796,
+20362,10243,
+20363,2536,
+20364,10244,
+20365,3427,
+20366,10245,
+20367,4798,
+20368,10246,
+20369,4795,
+20370,10247,
+20371,10248,
+20372,4804,
+20373,10249,
+20374,8285,
+20375,1520,
+20376,10250,
+20377,10251,
+20378,10252,
+20379,1794,
+20380,10253,
+20381,4167,
+20382,10254,
+20383,10255,
+20384,3885,
+20385,10256,
+20386,10257,
+20387,2665,
+20388,10258,
+20389,2197,
+20390,4493,
+20391,1191,
+20392,3141,
+20393,2424,
+20394,4801,
+20395,10259,
+20396,4803,
+20397,10260,
+20398,3833,
+20399,1957,
+20400,10261,
+20401,10262,
+20402,10263,
+20403,10264,
+20404,10265,
+20405,3155,
+20406,10266,
+20407,10267,
+20408,10268,
+20409,10269,
+20410,10270,
+20411,10271,
+20412,10272,
+20413,10273,
+20414,10274,
+20415,1100,
+20416,10275,
+20417,10276,
+20418,9884,
+20419,1372,
+20420,1580,
+20421,4808,
+20422,10277,
+20423,10278,
+20424,10279,
+20425,10280,
+20426,2350,
+20427,10281,
+20428,10282,
+20429,10283,
+20430,4850,
+20431,3147,
+20432,2537,
+20433,4812,
+20434,10284,
+20435,10285,
+20436,10286,
+20437,10287,
+20438,10288,
+20439,3532,
+20440,1690,
+20441,10289,
+20442,4809,
+20443,10290,
+20444,4811,
+20445,1036,
+20446,4294,
+20447,4813,
+20448,8629,
+20449,3984,
+20450,10291,
+20451,4810,
+20452,10292,
+20453,10293,
+20454,4805,
+20455,10294,
+20456,4806,
+20457,2546,
+20458,4807,
+20459,10295,
+20460,10296,
+20461,2150,
+20462,4009,
+20463,1700,
+20464,10297,
+20465,2322,
+20466,10298,
+20467,4817,
+20468,10299,
+20469,10300,
+20470,10301,
+20471,10302,
+20472,4814,
+20473,10303,
+20474,958,
+20475,10304,
+20476,10305,
+20477,10306,
+20478,4822,
+20479,10307,
+20480,8908,
+20481,10308,
+20482,10309,
+20483,10310,
+20484,10311,
+20485,10312,
+20486,8214,
+20487,10313,
+20488,10314,
+20489,7778,
+20490,10315,
+20491,7968,
+20492,4824,
+20493,1055,
+20494,10316,
+20495,4819,
+20496,10317,
+20497,8319,
+20498,1434,
+20499,10318,
+20500,2338,
+20501,10319,
+20502,10320,
+20503,10321,
+20504,3611,
+20505,1961,
+20506,4183,
+20507,10322,
+20508,4823,
+20509,10323,
+20510,10324,
+20511,2233,
+20512,10325,
+20513,1232,
+20514,10326,
+20515,10327,
+20516,10328,
+20517,4825,
+20518,2330,
+20519,10329,
+20520,4826,
+20521,4815,
+20522,2882,
+20523,8284,
+20524,4818,
+20525,4821,
+20526,4820,
+20527,10330,
+20528,10331,
+20529,10332,
+20530,10333,
+20531,10334,
+20532,10335,
+20533,10336,
+20534,10337,
+20535,10338,
+20536,10339,
+20537,10340,
+20538,4431,
+20539,10341,
+20540,4532,
+20541,10342,
+20542,3168,
+20543,10343,
+20544,10344,
+20545,10345,
+20546,10346,
+20547,4828,
+20548,10347,
+20549,10348,
+20550,10349,
+20551,2124,
+20552,4830,
+20553,8596,
+20554,10350,
+20555,10351,
+20556,4816,
+20557,10352,
+20558,4831,
+20559,3018,
+20560,10353,
+20561,10354,
+20562,10355,
+20563,10356,
+20564,10357,
+20565,4829,
+20566,10358,
+20567,10359,
+20568,10360,
+20569,10361,
+20570,4691,
+20571,10362,
+20572,3668,
+20573,10363,
+20574,10364,
+20575,10365,
+20576,10366,
+20577,10367,
+20578,10368,
+20579,10369,
+20580,10370,
+20581,2162,
+20582,10371,
+20583,10372,
+20584,10373,
+20585,10374,
+20586,10375,
+20587,10376,
+20588,4832,
+20589,10377,
+20590,10378,
+20591,10379,
+20592,10380,
+20593,10381,
+20594,10382,
+20595,10383,
+20596,7781,
+20597,8833,
+20598,2941,
+20599,3686,
+20600,10384,
+20601,10385,
+20602,10386,
+20603,4833,
+20604,10387,
+20605,10388,
+20606,4827,
+20607,1226,
+20608,2443,
+20609,10389,
+20610,10390,
+20611,10391,
+20612,10392,
+20613,1712,
+20614,10393,
+20615,10394,
+20616,2535,
+20617,10395,
+20618,10396,
+20619,10397,
+20620,10398,
+20621,1027,
+20622,10399,
+20623,10400,
+20624,10401,
+20625,10402,
+20626,10403,
+20627,10404,
+20628,10405,
+20629,10406,
+20630,8909,
+20631,10407,
+20632,8458,
+20633,7742,
+20634,10408,
+20635,10409,
+20636,10410,
+20637,10411,
+20638,10412,
+20639,10413,
+20640,10414,
+20641,10415,
+20642,9855,
+20643,1401,
+20644,10416,
+20645,4834,
+20646,10417,
+20647,4835,
+20648,1317,
+20649,4836,
+20650,10418,
+20651,10419,
+20652,1378,
+20653,8750,
+20654,10420,
+20655,10421,
+20656,10422,
+20657,10423,
+20658,972,
+20659,7830,
+20660,8907,
+20661,8812,
+20662,10424,
+20663,8471,
+20664,10425,
+20665,10426,
+20666,4837,
+20667,3310,
+20668,10427,
+20669,10428,
+20670,8424,
+20671,10429,
+20672,10430,
+20673,10431,
+20674,8916,
+20675,10432,
+20676,10433,
+20677,8121,
+20678,10434,
+20679,10435,
+20680,10436,
+20681,8920,
+20682,10437,
+20683,10438,
+20684,10439,
+20685,10440,
+20686,10441,
+20687,3934,
+20688,10442,
+20689,8415,
+20690,10443,
+20691,10444,
+20692,10445,
+20693,8386,
+20694,4838,
+20695,10446,
+20696,10447,
+20697,10448,
+20698,2574,
+20699,10449,
+20700,10450,
+20701,10451,
+20702,8597,
+20703,10452,
+20704,10453,
+20705,10454,
+20706,10455,
+20707,10456,
+20708,10457,
+20709,8108,
+20710,4842,
+20711,3303,
+20712,8915,
+20713,10458,
+20714,10459,
+20715,10460,
+20716,4841,
+20717,4840,
+20718,4843,
+20719,10461,
+20720,10462,
+20721,10463,
+20722,10464,
+20723,3536,
+20724,10465,
+20725,2170,
+20726,10466,
+20727,10467,
+20728,10468,
+20729,8065,
+20730,10469,
+20731,3014,
+20732,10470,
+20733,10471,
+20734,10472,
+20735,10473,
+20736,8720,
+20737,10474,
+20738,8911,
+20739,10475,
+20740,8723,
+20741,10476,
+20742,4839,
+20743,4844,
+20744,8164,
+20745,8080,
+20746,10477,
+20747,4845,
+20748,10478,
+20749,10479,
+20750,10480,
+20751,10481,
+20752,8918,
+20753,10482,
+20754,3264,
+20755,10483,
+20756,8912,
+20757,8910,
+20758,10484,
+20759,10485,
+20760,9857,
+20761,10486,
+20762,10487,
+20763,10488,
+20764,10489,
+20765,10490,
+20766,10491,
+20767,7798,
+20768,10492,
+20769,2503,
+20770,10493,
+20771,10494,
+20772,10495,
+20773,10496,
+20774,10497,
+20775,10498,
+20776,10499,
+20777,10500,
+20778,8753,
+20779,10501,
+20780,10502,
+20781,10503,
+20782,10504,
+20783,10505,
+20784,10506,
+20785,10507,
+20786,7827,
+20787,10508,
+20788,10509,
+20789,10510,
+20790,10511,
+20791,8914,
+20792,10512,
+20793,10513,
+20794,8919,
+20795,8917,
+20796,8913,
+20797,10514,
+20798,10515,
+20799,1592,
+20800,4697,
+20801,4365,
+20802,10516,
+20803,4333,
+20804,4001,
+20805,1289,
+20806,4472,
+20807,10517,
+20808,3893,
+20809,1851,
+20810,10518,
+20811,2392,
+20812,10519,
+20813,2791,
+20814,10520,
+20815,10521,
+20816,10522,
+20817,1553,
+20818,7909,
+20819,10523,
+20820,3700,
+20821,4866,
+20822,4868,
+20823,10524,
+20824,10525,
+20825,10526,
+20826,1428,
+20827,10527,
+20828,1524,
+20829,10528,
+20830,10529,
+20831,10530,
+20832,10531,
+20833,10532,
+20834,2259,
+20835,10533,
+20836,10534,
+20837,3270,
+20838,10535,
+20839,10536,
+20840,3206,
+20841,8229,
+20842,10537,
+20843,982,
+20844,1796,
+20845,2626,
+20846,4854,
+20847,10538,
+20848,2471,
+20849,1803,
+20850,10539,
+20851,1841,
+20852,3990,
+20853,1121,
+20854,3075,
+20855,2318,
+20856,1477,
+20857,4645,
+20858,10540,
+20859,4129,
+20860,2137,
+20861,3445,
+20862,10541,
+20863,10542,
+20864,2096,
+20865,4858,
+20866,4765,
+20867,10543,
+20868,10544,
+20869,2877,
+20870,10545,
+20871,10546,
+20872,1743,
+20873,3224,
+20874,10547,
+20875,10548,
+20876,1192,
+20877,4380,
+20878,10549,
+20879,10550,
+20880,10551,
+20881,10552,
+20882,2741,
+20883,10553,
+20884,10554,
+20885,2790,
+20886,4884,
+20887,3258,
+20888,10555,
+20889,3967,
+20890,10556,
+20891,2347,
+20892,2922,
+20893,10557,
+20894,10558,
+20895,10559,
+20896,1843,
+20897,10560,
+20898,4885,
+20899,10561,
+20900,4332,
+20901,4886,
+20902,10562,
+20903,10563,
+20904,10564,
+20905,10565,
+20906,10566,
+20907,4879,
+20908,1515,
+20909,10567,
+20910,10568,
+20911,1672,
+20912,1122,
+20913,4880,
+20914,1290,
+20915,2341,
+20916,10569,
+20917,2435,
+20918,4152,
+20919,2511,
+20920,10570,
+20921,10571,
+20922,10572,
+20923,1522,
+20924,4882,
+20925,4881,
+20926,10573,
+20927,10574,
+20928,2282,
+20929,10575,
+20930,10576,
+20931,10577,
+20932,3071,
+20933,10578,
+20934,4633,
+20935,4883,
+20936,10579,
+20937,2562,
+20938,10580,
+20939,1491,
+20940,2609,
+20941,7887,
+20942,10581,
+20943,2152,
+20944,10582,
+20945,1368,
+20946,10583,
+20947,10584,
+20948,10585,
+20949,10586,
+20950,10587,
+20951,10588,
+20952,10589,
+20953,10590,
+20954,10591,
+20955,2598,
+20956,10592,
+20957,2912,
+20958,10593,
+20959,10594,
+20960,2091,
+20961,1615,
+20962,10595,
+20963,10596,
+20964,1676,
+20965,10597,
+20966,10598,
+20967,10599,
+20968,10600,
+20969,10601,
+20970,10602,
+20971,4864,
+20972,10603,
+20973,3037,
+20974,10604,
+20975,2362,
+20976,2016,
+20977,8153,
+20978,10605,
+20979,1451,
+20980,10606,
+20981,5017,
+20982,4002,
+20983,10607,
+20984,3690,
+20985,967,
+20986,1307,
+20987,2060,
+20988,5018,
+20989,1894,
+20990,10608,
+20991,4391,
+20992,1431,
+20993,1492,
+20994,4748,
+20995,3243,
+20996,10609,
+20997,10610,
+20998,1651,
+20999,3149,
+21000,4749,
+21001,10611,
+21002,2364,
+21003,10612,
+21004,10613,
+21005,5003,
+21006,4750,
+21007,10614,
+21008,10615,
+21009,3991,
+21010,1987,
+21011,10616,
+21012,10617,
+21013,10618,
+21014,6510,
+21015,2585,
+21016,2622,
+21017,4405,
+21018,1744,
+21019,1335,
+21020,10619,
+21021,1306,
+21022,10620,
+21023,10621,
+21024,3319,
+21025,10622,
+21026,10623,
+21027,10624,
+21028,2961,
+21029,10625,
+21030,10626,
+21031,10627,
+21032,2970,
+21033,2534,
+21034,10628,
+21035,1113,
+21036,10629,
+21037,4751,
+21038,1831,
+21039,10630,
+21040,1438,
+21041,10631,
+21042,10632,
+21043,4752,
+21044,10633,
+21045,10634,
+21046,4549,
+21047,3479,
+21048,3210,
+21049,3307,
+21050,1359,
+21051,2393,
+21052,10635,
+21053,1869,
+21054,10636,
+21055,4753,
+21056,4754,
+21057,1574,
+21058,2100,
+21059,3645,
+21060,8904,
+21061,10637,
+21062,10638,
+21063,8803,
+21064,10639,
+21065,10640,
+21066,3940,
+21067,9859,
+21068,4755,
+21069,3117,
+21070,10641,
+21071,10642,
+21072,1833,
+21073,2164,
+21074,10643,
+21075,10644,
+21076,3633,
+21077,10645,
+21078,3049,
+21079,10646,
+21080,10647,
+21081,10648,
+21082,10649,
+21083,7959,
+21084,4758,
+21085,10650,
+21086,4756,
+21087,10651,
+21088,10652,
+21089,4757,
+21090,10653,
+21091,10654,
+21092,10655,
+21093,1033,
+21094,10656,
+21095,2326,
+21096,10657,
+21097,3386,
+21098,2151,
+21099,10658,
+21100,10659,
+21101,10660,
+21102,7979,
+21103,1708,
+21104,10661,
+21105,10662,
+21106,1769,
+21107,10663,
+21108,8906,
+21109,7833,
+21110,10664,
+21111,10665,
+21112,10666,
+21113,10667,
+21114,10668,
+21115,10669,
+21116,10670,
+21117,4760,
+21118,10671,
+21119,2204,
+21120,10672,
+21121,4762,
+21122,4761,
+21123,8015,
+21124,10673,
+21125,10674,
+21126,10675,
+21127,8143,
+21128,3005,
+21129,8246,
+21130,7994,
+21131,10676,
+21132,8905,
+21133,8089,
+21134,10677,
+21135,10678,
+21136,4763,
+21137,8053,
+21138,10679,
+21139,4764,
+21140,10680,
+21141,10681,
+21142,10682,
+21143,10683,
+21144,10684,
+21145,10685,
+21146,10686,
+21147,2543,
+21148,10687,
+21149,3211,
+21150,1015,
+21151,1791,
+21152,2118,
+21153,3840,
+21154,5005,
+21155,2588,
+21156,10688,
+21157,10689,
+21158,10690,
+21159,10691,
+21160,1518,
+21161,4601,
+21162,2925,
+21163,2218,
+21164,5006,
+21165,5007,
+21166,10692,
+21167,10693,
+21168,10694,
+21169,2531,
+21170,2257,
+21171,2488,
+21172,10695,
+21173,10696,
+21174,10697,
+21175,10698,
+21176,10699,
+21177,10700,
+21178,10701,
+21179,10702,
+21180,10703,
+21181,10704,
+21182,5008,
+21183,3421,
+21184,10705,
+21185,8126,
+21186,10706,
+21187,1137,
+21188,10707,
+21189,10708,
+21190,10709,
+21191,4263,
+21192,10710,
+21193,2792,
+21194,10711,
+21195,4052,
+21196,10712,
+21197,10713,
+21198,10714,
+21199,10715,
+21200,5010,
+21201,10716,
+21202,2496,
+21203,10717,
+21204,10718,
+21205,7885,
+21206,5011,
+21207,10719,
+21208,2366,
+21209,8617,
+21210,10720,
+21211,8678,
+21212,10721,
+21213,8487,
+21214,8195,
+21215,2847,
+21216,10722,
+21217,10723,
+21218,8498,
+21219,10724,
+21220,3159,
+21221,10725,
+21222,10726,
+21223,10727,
+21224,10728,
+21225,10729,
+21226,10730,
+21227,10731,
+21228,10732,
+21229,10733,
+21230,10734,
+21231,10735,
+21232,5012,
+21233,8995,
+21234,10736,
+21235,10737,
+21236,10738,
+21237,8209,
+21238,10739,
+21239,10740,
+21240,8437,
+21241,4860,
+21242,3344,
+21243,10741,
+21244,10742,
+21245,10743,
+21246,1805,
+21247,3839,
+21248,4363,
+21249,10744,
+21250,10745,
+21251,10746,
+21252,10747,
+21253,1031,
+21254,1365,
+21255,10748,
+21256,4004,
+21257,10749,
+21258,10750,
+21259,10751,
+21260,10752,
+21261,4861,
+21262,10753,
+21263,5301,
+21264,4863,
+21265,10754,
+21266,10755,
+21267,10756,
+21268,10757,
+21269,4710,
+21270,1988,
+21271,1050,
+21272,10758,
+21273,1276,
+21274,4740,
+21275,10759,
+21276,10760,
+21277,4372,
+21278,10761,
+21279,10762,
+21280,2180,
+21281,2428,
+21282,10763,
+21283,3880,
+21284,10764,
+21285,10765,
+21286,4742,
+21287,10766,
+21288,10767,
+21289,10768,
+21290,1640,
+21291,10769,
+21292,10770,
+21293,8901,
+21294,4743,
+21295,8030,
+21296,10771,
+21297,8902,
+21298,10772,
+21299,10773,
+21300,10774,
+21301,10775,
+21302,10776,
+21303,10777,
+21304,10778,
+21305,3012,
+21306,3189,
+21307,4164,
+21308,10779,
+21309,10780,
+21310,4744,
+21311,2887,
+21312,8431,
+21313,3397,
+21314,10781,
+21315,3108,
+21316,10782,
+21317,4700,
+21318,10783,
+21319,3382,
+21320,3830,
+21321,2033,
+21322,1014,
+21323,10784,
+21324,10785,
+21325,10786,
+21326,1983,
+21327,3960,
+21328,10787,
+21329,1049,
+21330,4673,
+21331,4636,
+21332,8656,
+21333,1414,
+21334,2715,
+21335,2866,
+21336,10788,
+21337,10789,
+21338,1136,
+21339,10790,
+21340,1150,
+21341,10791,
+21342,1102,
+21343,5370,
+21344,4445,
+21345,2357,
+21346,2643,
+21347,4747,
+21348,2648,
+21349,10792,
+21350,4746,
+21351,3811,
+21352,10793,
+21353,4946,
+21354,10794,
+21355,3791,
+21356,10795,
+21357,10796,
+21358,4714,
+21359,2739,
+21360,4230,
+21361,3762,
+21362,10797,
+21363,2087,
+21364,3215,
+21365,2680,
+21366,10798,
+21367,2332,
+21368,3969,
+21369,10799,
+21370,4947,
+21371,10800,
+21372,10801,
+21373,10802,
+21374,10803,
+21375,3169,
+21376,10804,
+21377,10805,
+21378,1228,
+21379,10806,
+21380,1585,
+21381,3663,
+21382,2533,
+21383,10807,
+21384,10808,
+21385,2530,
+21386,10809,
+21387,4066,
+21388,4106,
+21389,4733,
+21390,10810,
+21391,10811,
+21392,10812,
+21393,10813,
+21394,10814,
+21395,10815,
+21396,10816,
+21397,1189,
+21398,10817,
+21399,10818,
+21400,2512,
+21401,8897,
+21402,1960,
+21403,10819,
+21404,10820,
+21405,4734,
+21406,10821,
+21407,4336,
+21408,7780,
+21409,10822,
+21410,3918,
+21411,4735,
+21412,10823,
+21413,4736,
+21414,3888,
+21415,10824,
+21416,1309,
+21417,2294,
+21418,10825,
+21419,10826,
+21420,10827,
+21421,8697,
+21422,4737,
+21423,10828,
+21424,10829,
+21425,10830,
+21426,8208,
+21427,10831,
+21428,8898,
+21429,10832,
+21430,5020,
+21431,10833,
+21432,10834,
+21433,10835,
+21434,10836,
+21435,3200,
+21436,10837,
+21437,10838,
+21438,10839,
+21439,3909,
+21440,10840,
+21441,3289,
+21442,1173,
+21443,7770,
+21444,10841,
+21445,10842,
+21446,10843,
+21447,10844,
+21448,4283,
+21449,1197,
+21450,2083,
+21451,4278,
+21452,3488,
+21453,1617,
+21454,10845,
+21455,10846,
+21456,10847,
+21457,1599,
+21458,10848,
+21459,10849,
+21460,3452,
+21461,10850,
+21462,3196,
+21463,3443,
+21464,1101,
+21465,4027,
+21466,10851,
+21467,2962,
+21468,10852,
+21469,10853,
+21470,10854,
+21471,5013,
+21472,1503,
+21473,10855,
+21474,7842,
+21475,2407,
+21476,1822,
+21477,2323,
+21478,2614,
+21479,10856,
+21480,5374,
+21481,5373,
+21482,4538,
+21483,2209,
+21484,4474,
+21485,979,
+21486,1506,
+21487,2390,
+21488,3579,
+21489,5371,
+21490,3406,
+21491,4279,
+21492,10857,
+21493,4741,
+21494,4157,
+21495,1916,
+21496,3507,
+21497,3601,
+21498,10858,
+21499,5375,
+21500,1489,
+21501,5372,
+21502,10859,
+21503,10860,
+21504,10861,
+21505,4314,
+21506,10862,
+21507,1273,
+21508,1778,
+21509,10863,
+21510,5378,
+21511,10864,
+21512,1926,
+21513,2077,
+21514,1494,
+21515,10865,
+21516,3677,
+21517,2816,
+21518,1962,
+21519,2527,
+21520,3699,
+21521,3935,
+21522,5376,
+21523,3890,
+21524,10866,
+21525,2663,
+21526,5377,
+21527,2711,
+21528,10867,
+21529,10868,
+21530,10869,
+21531,2348,
+21532,10870,
+21533,2600,
+21534,3709,
+21535,4222,
+21536,1642,
+21537,5385,
+21538,10871,
+21539,5388,
+21540,10872,
+21541,10873,
+21542,1678,
+21543,980,
+21544,1557,
+21545,1649,
+21546,10874,
+21547,1891,
+21548,3664,
+21549,2401,
+21550,3494,
+21551,3091,
+21552,10875,
+21553,4519,
+21554,5389,
+21555,10876,
+21556,3825,
+21557,1240,
+21558,10877,
+21559,10878,
+21560,3851,
+21561,1336,
+21562,10879,
+21563,3798,
+21564,1959,
+21565,10880,
+21566,3824,
+21567,10881,
+21568,4070,
+21569,10882,
+21570,10883,
+21571,5384,
+21572,10884,
+21573,10885,
+21574,1399,
+21575,10886,
+21576,1263,
+21577,10887,
+21578,1761,
+21579,5379,
+21580,10888,
+21581,10889,
+21582,10890,
+21583,10891,
+21584,2856,
+21585,10892,
+21586,5380,
+21587,5381,
+21588,5382,
+21589,2940,
+21590,5383,
+21591,5386,
+21592,4340,
+21593,5387,
+21594,10893,
+21595,3127,
+21596,3815,
+21597,10894,
+21598,10895,
+21599,10896,
+21600,10897,
+21601,10898,
+21602,2875,
+21603,10899,
+21604,5394,
+21605,10900,
+21606,5399,
+21607,10901,
+21608,4571,
+21609,10902,
+21610,10903,
+21611,10904,
+21612,10905,
+21613,10906,
+21614,10907,
+21615,10908,
+21616,10909,
+21617,5393,
+21618,5410,
+21619,3781,
+21620,10910,
+21621,1918,
+21622,5398,
+21623,5392,
+21624,2975,
+21625,10911,
+21626,10912,
+21627,3364,
+21628,1963,
+21629,2817,
+21630,10913,
+21631,10914,
+21632,2310,
+21633,10915,
+21634,5390,
+21635,10916,
+21636,5397,
+21637,10917,
+21638,2969,
+21639,10918,
+21640,10919,
+21641,10920,
+21642,10921,
+21643,4423,
+21644,1924,
+21645,10922,
+21646,2299,
+21647,4258,
+21648,1723,
+21649,10923,
+21650,4579,
+21651,10924,
+21652,5391,
+21653,1815,
+21654,2356,
+21655,10925,
+21656,10926,
+21657,2629,
+21658,5395,
+21659,5396,
+21660,10927,
+21661,5400,
+21662,10928,
+21663,10929,
+21664,10930,
+21665,10931,
+21666,10932,
+21667,5411,
+21668,5421,
+21669,10933,
+21670,5407,
+21671,5406,
+21672,4646,
+21673,5419,
+21674,5420,
+21675,5991,
+21676,4142,
+21677,5402,
+21678,10934,
+21679,2358,
+21680,10935,
+21681,4382,
+21682,10936,
+21683,2389,
+21684,5404,
+21685,10937,
+21686,10938,
+21687,10939,
+21688,3897,
+21689,10940,
+21690,10941,
+21691,5413,
+21692,9069,
+21693,4083,
+21694,10942,
+21695,5414,
+21696,946,
+21697,3030,
+21698,5403,
+21699,10943,
+21700,1948,
+21701,10944,
+21702,1566,
+21703,3724,
+21704,1879,
+21705,4376,
+21706,10945,
+21707,10946,
+21708,5415,
+21709,3929,
+21710,944,
+21711,5423,
+21712,5401,
+21713,4079,
+21714,5405,
+21715,5408,
+21716,5409,
+21717,5412,
+21718,10947,
+21719,1982,
+21720,10948,
+21721,5416,
+21722,5417,
+21723,10949,
+21724,5418,
+21725,5422,
+21726,5424,
+21727,4249,
+21728,10950,
+21729,8775,
+21730,10951,
+21731,10952,
+21732,10953,
+21733,1762,
+21734,2935,
+21735,5426,
+21736,3347,
+21737,2545,
+21738,2855,
+21739,10954,
+21740,10955,
+21741,2411,
+21742,3941,
+21743,10956,
+21744,10957,
+21745,10958,
+21746,4477,
+21747,5430,
+21748,10959,
+21749,10960,
+21750,10961,
+21751,10962,
+21752,10963,
+21753,10964,
+21754,1151,
+21755,10965,
+21756,1942,
+21757,5428,
+21758,10966,
+21759,5009,
+21760,10967,
+21761,4109,
+21762,10968,
+21763,10969,
+21764,9068,
+21765,10970,
+21766,3561,
+21767,1344,
+21768,10971,
+21769,945,
+21770,10972,
+21771,10973,
+21772,10974,
+21773,10975,
+21774,10976,
+21775,5433,
+21776,3609,
+21777,5434,
+21778,10977,
+21779,10978,
+21780,5429,
+21781,10979,
+21782,10980,
+21783,10981,
+21784,10982,
+21785,10983,
+21786,10984,
+21787,5425,
+21788,10985,
+21789,10986,
+21790,10987,
+21791,10988,
+21792,5427,
+21793,10989,
+21794,5431,
+21795,5432,
+21796,2002,
+21797,10990,
+21798,10991,
+21799,5435,
+21800,10992,
+21801,10993,
+21802,5436,
+21803,10994,
+21804,1976,
+21805,10995,
+21806,3442,
+21807,3767,
+21808,5453,
+21809,1231,
+21810,10996,
+21811,5452,
+21812,10997,
+21813,10998,
+21814,10999,
+21815,5447,
+21816,11000,
+21817,11001,
+21818,11002,
+21819,11003,
+21820,5446,
+21821,11004,
+21822,3722,
+21823,5444,
+21824,11005,
+21825,5442,
+21826,11006,
+21827,2397,
+21828,4641,
+21829,11007,
+21830,3333,
+21831,11008,
+21832,11009,
+21833,5440,
+21834,940,
+21835,11010,
+21836,11011,
+21837,11012,
+21838,11013,
+21839,8604,
+21840,5445,
+21841,11014,
+21842,11015,
+21843,8393,
+21844,11016,
+21845,5443,
+21846,5448,
+21847,11017,
+21848,11018,
+21849,11019,
+21850,11020,
+21851,11021,
+21852,5454,
+21853,11022,
+21854,8688,
+21855,11023,
+21856,11024,
+21857,1637,
+21858,11025,
+21859,11026,
+21860,3008,
+21861,3311,
+21862,2461,
+21863,5437,
+21864,11027,
+21865,11028,
+21866,2943,
+21867,11029,
+21868,4730,
+21869,5441,
+21870,2905,
+21871,11030,
+21872,11031,
+21873,11032,
+21874,11033,
+21875,11034,
+21876,11035,
+21877,5449,
+21878,5450,
+21879,5451,
+21880,3952,
+21881,11036,
+21882,11037,
+21883,5466,
+21884,3639,
+21885,11038,
+21886,5463,
+21887,11039,
+21888,2355,
+21889,5461,
+21890,3784,
+21891,5457,
+21892,3327,
+21893,11040,
+21894,11041,
+21895,2457,
+21896,5460,
+21897,1956,
+21898,1895,
+21899,5455,
+21900,11042,
+21901,11043,
+21902,11044,
+21903,5438,
+21904,11045,
+21905,5465,
+21906,11046,
+21907,11047,
+21908,5470,
+21909,11048,
+21910,11049,
+21911,11050,
+21912,1328,
+21913,5471,
+21914,11051,
+21915,11052,
+21916,3871,
+21917,1919,
+21918,11053,
+21919,5462,
+21920,11054,
+21921,11055,
+21922,11056,
+21923,11057,
+21924,11058,
+21925,11059,
+21926,11060,
+21927,4037,
+21928,11061,
+21929,11062,
+21930,8459,
+21931,11063,
+21932,8414,
+21933,11064,
+21934,7850,
+21935,11065,
+21936,11066,
+21937,5458,
+21938,8748,
+21939,4414,
+21940,11067,
+21941,5439,
+21942,11068,
+21943,2984,
+21944,11069,
+21945,5459,
+21946,11070,
+21947,4316,
+21948,11071,
+21949,5468,
+21950,5469,
+21951,11072,
+21952,11073,
+21953,11074,
+21954,11075,
+21955,11076,
+21956,5482,
+21957,4012,
+21958,8408,
+21959,8896,
+21960,11077,
+21961,5474,
+21962,11078,
+21963,11079,
+21964,5487,
+21965,5488,
+21966,8303,
+21967,11080,
+21968,11081,
+21969,5476,
+21970,5456,
+21971,3293,
+21972,5479,
+21973,11082,
+21974,5464,
+21975,11083,
+21976,11084,
+21977,11085,
+21978,8609,
+21979,11086,
+21980,3423,
+21981,5481,
+21982,11087,
+21983,5467,
+21984,11088,
+21985,3802,
+21986,11089,
+21987,3512,
+21988,5491,
+21989,5484,
+21990,5480,
+21991,11090,
+21992,5489,
+21993,9081,
+21994,5472,
+21995,5477,
+21996,5478,
+21997,11091,
+21998,11092,
+21999,5483,
+22000,11093,
+22001,11094,
+22002,5485,
+22003,5486,
+22004,11095,
+22005,5490,
+22006,9074,
+22007,5473,
+22008,11096,
+22009,11097,
+22010,11098,
+22011,11099,
+22012,11100,
+22013,3529,
+22014,5499,
+22015,11101,
+22016,5500,
+22017,5496,
+22018,11102,
+22019,11103,
+22020,11104,
+22021,11105,
+22022,8554,
+22023,11106,
+22024,5494,
+22025,2113,
+22026,11107,
+22027,11108,
+22028,5495,
+22029,9084,
+22030,1725,
+22031,4731,
+22032,11109,
+22033,11110,
+22034,11111,
+22035,11112,
+22036,8368,
+22037,11113,
+22038,9082,
+22039,7796,
+22040,4021,
+22041,11114,
+22042,11115,
+22043,2710,
+22044,9079,
+22045,11116,
+22046,5493,
+22047,5475,
+22048,11117,
+22049,11118,
+22050,11119,
+22051,5498,
+22052,5497,
+22053,11120,
+22054,11121,
+22055,5501,
+22056,11122,
+22057,8012,
+22058,11123,
+22059,11124,
+22060,5506,
+22061,5502,
+22062,9080,
+22063,8655,
+22064,9064,
+22065,4597,
+22066,1237,
+22067,11125,
+22068,4681,
+22069,9073,
+22070,3504,
+22071,11126,
+22072,9065,
+22073,5504,
+22074,11127,
+22075,3850,
+22076,11128,
+22077,11129,
+22078,11130,
+22079,1936,
+22080,11131,
+22081,9844,
+22082,11132,
+22083,11133,
+22084,11134,
+22085,11135,
+22086,11136,
+22087,11137,
+22088,11138,
+22089,11139,
+22090,11140,
+22091,11141,
+22092,5511,
+22093,5507,
+22094,4148,
+22095,11142,
+22096,11143,
+22097,11144,
+22098,11145,
+22099,11146,
+22100,5512,
+22101,11147,
+22102,11148,
+22103,5505,
+22104,5503,
+22105,5509,
+22106,11149,
+22107,11150,
+22108,5510,
+22109,9071,
+22110,11151,
+22111,11152,
+22112,9072,
+22113,11153,
+22114,5508,
+22115,11154,
+22116,5514,
+22117,9078,
+22118,9075,
+22119,11155,
+22120,3094,
+22121,4706,
+22122,4398,
+22123,5516,
+22124,3424,
+22125,11156,
+22126,11157,
+22127,9087,
+22128,11158,
+22129,5515,
+22130,9076,
+22131,11159,
+22132,8373,
+22133,11160,
+22134,1724,
+22135,11161,
+22136,7899,
+22137,9842,
+22138,11162,
+22139,5517,
+22140,5518,
+22141,11163,
+22142,11164,
+22143,11165,
+22144,9070,
+22145,11166,
+22146,11167,
+22147,11168,
+22148,11169,
+22149,5519,
+22150,5513,
+22151,8631,
+22152,11170,
+22153,11171,
+22154,11172,
+22155,11173,
+22156,9077,
+22157,11174,
+22158,1910,
+22159,3642,
+22160,11175,
+22161,11176,
+22162,11177,
+22163,5520,
+22164,11178,
+22165,9090,
+22166,11179,
+22167,11180,
+22168,11181,
+22169,8350,
+22170,11182,
+22171,11183,
+22172,11184,
+22173,11185,
+22174,11186,
+22175,11187,
+22176,11188,
+22177,11189,
+22178,11190,
+22179,3942,
+22180,11191,
+22181,11192,
+22182,9067,
+22183,11193,
+22184,8249,
+22185,11194,
+22186,11195,
+22187,11196,
+22188,11197,
+22189,11198,
+22190,9887,
+22191,5521,
+22192,11199,
+22193,11200,
+22194,11201,
+22195,9085,
+22196,8693,
+22197,11202,
+22198,9089,
+22199,3229,
+22200,11203,
+22201,11204,
+22202,11205,
+22203,11206,
+22204,2193,
+22205,11207,
+22206,11208,
+22207,11209,
+22208,9083,
+22209,9086,
+22210,8652,
+22211,11210,
+22212,11211,
+22213,8923,
+22214,11212,
+22215,11213,
+22216,9066,
+22217,9865,
+22218,2869,
+22219,11214,
+22220,9879,
+22221,11215,
+22222,11216,
+22223,11217,
+22224,11218,
+22225,8865,
+22226,11219,
+22227,11220,
+22228,5522,
+22229,11221,
+22230,11222,
+22231,5523,
+22232,11223,
+22233,11224,
+22234,3185,
+22235,3513,
+22236,11225,
+22237,5524,
+22238,2029,
+22239,4716,
+22240,4217,
+22241,5525,
+22242,3702,
+22243,11226,
+22244,1561,
+22245,11227,
+22246,11228,
+22247,11229,
+22248,11230,
+22249,11231,
+22250,11232,
+22251,5527,
+22252,11233,
+22253,4339,
+22254,11234,
+22255,11235,
+22256,2450,
+22257,1364,
+22258,11236,
+22259,11237,
+22260,3766,
+22261,5526,
+22262,11238,
+22263,11239,
+22264,11240,
+22265,5528,
+22266,1829,
+22267,11241,
+22268,11242,
+22269,1875,
+22270,3693,
+22271,5529,
+22272,11243,
+22273,11244,
+22274,11245,
+22275,3059,
+22276,5530,
+22277,11246,
+22278,4341,
+22279,9091,
+22280,3201,
+22281,5532,
+22282,5531,
+22283,7997,
+22284,11247,
+22285,8591,
+22286,11248,
+22287,11249,
+22288,11250,
+22289,11251,
+22290,8774,
+22291,8776,
+22292,11252,
+22293,11253,
+22294,8574,
+22295,11254,
+22296,8576,
+22297,11255,
+22298,11256,
+22299,11257,
+22300,5533,
+22301,11258,
+22302,11259,
+22303,3698,
+22304,11260,
+22305,11261,
+22306,11262,
+22307,3388,
+22308,11263,
+22309,11264,
+22310,11265,
+22311,11266,
+22312,4381,
+22313,5031,
+22314,5033,
+22315,11267,
+22316,5032,
+22317,1856,
+22318,5036,
+22319,5037,
+22320,1465,
+22321,11268,
+22322,11269,
+22323,5034,
+22324,11270,
+22325,11271,
+22326,11272,
+22327,11273,
+22328,11274,
+22329,5035,
+22330,1222,
+22331,5039,
+22332,11275,
+22333,11276,
+22334,2061,
+22335,11277,
+22336,4534,
+22337,11278,
+22338,5040,
+22339,11279,
+22340,11280,
+22341,11281,
+22342,11282,
+22343,2344,
+22344,11283,
+22345,11284,
+22346,1624,
+22347,11285,
+22348,5024,
+22349,3585,
+22350,2367,
+22351,1994,
+22352,4693,
+22353,2400,
+22354,11286,
+22355,11287,
+22356,11288,
+22357,11289,
+22358,11290,
+22359,2422,
+22360,11291,
+22361,11292,
+22362,2132,
+22363,3590,
+22364,5038,
+22365,990,
+22366,3834,
+22367,1653,
+22368,4630,
+22369,3041,
+22370,11293,
+22371,11294,
+22372,2447,
+22373,11295,
+22374,3596,
+22375,11296,
+22376,5047,
+22377,5041,
+22378,3033,
+22379,5043,
+22380,11297,
+22381,5048,
+22382,11298,
+22383,3000,
+22384,11299,
+22385,11300,
+22386,11301,
+22387,5050,
+22388,11302,
+22389,11303,
+22390,5049,
+22391,2381,
+22392,11304,
+22393,11305,
+22394,11306,
+22395,5046,
+22396,5045,
+22397,11307,
+22398,11308,
+22399,11309,
+22400,11310,
+22401,11311,
+22402,1340,
+22403,2455,
+22404,2633,
+22405,5042,
+22406,5044,
+22407,11312,
+22408,11313,
+22409,11314,
+22410,11315,
+22411,3992,
+22412,5053,
+22413,11316,
+22414,11317,
+22415,11318,
+22416,11319,
+22417,11320,
+22418,2504,
+22419,5058,
+22420,11321,
+22421,11322,
+22422,11323,
+22423,11324,
+22424,11325,
+22425,11326,
+22426,11327,
+22427,1569,
+22428,11328,
+22429,11329,
+22430,11330,
+22431,11331,
+22432,5059,
+22433,5026,
+22434,1809,
+22435,4334,
+22436,5052,
+22437,11332,
+22438,2398,
+22439,5056,
+22440,11333,
+22441,5025,
+22442,11334,
+22443,1479,
+22444,11335,
+22445,5051,
+22446,2418,
+22447,11336,
+22448,11337,
+22449,11338,
+22450,5054,
+22451,11339,
+22452,5057,
+22453,11340,
+22454,11341,
+22455,11342,
+22456,5065,
+22457,11343,
+22458,11344,
+22459,11345,
+22460,11346,
+22461,11347,
+22462,11348,
+22463,11349,
+22464,11350,
+22465,11351,
+22466,1786,
+22467,942,
+22468,11352,
+22469,11353,
+22470,11354,
+22471,11355,
+22472,11356,
+22473,11357,
+22474,11358,
+22475,2712,
+22476,11359,
+22477,11360,
+22478,1260,
+22479,5055,
+22480,11361,
+22481,11362,
+22482,5064,
+22483,11363,
+22484,3057,
+22485,5060,
+22486,11364,
+22487,11365,
+22488,5061,
+22489,5063,
+22490,5062,
+22491,11366,
+22492,11367,
+22493,5070,
+22494,11368,
+22495,4311,
+22496,1153,
+22497,9002,
+22498,11369,
+22499,11370,
+22500,5069,
+22501,11371,
+22502,11372,
+22503,11373,
+22504,11374,
+22505,11375,
+22506,11376,
+22507,11377,
+22508,11378,
+22509,5074,
+22510,11379,
+22511,5067,
+22512,11380,
+22513,11381,
+22514,11382,
+22515,11383,
+22516,5066,
+22517,11384,
+22518,11385,
+22519,8843,
+22520,5068,
+22521,2977,
+22522,2062,
+22523,11386,
+22524,11387,
+22525,5073,
+22526,11388,
+22527,11389,
+22528,5075,
+22529,11390,
+22530,3606,
+22531,11391,
+22532,11392,
+22533,8069,
+22534,1552,
+22535,5196,
+22536,11393,
+22537,11394,
+22538,8997,
+22539,5071,
+22540,11395,
+22541,5072,
+22542,11396,
+22543,11397,
+22544,11398,
+22545,3122,
+22546,11399,
+22547,11400,
+22548,11401,
+22549,1576,
+22550,9004,
+22551,11402,
+22552,11403,
+22553,5077,
+22554,11404,
+22555,11405,
+22556,11406,
+22557,9006,
+22558,5076,
+22559,11407,
+22560,5079,
+22561,1037,
+22562,11408,
+22563,11409,
+22564,1453,
+22565,11410,
+22566,11411,
+22567,11412,
+22568,11413,
+22569,11414,
+22570,2365,
+22571,11415,
+22572,11416,
+22573,11417,
+22574,11418,
+22575,8709,
+22576,4104,
+22577,7736,
+22578,11419,
+22579,11420,
+22580,7795,
+22581,1537,
+22582,11421,
+22583,11422,
+22584,11423,
+22585,11424,
+22586,11425,
+22587,11426,
+22588,11427,
+22589,11428,
+22590,11429,
+22591,11430,
+22592,11431,
+22593,11432,
+22594,11433,
+22595,11434,
+22596,5078,
+22597,11435,
+22598,11436,
+22599,11437,
+22600,11438,
+22601,11439,
+22602,8163,
+22603,9017,
+22604,3567,
+22605,6563,
+22606,11440,
+22607,9003,
+22608,11441,
+22609,3537,
+22610,9005,
+22611,11442,
+22612,3571,
+22613,11443,
+22614,11444,
+22615,8575,
+22616,3604,
+22617,11445,
+22618,11446,
+22619,11447,
+22620,11448,
+22621,11449,
+22622,3286,
+22623,11450,
+22624,11451,
+22625,11452,
+22626,8615,
+22627,11453,
+22628,9007,
+22629,5080,
+22630,11454,
+22631,11455,
+22632,11456,
+22633,11457,
+22634,11458,
+22635,3649,
+22636,5081,
+22637,11459,
+22638,11460,
+22639,11461,
+22640,11462,
+22641,11463,
+22642,11464,
+22643,11465,
+22644,11466,
+22645,7805,
+22646,11467,
+22647,11468,
+22648,11469,
+22649,8406,
+22650,11470,
+22651,11471,
+22652,11472,
+22653,11473,
+22654,5027,
+22655,11474,
+22656,5085,
+22657,5082,
+22658,11475,
+22659,2274,
+22660,11476,
+22661,3474,
+22662,11477,
+22663,11478,
+22664,11479,
+22665,5083,
+22666,7874,
+22667,11480,
+22668,11481,
+22669,11482,
+22670,11483,
+22671,11484,
+22672,11485,
+22673,11486,
+22674,3331,
+22675,2844,
+22676,11487,
+22677,11488,
+22678,11489,
+22679,11490,
+22680,11491,
+22681,3130,
+22682,5084,
+22683,11492,
+22684,8882,
+22685,11493,
+22686,4409,
+22687,4017,
+22688,11494,
+22689,11495,
+22690,11496,
+22691,11497,
+22692,11498,
+22693,11499,
+22694,11500,
+22695,11501,
+22696,2830,
+22697,1556,
+22698,11502,
+22699,11503,
+22700,11504,
+22701,11505,
+22702,7903,
+22703,11506,
+22704,11507,
+22705,11508,
+22706,11509,
+22707,7929,
+22708,11510,
+22709,11511,
+22710,11512,
+22711,11513,
+22712,11514,
+22713,11515,
+22714,11516,
+22715,8409,
+22716,5028,
+22717,11517,
+22718,8157,
+22719,11518,
+22720,11519,
+22721,1091,
+22722,11520,
+22723,11521,
+22724,11522,
+22725,5029,
+22726,11523,
+22727,8551,
+22728,11524,
+22729,11525,
+22730,11526,
+22731,11527,
+22732,11528,
+22733,11529,
+22734,11530,
+22735,11531,
+22736,11532,
+22737,5030,
+22738,11533,
+22739,8685,
+22740,11534,
+22741,1909,
+22742,11535,
+22743,11536,
+22744,8199,
+22745,8998,
+22746,9001,
+22747,11537,
+22748,11538,
+22749,11539,
+22750,8018,
+22751,8251,
+22752,9000,
+22753,11540,
+22754,8999,
+22755,11541,
+22756,3227,
+22757,11542,
+22758,11543,
+22759,11544,
+22760,11545,
+22761,7723,
+22762,11546,
+22763,3414,
+22764,3236,
+22765,11547,
+22766,4624,
+22767,8878,
+22768,3378,
+22769,11548,
+22770,11549,
+22771,2388,
+22772,11550,
+22773,11551,
+22774,1967,
+22775,11552,
+22776,11553,
+22777,4163,
+22778,8009,
+22779,11554,
+22780,11555,
+22781,8504,
+22782,11556,
+22783,11557,
+22784,11558,
+22785,11559,
+22786,5660,
+22787,11560,
+22788,1321,
+22789,11561,
+22790,11562,
+22791,1057,
+22792,11563,
+22793,11564,
+22794,11565,
+22795,11566,
+22796,11567,
+22797,1711,
+22798,11568,
+22799,3889,
+22800,11569,
+22801,11570,
+22802,11571,
+22803,11572,
+22804,4859,
+22805,3859,
+22806,3731,
+22807,11573,
+22808,11574,
+22809,4865,
+22810,1567,
+22811,11575,
+22812,4160,
+22813,11576,
+22814,11577,
+22815,1812,
+22816,11578,
+22817,11579,
+22818,8321,
+22819,11580,
+22820,5659,
+22821,5657,
+22822,11581,
+22823,1398,
+22824,11582,
+22825,3647,
+22826,3582,
+22827,1679,
+22828,11583,
+22829,4712,
+22830,4116,
+22831,1906,
+22832,11584,
+22833,3390,
+22834,11585,
+22835,11586,
+22836,3688,
+22837,11587,
+22838,11588,
+22839,4171,
+22840,2417,
+22841,2115,
+22842,1568,
+22843,11589,
+22844,5295,
+22845,11590,
+22846,8060,
+22847,11591,
+22848,11592,
+22849,5296,
+22850,5004,
+22851,11593,
+22852,4098,
+22853,11594,
+22854,11595,
+22855,3077,
+22856,2865,
+22857,1675,
+22858,11596,
+22859,1657,
+22860,11597,
+22861,11598,
+22862,2441,
+22863,4669,
+22864,11599,
+22865,3092,
+22866,11600,
+22867,11601,
+22868,1061,
+22869,5298,
+22870,2178,
+22871,3626,
+22872,5300,
+22873,11602,
+22874,5299,
+22875,11603,
+22876,11604,
+22877,11605,
+22878,11606,
+22879,11607,
+22880,1485,
+22881,11608,
+22882,3350,
+22883,11609,
+22884,11610,
+22885,973,
+22886,11611,
+22887,11612,
+22888,11613,
+22889,9051,
+22890,7902,
+22891,11614,
+22892,8098,
+22893,11615,
+22894,7930,
+22895,11616,
+22896,11617,
+22897,11618,
+22898,11619,
+22899,2927,
+22900,2924,
+22901,11620,
+22902,2863,
+22903,11621,
+22904,2140,
+22905,3570,
+22906,11622,
+22907,11623,
+22908,11624,
+22909,1914,
+22910,11625,
+22911,11626,
+22912,11627,
+22913,6005,
+22914,3266,
+22915,6006,
+22916,3758,
+22917,11628,
+22918,4622,
+22919,1721,
+22920,2703,
+22921,11629,
+22922,3244,
+22923,11630,
+22924,11631,
+22925,6007,
+22926,11632,
+22927,11633,
+22928,11634,
+22929,11635,
+22930,1545,
+22931,2110,
+22932,11636,
+22933,11637,
+22934,4134,
+22935,6011,
+22936,11638,
+22937,2803,
+22938,11639,
+22939,11640,
+22940,11641,
+22941,8877,
+22942,6014,
+22943,11642,
+22944,11643,
+22945,11644,
+22946,11645,
+22947,6010,
+22948,6015,
+22949,3720,
+22950,11646,
+22951,11647,
+22952,1630,
+22953,6008,
+22954,6009,
+22955,6013,
+22956,11648,
+22957,11649,
+22958,2880,
+22959,6018,
+22960,11650,
+22961,11651,
+22962,6017,
+22963,11652,
+22964,11653,
+22965,11654,
+22966,11655,
+22967,11656,
+22968,11657,
+22969,2760,
+22970,11658,
+22971,3069,
+22972,11659,
+22973,11660,
+22974,6020,
+22975,11661,
+22976,11662,
+22977,11663,
+22978,11664,
+22979,11665,
+22980,11666,
+22981,11667,
+22982,2842,
+22983,11668,
+22984,11669,
+22985,11670,
+22986,6012,
+22987,3411,
+22988,11671,
+22989,11672,
+22990,11673,
+22991,11674,
+22992,2228,
+22993,1820,
+22994,6016,
+22995,4000,
+22996,3774,
+22997,11675,
+22998,11676,
+22999,6019,
+23000,6026,
+23001,11677,
+23002,4141,
+23003,11678,
+23004,2171,
+23005,6023,
+23006,11679,
+23007,11680,
+23008,11681,
+23009,11682,
+23010,11683,
+23011,6025,
+23012,11684,
+23013,2492,
+23014,11685,
+23015,11686,
+23016,4179,
+23017,11687,
+23018,11688,
+23019,11689,
+23020,2074,
+23021,11690,
+23022,11691,
+23023,11692,
+23024,11693,
+23025,11694,
+23026,11695,
+23027,11696,
+23028,11697,
+23029,11698,
+23030,11699,
+23031,11700,
+23032,11701,
+23033,6027,
+23034,11702,
+23035,4221,
+23036,11703,
+23037,11704,
+23038,11705,
+23039,4648,
+23040,11706,
+23041,3759,
+23042,11707,
+23043,3727,
+23044,2637,
+23045,6021,
+23046,6022,
+23047,2192,
+23048,6024,
+23049,6029,
+23050,11708,
+23051,11709,
+23052,6028,
+23053,11710,
+23054,11711,
+23055,11712,
+23056,11713,
+23057,6032,
+23058,11714,
+23059,6034,
+23060,11715,
+23061,11716,
+23062,11717,
+23063,11718,
+23064,2898,
+23065,11719,
+23066,11720,
+23067,11721,
+23068,2859,
+23069,11722,
+23070,11723,
+23071,2329,
+23072,3368,
+23073,11724,
+23074,11725,
+23075,6033,
+23076,11726,
+23077,1583,
+23078,11727,
+23079,11728,
+23080,11729,
+23081,2793,
+23082,11730,
+23083,11731,
+23084,11732,
+23085,11733,
+23086,11734,
+23087,11735,
+23088,11736,
+23089,4302,
+23090,6030,
+23091,11737,
+23092,6031,
+23093,11738,
+23094,3197,
+23095,11739,
+23096,11740,
+23097,11741,
+23098,11742,
+23099,11743,
+23100,6039,
+23101,11744,
+23102,11745,
+23103,11746,
+23104,6035,
+23105,8255,
+23106,11747,
+23107,11748,
+23108,11749,
+23109,11750,
+23110,3044,
+23111,11751,
+23112,11752,
+23113,3746,
+23114,6037,
+23115,11753,
+23116,11754,
+23117,11755,
+23118,11756,
+23119,11757,
+23120,11758,
+23121,11759,
+23122,11760,
+23123,11761,
+23124,11762,
+23125,6038,
+23126,11763,
+23127,11764,
+23128,11765,
+23129,11766,
+23130,2046,
+23131,11767,
+23132,11768,
+23133,11769,
+23134,11770,
+23135,11771,
+23136,11772,
+23137,11773,
+23138,6040,
+23139,11774,
+23140,11775,
+23141,11776,
+23142,7950,
+23143,6036,
+23144,11777,
+23145,11778,
+23146,2466,
+23147,11779,
+23148,11780,
+23149,9209,
+23150,11781,
+23151,11782,
+23152,11783,
+23153,11784,
+23154,11785,
+23155,11786,
+23156,4233,
+23157,6041,
+23158,3373,
+23159,6045,
+23160,11787,
+23161,11788,
+23162,6046,
+23163,11789,
+23164,11790,
+23165,11791,
+23166,11792,
+23167,4033,
+23168,11793,
+23169,11794,
+23170,11795,
+23171,11796,
+23172,11797,
+23173,11798,
+23174,11799,
+23175,11800,
+23176,11801,
+23177,11802,
+23178,11803,
+23179,11804,
+23180,11805,
+23181,11806,
+23182,11807,
+23183,11808,
+23184,11809,
+23185,11810,
+23186,2754,
+23187,11811,
+23188,11812,
+23189,11813,
+23190,11814,
+23191,11815,
+23192,11816,
+23193,11817,
+23194,2761,
+23195,6044,
+23196,11818,
+23197,11819,
+23198,11820,
+23199,11821,
+23200,11822,
+23201,11823,
+23202,11824,
+23203,11825,
+23204,11826,
+23205,11827,
+23206,11828,
+23207,9212,
+23208,11829,
+23209,11830,
+23210,6043,
+23211,11831,
+23212,11832,
+23213,11833,
+23214,11834,
+23215,11835,
+23216,11836,
+23217,11837,
+23218,6049,
+23219,3870,
+23220,11838,
+23221,6564,
+23222,11839,
+23223,11840,
+23224,6052,
+23225,11841,
+23226,11842,
+23227,11843,
+23228,11844,
+23229,8297,
+23230,6047,
+23231,11845,
+23232,11846,
+23233,2129,
+23234,3298,
+23235,11847,
+23236,11848,
+23237,11849,
+23238,11850,
+23239,11851,
+23240,11852,
+23241,2088,
+23242,11853,
+23243,11854,
+23244,3904,
+23245,11855,
+23246,11856,
+23247,11857,
+23248,11858,
+23249,11859,
+23250,6050,
+23251,11860,
+23252,6051,
+23253,11861,
+23254,6056,
+23255,9207,
+23256,6058,
+23257,11862,
+23258,11863,
+23259,11864,
+23260,6059,
+23261,11865,
+23262,11866,
+23263,11867,
+23264,6053,
+23265,1462,
+23266,11868,
+23267,6054,
+23268,11869,
+23269,11870,
+23270,6057,
+23271,11871,
+23272,11872,
+23273,2878,
+23274,11873,
+23275,6048,
+23276,11874,
+23277,11875,
+23278,11876,
+23279,11877,
+23280,11878,
+23281,6055,
+23282,11879,
+23283,11880,
+23284,11881,
+23285,9206,
+23286,11882,
+23287,11883,
+23288,11884,
+23289,11885,
+23290,11886,
+23291,9213,
+23292,11887,
+23293,11888,
+23294,11889,
+23295,11890,
+23296,9208,
+23297,11891,
+23298,11892,
+23299,11893,
+23300,11894,
+23301,11895,
+23302,11896,
+23303,11897,
+23304,9210,
+23305,6060,
+23306,11898,
+23307,9214,
+23308,8104,
+23309,11899,
+23310,11900,
+23311,11901,
+23312,11902,
+23313,11903,
+23314,11904,
+23315,11905,
+23316,11906,
+23317,11907,
+23318,6062,
+23319,6061,
+23320,11908,
+23321,9217,
+23322,11909,
+23323,11910,
+23324,11911,
+23325,11912,
+23326,11913,
+23327,11914,
+23328,11915,
+23329,9215,
+23330,11916,
+23331,11917,
+23332,11918,
+23333,11919,
+23334,11920,
+23335,11921,
+23336,11922,
+23337,11923,
+23338,9216,
+23339,11924,
+23340,11925,
+23341,11926,
+23342,11927,
+23343,11928,
+23344,8737,
+23345,11929,
+23346,6063,
+23347,11930,
+23348,4876,
+23349,11931,
+23350,11932,
+23351,6064,
+23352,8482,
+23353,11933,
+23354,11934,
+23355,11935,
+23356,11936,
+23357,11937,
+23358,11938,
+23359,11939,
+23360,6065,
+23361,11940,
+23362,11941,
+23363,11942,
+23364,11943,
+23365,11944,
+23366,11945,
+23367,11946,
+23368,11947,
+23369,11948,
+23370,11949,
+23371,11950,
+23372,9211,
+23373,11951,
+23374,11952,
+23375,11953,
+23376,4656,
+23377,6071,
+23378,11954,
+23379,6072,
+23380,2404,
+23381,4371,
+23382,11955,
+23383,4659,
+23384,1385,
+23385,3556,
+23386,6068,
+23387,4729,
+23388,4651,
+23389,3949,
+23390,11956,
+23391,2772,
+23392,11957,
+23393,11958,
+23394,6073,
+23395,2097,
+23396,1819,
+23397,6069,
+23398,4048,
+23399,11959,
+23400,11960,
+23401,1881,
+23402,2678,
+23403,8538,
+23404,4705,
+23405,11961,
+23406,11962,
+23407,11963,
+23408,3458,
+23409,5994,
+23410,11964,
+23411,6070,
+23412,11965,
+23413,1682,
+23414,11966,
+23415,11967,
+23416,8677,
+23417,11968,
+23418,3265,
+23419,11969,
+23420,11970,
+23421,2904,
+23422,11971,
+23423,8279,
+23424,5934,
+23425,2913,
+23426,11972,
+23427,3569,
+23428,5935,
+23429,4429,
+23430,11973,
+23431,4307,
+23432,3439,
+23433,957,
+23434,11974,
+23435,3523,
+23436,3739,
+23437,11975,
+23438,11976,
+23439,1953,
+23440,11977,
+23441,11978,
+23442,11979,
+23443,5937,
+23444,11980,
+23445,5936,
+23446,11981,
+23447,4663,
+23448,1842,
+23449,4581,
+23450,1511,
+23451,3745,
+23452,4178,
+23453,1039,
+23454,3404,
+23455,11982,
+23456,1293,
+23457,3372,
+23458,2394,
+23459,4038,
+23460,3433,
+23461,5938,
+23462,2007,
+23463,11983,
+23464,11984,
+23465,11985,
+23466,3913,
+23467,1797,
+23468,11986,
+23469,11987,
+23470,11988,
+23471,11989,
+23472,4378,
+23473,11990,
+23474,11991,
+23475,1885,
+23476,4112,
+23477,3945,
+23478,2117,
+23479,11992,
+23480,5939,
+23481,3256,
+23482,11993,
+23483,11994,
+23484,11995,
+23485,2426,
+23486,1119,
+23487,3539,
+23488,11996,
+23489,11997,
+23490,2104,
+23491,11998,
+23492,2103,
+23493,4225,
+23494,2785,
+23495,2409,
+23496,11999,
+23497,12000,
+23498,12001,
+23499,12002,
+23500,1718,
+23501,12003,
+23502,12004,
+23503,12005,
+23504,2759,
+23505,12006,
+23506,1893,
+23507,4325,
+23508,12007,
+23509,12008,
+23510,12009,
+23511,12010,
+23512,12011,
+23513,12012,
+23514,12013,
+23515,12014,
+23516,12015,
+23517,3163,
+23518,2834,
+23519,1203,
+23520,12016,
+23521,1834,
+23522,8421,
+23523,12017,
+23524,5943,
+23525,2577,
+23526,8495,
+23527,8355,
+23528,4432,
+23529,8481,
+23530,12018,
+23531,8660,
+23532,8165,
+23533,12019,
+23534,5944,
+23535,12020,
+23536,5946,
+23537,12021,
+23538,12022,
+23539,12023,
+23540,12024,
+23541,7818,
+23542,7735,
+23543,12025,
+23544,1386,
+23545,1555,
+23546,3511,
+23547,4057,
+23548,1437,
+23549,12026,
+23550,12027,
+23551,3440,
+23552,12028,
+23553,1663,
+23554,12029,
+23555,12030,
+23556,3357,
+23557,12031,
+23558,2172,
+23559,8094,
+23560,8870,
+23561,3789,
+23562,4685,
+23563,8680,
+23564,12032,
+23565,7898,
+23566,7865,
+23567,3948,
+23568,12033,
+23569,3346,
+23570,12034,
+23571,12035,
+23572,1594,
+23573,6066,
+23574,2133,
+23575,12036,
+23576,1251,
+23577,12037,
+23578,3337,
+23579,12038,
+23580,6067,
+23581,1223,
+23582,12039,
+23583,12040,
+23584,12041,
+23585,12042,
+23586,5302,
+23587,12043,
+23588,4269,
+23589,5303,
+23590,12044,
+23591,4137,
+23592,12045,
+23593,12046,
+23594,12047,
+23595,12048,
+23596,5304,
+23597,12049,
+23598,12050,
+23599,12051,
+23600,12052,
+23601,2300,
+23602,12053,
+23603,12054,
+23604,5305,
+23605,12055,
+23606,12056,
+23607,9052,
+23608,3395,
+23609,4227,
+23610,1284,
+23611,5990,
+23612,2884,
+23613,2256,
+23614,3777,
+23615,2901,
+23616,2309,
+23617,3015,
+23618,1194,
+23619,12057,
+23620,12058,
+23621,2306,
+23622,12059,
+23623,12060,
+23624,3193,
+23625,3646,
+23626,2237,
+23627,3820,
+23628,12061,
+23629,12062,
+23630,3409,
+23631,3040,
+23632,5992,
+23633,3975,
+23634,12063,
+23635,12064,
+23636,12065,
+23637,4442,
+23638,12066,
+23639,12067,
+23640,12068,
+23641,5993,
+23642,12069,
+23643,12070,
+23644,12071,
+23645,12072,
+23646,3467,
+23647,12073,
+23648,3697,
+23649,2668,
+23650,8272,
+23651,5995,
+23652,7783,
+23653,2667,
+23654,5996,
+23655,12074,
+23656,9204,
+23657,12075,
+23658,12076,
+23659,12077,
+23660,8510,
+23661,12078,
+23662,6004,
+23663,3710,
+23664,12079,
+23665,3318,
+23666,12080,
+23667,12081,
+23668,12082,
+23669,12083,
+23670,12084,
+23671,12085,
+23672,12086,
+23673,4192,
+23674,5548,
+23675,12087,
+23676,12088,
+23677,12089,
+23678,12090,
+23679,4305,
+23680,12091,
+23681,3551,
+23682,3088,
+23683,12092,
+23684,12093,
+23685,12094,
+23686,12095,
+23687,12096,
+23688,5552,
+23689,12097,
+23690,12098,
+23691,12099,
+23692,5547,
+23693,5549,
+23694,12100,
+23695,12101,
+23696,5550,
+23697,5555,
+23698,12102,
+23699,12103,
+23700,1204,
+23701,12104,
+23702,5551,
+23703,1749,
+23704,5553,
+23705,5554,
+23706,5556,
+23707,1435,
+23708,5557,
+23709,12105,
+23710,12106,
+23711,12107,
+23712,12108,
+23713,7958,
+23714,5559,
+23715,5564,
+23716,12109,
+23717,12110,
+23718,12111,
+23719,12112,
+23720,12113,
+23721,4091,
+23722,12114,
+23723,5562,
+23724,5561,
+23725,2612,
+23726,12115,
+23727,12116,
+23728,12117,
+23729,5563,
+23730,12118,
+23731,4355,
+23732,12119,
+23733,5558,
+23734,12120,
+23735,5566,
+23736,961,
+23737,12121,
+23738,12122,
+23739,12123,
+23740,12124,
+23741,5560,
+23742,12125,
+23743,2438,
+23744,12126,
+23745,5565,
+23746,12127,
+23747,12128,
+23748,5567,
+23749,12129,
+23750,12130,
+23751,12131,
+23752,12132,
+23753,12133,
+23754,12134,
+23755,5570,
+23756,12135,
+23757,12136,
+23758,12137,
+23759,12138,
+23760,12139,
+23761,12140,
+23762,5568,
+23763,12141,
+23764,12142,
+23765,12143,
+23766,12144,
+23767,12145,
+23768,12146,
+23769,4548,
+23770,12147,
+23771,12148,
+23772,12149,
+23773,12150,
+23774,12151,
+23775,12152,
+23776,12153,
+23777,3884,
+23778,12154,
+23779,12155,
+23780,5569,
+23781,5571,
+23782,2676,
+23783,12156,
+23784,1578,
+23785,12157,
+23786,4317,
+23787,12158,
+23788,12159,
+23789,3146,
+23790,12160,
+23791,12161,
+23792,1666,
+23793,12162,
+23794,12163,
+23795,12164,
+23796,9097,
+23797,12165,
+23798,7863,
+23799,12166,
+23800,12167,
+23801,12168,
+23802,12169,
+23803,2349,
+23804,12170,
+23805,8628,
+23806,12171,
+23807,12172,
+23808,12173,
+23809,12174,
+23810,5572,
+23811,5573,
+23812,12175,
+23813,12176,
+23814,5579,
+23815,1292,
+23816,12177,
+23817,12178,
+23818,12179,
+23819,12180,
+23820,12181,
+23821,9103,
+23822,3080,
+23823,12182,
+23824,12183,
+23825,12184,
+23826,12185,
+23827,12186,
+23828,1377,
+23829,12187,
+23830,4075,
+23831,7962,
+23832,12188,
+23833,12189,
+23834,12190,
+23835,5580,
+23836,12191,
+23837,12192,
+23838,5578,
+23839,12193,
+23840,12194,
+23841,12195,
+23842,12196,
+23843,12197,
+23844,5577,
+23845,12198,
+23846,5575,
+23847,5574,
+23848,12199,
+23849,1065,
+23850,12200,
+23851,12201,
+23852,9099,
+23853,4441,
+23854,5576,
+23855,12202,
+23856,12203,
+23857,12204,
+23858,12205,
+23859,12206,
+23860,5583,
+23861,12207,
+23862,12208,
+23863,12209,
+23864,12210,
+23865,12211,
+23866,12212,
+23867,12213,
+23868,12214,
+23869,5584,
+23870,5582,
+23871,12215,
+23872,12216,
+23873,12217,
+23874,12218,
+23875,12219,
+23876,12220,
+23877,12221,
+23878,12222,
+23879,6946,
+23880,12223,
+23881,12224,
+23882,5591,
+23883,5590,
+23884,3123,
+23885,12225,
+23886,12226,
+23887,12227,
+23888,9098,
+23889,12228,
+23890,12229,
+23891,12230,
+23892,12231,
+23893,12232,
+23894,12233,
+23895,12234,
+23896,5581,
+23897,12235,
+23898,12236,
+23899,5586,
+23900,12237,
+23901,5588,
+23902,12238,
+23903,12239,
+23904,12240,
+23905,12241,
+23906,12242,
+23907,12243,
+23908,12244,
+23909,12245,
+23910,12246,
+23911,12247,
+23912,12248,
+23913,5592,
+23914,12249,
+23915,5589,
+23916,5585,
+23917,12250,
+23918,12251,
+23919,5587,
+23920,12252,
+23921,12253,
+23922,12254,
+23923,12255,
+23924,5593,
+23925,12256,
+23926,12257,
+23927,12258,
+23928,12259,
+23929,12260,
+23930,12261,
+23931,12262,
+23932,12263,
+23933,12264,
+23934,12265,
+23935,12266,
+23936,12267,
+23937,9105,
+23938,5594,
+23939,12268,
+23940,8817,
+23941,12269,
+23942,12270,
+23943,9096,
+23944,12271,
+23945,12272,
+23946,12273,
+23947,12274,
+23948,12275,
+23949,12276,
+23950,12277,
+23951,12278,
+23952,12279,
+23953,12280,
+23954,12281,
+23955,12282,
+23956,12283,
+23957,12284,
+23958,12285,
+23959,9102,
+23960,12286,
+23961,5595,
+23962,12287,
+23963,12288,
+23964,12289,
+23965,5596,
+23966,12290,
+23967,12291,
+23968,9101,
+23969,12292,
+23970,12293,
+23971,12294,
+23972,12295,
+23973,12296,
+23974,12297,
+23975,9100,
+23976,12298,
+23977,12299,
+23978,12300,
+23979,12301,
+23980,12302,
+23981,12303,
+23982,12304,
+23983,12305,
+23984,12306,
+23985,12307,
+23986,12308,
+23987,12309,
+23988,12310,
+23989,12311,
+23990,12312,
+23991,5598,
+23992,9104,
+23993,12313,
+23994,8243,
+23995,12314,
+23996,8764,
+23997,12315,
+23998,12316,
+23999,12317,
+24000,12318,
+24001,12319,
+24002,12320,
+24003,12321,
+24004,12322,
+24005,5599,
+24006,12323,
+24007,12324,
+24008,12325,
+24009,12326,
+24010,12327,
+24011,8169,
+24012,12328,
+24013,3760,
+24014,12329,
+24015,12330,
+24016,12331,
+24017,12332,
+24018,8277,
+24019,12333,
+24020,9106,
+24021,12334,
+24022,12335,
+24023,12336,
+24024,12337,
+24025,12338,
+24026,12339,
+24027,6165,
+24028,12340,
+24029,1323,
+24030,4572,
+24031,12341,
+24032,12342,
+24033,4059,
+24034,1239,
+24035,12343,
+24036,12344,
+24037,1789,
+24038,4688,
+24039,3142,
+24040,2317,
+24041,1799,
+24042,12345,
+24043,3814,
+24044,12346,
+24045,12347,
+24046,1205,
+24047,5023,
+24048,8996,
+24049,2093,
+24050,4184,
+24051,3517,
+24052,984,
+24053,12348,
+24054,12349,
+24055,3932,
+24056,12350,
+24057,12351,
+24058,12352,
+24059,12353,
+24060,12354,
+24061,4855,
+24062,2238,
+24063,12355,
+24064,12356,
+24065,1083,
+24066,3431,
+24067,1155,
+24068,12357,
+24069,3484,
+24070,1608,
+24071,12358,
+24072,3389,
+24073,12359,
+24074,12360,
+24075,12361,
+24076,3856,
+24077,12362,
+24078,12363,
+24079,5534,
+24080,4459,
+24081,5537,
+24082,12364,
+24083,12365,
+24084,5536,
+24085,2946,
+24086,3662,
+24087,12366,
+24088,2554,
+24089,5535,
+24090,4578,
+24091,1142,
+24092,4547,
+24093,1468,
+24094,12367,
+24095,12368,
+24096,12369,
+24097,12370,
+24098,12371,
+24099,12372,
+24100,12373,
+24101,8515,
+24102,1403,
+24103,4512,
+24104,12374,
+24105,12375,
+24106,12376,
+24107,8489,
+24108,12377,
+24109,3868,
+24110,1018,
+24111,12378,
+24112,12379,
+24113,5538,
+24114,12380,
+24115,8823,
+24116,12381,
+24117,12382,
+24118,7847,
+24119,5541,
+24120,1224,
+24121,12383,
+24122,12384,
+24123,5539,
+24124,5540,
+24125,2742,
+24126,12385,
+24127,12386,
+24128,8837,
+24129,12387,
+24130,2786,
+24131,9092,
+24132,5542,
+24133,1686,
+24134,12388,
+24135,12389,
+24136,12390,
+24137,12391,
+24138,12392,
+24139,12393,
+24140,2020,
+24141,12394,
+24142,12395,
+24143,12396,
+24144,12397,
+24145,12398,
+24146,12399,
+24147,12400,
+24148,5543,
+24149,2846,
+24150,12401,
+24151,9095,
+24152,9094,
+24153,12402,
+24154,12403,
+24155,5544,
+24156,12404,
+24157,12405,
+24158,5545,
+24159,8848,
+24160,12406,
+24161,5546,
+24162,1332,
+24163,7748,
+24164,12407,
+24165,12408,
+24166,12409,
+24167,12410,
+24168,12411,
+24169,12412,
+24170,12413,
+24171,7730,
+24172,9093,
+24173,12414,
+24174,12415,
+24175,12416,
+24176,12417,
+24177,12418,
+24178,1732,
+24179,3036,
+24180,2893,
+24181,12419,
+24182,1129,
+24183,12420,
+24184,3997,
+24185,7955,
+24186,6163,
+24187,2008,
+24188,4284,
+24189,4265,
+24190,8051,
+24191,1852,
+24192,5681,
+24193,12421,
+24194,12422,
+24195,12423,
+24196,4620,
+24197,12424,
+24198,3177,
+24199,1084,
+24200,12425,
+24201,12426,
+24202,1333,
+24203,5683,
+24204,12427,
+24205,12428,
+24206,12429,
+24207,4029,
+24208,2645,
+24209,5682,
+24210,12430,
+24211,2415,
+24212,4235,
+24213,1464,
+24214,5684,
+24215,1483,
+24216,12431,
+24217,2802,
+24218,1784,
+24219,12432,
+24220,1705,
+24221,12433,
+24222,2964,
+24223,1644,
+24224,5686,
+24225,12434,
+24226,12435,
+24227,12436,
+24228,12437,
+24229,5685,
+24230,1543,
+24231,4694,
+24232,12438,
+24233,12439,
+24234,12440,
+24235,8160,
+24236,12441,
+24237,3670,
+24238,12442,
+24239,12443,
+24240,12444,
+24241,12445,
+24242,12446,
+24243,5690,
+24244,12447,
+24245,5688,
+24246,3475,
+24247,2370,
+24248,4254,
+24249,5687,
+24250,12448,
+24251,12449,
+24252,12450,
+24253,12451,
+24254,5689,
+24255,12452,
+24256,12453,
+24257,12454,
+24258,12455,
+24259,12456,
+24260,12457,
+24261,12458,
+24262,12459,
+24263,12460,
+24264,12461,
+24265,2551,
+24266,2483,
+24267,12462,
+24268,12463,
+24269,12464,
+24270,12465,
+24271,12466,
+24272,12467,
+24273,5693,
+24274,5692,
+24275,2453,
+24276,12468,
+24277,12469,
+24278,2583,
+24279,12470,
+24280,12471,
+24281,12472,
+24282,12473,
+24283,5694,
+24284,12474,
+24285,12475,
+24286,12476,
+24287,8327,
+24288,7800,
+24289,9134,
+24290,7926,
+24291,7985,
+24292,12477,
+24293,12478,
+24294,12479,
+24295,12480,
+24296,5695,
+24297,12481,
+24298,5696,
+24299,12482,
+24300,8261,
+24301,12483,
+24302,12484,
+24303,12485,
+24304,12486,
+24305,12487,
+24306,12488,
+24307,8568,
+24308,5016,
+24309,12489,
+24310,4092,
+24311,3667,
+24312,12490,
+24313,12491,
+24314,2169,
+24315,12492,
+24316,12493,
+24317,12494,
+24318,5293,
+24319,4699,
+24320,2359,
+24321,5021,
+24322,4211,
+24323,3097,
+24324,2923,
+24325,12495,
+24326,12496,
+24327,12497,
+24328,5294,
+24329,12498,
+24330,1088,
+24331,5366,
+24332,12499,
+24333,12500,
+24334,12501,
+24335,3412,
+24336,12502,
+24337,5369,
+24338,12503,
+24339,1798,
+24340,12504,
+24341,4228,
+24342,12505,
+24343,1696,
+24344,1954,
+24345,12506,
+24346,12507,
+24347,1279,
+24348,12508,
+24349,12509,
+24350,12510,
+24351,1469,
+24352,4454,
+24353,12511,
+24354,12512,
+24355,12513,
+24356,12514,
+24357,2779,
+24358,3903,
+24359,1974,
+24360,12515,
+24361,5999,
+24362,5998,
+24363,12516,
+24364,12517,
+24365,6000,
+24366,12518,
+24367,3733,
+24368,12519,
+24369,3280,
+24370,12520,
+24371,9205,
+24372,12521,
+24373,8821,
+24374,12522,
+24375,12523,
+24376,12524,
+24377,1424,
+24378,3132,
+24379,12525,
+24380,6002,
+24381,12526,
+24382,12527,
+24383,12528,
+24384,6590,
+24385,12529,
+24386,12530,
+24387,12531,
+24388,12532,
+24389,12533,
+24390,9838,
+24391,12534,
+24392,7856,
+24393,12535,
+24394,12536,
+24395,12537,
+24396,8323,
+24397,12538,
+24398,8584,
+24399,12539,
+24400,5986,
+24401,12540,
+24402,1858,
+24403,1426,
+24404,12541,
+24405,2659,
+24406,5988,
+24407,5987,
+24408,5989,
+24409,9852,
+24410,12542,
+24411,12543,
+24412,12544,
+24413,4180,
+24414,12545,
+24415,12546,
+24416,12547,
+24417,5614,
+24418,3993,
+24419,12548,
+24420,3679,
+24421,12549,
+24422,4110,
+24423,12550,
+24424,12551,
+24425,1169,
+24426,1108,
+24427,12552,
+24428,1115,
+24429,2990,
+24430,12553,
+24431,12554,
+24432,4452,
+24433,4245,
+24434,12555,
+24435,5600,
+24436,12556,
+24437,12557,
+24438,12558,
+24439,5601,
+24440,12559,
+24441,4194,
+24442,12560,
+24443,1246,
+24444,1076,
+24445,12561,
+24446,12562,
+24447,12563,
+24448,3754,
+24449,4504,
+24450,5602,
+24451,12564,
+24452,2277,
+24453,1408,
+24454,12565,
+24455,5603,
+24456,1939,
+24457,5604,
+24458,1991,
+24459,2672,
+24460,5605,
+24461,12566,
+24462,12567,
+24463,12568,
+24464,4023,
+24465,8133,
+24466,3694,
+24467,12569,
+24468,12570,
+24469,5606,
+24470,12571,
+24471,1444,
+24472,2952,
+24473,5607,
+24474,12572,
+24475,12573,
+24476,5608,
+24477,12574,
+24478,7841,
+24479,12575,
+24480,9107,
+24481,4318,
+24482,12576,
+24483,12577,
+24484,12578,
+24485,12579,
+24486,12580,
+24487,12581,
+24488,5609,
+24489,7947,
+24490,4054,
+24491,12582,
+24492,12583,
+24493,5610,
+24494,3761,
+24495,12584,
+24496,12585,
+24497,12586,
+24498,12587,
+24499,12588,
+24500,12589,
+24501,5611,
+24502,12590,
+24503,1443,
+24504,12591,
+24505,7804,
+24506,12592,
+24507,12593,
+24508,5612,
+24509,2026,
+24510,12594,
+24511,12595,
+24512,12596,
+24513,12597,
+24514,12598,
+24515,3983,
+24516,5698,
+24517,1089,
+24518,4203,
+24519,12599,
+24520,12600,
+24521,5699,
+24522,12601,
+24523,12602,
+24524,2108,
+24525,3239,
+24526,12603,
+24527,5701,
+24528,6668,
+24529,6667,
+24530,5367,
+24531,12604,
+24532,12605,
+24533,12606,
+24534,5700,
+24535,4541,
+24536,3757,
+24537,2731,
+24538,12607,
+24539,12608,
+24540,12609,
+24541,5763,
+24542,12610,
+24543,12611,
+24544,4561,
+24545,5705,
+24546,12612,
+24547,12613,
+24548,5706,
+24549,12614,
+24550,12615,
+24551,4268,
+24552,12616,
+24553,12617,
+24554,5710,
+24555,2425,
+24556,12618,
+24557,5711,
+24558,5703,
+24559,12619,
+24560,12620,
+24561,1253,
+24562,12621,
+24563,12622,
+24564,12623,
+24565,2897,
+24566,12624,
+24567,12625,
+24568,5712,
+24569,12626,
+24570,12627,
+24571,3982,
+24572,12628,
+24573,1965,
+24574,5707,
+24575,1659,
+24576,1992,
+24577,3583,
+24578,3520,
+24579,5702,
+24580,5704,
+24581,5708,
+24582,5709,
+24583,12629,
+24584,12630,
+24585,12631,
+24586,5721,
+24587,12632,
+24588,12633,
+24589,5718,
+24590,4408,
+24591,5717,
+24592,12634,
+24593,12635,
+24594,2926,
+24595,12636,
+24596,4507,
+24597,2947,
+24598,1159,
+24599,12637,
+24600,12638,
+24601,5713,
+24602,12639,
+24603,5716,
+24604,2552,
+24605,3505,
+24606,12640,
+24607,12641,
+24608,1410,
+24609,5723,
+24610,12642,
+24611,12643,
+24612,12644,
+24613,2084,
+24614,5715,
+24615,3999,
+24616,4348,
+24617,5719,
+24618,1839,
+24619,5720,
+24620,12645,
+24621,12646,
+24622,12647,
+24623,3152,
+24624,12648,
+24625,12649,
+24626,12650,
+24627,12651,
+24628,12652,
+24629,5714,
+24630,12653,
+24631,12654,
+24632,12655,
+24633,12656,
+24634,12657,
+24635,4665,
+24636,6669,
+24637,12658,
+24638,12659,
+24639,5722,
+24640,12660,
+24641,6673,
+24642,5728,
+24643,3432,
+24644,12661,
+24645,12662,
+24646,12663,
+24647,12664,
+24648,12665,
+24649,12666,
+24650,12667,
+24651,2558,
+24652,12668,
+24653,2021,
+24654,12669,
+24655,12670,
+24656,2403,
+24657,12671,
+24658,1946,
+24659,12672,
+24660,12673,
+24661,3478,
+24662,12674,
+24663,12675,
+24664,12676,
+24665,6674,
+24666,6671,
+24667,12677,
+24668,12678,
+24669,6670,
+24670,12679,
+24671,12680,
+24672,12681,
+24673,12682,
+24674,2027,
+24675,6675,
+24676,4031,
+24677,12683,
+24678,12684,
+24679,6672,
+24680,1941,
+24681,1590,
+24682,5729,
+24683,1521,
+24684,3652,
+24685,1792,
+24686,12685,
+24687,3855,
+24688,3102,
+24689,12686,
+24690,12687,
+24691,2399,
+24692,12688,
+24693,12689,
+24694,1584,
+24695,12690,
+24696,5724,
+24697,5725,
+24698,5727,
+24699,5726,
+24700,2872,
+24701,5730,
+24702,12691,
+24703,4262,
+24704,12692,
+24705,12693,
+24706,12694,
+24707,5735,
+24708,3137,
+24709,12695,
+24710,12696,
+24711,12697,
+24712,12698,
+24713,3857,
+24714,12699,
+24715,12700,
+24716,5737,
+24717,1902,
+24718,12701,
+24719,12702,
+24720,12703,
+24721,12704,
+24722,5736,
+24723,12705,
+24724,2031,
+24725,12706,
+24726,5731,
+24727,12707,
+24728,12708,
+24729,12709,
+24730,5732,
+24731,5738,
+24732,12710,
+24733,5734,
+24734,12711,
+24735,3841,
+24736,4267,
+24737,12712,
+24738,12713,
+24739,2001,
+24740,12714,
+24741,12715,
+24742,4358,
+24743,12716,
+24744,2909,
+24745,12717,
+24746,12718,
+24747,6676,
+24748,4039,
+24749,5733,
+24750,12719,
+24751,2810,
+24752,12720,
+24753,5741,
+24754,1048,
+24755,12721,
+24756,5746,
+24757,9140,
+24758,8318,
+24759,12722,
+24760,2101,
+24761,12723,
+24762,12724,
+24763,5740,
+24764,1440,
+24765,12725,
+24766,12726,
+24767,12727,
+24768,12728,
+24769,12729,
+24770,12730,
+24771,12731,
+24772,12732,
+24773,3174,
+24774,5744,
+24775,12733,
+24776,12734,
+24777,12735,
+24778,2265,
+24779,3744,
+24780,12736,
+24781,12737,
+24782,12738,
+24783,12739,
+24784,12740,
+24785,2056,
+24786,12741,
+24787,12742,
+24788,12743,
+24789,3643,
+24790,12744,
+24791,12745,
+24792,5743,
+24793,12746,
+24794,5745,
+24795,12747,
+24796,3860,
+24797,5742,
+24798,12748,
+24799,3768,
+24800,2034,
+24801,7907,
+24802,12749,
+24803,12750,
+24804,12751,
+24805,12752,
+24806,1484,
+24807,2324,
+24808,1177,
+24809,1266,
+24810,12753,
+24811,1058,
+24812,5739,
+24813,1176,
+24814,1421,
+24815,1848,
+24816,1575,
+24817,8341,
+24818,9147,
+24819,3928,
+24820,5751,
+24821,12754,
+24822,2017,
+24823,12755,
+24824,12756,
+24825,3234,
+24826,3989,
+24827,9145,
+24828,12757,
+24829,12758,
+24830,12759,
+24831,12760,
+24832,5752,
+24833,1299,
+24834,12761,
+24835,12762,
+24836,12763,
+24837,12764,
+24838,6677,
+24839,12765,
+24840,4319,
+24841,4297,
+24842,12766,
+24843,12767,
+24844,12768,
+24845,6678,
+24846,5753,
+24847,4201,
+24848,12769,
+24849,12770,
+24850,12771,
+24851,12772,
+24852,12773,
+24853,5749,
+24854,12774,
+24855,12775,
+24856,12776,
+24857,12777,
+24858,4291,
+24859,7720,
+24860,9149,
+24861,12778,
+24862,12779,
+24863,1739,
+24864,5747,
+24865,12780,
+24866,12781,
+24867,5750,
+24868,1660,
+24869,12782,
+24870,5748,
+24871,2445,
+24872,12783,
+24873,12784,
+24874,12785,
+24875,5754,
+24876,12786,
+24877,12787,
+24878,12788,
+24879,12789,
+24880,12790,
+24881,12791,
+24882,12792,
+24883,12793,
+24884,9141,
+24885,12794,
+24886,12795,
+24887,9146,
+24888,12796,
+24889,12797,
+24890,12798,
+24891,12799,
+24892,12800,
+24893,12801,
+24894,9139,
+24895,4347,
+24896,12802,
+24897,12803,
+24898,12804,
+24899,12805,
+24900,12806,
+24901,12807,
+24902,12808,
+24903,12809,
+24904,1355,
+24905,12810,
+24906,5755,
+24907,8546,
+24908,2010,
+24909,12811,
+24910,3376,
+24911,12812,
+24912,12813,
+24913,3358,
+24914,12814,
+24915,12815,
+24916,12816,
+24917,2848,
+24918,12817,
+24919,12818,
+24920,7774,
+24921,12819,
+24922,7773,
+24923,12820,
+24924,12821,
+24925,6679,
+24926,12822,
+24927,9143,
+24928,12823,
+24929,12824,
+24930,2724,
+24931,7983,
+24932,9439,
+24933,12825,
+24934,12826,
+24935,2032,
+24936,2363,
+24937,12827,
+24938,9138,
+24939,8526,
+24940,12828,
+24941,12829,
+24942,8274,
+24943,12830,
+24944,3790,
+24945,12831,
+24946,12832,
+24947,9148,
+24948,12833,
+24949,5756,
+24950,8427,
+24951,2371,
+24952,12834,
+24953,12835,
+24954,12836,
+24955,12837,
+24956,12838,
+24957,12839,
+24958,12840,
+24959,12841,
+24960,12842,
+24961,12843,
+24962,8754,
+24963,12844,
+24964,12845,
+24965,12846,
+24966,12847,
+24967,12848,
+24968,12849,
+24969,12850,
+24970,7743,
+24971,1112,
+24972,12851,
+24973,12852,
+24974,4410,
+24975,12853,
+24976,8219,
+24977,8380,
+24978,9150,
+24979,12854,
+24980,5758,
+24981,12855,
+24982,12856,
+24983,12857,
+24984,12858,
+24985,12859,
+24986,7854,
+24987,12860,
+24988,12861,
+24989,6681,
+24990,12862,
+24991,12863,
+24992,12864,
+24993,12865,
+24994,12866,
+24995,12867,
+24996,7931,
+24997,12868,
+24998,12869,
+24999,5759,
+25000,1888,
+25001,6680,
+25002,12870,
+25003,8329,
+25004,5757,
+25005,12871,
+25006,9137,
+25007,12872,
+25008,12873,
+25009,12874,
+25010,8644,
+25011,12875,
+25012,12876,
+25013,12877,
+25014,8724,
+25015,5760,
+25016,12878,
+25017,12879,
+25018,12880,
+25019,12881,
+25020,12882,
+25021,12883,
+25022,1901,
+25023,12884,
+25024,12885,
+25025,12886,
+25026,1517,
+25027,12887,
+25028,12888,
+25029,12889,
+25030,12890,
+25031,8158,
+25032,3971,
+25033,8739,
+25034,974,
+25035,6682,
+25036,9142,
+25037,12891,
+25038,12892,
+25039,12893,
+25040,12894,
+25041,6683,
+25042,2476,
+25043,12895,
+25044,5761,
+25045,12896,
+25046,12897,
+25047,12898,
+25048,12899,
+25049,12900,
+25050,12901,
+25051,12902,
+25052,12903,
+25053,12904,
+25054,9868,
+25055,9438,
+25056,12905,
+25057,12906,
+25058,12907,
+25059,9440,
+25060,12908,
+25061,12909,
+25062,2932,
+25063,12910,
+25064,9144,
+25065,12911,
+25066,12912,
+25067,12913,
+25068,12914,
+25069,12915,
+25070,12916,
+25071,12917,
+25072,12918,
+25073,12919,
+25074,7809,
+25075,12920,
+25076,12921,
+25077,5762,
+25078,8190,
+25079,8017,
+25080,8673,
+25081,12922,
+25082,9136,
+25083,12923,
+25084,8142,
+25085,12924,
+25086,8478,
+25087,5088,
+25088,8225,
+25089,12925,
+25090,12926,
+25091,12927,
+25092,12928,
+25093,12929,
+25094,6684,
+25095,9441,
+25096,1765,
+25097,12930,
+25098,3835,
+25099,6393,
+25100,4018,
+25101,3472,
+25102,3249,
+25103,3876,
+25104,1262,
+25105,3809,
+25106,2229,
+25107,12931,
+25108,9379,
+25109,5790,
+25110,2055,
+25111,6394,
+25112,4446,
+25113,12932,
+25114,3068,
+25115,6395,
+25116,12933,
+25117,12934,
+25118,12935,
+25119,6396,
+25120,12936,
+25121,6398,
+25122,6397,
+25123,12937,
+25124,6400,
+25125,6399,
+25126,12938,
+25127,9380,
+25128,12939,
+25129,12940,
+25130,2217,
+25131,12941,
+25132,6401,
+25133,12942,
+25134,2661,
+25135,12943,
+25136,8819,
+25137,12944,
+25138,8624,
+25139,1348,
+25140,1402,
+25141,12945,
+25142,12946,
+25143,1980,
+25144,12947,
+25145,12948,
+25146,12949,
+25147,12950,
+25148,12951,
+25149,6644,
+25150,6643,
+25151,1628,
+25152,3566,
+25153,1099,
+25154,12952,
+25155,6645,
+25156,12953,
+25157,12954,
+25158,12955,
+25159,3329,
+25160,6646,
+25161,6647,
+25162,12956,
+25163,3437,
+25164,5306,
+25165,1164,
+25166,4413,
+25167,12957,
+25168,12958,
+25169,3050,
+25170,978,
+25171,1397,
+25172,3246,
+25173,12959,
+25174,12960,
+25175,12961,
+25176,3713,
+25177,12962,
+25178,12963,
+25179,2373,
+25180,12964,
+25181,12965,
+25182,12966,
+25183,12967,
+25184,12968,
+25185,12969,
+25186,12970,
+25187,2408,
+25188,12971,
+25189,12972,
+25190,3105,
+25191,4531,
+25192,12973,
+25193,2452,
+25194,5307,
+25195,3297,
+25196,4120,
+25197,2917,
+25198,1010,
+25199,1243,
+25200,3232,
+25201,12974,
+25202,12975,
+25203,1005,
+25204,12976,
+25205,12977,
+25206,1683,
+25207,12978,
+25208,12979,
+25209,3003,
+25210,12980,
+25211,12981,
+25212,1586,
+25213,12982,
+25214,4467,
+25215,1269,
+25216,2095,
+25217,12983,
+25218,12984,
+25219,12985,
+25220,1234,
+25221,12986,
+25222,12987,
+25223,12988,
+25224,12989,
+25225,2336,
+25226,988,
+25227,12990,
+25228,12991,
+25229,12992,
+25230,12993,
+25231,12994,
+25232,12995,
+25233,4189,
+25234,3450,
+25235,4610,
+25236,12996,
+25237,3687,
+25238,1525,
+25239,2374,
+25240,4476,
+25241,12997,
+25242,1698,
+25243,2968,
+25244,12998,
+25245,12999,
+25246,13000,
+25247,5308,
+25248,2406,
+25249,2684,
+25250,3133,
+25251,13001,
+25252,1977,
+25253,1041,
+25254,13002,
+25255,13003,
+25256,2987,
+25257,13004,
+25258,13005,
+25259,3004,
+25260,3578,
+25261,13006,
+25262,13007,
+25263,13008,
+25264,13009,
+25265,1040,
+25266,13010,
+25267,13011,
+25268,13012,
+25269,1463,
+25270,13013,
+25271,13014,
+25272,13015,
+25273,2827,
+25274,13016,
+25275,5309,
+25276,4067,
+25277,1294,
+25278,13017,
+25279,2807,
+25280,13018,
+25281,13019,
+25282,1684,
+25283,13020,
+25284,4595,
+25285,1412,
+25286,1207,
+25287,2839,
+25288,2892,
+25289,2456,
+25290,5310,
+25291,13021,
+25292,1011,
+25293,2949,
+25294,2601,
+25295,13022,
+25296,1838,
+25297,13023,
+25298,2315,
+25299,3721,
+25300,985,
+25301,13024,
+25302,3712,
+25303,5312,
+25304,2303,
+25305,4635,
+25306,5311,
+25307,4465,
+25308,1000,
+25309,13025,
+25310,13026,
+25311,2885,
+25312,13027,
+25313,13028,
+25314,2634,
+25315,2147,
+25316,13029,
+25317,4250,
+25318,2468,
+25319,2914,
+25320,1133,
+25321,4404,
+25322,13030,
+25323,13031,
+25324,2451,
+25325,3418,
+25326,5313,
+25327,4509,
+25328,13032,
+25329,1801,
+25330,13033,
+25331,3208,
+25332,3486,
+25333,13034,
+25334,5315,
+25335,2378,
+25336,13035,
+25337,13036,
+25338,13037,
+25339,13038,
+25340,3027,
+25341,4612,
+25342,3399,
+25343,2854,
+25344,13039,
+25345,1275,
+25346,1835,
+25347,13040,
+25348,13041,
+25349,13042,
+25350,13043,
+25351,4535,
+25352,6478,
+25353,959,
+25354,13044,
+25355,13045,
+25356,13046,
+25357,13047,
+25358,2419,
+25359,13048,
+25360,13049,
+25361,3655,
+25362,13050,
+25363,13051,
+25364,13052,
+25365,13053,
+25366,3723,
+25367,13054,
+25368,13055,
+25369,13056,
+25370,4542,
+25371,2677,
+25372,13057,
+25373,3805,
+25374,3573,
+25375,3961,
+25376,2870,
+25377,1427,
+25378,5314,
+25379,4502,
+25380,2090,
+25381,2024,
+25382,13058,
+25383,13059,
+25384,943,
+25385,13060,
+25386,2931,
+25387,1391,
+25388,13061,
+25389,13062,
+25390,13063,
+25391,4498,
+25392,13064,
+25393,13065,
+25394,6479,
+25395,13066,
+25396,13067,
+25397,13068,
+25398,13069,
+25399,13070,
+25400,13071,
+25401,5316,
+25402,3671,
+25403,13072,
+25404,13073,
+25405,3741,
+25406,8657,
+25407,13074,
+25408,13075,
+25409,13076,
+25410,3829,
+25411,5318,
+25412,13077,
+25413,3682,
+25414,2449,
+25415,13078,
+25416,13079,
+25417,4634,
+25418,13080,
+25419,5317,
+25420,977,
+25421,1899,
+25422,3340,
+25423,2902,
+25424,2327,
+25425,13081,
+25426,13082,
+25427,13083,
+25428,13084,
+25429,1149,
+25430,13085,
+25431,13086,
+25432,13087,
+25433,13088,
+25434,13089,
+25435,13090,
+25436,13091,
+25437,13092,
+25438,2487,
+25439,3557,
+25440,13093,
+25441,2148,
+25442,2000,
+25443,1432,
+25444,13094,
+25445,13095,
+25446,13096,
+25447,2998,
+25448,8476,
+25449,5328,
+25450,13097,
+25451,9053,
+25452,13098,
+25453,5325,
+25454,2316,
+25455,13099,
+25456,13100,
+25457,5321,
+25458,9858,
+25459,13101,
+25460,13102,
+25461,13103,
+25462,1338,
+25463,2222,
+25464,13104,
+25465,13105,
+25466,5322,
+25467,2896,
+25468,13106,
+25469,13107,
+25470,13108,
+25471,13109,
+25472,3891,
+25473,13110,
+25474,1473,
+25475,8461,
+25476,8282,
+25477,13111,
+25478,13112,
+25479,1565,
+25480,3441,
+25481,1493,
+25482,5327,
+25483,13113,
+25484,4455,
+25485,13114,
+25486,5323,
+25487,3616,
+25488,3101,
+25489,13115,
+25490,2950,
+25491,13116,
+25492,13117,
+25493,13118,
+25494,4155,
+25495,13119,
+25496,2337,
+25497,13120,
+25498,13121,
+25499,13122,
+25500,13123,
+25501,13124,
+25502,13125,
+25503,13126,
+25504,2682,
+25505,13127,
+25506,3600,
+25507,1245,
+25508,13128,
+25509,2212,
+25510,13129,
+25511,2405,
+25512,3703,
+25513,4099,
+25514,1390,
+25515,13130,
+25516,5326,
+25517,5319,
+25518,5329,
+25519,13131,
+25520,6480,
+25521,13132,
+25522,13133,
+25523,2647,
+25524,5324,
+25525,13134,
+25526,13135,
+25527,4543,
+25528,1416,
+25529,13136,
+25530,1211,
+25531,13137,
+25532,5330,
+25533,13138,
+25534,5340,
+25535,13139,
+25536,8077,
+25537,13140,
+25538,13141,
+25539,13142,
+25540,5335,
+25541,13143,
+25542,5339,
+25543,13144,
+25544,13145,
+25545,3259,
+25546,13146,
+25547,13147,
+25548,13148,
+25549,4670,
+25550,5337,
+25551,2797,
+25552,3636,
+25553,13149,
+25554,1196,
+25555,13150,
+25556,13151,
+25557,13152,
+25558,4165,
+25559,13153,
+25560,13154,
+25561,13155,
+25562,8703,
+25563,13156,
+25564,13157,
+25565,13158,
+25566,5336,
+25567,13159,
+25568,5333,
+25569,3812,
+25570,13160,
+25571,1322,
+25572,13161,
+25573,13162,
+25574,13163,
+25575,13164,
+25576,13165,
+25577,2360,
+25578,2285,
+25579,13166,
+25580,13167,
+25581,2211,
+25582,8024,
+25583,13168,
+25584,13169,
+25585,13170,
+25586,5331,
+25587,13171,
+25588,4337,
+25589,13172,
+25590,5320,
+25591,13173,
+25592,5332,
+25593,13174,
+25594,13175,
+25595,13176,
+25596,13177,
+25597,2474,
+25598,13178,
+25599,5334,
+25600,1210,
+25601,1764,
+25602,2638,
+25603,13179,
+25604,13180,
+25605,2194,
+25606,13181,
+25607,13182,
+25608,13183,
+25609,13184,
+25610,13185,
+25611,5343,
+25612,5346,
+25613,8539,
+25614,13186,
+25615,1138,
+25616,1319,
+25617,13187,
+25618,13188,
+25619,1389,
+25620,3295,
+25621,13189,
+25622,13190,
+25623,7862,
+25624,13191,
+25625,13192,
+25626,13193,
+25627,5344,
+25628,3526,
+25629,13194,
+25630,1758,
+25631,13195,
+25632,5345,
+25633,5348,
+25634,13196,
+25635,13197,
+25636,13198,
+25637,13199,
+25638,5347,
+25639,13200,
+25640,13201,
+25641,13202,
+25642,3605,
+25643,13203,
+25644,1004,
+25645,1393,
+25646,13204,
+25647,13205,
+25648,13206,
+25649,13207,
+25650,13208,
+25651,13209,
+25652,5942,
+25653,13210,
+25654,8411,
+25655,13211,
+25656,13212,
+25657,13213,
+25658,3962,
+25659,13214,
+25660,13215,
+25661,1202,
+25662,13216,
+25663,6481,
+25664,13217,
+25665,5342,
+25666,13218,
+25667,13219,
+25668,3356,
+25669,5341,
+25670,997,
+25671,4136,
+25672,1120,
+25673,13220,
+25674,3586,
+25675,13221,
+25676,13222,
+25677,13223,
+25678,13224,
+25679,13225,
+25680,13226,
+25681,9056,
+25682,5338,
+25683,13227,
+25684,3481,
+25685,13228,
+25686,13229,
+25687,13230,
+25688,4427,
+25689,13231,
+25690,13232,
+25691,13233,
+25692,9057,
+25693,13234,
+25694,5349,
+25695,8256,
+25696,13235,
+25697,13236,
+25698,13237,
+25699,13238,
+25700,13239,
+25701,13240,
+25702,13241,
+25703,1376,
+25704,13242,
+25705,2825,
+25706,13243,
+25707,13244,
+25708,13245,
+25709,5351,
+25710,13246,
+25711,8846,
+25712,13247,
+25713,13248,
+25714,13249,
+25715,8159,
+25716,13250,
+25717,13251,
+25718,9054,
+25719,13252,
+25720,2819,
+25721,2820,
+25722,5353,
+25723,7786,
+25724,13253,
+25725,13254,
+25726,13255,
+25727,13256,
+25728,13257,
+25729,13258,
+25730,2581,
+25731,13259,
+25732,5350,
+25733,2334,
+25734,13260,
+25735,3025,
+25736,8194,
+25737,13261,
+25738,13262,
+25739,13263,
+25740,13264,
+25741,13265,
+25742,13266,
+25743,13267,
+25744,13268,
+25745,1258,
+25746,3281,
+25747,8339,
+25748,13269,
+25749,3503,
+25750,5352,
+25751,13270,
+25752,13271,
+25753,5356,
+25754,13272,
+25755,13273,
+25756,13274,
+25757,13275,
+25758,4623,
+25759,9055,
+25760,13276,
+25761,13277,
+25762,13278,
+25763,7852,
+25764,1244,
+25765,7764,
+25766,13279,
+25767,13280,
+25768,13281,
+25769,2572,
+25770,13282,
+25771,7944,
+25772,3144,
+25773,1132,
+25774,1388,
+25775,13283,
+25776,4616,
+25777,13284,
+25778,8384,
+25779,9058,
+25780,13285,
+25781,2895,
+25782,13286,
+25783,5354,
+25784,5355,
+25785,13287,
+25786,5357,
+25787,8544,
+25788,1898,
+25789,13288,
+25790,8605,
+25791,8078,
+25792,5358,
+25793,8749,
+25794,2505,
+25795,13289,
+25796,8263,
+25797,3324,
+25798,13290,
+25799,8802,
+25800,13291,
+25801,13292,
+25802,8039,
+25803,7858,
+25804,13293,
+25805,1184,
+25806,3171,
+25807,13294,
+25808,5359,
+25809,13295,
+25810,3161,
+25811,13296,
+25812,7849,
+25813,13297,
+25814,13298,
+25815,5360,
+25816,6482,
+25817,13299,
+25818,8140,
+25819,13300,
+25820,13301,
+25821,13302,
+25822,3528,
+25823,13303,
+25824,8050,
+25825,13304,
+25826,5362,
+25827,13305,
+25828,5361,
+25829,13306,
+25830,1160,
+25831,13307,
+25832,13308,
+25833,13309,
+25834,13310,
+25835,13311,
+25836,8344,
+25837,13312,
+25838,13313,
+25839,7762,
+25840,8356,
+25841,7964,
+25842,8847,
+25843,13314,
+25844,8173,
+25845,13315,
+25846,13316,
+25847,9061,
+25848,13317,
+25849,13318,
+25850,7725,
+25851,8530,
+25852,9062,
+25853,13319,
+25854,8442,
+25855,13320,
+25856,2955,
+25857,13321,
+25858,13322,
+25859,13323,
+25860,9059,
+25861,13324,
+25862,8346,
+25863,13325,
+25864,13326,
+25865,5363,
+25866,13327,
+25867,13328,
+25868,13329,
+25869,13330,
+25870,13331,
+25871,8252,
+25872,13332,
+25873,13333,
+25874,4383,
+25875,13334,
+25876,8182,
+25877,13335,
+25878,9060,
+25879,13336,
+25880,3228,
+25881,7785,
+25882,13337,
+25883,9063,
+25884,13338,
+25885,8477,
+25886,13339,
+25887,13340,
+25888,13341,
+25889,13342,
+25890,8793,
+25891,8278,
+25892,8547,
+25893,5364,
+25894,13343,
+25895,13344,
+25896,13345,
+25897,13346,
+25898,8105,
+25899,2335,
+25900,8188,
+25901,13347,
+25902,5365,
+25903,4518,
+25904,13348,
+25905,13349,
+25906,13350,
+25907,13351,
+25908,6409,
+25909,6502,
+25910,3436,
+25911,13352,
+25912,4786,
+25913,1727,
+25914,13353,
+25915,1790,
+25916,13354,
+25917,13355,
+25918,1634,
+25919,4511,
+25920,13356,
+25921,13357,
+25922,13358,
+25923,13359,
+25924,13360,
+25925,1827,
+25926,13361,
+25927,13362,
+25928,3954,
+25929,7371,
+25930,13363,
+25931,13364,
+25932,1457,
+25933,13365,
+25934,13366,
+25935,2809,
+25936,13367,
+25937,2295,
+25938,13368,
+25939,13369,
+25940,13370,
+25941,6503,
+25942,968,
+25943,7726,
+25944,13371,
+25945,2205,
+25946,13372,
+25947,2555,
+25948,13373,
+25949,1087,
+25950,1229,
+25951,13374,
+25952,13375,
+25953,13376,
+25954,1741,
+25955,3291,
+25956,13377,
+25957,13378,
+25958,1559,
+25959,13379,
+25960,13380,
+25961,13381,
+25962,13382,
+25963,6504,
+25964,2275,
+25965,13383,
+25966,13384,
+25967,13385,
+25968,3476,
+25969,13386,
+25970,3136,
+25971,13387,
+25972,4508,
+25973,7868,
+25974,13388,
+25975,1680,
+25976,8514,
+25977,13389,
+25978,13390,
+25979,13391,
+25980,13392,
+25981,13393,
+25982,13394,
+25983,13395,
+25984,13396,
+25985,13397,
+25986,8222,
+25987,7747,
+25988,13398,
+25989,13399,
+25990,13400,
+25991,3795,
+25992,13401,
+25993,13402,
+25994,13403,
+25995,4428,
+25996,1116,
+25997,13404,
+25998,13405,
+25999,13406,
+26000,6593,
+26001,1002,
+26002,13407,
+26003,6595,
+26004,13408,
+26005,9428,
+26006,13409,
+26007,1526,
+26008,13410,
+26009,2584,
+26010,13411,
+26011,7510,
+26012,3964,
+26013,13412,
+26014,13413,
+26015,4486,
+26016,13414,
+26017,3810,
+26018,13415,
+26019,13416,
+26020,2240,
+26021,1287,
+26022,13417,
+26023,1702,
+26024,13418,
+26025,4439,
+26026,13419,
+26027,6697,
+26028,8815,
+26029,1550,
+26030,13420,
+26031,3502,
+26032,3981,
+26033,13421,
+26034,13422,
+26035,13423,
+26036,13424,
+26037,13425,
+26038,13426,
+26039,7895,
+26040,13427,
+26041,1626,
+26042,13428,
+26043,13429,
+26044,6596,
+26045,3392,
+26046,13430,
+26047,13431,
+26048,13432,
+26049,2965,
+26050,13433,
+26051,6599,
+26052,6598,
+26053,2666,
+26054,6597,
+26055,13434,
+26056,13435,
+26057,13436,
+26058,13437,
+26059,4040,
+26060,6600,
+26061,13438,
+26062,6601,
+26063,4674,
+26064,13439,
+26065,13440,
+26066,6602,
+26067,13441,
+26068,13442,
+26069,13443,
+26070,6603,
+26071,3083,
+26072,13444,
+26073,13445,
+26074,13446,
+26075,13447,
+26076,13448,
+26077,13449,
+26078,13450,
+26079,13451,
+26080,3821,
+26081,13452,
+26082,2107,
+26083,13453,
+26084,13454,
+26085,3248,
+26086,1418,
+26087,2296,
+26088,4539,
+26089,4394,
+26090,13455,
+26091,13456,
+26092,4055,
+26093,4028,
+26094,6410,
+26095,6411,
+26096,6412,
+26097,1900,
+26098,13457,
+26099,13458,
+26100,13459,
+26101,13460,
+26102,3400,
+26103,2434,
+26104,13461,
+26105,13462,
+26106,3755,
+26107,13463,
+26108,13464,
+26109,13465,
+26110,13466,
+26111,13467,
+26112,6418,
+26113,13468,
+26114,965,
+26115,6416,
+26116,13469,
+26117,13470,
+26118,2448,
+26119,13471,
+26120,13472,
+26121,13473,
+26122,6413,
+26123,13474,
+26124,1220,
+26125,13475,
+26126,2812,
+26127,2045,
+26128,13476,
+26129,13477,
+26130,13478,
+26131,4190,
+26132,3843,
+26133,6417,
+26134,13479,
+26135,13480,
+26136,13481,
+26137,6414,
+26138,13482,
+26139,13483,
+26140,13484,
+26141,6421,
+26142,13485,
+26143,3986,
+26144,4248,
+26145,13486,
+26146,13487,
+26147,13488,
+26148,13489,
+26149,1341,
+26150,13490,
+26151,2758,
+26152,4687,
+26153,13491,
+26154,13492,
+26155,13493,
+26156,13494,
+26157,4466,
+26158,13495,
+26159,3422,
+26160,13496,
+26161,6423,
+26162,13497,
+26163,13498,
+26164,6422,
+26165,6425,
+26166,6424,
+26167,13499,
+26168,13500,
+26169,13501,
+26170,13502,
+26171,13503,
+26172,4582,
+26173,13504,
+26174,3905,
+26175,13505,
+26176,13506,
+26177,6429,
+26178,8493,
+26179,2019,
+26180,13507,
+26181,13508,
+26182,13509,
+26183,13510,
+26184,13511,
+26185,13512,
+26186,13513,
+26187,2251,
+26188,3335,
+26189,13514,
+26190,13515,
+26191,6430,
+26192,13516,
+26193,13517,
+26194,3314,
+26195,3947,
+26196,6428,
+26197,4369,
+26198,6431,
+26199,6433,
+26200,13518,
+26201,13519,
+26202,3742,
+26203,13520,
+26204,13521,
+26205,8859,
+26206,13522,
+26207,6427,
+26208,13523,
+26209,6432,
+26210,13524,
+26211,13525,
+26212,3837,
+26213,13526,
+26214,2035,
+26215,13527,
+26216,1252,
+26217,13528,
+26218,13529,
+26219,13530,
+26220,13531,
+26221,13532,
+26222,3060,
+26223,2271,
+26224,3849,
+26225,13533,
+26226,13534,
+26227,13535,
+26228,3172,
+26229,13536,
+26230,2262,
+26231,6434,
+26232,13537,
+26233,13538,
+26234,4550,
+26235,13539,
+26236,13540,
+26237,13541,
+26238,2569,
+26239,13542,
+26240,13543,
+26241,13544,
+26242,4384,
+26243,13545,
+26244,6435,
+26245,13546,
+26246,13547,
+26247,3883,
+26248,8790,
+26249,9384,
+26250,13548,
+26251,13549,
+26252,6436,
+26253,13550,
+26254,13551,
+26255,13552,
+26256,13553,
+26257,3461,
+26258,13554,
+26259,13555,
+26260,13556,
+26261,13557,
+26262,2928,
+26263,960,
+26264,13558,
+26265,13559,
+26266,13560,
+26267,13561,
+26268,13562,
+26269,6438,
+26270,13563,
+26271,13564,
+26272,13565,
+26273,13566,
+26274,7801,
+26275,13567,
+26276,13568,
+26277,13569,
+26278,13570,
+26279,6437,
+26280,7389,
+26281,13571,
+26282,13572,
+26283,8794,
+26284,13573,
+26285,13574,
+26286,2845,
+26287,13575,
+26288,13576,
+26289,13577,
+26290,13578,
+26291,13579,
+26292,1042,
+26293,13580,
+26294,13581,
+26295,13582,
+26296,13583,
+26297,5979,
+26298,13584,
+26299,13585,
+26300,13586,
+26301,13587,
+26302,6439,
+26303,13588,
+26304,13589,
+26305,13590,
+26306,13591,
+26307,13592,
+26308,9383,
+26309,13593,
+26310,9862,
+26311,9382,
+26312,13594,
+26313,8654,
+26314,13595,
+26315,13596,
+26316,13597,
+26317,13598,
+26318,13599,
+26319,13600,
+26320,13601,
+26321,13602,
+26322,13603,
+26323,13604,
+26324,13605,
+26325,13606,
+26326,9385,
+26327,13607,
+26328,13608,
+26329,3462,
+26330,13609,
+26331,6440,
+26332,6441,
+26333,3063,
+26334,13610,
+26335,13611,
+26336,8167,
+26337,13612,
+26338,13613,
+26339,13614,
+26340,13615,
+26341,13616,
+26342,6442,
+26343,13617,
+26344,13618,
+26345,6443,
+26346,13619,
+26347,13620,
+26348,8466,
+26349,13621,
+26350,13622,
+26351,13623,
+26352,4350,
+26353,13624,
+26354,3191,
+26355,4158,
+26356,1783,
+26357,13625,
+26358,13626,
+26359,6420,
+26360,8508,
+26361,1187,
+26362,13627,
+26363,13628,
+26364,2723,
+26365,13629,
+26366,4411,
+26367,3641,
+26368,4683,
+26369,13630,
+26370,13631,
+26371,8028,
+26372,13632,
+26373,13633,
+26374,13634,
+26375,13635,
+26376,4357,
+26377,4277,
+26378,6515,
+26379,2996,
+26380,13636,
+26381,1691,
+26382,13637,
+26383,13638,
+26384,6532,
+26385,13639,
+26386,13640,
+26387,13641,
+26388,3500,
+26389,6542,
+26390,13642,
+26391,2485,
+26392,13643,
+26393,13644,
+26394,13645,
+26395,3756,
+26396,13646,
+26397,1236,
+26398,13647,
+26399,3065,
+26400,13648,
+26401,13649,
+26402,13650,
+26403,13651,
+26404,13652,
+26405,13653,
+26406,6572,
+26407,9412,
+26408,2849,
+26409,13654,
+26410,3779,
+26411,2828,
+26412,1063,
+26413,4416,
+26414,13655,
+26415,3468,
+26416,13656,
+26417,4587,
+26418,13657,
+26419,13658,
+26420,3058,
+26421,1571,
+26422,13659,
+26423,13660,
+26424,13661,
+26425,13662,
+26426,2063,
+26427,13663,
+26428,13664,
+26429,4011,
+26430,13665,
+26431,13666,
+26432,3306,
+26433,13667,
+26434,4374,
+26435,3203,
+26436,13668,
+26437,13669,
+26438,1734,
+26439,13670,
+26440,6228,
+26441,3317,
+26442,13671,
+26443,13672,
+26444,6225,
+26445,13673,
+26446,2521,
+26447,3998,
+26448,1163,
+26449,1384,
+26450,13674,
+26451,6226,
+26452,13675,
+26453,13676,
+26454,4457,
+26455,13677,
+26456,13678,
+26457,13679,
+26458,13680,
+26459,13681,
+26460,1540,
+26461,13682,
+26462,6227,
+26463,3471,
+26464,1751,
+26465,3656,
+26466,13683,
+26467,13684,
+26468,13685,
+26469,2463,
+26470,13686,
+26471,13687,
+26472,4119,
+26473,6229,
+26474,6232,
+26475,13688,
+26476,13689,
+26477,1907,
+26478,13690,
+26479,1046,
+26480,2221,
+26481,7884,
+26482,6415,
+26483,6233,
+26484,13691,
+26485,6236,
+26486,13692,
+26487,6241,
+26488,13693,
+26489,13694,
+26490,13695,
+26491,13696,
+26492,6242,
+26493,13697,
+26494,3518,
+26495,1008,
+26496,13698,
+26497,2078,
+26498,13699,
+26499,13700,
+26500,1810,
+26501,13701,
+26502,13702,
+26503,6231,
+26504,13703,
+26505,3752,
+26506,13704,
+26507,6240,
+26508,13705,
+26509,13706,
+26510,13707,
+26511,13708,
+26512,3845,
+26513,13709,
+26514,13710,
+26515,13711,
+26516,13712,
+26517,4494,
+26518,13713,
+26519,2591,
+26520,6234,
+26521,13714,
+26522,2747,
+26523,13715,
+26524,1876,
+26525,4517,
+26526,6238,
+26527,13716,
+26528,13717,
+26529,13718,
+26530,3447,
+26531,4393,
+26532,13719,
+26533,6230,
+26534,13720,
+26535,6235,
+26536,6237,
+26537,13721,
+26538,3126,
+26539,1664,
+26540,13722,
+26541,6239,
+26542,13723,
+26543,2410,
+26544,6248,
+26545,13724,
+26546,13725,
+26547,6253,
+26548,13726,
+26549,6251,
+26550,2127,
+26551,2114,
+26552,6257,
+26553,13727,
+26554,13728,
+26555,13729,
+26556,13730,
+26557,13731,
+26558,13732,
+26559,13733,
+26560,13734,
+26561,6260,
+26562,13735,
+26563,6256,
+26564,1123,
+26565,13736,
+26566,13737,
+26567,13738,
+26568,13739,
+26569,13740,
+26570,13741,
+26571,13742,
+26572,13743,
+26573,13744,
+26574,13745,
+26575,995,
+26576,2838,
+26577,1735,
+26578,3073,
+26579,3225,
+26580,3260,
+26581,13746,
+26582,13747,
+26583,13748,
+26584,6245,
+26585,6250,
+26586,6252,
+26587,13749,
+26588,1866,
+26589,6254,
+26590,4690,
+26591,13750,
+26592,2910,
+26593,13751,
+26594,6258,
+26595,13752,
+26596,13753,
+26597,1200,
+26598,13754,
+26599,13755,
+26600,13756,
+26601,6247,
+26602,13757,
+26603,13758,
+26604,2144,
+26605,13759,
+26606,13760,
+26607,2383,
+26608,6243,
+26609,4600,
+26610,13761,
+26611,2625,
+26612,1208,
+26613,13762,
+26614,13763,
+26615,13764,
+26616,13765,
+26617,13766,
+26618,13767,
+26619,13768,
+26620,13769,
+26621,6261,
+26622,13770,
+26623,3416,
+26624,6255,
+26625,13771,
+26626,13772,
+26627,13773,
+26628,13774,
+26629,4421,
+26630,13775,
+26631,1107,
+26632,4444,
+26633,6244,
+26634,6246,
+26635,1519,
+26636,6249,
+26637,13776,
+26638,6259,
+26639,2467,
+26640,13777,
+26641,3470,
+26642,13778,
+26643,3485,
+26644,13779,
+26645,13780,
+26646,3067,
+26647,2528,
+26648,13781,
+26649,13782,
+26650,13783,
+26651,13784,
+26652,13785,
+26653,6271,
+26654,13786,
+26655,13787,
+26656,13788,
+26657,3950,
+26658,13789,
+26659,13790,
+26660,13791,
+26661,13792,
+26662,13793,
+26663,13794,
+26664,13795,
+26665,6280,
+26666,4585,
+26667,13796,
+26668,13797,
+26669,13798,
+26670,13799,
+26671,13800,
+26672,13801,
+26673,13802,
+26674,6262,
+26675,6263,
+26676,13803,
+26677,13804,
+26678,13805,
+26679,4130,
+26680,1922,
+26681,1780,
+26682,13806,
+26683,13807,
+26684,1772,
+26685,4375,
+26686,6277,
+26687,13808,
+26688,6276,
+26689,6274,
+26690,1865,
+26691,3621,
+26692,6268,
+26693,3765,
+26694,2431,
+26695,13809,
+26696,963,
+26697,6279,
+26698,6278,
+26699,13810,
+26700,4637,
+26701,13811,
+26702,6266,
+26703,13812,
+26704,3674,
+26705,3292,
+26706,13813,
+26707,1997,
+26708,2220,
+26709,6272,
+26710,13814,
+26711,13815,
+26712,13816,
+26713,13817,
+26714,13818,
+26715,13819,
+26716,13820,
+26717,13821,
+26718,13822,
+26719,13823,
+26720,6264,
+26721,6265,
+26722,6267,
+26723,1430,
+26724,6269,
+26725,3138,
+26726,6273,
+26727,6275,
+26728,2177,
+26729,4619,
+26730,13824,
+26731,6286,
+26732,13825,
+26733,13826,
+26734,13827,
+26735,13828,
+26736,13829,
+26737,13830,
+26738,13831,
+26739,13832,
+26740,6283,
+26741,13833,
+26742,3681,
+26743,6284,
+26744,13834,
+26745,13835,
+26746,13836,
+26747,13837,
+26748,13838,
+26749,13839,
+26750,13840,
+26751,13841,
+26752,13842,
+26753,2563,
+26754,13843,
+26755,6270,
+26756,13844,
+26757,2748,
+26758,1019,
+26759,13845,
+26760,13846,
+26761,13847,
+26762,13848,
+26763,13849,
+26764,13850,
+26765,13851,
+26766,13852,
+26767,6282,
+26768,13853,
+26769,13854,
+26770,13855,
+26771,6285,
+26772,13856,
+26773,13857,
+26774,13858,
+26775,1788,
+26776,9322,
+26777,13859,
+26778,13860,
+26779,13861,
+26780,13862,
+26781,8565,
+26782,13863,
+26783,9325,
+26784,13864,
+26785,13865,
+26786,3339,
+26787,13866,
+26788,13867,
+26789,13868,
+26790,2771,
+26791,3823,
+26792,2513,
+26793,13869,
+26794,13870,
+26795,13871,
+26796,13872,
+26797,3560,
+26798,13873,
+26799,3632,
+26800,3968,
+26801,13874,
+26802,13875,
+26803,3448,
+26804,13876,
+26805,6281,
+26806,13877,
+26807,13878,
+26808,13879,
+26809,13880,
+26810,13881,
+26811,13882,
+26812,13883,
+26813,13884,
+26814,13885,
+26815,13886,
+26816,2143,
+26817,13887,
+26818,6287,
+26819,13888,
+26820,13889,
+26821,13890,
+26822,13891,
+26823,13892,
+26824,13893,
+26825,2787,
+26826,13894,
+26827,3076,
+26828,13895,
+26829,1872,
+26830,13896,
+26831,13897,
+26832,13898,
+26833,13899,
+26834,1023,
+26835,13900,
+26836,13901,
+26837,4661,
+26838,9323,
+26839,8799,
+26840,2079,
+26841,13902,
+26842,2992,
+26843,13903,
+26844,13904,
+26845,13905,
+26846,13906,
+26847,7886,
+26848,3607,
+26849,13907,
+26850,13908,
+26851,6298,
+26852,13909,
+26853,13910,
+26854,13911,
+26855,8818,
+26856,13912,
+26857,13913,
+26858,13914,
+26859,13915,
+26860,13916,
+26861,13917,
+26862,3302,
+26863,13918,
+26864,6294,
+26865,2509,
+26866,13919,
+26867,13920,
+26868,13921,
+26869,2384,
+26870,13922,
+26871,13923,
+26872,13924,
+26873,6292,
+26874,1840,
+26875,13925,
+26876,6289,
+26877,13926,
+26878,13927,
+26879,13928,
+26880,13929,
+26881,6296,
+26882,13930,
+26883,13931,
+26884,13932,
+26885,4181,
+26886,13933,
+26887,13934,
+26888,13935,
+26889,13936,
+26890,13937,
+26891,6295,
+26892,13938,
+26893,4529,
+26894,4626,
+26895,9331,
+26896,6299,
+26897,13939,
+26898,2184,
+26899,13940,
+26900,13941,
+26901,13942,
+26902,13943,
+26903,13944,
+26904,13945,
+26905,13946,
+26906,13947,
+26907,13948,
+26908,13949,
+26909,13950,
+26910,13951,
+26911,6290,
+26912,6291,
+26913,13952,
+26914,13953,
+26915,13954,
+26916,6293,
+26917,13955,
+26918,13956,
+26919,13957,
+26920,13958,
+26921,13959,
+26922,13960,
+26923,13961,
+26924,13962,
+26925,3719,
+26926,13963,
+26927,13964,
+26928,4147,
+26929,13965,
+26930,13966,
+26931,13967,
+26932,6310,
+26933,13968,
+26934,13969,
+26935,13970,
+26936,13971,
+26937,6301,
+26938,13972,
+26939,13973,
+26940,13974,
+26941,1325,
+26942,13975,
+26943,1342,
+26944,13976,
+26945,13977,
+26946,6303,
+26947,13978,
+26948,13979,
+26949,13980,
+26950,13981,
+26951,13982,
+26952,13983,
+26953,13984,
+26954,8702,
+26955,13985,
+26956,13986,
+26957,13987,
+26958,13988,
+26959,13989,
+26960,13990,
+26961,13991,
+26962,13992,
+26963,7934,
+26964,3955,
+26965,13993,
+26966,13994,
+26967,6297,
+26968,13995,
+26969,13996,
+26970,1315,
+26971,13997,
+26972,13998,
+26973,6304,
+26974,2510,
+26975,13999,
+26976,6302,
+26977,14000,
+26978,14001,
+26979,6317,
+26980,14002,
+26981,14003,
+26982,6316,
+26983,14004,
+26984,9333,
+26985,14005,
+26986,14006,
+26987,6306,
+26988,14007,
+26989,8714,
+26990,6288,
+26991,14008,
+26992,14009,
+26993,6300,
+26994,14010,
+26995,14011,
+26996,14012,
+26997,8047,
+26998,14013,
+26999,2361,
+27000,6309,
+27001,6318,
+27002,14014,
+27003,14015,
+27004,2636,
+27005,14016,
+27006,14017,
+27007,14018,
+27008,6307,
+27009,14019,
+27010,1728,
+27011,14020,
+27012,6305,
+27013,14021,
+27014,4289,
+27015,6312,
+27016,6313,
+27017,6315,
+27018,14022,
+27019,14023,
+27020,14024,
+27021,6331,
+27022,14025,
+27023,14026,
+27024,14027,
+27025,14028,
+27026,14029,
+27027,14030,
+27028,2481,
+27029,6329,
+27030,14031,
+27031,14032,
+27032,6308,
+27033,14033,
+27034,14034,
+27035,6319,
+27036,1020,
+27037,14035,
+27038,14036,
+27039,14037,
+27040,14038,
+27041,14039,
+27042,14040,
+27043,14041,
+27044,14042,
+27045,14043,
+27046,14044,
+27047,6320,
+27048,4422,
+27049,14045,
+27050,9320,
+27051,6322,
+27052,14046,
+27053,6323,
+27054,8448,
+27055,14047,
+27056,14048,
+27057,6325,
+27058,14049,
+27059,14050,
+27060,2618,
+27061,14051,
+27062,14052,
+27063,3217,
+27064,14053,
+27065,14054,
+27066,14055,
+27067,6321,
+27068,14056,
+27069,14057,
+27070,14058,
+27071,9334,
+27072,14059,
+27073,6326,
+27074,14060,
+27075,14061,
+27076,14062,
+27077,14063,
+27078,14064,
+27079,14065,
+27080,14066,
+27081,14067,
+27082,6327,
+27083,7975,
+27084,6311,
+27085,8407,
+27086,6314,
+27087,14068,
+27088,1990,
+27089,14069,
+27090,14070,
+27091,14071,
+27092,6324,
+27093,14072,
+27094,14073,
+27095,14074,
+27096,14075,
+27097,14076,
+27098,14077,
+27099,2154,
+27100,14078,
+27101,14079,
+27102,14080,
+27103,6328,
+27104,6330,
+27105,14081,
+27106,14082,
+27107,14083,
+27108,14084,
+27109,14085,
+27110,14086,
+27111,9340,
+27112,14087,
+27113,14088,
+27114,14089,
+27115,14090,
+27116,14091,
+27117,6334,
+27118,14092,
+27119,14093,
+27120,14094,
+27121,14095,
+27122,6338,
+27123,8097,
+27124,14096,
+27125,14097,
+27126,14098,
+27127,14099,
+27128,14100,
+27129,14101,
+27130,14102,
+27131,14103,
+27132,14104,
+27133,1186,
+27134,14105,
+27135,6332,
+27136,14106,
+27137,8874,
+27138,8197,
+27139,14107,
+27140,14108,
+27141,9324,
+27142,14109,
+27143,14110,
+27144,14111,
+27145,14112,
+27146,1611,
+27147,14113,
+27148,14114,
+27149,14115,
+27150,14116,
+27151,14117,
+27152,14118,
+27153,14119,
+27154,14120,
+27155,8254,
+27156,14121,
+27157,14122,
+27158,14123,
+27159,6335,
+27160,6336,
+27161,7756,
+27162,14124,
+27163,14125,
+27164,14126,
+27165,14127,
+27166,8506,
+27167,4450,
+27168,14128,
+27169,2822,
+27170,14129,
+27171,8708,
+27172,14130,
+27173,14131,
+27174,14132,
+27175,14133,
+27176,6348,
+27177,14134,
+27178,1944,
+27179,14135,
+27180,14136,
+27181,14137,
+27182,14138,
+27183,6333,
+27184,14139,
+27185,4232,
+27186,14140,
+27187,14141,
+27188,14142,
+27189,6344,
+27190,14143,
+27191,14144,
+27192,8387,
+27193,8512,
+27194,9335,
+27195,14145,
+27196,14146,
+27197,6347,
+27198,6340,
+27199,14147,
+27200,14148,
+27201,14149,
+27202,14150,
+27203,14151,
+27204,6339,
+27205,14152,
+27206,14153,
+27207,3134,
+27208,9332,
+27209,14154,
+27210,14155,
+27211,8413,
+27212,14156,
+27213,14157,
+27214,14158,
+27215,14159,
+27216,6342,
+27217,14160,
+27218,14161,
+27219,14162,
+27220,14163,
+27221,14164,
+27222,14165,
+27223,14166,
+27224,6349,
+27225,1261,
+27226,14167,
+27227,6343,
+27228,14168,
+27229,14169,
+27230,14170,
+27231,8040,
+27232,14171,
+27233,3933,
+27234,8581,
+27235,14172,
+27236,14173,
+27237,6337,
+27238,14174,
+27239,14175,
+27240,14176,
+27241,14177,
+27242,14178,
+27243,14179,
+27244,14180,
+27245,14181,
+27246,14182,
+27247,14183,
+27248,14184,
+27249,1308,
+27250,14185,
+27251,14186,
+27252,14187,
+27253,14188,
+27254,14189,
+27255,14190,
+27256,14191,
+27257,6346,
+27258,14192,
+27259,14193,
+27260,6350,
+27261,14194,
+27262,14195,
+27263,14196,
+27264,3591,
+27265,14197,
+27266,14198,
+27267,14199,
+27268,3866,
+27269,14200,
+27270,14201,
+27271,14202,
+27272,14203,
+27273,9330,
+27274,14204,
+27275,14205,
+27276,14206,
+27277,14207,
+27278,6345,
+27279,14208,
+27280,6352,
+27281,6351,
+27282,14209,
+27283,14210,
+27284,7861,
+27285,14211,
+27286,14212,
+27287,6354,
+27288,14213,
+27289,14214,
+27290,14215,
+27291,14216,
+27292,9336,
+27293,14217,
+27294,14218,
+27295,14219,
+27296,6341,
+27297,14220,
+27298,8075,
+27299,9348,
+27300,14221,
+27301,14222,
+27302,14223,
+27303,14224,
+27304,14225,
+27305,6353,
+27306,14226,
+27307,6355,
+27308,2767,
+27309,14227,
+27310,14228,
+27311,9881,
+27312,14229,
+27313,14230,
+27314,14231,
+27315,9346,
+27316,14232,
+27317,14233,
+27318,14234,
+27319,14235,
+27320,8353,
+27321,14236,
+27322,14237,
+27323,8082,
+27324,14238,
+27325,14239,
+27326,14240,
+27327,14241,
+27328,14242,
+27329,14243,
+27330,14244,
+27331,7992,
+27332,14245,
+27333,14246,
+27334,14247,
+27335,14248,
+27336,14249,
+27337,14250,
+27338,14251,
+27339,14252,
+27340,14253,
+27341,14254,
+27342,14255,
+27343,14256,
+27344,14257,
+27345,14258,
+27346,14259,
+27347,9349,
+27348,14260,
+27349,14261,
+27350,14262,
+27351,14263,
+27352,14264,
+27353,14265,
+27354,9344,
+27355,9326,
+27356,14266,
+27357,9339,
+27358,9350,
+27359,9329,
+27360,14267,
+27361,14268,
+27362,14269,
+27363,14270,
+27364,14271,
+27365,14272,
+27366,14273,
+27367,9347,
+27368,9328,
+27369,14274,
+27370,9321,
+27371,14275,
+27372,9343,
+27373,14276,
+27374,14277,
+27375,14278,
+27376,14279,
+27377,14280,
+27378,14281,
+27379,9327,
+27380,14282,
+27381,14283,
+27382,14284,
+27383,14285,
+27384,9345,
+27385,14286,
+27386,14287,
+27387,8736,
+27388,14288,
+27389,14289,
+27390,14290,
+27391,14291,
+27392,14292,
+27393,14293,
+27394,14294,
+27395,14295,
+27396,8181,
+27397,14296,
+27398,14297,
+27399,14298,
+27400,14299,
+27401,14300,
+27402,8436,
+27403,14301,
+27404,14302,
+27405,14303,
+27406,14304,
+27407,9341,
+27408,14305,
+27409,14306,
+27410,9337,
+27411,14307,
+27412,14308,
+27413,14309,
+27414,9342,
+27415,14310,
+27416,14311,
+27417,14312,
+27418,14313,
+27419,14314,
+27420,14315,
+27421,14316,
+27422,9338,
+27423,14317,
+27424,3124,
+27425,1361,
+27426,1995,
+27427,3979,
+27428,6577,
+27429,14318,
+27430,14319,
+27431,2936,
+27432,14320,
+27433,14321,
+27434,14322,
+27435,14323,
+27436,14324,
+27437,14325,
+27438,14326,
+27439,14327,
+27440,14328,
+27441,14329,
+27442,4320,
+27443,14330,
+27444,14331,
+27445,14332,
+27446,14333,
+27447,6578,
+27448,14334,
+27449,6579,
+27450,3066,
+27451,14335,
+27452,14336,
+27453,8419,
+27454,2427,
+27455,14337,
+27456,14338,
+27457,14339,
+27458,14340,
+27459,6580,
+27460,14341,
+27461,14342,
+27462,6581,
+27463,3957,
+27464,14343,
+27465,3125,
+27466,14344,
+27467,14345,
+27468,1763,
+27469,14346,
+27470,14347,
+27471,14348,
+27472,8365,
+27473,14349,
+27474,14350,
+27475,14351,
+27476,14352,
+27477,14353,
+27478,14354,
+27479,14355,
+27480,14356,
+27481,6582,
+27482,14357,
+27483,14358,
+27484,14359,
+27485,14360,
+27486,14361,
+27487,9419,
+27488,14362,
+27489,8019,
+27490,4536,
+27491,4510,
+27492,1358,
+27493,1156,
+27494,3827,
+27495,3078,
+27496,14363,
+27497,14364,
+27498,3730,
+27499,14365,
+27500,14366,
+27501,14367,
+27502,14368,
+27503,14369,
+27504,14370,
+27505,14371,
+27506,8537,
+27507,14372,
+27508,14373,
+27509,14374,
+27510,14375,
+27511,8211,
+27512,7987,
+27513,1400,
+27514,14376,
+27515,3509,
+27516,2130,
+27517,14377,
+27518,14378,
+27519,14379,
+27520,14380,
+27521,6358,
+27522,6359,
+27523,4115,
+27524,6361,
+27525,14381,
+27526,1404,
+27527,6360,
+27528,14382,
+27529,4060,
+27530,3449,
+27531,1175,
+27532,14383,
+27533,6364,
+27534,14384,
+27535,14385,
+27536,14386,
+27537,14387,
+27538,6362,
+27539,6363,
+27540,14388,
+27541,14389,
+27542,4530,
+27543,14390,
+27544,7772,
+27545,14391,
+27546,6365,
+27547,6366,
+27548,14392,
+27549,14393,
+27550,9352,
+27551,14394,
+27552,14395,
+27553,6367,
+27554,14396,
+27555,14397,
+27556,9351,
+27557,14398,
+27558,14399,
+27559,14400,
+27560,14401,
+27561,14402,
+27562,6368,
+27563,9354,
+27564,14403,
+27565,14404,
+27566,9353,
+27567,9355,
+27568,14405,
+27569,14406,
+27570,8067,
+27571,6589,
+27572,2938,
+27573,1549,
+27574,14407,
+27575,4218,
+27576,14408,
+27577,14409,
+27578,8463,
+27579,8155,
+27580,14410,
+27581,14411,
+27582,14412,
+27583,1487,
+27584,14413,
+27585,2030,
+27586,6591,
+27587,14414,
+27588,14415,
+27589,4202,
+27590,8367,
+27591,14416,
+27592,14417,
+27593,14418,
+27594,14419,
+27595,3826,
+27596,14420,
+27597,2843,
+27598,14421,
+27599,2756,
+27600,14422,
+27601,14423,
+27602,1533,
+27603,4719,
+27604,1073,
+27605,1080,
+27606,1082,
+27607,3007,
+27608,14424,
+27609,1081,
+27610,14425,
+27611,2736,
+27612,14426,
+27613,14427,
+27614,14428,
+27615,14429,
+27616,14430,
+27617,4434,
+27618,14431,
+27619,14432,
+27620,14433,
+27621,14434,
+27622,14435,
+27623,14436,
+27624,14437,
+27625,14438,
+27626,6484,
+27627,1912,
+27628,14439,
+27629,14440,
+27630,14441,
+27631,3597,
+27632,14442,
+27633,14443,
+27634,14444,
+27635,6485,
+27636,14445,
+27637,6487,
+27638,14446,
+27639,14447,
+27640,14448,
+27641,6488,
+27642,14449,
+27643,14450,
+27644,14451,
+27645,6486,
+27646,14452,
+27647,9408,
+27648,14453,
+27649,14454,
+27650,14455,
+27651,14456,
+27652,14457,
+27653,6489,
+27654,6491,
+27655,6490,
+27656,8813,
+27657,14458,
+27658,14459,
+27659,14460,
+27660,9409,
+27661,6492,
+27662,14461,
+27663,3430,
+27664,4715,
+27665,2806,
+27666,14462,
+27667,2730,
+27668,3095,
+27669,6493,
+27670,2861,
+27671,14463,
+27672,6494,
+27673,6495,
+27674,6496,
+27675,1650,
+27676,14464,
+27677,14465,
+27678,14466,
+27679,1687,
+27680,14467,
+27681,6497,
+27682,3167,
+27683,8394,
+27684,6499,
+27685,14468,
+27686,1883,
+27687,4126,
+27688,956,
+27689,6498,
+27690,6500,
+27691,8423,
+27692,9410,
+27693,14469,
+27694,1419,
+27695,2671,
+27696,3173,
+27697,14470,
+27698,6501,
+27699,14471,
+27700,3491,
+27701,5791,
+27702,14472,
+27703,14473,
+27704,4261,
+27705,14474,
+27706,14475,
+27707,14476,
+27708,14477,
+27709,4847,
+27710,14478,
+27711,14479,
+27712,3666,
+27713,4524,
+27714,3184,
+27715,14480,
+27716,14481,
+27717,14482,
+27718,4852,
+27719,2040,
+27720,14483,
+27721,1905,
+27722,5794,
+27723,14484,
+27724,14485,
+27725,14486,
+27726,14487,
+27727,14488,
+27728,3864,
+27729,14489,
+27730,14490,
+27731,14491,
+27732,5792,
+27733,3328,
+27734,14492,
+27735,1904,
+27736,14493,
+27737,14494,
+27738,14495,
+27739,4061,
+27740,5793,
+27741,3269,
+27742,1800,
+27743,2174,
+27744,1277,
+27745,3818,
+27746,14496,
+27747,14497,
+27748,3603,
+27749,14498,
+27750,14499,
+27751,14500,
+27752,5800,
+27753,5801,
+27754,3749,
+27755,14501,
+27756,14502,
+27757,14503,
+27758,14504,
+27759,14505,
+27760,3584,
+27761,14506,
+27762,2086,
+27763,14507,
+27764,5802,
+27765,14508,
+27766,5803,
+27767,14509,
+27768,14510,
+27769,4005,
+27770,14511,
+27771,14512,
+27772,14513,
+27773,3098,
+27774,1655,
+27775,14514,
+27776,14515,
+27777,3164,
+27778,4177,
+27779,3813,
+27780,14516,
+27781,5796,
+27782,5804,
+27783,14517,
+27784,3371,
+27785,1254,
+27786,14518,
+27787,14519,
+27788,5799,
+27789,14520,
+27790,14521,
+27791,3074,
+27792,5797,
+27793,14522,
+27794,14523,
+27795,6687,
+27796,5798,
+27797,14524,
+27798,14525,
+27799,14526,
+27800,14527,
+27801,3308,
+27802,14528,
+27803,2983,
+27804,14529,
+27805,14530,
+27806,14531,
+27807,1806,
+27808,14532,
+27809,2752,
+27810,14533,
+27811,5795,
+27812,2942,
+27813,2541,
+27814,2688,
+27815,1182,
+27816,14534,
+27817,5805,
+27818,1979,
+27819,2832,
+27820,14535,
+27821,5808,
+27822,2313,
+27823,14536,
+27824,14537,
+27825,5819,
+27826,5813,
+27827,1930,
+27828,14538,
+27829,14539,
+27830,14540,
+27831,14541,
+27832,1645,
+27833,4274,
+27834,14542,
+27835,4557,
+27836,4468,
+27837,1818,
+27838,4437,
+27839,4097,
+27840,14543,
+27841,14544,
+27842,14545,
+27843,14546,
+27844,3972,
+27845,3187,
+27846,14547,
+27847,14548,
+27848,14549,
+27849,3205,
+27850,1147,
+27851,14550,
+27852,2783,
+27853,14551,
+27854,14552,
+27855,14553,
+27856,5806,
+27857,14554,
+27858,14555,
+27859,5820,
+27860,5807,
+27861,1605,
+27862,5815,
+27863,5812,
+27864,14556,
+27865,14557,
+27866,14558,
+27867,1623,
+27868,14559,
+27869,14560,
+27870,2915,
+27871,14561,
+27872,5814,
+27873,2974,
+27874,1135,
+27875,3099,
+27876,14562,
+27877,2883,
+27878,14563,
+27879,14564,
+27880,4607,
+27881,14565,
+27882,2508,
+27883,5817,
+27884,14566,
+27885,14567,
+27886,5818,
+27887,5821,
+27888,3580,
+27889,5811,
+27890,14568,
+27891,4259,
+27892,14569,
+27893,1068,
+27894,6688,
+27895,5809,
+27896,5810,
+27897,14570,
+27898,5816,
+27899,3973,
+27900,3042,
+27901,4406,
+27902,5822,
+27903,14571,
+27904,14572,
+27905,2225,
+27906,14573,
+27907,14574,
+27908,5829,
+27909,14575,
+27910,14576,
+27911,5828,
+27912,14577,
+27913,14578,
+27914,14579,
+27915,4124,
+27916,5825,
+27917,14580,
+27918,5831,
+27919,14581,
+27920,14582,
+27921,14583,
+27922,3282,
+27923,14584,
+27924,14585,
+27925,14586,
+27926,14587,
+27927,3873,
+27928,14588,
+27929,5830,
+27930,5836,
+27931,2700,
+27932,14589,
+27933,14590,
+27934,1523,
+27935,14591,
+27936,14592,
+27937,14593,
+27938,14594,
+27939,14595,
+27940,14596,
+27941,2243,
+27942,14597,
+27943,5824,
+27944,14598,
+27945,14599,
+27946,1952,
+27947,5832,
+27948,14600,
+27949,14601,
+27950,5834,
+27951,14602,
+27952,14603,
+27953,1596,
+27954,4573,
+27955,5840,
+27956,14604,
+27957,5835,
+27958,14605,
+27959,14606,
+27960,14607,
+27961,5823,
+27962,14608,
+27963,2051,
+27964,3726,
+27965,3103,
+27966,2954,
+27967,14609,
+27968,14610,
+27969,2624,
+27970,14611,
+27971,5826,
+27972,14612,
+27973,3120,
+27974,2173,
+27975,2190,
+27976,5827,
+27977,14613,
+27978,4644,
+27979,1193,
+27980,14614,
+27981,5833,
+27982,2102,
+27983,5837,
+27984,14615,
+27985,2048,
+27986,5838,
+27987,2921,
+27988,5839,
+27989,14616,
+27990,14617,
+27991,14618,
+27992,14619,
+27993,4484,
+27994,2352,
+27995,14620,
+27996,5848,
+27997,14621,
+27998,5845,
+27999,14622,
+28000,5849,
+28001,14623,
+28002,14624,
+28003,5851,
+28004,14625,
+28005,14626,
+28006,3061,
+28007,14627,
+28008,14628,
+28009,1917,
+28010,2486,
+28011,14629,
+28012,14630,
+28013,14631,
+28014,1692,
+28015,5842,
+28016,14632,
+28017,14633,
+28018,14634,
+28019,14635,
+28020,4324,
+28021,14636,
+28022,14637,
+28023,1882,
+28024,2255,
+28025,9180,
+28026,14638,
+28027,14639,
+28028,5850,
+28029,14640,
+28030,14641,
+28031,14642,
+28032,14643,
+28033,14644,
+28034,3696,
+28035,14645,
+28036,14646,
+28037,2908,
+28038,14647,
+28039,9179,
+28040,3944,
+28041,3359,
+28042,14648,
+28043,14649,
+28044,4260,
+28045,14650,
+28046,3902,
+28047,14651,
+28048,14652,
+28049,5841,
+28050,14653,
+28051,5846,
+28052,5847,
+28053,3644,
+28054,14654,
+28055,14655,
+28056,14656,
+28057,14657,
+28058,14658,
+28059,3617,
+28060,14659,
+28061,2495,
+28062,5843,
+28063,2553,
+28064,5844,
+28065,3807,
+28066,14660,
+28067,2006,
+28068,1460,
+28069,14661,
+28070,3278,
+28071,2168,
+28072,4456,
+28073,3301,
+28074,1693,
+28075,5864,
+28076,14662,
+28077,14663,
+28078,5866,
+28079,4077,
+28080,14664,
+28081,14665,
+28082,4161,
+28083,14666,
+28084,14667,
+28085,1892,
+28086,14668,
+28087,14669,
+28088,1931,
+28089,14670,
+28090,14671,
+28091,14672,
+28092,14673,
+28093,14674,
+28094,14675,
+28095,5857,
+28096,1486,
+28097,14676,
+28098,14677,
+28099,14678,
+28100,4650,
+28101,5854,
+28102,3946,
+28103,5853,
+28104,14679,
+28105,14680,
+28106,14681,
+28107,2597,
+28108,3613,
+28109,14682,
+28110,14683,
+28111,14684,
+28112,14685,
+28113,3454,
+28114,14686,
+28115,14687,
+28116,14688,
+28117,14689,
+28118,2874,
+28119,14690,
+28120,3623,
+28121,5862,
+28122,14691,
+28123,14692,
+28124,14693,
+28125,5861,
+28126,5855,
+28127,14694,
+28128,5858,
+28129,1422,
+28130,14695,
+28131,14696,
+28132,4286,
+28133,14697,
+28134,5860,
+28135,14698,
+28136,14699,
+28137,14700,
+28138,8286,
+28139,4224,
+28140,1382,
+28141,14701,
+28142,1993,
+28143,14702,
+28144,14703,
+28145,3367,
+28146,14704,
+28147,1345,
+28148,14705,
+28149,8772,
+28150,9186,
+28151,2049,
+28152,14706,
+28153,4086,
+28154,8404,
+28155,3648,
+28156,6689,
+28157,14707,
+28158,14708,
+28159,14709,
+28160,14710,
+28161,14711,
+28162,14712,
+28163,14713,
+28164,14714,
+28165,3170,
+28166,14715,
+28167,14716,
+28168,14717,
+28169,14718,
+28170,4331,
+28171,14719,
+28172,5865,
+28173,4658,
+28174,5856,
+28175,14720,
+28176,2166,
+28177,5859,
+28178,14721,
+28179,14722,
+28180,4299,
+28181,14723,
+28182,5863,
+28183,3377,
+28184,14724,
+28185,14725,
+28186,5852,
+28187,14726,
+28188,14727,
+28189,4298,
+28190,14728,
+28191,14729,
+28192,3195,
+28193,1544,
+28194,14730,
+28195,4415,
+28196,1146,
+28197,5877,
+28198,8607,
+28199,14731,
+28200,14732,
+28201,3793,
+28202,14733,
+28203,5867,
+28204,7782,
+28205,3787,
+28206,14734,
+28207,1750,
+28208,14735,
+28209,14736,
+28210,5876,
+28211,14737,
+28212,2391,
+28213,14738,
+28214,14739,
+28215,14740,
+28216,4275,
+28217,14741,
+28218,2801,
+28219,14742,
+28220,14743,
+28221,14744,
+28222,8035,
+28223,14745,
+28224,14746,
+28225,14747,
+28226,14748,
+28227,2953,
+28228,5878,
+28229,14749,
+28230,14750,
+28231,14751,
+28232,14752,
+28233,14753,
+28234,14754,
+28235,14755,
+28236,14756,
+28237,3701,
+28238,5869,
+28239,14757,
+28240,14758,
+28241,14759,
+28242,14760,
+28243,5874,
+28244,5875,
+28245,14761,
+28246,1973,
+28247,14762,
+28248,3923,
+28249,14763,
+28250,14764,
+28251,4448,
+28252,14765,
+28253,14766,
+28254,9181,
+28255,5872,
+28256,14767,
+28257,14768,
+28258,14769,
+28259,14770,
+28260,14771,
+28261,14772,
+28262,14773,
+28263,14774,
+28264,14775,
+28265,14776,
+28266,14777,
+28267,5870,
+28268,14778,
+28269,14779,
+28270,5868,
+28271,8555,
+28272,14780,
+28273,14781,
+28274,14782,
+28275,14783,
+28276,14784,
+28277,14785,
+28278,14786,
+28279,14787,
+28280,14788,
+28281,14789,
+28282,14790,
+28283,14791,
+28284,14792,
+28285,14793,
+28286,3734,
+28287,3393,
+28288,14794,
+28289,14795,
+28290,14796,
+28291,2446,
+28292,14797,
+28293,2167,
+28294,5873,
+28295,14798,
+28296,14799,
+28297,1731,
+28298,14800,
+28299,14801,
+28300,14802,
+28301,14803,
+28302,14804,
+28303,5893,
+28304,4343,
+28305,14805,
+28306,14806,
+28307,14807,
+28308,14808,
+28309,14809,
+28310,8885,
+28311,14810,
+28312,5881,
+28313,14811,
+28314,14812,
+28315,14813,
+28316,2616,
+28317,7974,
+28318,14814,
+28319,5895,
+28320,14815,
+28321,14816,
+28322,4206,
+28323,14817,
+28324,14818,
+28325,5885,
+28326,14819,
+28327,5886,
+28328,14820,
+28329,14821,
+28330,3863,
+28331,14822,
+28332,14823,
+28333,14824,
+28334,14825,
+28335,3538,
+28336,14826,
+28337,5880,
+28338,5871,
+28339,14827,
+28340,5891,
+28341,14828,
+28342,3255,
+28343,5889,
+28344,14829,
+28345,14830,
+28346,2890,
+28347,5888,
+28348,14831,
+28349,5887,
+28350,14832,
+28351,14833,
+28352,14834,
+28353,1313,
+28354,5894,
+28355,14835,
+28356,7779,
+28357,8328,
+28358,14836,
+28359,1474,
+28360,14837,
+28361,14838,
+28362,14839,
+28363,4649,
+28364,7869,
+28365,14840,
+28366,9025,
+28367,5892,
+28368,14841,
+28369,1985,
+28370,14842,
+28371,4655,
+28372,3618,
+28373,6568,
+28374,14843,
+28375,5890,
+28376,14844,
+28377,14845,
+28378,1871,
+28379,14846,
+28380,14847,
+28381,14848,
+28382,4556,
+28383,5879,
+28384,5882,
+28385,2721,
+28386,5884,
+28387,14849,
+28388,2674,
+28389,2479,
+28390,2679,
+28391,14850,
+28392,1118,
+28393,3589,
+28394,14851,
+28395,14852,
+28396,8011,
+28397,14853,
+28398,14854,
+28399,8850,
+28400,14855,
+28401,14856,
+28402,8484,
+28403,14857,
+28404,1455,
+28405,14858,
+28406,14859,
+28407,8264,
+28408,9184,
+28409,5901,
+28410,14860,
+28411,14861,
+28412,14862,
+28413,14863,
+28414,14864,
+28415,8311,
+28416,14865,
+28417,8762,
+28418,3022,
+28419,14866,
+28420,14867,
+28421,14868,
+28422,3072,
+28423,14869,
+28424,14870,
+28425,5907,
+28426,14871,
+28427,14872,
+28428,14873,
+28429,14874,
+28430,14875,
+28431,2640,
+28432,14876,
+28433,14877,
+28434,14878,
+28435,2519,
+28436,4102,
+28437,5900,
+28438,14879,
+28439,14880,
+28440,14881,
+28441,14882,
+28442,8369,
+28443,14883,
+28444,14884,
+28445,14885,
+28446,14886,
+28447,14887,
+28448,2833,
+28449,14888,
+28450,8001,
+28451,8220,
+28452,5899,
+28453,14889,
+28454,14890,
+28455,14891,
+28456,14892,
+28457,5908,
+28458,5906,
+28459,2725,
+28460,8888,
+28461,5883,
+28462,14893,
+28463,5902,
+28464,14894,
+28465,3477,
+28466,8822,
+28467,4453,
+28468,14895,
+28469,14896,
+28470,5903,
+28471,14897,
+28472,8091,
+28473,14898,
+28474,14899,
+28475,14900,
+28476,14901,
+28477,14902,
+28478,4131,
+28479,8095,
+28480,14903,
+28481,9674,
+28482,14904,
+28483,14905,
+28484,14906,
+28485,14907,
+28486,5897,
+28487,5898,
+28488,14908,
+28489,14909,
+28490,14910,
+28491,5904,
+28492,14911,
+28493,3770,
+28494,14912,
+28495,14913,
+28496,14914,
+28497,8382,
+28498,14915,
+28499,14916,
+28500,8116,
+28501,14917,
+28502,14918,
+28503,14919,
+28504,2956,
+28505,9175,
+28506,14920,
+28507,14921,
+28508,3118,
+28509,14922,
+28510,2657,
+28511,14923,
+28512,14924,
+28513,14925,
+28514,5896,
+28515,14926,
+28516,8453,
+28517,14927,
+28518,2579,
+28519,14928,
+28520,14929,
+28521,14930,
+28522,14931,
+28523,14932,
+28524,14933,
+28525,3593,
+28526,1238,
+28527,9185,
+28528,8172,
+28529,14934,
+28530,5913,
+28531,14935,
+28532,5905,
+28533,14936,
+28534,14937,
+28535,9194,
+28536,5912,
+28537,14938,
+28538,5915,
+28539,14939,
+28540,5914,
+28541,14940,
+28542,14941,
+28543,9187,
+28544,8462,
+28545,14942,
+28546,14943,
+28547,14944,
+28548,1267,
+28549,14945,
+28550,8102,
+28551,8196,
+28552,1247,
+28553,5909,
+28554,14946,
+28555,14947,
+28556,5911,
+28557,5910,
+28558,2989,
+28559,14948,
+28560,14949,
+28561,14950,
+28562,14951,
+28563,14952,
+28564,14953,
+28565,14954,
+28566,14955,
+28567,8093,
+28568,14956,
+28569,14957,
+28570,14958,
+28571,14959,
+28572,2472,
+28573,14960,
+28574,14961,
+28575,14962,
+28576,9189,
+28577,4395,
+28578,14963,
+28579,14964,
+28580,8804,
+28581,14965,
+28582,14966,
+28583,5918,
+28584,14967,
+28585,9442,
+28586,14968,
+28587,14969,
+28588,14970,
+28589,14971,
+28590,9182,
+28591,14972,
+28592,14973,
+28593,7876,
+28594,14974,
+28595,975,
+28596,14975,
+28597,14976,
+28598,5920,
+28599,14977,
+28600,14978,
+28601,5919,
+28602,14979,
+28603,14980,
+28604,14981,
+28605,14982,
+28606,14983,
+28607,14984,
+28608,2071,
+28609,8886,
+28610,5921,
+28611,8361,
+28612,14985,
+28613,14986,
+28614,14987,
+28615,14988,
+28616,14989,
+28617,5917,
+28618,14990,
+28619,14991,
+28620,14992,
+28621,14993,
+28622,14994,
+28623,14995,
+28624,14996,
+28625,5916,
+28626,1117,
+28627,14997,
+28628,14998,
+28629,8491,
+28630,14999,
+28631,15000,
+28632,8357,
+28633,15001,
+28634,15002,
+28635,9867,
+28636,15003,
+28637,15004,
+28638,5924,
+28639,8054,
+28640,5925,
+28641,5922,
+28642,15005,
+28643,15006,
+28644,8557,
+28645,15007,
+28646,15008,
+28647,15009,
+28648,15010,
+28649,15011,
+28650,15012,
+28651,8193,
+28652,15013,
+28653,15014,
+28654,5923,
+28655,5926,
+28656,8593,
+28657,7760,
+28658,15015,
+28659,15016,
+28660,15017,
+28661,15018,
+28662,15019,
+28663,15020,
+28664,15021,
+28665,15022,
+28666,8092,
+28667,15023,
+28668,9178,
+28669,15024,
+28670,8275,
+28671,15025,
+28672,15026,
+28673,15027,
+28674,15028,
+28675,15029,
+28676,15030,
+28677,9193,
+28678,9188,
+28679,15031,
+28680,15032,
+28681,8661,
+28682,15033,
+28683,9190,
+28684,15034,
+28685,15035,
+28686,15036,
+28687,9183,
+28688,15037,
+28689,3064,
+28690,15038,
+28691,15039,
+28692,15040,
+28693,7759,
+28694,15041,
+28695,15042,
+28696,9177,
+28697,15043,
+28698,5927,
+28699,5929,
+28700,15044,
+28701,8212,
+28702,15045,
+28703,9196,
+28704,9195,
+28705,15046,
+28706,15047,
+28707,5928,
+28708,15048,
+28709,15049,
+28710,15050,
+28711,9176,
+28712,9198,
+28713,15051,
+28714,15052,
+28715,15053,
+28716,15054,
+28717,15055,
+28718,15056,
+28719,15057,
+28720,9870,
+28721,15058,
+28722,9197,
+28723,15059,
+28724,15060,
+28725,5931,
+28726,15061,
+28727,15062,
+28728,15063,
+28729,5930,
+28730,15064,
+28731,15065,
+28732,15066,
+28733,15067,
+28734,8186,
+28735,15068,
+28736,15069,
+28737,15070,
+28738,15071,
+28739,9174,
+28740,9192,
+28741,15072,
+28742,15073,
+28743,15074,
+28744,15075,
+28745,15076,
+28746,15077,
+28747,15078,
+28748,1849,
+28749,15079,
+28750,15080,
+28751,5932,
+28752,15081,
+28753,8454,
+28754,15082,
+28755,15083,
+28756,15084,
+28757,8203,
+28758,15085,
+28759,15086,
+28760,8550,
+28761,15087,
+28762,15088,
+28763,15089,
+28764,15090,
+28765,9199,
+28766,5933,
+28767,15091,
+28768,15092,
+28769,15093,
+28770,15094,
+28771,8585,
+28772,8280,
+28773,15095,
+28774,15096,
+28775,9191,
+28776,15097,
+28777,15098,
+28778,15099,
+28779,2053,
+28780,6639,
+28781,2805,
+28782,15100,
+28783,1447,
+28784,2023,
+28785,15101,
+28786,15102,
+28787,15103,
+28788,15104,
+28789,2610,
+28790,4401,
+28791,15105,
+28792,2291,
+28793,15106,
+28794,15107,
+28795,15108,
+28796,4643,
+28797,15109,
+28798,4377,
+28799,1178,
+28800,6604,
+28801,15110,
+28802,15111,
+28803,15112,
+28804,15113,
+28805,6419,
+28806,15114,
+28807,15115,
+28808,15116,
+28809,2646,
+28810,1337,
+28811,15117,
+28812,15118,
+28813,15119,
+28814,4096,
+28815,15120,
+28816,15121,
+28817,15122,
+28818,1241,
+28819,15123,
+28820,3213,
+28821,2376,
+28822,6606,
+28823,15124,
+28824,15125,
+28825,4554,
+28826,15126,
+28827,15127,
+28828,6605,
+28829,6607,
+28830,15128,
+28831,15129,
+28832,15130,
+28833,15131,
+28834,15132,
+28835,15133,
+28836,15134,
+28837,15135,
+28838,15136,
+28839,15137,
+28840,15138,
+28841,15139,
+28842,15140,
+28843,6611,
+28844,2325,
+28845,3602,
+28846,2971,
+28847,2283,
+28848,15141,
+28849,6612,
+28850,15142,
+28851,1127,
+28852,15143,
+28853,15144,
+28854,15145,
+28855,6610,
+28856,4425,
+28857,1476,
+28858,15146,
+28859,6608,
+28860,2559,
+28861,1288,
+28862,15147,
+28863,15148,
+28864,6609,
+28865,3501,
+28866,2478,
+28867,3665,
+28868,15149,
+28869,15150,
+28870,15151,
+28871,15152,
+28872,2587,
+28873,15153,
+28874,6614,
+28875,15154,
+28876,15155,
+28877,15156,
+28878,15157,
+28879,8611,
+28880,15158,
+28881,15159,
+28882,15160,
+28883,15161,
+28884,15162,
+28885,15163,
+28886,15164,
+28887,15165,
+28888,1949,
+28889,2494,
+28890,15166,
+28891,4593,
+28892,15167,
+28893,15168,
+28894,15169,
+28895,4085,
+28896,15170,
+28897,15171,
+28898,15172,
+28899,15173,
+28900,2379,
+28901,15174,
+28902,1616,
+28903,3342,
+28904,6613,
+28905,2039,
+28906,15175,
+28907,3615,
+28908,2254,
+28909,3235,
+28910,15176,
+28911,3862,
+28912,15177,
+28913,15178,
+28914,15179,
+28915,15180,
+28916,8570,
+28917,15181,
+28918,15182,
+28919,3738,
+28920,15183,
+28921,2988,
+28922,15184,
+28923,15185,
+28924,15186,
+28925,1670,
+28926,15187,
+28927,15188,
+28928,15189,
+28929,15190,
+28930,15191,
+28931,15192,
+28932,15193,
+28933,15194,
+28934,15195,
+28935,15196,
+28936,15197,
+28937,4082,
+28938,1903,
+28939,15198,
+28940,15199,
+28941,15200,
+28942,15201,
+28943,15202,
+28944,6615,
+28945,15203,
+28946,15204,
+28947,6616,
+28948,15205,
+28949,2005,
+28950,6617,
+28951,15206,
+28952,6640,
+28953,1059,
+28954,1654,
+28955,15207,
+28956,15208,
+28957,15209,
+28958,15210,
+28959,15211,
+28960,15212,
+28961,8613,
+28962,15213,
+28963,15214,
+28964,15215,
+28965,15216,
+28966,2186,
+28967,15217,
+28968,15218,
+28969,15219,
+28970,15220,
+28971,15221,
+28972,15222,
+28973,15223,
+28974,15224,
+28975,6618,
+28976,4111,
+28977,6619,
+28978,15225,
+28979,15226,
+28980,15227,
+28981,15228,
+28982,3222,
+28983,15229,
+28984,15230,
+28985,15231,
+28986,15232,
+28987,15233,
+28988,15234,
+28989,15235,
+28990,15236,
+28991,15237,
+28992,15238,
+28993,15239,
+28994,15240,
+28995,15241,
+28996,15242,
+28997,6623,
+28998,15243,
+28999,15244,
+29000,15245,
+29001,8226,
+29002,6625,
+29003,15246,
+29004,2018,
+29005,15247,
+29006,2136,
+29007,15248,
+29008,15249,
+29009,15250,
+29010,9430,
+29011,15251,
+29012,15252,
+29013,15253,
+29014,15254,
+29015,15255,
+29016,15256,
+29017,15257,
+29018,15258,
+29019,15259,
+29020,6621,
+29021,15260,
+29022,3312,
+29023,15261,
+29024,15262,
+29025,15263,
+29026,9018,
+29027,15264,
+29028,2751,
+29029,15265,
+29030,6641,
+29031,4470,
+29032,6622,
+29033,7918,
+29034,15266,
+29035,15267,
+29036,9429,
+29037,15268,
+29038,4594,
+29039,15269,
+29040,15270,
+29041,15271,
+29042,6624,
+29043,6620,
+29044,15272,
+29045,15273,
+29046,15274,
+29047,15275,
+29048,6626,
+29049,15276,
+29050,6627,
+29051,15277,
+29052,15278,
+29053,3320,
+29054,15279,
+29055,15280,
+29056,15281,
+29057,15282,
+29058,15283,
+29059,15284,
+29060,3861,
+29061,15285,
+29062,15286,
+29063,15287,
+29064,15288,
+29065,15289,
+29066,4007,
+29067,15290,
+29068,15291,
+29069,15292,
+29070,15293,
+29071,4053,
+29072,15294,
+29073,15295,
+29074,8744,
+29075,15296,
+29076,3254,
+29077,15297,
+29078,15298,
+29079,9431,
+29080,6628,
+29081,3844,
+29082,15299,
+29083,15300,
+29084,15301,
+29085,15302,
+29086,15303,
+29087,3459,
+29088,6632,
+29089,15304,
+29090,15305,
+29091,15306,
+29092,15307,
+29093,15308,
+29094,15309,
+29095,15310,
+29096,6631,
+29097,15311,
+29098,15312,
+29099,15313,
+29100,969,
+29101,15314,
+29102,15315,
+29103,15316,
+29104,15317,
+29105,8444,
+29106,15318,
+29107,6629,
+29108,15319,
+29109,6630,
+29110,15320,
+29111,15321,
+29112,15322,
+29113,6642,
+29114,15323,
+29115,15324,
+29116,15325,
+29117,15326,
+29118,7815,
+29119,15327,
+29120,15328,
+29121,9432,
+29122,15329,
+29123,3223,
+29124,15330,
+29125,15331,
+29126,15332,
+29127,15333,
+29128,7866,
+29129,15334,
+29130,15335,
+29131,15336,
+29132,15337,
+29133,15338,
+29134,2576,
+29135,15339,
+29136,15340,
+29137,15341,
+29138,8473,
+29139,15342,
+29140,6634,
+29141,4105,
+29142,15343,
+29143,15344,
+29144,15345,
+29145,8556,
+29146,15346,
+29147,15347,
+29148,9433,
+29149,15348,
+29150,15349,
+29151,8743,
+29152,6633,
+29153,15350,
+29154,15351,
+29155,15352,
+29156,15353,
+29157,4402,
+29158,7775,
+29159,6635,
+29160,15354,
+29161,15355,
+29162,15356,
+29163,15357,
+29164,15358,
+29165,8863,
+29166,5014,
+29167,15359,
+29168,15360,
+29169,15361,
+29170,15362,
+29171,15363,
+29172,8029,
+29173,15364,
+29174,15365,
+29175,15366,
+29176,15367,
+29177,6636,
+29178,15368,
+29179,15369,
+29180,8124,
+29181,15370,
+29182,9434,
+29183,15371,
+29184,15372,
+29185,15373,
+29186,15374,
+29187,15375,
+29188,15376,
+29189,15377,
+29190,1045,
+29191,15378,
+29192,15379,
+29193,15380,
+29194,15381,
+29195,15382,
+29196,15383,
+29197,8521,
+29198,15384,
+29199,15385,
+29200,8262,
+29201,15386,
+29202,15387,
+29203,15388,
+29204,15389,
+29205,15390,
+29206,15391,
+29207,15392,
+29208,15393,
+29209,15394,
+29210,15395,
+29211,8192,
+29212,15396,
+29213,6637,
+29214,15397,
+29215,15398,
+29216,15399,
+29217,15400,
+29218,15401,
+29219,15402,
+29220,15403,
+29221,15404,
+29222,15405,
+29223,15406,
+29224,6638,
+29225,15407,
+29226,4611,
+29227,15408,
+29228,2945,
+29229,15409,
+29230,15410,
+29231,15411,
+29232,6508,
+29233,953,
+29234,8592,
+29235,15412,
+29236,15413,
+29237,2339,
+29238,1715,
+29239,4150,
+29240,993,
+29241,1498,
+29242,8712,
+29243,4713,
+29244,15414,
+29245,3489,
+29246,7910,
+29247,5789,
+29248,15415,
+29249,15416,
+29250,15417,
+29251,15418,
+29252,15419,
+29253,15420,
+29254,15421,
+29255,3019,
+29256,1009,
+29257,15422,
+29258,15423,
+29259,15424,
+29260,2951,
+29261,6505,
+29262,15425,
+29263,15426,
+29264,15427,
+29265,15428,
+29266,6506,
+29267,15429,
+29268,15430,
+29269,15431,
+29270,6507,
+29271,15432,
+29272,9411,
+29273,4073,
+29274,15433,
+29275,2916,
+29276,15434,
+29277,6468,
+29278,15435,
+29279,2837,
+29280,15436,
+29281,2840,
+29282,2489,
+29283,15437,
+29284,15438,
+29285,15439,
+29286,6469,
+29287,2852,
+29288,15440,
+29289,3838,
+29290,15441,
+29291,15442,
+29292,15443,
+29293,15444,
+29294,6466,
+29295,6470,
+29296,15445,
+29297,15446,
+29298,3381,
+29299,15447,
+29300,15448,
+29301,3104,
+29302,15449,
+29303,15450,
+29304,15451,
+29305,3627,
+29306,3853,
+29307,15452,
+29308,15453,
+29309,8396,
+29310,6471,
+29311,6472,
+29312,3865,
+29313,2514,
+29314,15454,
+29315,15455,
+29316,6473,
+29317,15456,
+29318,15457,
+29319,15458,
+29320,15459,
+29321,15460,
+29322,1534,
+29323,6474,
+29324,15461,
+29325,6475,
+29326,15462,
+29327,6476,
+29328,15463,
+29329,15464,
+29330,6477,
+29331,15465,
+29332,15466,
+29333,15467,
+29334,9024,
+29335,15468,
+29336,15469,
+29337,15470,
+29338,15471,
+29339,15472,
+29340,15473,
+29341,15474,
+29342,15475,
+29343,6467,
+29344,15476,
+29345,15477,
+29346,7889,
+29347,15478,
+29348,15479,
+29349,15480,
+29350,15481,
+29351,8620,
+29352,15482,
+29353,15483,
+29354,15484,
+29355,15485,
+29356,3209,
+29357,5615,
+29358,15486,
+29359,1621,
+29360,5616,
+29361,15487,
+29362,15488,
+29363,15489,
+29364,5617,
+29365,15490,
+29366,4625,
+29367,5618,
+29368,5619,
+29369,4273,
+29370,15491,
+29371,15492,
+29372,15493,
+29373,15494,
+29374,15495,
+29375,15496,
+29376,8879,
+29377,5621,
+29378,2430,
+29379,5620,
+29380,1459,
+29381,15497,
+29382,15498,
+29383,15499,
+29384,1056,
+29385,15500,
+29386,15501,
+29387,15502,
+29388,15503,
+29389,5623,
+29390,5622,
+29391,15504,
+29392,1971,
+29393,15505,
+29394,5624,
+29395,15506,
+29396,15507,
+29397,15508,
+29398,15509,
+29399,1808,
+29400,15510,
+29401,2304,
+29402,15511,
+29403,15512,
+29404,15513,
+29405,15514,
+29406,2911,
+29407,15515,
+29408,1940,
+29409,2199,
+29410,15516,
+29411,15517,
+29412,15518,
+29413,15519,
+29414,15520,
+29415,15521,
+29416,5625,
+29417,5627,
+29418,15522,
+29419,15523,
+29420,1535,
+29421,3886,
+29422,3391,
+29423,5626,
+29424,4505,
+29425,4321,
+29426,5628,
+29427,5632,
+29428,5629,
+29429,15524,
+29430,15525,
+29431,5630,
+29432,2517,
+29433,8630,
+29434,5634,
+29435,5635,
+29436,2482,
+29437,7741,
+29438,15526,
+29439,15527,
+29440,15528,
+29441,5631,
+29442,15529,
+29443,5633,
+29444,15530,
+29445,15531,
+29446,15532,
+29447,15533,
+29448,15534,
+29449,15535,
+29450,5639,
+29451,15536,
+29452,15537,
+29453,15538,
+29454,2589,
+29455,15539,
+29456,15540,
+29457,15541,
+29458,15542,
+29459,5637,
+29460,15543,
+29461,5642,
+29462,1221,
+29463,5636,
+29464,15544,
+29465,15545,
+29466,15546,
+29467,2770,
+29468,1161,
+29469,5641,
+29470,5640,
+29471,15547,
+29472,15548,
+29473,5638,
+29474,5643,
+29475,15549,
+29476,15550,
+29477,5645,
+29478,15551,
+29479,15552,
+29480,15553,
+29481,3988,
+29482,4588,
+29483,2733,
+29484,5646,
+29485,15554,
+29486,3908,
+29487,15555,
+29488,15556,
+29489,5648,
+29490,15557,
+29491,15558,
+29492,1958,
+29493,15559,
+29494,8757,
+29495,6356,
+29496,5647,
+29497,5644,
+29498,15560,
+29499,9111,
+29500,15561,
+29501,15562,
+29502,1984,
+29503,4342,
+29504,15563,
+29505,9109,
+29506,15564,
+29507,15565,
+29508,8767,
+29509,8490,
+29510,15566,
+29511,15567,
+29512,15568,
+29513,15569,
+29514,15570,
+29515,15571,
+29516,15572,
+29517,5650,
+29518,15573,
+29519,15574,
+29520,5649,
+29521,15575,
+29522,6357,
+29523,15576,
+29524,15577,
+29525,15578,
+29526,15579,
+29527,5651,
+29528,15580,
+29529,15581,
+29530,15582,
+29531,15583,
+29532,15584,
+29533,15585,
+29534,15586,
+29535,15587,
+29536,5652,
+29537,15588,
+29538,15589,
+29539,15590,
+29540,15591,
+29541,15592,
+29542,15593,
+29543,15594,
+29544,7890,
+29545,15595,
+29546,9110,
+29547,9112,
+29548,5653,
+29549,3572,
+29550,15596,
+29551,5654,
+29552,8354,
+29553,15597,
+29554,8036,
+29555,15598,
+29556,15599,
+29557,8235,
+29558,15600,
+29559,9108,
+29560,8505,
+29561,15601,
+29562,8543,
+29563,8641,
+29564,9114,
+29565,15602,
+29566,5655,
+29567,15603,
+29568,9113,
+29569,15604,
+29570,15605,
+29571,15606,
+29572,4041,
+29573,15607,
+29574,15608,
+29575,2673,
+29576,15609,
+29577,4310,
+29578,15610,
+29579,3750,
+29580,15611,
+29581,15612,
+29582,6168,
+29583,15613,
+29584,15614,
+29585,6169,
+29586,15615,
+29587,15616,
+29588,15617,
+29589,15618,
+29590,2288,
+29591,15619,
+29592,15620,
+29593,15621,
+29594,15622,
+29595,2705,
+29596,15623,
+29597,15624,
+29598,15625,
+29599,6172,
+29600,15626,
+29601,15627,
+29602,6171,
+29603,15628,
+29604,15629,
+29605,15630,
+29606,15631,
+29607,15632,
+29608,15633,
+29609,3735,
+29610,15634,
+29611,2746,
+29612,15635,
+29613,15636,
+29614,6170,
+29615,1996,
+29616,3907,
+29617,15637,
+29618,2602,
+29619,6177,
+29620,15638,
+29621,15639,
+29622,15640,
+29623,6176,
+29624,15641,
+29625,15642,
+29626,6188,
+29627,1130,
+29628,15643,
+29629,15644,
+29630,15645,
+29631,15646,
+29632,6178,
+29633,15647,
+29634,6174,
+29635,15648,
+29636,15649,
+29637,15650,
+29638,15651,
+29639,15652,
+29640,6180,
+29641,6179,
+29642,3315,
+29643,15653,
+29644,15654,
+29645,4485,
+29646,15655,
+29647,6173,
+29648,1606,
+29649,6175,
+29650,15656,
+29651,15657,
+29652,15658,
+29653,15659,
+29654,15660,
+29655,15661,
+29656,15662,
+29657,6182,
+29658,15663,
+29659,15664,
+29660,15665,
+29661,15666,
+29662,6187,
+29663,15667,
+29664,4584,
+29665,15668,
+29666,15669,
+29667,15670,
+29668,15671,
+29669,6181,
+29670,15672,
+29671,6186,
+29672,15673,
+29673,6185,
+29674,15674,
+29675,15675,
+29676,15676,
+29677,1003,
+29678,15677,
+29679,15678,
+29680,15679,
+29681,15680,
+29682,6189,
+29683,15681,
+29684,15682,
+29685,15683,
+29686,15684,
+29687,15685,
+29688,15686,
+29689,15687,
+29690,15688,
+29691,15689,
+29692,15690,
+29693,15691,
+29694,8640,
+29695,15692,
+29696,15693,
+29697,15694,
+29698,15695,
+29699,3183,
+29700,15696,
+29701,2480,
+29702,2520,
+29703,15697,
+29704,15698,
+29705,2617,
+29706,6184,
+29707,15699,
+29708,15700,
+29709,15701,
+29710,15702,
+29711,6190,
+29712,3563,
+29713,15703,
+29714,15704,
+29715,15705,
+29716,15706,
+29717,15707,
+29718,15708,
+29719,15709,
+29720,15710,
+29721,15711,
+29722,6200,
+29723,6199,
+29724,15712,
+29725,15713,
+29726,15714,
+29727,15715,
+29728,15716,
+29729,15717,
+29730,4638,
+29731,15718,
+29732,15719,
+29733,6194,
+29734,6193,
+29735,15720,
+29736,6195,
+29737,15721,
+29738,6191,
+29739,15722,
+29740,6198,
+29741,15723,
+29742,6197,
+29743,15724,
+29744,6196,
+29745,15725,
+29746,15726,
+29747,2590,
+29748,3158,
+29749,3006,
+29750,2948,
+29751,15727,
+29752,15728,
+29753,15729,
+29754,15730,
+29755,15731,
+29756,3178,
+29757,15732,
+29758,15733,
+29759,9312,
+29760,15734,
+29761,6201,
+29762,15735,
+29763,15736,
+29764,15737,
+29765,15738,
+29766,15739,
+29767,15740,
+29768,15741,
+29769,15742,
+29770,15743,
+29771,9308,
+29772,15744,
+29773,15745,
+29774,15746,
+29775,15747,
+29776,15748,
+29777,15749,
+29778,15750,
+29779,15751,
+29780,15752,
+29781,6204,
+29782,15753,
+29783,6203,
+29784,15754,
+29785,6205,
+29786,1966,
+29787,6192,
+29788,6202,
+29789,15755,
+29790,3275,
+29791,3299,
+29792,15756,
+29793,15757,
+29794,15758,
+29795,8541,
+29796,15759,
+29797,15760,
+29798,15761,
+29799,15762,
+29800,15763,
+29801,8741,
+29802,8298,
+29803,15764,
+29804,15765,
+29805,6207,
+29806,15766,
+29807,15767,
+29808,1854,
+29809,15768,
+29810,15769,
+29811,15770,
+29812,15771,
+29813,15772,
+29814,4135,
+29815,6206,
+29816,15773,
+29817,15774,
+29818,15775,
+29819,15776,
+29820,15777,
+29821,15778,
+29822,6208,
+29823,15779,
+29824,6211,
+29825,6212,
+29826,15780,
+29827,2544,
+29828,15781,
+29829,15782,
+29830,15783,
+29831,6213,
+29832,15784,
+29833,9313,
+29834,15785,
+29835,6214,
+29836,15786,
+29837,15787,
+29838,6210,
+29839,15788,
+29840,6218,
+29841,15789,
+29842,15790,
+29843,15791,
+29844,15792,
+29845,15793,
+29846,15794,
+29847,15795,
+29848,15796,
+29849,15797,
+29850,15798,
+29851,15799,
+29852,6209,
+29853,15800,
+29854,6215,
+29855,15801,
+29856,15802,
+29857,15803,
+29858,15804,
+29859,9307,
+29860,15805,
+29861,15806,
+29862,9314,
+29863,6219,
+29864,6216,
+29865,6217,
+29866,15807,
+29867,15808,
+29868,15809,
+29869,15810,
+29870,15811,
+29871,15812,
+29872,8020,
+29873,15813,
+29874,15814,
+29875,15815,
+29876,15816,
+29877,15817,
+29878,15818,
+29879,15819,
+29880,15820,
+29881,15821,
+29882,6221,
+29883,15822,
+29884,15823,
+29885,9311,
+29886,15824,
+29887,15825,
+29888,15826,
+29889,15827,
+29890,15828,
+29891,15829,
+29892,15830,
+29893,15831,
+29894,15832,
+29895,15833,
+29896,15834,
+29897,15835,
+29898,8428,
+29899,15836,
+29900,15837,
+29901,15838,
+29902,15839,
+29903,9309,
+29904,15840,
+29905,15841,
+29906,6220,
+29907,15842,
+29908,9315,
+29909,15843,
+29910,15844,
+29911,15845,
+29912,15846,
+29913,15847,
+29914,9316,
+29915,15848,
+29916,1832,
+29917,15849,
+29918,6962,
+29919,15850,
+29920,6963,
+29921,15851,
+29922,3023,
+29923,1013,
+29924,3226,
+29925,15852,
+29926,3728,
+29927,15853,
+29928,15854,
+29929,15855,
+29930,15856,
+29931,15857,
+29932,15858,
+29933,15859,
+29934,3804,
+29935,6403,
+29936,15860,
+29937,15861,
+29938,15862,
+29939,15863,
+29940,6404,
+29941,15864,
+29942,3038,
+29943,1356,
+29944,15865,
+29945,15866,
+29946,15867,
+29947,15868,
+29948,15869,
+29949,15870,
+29950,15871,
+29951,6405,
+29952,15872,
+29953,15873,
+29954,15874,
+29955,15875,
+29956,4488,
+29957,15876,
+29958,15877,
+29959,15878,
+29960,15879,
+29961,15880,
+29962,15881,
+29963,15882,
+29964,9381,
+29965,5253,
+29966,15883,
+29967,6406,
+29968,15884,
+29969,6407,
+29970,15885,
+29971,6408,
+29972,15886,
+29973,15887,
+29974,15888,
+29975,15889,
+29976,1733,
+29977,5368,
+29978,3374,
+29979,15890,
+29980,3651,
+29981,15891,
+29982,15892,
+29983,3379,
+29984,15893,
+29985,15894,
+29986,15895,
+29987,7792,
+29988,15896,
+29989,3380,
+29990,15897,
+29991,15898,
+29992,4264,
+29993,3483,
+29994,15899,
+29995,1697,
+29996,6964,
+29997,1067,
+29998,15900,
+29999,5940,
+30000,3650,
+30001,4270,
+30002,2122,
+30003,3363,
+30004,15901,
+30005,1480,
+30006,15902,
+30007,2867,
+30008,1482,
+30009,15903,
+30010,6776,
+30011,1986,
+30012,15904,
+30013,15905,
+30014,6166,
+30015,15906,
+30016,6777,
+30017,15907,
+30018,15908,
+30019,15909,
+30020,15910,
+30021,1230,
+30022,15911,
+30023,15912,
+30024,6780,
+30025,15913,
+30026,15914,
+30027,6779,
+30028,2232,
+30029,15915,
+30030,6778,
+30031,3782,
+30032,15916,
+30033,15917,
+30034,15918,
+30035,15919,
+30036,2960,
+30037,15920,
+30038,15921,
+30039,15922,
+30040,15923,
+30041,2621,
+30042,5022,
+30043,6781,
+30044,4030,
+30045,8335,
+30046,15924,
+30047,15925,
+30048,15926,
+30049,15927,
+30050,7746,
+30051,15928,
+30052,15929,
+30053,2683,
+30054,3079,
+30055,15930,
+30056,15931,
+30057,15932,
+30058,1609,
+30059,8014,
+30060,15933,
+30061,15934,
+30062,15935,
+30063,15936,
+30064,15937,
+30065,15938,
+30066,6782,
+30067,15939,
+30068,1296,
+30069,15940,
+30070,7857,
+30071,15941,
+30072,2064,
+30073,6783,
+30074,15942,
+30075,15943,
+30076,15944,
+30077,15945,
+30078,15946,
+30079,6164,
+30080,15947,
+30081,15948,
+30082,15949,
+30083,6784,
+30084,15950,
+30085,15951,
+30086,2175,
+30087,7819,
+30088,15952,
+30089,15953,
+30090,15954,
+30091,7110,
+30092,15955,
+30093,15956,
+30094,15957,
+30095,3455,
+30096,15958,
+30097,4176,
+30098,7008,
+30099,15959,
+30100,7009,
+30101,15960,
+30102,7010,
+30103,2575,
+30104,15961,
+30105,1768,
+30106,2301,
+30107,15962,
+30108,15963,
+30109,7012,
+30110,15964,
+30111,2930,
+30112,7011,
+30113,4122,
+30114,15965,
+30115,7014,
+30116,983,
+30117,2235,
+30118,15966,
+30119,15967,
+30120,15968,
+30121,15969,
+30122,15970,
+30123,4198,
+30124,7013,
+30125,15971,
+30126,1330,
+30127,1669,
+30128,7020,
+30129,7019,
+30130,3010,
+30131,7015,
+30132,7016,
+30133,1350,
+30134,15972,
+30135,15973,
+30136,7017,
+30137,4495,
+30138,15974,
+30139,15975,
+30140,3630,
+30141,2305,
+30142,2085,
+30143,15976,
+30144,15977,
+30145,15978,
+30146,7022,
+30147,7021,
+30148,7018,
+30149,1128,
+30150,15979,
+30151,4513,
+30152,4253,
+30153,2278,
+30154,3207,
+30155,15980,
+30156,15981,
+30157,7024,
+30158,15982,
+30159,15983,
+30160,15984,
+30161,15985,
+30162,4128,
+30163,15986,
+30164,4555,
+30165,1938,
+30166,7023,
+30167,15987,
+30168,1530,
+30169,8134,
+30170,15988,
+30171,3685,
+30172,15989,
+30173,15990,
+30174,3013,
+30175,15991,
+30176,15992,
+30177,15993,
+30178,2538,
+30179,7025,
+30180,7028,
+30181,15994,
+30182,7027,
+30183,7030,
+30184,7026,
+30185,15995,
+30186,2003,
+30187,7029,
+30188,15996,
+30189,15997,
+30190,15998,
+30191,15999,
+30192,3592,
+30193,7032,
+30194,16000,
+30195,16001,
+30196,1274,
+30197,16002,
+30198,16003,
+30199,16004,
+30200,16005,
+30201,1085,
+30202,16006,
+30203,16007,
+30204,7033,
+30205,16008,
+30206,16009,
+30207,7034,
+30208,7036,
+30209,1380,
+30210,9646,
+30211,7031,
+30212,16010,
+30213,7037,
+30214,16011,
+30215,16012,
+30216,16013,
+30217,16014,
+30218,7040,
+30219,7937,
+30220,7038,
+30221,8704,
+30222,16015,
+30223,16016,
+30224,7035,
+30225,16017,
+30226,16018,
+30227,16019,
+30228,16020,
+30229,7043,
+30230,16021,
+30231,7039,
+30232,7042,
+30233,7044,
+30234,16022,
+30235,7045,
+30236,16023,
+30237,16024,
+30238,9650,
+30239,3792,
+30240,7048,
+30241,7831,
+30242,7047,
+30243,16025,
+30244,2623,
+30245,7041,
+30246,3444,
+30247,8363,
+30248,16026,
+30249,1396,
+30250,1114,
+30251,3588,
+30252,16027,
+30253,7050,
+30254,16028,
+30255,16029,
+30256,7051,
+30257,16030,
+30258,16031,
+30259,7056,
+30260,4463,
+30261,7053,
+30262,16032,
+30263,16033,
+30264,3214,
+30265,16034,
+30266,16035,
+30267,9651,
+30268,7046,
+30269,16036,
+30270,7055,
+30271,7052,
+30272,7049,
+30273,16037,
+30274,8232,
+30275,7054,
+30276,16038,
+30277,16039,
+30278,9647,
+30279,9648,
+30280,16040,
+30281,9649,
+30282,16041,
+30283,16042,
+30284,948,
+30285,7057,
+30286,16043,
+30287,16044,
+30288,16045,
+30289,16046,
+30290,16047,
+30291,16048,
+30292,7059,
+30293,16049,
+30294,7061,
+30295,16050,
+30296,9644,
+30297,16051,
+30298,16052,
+30299,16053,
+30300,7060,
+30301,16054,
+30302,7058,
+30303,7758,
+30304,16055,
+30305,16056,
+30306,8706,
+30307,4043,
+30308,9643,
+30309,8838,
+30310,16057,
+30311,9645,
+30312,16058,
+30313,9654,
+30314,16059,
+30315,7062,
+30316,8675,
+30317,9652,
+30318,9653,
+30319,7063,
+30320,8751,
+30321,8549,
+30322,9655,
+30323,16060,
+30324,16061,
+30325,16062,
+30326,16063,
+30327,16064,
+30328,1864,
+30329,16065,
+30330,16066,
+30331,1448,
+30332,7913,
+30333,994,
+30334,996,
+30335,16067,
+30336,16068,
+30337,16069,
+30338,4400,
+30339,16070,
+30340,1445,
+30341,16071,
+30342,2213,
+30343,2015,
+30344,6957,
+30345,16072,
+30346,16073,
+30347,1753,
+30348,16074,
+30349,16075,
+30350,6958,
+30351,16076,
+30352,16077,
+30353,947,
+30354,16078,
+30355,6959,
+30356,16079,
+30357,16080,
+30358,3743,
+30359,16081,
+30360,16082,
+30361,6960,
+30362,7717,
+30363,16083,
+30364,16084,
+30365,16085,
+30366,16086,
+30367,16087,
+30368,16088,
+30369,16089,
+30370,16090,
+30371,16091,
+30372,6961,
+30373,16092,
+30374,16093,
+30375,16094,
+30376,16095,
+30377,16096,
+30378,16097,
+30379,16098,
+30380,16099,
+30381,16100,
+30382,3011,
+30383,16101,
+30384,16102,
+30385,4580,
+30386,7112,
+30387,16103,
+30388,7113,
+30389,16104,
+30390,16105,
+30391,16106,
+30392,9664,
+30393,16107,
+30394,8858,
+30395,16108,
+30396,16109,
+30397,16110,
+30398,16111,
+30399,2808,
+30400,16112,
+30401,16113,
+30402,4288,
+30403,16114,
+30404,16115,
+30405,4560,
+30406,2985,
+30407,16116,
+30408,4244,
+30409,16117,
+30410,4205,
+30411,16118,
+30412,16119,
+30413,6795,
+30414,966,
+30415,4438,
+30416,4087,
+30417,2131,
+30418,1927,
+30419,16120,
+30420,2437,
+30421,16121,
+30422,1730,
+30423,1442,
+30424,2957,
+30425,16122,
+30426,16123,
+30427,3385,
+30428,16124,
+30429,16125,
+30430,8814,
+30431,2768,
+30432,16126,
+30433,8125,
+30434,16127,
+30435,8068,
+30436,8370,
+30437,6796,
+30438,16128,
+30439,8259,
+30440,16129,
+30441,16130,
+30442,16131,
+30443,16132,
+30444,16133,
+30445,16134,
+30446,2850,
+30447,1505,
+30448,16135,
+30449,6744,
+30450,2729,
+30451,16136,
+30452,4528,
+30453,16137,
+30454,16138,
+30455,16139,
+30456,3917,
+30457,6747,
+30458,16140,
+30459,16141,
+30460,2959,
+30461,16142,
+30462,1563,
+30463,16143,
+30464,16144,
+30465,3384,
+30466,16145,
+30467,16146,
+30468,6745,
+30469,16147,
+30470,16148,
+30471,6748,
+30472,6749,
+30473,2753,
+30474,16149,
+30475,2369,
+30476,16150,
+30477,6746,
+30478,16151,
+30479,16152,
+30480,16153,
+30481,16154,
+30482,16155,
+30483,16156,
+30484,16157,
+30485,16158,
+30486,16159,
+30487,16160,
+30488,16161,
+30489,6752,
+30490,6750,
+30491,16162,
+30492,16163,
+30493,16164,
+30494,16165,
+30495,4487,
+30496,2788,
+30497,16166,
+30498,6751,
+30499,16167,
+30500,16168,
+30501,16169,
+30502,6754,
+30503,16170,
+30504,4420,
+30505,4044,
+30506,16171,
+30507,16172,
+30508,16173,
+30509,6753,
+30510,16174,
+30511,2773,
+30512,16175,
+30513,16176,
+30514,16177,
+30515,16178,
+30516,16179,
+30517,6755,
+30518,2433,
+30519,2331,
+30520,6756,
+30521,16180,
+30522,3658,
+30523,16181,
+30524,4100,
+30525,16182,
+30526,16183,
+30527,16184,
+30528,4642,
+30529,4503,
+30530,16185,
+30531,6760,
+30532,16186,
+30533,16187,
+30534,16188,
+30535,6759,
+30536,16189,
+30537,16190,
+30538,16191,
+30539,16192,
+30540,16193,
+30541,16194,
+30542,16195,
+30543,9860,
+30544,6757,
+30545,6758,
+30546,16196,
+30547,16197,
+30548,16198,
+30549,16199,
+30550,16200,
+30551,16201,
+30552,16202,
+30553,16203,
+30554,6761,
+30555,2261,
+30556,16204,
+30557,16205,
+30558,9455,
+30559,16206,
+30560,16207,
+30561,3492,
+30562,6763,
+30563,1532,
+30564,16208,
+30565,6764,
+30566,2851,
+30567,16209,
+30568,6762,
+30569,16210,
+30570,16211,
+30571,2223,
+30572,1166,
+30573,16212,
+30574,16213,
+30575,16214,
+30576,16215,
+30577,16216,
+30578,16217,
+30579,16218,
+30580,16219,
+30581,16220,
+30582,16221,
+30583,16222,
+30584,16223,
+30585,1538,
+30586,16224,
+30587,16225,
+30588,16226,
+30589,6767,
+30590,4720,
+30591,6765,
+30592,6768,
+30593,16227,
+30594,16228,
+30595,16229,
+30596,2798,
+30597,1303,
+30598,16230,
+30599,16231,
+30600,16232,
+30601,16233,
+30602,16234,
+30603,16235,
+30604,6769,
+30605,6766,
+30606,3878,
+30607,16236,
+30608,16237,
+30609,6770,
+30610,2718,
+30611,16238,
+30612,16239,
+30613,16240,
+30614,16241,
+30615,16242,
+30616,9454,
+30617,16243,
+30618,16244,
+30619,16245,
+30620,16246,
+30621,16247,
+30622,8308,
+30623,6771,
+30624,6772,
+30625,16248,
+30626,5269,
+30627,16249,
+30628,16250,
+30629,3026,
+30630,16251,
+30631,3139,
+30632,16252,
+30633,4596,
+30634,1450,
+30635,16253,
+30636,3495,
+30637,9863,
+30638,16254,
+30639,16255,
+30640,6773,
+30641,16256,
+30642,16257,
+30643,3676,
+30644,16258,
+30645,6774,
+30646,16259,
+30647,16260,
+30648,16261,
+30649,16262,
+30650,16263,
+30651,4433,
+30652,9456,
+30653,6775,
+30654,16264,
+30655,7550,
+30656,16265,
+30657,16266,
+30658,16267,
+30659,16268,
+30660,16269,
+30661,16270,
+30662,16271,
+30663,9869,
+30664,16272,
+30665,16273,
+30666,16274,
+30667,16275,
+30668,16276,
+30669,5015,
+30670,16277,
+30671,16278,
+30672,16279,
+30673,16280,
+30674,16281,
+30675,16282,
+30676,16283,
+30677,16284,
+30678,16285,
+30679,1318,
+30680,16286,
+30681,16287,
+30682,8864,
+30683,2737,
+30684,7114,
+30685,16288,
+30686,16289,
+30687,16290,
+30688,16291,
+30689,16292,
+30690,3407,
+30691,4186,
+30692,16293,
+30693,4521,
+30694,16294,
+30695,6938,
+30696,16295,
+30697,2311,
+30698,16296,
+30699,2196,
+30700,6939,
+30701,1547,
+30702,950,
+30703,8107,
+30704,16297,
+30705,16298,
+30706,16299,
+30707,3398,
+30708,16300,
+30709,16301,
+30710,6690,
+30711,16302,
+30712,6691,
+30713,16303,
+30714,16304,
+30715,16305,
+30716,16306,
+30717,3848,
+30718,1612,
+30719,2432,
+30720,6692,
+30721,2706,
+30722,3305,
+30723,16307,
+30724,16308,
+30725,16309,
+30726,16310,
+30727,16311,
+30728,16312,
+30729,6693,
+30730,16313,
+30731,16314,
+30732,3093,
+30733,2368,
+30734,16315,
+30735,16316,
+30736,16317,
+30737,6696,
+30738,3001,
+30739,16318,
+30740,4089,
+30741,16319,
+30742,4614,
+30743,6694,
+30744,6695,
+30745,16320,
+30746,4107,
+30747,16321,
+30748,6699,
+30749,6700,
+30750,16322,
+30751,6704,
+30752,16323,
+30753,16324,
+30754,16325,
+30755,6708,
+30756,16326,
+30757,6706,
+30758,6714,
+30759,4489,
+30760,16327,
+30761,6709,
+30762,16328,
+30763,16329,
+30764,6707,
+30765,6698,
+30766,16330,
+30767,16331,
+30768,2986,
+30769,16332,
+30770,16333,
+30771,16334,
+30772,3045,
+30773,16335,
+30774,16336,
+30775,3362,
+30776,4373,
+30777,6701,
+30778,6702,
+30779,6703,
+30780,6705,
+30781,16337,
+30782,2532,
+30783,16338,
+30784,1316,
+30785,16339,
+30786,16340,
+30787,9896,
+30788,16341,
+30789,1857,
+30790,16342,
+30791,6716,
+30792,16343,
+30793,16344,
+30794,16345,
+30795,16346,
+30796,6717,
+30797,16347,
+30798,6710,
+30799,16348,
+30800,6715,
+30801,16349,
+30802,3847,
+30803,16350,
+30804,16351,
+30805,3499,
+30806,6712,
+30807,6713,
+30808,16352,
+30809,16353,
+30810,16354,
+30811,16355,
+30812,16356,
+30813,3938,
+30814,16357,
+30815,16358,
+30816,16359,
+30817,16360,
+30818,16361,
+30819,16362,
+30820,9449,
+30821,16363,
+30822,16364,
+30823,16365,
+30824,9445,
+30825,16366,
+30826,6718,
+30827,2619,
+30828,4247,
+30829,6711,
+30830,3218,
+30831,8698,
+30832,16367,
+30833,16368,
+30834,16369,
+30835,16370,
+30836,16371,
+30837,16372,
+30838,16373,
+30839,2146,
+30840,16374,
+30841,16375,
+30842,16376,
+30843,16377,
+30844,2993,
+30845,16378,
+30846,16379,
+30847,16380,
+30848,16381,
+30849,16382,
+30850,16383,
+30851,16384,
+30852,16385,
+30853,16386,
+30854,16387,
+30855,6722,
+30856,16388,
+30857,1488,
+30858,16389,
+30859,16390,
+30860,2652,
+30861,952,
+30862,3550,
+30863,16391,
+30864,16392,
+30865,1047,
+30866,16393,
+30867,6720,
+30868,16394,
+30869,16395,
+30870,16396,
+30871,3740,
+30872,1475,
+30873,16397,
+30874,6721,
+30875,6719,
+30876,6723,
+30877,16398,
+30878,16399,
+30879,1499,
+30880,16400,
+30881,6724,
+30882,16401,
+30883,6725,
+30884,16402,
+30885,6728,
+30886,16403,
+30887,1077,
+30888,16404,
+30889,8520,
+30890,16405,
+30891,16406,
+30892,16407,
+30893,9444,
+30894,16408,
+30895,16409,
+30896,2999,
+30897,2145,
+30898,6726,
+30899,3599,
+30900,1201,
+30901,16410,
+30902,16411,
+30903,16412,
+30904,9446,
+30905,6727,
+30906,8439,
+30907,16413,
+30908,8299,
+30909,16414,
+30910,2894,
+30911,16415,
+30912,16416,
+30913,1352,
+30914,16417,
+30915,16418,
+30916,16419,
+30917,1024,
+30918,16420,
+30919,16421,
+30920,16422,
+30921,6731,
+30922,2501,
+30923,1387,
+30924,16423,
+30925,16424,
+30926,16425,
+30927,16426,
+30928,2958,
+30929,16427,
+30930,16428,
+30931,16429,
+30932,6729,
+30933,2385,
+30934,16430,
+30935,16431,
+30936,16432,
+30937,6730,
+30938,8871,
+30939,16433,
+30940,16434,
+30941,16435,
+30942,16436,
+30943,16437,
+30944,16438,
+30945,16439,
+30946,16440,
+30947,9452,
+30948,16441,
+30949,16442,
+30950,16443,
+30951,9451,
+30952,2824,
+30953,16444,
+30954,16445,
+30955,16446,
+30956,6732,
+30957,16447,
+30958,16448,
+30959,9443,
+30960,16449,
+30961,16450,
+30962,6733,
+30963,16451,
+30964,6735,
+30965,16452,
+30966,16453,
+30967,2592,
+30968,16454,
+30969,16455,
+30970,2012,
+30971,16456,
+30972,16457,
+30973,9450,
+30974,16458,
+30975,16459,
+30976,16460,
+30977,2185,
+30978,16461,
+30979,16462,
+30980,16463,
+30981,6734,
+30982,16464,
+30983,16465,
+30984,16466,
+30985,16467,
+30986,16468,
+30987,16469,
+30988,16470,
+30989,16471,
+30990,7826,
+30991,16472,
+30992,16473,
+30993,16474,
+30994,16475,
+30995,6736,
+30996,16476,
+30997,16477,
+30998,16478,
+30999,16479,
+31000,16480,
+31001,7719,
+31002,16481,
+31003,16482,
+31004,16483,
+31005,16484,
+31006,6738,
+31007,16485,
+31008,16486,
+31009,16487,
+31010,16488,
+31011,16489,
+31012,6737,
+31013,16490,
+31014,8166,
+31015,16491,
+31016,16492,
+31017,16493,
+31018,9447,
+31019,8210,
+31020,7916,
+31021,16494,
+31022,16495,
+31023,16496,
+31024,16497,
+31025,9448,
+31026,16498,
+31027,16499,
+31028,6739,
+31029,16500,
+31030,16501,
+31031,16502,
+31032,16503,
+31033,16504,
+31034,3413,
+31035,6648,
+31036,2524,
+31037,16505,
+31038,3360,
+31039,16506,
+31040,6649,
+31041,3085,
+31042,16507,
+31043,16508,
+31044,16509,
+31045,16510,
+31046,6650,
+31047,16511,
+31048,3084,
+31049,6651,
+31050,16512,
+31051,16513,
+31052,16514,
+31053,16515,
+31054,16516,
+31055,16517,
+31056,16518,
+31057,16519,
+31058,16520,
+31059,6654,
+31060,16521,
+31061,16522,
+31062,4675,
+31063,6657,
+31064,16523,
+31065,16524,
+31066,6655,
+31067,6652,
+31068,6653,
+31069,4608,
+31070,3370,
+31071,3555,
+31072,6658,
+31073,16525,
+31074,6656,
+31075,16526,
+31076,16527,
+31077,3926,
+31078,16528,
+31079,6660,
+31080,3024,
+31081,16529,
+31082,16530,
+31083,16531,
+31084,16532,
+31085,2099,
+31086,16533,
+31087,6659,
+31088,16534,
+31089,16535,
+31090,16536,
+31091,16537,
+31092,16538,
+31093,16539,
+31094,16540,
+31095,1436,
+31096,2059,
+31097,16541,
+31098,6661,
+31099,16542,
+31100,16543,
+31101,16544,
+31102,16545,
+31103,16546,
+31104,4875,
+31105,2252,
+31106,16547,
+31107,16548,
+31108,2658,
+31109,6662,
+31110,16549,
+31111,16550,
+31112,16551,
+31113,16552,
+31114,6663,
+31115,16553,
+31116,16554,
+31117,8038,
+31118,9436,
+31119,1694,
+31120,16555,
+31121,16556,
+31122,16557,
+31123,16558,
+31124,16559,
+31125,16560,
+31126,16561,
+31127,16562,
+31128,16563,
+31129,16564,
+31130,6664,
+31131,16565,
+31132,16566,
+31133,16567,
+31134,16568,
+31135,16569,
+31136,16570,
+31137,16571,
+31138,16572,
+31139,16573,
+31140,16574,
+31141,16575,
+31142,9890,
+31143,6665,
+31144,16576,
+31145,16577,
+31146,9437,
+31147,16578,
+31148,16579,
+31149,16580,
+31150,8206,
+31151,16581,
+31152,9435,
+31153,7864,
+31154,16582,
+31155,6666,
+31156,16583,
+31157,16584,
+31158,16585,
+31159,16586,
+31160,16587,
+31161,4306,
+31162,4708,
+31163,2518,
+31164,16588,
+31165,3162,
+31166,1923,
+31167,16589,
+31168,4014,
+31169,3506,
+31170,16590,
+31171,3691,
+31172,16591,
+31173,16592,
+31174,1740,
+31175,16593,
+31176,16594,
+31177,1125,
+31178,16595,
+31179,3180,
+31180,16596,
+31181,4565,
+31182,16597,
+31183,16598,
+31184,16599,
+31185,2387,
+31186,2800,
+31187,16600,
+31188,16601,
+31189,6941,
+31190,16602,
+31191,16603,
+31192,2781,
+31193,16604,
+31194,16605,
+31195,16606,
+31196,16607,
+31197,16608,
+31198,16609,
+31199,4671,
+31200,16610,
+31201,16611,
+31202,16612,
+31203,6943,
+31204,1272,
+31205,16613,
+31206,3157,
+31207,4118,
+31208,16614,
+31209,4551,
+31210,16615,
+31211,6944,
+31212,16616,
+31213,6942,
+31214,16617,
+31215,2066,
+31216,1259,
+31217,16618,
+31218,16619,
+31219,16620,
+31220,16621,
+31221,16622,
+31222,16623,
+31223,16624,
+31224,2214,
+31225,16625,
+31226,16626,
+31227,4173,
+31228,16627,
+31229,2037,
+31230,16628,
+31231,16629,
+31232,3854,
+31233,16630,
+31234,6948,
+31235,6947,
+31236,16631,
+31237,16632,
+31238,6945,
+31239,16633,
+31240,16634,
+31241,16635,
+31242,16636,
+31243,1265,
+31244,16637,
+31245,3341,
+31246,3493,
+31247,16638,
+31248,16639,
+31249,16640,
+31250,16641,
+31251,16642,
+31252,6950,
+31253,16643,
+31254,16644,
+31255,1001,
+31256,16645,
+31257,16646,
+31258,4552,
+31259,16647,
+31260,16648,
+31261,16649,
+31262,6949,
+31263,16650,
+31264,1298,
+31265,16651,
+31266,16652,
+31267,7567,
+31268,16653,
+31269,16654,
+31270,16655,
+31271,16656,
+31272,16657,
+31273,16658,
+31274,16659,
+31275,16660,
+31276,16661,
+31277,16662,
+31278,8853,
+31279,16663,
+31280,16664,
+31281,7808,
+31282,16665,
+31283,3799,
+31284,16666,
+31285,16667,
+31286,16668,
+31287,6952,
+31288,16669,
+31289,6951,
+31290,16670,
+31291,1439,
+31292,2125,
+31293,2065,
+31294,16671,
+31295,1760,
+31296,9847,
+31297,16672,
+31298,16673,
+31299,16674,
+31300,16675,
+31301,16676,
+31302,2853,
+31303,16677,
+31304,16678,
+31305,16679,
+31306,16680,
+31307,16681,
+31308,9764,
+31309,8041,
+31310,8747,
+31311,16682,
+31312,16683,
+31313,6953,
+31314,16684,
+31315,16685,
+31316,16686,
+31317,16687,
+31318,16688,
+31319,3552,
+31320,16689,
+31321,16690,
+31322,16691,
+31323,16692,
+31324,16693,
+31325,16694,
+31326,16695,
+31327,16696,
+31328,16697,
+31329,9599,
+31330,8027,
+31331,16698,
+31332,16699,
+31333,16700,
+31334,16701,
+31335,16702,
+31336,16703,
+31337,8603,
+31338,16704,
+31339,9853,
+31340,16705,
+31341,16706,
+31342,16707,
+31343,16708,
+31344,6956,
+31345,16709,
+31346,16710,
+31347,16711,
+31348,4049,
+31349,16712,
+31350,2286,
+31351,3179,
+31352,7066,
+31353,7067,
+31354,2402,
+31355,16713,
+31356,16714,
+31357,16715,
+31358,16716,
+31359,1324,
+31360,7068,
+31361,3692,
+31362,16717,
+31363,3153,
+31364,4430,
+31365,16718,
+31366,7069,
+31367,16719,
+31368,7070,
+31369,16720,
+31370,16721,
+31371,16722,
+31372,16723,
+31373,3148,
+31374,16724,
+31375,16725,
+31376,16726,
+31377,4139,
+31378,4558,
+31379,16727,
+31380,16728,
+31381,7071,
+31382,2210,
+31383,1331,
+31384,2284,
+31385,16729,
+31386,16730,
+31387,16731,
+31388,1375,
+31389,3808,
+31390,16732,
+31391,2412,
+31392,7073,
+31393,16733,
+31394,16734,
+31395,16735,
+31396,16736,
+31397,2439,
+31398,7072,
+31399,16737,
+31400,7075,
+31401,8608,
+31402,8582,
+31403,16738,
+31404,7074,
+31405,7076,
+31406,8429,
+31407,16739,
+31408,16740,
+31409,16741,
+31410,16742,
+31411,7077,
+31412,16743,
+31413,16744,
+31414,9657,
+31415,16745,
+31416,16746,
+31417,16747,
+31418,8170,
+31419,16748,
+31420,16749,
+31421,16750,
+31422,16751,
+31423,2631,
+31424,16752,
+31425,16753,
+31426,16754,
+31427,16755,
+31428,7844,
+31429,8417,
+31430,16756,
+31431,9656,
+31432,8800,
+31433,16757,
+31434,8418,
+31435,2539,
+31436,16758,
+31437,16759,
+31438,16760,
+31439,16761,
+31440,16762,
+31441,16763,
+31442,16764,
+31443,16765,
+31444,16766,
+31445,16767,
+31446,3473,
+31447,16768,
+31448,16769,
+31449,4447,
+31450,16770,
+31451,16771,
+31452,16772,
+31453,16773,
+31454,2281,
+31455,2280,
+31456,4451,
+31457,16774,
+31458,16775,
+31459,2351,
+31460,16776,
+31461,3680,
+31462,7065,
+31463,16777,
+31464,16778,
+31465,16779,
+31466,8513,
+31467,16780,
+31468,16781,
+31469,2224,
+31470,16782,
+31471,1546,
+31472,16783,
+31473,16784,
+31474,16785,
+31475,16786,
+31476,16787,
+31477,16788,
+31478,8135,
+31479,16789,
+31480,16790,
+31481,4592,
+31482,7267,
+31483,16791,
+31484,16792,
+31485,7268,
+31486,16793,
+31487,1736,
+31488,16794,
+31489,16795,
+31490,16796,
+31491,7270,
+31492,7271,
+31493,16797,
+31494,981,
+31495,16798,
+31496,7269,
+31497,16799,
+31498,7273,
+31499,3558,
+31500,16800,
+31501,16801,
+31502,16802,
+31503,7275,
+31504,16803,
+31505,3953,
+31506,16804,
+31507,16805,
+31508,1075,
+31509,7272,
+31510,16806,
+31511,16807,
+31512,16808,
+31513,7279,
+31514,16809,
+31515,1458,
+31516,16810,
+31517,16811,
+31518,7287,
+31519,16812,
+31520,7282,
+31521,16813,
+31522,16814,
+31523,16815,
+31524,7284,
+31525,7283,
+31526,1688,
+31527,16816,
+31528,1064,
+31529,16817,
+31530,7278,
+31531,7274,
+31532,1467,
+31533,16818,
+31534,7280,
+31535,16819,
+31536,16820,
+31537,7281,
+31538,16821,
+31539,7285,
+31540,16822,
+31541,16823,
+31542,16824,
+31543,16825,
+31544,7277,
+31545,16826,
+31546,2134,
+31547,16827,
+31548,2630,
+31549,16828,
+31550,7286,
+31551,16829,
+31552,16830,
+31553,16831,
+31554,16832,
+31555,16833,
+31556,16834,
+31557,7290,
+31558,7745,
+31559,7276,
+31560,16835,
+31561,1449,
+31562,16836,
+31563,2239,
+31564,7292,
+31565,16837,
+31566,16838,
+31567,1601,
+31568,2429,
+31569,4605,
+31570,3683,
+31571,16839,
+31572,1395,
+31573,16840,
+31574,1190,
+31575,16841,
+31576,7288,
+31577,16842,
+31578,7289,
+31579,3313,
+31580,16843,
+31581,7293,
+31582,16844,
+31583,16845,
+31584,7294,
+31585,16846,
+31586,7297,
+31587,16847,
+31588,16848,
+31589,16849,
+31590,16850,
+31591,9700,
+31592,16851,
+31593,16852,
+31594,16853,
+31595,16854,
+31596,16855,
+31597,16856,
+31598,7295,
+31599,16857,
+31600,16858,
+31601,7299,
+31602,7298,
+31603,16859,
+31604,16860,
+31605,7291,
+31606,16861,
+31607,2423,
+31608,16862,
+31609,1300,
+31610,16863,
+31611,7296,
+31612,16864,
+31613,16865,
+31614,3110,
+31615,16866,
+31616,2149,
+31617,16867,
+31618,16868,
+31619,16869,
+31620,16870,
+31621,7307,
+31622,16871,
+31623,16872,
+31624,16873,
+31625,16874,
+31626,16875,
+31627,8070,
+31628,16876,
+31629,1816,
+31630,16877,
+31631,16878,
+31632,7300,
+31633,16879,
+31634,16880,
+31635,16881,
+31636,1140,
+31637,2067,
+31638,16882,
+31639,3544,
+31640,16883,
+31641,16884,
+31642,16885,
+31643,16886,
+31644,7309,
+31645,7305,
+31646,16887,
+31647,16888,
+31648,16889,
+31649,1845,
+31650,7310,
+31651,16890,
+31652,16891,
+31653,16892,
+31654,7301,
+31655,7302,
+31656,7306,
+31657,2696,
+31658,7308,
+31659,7311,
+31660,7304,
+31661,2160,
+31662,16893,
+31663,16894,
+31664,16895,
+31665,3921,
+31666,16896,
+31667,16897,
+31668,7312,
+31669,16898,
+31670,16899,
+31671,16900,
+31672,7303,
+31673,16901,
+31674,16902,
+31675,16903,
+31676,16904,
+31677,16905,
+31678,16906,
+31679,16907,
+31680,8115,
+31681,7314,
+31682,16908,
+31683,16909,
+31684,7919,
+31685,16910,
+31686,4618,
+31687,3017,
+31688,16911,
+31689,8868,
+31690,16912,
+31691,9704,
+31692,7315,
+31693,16913,
+31694,16914,
+31695,16915,
+31696,16916,
+31697,7313,
+31698,16917,
+31699,2639,
+31700,16918,
+31701,16919,
+31702,16920,
+31703,16921,
+31704,16922,
+31705,1752,
+31706,7317,
+31707,16923,
+31708,16924,
+31709,7316,
+31710,16925,
+31711,16926,
+31712,16927,
+31713,1374,
+31714,16928,
+31715,16929,
+31716,9699,
+31717,7318,
+31718,7319,
+31719,16930,
+31720,16931,
+31721,8465,
+31722,7320,
+31723,16932,
+31724,16933,
+31725,16934,
+31726,2469,
+31727,16935,
+31728,16936,
+31729,2516,
+31730,16937,
+31731,9702,
+31732,16938,
+31733,16939,
+31734,16940,
+31735,2994,
+31736,16941,
+31737,16942,
+31738,16943,
+31739,16944,
+31740,7323,
+31741,16945,
+31742,7322,
+31743,16946,
+31744,9703,
+31745,16947,
+31746,16948,
+31747,16949,
+31748,16950,
+31749,16951,
+31750,16952,
+31751,1371,
+31752,16953,
+31753,16954,
+31754,16955,
+31755,7326,
+31756,7321,
+31757,8257,
+31758,16956,
+31759,7324,
+31760,16957,
+31761,16958,
+31762,16959,
+31763,16960,
+31764,16961,
+31765,16962,
+31766,7325,
+31767,16963,
+31768,16964,
+31769,16965,
+31770,16966,
+31771,16967,
+31772,16968,
+31773,16969,
+31774,9706,
+31775,7327,
+31776,16970,
+31777,8079,
+31778,16971,
+31779,9708,
+31780,16972,
+31781,16973,
+31782,7329,
+31783,2014,
+31784,16974,
+31785,16975,
+31786,7328,
+31787,9707,
+31788,16976,
+31789,16977,
+31790,16978,
+31791,16979,
+31792,16980,
+31793,16981,
+31794,16982,
+31795,16983,
+31796,16984,
+31797,16985,
+31798,16986,
+31799,16987,
+31800,7330,
+31801,16988,
+31802,16989,
+31803,16990,
+31804,16991,
+31805,8400,
+31806,8221,
+31807,1157,
+31808,7332,
+31809,7331,
+31810,16992,
+31811,8183,
+31812,16993,
+31813,16994,
+31814,16995,
+31815,16996,
+31816,16997,
+31817,16998,
+31818,16999,
+31819,17000,
+31820,7821,
+31821,2081,
+31822,17001,
+31823,17002,
+31824,17003,
+31825,17004,
+31826,17005,
+31827,17006,
+31828,17007,
+31829,17008,
+31830,17009,
+31831,17010,
+31832,17011,
+31833,17012,
+31834,17013,
+31835,17014,
+31836,9705,
+31837,17015,
+31838,17016,
+31839,9710,
+31840,8250,
+31841,17017,
+31842,17018,
+31843,17019,
+31844,9875,
+31845,17020,
+31846,17021,
+31847,17022,
+31848,17023,
+31849,9701,
+31850,9709,
+31851,17024,
+31852,8201,
+31853,17025,
+31854,8293,
+31855,17026,
+31856,17027,
+31857,17028,
+31858,9891,
+31859,2780,
+31860,4853,
+31861,17029,
+31862,17030,
+31863,17031,
+31864,17032,
+31865,17033,
+31866,17034,
+31867,2507,
+31868,7370,
+31869,4654,
+31870,17035,
+31871,17036,
+31872,17037,
+31873,17038,
+31874,17039,
+31875,17040,
+31876,17041,
+31877,17042,
+31878,17043,
+31879,17044,
+31880,17045,
+31881,1656,
+31882,17046,
+31883,17047,
+31884,17048,
+31885,17049,
+31886,17050,
+31887,17051,
+31888,17052,
+31889,7372,
+31890,2540,
+31891,17053,
+31892,17054,
+31893,3048,
+31894,17055,
+31895,1369,
+31896,4436,
+31897,17056,
+31898,17057,
+31899,17058,
+31900,7374,
+31901,7373,
+31902,7375,
+31903,3535,
+31904,17059,
+31905,17060,
+31906,7376,
+31907,17061,
+31908,4356,
+31909,4575,
+31910,17062,
+31911,17063,
+31912,17064,
+31913,17065,
+31914,1661,
+31915,17066,
+31916,17067,
+31917,17068,
+31918,2561,
+31919,17069,
+31920,17070,
+31921,2564,
+31922,7377,
+31923,2267,
+31924,17071,
+31925,17072,
+31926,17073,
+31927,17074,
+31928,17075,
+31929,1381,
+31930,17076,
+31931,17077,
+31932,7378,
+31933,7379,
+31934,2266,
+31935,17078,
+31936,17079,
+31937,7380,
+31938,17080,
+31939,17081,
+31940,17082,
+31941,7385,
+31942,17083,
+31943,7381,
+31944,7384,
+31945,17084,
+31946,1972,
+31947,17085,
+31948,7382,
+31949,7383,
+31950,17086,
+31951,17087,
+31952,17088,
+31953,17089,
+31954,17090,
+31955,17091,
+31956,17092,
+31957,1757,
+31958,3610,
+31959,7386,
+31960,17093,
+31961,1185,
+31962,17094,
+31963,17095,
+31964,2776,
+31965,9717,
+31966,7932,
+31967,4390,
+31968,2372,
+31969,17096,
+31970,17097,
+31971,17098,
+31972,17099,
+31973,17100,
+31974,17101,
+31975,8228,
+31976,7387,
+31977,17102,
+31978,17103,
+31979,17104,
+31980,17105,
+31981,17106,
+31982,17107,
+31983,2933,
+31984,9883,
+31985,17108,
+31986,9715,
+31987,17109,
+31988,8921,
+31989,17110,
+31990,9716,
+31991,17111,
+31992,7399,
+31993,9243,
+31994,17112,
+31995,3874,
+31996,17113,
+31997,17114,
+31998,8136,
+31999,17115,
+32000,8059,
+32001,17116,
+32002,9245,
+32003,17117,
+32004,8780,
+32005,8008,
+32006,9244,
+32007,9246,
+32008,9247,
+32009,8447,
+32010,3800,
+32011,8602,
+32012,17118,
+32013,8337,
+32014,17119,
+32015,17120,
+32016,8359,
+32017,17121,
+32018,17122,
+32019,9251,
+32020,7835,
+32021,9250,
+32022,17123,
+32023,8464,
+32024,17124,
+32025,8845,
+32026,8049,
+32027,7928,
+32028,9249,
+32029,17125,
+32030,17126,
+32031,17127,
+32032,3533,
+32033,7923,
+32034,3564,
+32035,17128,
+32036,17129,
+32037,17130,
+32038,17131,
+32039,2245,
+32040,17132,
+32041,17133,
+32042,17134,
+32043,4652,
+32044,17135,
+32045,17136,
+32046,17137,
+32047,2502,
+32048,8625,
+32049,9254,
+32050,9253,
+32051,8480,
+32052,17138,
+32053,17139,
+32054,17140,
+32055,17141,
+32056,17142,
+32057,8474,
+32058,9252,
+32059,17143,
+32060,9256,
+32061,17144,
+32062,17145,
+32063,9258,
+32064,9257,
+32065,17146,
+32066,8852,
+32067,17147,
+32068,8894,
+32069,17148,
+32070,7729,
+32071,17149,
+32072,17150,
+32073,17151,
+32074,17152,
+32075,17153,
+32076,17154,
+32077,17155,
+32078,9260,
+32079,17156,
+32080,8117,
+32081,17157,
+32082,17158,
+32083,17159,
+32084,17160,
+32085,17161,
+32086,17162,
+32087,17163,
+32088,17164,
+32089,17165,
+32090,17166,
+32091,17167,
+32092,17168,
+32093,9259,
+32094,8111,
+32095,17169,
+32096,17170,
+32097,8296,
+32098,8676,
+32099,17171,
+32100,17172,
+32101,17173,
+32102,7969,
+32103,17174,
+32104,8449,
+32105,17175,
+32106,17176,
+32107,17177,
+32108,17178,
+32109,17179,
+32110,4032,
+32111,17180,
+32112,17181,
+32113,8572,
+32114,8522,
+32115,9261,
+32116,17182,
+32117,17183,
+32118,8148,
+32119,7400,
+32120,17184,
+32121,8145,
+32122,17185,
+32123,17186,
+32124,17187,
+32125,17188,
+32126,17189,
+32127,17190,
+32128,17191,
+32129,7731,
+32130,17192,
+32131,9263,
+32132,17193,
+32133,17194,
+32134,9262,
+32135,17195,
+32136,9264,
+32137,8667,
+32138,17196,
+32139,17197,
+32140,17198,
+32141,17199,
+32142,17200,
+32143,8536,
+32144,17201,
+32145,17202,
+32146,17203,
+32147,8130,
+32148,17204,
+32149,17205,
+32150,17206,
+32151,17207,
+32152,17208,
+32153,17209,
+32154,17210,
+32155,17211,
+32156,8889,
+32157,17212,
+32158,9270,
+32159,17213,
+32160,17214,
+32161,17215,
+32162,7822,
+32163,9273,
+32164,17216,
+32165,17217,
+32166,7401,
+32167,17218,
+32168,17219,
+32169,17220,
+32170,17221,
+32171,8645,
+32172,9271,
+32173,8594,
+32174,7402,
+32175,17222,
+32176,9274,
+32177,7961,
+32178,8588,
+32179,7744,
+32180,8883,
+32181,17223,
+32182,17224,
+32183,17225,
+32184,8287,
+32185,9272,
+32186,9266,
+32187,8820,
+32188,17226,
+32189,7836,
+32190,9265,
+32191,8325,
+32192,17227,
+32193,17228,
+32194,17229,
+32195,17230,
+32196,9269,
+32197,17231,
+32198,17232,
+32199,9275,
+32200,17233,
+32201,17234,
+32202,8119,
+32203,9267,
+32204,17235,
+32205,17236,
+32206,17237,
+32207,17238,
+32208,17239,
+32209,8276,
+32210,8670,
+32211,17240,
+32212,9268,
+32213,17241,
+32214,17242,
+32215,9277,
+32216,8073,
+32217,9276,
+32218,17243,
+32219,17244,
+32220,17245,
+32221,8046,
+32222,7896,
+32223,17246,
+32224,7871,
+32225,9285,
+32226,17247,
+32227,8777,
+32228,17248,
+32229,17249,
+32230,9281,
+32231,17250,
+32232,7751,
+32233,8022,
+32234,17251,
+32235,17252,
+32236,8326,
+32237,17253,
+32238,17254,
+32239,8598,
+32240,17255,
+32241,9283,
+32242,9279,
+32243,17256,
+32244,8227,
+32245,17257,
+32246,9282,
+32247,17258,
+32248,17259,
+32249,9278,
+32250,17260,
+32251,9894,
+32252,17261,
+32253,17262,
+32254,17263,
+32255,17264,
+32256,17265,
+32257,17266,
+32258,17267,
+32259,17268,
+32260,17269,
+32261,17270,
+32262,17271,
+32263,17272,
+32264,9038,
+32265,9286,
+32266,9291,
+32267,9284,
+32268,17273,
+32269,17274,
+32270,17275,
+32271,17276,
+32272,9255,
+32273,9292,
+32274,17277,
+32275,17278,
+32276,17279,
+32277,17280,
+32278,17281,
+32279,17282,
+32280,17283,
+32281,17284,
+32282,17285,
+32283,7951,
+32284,17286,
+32285,9287,
+32286,9289,
+32287,9288,
+32288,17287,
+32289,17288,
+32290,17289,
+32291,8642,
+32292,17290,
+32293,17291,
+32294,17292,
+32295,8558,
+32296,17293,
+32297,17294,
+32298,17295,
+32299,7939,
+32300,17296,
+32301,9290,
+32302,8540,
+32303,17297,
+32304,17298,
+32305,8891,
+32306,9296,
+32307,17299,
+32308,9876,
+32309,9295,
+32310,9718,
+32311,8273,
+32312,17300,
+32313,9294,
+32314,17301,
+32315,7675,
+32316,17302,
+32317,8890,
+32318,8045,
+32319,17303,
+32320,17304,
+32321,1614,
+32322,17305,
+32323,17306,
+32324,17307,
+32325,9298,
+32326,9297,
+32327,7403,
+32328,17308,
+32329,17309,
+32330,17310,
+32331,17311,
+32332,17312,
+32333,17313,
+32334,17314,
+32335,17315,
+32336,17316,
+32337,17317,
+32338,9301,
+32339,17318,
+32340,8841,
+32341,8470,
+32342,17319,
+32343,17320,
+32344,17321,
+32345,17322,
+32346,9300,
+32347,17323,
+32348,17324,
+32349,17325,
+32350,8443,
+32351,17326,
+32352,17327,
+32353,17328,
+32354,9280,
+32355,17329,
+32356,17330,
+32357,17331,
+32358,17332,
+32359,17333,
+32360,17334,
+32361,8486,
+32362,8033,
+32363,9885,
+32364,17335,
+32365,8074,
+32366,9302,
+32367,9305,
+32368,9304,
+32369,17336,
+32370,17337,
+32371,8110,
+32372,17338,
+32373,17339,
+32374,17340,
+32375,17341,
+32376,17342,
+32377,8730,
+32378,17343,
+32379,17344,
+32380,8058,
+32381,9293,
+32382,9303,
+32383,17345,
+32384,17346,
+32385,17347,
+32386,4680,
+32387,17348,
+32388,17349,
+32389,17350,
+32390,17351,
+32391,17352,
+32392,9299,
+32393,17353,
+32394,9248,
+32395,17354,
+32396,8671,
+32397,9861,
+32398,17355,
+32399,7790,
+32400,17356,
+32401,17357,
+32402,17358,
+32403,8740,
+32404,9840,
+32405,17359,
+32406,8634,
+32407,17360,
+32408,9306,
+32409,17361,
+32410,17362,
+32411,7404,
+32412,8191,
+32413,17363,
+32414,17364,
+32415,6099,
+32416,2287,
+32417,6100,
+32418,1955,
+32419,6101,
+32420,3896,
+32421,6102,
+32422,4351,
+32423,2089,
+32424,6103,
+32425,6104,
+32426,2112,
+32427,3245,
+32428,3778,
+32429,6105,
+32430,17365,
+32431,1346,
+32432,6106,
+32433,3309,
+32434,1748,
+32435,2860,
+32436,17366,
+32437,4666,
+32438,2689,
+32439,1652,
+32440,4540,
+32441,3797,
+32442,1633,
+32443,17367,
+32444,17368,
+32445,2919,
+32446,6107,
+32447,3916,
+32448,6108,
+32449,6109,
+32450,6110,
+32451,2560,
+32452,4678,
+32453,3369,
+32454,3877,
+32455,4526,
+32456,4564,
+32457,6111,
+32458,1016,
+32459,6112,
+32460,6113,
+32461,3349,
+32462,4214,
+32463,2268,
+32464,6114,
+32465,1022,
+32466,3257,
+32467,2226,
+32468,6115,
+32469,3233,
+32470,17369,
+32471,6116,
+32472,2043,
+32473,1779,
+32474,4045,
+32475,6117,
+32476,2702,
+32477,2343,
+32478,2203,
+32479,3684,
+32480,6118,
+32481,6119,
+32482,2333,
+32483,4016,
+32484,17370,
+32485,3548,
+32486,3619,
+32487,2111,
+32488,6120,
+32489,2075,
+32490,4034,
+32491,6121,
+32492,17371,
+32493,4035,
+32494,6122,
+32495,6123,
+32496,1349,
+32497,6124,
+32498,6125,
+32499,3383,
+32500,3771,
+32501,2789,
+32502,6127,
+32503,1066,
+32504,1302,
+32505,17372,
+32506,6128,
+32507,6129,
+32508,4664,
+32509,4449,
+32510,6130,
+32511,2675,
+32512,4631,
+32513,6131,
+32514,6132,
+32515,6133,
+32516,2141,
+32517,2794,
+32518,2477,
+32519,6134,
+32520,6135,
+32521,2076,
+32522,17373,
+32523,6136,
+32524,6137,
+32525,6126,
+32526,1551,
+32527,6138,
+32528,17374,
+32529,6139,
+32530,6140,
+32531,1999,
+32532,1471,
+32533,2669,
+32534,1097,
+32535,6141,
+32536,4344,
+32537,6142,
+32538,1722,
+32539,6144,
+32540,6143,
+32541,1673,
+32542,17375,
+32543,6145,
+32544,1215,
+32545,6146,
+32546,6147,
+32547,6148,
+32548,6149,
+32549,6150,
+32550,6151,
+32551,6152,
+32552,4236,
+32553,3562,
+32554,6153,
+32555,6154,
+32556,6155,
+32557,6156,
+32558,3330,
+32559,6157,
+32560,6158,
+32561,6159,
+32562,6160,
+32563,6161,
+32564,2202,
+32565,6162,
+32566,7262,
+32567,17376,
+32568,1746,
+32569,17377,
+32570,3212,
+32571,17378,
+32572,17379,
+32573,17380,
+32574,17381,
+32575,17382,
+32576,17383,
+32577,17384,
+32578,7263,
+32579,17385,
+32580,7264,
+32581,7265,
+32582,17386,
+32583,17387,
+32584,17388,
+32585,17389,
+32586,17390,
+32587,17391,
+32588,9698,
+32589,17392,
+32590,9882,
+32591,17393,
+32592,1847,
+32593,3753,
+32594,17394,
+32595,17395,
+32596,4766,
+32597,1896,
+32598,17396,
+32599,2693,
+32600,6785,
+32601,17397,
+32602,1600,
+32603,17398,
+32604,17399,
+32605,17400,
+32606,17401,
+32607,6787,
+32608,17402,
+32609,6786,
+32610,992,
+32611,17403,
+32612,17404,
+32613,17405,
+32614,17406,
+32615,17407,
+32616,6789,
+32617,4471,
+32618,4684,
+32619,17408,
+32620,17409,
+32621,17410,
+32622,4546,
+32623,17411,
+32624,7914,
+32625,6791,
+32626,3463,
+32627,17412,
+32628,6790,
+32629,17413,
+32630,17414,
+32631,7724,
+32632,17415,
+32633,6792,
+32634,17416,
+32635,17417,
+32636,17418,
+32637,17419,
+32638,6794,
+32639,17420,
+32640,17421,
+32641,6793,
+32642,17422,
+32643,17423,
+32644,17424,
+32645,8290,
+32646,9457,
+32647,17425,
+32648,9458,
+32649,17426,
+32650,4123,
+32651,17427,
+32652,3129,
+32653,17428,
+32654,2757,
+32655,17429,
+32656,17430,
+32657,17431,
+32658,17432,
+32659,17433,
+32660,1756,
+32661,17434,
+32662,17435,
+32663,17436,
+32664,17437,
+32665,17438,
+32666,2608,
+32667,17439,
+32668,17440,
+32669,7364,
+32670,4010,
+32671,7365,
+32672,17441,
+32673,3912,
+32674,17442,
+32675,17443,
+32676,3221,
+32677,9714,
+32678,17444,
+32679,7366,
+32680,17445,
+32681,8725,
+32682,17446,
+32683,17447,
+32684,17448,
+32685,17449,
+32686,17450,
+32687,7367,
+32688,7368,
+32689,17451,
+32690,7369,
+32691,17452,
+32692,17453,
+32693,17454,
+32694,17455,
+32695,17456,
+32696,4878,
+32697,1785,
+32698,17457,
+32699,17458,
+32700,5997,
+32701,4309,
+32702,17459,
+32703,7390,
+32704,17460,
+32705,3803,
+32706,17461,
+32707,17462,
+32708,17463,
+32709,1286,
+32710,17464,
+32711,17465,
+32712,17466,
+32713,17467,
+32714,7064,
+32715,17468,
+32716,4213,
+32717,17469,
+32718,7391,
+32719,17470,
+32720,17471,
+32721,17472,
+32722,8622,
+32723,17473,
+32724,3925,
+32725,7392,
+32726,17474,
+32727,17475,
+32728,3145,
+32729,17476,
+32730,17477,
+32731,17478,
+32732,17479,
+32733,17480,
+32734,17481,
+32735,1461,
+32736,1383,
+32737,7394,
+32738,17482,
+32739,17483,
+32740,17484,
+32741,7393,
+32742,7395,
+32743,17485,
+32744,17486,
+32745,7396,
+32746,17487,
+32747,17488,
+32748,17489,
+32749,17490,
+32750,7397,
+32751,17491,
+32752,1897,
+32753,970,
+32754,17492,
+32755,7398,
+32756,17493,
+32757,17494,
+32758,17495,
+32759,17496,
+32760,17497,
+32761,8416,
+32762,17498,
+32763,1610,
+32764,4212,
+32765,17499,
+32766,17500,
+32767,17501,
+32768,4146,
+32769,2490,
+32770,17502,
+32771,2377,
+32772,6483,
+32773,4480,
+32774,6426,
+32775,17503,
+32776,17504,
+32777,17505,
+32778,17506,
+32779,7127,
+32780,1591,
+32781,3480,
+32782,17507,
+32783,17508,
+32784,2864,
+32785,17509,
+32786,7115,
+32787,17510,
+32788,7116,
+32789,1782,
+32790,7117,
+32791,1915,
+32792,4360,
+32793,989,
+32794,17511,
+32795,17512,
+32796,7118,
+32797,17513,
+32798,17514,
+32799,17515,
+32800,7119,
+32801,17516,
+32802,7120,
+32803,17517,
+32804,17518,
+32805,7121,
+32806,7122,
+32807,7123,
+32808,7125,
+32809,7124,
+32810,2966,
+32811,17519,
+32812,9666,
+32813,17520,
+32814,9665,
+32815,17521,
+32816,17522,
+32817,7126,
+32818,17523,
+32819,1593,
+32820,17524,
+32821,7128,
+32822,4149,
+32823,5297,
+32824,3519,
+32825,17525,
+32826,17526,
+32827,1281,
+32828,17527,
+32829,1411,
+32830,17528,
+32831,1787,
+32832,17529,
+32833,17530,
+32834,2903,
+32835,7129,
+32836,17531,
+32837,17532,
+32838,7130,
+32839,17533,
+32840,17534,
+32841,17535,
+32842,2573,
+32843,2628,
+32844,4527,
+32845,7131,
+32846,17536,
+32847,17537,
+32848,17538,
+32849,17539,
+32850,7132,
+32851,17540,
+32852,2547,
+32853,17541,
+32854,8488,
+32855,17542,
+32856,3031,
+32857,17543,
+32858,2314,
+32859,17544,
+32860,17545,
+32861,17546,
+32862,8601,
+32863,17547,
+32864,17548,
+32865,17549,
+32866,17550,
+32867,17551,
+32868,17552,
+32869,17553,
+32870,17554,
+32871,17555,
+32872,17556,
+32873,7133,
+32874,1362,
+32875,17557,
+32876,17558,
+32877,17559,
+32878,17560,
+32879,8215,
+32880,7840,
+32881,7134,
+32882,8485,
+32883,8525,
+32884,17561,
+32885,9668,
+32886,8349,
+32887,8842,
+32888,17562,
+32889,9667,
+32890,17563,
+32891,17564,
+32892,17565,
+32893,8569,
+32894,8248,
+32895,6686,
+32896,6685,
+32897,17566,
+32898,17567,
+32899,3541,
+32900,4197,
+32901,8533,
+32902,3510,
+32903,4473,
+32904,17568,
+32905,3261,
+32906,17569,
+32907,2506,
+32908,2068,
+32909,17570,
+32910,17571,
+32911,17572,
+32912,17573,
+32913,17574,
+32914,17575,
+32915,6513,
+32916,17576,
+32917,17577,
+32918,3951,
+32919,17578,
+32920,4577,
+32921,17579,
+32922,1542,
+32923,1747,
+32924,6512,
+32925,1737,
+32926,17580,
+32927,6511,
+32928,1227,
+32929,1826,
+32930,4522,
+32931,17581,
+32932,1681,
+32933,1639,
+32934,17582,
+32935,17583,
+32936,17584,
+32937,2138,
+32938,1627,
+32939,6518,
+32940,17585,
+32941,6519,
+32942,964,
+32943,2396,
+32944,17586,
+32945,6517,
+32946,4322,
+32947,17587,
+32948,6520,
+32949,17588,
+32950,17589,
+32951,6521,
+32952,17590,
+32953,17591,
+32954,1643,
+32955,17592,
+32956,6514,
+32957,6516,
+32958,3375,
+32959,4566,
+32960,4462,
+32961,3965,
+32962,6527,
+32963,3783,
+32964,6528,
+32965,17593,
+32966,1417,
+32967,17594,
+32968,17595,
+32969,17596,
+32970,17597,
+32971,17598,
+32972,1052,
+32973,6530,
+32974,3576,
+32975,17599,
+32976,17600,
+32977,17601,
+32978,17602,
+32979,17603,
+32980,17604,
+32981,17605,
+32982,2967,
+32983,6531,
+32984,17606,
+32985,6529,
+32986,2976,
+32987,6526,
+32988,3387,
+32989,6533,
+32990,1030,
+32991,17607,
+32992,17608,
+32993,1969,
+32994,17609,
+32995,17610,
+32996,4717,
+32997,7111,
+32998,17611,
+32999,6522,
+33000,6523,
+33001,6524,
+33002,6525,
+33003,6534,
+33004,6042,
+33005,6537,
+33006,17612,
+33007,2421,
+33008,4175,
+33009,6535,
+33010,6540,
+33011,1767,
+33012,6536,
+33013,17613,
+33014,2187,
+33015,17614,
+33016,4003,
+33017,17615,
+33018,962,
+33019,17616,
+33020,6541,
+33021,2879,
+33022,17617,
+33023,17618,
+33024,17619,
+33025,17620,
+33026,4523,
+33027,17621,
+33028,17622,
+33029,8658,
+33030,1379,
+33031,17623,
+33032,17624,
+33033,2717,
+33034,2092,
+33035,17625,
+33036,17626,
+33037,6538,
+33038,6539,
+33039,4387,
+33040,3081,
+33041,2871,
+33042,6543,
+33043,2920,
+33044,4873,
+33045,17627,
+33046,1144,
+33047,17628,
+33048,6548,
+33049,17629,
+33050,2198,
+33051,9415,
+33052,17630,
+33053,17631,
+33054,6546,
+33055,17632,
+33056,17633,
+33057,17634,
+33058,17635,
+33059,17636,
+33060,17637,
+33061,17638,
+33062,17639,
+33063,17640,
+33064,17641,
+33065,17642,
+33066,17643,
+33067,17644,
+33068,6547,
+33069,17645,
+33070,17646,
+33071,1703,
+33072,17647,
+33073,3714,
+33074,6549,
+33075,17648,
+33076,17649,
+33077,17650,
+33078,6545,
+33079,17651,
+33080,2556,
+33081,8825,
+33082,17652,
+33083,17653,
+33084,17654,
+33085,17655,
+33086,3009,
+33087,17656,
+33088,17657,
+33089,17658,
+33090,17659,
+33091,17660,
+33092,17661,
+33093,17662,
+33094,3654,
+33095,17663,
+33096,6550,
+33097,17664,
+33098,2459,
+33099,4159,
+33100,6551,
+33101,17665,
+33102,8483,
+33103,17666,
+33104,1706,
+33105,1704,
+33106,17667,
+33107,6552,
+33108,3128,
+33109,3748,
+33110,9413,
+33111,17668,
+33112,17669,
+33113,6554,
+33114,6555,
+33115,17670,
+33116,17671,
+33117,17672,
+33118,17673,
+33119,17674,
+33120,6557,
+33121,9417,
+33122,17675,
+33123,17676,
+33124,17677,
+33125,3987,
+33126,8340,
+33127,6562,
+33128,17678,
+33129,6558,
+33130,17679,
+33131,8854,
+33132,17680,
+33133,6561,
+33134,3284,
+33135,17681,
+33136,4133,
+33137,6556,
+33138,17682,
+33139,17683,
+33140,6553,
+33141,17684,
+33142,17685,
+33143,17686,
+33144,7799,
+33145,1716,
+33146,3910,
+33147,2888,
+33148,6559,
+33149,6560,
+33150,3629,
+33151,3705,
+33152,1021,
+33153,17687,
+33154,6566,
+33155,17688,
+33156,17689,
+33157,17690,
+33158,17691,
+33159,17692,
+33160,6565,
+33161,17693,
+33162,1145,
+33163,17694,
+33164,17695,
+33165,17696,
+33166,17697,
+33167,1755,
+33168,17698,
+33169,6567,
+33170,17699,
+33171,17700,
+33172,17701,
+33173,17702,
+33174,17703,
+33175,17704,
+33176,1109,
+33177,17705,
+33178,7942,
+33179,3608,
+33180,2823,
+33181,3858,
+33182,17706,
+33183,17707,
+33184,8101,
+33185,17708,
+33186,17709,
+33187,6569,
+33188,17710,
+33189,17711,
+33190,6576,
+33191,17712,
+33192,2995,
+33193,8345,
+33194,6570,
+33195,17713,
+33196,17714,
+33197,17715,
+33198,17716,
+33199,17717,
+33200,17718,
+33201,17719,
+33202,17720,
+33203,3326,
+33204,17721,
+33205,17722,
+33206,17723,
+33207,17724,
+33208,17725,
+33209,17726,
+33210,5697,
+33211,6574,
+33212,17727,
+33213,7853,
+33214,9416,
+33215,8360,
+33216,3711,
+33217,6575,
+33218,1092,
+33219,4252,
+33220,17728,
+33221,17729,
+33222,4195,
+33223,17730,
+33224,17731,
+33225,8223,
+33226,6573,
+33227,17732,
+33228,6571,
+33229,8389,
+33230,17733,
+33231,9418,
+33232,17734,
+33233,17735,
+33234,17736,
+33235,17737,
+33236,17738,
+33237,17739,
+33238,17740,
+33239,17741,
+33240,8176,
+33241,17742,
+33242,9414,
+33243,17743,
+33244,17744,
+33245,17745,
+33246,17746,
+33247,8797,
+33248,8926,
+33249,17747,
+33250,17748,
+33251,1249,
+33252,17749,
+33253,17750,
+33254,17751,
+33255,6402,
+33256,8236,
+33257,17752,
+33258,4657,
+33259,17753,
+33260,7337,
+33261,1305,
+33262,17754,
+33263,17755,
+33264,17756,
+33265,17757,
+33266,17758,
+33267,4544,
+33268,4545,
+33269,17759,
+33270,17760,
+33271,17761,
+33272,17762,
+33273,17763,
+33274,8545,
+33275,4490,
+33276,2297,
+33277,17764,
+33278,7333,
+33279,17765,
+33280,4143,
+33281,7334,
+33282,7335,
+33283,17766,
+33284,7336,
+33285,2298,
+33286,4292,
+33287,8763,
+33288,8665,
+33289,8139,
+33290,8137,
+33291,17767,
+33292,3353,
+33293,3354,
+33294,17768,
+33295,17769,
+33296,7266,
+33297,17770,
+33298,3453,
+33299,17771,
+33300,3653,
+33301,17772,
+33302,17773,
+33303,17774,
+33304,17775,
+33305,17776,
+33306,17777,
+33307,5656,
+33308,3497,
+33309,17778,
+33310,3831,
+33311,4570,
+33312,17779,
+33313,7339,
+33314,7340,
+33315,7341,
+33316,17780,
+33317,17781,
+33318,17782,
+33319,17783,
+33320,7344,
+33321,17784,
+33322,1908,
+33323,7345,
+33324,1006,
+33325,7342,
+33326,17785,
+33327,7343,
+33328,2163,
+33329,1180,
+33330,17786,
+33331,7348,
+33332,7349,
+33333,1573,
+33334,1143,
+33335,3900,
+33336,7346,
+33337,1327,
+33338,17787,
+33339,7347,
+33340,17788,
+33341,17789,
+33342,7350,
+33343,17790,
+33344,17791,
+33345,17792,
+33346,17793,
+33347,17794,
+33348,7351,
+33349,17795,
+33350,17796,
+33351,3672,
+33352,17797,
+33353,7352,
+33354,17798,
+33355,7353,
+33356,17799,
+33357,17800,
+33358,17801,
+33359,7354,
+33360,17802,
+33361,17803,
+33362,17804,
+33363,17805,
+33364,17806,
+33365,17807,
+33366,17808,
+33367,17809,
+33368,3527,
+33369,7777,
+33370,7355,
+33371,17810,
+33372,17811,
+33373,17812,
+33374,17813,
+33375,7356,
+33376,17814,
+33377,17815,
+33378,17816,
+33379,17817,
+33380,9711,
+33381,17818,
+33382,8088,
+33383,17819,
+33384,7357,
+33385,17820,
+33386,17821,
+33387,9712,
+33388,17822,
+33389,17823,
+33390,7388,
+33391,2565,
+33392,2139,
+33393,8072,
+33394,3300,
+33395,4103,
+33396,6001,
+33397,17824,
+33398,17825,
+33399,8696,
+33400,17826,
+33401,5089,
+33402,4188,
+33403,17827,
+33404,17828,
+33405,5090,
+33406,951,
+33407,5091,
+33408,17829,
+33409,17830,
+33410,2219,
+33411,17831,
+33412,5095,
+33413,17832,
+33414,17833,
+33415,17834,
+33416,4728,
+33417,17835,
+33418,5093,
+33419,4312,
+33420,17836,
+33421,3343,
+33422,5096,
+33423,5092,
+33424,17837,
+33425,5097,
+33426,2727,
+33427,17838,
+33428,17839,
+33429,17840,
+33430,17841,
+33431,5098,
+33432,5107,
+33433,5099,
+33434,17842,
+33435,17843,
+33436,3822,
+33437,4516,
+33438,17844,
+33439,5117,
+33440,17845,
+33441,5115,
+33442,17846,
+33443,17847,
+33444,5120,
+33445,2231,
+33446,2642,
+33447,17848,
+33448,5094,
+33449,5113,
+33450,5116,
+33451,5100,
+33452,1647,
+33453,976,
+33454,5109,
+33455,3977,
+33456,5103,
+33457,1981,
+33458,17849,
+33459,1625,
+33460,5114,
+33461,17850,
+33462,17851,
+33463,5108,
+33464,5101,
+33465,3160,
+33466,17852,
+33467,8994,
+33468,17853,
+33469,4072,
+33470,5102,
+33471,17854,
+33472,17855,
+33473,5112,
+33474,17856,
+33475,17857,
+33476,5118,
+33477,17858,
+33478,17859,
+33479,3772,
+33480,5104,
+33481,17860,
+33482,5105,
+33483,5110,
+33484,5111,
+33485,1179,
+33486,5119,
+33487,3530,
+33488,17861,
+33489,4346,
+33490,5129,
+33491,5133,
+33492,3577,
+33493,5140,
+33494,17862,
+33495,2796,
+33496,5130,
+33497,17863,
+33498,17864,
+33499,2382,
+33500,5127,
+33501,17865,
+33502,1029,
+33503,1807,
+33504,5139,
+33505,5121,
+33506,17866,
+33507,5106,
+33508,5124,
+33509,3279,
+33510,2413,
+33511,9014,
+33512,17867,
+33513,17868,
+33514,17869,
+33515,3316,
+33516,17870,
+33517,17871,
+33518,17872,
+33519,1062,
+33520,17873,
+33521,4231,
+33522,17874,
+33523,17875,
+33524,5128,
+33525,17876,
+33526,17877,
+33527,5123,
+33528,17878,
+33529,3034,
+33530,17879,
+33531,5132,
+33532,17880,
+33533,17881,
+33534,17882,
+33535,17883,
+33536,17884,
+33537,4639,
+33538,2740,
+33539,1619,
+33540,3150,
+33541,2734,
+33542,5136,
+33543,5126,
+33544,5145,
+33545,5122,
+33546,17885,
+33547,17886,
+33548,5131,
+33549,17887,
+33550,2260,
+33551,5125,
+33552,17888,
+33553,5134,
+33554,17889,
+33555,17890,
+33556,5137,
+33557,5138,
+33558,17891,
+33559,5158,
+33560,17892,
+33561,17893,
+33562,5135,
+33563,5166,
+33564,5141,
+33565,17894,
+33566,17895,
+33567,17896,
+33568,17897,
+33569,17898,
+33570,17899,
+33571,17900,
+33572,17901,
+33573,17902,
+33574,17903,
+33575,2142,
+33576,1351,
+33577,17904,
+33578,17905,
+33579,2728,
+33580,1198,
+33581,5160,
+33582,17906,
+33583,5152,
+33584,17907,
+33585,5149,
+33586,17908,
+33587,5162,
+33588,5148,
+33589,4215,
+33590,1199,
+33591,17909,
+33592,3250,
+33593,3262,
+33594,5161,
+33595,17910,
+33596,5147,
+33597,17911,
+33598,17912,
+33599,17913,
+33600,5157,
+33601,17914,
+33602,17915,
+33603,5155,
+33604,17916,
+33605,17917,
+33606,2258,
+33607,5154,
+33608,17918,
+33609,1188,
+33610,17919,
+33611,17920,
+33612,17921,
+33613,17922,
+33614,17923,
+33615,5153,
+33616,2153,
+33617,5142,
+33618,2009,
+33619,17924,
+33620,2526,
+33621,17925,
+33622,17926,
+33623,17927,
+33624,17928,
+33625,17929,
+33626,2119,
+33627,5143,
+33628,5144,
+33629,17930,
+33630,5151,
+33631,5156,
+33632,5159,
+33633,1429,
+33634,17931,
+33635,3252,
+33636,2044,
+33637,5164,
+33638,5163,
+33639,4240,
+33640,5165,
+33641,5167,
+33642,5169,
+33643,4216,
+33644,5168,
+33645,5170,
+33646,5171,
+33647,4144,
+33648,17932,
+33649,17933,
+33650,17934,
+33651,17935,
+33652,17936,
+33653,17937,
+33654,17938,
+33655,1920,
+33656,5173,
+33657,17939,
+33658,17940,
+33659,5186,
+33660,5181,
+33661,5184,
+33662,17941,
+33663,17942,
+33664,17943,
+33665,17944,
+33666,17945,
+33667,17946,
+33668,17947,
+33669,5180,
+33670,3053,
+33671,17948,
+33672,17949,
+33673,2525,
+33674,8875,
+33675,17950,
+33676,17951,
+33677,17952,
+33678,3304,
+33679,17953,
+33680,17954,
+33681,17955,
+33682,5146,
+33683,5178,
+33684,17956,
+33685,17957,
+33686,8127,
+33687,17958,
+33688,5187,
+33689,17959,
+33690,17960,
+33691,5150,
+33692,5179,
+33693,17961,
+33694,5188,
+33695,17962,
+33696,5176,
+33697,17963,
+33698,8061,
+33699,17964,
+33700,17965,
+33701,17966,
+33702,17967,
+33703,9011,
+33704,5189,
+33705,5183,
+33706,5177,
+33707,2829,
+33708,17968,
+33709,17969,
+33710,17970,
+33711,17971,
+33712,5172,
+33713,2462,
+33714,2548,
+33715,5174,
+33716,5175,
+33717,17972,
+33718,5182,
+33719,2054,
+33720,5185,
+33721,4237,
+33722,5190,
+33723,17973,
+33724,5191,
+33725,2732,
+33726,17974,
+33727,17975,
+33728,5214,
+33729,5192,
+33730,17976,
+33731,17977,
+33732,17978,
+33733,5213,
+33734,17979,
+33735,1814,
+33736,17980,
+33737,17981,
+33738,2308,
+33739,17982,
+33740,2345,
+33741,17983,
+33742,17984,
+33743,1921,
+33744,17985,
+33745,17986,
+33746,17987,
+33747,17988,
+33748,5206,
+33749,17989,
+33750,5201,
+33751,17990,
+33752,5195,
+33753,17991,
+33754,17992,
+33755,17993,
+33756,1170,
+33757,5199,
+33758,17994,
+33759,5207,
+33760,1131,
+33761,5217,
+33762,17995,
+33763,17996,
+33764,17997,
+33765,5194,
+33766,17998,
+33767,17999,
+33768,18000,
+33769,3055,
+33770,5212,
+33771,18001,
+33772,18002,
+33773,18003,
+33774,18004,
+33775,8013,
+33776,5216,
+33777,2603,
+33778,1635,
+33779,18005,
+33780,18006,
+33781,18007,
+33782,18008,
+33783,18009,
+33784,5210,
+33785,5211,
+33786,18010,
+33787,18011,
+33788,18012,
+33789,5200,
+33790,18013,
+33791,18014,
+33792,18015,
+33793,5193,
+33794,18016,
+33795,5209,
+33796,3620,
+33797,18017,
+33798,5205,
+33799,9012,
+33800,18018,
+33801,18019,
+33802,8177,
+33803,5198,
+33804,2765,
+33805,3035,
+33806,3773,
+33807,5208,
+33808,18020,
+33809,5204,
+33810,18021,
+33811,18022,
+33812,18023,
+33813,18024,
+33814,18025,
+33815,18026,
+33816,5197,
+33817,18027,
+33818,18028,
+33819,18029,
+33820,5202,
+33821,2691,
+33822,18030,
+33823,18031,
+33824,18032,
+33825,18033,
+33826,18034,
+33827,18035,
+33828,4238,
+33829,4239,
+33830,5215,
+33831,3937,
+33832,3283,
+33833,18036,
+33834,18037,
+33835,18038,
+33836,8587,
+33837,18039,
+33838,18040,
+33839,18041,
+33840,18042,
+33841,5234,
+33842,18043,
+33843,18044,
+33844,18045,
+33845,9033,
+33846,18046,
+33847,18047,
+33848,5203,
+33849,18048,
+33850,18049,
+33851,18050,
+33852,5228,
+33853,2699,
+33854,18051,
+33855,18052,
+33856,18053,
+33857,18054,
+33858,18055,
+33859,18056,
+33860,18057,
+33861,18058,
+33862,5229,
+33863,18059,
+33864,18060,
+33865,8715,
+33866,18061,
+33867,18062,
+33868,18063,
+33869,18064,
+33870,18065,
+33871,18066,
+33872,18067,
+33873,5219,
+33874,9030,
+33875,18068,
+33876,18069,
+33877,18070,
+33878,18071,
+33879,4599,
+33880,18072,
+33881,5221,
+33882,5220,
+33883,1771,
+33884,5218,
+33885,18073,
+33886,18074,
+33887,18075,
+33888,18076,
+33889,3054,
+33890,18077,
+33891,1516,
+33892,9031,
+33893,18078,
+33894,8595,
+33895,18079,
+33896,18080,
+33897,5230,
+33898,18081,
+33899,1968,
+33900,4388,
+33901,5235,
+33902,18082,
+33903,9889,
+33904,18083,
+33905,1363,
+33906,18084,
+33907,5222,
+33908,18085,
+33909,2440,
+33910,5231,
+33911,8034,
+33912,5227,
+33913,18086,
+33914,5225,
+33915,18087,
+33916,18088,
+33917,18089,
+33918,18090,
+33919,18091,
+33920,18092,
+33921,18093,
+33922,1466,
+33923,18094,
+33924,18095,
+33925,18096,
+33926,18097,
+33927,5223,
+33928,5224,
+33929,5226,
+33930,18098,
+33931,2176,
+33932,5232,
+33933,18099,
+33934,5233,
+33935,18100,
+33936,18101,
+33937,18102,
+33938,18103,
+33939,9037,
+33940,9032,
+33941,18104,
+33942,18105,
+33943,5249,
+33944,18106,
+33945,2766,
+33946,18107,
+33947,18108,
+33948,3543,
+33949,18109,
+33950,18110,
+33951,18111,
+33952,18112,
+33953,5246,
+33954,18113,
+33955,18114,
+33956,18115,
+33957,18116,
+33958,18117,
+33959,18118,
+33960,18119,
+33961,18120,
+33962,18121,
+33963,18122,
+33964,18123,
+33965,18124,
+33966,18125,
+33967,4759,
+33968,18126,
+33969,18127,
+33970,3056,
+33971,18128,
+33972,5248,
+33973,18129,
+33974,18130,
+33975,18131,
+33976,4501,
+33977,5247,
+33978,5244,
+33979,18132,
+33980,7776,
+33981,5240,
+33982,18133,
+33983,5243,
+33984,9029,
+33985,5236,
+33986,18134,
+33987,18135,
+33988,4025,
+33989,18136,
+33990,18137,
+33991,18138,
+33992,18139,
+33993,3251,
+33994,5242,
+33995,7954,
+33996,18140,
+33997,5237,
+33998,18141,
+33999,18142,
+34000,5238,
+34001,3559,
+34002,18143,
+34003,5241,
+34004,18144,
+34005,18145,
+34006,1078,
+34007,18146,
+34008,18147,
+34009,18148,
+34010,18149,
+34011,18150,
+34012,18151,
+34013,2465,
+34014,18152,
+34015,2094,
+34016,5245,
+34017,18153,
+34018,18154,
+34019,5251,
+34020,18155,
+34021,5250,
+34022,5239,
+34023,18156,
+34024,18157,
+34025,18158,
+34026,18159,
+34027,18160,
+34028,2991,
+34029,18161,
+34030,8216,
+34031,9013,
+34032,5255,
+34033,18162,
+34034,18163,
+34035,18164,
+34036,18165,
+34037,18166,
+34038,18167,
+34039,18168,
+34040,18169,
+34041,18170,
+34042,18171,
+34043,18172,
+34044,5262,
+34045,9020,
+34046,18173,
+34047,5261,
+34048,18174,
+34049,18175,
+34050,18176,
+34051,18177,
+34052,18178,
+34053,18179,
+34054,18180,
+34055,18181,
+34056,18182,
+34057,18183,
+34058,18184,
+34059,18185,
+34060,5252,
+34061,18186,
+34062,18187,
+34063,18188,
+34064,18189,
+34065,2804,
+34066,18190,
+34067,2722,
+34068,9839,
+34069,18191,
+34070,18192,
+34071,4482,
+34072,18193,
+34073,18194,
+34074,3780,
+34075,18195,
+34076,18196,
+34077,18197,
+34078,9041,
+34079,5257,
+34080,18198,
+34081,1171,
+34082,18199,
+34083,8096,
+34084,18200,
+34085,18201,
+34086,9016,
+34087,18202,
+34088,18203,
+34089,18204,
+34090,18205,
+34091,2891,
+34092,3446,
+34093,8731,
+34094,18206,
+34095,18207,
+34096,18208,
+34097,18209,
+34098,18210,
+34099,18211,
+34100,18212,
+34101,18213,
+34102,18214,
+34103,3131,
+34104,5254,
+34105,5256,
+34106,5258,
+34107,5260,
+34108,949,
+34109,1079,
+34110,18215,
+34111,18216,
+34112,18217,
+34113,9026,
+34114,18218,
+34115,5270,
+34116,18219,
+34117,18220,
+34118,9039,
+34119,18221,
+34120,5264,
+34121,2183,
+34122,3274,
+34123,18222,
+34124,18223,
+34125,18224,
+34126,9021,
+34127,18225,
+34128,18226,
+34129,18227,
+34130,9028,
+34131,9009,
+34132,18228,
+34133,9035,
+34134,5259,
+34135,18229,
+34136,9019,
+34137,5263,
+34138,18230,
+34139,18231,
+34140,18232,
+34141,18233,
+34142,5267,
+34143,18234,
+34144,18235,
+34145,18236,
+34146,9040,
+34147,18237,
+34148,5266,
+34149,18238,
+34150,18239,
+34151,18240,
+34152,5265,
+34153,7860,
+34154,8614,
+34155,18241,
+34156,18242,
+34157,8651,
+34158,18243,
+34159,18244,
+34160,18245,
+34161,18246,
+34162,5271,
+34163,18247,
+34164,4367,
+34165,18248,
+34166,18249,
+34167,9045,
+34168,18250,
+34169,5277,
+34170,5268,
+34171,5272,
+34172,18251,
+34173,18252,
+34174,2500,
+34175,18253,
+34176,18254,
+34177,18255,
+34178,18256,
+34179,18257,
+34180,1034,
+34181,5280,
+34182,18258,
+34183,5275,
+34184,9022,
+34185,18259,
+34186,8052,
+34187,18260,
+34188,9008,
+34189,18261,
+34190,18262,
+34191,5276,
+34192,18263,
+34193,9856,
+34194,18264,
+34195,18265,
+34196,8410,
+34197,18266,
+34198,18267,
+34199,18268,
+34200,18269,
+34201,18270,
+34202,18271,
+34203,4047,
+34204,5279,
+34205,18272,
+34206,18273,
+34207,9034,
+34208,18274,
+34209,18275,
+34210,18276,
+34211,18277,
+34212,5273,
+34213,18278,
+34214,8081,
+34215,18279,
+34216,5274,
+34217,8455,
+34218,3976,
+34219,18280,
+34220,18281,
+34221,18282,
+34222,5278,
+34223,3460,
+34224,5283,
+34225,18283,
+34226,18284,
+34227,18285,
+34228,18286,
+34229,18287,
+34230,18288,
+34231,5282,
+34232,18289,
+34233,5281,
+34234,9023,
+34235,18290,
+34236,18291,
+34237,18292,
+34238,18293,
+34239,18294,
+34240,18295,
+34241,5285,
+34242,18296,
+34243,18297,
+34244,18298,
+34245,18299,
+34246,18300,
+34247,18301,
+34248,18302,
+34249,2230,
+34250,18303,
+34251,18304,
+34252,18305,
+34253,8180,
+34254,9027,
+34255,1183,
+34256,2799,
+34257,18306,
+34258,18307,
+34259,5284,
+34260,18308,
+34261,2939,
+34262,18309,
+34263,18310,
+34264,18311,
+34265,18312,
+34266,18313,
+34267,18314,
+34268,5286,
+34269,8722,
+34270,18315,
+34271,18316,
+34272,18317,
+34273,18318,
+34274,18319,
+34275,18320,
+34276,3628,
+34277,8711,
+34278,18321,
+34279,18322,
+34280,18323,
+34281,1607,
+34282,9049,
+34283,18324,
+34284,18325,
+34285,18326,
+34286,18327,
+34287,18328,
+34288,18329,
+34289,18330,
+34290,18331,
+34291,18332,
+34292,8788,
+34293,18333,
+34294,9010,
+34295,18334,
+34296,18335,
+34297,7718,
+34298,9047,
+34299,4392,
+34300,18336,
+34301,18337,
+34302,18338,
+34303,5287,
+34304,18339,
+34305,18340,
+34306,18341,
+34307,18342,
+34308,9048,
+34309,5289,
+34310,8258,
+34311,8531,
+34312,18343,
+34313,18344,
+34314,18345,
+34315,8379,
+34316,18346,
+34317,18347,
+34318,18348,
+34319,18349,
+34320,18350,
+34321,2821,
+34322,18351,
+34323,18352,
+34324,18353,
+34325,18354,
+34326,5291,
+34327,18355,
+34328,18356,
+34329,18357,
+34330,9050,
+34331,18358,
+34332,18359,
+34333,18360,
+34334,9046,
+34335,18361,
+34336,18362,
+34337,18363,
+34338,9015,
+34339,18364,
+34340,18365,
+34341,18366,
+34342,18367,
+34343,5288,
+34344,18368,
+34345,5290,
+34346,18369,
+34347,18370,
+34348,18371,
+34349,8185,
+34350,18372,
+34351,18373,
+34352,18374,
+34353,18375,
+34354,18376,
+34355,18377,
+34356,18378,
+34357,18379,
+34358,18380,
+34359,18381,
+34360,4443,
+34361,18382,
+34362,9043,
+34363,18383,
+34364,5292,
+34365,18384,
+34366,18385,
+34367,8289,
+34368,18386,
+34369,18387,
+34370,18388,
+34371,18389,
+34372,18390,
+34373,18391,
+34374,18392,
+34375,18393,
+34376,18394,
+34377,18395,
+34378,18396,
+34379,18397,
+34380,18398,
+34381,7152,
+34382,1975,
+34383,2649,
+34384,2929,
+34385,2670,
+34386,18399,
+34387,18400,
+34388,7153,
+34389,7829,
+34390,18401,
+34391,18402,
+34392,18403,
+34393,18404,
+34394,4020,
+34395,18405,
+34396,8265,
+34397,18406,
+34398,4290,
+34399,8002,
+34400,18407,
+34401,18408,
+34402,6509,
+34403,18409,
+34404,18410,
+34405,18411,
+34406,18412,
+34407,8168,
+34408,18413,
+34409,18414,
+34410,18415,
+34411,1291,
+34412,7154,
+34413,18416,
+34414,7155,
+34415,18417,
+34416,18418,
+34417,3396,
+34418,18419,
+34419,18420,
+34420,18421,
+34421,18422,
+34422,18423,
+34423,18424,
+34424,18425,
+34425,1950,
+34426,7157,
+34427,7159,
+34428,7158,
+34429,3545,
+34430,3879,
+34431,7156,
+34432,3403,
+34433,4182,
+34434,2707,
+34435,18426,
+34436,18427,
+34437,18428,
+34438,18429,
+34439,18430,
+34440,18431,
+34441,18432,
+34442,3794,
+34443,7162,
+34444,1025,
+34445,7161,
+34446,18433,
+34447,18434,
+34448,18435,
+34449,18436,
+34450,18437,
+34451,7168,
+34452,18438,
+34453,1174,
+34454,18439,
+34455,18440,
+34456,18441,
+34457,18442,
+34458,18443,
+34459,18444,
+34460,4074,
+34461,7164,
+34462,18445,
+34463,18446,
+34464,18447,
+34465,18448,
+34466,18449,
+34467,7166,
+34468,4396,
+34469,18450,
+34470,18451,
+34471,7165,
+34472,7160,
+34473,7169,
+34474,7167,
+34475,18452,
+34476,7163,
+34477,18453,
+34478,18454,
+34479,7177,
+34480,7174,
+34481,7176,
+34482,18455,
+34483,18456,
+34484,7180,
+34485,7172,
+34486,7170,
+34487,18457,
+34488,18458,
+34489,18459,
+34490,7175,
+34491,18460,
+34492,18461,
+34493,18462,
+34494,18463,
+34495,18464,
+34496,4602,
+34497,18465,
+34498,18466,
+34499,18467,
+34500,7171,
+34501,18468,
+34502,3190,
+34503,3352,
+34504,18469,
+34505,7178,
+34506,1823,
+34507,1425,
+34508,18470,
+34509,18471,
+34510,7173,
+34511,7179,
+34512,7186,
+34513,7192,
+34514,18472,
+34515,18473,
+34516,2028,
+34517,18474,
+34518,18475,
+34519,18476,
+34520,7191,
+34521,3725,
+34522,18477,
+34523,4586,
+34524,18478,
+34525,18479,
+34526,7188,
+34527,7190,
+34528,18480,
+34529,18481,
+34530,18482,
+34531,18483,
+34532,1773,
+34533,18484,
+34534,18485,
+34535,18486,
+34536,18487,
+34537,7181,
+34538,18488,
+34539,18489,
+34540,18490,
+34541,7184,
+34542,2720,
+34543,18491,
+34544,4478,
+34545,7182,
+34546,7183,
+34547,7185,
+34548,7189,
+34549,18492,
+34550,18493,
+34551,18494,
+34552,7195,
+34553,4257,
+34554,9690,
+34555,18495,
+34556,18496,
+34557,18497,
+34558,1577,
+34559,18498,
+34560,3464,
+34561,18499,
+34562,1665,
+34563,7193,
+34564,18500,
+34565,18501,
+34566,9687,
+34567,7194,
+34568,7196,
+34569,7199,
+34570,7197,
+34571,18502,
+34572,18503,
+34573,7198,
+34574,18504,
+34575,18505,
+34576,18506,
+34577,18507,
+34578,4090,
+34579,7187,
+34580,18508,
+34581,3706,
+34582,18509,
+34583,3806,
+34584,4520,
+34585,18510,
+34586,7205,
+34587,18511,
+34588,2784,
+34589,18512,
+34590,7202,
+34591,18513,
+34592,18514,
+34593,2458,
+34594,7214,
+34595,7200,
+34596,18515,
+34597,7203,
+34598,18516,
+34599,18517,
+34600,18518,
+34601,7210,
+34602,18519,
+34603,18520,
+34604,18521,
+34605,18522,
+34606,7204,
+34607,18523,
+34608,18524,
+34609,7209,
+34610,18525,
+34611,18526,
+34612,7208,
+34613,18527,
+34614,18528,
+34615,7211,
+34616,18529,
+34617,18530,
+34618,18531,
+34619,7201,
+34620,18532,
+34621,18533,
+34622,7206,
+34623,7212,
+34624,18534,
+34625,18535,
+34626,18536,
+34627,18537,
+34628,18538,
+34629,18539,
+34630,18540,
+34631,4241,
+34632,7207,
+34633,1212,
+34634,18541,
+34635,18542,
+34636,7220,
+34637,18543,
+34638,3958,
+34639,18544,
+34640,18545,
+34641,18546,
+34642,18547,
+34643,7223,
+34644,18548,
+34645,8494,
+34646,18549,
+34647,2013,
+34648,18550,
+34649,7227,
+34650,18551,
+34651,18552,
+34652,18553,
+34653,18554,
+34654,18555,
+34655,18556,
+34656,7218,
+34657,18557,
+34658,18558,
+34659,7224,
+34660,7226,
+34661,7228,
+34662,8626,
+34663,18559,
+34664,18560,
+34665,18561,
+34666,18562,
+34667,18563,
+34668,18564,
+34669,18565,
+34670,7221,
+34671,18566,
+34672,7219,
+34673,18567,
+34674,18568,
+34675,18569,
+34676,1970,
+34677,18570,
+34678,1500,
+34679,18571,
+34680,8606,
+34681,18572,
+34682,18573,
+34683,7217,
+34684,7225,
+34685,7215,
+34686,7216,
+34687,18574,
+34688,18575,
+34689,18576,
+34690,7213,
+34691,7238,
+34692,9692,
+34693,7235,
+34694,18577,
+34695,18578,
+34696,7234,
+34697,18579,
+34698,18580,
+34699,7222,
+34700,18581,
+34701,3253,
+34702,18582,
+34703,18583,
+34704,18584,
+34705,18585,
+34706,18586,
+34707,7229,
+34708,18587,
+34709,18588,
+34710,18589,
+34711,7237,
+34712,18590,
+34713,18591,
+34714,18592,
+34715,18593,
+34716,18594,
+34717,18595,
+34718,8300,
+34719,2813,
+34720,18596,
+34721,18597,
+34722,8742,
+34723,18598,
+34724,18599,
+34725,18600,
+34726,18601,
+34727,18602,
+34728,7231,
+34729,18603,
+34730,18604,
+34731,7239,
+34732,7241,
+34733,7236,
+34734,18605,
+34735,7230,
+34736,18606,
+34737,18607,
+34738,18608,
+34739,7243,
+34740,18609,
+34741,7242,
+34742,18610,
+34743,18611,
+34744,18612,
+34745,18613,
+34746,2692,
+34747,9696,
+34748,18614,
+34749,7246,
+34750,18615,
+34751,18616,
+34752,7248,
+34753,18617,
+34754,18618,
+34755,18619,
+34756,8827,
+34757,18620,
+34758,7233,
+34759,18621,
+34760,9694,
+34761,18622,
+34762,7249,
+34763,7244,
+34764,18623,
+34765,18624,
+34766,9697,
+34767,18625,
+34768,18626,
+34769,7247,
+34770,7232,
+34771,7245,
+34772,18627,
+34773,18628,
+34774,18629,
+34775,18630,
+34776,18631,
+34777,18632,
+34778,18633,
+34779,7250,
+34780,18634,
+34781,18635,
+34782,18636,
+34783,18637,
+34784,7252,
+34785,18638,
+34786,18639,
+34787,9685,
+34788,18640,
+34789,7240,
+34790,18641,
+34791,18642,
+34792,18643,
+34793,18644,
+34794,7251,
+34795,18645,
+34796,7787,
+34797,18646,
+34798,7253,
+34799,9691,
+34800,18647,
+34801,18648,
+34802,7817,
+34803,18649,
+34804,18650,
+34805,18651,
+34806,9689,
+34807,18652,
+34808,18653,
+34809,3970,
+34810,18654,
+34811,8721,
+34812,18655,
+34813,18656,
+34814,7256,
+34815,18657,
+34816,18658,
+34817,18659,
+34818,18660,
+34819,4877,
+34820,18661,
+34821,8745,
+34822,9686,
+34823,18662,
+34824,18663,
+34825,18664,
+34826,7257,
+34827,18665,
+34828,18666,
+34829,18667,
+34830,18668,
+34831,18669,
+34832,9693,
+34833,9695,
+34834,18670,
+34835,7255,
+34836,18671,
+34837,3263,
+34838,7254,
+34839,18672,
+34840,18673,
+34841,18674,
+34842,18675,
+34843,7258,
+34844,18676,
+34845,18677,
+34846,18678,
+34847,8175,
+34848,18679,
+34849,7259,
+34850,1347,
+34851,9688,
+34852,18680,
+34853,18681,
+34854,18682,
+34855,18683,
+34856,18684,
+34857,18685,
+34858,18686,
+34859,18687,
+34860,18688,
+34861,18689,
+34862,18690,
+34863,18691,
+34864,18692,
+34865,7977,
+34866,6797,
+34867,18693,
+34868,18694,
+34869,18695,
+34870,7771,
+34871,18696,
+34872,18697,
+34873,7260,
+34874,18698,
+34875,8310,
+34876,7261,
+34877,18699,
+34878,18700,
+34879,18701,
+34880,4051,
+34881,18702,
+34882,18703,
+34883,18704,
+34884,7338,
+34885,3985,
+34886,8855,
+34887,18705,
+34888,18706,
+34889,18707,
+34890,9872,
+34891,18708,
+34892,3995,
+34893,4101,
+34894,18709,
+34895,18710,
+34896,18711,
+34897,18712,
+34898,18713,
+34899,8511,
+34900,3899,
+34901,18714,
+34902,18715,
+34903,2215,
+34904,18716,
+34905,4076,
+34906,18717,
+34907,8600,
+34908,18718,
+34909,7816,
+34910,18719,
+34911,18720,
+34912,18721,
+34913,1945,
+34914,5613,
+34915,4169,
+34916,7078,
+34917,1152,
+34918,18722,
+34919,18723,
+34920,1110,
+34921,7079,
+34922,18724,
+34923,3321,
+34924,1257,
+34925,18725,
+34926,4870,
+34927,18726,
+34928,3482,
+34929,18727,
+34930,7080,
+34931,18728,
+34932,18729,
+34933,18730,
+34934,18731,
+34935,4563,
+34936,18732,
+34937,8844,
+34938,18733,
+34939,18734,
+34940,18735,
+34941,7081,
+34942,7358,
+34943,7082,
+34944,18736,
+34945,4335,
+34946,7083,
+34947,18737,
+34948,971,
+34949,7359,
+34950,18738,
+34951,18739,
+34952,7360,
+34953,18740,
+34954,18741,
+34955,1407,
+34956,18742,
+34957,2972,
+34958,18743,
+34959,18744,
+34960,18745,
+34961,18746,
+34962,3598,
+34963,18747,
+34964,18748,
+34965,18749,
+34966,4015,
+34967,18750,
+34968,18751,
+34969,18752,
+34970,18753,
+34971,18754,
+34972,3729,
+34973,18755,
+34974,18756,
+34975,18757,
+34976,18758,
+34977,18759,
+34978,7084,
+34979,18760,
+34980,4871,
+34981,18761,
+34982,18762,
+34983,18763,
+34984,18764,
+34985,18765,
+34986,18766,
+34987,1060,
+34988,18767,
+34989,3867,
+34990,18768,
+34991,18769,
+34992,18770,
+34993,1695,
+34994,18771,
+34995,18772,
+34996,18773,
+34997,18774,
+34998,18775,
+34999,7086,
+35000,18776,
+35001,18777,
+35002,18778,
+35003,18779,
+35004,7087,
+35005,18780,
+35006,18781,
+35007,18782,
+35008,18783,
+35009,1162,
+35010,2586,
+35011,18784,
+35012,18785,
+35013,4621,
+35014,7085,
+35015,18786,
+35016,18787,
+35017,7088,
+35018,9713,
+35019,18788,
+35020,18789,
+35021,18790,
+35022,7090,
+35023,8204,
+35024,18791,
+35025,18792,
+35026,4874,
+35027,18793,
+35028,4200,
+35029,4326,
+35030,18794,
+35031,18795,
+35032,7361,
+35033,3220,
+35034,18796,
+35035,18797,
+35036,7768,
+35037,8876,
+35038,18798,
+35039,7362,
+35040,18799,
+35041,18800,
+35042,7089,
+35043,7091,
+35044,2416,
+35045,7092,
+35046,18801,
+35047,18802,
+35048,7096,
+35049,18803,
+35050,18804,
+35051,18805,
+35052,18806,
+35053,18807,
+35054,18808,
+35055,18809,
+35056,7098,
+35057,7093,
+35058,18810,
+35059,3338,
+35060,2978,
+35061,18811,
+35062,18812,
+35063,18813,
+35064,2698,
+35065,1877,
+35066,18814,
+35067,18815,
+35068,7095,
+35069,9895,
+35070,7097,
+35071,18816,
+35072,18817,
+35073,18818,
+35074,1836,
+35075,18819,
+35076,18820,
+35077,18821,
+35078,18822,
+35079,9846,
+35080,18823,
+35081,18824,
+35082,7103,
+35083,18825,
+35084,18826,
+35085,18827,
+35086,18828,
+35087,18829,
+35088,1933,
+35089,18830,
+35090,1032,
+35091,7101,
+35092,18831,
+35093,18832,
+35094,18833,
+35095,18834,
+35096,18835,
+35097,7100,
+35098,7094,
+35099,7102,
+35100,18836,
+35101,18837,
+35102,18838,
+35103,18839,
+35104,18840,
+35105,7099,
+35106,18841,
+35107,18842,
+35108,18843,
+35109,3271,
+35110,18844,
+35111,18845,
+35112,18846,
+35113,18847,
+35114,3707,
+35115,7105,
+35116,18848,
+35117,18849,
+35118,18850,
+35119,18851,
+35120,5945,
+35121,18852,
+35122,8161,
+35123,9659,
+35124,7104,
+35125,18853,
+35126,7106,
+35127,18854,
+35128,9662,
+35129,18855,
+35130,18856,
+35131,8925,
+35132,18857,
+35133,18858,
+35134,18859,
+35135,18860,
+35136,18861,
+35137,7107,
+35138,18862,
+35139,18863,
+35140,3922,
+35141,18864,
+35142,18865,
+35143,9661,
+35144,18866,
+35145,18867,
+35146,18868,
+35147,18869,
+35148,18870,
+35149,18871,
+35150,18872,
+35151,18873,
+35152,18874,
+35153,18875,
+35154,18876,
+35155,18877,
+35156,18878,
+35157,18879,
+35158,7722,
+35159,18880,
+35160,18881,
+35161,18882,
+35162,18883,
+35163,18884,
+35164,18885,
+35165,9660,
+35166,7363,
+35167,2244,
+35168,9658,
+35169,18886,
+35170,18887,
+35171,18888,
+35172,9663,
+35173,18889,
+35174,7108,
+35175,18890,
+35176,18891,
+35177,18892,
+35178,8583,
+35179,18893,
+35180,9835,
+35181,18894,
+35182,18895,
+35183,7807,
+35184,18896,
+35185,18897,
+35186,8621,
+35187,18898,
+35188,18899,
+35189,18900,
+35190,18901,
+35191,18902,
+35192,18903,
+35193,18904,
+35194,18905,
+35195,7109,
+35196,18906,
+35197,18907,
+35198,18908,
+35199,3846,
+35200,18909,
+35201,4145,
+35202,18910,
+35203,7135,
+35204,18911,
+35205,18912,
+35206,1709,
+35207,18913,
+35208,18914,
+35209,18915,
+35210,18916,
+35211,8086,
+35212,18917,
+35213,18918,
+35214,18919,
+35215,7986,
+35216,18920,
+35217,18921,
+35218,18922,
+35219,8324,
+35220,18923,
+35221,18924,
+35222,8502,
+35223,18925,
+35224,9400,
+35225,18926,
+35226,18927,
+35227,18928,
+35228,18929,
+35229,18930,
+35230,18931,
+35231,18932,
+35232,18933,
+35233,9402,
+35234,18934,
+35235,18935,
+35236,18936,
+35237,18937,
+35238,9404,
+35239,18938,
+35240,18939,
+35241,18940,
+35242,8420,
+35243,18941,
+35244,9401,
+35245,18942,
+35246,18943,
+35247,9405,
+35248,18944,
+35249,18945,
+35250,9406,
+35251,18946,
+35252,18947,
+35253,18948,
+35254,18949,
+35255,9407,
+35256,18950,
+35257,18951,
+35258,8146,
+35259,18952,
+35260,18953,
+35261,8189,
+35262,18954,
+35263,9403,
+35264,7981,
+35265,2158,
+35266,1844,
+35267,18955,
+35268,1855,
+35269,2782,
+35270,3434,
+35271,6458,
+35272,2475,
+35273,2340,
+35274,6459,
+35275,6460,
+35276,6461,
+35277,18956,
+35278,6462,
+35279,6463,
+35280,6464,
+35281,6465,
+35282,2200,
+35283,18957,
+35284,18958,
+35285,18959,
+35286,7511,
+35287,18960,
+35288,18961,
+35289,18962,
+35290,7513,
+35291,18963,
+35292,7514,
+35293,18964,
+35294,7512,
+35295,18965,
+35296,18966,
+35297,18967,
+35298,18968,
+35299,2227,
+35300,18969,
+35301,7515,
+35302,1320,
+35303,18970,
+35304,18971,
+35305,18972,
+35306,18973,
+35307,7516,
+35308,18974,
+35309,18975,
+35310,18976,
+35311,7517,
+35312,18977,
+35313,18978,
+35314,18979,
+35315,6592,
+35316,9737,
+35317,18980,
+35318,9738,
+35319,18981,
+35320,7828,
+35321,18982,
+35322,18983,
+35323,18984,
+35324,18985,
+35325,18986,
+35326,18987,
+35327,18988,
+35328,4093,
+35329,8927,
+35330,7883,
+35331,7949,
+35332,18989,
+35333,18990,
+35334,18991,
+35335,4862,
+35336,8055,
+35337,18992,
+35338,8683,
+35339,18993,
+35340,8929,
+35341,18994,
+35342,8559,
+35343,18995,
+35344,8928,
+35345,18996,
+35346,18997,
+35347,8682,
+35348,18998,
+35349,8930,
+35350,8395,
+35351,18999,
+35352,8056,
+35353,19000,
+35354,19001,
+35355,7906,
+35356,19002,
+35357,8690,
+35358,19003,
+35359,8528,
+35360,19004,
+35361,19005,
+35362,19006,
+35363,8147,
+35364,19007,
+35365,8933,
+35366,19008,
+35367,19009,
+35368,19010,
+35369,19011,
+35370,7922,
+35371,19012,
+35372,19013,
+35373,8479,
+35374,19014,
+35375,19015,
+35376,19016,
+35377,8669,
+35378,19017,
+35379,19018,
+35380,8532,
+35381,19019,
+35382,8935,
+35383,19020,
+35384,19021,
+35385,19022,
+35386,8834,
+35387,19023,
+35388,19024,
+35389,19025,
+35390,7518,
+35391,19026,
+35392,19027,
+35393,8934,
+35394,19028,
+35395,19029,
+35396,19030,
+35397,19031,
+35398,8936,
+35399,19032,
+35400,6788,
+35401,19033,
+35402,19034,
+35403,19035,
+35404,19036,
+35405,19037,
+35406,8932,
+35407,19038,
+35408,8810,
+35409,19039,
+35410,8939,
+35411,19040,
+35412,8937,
+35413,8381,
+35414,19041,
+35415,19042,
+35416,8938,
+35417,19043,
+35418,19044,
+35419,8893,
+35420,19045,
+35421,19046,
+35422,7838,
+35423,19047,
+35424,19048,
+35425,8950,
+35426,8679,
+35427,8726,
+35428,19049,
+35429,19050,
+35430,8503,
+35431,19051,
+35432,19052,
+35433,8492,
+35434,19053,
+35435,7784,
+35436,8946,
+35437,7991,
+35438,8947,
+35439,19054,
+35440,8943,
+35441,8016,
+35442,7952,
+35443,8648,
+35444,19055,
+35445,8945,
+35446,19056,
+35447,19057,
+35448,19058,
+35449,4435,
+35450,19059,
+35451,19060,
+35452,8944,
+35453,19061,
+35454,19062,
+35455,8942,
+35456,19063,
+35457,19064,
+35458,19065,
+35459,19066,
+35460,8941,
+35461,8862,
+35462,8940,
+35463,8162,
+35464,19067,
+35465,4323,
+35466,3631,
+35467,19068,
+35468,19069,
+35469,8446,
+35470,19070,
+35471,19071,
+35472,19072,
+35473,8953,
+35474,8954,
+35475,3419,
+35476,19073,
+35477,7855,
+35478,19074,
+35479,19075,
+35480,8758,
+35481,19076,
+35482,8951,
+35483,19077,
+35484,19078,
+35485,19079,
+35486,8765,
+35487,19080,
+35488,7810,
+35489,8118,
+35490,19081,
+35491,8612,
+35492,8618,
+35493,8952,
+35494,8529,
+35495,19082,
+35496,8032,
+35497,19083,
+35498,19084,
+35499,19085,
+35500,8519,
+35501,19086,
+35502,19087,
+35503,19088,
+35504,8517,
+35505,19089,
+35506,8156,
+35507,19090,
+35508,19091,
+35509,19092,
+35510,8961,
+35511,19093,
+35512,19094,
+35513,7925,
+35514,19095,
+35515,19096,
+35516,8728,
+35517,19097,
+35518,19098,
+35519,7878,
+35520,19099,
+35521,19100,
+35522,8960,
+35523,19101,
+35524,8884,
+35525,19102,
+35526,19103,
+35527,8553,
+35528,19104,
+35529,8957,
+35530,19105,
+35531,8426,
+35532,19106,
+35533,8948,
+35534,19107,
+35535,8955,
+35536,19108,
+35537,8956,
+35538,8231,
+35539,19109,
+35540,19110,
+35541,19111,
+35542,8288,
+35543,8959,
+35544,19112,
+35545,19113,
+35546,19114,
+35547,8958,
+35548,7879,
+35549,19115,
+35550,8972,
+35551,19116,
+35552,19117,
+35553,19118,
+35554,8949,
+35555,19119,
+35556,8966,
+35557,19120,
+35558,8970,
+35559,8659,
+35560,19121,
+35561,19122,
+35562,19123,
+35563,8963,
+35564,19124,
+35565,8967,
+35566,8971,
+35567,19125,
+35568,19126,
+35569,8031,
+35570,19127,
+35571,8969,
+35572,19128,
+35573,19129,
+35574,8962,
+35575,7940,
+35576,8861,
+35577,19130,
+35578,8699,
+35579,19131,
+35580,8968,
+35581,19132,
+35582,8364,
+35583,19133,
+35584,8334,
+35585,8965,
+35586,8599,
+35587,19134,
+35588,8561,
+35589,8856,
+35590,19135,
+35591,5948,
+35592,19136,
+35593,19137,
+35594,8023,
+35595,19138,
+35596,19139,
+35597,19140,
+35598,8322,
+35599,19141,
+35600,8977,
+35601,19142,
+35602,19143,
+35603,19144,
+35604,8964,
+35605,19145,
+35606,8975,
+35607,7733,
+35608,19146,
+35609,8401,
+35610,8976,
+35611,8099,
+35612,19147,
+35613,8662,
+35614,19148,
+35615,19149,
+35616,19150,
+35617,8710,
+35618,19151,
+35619,19152,
+35620,19153,
+35621,19154,
+35622,7519,
+35623,19155,
+35624,8973,
+35625,19156,
+35626,19157,
+35627,8978,
+35628,8333,
+35629,8979,
+35630,19158,
+35631,19159,
+35632,19160,
+35633,19161,
+35634,19162,
+35635,8931,
+35636,19163,
+35637,19164,
+35638,19165,
+35639,19166,
+35640,19167,
+35641,8122,
+35642,19168,
+35643,19169,
+35644,19170,
+35645,19171,
+35646,8312,
+35647,19172,
+35648,19173,
+35649,19174,
+35650,19175,
+35651,19176,
+35652,19177,
+35653,19178,
+35654,19179,
+35655,19180,
+35656,19181,
+35657,8840,
+35658,19182,
+35659,19183,
+35660,19184,
+35661,19185,
+35662,8982,
+35663,8043,
+35664,19186,
+35665,19187,
+35666,19188,
+35667,19189,
+35668,19190,
+35669,19191,
+35670,8980,
+35671,19192,
+35672,8496,
+35673,8981,
+35674,8552,
+35675,19193,
+35676,8388,
+35677,19194,
+35678,19195,
+35679,19196,
+35680,19197,
+35681,19198,
+35682,19199,
+35683,19200,
+35684,19201,
+35685,19202,
+35686,2270,
+35687,19203,
+35688,19204,
+35689,19205,
+35690,19206,
+35691,8984,
+35692,3016,
+35693,19207,
+35694,19208,
+35695,8729,
+35696,8727,
+35697,19209,
+35698,19210,
+35699,19211,
+35700,8405,
+35701,19212,
+35702,19213,
+35703,8010,
+35704,19214,
+35705,19215,
+35706,19216,
+35707,19217,
+35708,19218,
+35709,8768,
+35710,19219,
+35711,19220,
+35712,7891,
+35713,19221,
+35714,19222,
+35715,19223,
+35716,19224,
+35717,19225,
+35718,19226,
+35719,19227,
+35720,19228,
+35721,19229,
+35722,7753,
+35723,19230,
+35724,19231,
+35725,19232,
+35726,9755,
+35727,19233,
+35728,19234,
+35729,19235,
+35730,7789,
+35731,8440,
+35732,19236,
+35733,8187,
+35734,8985,
+35735,19237,
+35736,19238,
+35737,19239,
+35738,19240,
+35739,19241,
+35740,8974,
+35741,19242,
+35742,8983,
+35743,19243,
+35744,4887,
+35745,2105,
+35746,1512,
+35747,1719,
+35748,3242,
+35749,2072,
+35750,4888,
+35751,4889,
+35752,3625,
+35753,3230,
+35754,4890,
+35755,3100,
+35756,19244,
+35757,4062,
+35758,4208,
+35759,4063,
+35760,2106,
+35761,19245,
+35762,2179,
+35763,2041,
+35764,4891,
+35765,4892,
+35766,4081,
+35767,4893,
+35768,4024,
+35769,1582,
+35770,2690,
+35771,19246,
+35772,3524,
+35773,1674,
+35774,3361,
+35775,1632,
+35776,2342,
+35777,4515,
+35778,4894,
+35779,4895,
+35780,3039,
+35781,4676,
+35782,3405,
+35783,19247,
+35784,4426,
+35785,3540,
+35786,4496,
+35787,4896,
+35788,4574,
+35789,1357,
+35790,4898,
+35791,4897,
+35792,19248,
+35793,4210,
+35794,4899,
+35795,4900,
+35796,4901,
+35797,3435,
+35798,4902,
+35799,3394,
+35800,4903,
+35801,4904,
+35802,1268,
+35803,4590,
+35804,4905,
+35805,1989,
+35806,1423,
+35807,4906,
+35808,4907,
+35809,1863,
+35810,4056,
+35811,4207,
+35812,4908,
+35813,1726,
+35814,3927,
+35815,1206,
+35816,4909,
+35817,4910,
+35818,19249,
+35819,2236,
+35820,3819,
+35821,4308,
+35822,4911,
+35823,3842,
+35824,4912,
+35825,4282,
+35826,2042,
+35827,4913,
+35828,3498,
+35829,3525,
+35830,4914,
+35831,3176,
+35832,4589,
+35833,4915,
+35834,2934,
+35835,1536,
+35836,4916,
+35837,1641,
+35838,2395,
+35839,4917,
+35840,4918,
+35841,3490,
+35842,4919,
+35843,1496,
+35844,4920,
+35845,2571,
+35846,4632,
+35847,4921,
+35848,3595,
+35849,19250,
+35850,4209,
+35851,2836,
+35852,4922,
+35853,1502,
+35854,2022,
+35855,4923,
+35856,3966,
+35857,4924,
+35858,4925,
+35859,3788,
+35860,4926,
+35861,4927,
+35862,4928,
+35863,1214,
+35864,4931,
+35865,4929,
+35866,4113,
+35867,4930,
+35868,2778,
+35869,4932,
+35870,19251,
+35871,4933,
+35872,4934,
+35873,4935,
+35874,3974,
+35875,4140,
+35876,1028,
+35877,4936,
+35878,3112,
+35879,4937,
+35880,2248,
+35881,2726,
+35882,4938,
+35883,4939,
+35884,2818,
+35885,3594,
+35886,4940,
+35887,4941,
+35888,2473,
+35889,3062,
+35890,4942,
+35891,4943,
+35892,3121,
+35893,4944,
+35894,4945,
+35895,1825,
+35896,19252,
+35897,19253,
+35898,19254,
+35899,19255,
+35900,19256,
+35901,19257,
+35902,19258,
+35903,19259,
+35904,19260,
+35905,2050,
+35906,19261,
+35907,19262,
+35908,19263,
+35909,19264,
+35910,1528,
+35911,7414,
+35912,8392,
+35913,7415,
+35914,19265,
+35915,19266,
+35916,3732,
+35917,19267,
+35918,19268,
+35919,19269,
+35920,7933,
+35921,19270,
+35922,19271,
+35923,19272,
+35924,19273,
+35925,7445,
+35926,19274,
+35927,19275,
+35928,19276,
+35929,19277,
+35930,6544,
+35931,19278,
+35932,19279,
+35933,19280,
+35934,19281,
+35935,19282,
+35936,19283,
+35937,3936,
+35938,2004,
+35939,19284,
+35940,19285,
+35941,19286,
+35942,19287,
+35943,19288,
+35944,19289,
+35945,19290,
+35946,1911,
+35947,4328,
+35948,19291,
+35949,19292,
+35950,19293,
+35951,19294,
+35952,19295,
+35953,19296,
+35954,19297,
+35955,5597,
+35956,19298,
+35957,19299,
+35958,19300,
+35959,19301,
+35960,7504,
+35961,1043,
+35962,1209,
+35963,19302,
+35964,19303,
+35965,19304,
+35966,19305,
+35967,19306,
+35968,19307,
+35969,19308,
+35970,7505,
+35971,19309,
+35972,19310,
+35973,7507,
+35974,19311,
+35975,19312,
+35976,19313,
+35977,1928,
+35978,7506,
+35979,19314,
+35980,2743,
+35981,19315,
+35982,19316,
+35983,19317,
+35984,19318,
+35985,19319,
+35986,19320,
+35987,19321,
+35988,7509,
+35989,19322,
+35990,19323,
+35991,19324,
+35992,7508,
+35993,19325,
+35994,19326,
+35995,19327,
+35996,19328,
+35997,7739,
+35998,8831,
+35999,19329,
+36000,7948,
+36001,7769,
+36002,7972,
+36003,19330,
+36004,19331,
+36005,19332,
+36006,19333,
+36007,8378,
+36008,8037,
+36009,7920,
+36010,8548,
+36011,7984,
+36012,8801,
+36013,19334,
+36014,19335,
+36015,8866,
+36016,9387,
+36017,19336,
+36018,9391,
+36019,7912,
+36020,7993,
+36021,19337,
+36022,7752,
+36023,8304,
+36024,7848,
+36025,19338,
+36026,9388,
+36027,7927,
+36028,8566,
+36029,9389,
+36030,19339,
+36031,8315,
+36032,8005,
+36033,9386,
+36034,8267,
+36035,8239,
+36036,8026,
+36037,9392,
+36038,19340,
+36039,8887,
+36040,8063,
+36041,19341,
+36042,8805,
+36043,19342,
+36044,19343,
+36045,19344,
+36046,19345,
+36047,19346,
+36048,19347,
+36049,9394,
+36050,8475,
+36051,7761,
+36052,19348,
+36053,9396,
+36054,19349,
+36055,19350,
+36056,19351,
+36057,19352,
+36058,9395,
+36059,19353,
+36060,7839,
+36061,19354,
+36062,8472,
+36063,19355,
+36064,8372,
+36065,9135,
+36066,8635,
+36067,8306,
+36068,8085,
+36069,19356,
+36070,7946,
+36071,9398,
+36072,19357,
+36073,19358,
+36074,8849,
+36075,9397,
+36076,8824,
+36077,7892,
+36078,19359,
+36079,19360,
+36080,19361,
+36081,19362,
+36082,19363,
+36083,19364,
+36084,8179,
+36085,19365,
+36086,19366,
+36087,19367,
+36088,19368,
+36089,19369,
+36090,8873,
+36091,9399,
+36092,7976,
+36093,8457,
+36094,8903,
+36095,19370,
+36096,19371,
+36097,19372,
+36098,19373,
+36099,19374,
+36100,9390,
+36101,8881,
+36102,19375,
+36103,19376,
+36104,8806,
+36105,19377,
+36106,8795,
+36107,8900,
+36108,19378,
+36109,8469,
+36110,19379,
+36111,8746,
+36112,9393,
+36113,19380,
+36114,19381,
+36115,19382,
+36116,19383,
+36117,19384,
+36118,8509,
+36119,19385,
+36120,19386,
+36121,19387,
+36122,19388,
+36123,7957,
+36124,8796,
+36125,1053,
+36126,4491,
+36127,1717,
+36128,19389,
+36129,1802,
+36130,1165,
+36131,4403,
+36132,3898,
+36133,999,
+36134,4460,
+36135,2058,
+36136,4553,
+36137,1620,
+36138,3587,
+36139,3029,
+36140,1098,
+36141,1811,
+36142,4603,
+36143,1850,
+36144,1598,
+36145,2157,
+36146,6444,
+36147,6445,
+36148,3660,
+36149,1868,
+36150,6446,
+36151,1406,
+36152,2744,
+36153,1646,
+36154,1935,
+36155,6447,
+36156,4407,
+36157,6448,
+36158,2121,
+36159,2036,
+36160,6449,
+36161,2599,
+36162,2655,
+36163,4386,
+36164,4647,
+36165,6450,
+36166,6451,
+36167,6454,
+36168,6452,
+36169,6453,
+36170,3351,
+36171,1710,
+36172,1539,
+36173,6455,
+36174,3457,
+36175,3334,
+36176,1360,
+36177,19390,
+36178,19391,
+36179,5691,
+36180,2979,
+36181,6456,
+36182,2464,
+36183,19392,
+36184,4629,
+36185,6457,
+36186,4617,
+36187,3287,
+36188,4745,
+36189,4739,
+36190,4385,
+36191,19393,
+36192,4412,
+36193,3325,
+36194,4243,
+36195,1742,
+36196,1285,
+36197,19394,
+36198,3355,
+36199,7412,
+36200,19395,
+36201,19396,
+36202,19397,
+36203,1932,
+36204,19398,
+36205,7413,
+36206,19399,
+36207,19400,
+36208,4668,
+36209,19401,
+36210,19402,
+36211,7407,
+36212,1707,
+36213,4469,
+36214,1738,
+36215,3087,
+36216,19403,
+36217,19404,
+36218,19405,
+36219,19406,
+36220,19407,
+36221,19408,
+36222,19409,
+36223,19410,
+36224,19411,
+36225,1256,
+36226,19412,
+36227,19413,
+36228,7408,
+36229,1233,
+36230,19414,
+36231,19415,
+36232,19416,
+36233,19417,
+36234,4352,
+36235,3188,
+36236,19418,
+36237,19419,
+36238,19420,
+36239,19421,
+36240,19422,
+36241,7410,
+36242,19423,
+36243,19424,
+36244,7409,
+36245,7956,
+36246,19425,
+36247,19426,
+36248,19427,
+36249,8826,
+36250,19428,
+36251,19429,
+36252,19430,
+36253,19431,
+36254,19432,
+36255,3614,
+36256,19433,
+36257,19434,
+36258,19435,
+36259,3199,
+36260,19436,
+36261,19437,
+36262,19438,
+36263,19439,
+36264,8430,
+36265,19440,
+36266,19441,
+36267,19442,
+36268,19443,
+36269,19444,
+36270,19445,
+36271,19446,
+36272,19447,
+36273,7411,
+36274,9720,
+36275,4672,
+36276,2944,
+36277,7452,
+36278,19448,
+36279,19449,
+36280,7447,
+36281,19450,
+36282,7455,
+36283,19451,
+36284,7454,
+36285,19452,
+36286,4537,
+36287,7453,
+36288,19453,
+36289,19454,
+36290,19455,
+36291,4353,
+36292,7456,
+36293,19456,
+36294,7464,
+36295,19457,
+36296,19458,
+36297,19459,
+36298,19460,
+36299,986,
+36300,1497,
+36301,19461,
+36302,7461,
+36303,7462,
+36304,19462,
+36305,2973,
+36306,19463,
+36307,19464,
+36308,19465,
+36309,19466,
+36310,7457,
+36311,7458,
+36312,19467,
+36313,19468,
+36314,7459,
+36315,7463,
+36316,19469,
+36317,2319,
+36318,7460,
+36319,1781,
+36320,19470,
+36321,19471,
+36322,19472,
+36323,7468,
+36324,7471,
+36325,19473,
+36326,19474,
+36327,19475,
+36328,2420,
+36329,19476,
+36330,1867,
+36331,7448,
+36332,7465,
+36333,19477,
+36334,19478,
+36335,2654,
+36336,19479,
+36337,19480,
+36338,19481,
+36339,3659,
+36340,19482,
+36341,2156,
+36342,19483,
+36343,7466,
+36344,7467,
+36345,7469,
+36346,1572,
+36347,7470,
+36348,19484,
+36349,7473,
+36350,19485,
+36351,19486,
+36352,19487,
+36353,19488,
+36354,19489,
+36355,19490,
+36356,19491,
+36357,7449,
+36358,19492,
+36359,19493,
+36360,19494,
+36361,7472,
+36362,4256,
+36363,19495,
+36364,1297,
+36365,19496,
+36366,19497,
+36367,3575,
+36368,8084,
+36369,19498,
+36370,19499,
+36371,19500,
+36372,7474,
+36373,19501,
+36374,19502,
+36375,19503,
+36376,19504,
+36377,19505,
+36378,19506,
+36379,19507,
+36380,19508,
+36381,7475,
+36382,2320,
+36383,7476,
+36384,19509,
+36385,19510,
+36386,3634,
+36387,7479,
+36388,19511,
+36389,19512,
+36390,19513,
+36391,19514,
+36392,19515,
+36393,1167,
+36394,4662,
+36395,19516,
+36396,7477,
+36397,19517,
+36398,7478,
+36399,7480,
+36400,19518,
+36401,7486,
+36402,19519,
+36403,19520,
+36404,8752,
+36405,7484,
+36406,19521,
+36407,19522,
+36408,19523,
+36409,7483,
+36410,7481,
+36411,19524,
+36412,19525,
+36413,7485,
+36414,19526,
+36415,19527,
+36416,7482,
+36417,7488,
+36418,7489,
+36419,19528,
+36420,3638,
+36421,19529,
+36422,19530,
+36423,5947,
+36424,1433,
+36425,7487,
+36426,7492,
+36427,3574,
+36428,9725,
+36429,19531,
+36430,19532,
+36431,19533,
+36432,19534,
+36433,7490,
+36434,7491,
+36435,19535,
+36436,19536,
+36437,9728,
+36438,19537,
+36439,19538,
+36440,19539,
+36441,7450,
+36442,19540,
+36443,19541,
+36444,19542,
+36445,19543,
+36446,19544,
+36447,19545,
+36448,19546,
+36449,19547,
+36450,19548,
+36451,9734,
+36452,19549,
+36453,19550,
+36454,1069,
+36455,19551,
+36456,19552,
+36457,7451,
+36458,19553,
+36459,19554,
+36460,1446,
+36461,1195,
+36462,19555,
+36463,7496,
+36464,7493,
+36465,19556,
+36466,1558,
+36467,19557,
+36468,7497,
+36469,19558,
+36470,7494,
+36471,19559,
+36472,19560,
+36473,19561,
+36474,9727,
+36475,19562,
+36476,7495,
+36477,19563,
+36478,19564,
+36479,1373,
+36480,19565,
+36481,4397,
+36482,19566,
+36483,19567,
+36484,19568,
+36485,7498,
+36486,19569,
+36487,1310,
+36488,19570,
+36489,9724,
+36490,7820,
+36491,9730,
+36492,19571,
+36493,8781,
+36494,19572,
+36495,7499,
+36496,7501,
+36497,9732,
+36498,9726,
+36499,9731,
+36500,7500,
+36501,19573,
+36502,19574,
+36503,19575,
+36504,19576,
+36505,19577,
+36506,9729,
+36507,19578,
+36508,7502,
+36509,19579,
+36510,7503,
+36511,19580,
+36512,19581,
+36513,9733,
+36514,19582,
+36515,19583,
+36516,19584,
+36517,7843,
+36518,9736,
+36519,19585,
+36520,19586,
+36521,19587,
+36522,9735,
+36523,3366,
+36524,1795,
+36525,19588,
+36526,19589,
+36527,3192,
+36528,19590,
+36529,19591,
+36530,1570,
+36531,19592,
+36532,19593,
+36533,19594,
+36534,19595,
+36535,19596,
+36536,19597,
+36537,19598,
+36538,3612,
+36539,19599,
+36540,19600,
+36541,19601,
+36542,19602,
+36543,19603,
+36544,8432,
+36545,19604,
+36546,19605,
+36547,19606,
+36548,19607,
+36549,19608,
+36550,19609,
+36551,19610,
+36552,19611,
+36553,19612,
+36554,7803,
+36555,8807,
+36556,7990,
+36557,8150,
+36558,6392,
+36559,19613,
+36560,19614,
+36561,19615,
+36562,8672,
+36563,19616,
+36564,9356,
+36565,19617,
+36566,19618,
+36567,19619,
+36568,19620,
+36569,19621,
+36570,19622,
+36571,9357,
+36572,19623,
+36573,19624,
+36574,19625,
+36575,8450,
+36576,19626,
+36577,19627,
+36578,19628,
+36579,19629,
+36580,9364,
+36581,19630,
+36582,19631,
+36583,19632,
+36584,19633,
+36585,19634,
+36586,19635,
+36587,9363,
+36588,19636,
+36589,19637,
+36590,19638,
+36591,19639,
+36592,19640,
+36593,19641,
+36594,9358,
+36595,19642,
+36596,19643,
+36597,19644,
+36598,19645,
+36599,19646,
+36600,8857,
+36601,9361,
+36602,9366,
+36603,9359,
+36604,9362,
+36605,19647,
+36606,9367,
+36607,19648,
+36608,19649,
+36609,19650,
+36610,19651,
+36611,8113,
+36612,19652,
+36613,9370,
+36614,19653,
+36615,9369,
+36616,19654,
+36617,8792,
+36618,9368,
+36619,19655,
+36620,19656,
+36621,19657,
+36622,19658,
+36623,19659,
+36624,19660,
+36625,19661,
+36626,9371,
+36627,19662,
+36628,7945,
+36629,8422,
+36630,19663,
+36631,19664,
+36632,19665,
+36633,19666,
+36634,19667,
+36635,8230,
+36636,9375,
+36637,8025,
+36638,9373,
+36639,9374,
+36640,19668,
+36641,19669,
+36642,19670,
+36643,19671,
+36644,19672,
+36645,7995,
+36646,9372,
+36647,19673,
+36648,19674,
+36649,7738,
+36650,8283,
+36651,19675,
+36652,19676,
+36653,19677,
+36654,19678,
+36655,8048,
+36656,19679,
+36657,19680,
+36658,19681,
+36659,9376,
+36660,19682,
+36661,19683,
+36662,19684,
+36663,19685,
+36664,8507,
+36665,19686,
+36666,19687,
+36667,7943,
+36668,19688,
+36669,19689,
+36670,8816,
+36671,8759,
+36672,19690,
+36673,19691,
+36674,9426,
+36675,19692,
+36676,8627,
+36677,8773,
+36678,9377,
+36679,19693,
+36680,19694,
+36681,8872,
+36682,19695,
+36683,19696,
+36684,19697,
+36685,8828,
+36686,8112,
+36687,19698,
+36688,19699,
+36689,19700,
+36690,19701,
+36691,19702,
+36692,9378,
+36693,19703,
+36694,19704,
+36695,19705,
+36696,19706,
+36697,19707,
+36698,19708,
+36699,19709,
+36700,19710,
+36701,19711,
+36702,19712,
+36703,8006,
+36704,19713,
+36705,9088,
+36706,9365,
+36707,19714,
+36708,9360,
+36709,19715,
+36710,1242,
+36711,4417,
+36712,1861,
+36713,4036,
+36714,19716,
+36715,6369,
+36716,4615,
+36717,6370,
+36718,2685,
+36719,3272,
+36720,1947,
+36721,6371,
+36722,6372,
+36723,6373,
+36724,4576,
+36725,6374,
+36726,6375,
+36727,6377,
+36728,6376,
+36729,6378,
+36730,6379,
+36731,3166,
+36732,6380,
+36733,4379,
+36734,6381,
+36735,2207,
+36736,19717,
+36737,6382,
+36738,6383,
+36739,2208,
+36740,6384,
+36741,1699,
+36742,2567,
+36743,6385,
+36744,1051,
+36745,2025,
+36746,1870,
+36747,6386,
+36748,19718,
+36749,6387,
+36750,6388,
+36751,6389,
+36752,1685,
+36753,2080,
+36754,19719,
+36755,3451,
+36756,5492,
+36757,4338,
+36758,3882,
+36759,4440,
+36760,6390,
+36761,4479,
+36762,6391,
+36763,3980,
+36764,1813,
+36765,19720,
+36766,1354,
+36767,1090,
+36768,19721,
+36769,19722,
+36770,19723,
+36771,2460,
+36772,19724,
+36773,19725,
+36774,7728,
+36775,19726,
+36776,1103,
+36777,1104,
+36778,19727,
+36779,1105,
+36780,19728,
+36781,7837,
+36782,7755,
+36783,7754,
+36784,1250,
+36785,3267,
+36786,8362,
+36787,19729,
+36788,19730,
+36789,19731,
+36790,5949,
+36791,19732,
+36792,19733,
+36793,1096,
+36794,19734,
+36795,19735,
+36796,19736,
+36797,2578,
+36798,1394,
+36799,19737,
+36800,19738,
+36801,3109,
+36802,4285,
+36803,19739,
+36804,3096,
+36805,4065,
+36806,19740,
+36807,1878,
+36808,2716,
+36809,19741,
+36810,19742,
+36811,19743,
+36812,19744,
+36813,19745,
+36814,4242,
+36815,19746,
+36816,4366,
+36817,2253,
+36818,19747,
+36819,5950,
+36820,1618,
+36821,5951,
+36822,19748,
+36823,19749,
+36824,1998,
+36825,4483,
+36826,19750,
+36827,2249,
+36828,4345,
+36829,3764,
+36830,2549,
+36831,1278,
+36832,19751,
+36833,19752,
+36834,3657,
+36835,19753,
+36836,5954,
+36837,5952,
+36838,5956,
+36839,19754,
+36840,5958,
+36841,5955,
+36842,1456,
+36843,3047,
+36844,19755,
+36845,1501,
+36846,5953,
+36847,19756,
+36848,3469,
+36849,19757,
+36850,19758,
+36851,5957,
+36852,9851,
+36853,19759,
+36854,19760,
+36855,2777,
+36856,1070,
+36857,2070,
+36858,19761,
+36859,19762,
+36860,19763,
+36861,4628,
+36862,19764,
+36863,19765,
+36864,3708,
+36865,3522,
+36866,3425,
+36867,3622,
+36868,5960,
+36869,5959,
+36870,2889,
+36871,19766,
+36872,19767,
+36873,4042,
+36874,4064,
+36875,5961,
+36876,19768,
+36877,5964,
+36878,19769,
+36879,3689,
+36880,4591,
+36881,5963,
+36882,1470,
+36883,19770,
+36884,3695,
+36885,9202,
+36886,5965,
+36887,1529,
+36888,19771,
+36889,8830,
+36890,3673,
+36891,1853,
+36892,19772,
+36893,3420,
+36894,1270,
+36895,3534,
+36896,4399,
+36897,5966,
+36898,1671,
+36899,8217,
+36900,19773,
+36901,19774,
+36902,5962,
+36903,19775,
+36904,19776,
+36905,19777,
+36906,19778,
+36907,19779,
+36908,19780,
+36909,5969,
+36910,1409,
+36911,5970,
+36912,19781,
+36913,19782,
+36914,8123,
+36915,19783,
+36916,19784,
+36917,5967,
+36918,5968,
+36919,19785,
+36920,4196,
+36921,19786,
+36922,19787,
+36923,2694,
+36924,1071,
+36925,19788,
+36926,4295,
+36927,19789,
+36928,19790,
+36929,1564,
+36930,3553,
+36931,19791,
+36932,5971,
+36933,19792,
+36934,19793,
+36935,4315,
+36936,19794,
+36937,19795,
+36938,19796,
+36939,8787,
+36940,19797,
+36941,1106,
+36942,7998,
+36943,1587,
+36944,5974,
+36945,5972,
+36946,5973,
+36947,1441,
+36948,7846,
+36949,8590,
+36950,19798,
+36951,4172,
+36952,5976,
+36953,19799,
+36954,19800,
+36955,5978,
+36956,8684,
+36957,19801,
+36958,7870,
+36959,19802,
+36960,8778,
+36961,19803,
+36962,5977,
+36963,3119,
+36964,19804,
+36965,4138,
+36966,19805,
+36967,19806,
+36968,5975,
+36969,8499,
+36970,19807,
+36971,19808,
+36972,19809,
+36973,4389,
+36974,4475,
+36975,19810,
+36976,19811,
+36977,19812,
+36978,7812,
+36979,19813,
+36980,5980,
+36981,4686,
+36982,19814,
+36983,8399,
+36984,8674,
+36985,19815,
+36986,8719,
+36987,19816,
+36988,8233,
+36989,5981,
+36990,19817,
+36991,1093,
+36992,4132,
+36993,8307,
+36994,5982,
+36995,5984,
+36996,8021,
+36997,19818,
+36998,19819,
+36999,9201,
+37000,5983,
+37001,19820,
+37002,7750,
+37003,5985,
+37004,19821,
+37005,19822,
+37006,19823,
+37007,8291,
+37008,9203,
+37009,4191,
+37010,19824,
+37011,1452,
+37012,19825,
+37013,6167,
+37014,19826,
+37015,4967,
+37016,19827,
+37017,4970,
+37018,19828,
+37019,4968,
+37020,19829,
+37021,4969,
+37022,19830,
+37023,19831,
+37024,19832,
+37025,4972,
+37026,3994,
+37027,2858,
+37028,19833,
+37029,19834,
+37030,1017,
+37031,19835,
+37032,19836,
+37033,19837,
+37034,3963,
+37035,19838,
+37036,4971,
+37037,19839,
+37038,4271,
+37039,1889,
+37040,4978,
+37041,3182,
+37042,19840,
+37043,4974,
+37044,4973,
+37045,3348,
+37046,4975,
+37047,19841,
+37048,4977,
+37049,4667,
+37050,4976,
+37051,2595,
+37052,19842,
+37053,19843,
+37054,4981,
+37055,19844,
+37056,19845,
+37057,4313,
+37058,19846,
+37059,19847,
+37060,4983,
+37061,4980,
+37062,19848,
+37063,4984,
+37064,19849,
+37065,19850,
+37066,2189,
+37067,19851,
+37068,19852,
+37069,19853,
+37070,2484,
+37071,4979,
+37072,4982,
+37073,4514,
+37074,19854,
+37075,4985,
+37076,19855,
+37077,19856,
+37078,19857,
+37079,4989,
+37080,19858,
+37081,19859,
+37082,19860,
+37083,4990,
+37084,4988,
+37085,1913,
+37086,19861,
+37087,8990,
+37088,19862,
+37089,2353,
+37090,4987,
+37091,19863,
+37092,19864,
+37093,19865,
+37094,4986,
+37095,4362,
+37096,1158,
+37097,19866,
+37098,19867,
+37099,4991,
+37100,19868,
+37101,1874,
+37102,19869,
+37103,4992,
+37104,19870,
+37105,19871,
+37106,19872,
+37107,19873,
+37108,1248,
+37109,8755,
+37110,19874,
+37111,19875,
+37112,1415,
+37113,19876,
+37114,19877,
+37115,19878,
+37116,19879,
+37117,1531,
+37118,4993,
+37119,19880,
+37120,19881,
+37121,19882,
+37122,1588,
+37123,19883,
+37124,4994,
+37125,19884,
+37126,8992,
+37127,19885,
+37128,19886,
+37129,8647,
+37130,19887,
+37131,19888,
+37132,19889,
+37133,19890,
+37134,19891,
+37135,19892,
+37136,19893,
+37137,19894,
+37138,8892,
+37139,19895,
+37140,8988,
+37141,19896,
+37142,8785,
+37143,19897,
+37144,19898,
+37145,1074,
+37146,19899,
+37147,19900,
+37148,19901,
+37149,19902,
+37150,4996,
+37151,19903,
+37152,19904,
+37153,19905,
+37154,4995,
+37155,4997,
+37156,19906,
+37157,19907,
+37158,19908,
+37159,7867,
+37160,19909,
+37161,19910,
+37162,19911,
+37163,19912,
+37164,19913,
+37165,8839,
+37166,19914,
+37167,4999,
+37168,8237,
+37169,4998,
+37170,7851,
+37171,19915,
+37172,8989,
+37173,19916,
+37174,8991,
+37175,19917,
+37176,19918,
+37177,5000,
+37178,8987,
+37179,19919,
+37180,19920,
+37181,19921,
+37182,19922,
+37183,19923,
+37184,19924,
+37185,19925,
+37186,19926,
+37187,5001,
+37188,19927,
+37189,19928,
+37190,5002,
+37191,19929,
+37192,8993,
+37193,4276,
+37194,7416,
+37195,3186,
+37196,4640,
+37197,2981,
+37198,7418,
+37199,7419,
+37200,7417,
+37201,19930,
+37202,2293,
+37203,19931,
+37204,19932,
+37205,19933,
+37206,19934,
+37207,4026,
+37208,19935,
+37209,19936,
+37210,1648,
+37211,19937,
+37212,19938,
+37213,4368,
+37214,3581,
+37215,19939,
+37216,19940,
+37217,7422,
+37218,7421,
+37219,1887,
+37220,7420,
+37221,3531,
+37222,19941,
+37223,19942,
+37224,19943,
+37225,7424,
+37226,2493,
+37227,19944,
+37228,1295,
+37229,19945,
+37230,3675,
+37231,7425,
+37232,7423,
+37233,2181,
+37234,7428,
+37235,19946,
+37236,7429,
+37237,2206,
+37238,2749,
+37239,2414,
+37240,3542,
+37241,7430,
+37242,19947,
+37243,19948,
+37244,19949,
+37245,7426,
+37246,7427,
+37247,2899,
+37248,19950,
+37249,19951,
+37250,19952,
+37251,19953,
+37252,19954,
+37253,7432,
+37254,19955,
+37255,1343,
+37256,19956,
+37257,4682,
+37258,19957,
+37259,1370,
+37260,7431,
+37261,7434,
+37262,19958,
+37263,19959,
+37264,7433,
+37265,7435,
+37266,3996,
+37267,19960,
+37268,19961,
+37269,19962,
+37270,8789,
+37271,19963,
+37272,19964,
+37273,19965,
+37274,2774,
+37275,3204,
+37276,7823,
+37277,19966,
+37278,19967,
+37279,19968,
+37280,19969,
+37281,19970,
+37282,7436,
+37283,7437,
+37284,19971,
+37285,19972,
+37286,19973,
+37287,19974,
+37288,19975,
+37289,19976,
+37290,7438,
+37291,8716,
+37292,8100,
+37293,7439,
+37294,7440,
+37295,7441,
+37296,19977,
+37297,19978,
+37298,19979,
+37299,19980,
+37300,7443,
+37301,7442,
+37302,19981,
+37303,19982,
+37304,19983,
+37305,19984,
+37306,7444,
+37307,19985,
+37308,19986,
+37309,19987,
+37310,19988,
+37311,19989,
+37312,8347,
+37313,8664,
+37314,19990,
+37315,9722,
+37316,19991,
+37317,9721,
+37318,19992,
+37319,1168,
+37320,19993,
+37321,4281,
+37322,3428,
+37323,8500,
+37324,2522,
+37325,4567,
+37326,4151,
+37327,2568,
+37328,19994,
+37329,2241,
+37330,9459,
+37331,9460,
+37332,9461,
+37333,9464,
+37334,19995,
+37335,9463,
+37336,7880,
+37337,9462,
+37338,19996,
+37339,19997,
+37340,1701,
+37341,8832,
+37342,19998,
+37343,19999,
+37344,20000,
+37345,20001,
+37346,20002,
+37347,7877,
+37348,9467,
+37349,20003,
+37350,20004,
+37351,9466,
+37352,20005,
+37353,7917,
+37354,20006,
+37355,20007,
+37356,20008,
+37357,20009,
+37358,20010,
+37359,20011,
+37360,20012,
+37361,20013,
+37362,20014,
+37363,20015,
+37364,20016,
+37365,9469,
+37366,20017,
+37367,9465,
+37368,20018,
+37369,9470,
+37370,8397,
+37371,20019,
+37372,20020,
+37373,20021,
+37374,20022,
+37375,20023,
+37376,9480,
+37377,9476,
+37378,20024,
+37379,20025,
+37380,9478,
+37381,20026,
+37382,20027,
+37383,20028,
+37384,9471,
+37385,8336,
+37386,20029,
+37387,20030,
+37388,20031,
+37389,7901,
+37390,7973,
+37391,20032,
+37392,9475,
+37393,9474,
+37394,20033,
+37395,20034,
+37396,7802,
+37397,8358,
+37398,20035,
+37399,20036,
+37400,20037,
+37401,20038,
+37402,20039,
+37403,20040,
+37404,20041,
+37405,20042,
+37406,8149,
+37407,20043,
+37408,20044,
+37409,20045,
+37410,20046,
+37411,7953,
+37412,20047,
+37413,9479,
+37414,9472,
+37415,9477,
+37416,20048,
+37417,20049,
+37418,20050,
+37419,20051,
+37420,20052,
+37421,20053,
+37422,9497,
+37423,20054,
+37424,9493,
+37425,20055,
+37426,20056,
+37427,9484,
+37428,8241,
+37429,20057,
+37430,20058,
+37431,9483,
+37432,9487,
+37433,9498,
+37434,9481,
+37435,20059,
+37436,20060,
+37437,9486,
+37438,8756,
+37439,9491,
+37440,8064,
+37441,20061,
+37442,20062,
+37443,20063,
+37444,20064,
+37445,9473,
+37446,20065,
+37447,20066,
+37448,9495,
+37449,9494,
+37450,20067,
+37451,20068,
+37452,20069,
+37453,9496,
+37454,20070,
+37455,20071,
+37456,20072,
+37457,7766,
+37458,20073,
+37459,20074,
+37460,20075,
+37461,9485,
+37462,20076,
+37463,8403,
+37464,20077,
+37465,20078,
+37466,8314,
+37467,8398,
+37468,20079,
+37469,20080,
+37470,9488,
+37471,20081,
+37472,20082,
+37473,20083,
+37474,7765,
+37475,20084,
+37476,20085,
+37477,20086,
+37478,9482,
+37479,20087,
+37480,20088,
+37481,20089,
+37482,20090,
+37483,20091,
+37484,9489,
+37485,9490,
+37486,20092,
+37487,20093,
+37488,20094,
+37489,20095,
+37490,20096,
+37491,20097,
+37492,2155,
+37493,20098,
+37494,20099,
+37495,20100,
+37496,8106,
+37497,20101,
+37498,9502,
+37499,7967,
+37500,20102,
+37501,20103,
+37502,20104,
+37503,9517,
+37504,8733,
+37505,20105,
+37506,20106,
+37507,9522,
+37508,20107,
+37509,8571,
+37510,20108,
+37511,20109,
+37512,20110,
+37513,20111,
+37514,20112,
+37515,20113,
+37516,20114,
+37517,20115,
+37518,7552,
+37519,20116,
+37520,20117,
+37521,8623,
+37522,20118,
+37523,9516,
+37524,20119,
+37525,20120,
+37526,9512,
+37527,20121,
+37528,8332,
+37529,20122,
+37530,9519,
+37531,20123,
+37532,8636,
+37533,20124,
+37534,20125,
+37535,20126,
+37536,9501,
+37537,20127,
+37538,20128,
+37539,9525,
+37540,20129,
+37541,8717,
+37542,9510,
+37543,20130,
+37544,9524,
+37545,9514,
+37546,9503,
+37547,9521,
+37548,9500,
+37549,20131,
+37550,7553,
+37551,20132,
+37552,20133,
+37553,9509,
+37554,20134,
+37555,20135,
+37556,20136,
+37557,20137,
+37558,20138,
+37559,8653,
+37560,20139,
+37561,8666,
+37562,20140,
+37563,8562,
+37564,9534,
+37565,20141,
+37566,20142,
+37567,20143,
+37568,20144,
+37569,8271,
+37570,20145,
+37571,9539,
+37572,20146,
+37573,8663,
+37574,20147,
+37575,7740,
+37576,7554,
+37577,20148,
+37578,20149,
+37579,20150,
+37580,9513,
+37581,20151,
+37582,20152,
+37583,9505,
+37584,20153,
+37585,20154,
+37586,7935,
+37587,20155,
+37588,20156,
+37589,20157,
+37590,20158,
+37591,20159,
+37592,20160,
+37593,20161,
+37594,20162,
+37595,20163,
+37596,20164,
+37597,9535,
+37598,20165,
+37599,9540,
+37600,20166,
+37601,20167,
+37602,20168,
+37603,9507,
+37604,7824,
+37605,9530,
+37606,9541,
+37607,20169,
+37608,9533,
+37609,20170,
+37610,8385,
+37611,20171,
+37612,20172,
+37613,8451,
+37614,9504,
+37615,9532,
+37616,9531,
+37617,9528,
+37618,20173,
+37619,20174,
+37620,20175,
+37621,20176,
+37622,9536,
+37623,20177,
+37624,8141,
+37625,20178,
+37626,20179,
+37627,20180,
+37628,7960,
+37629,20181,
+37630,20182,
+37631,20183,
+37632,20184,
+37633,9547,
+37634,20185,
+37635,20186,
+37636,20187,
+37637,20188,
+37638,9543,
+37639,9551,
+37640,9552,
+37641,20189,
+37642,20190,
+37643,20191,
+37644,20192,
+37645,20193,
+37646,20194,
+37647,20195,
+37648,8880,
+37649,20196,
+37650,9542,
+37651,20197,
+37652,20198,
+37653,9548,
+37654,20199,
+37655,20200,
+37656,7834,
+37657,9554,
+37658,9520,
+37659,9545,
+37660,20201,
+37661,20202,
+37662,20203,
+37663,9553,
+37664,7882,
+37665,20204,
+37666,8402,
+37667,20205,
+37668,20206,
+37669,20207,
+37670,8120,
+37671,20208,
+37672,8313,
+37673,20209,
+37674,20210,
+37675,8619,
+37676,20211,
+37677,20212,
+37678,9549,
+37679,7845,
+37680,20213,
+37681,20214,
+37682,8268,
+37683,8320,
+37684,20215,
+37685,20216,
+37686,9837,
+37687,20217,
+37688,9527,
+37689,20218,
+37690,20219,
+37691,20220,
+37692,20221,
+37693,20222,
+37694,7555,
+37695,20223,
+37696,9546,
+37697,8632,
+37698,20224,
+37699,9550,
+37700,20225,
+37701,20226,
+37702,9468,
+37703,9556,
+37704,20227,
+37705,20228,
+37706,20229,
+37707,7996,
+37708,20230,
+37709,7893,
+37710,20231,
+37711,20232,
+37712,20233,
+37713,20234,
+37714,20235,
+37715,20236,
+37716,9558,
+37717,20237,
+37718,20238,
+37719,20239,
+37720,8808,
+37721,20240,
+37722,20241,
+37723,7894,
+37724,20242,
+37725,20243,
+37726,20244,
+37727,20245,
+37728,20246,
+37729,20247,
+37730,20248,
+37731,20249,
+37732,9559,
+37733,9555,
+37734,20250,
+37735,20251,
+37736,20252,
+37737,9544,
+37738,7556,
+37739,20253,
+37740,8412,
+37741,20254,
+37742,20255,
+37743,20256,
+37744,9561,
+37745,20257,
+37746,20258,
+37747,20259,
+37748,20260,
+37749,8087,
+37750,9557,
+37751,20261,
+37752,20262,
+37753,20263,
+37754,8829,
+37755,20264,
+37756,20265,
+37757,20266,
+37758,9598,
+37759,20267,
+37760,20268,
+37761,20269,
+37762,8316,
+37763,20270,
+37764,9562,
+37765,20271,
+37766,20272,
+37767,9566,
+37768,20273,
+37769,20274,
+37770,7732,
+37771,20275,
+37772,20276,
+37773,20277,
+37774,20278,
+37775,7558,
+37776,20279,
+37777,20280,
+37778,20281,
+37779,20282,
+37780,20283,
+37781,20284,
+37782,8542,
+37783,20285,
+37784,9568,
+37785,20286,
+37786,20287,
+37787,20288,
+37788,20289,
+37789,20290,
+37790,20291,
+37791,20292,
+37792,20293,
+37793,20294,
+37794,8610,
+37795,9044,
+37796,20295,
+37797,20296,
+37798,9571,
+37799,9511,
+37800,20297,
+37801,9518,
+37802,9560,
+37803,20298,
+37804,7963,
+37805,20299,
+37806,8835,
+37807,20300,
+37808,9572,
+37809,20301,
+37810,20302,
+37811,8352,
+37812,20303,
+37813,9573,
+37814,20304,
+37815,20305,
+37816,9569,
+37817,20306,
+37818,20307,
+37819,20308,
+37820,20309,
+37821,20310,
+37822,20311,
+37823,9570,
+37824,20312,
+37825,20313,
+37826,20314,
+37827,9580,
+37828,20315,
+37829,20316,
+37830,20317,
+37831,9581,
+37832,8224,
+37833,20318,
+37834,7557,
+37835,20319,
+37836,9567,
+37837,9578,
+37838,20320,
+37839,20321,
+37840,20322,
+37841,9582,
+37842,20323,
+37843,20324,
+37844,20325,
+37845,20326,
+37846,7681,
+37847,9529,
+37848,9564,
+37849,20327,
+37850,20328,
+37851,20329,
+37852,9576,
+37853,9577,
+37854,9579,
+37855,7791,
+37856,20330,
+37857,8132,
+37858,9575,
+37859,20331,
+37860,9563,
+37861,20332,
+37862,20333,
+37863,20334,
+37864,9757,
+37865,20335,
+37866,20336,
+37867,20337,
+37868,20338,
+37869,20339,
+37870,20340,
+37871,20341,
+37872,20342,
+37873,20343,
+37874,20344,
+37875,20345,
+37876,20346,
+37877,9515,
+37878,20347,
+37879,9585,
+37880,20348,
+37881,9591,
+37882,20349,
+37883,20350,
+37884,20351,
+37885,20352,
+37886,20353,
+37887,20354,
+37888,20355,
+37889,20356,
+37890,20357,
+37891,9506,
+37892,20358,
+37893,20359,
+37894,20360,
+37895,20361,
+37896,20362,
+37897,20363,
+37898,20364,
+37899,9523,
+37900,20365,
+37901,20366,
+37902,20367,
+37903,20368,
+37904,8234,
+37905,20369,
+37906,9526,
+37907,9587,
+37908,9583,
+37909,20370,
+37910,20371,
+37911,20372,
+37912,8851,
+37913,9592,
+37914,20373,
+37915,20374,
+37916,20375,
+37917,9584,
+37918,20376,
+37919,20377,
+37920,9589,
+37921,20378,
+37922,20379,
+37923,20380,
+37924,20381,
+37925,20382,
+37926,9537,
+37927,9538,
+37928,9565,
+37929,20383,
+37930,20384,
+37931,20385,
+37932,20386,
+37933,20387,
+37934,8218,
+37935,20388,
+37936,20389,
+37937,20390,
+37938,9594,
+37939,8198,
+37940,20391,
+37941,8567,
+37942,20392,
+37943,20393,
+37944,9499,
+37945,20394,
+37946,9508,
+37947,20395,
+37948,20396,
+37949,20397,
+37950,7559,
+37951,9595,
+37952,20398,
+37953,20399,
+37954,20400,
+37955,20401,
+37956,8867,
+37957,20402,
+37958,20403,
+37959,20404,
+37960,20405,
+37961,20406,
+37962,9593,
+37963,20407,
+37964,9574,
+37965,20408,
+37966,20409,
+37967,20410,
+37968,20411,
+37969,20412,
+37970,8083,
+37971,20413,
+37972,9596,
+37973,20414,
+37974,20415,
+37975,20416,
+37976,20417,
+37977,20418,
+37978,20419,
+37979,20420,
+37980,20421,
+37981,20422,
+37982,20423,
+37983,20424,
+37984,9492,
+37985,20425,
+37986,20426,
+37987,9597,
+37988,20427,
+37989,9586,
+37990,20428,
+37991,20429,
+37992,20430,
+37993,20431,
+37994,20432,
+37995,7560,
+37996,20433,
+37997,9588,
+37998,20434,
+37999,20435,
+38000,8782,
+38001,20436,
+38002,8646,
+38003,20437,
+38004,20438,
+38005,20439,
+38006,20440,
+38007,8351,
+38008,20441,
+38009,9590,
+38010,20442,
+38011,20443,
+38012,8292,
+38013,8895,
+38014,9756,
+38015,8798,
+38016,20444,
+38017,20445,
+38018,20446,
+38019,20447,
+38020,20448,
+38021,6798,
+38022,6799,
+38023,6800,
+38024,4492,
+38025,1507,
+38026,6802,
+38027,6801,
+38028,6803,
+38029,6804,
+38030,3106,
+38031,6805,
+38032,6806,
+38033,20449,
+38034,1613,
+38035,1495,
+38036,6807,
+38037,6809,
+38038,20450,
+38039,6808,
+38040,20451,
+38041,1729,
+38042,6810,
+38043,6811,
+38044,6812,
+38045,1562,
+38046,1235,
+38047,4562,
+38048,2857,
+38049,1054,
+38050,1745,
+38051,6813,
+38052,6814,
+38053,4354,
+38054,3154,
+38055,2346,
+38056,3816,
+38057,1804,
+38058,6816,
+38059,6815,
+38060,6818,
+38061,6817,
+38062,2918,
+38063,6819,
+38064,6820,
+38065,3115,
+38066,6821,
+38067,3116,
+38068,6822,
+38069,1134,
+38070,6823,
+38071,6824,
+38072,6825,
+38073,6826,
+38074,6827,
+38075,4679,
+38076,6828,
+38077,6829,
+38078,2123,
+38079,6830,
+38080,4272,
+38081,3661,
+38082,1139,
+38083,2606,
+38084,6831,
+38085,3107,
+38086,2738,
+38087,20452,
+38088,6832,
+38089,6833,
+38090,6834,
+38091,6835,
+38092,6836,
+38093,6837,
+38094,6838,
+38095,20453,
+38096,6839,
+38097,6840,
+38098,6841,
+38099,20454,
+38100,20455,
+38101,6842,
+38102,6843,
+38103,6844,
+38104,6846,
+38105,6845,
+38106,20456,
+38107,6847,
+38108,3678,
+38109,2664,
+38110,6848,
+38111,6849,
+38112,6850,
+38113,4418,
+38114,6851,
+38115,3872,
+38116,6852,
+38117,6853,
+38118,20457,
+38119,6854,
+38120,6855,
+38121,6857,
+38122,6856,
+38123,6858,
+38124,1776,
+38125,2815,
+38126,6859,
+38127,6860,
+38128,2195,
+38129,4166,
+38130,1216,
+38131,6861,
+38132,6862,
+38133,6863,
+38134,4223,
+38135,6864,
+38136,4604,
+38137,6865,
+38138,3051,
+38139,20458,
+38140,6866,
+38141,6867,
+38142,2557,
+38143,6868,
+38144,3943,
+38145,3565,
+38146,6870,
+38147,6869,
+38148,1311,
+38149,1873,
+38150,6871,
+38151,6872,
+38152,4013,
+38153,6873,
+38154,6874,
+38155,1667,
+38156,3978,
+38157,6875,
+38158,6876,
+38159,6877,
+38160,3276,
+38161,3635,
+38162,6878,
+38163,6879,
+38164,6880,
+38165,6881,
+38166,6882,
+38167,4481,
+38168,6883,
+38169,1392,
+38170,2735,
+38171,6884,
+38172,20459,
+38173,6885,
+38174,6886,
+38175,6887,
+38176,20460,
+38177,3852,
+38178,6888,
+38179,2695,
+38180,1339,
+38181,4627,
+38182,2246,
+38183,20461,
+38184,3892,
+38185,6891,
+38186,6889,
+38187,6890,
+38188,6892,
+38189,1510,
+38190,2159,
+38191,2321,
+38192,2769,
+38193,6893,
+38194,6894,
+38195,20462,
+38196,6895,
+38197,6903,
+38198,6896,
+38199,6897,
+38200,6898,
+38201,3135,
+38202,6937,
+38203,1548,
+38204,6899,
+38205,20463,
+38206,6900,
+38207,6901,
+38208,1541,
+38209,2755,
+38210,6902,
+38211,20464,
+38212,6904,
+38213,6905,
+38214,6906,
+38215,4499,
+38216,20465,
+38217,6907,
+38218,2906,
+38219,20466,
+38220,6908,
+38221,2907,
+38222,6909,
+38223,6910,
+38224,1759,
+38225,1026,
+38226,6911,
+38227,6912,
+38228,6913,
+38229,20467,
+38230,6914,
+38231,6915,
+38232,6916,
+38233,6917,
+38234,20468,
+38235,6918,
+38236,2276,
+38237,6921,
+38238,6919,
+38239,6920,
+38240,20469,
+38241,6922,
+38242,6923,
+38243,2582,
+38244,6924,
+38245,6925,
+38246,6926,
+38247,6927,
+38248,6928,
+38249,6929,
+38250,6930,
+38251,6931,
+38252,6932,
+38253,2499,
+38254,20470,
+38255,6933,
+38256,2550,
+38257,6934,
+38258,6935,
+38259,6936,
+38260,20471,
+38261,20472,
+38262,3919,
+38263,7797,
+38264,20473,
+38265,20474,
+38266,20475,
+38267,20476,
+38268,20477,
+38269,20478,
+38270,20479,
+38271,1225,
+38272,8317,
+38273,20480,
+38274,9151,
+38275,8467,
+38276,20481,
+38277,20482,
+38278,9152,
+38279,20483,
+38280,20484,
+38281,7749,
+38282,20485,
+38283,8152,
+38284,9156,
+38285,20486,
+38286,9154,
+38287,8452,
+38288,20487,
+38289,8637,
+38290,20488,
+38291,8071,
+38292,9155,
+38293,20489,
+38294,20490,
+38295,20491,
+38296,8809,
+38297,20492,
+38298,20493,
+38299,20494,
+38300,20495,
+38301,20496,
+38302,20497,
+38303,20498,
+38304,20499,
+38305,8003,
+38306,20500,
+38307,7966,
+38308,9849,
+38309,7915,
+38310,20501,
+38311,20502,
+38312,7989,
+38313,8330,
+38314,20503,
+38315,9159,
+38316,9161,
+38317,9158,
+38318,20504,
+38319,20505,
+38320,20506,
+38321,20507,
+38322,8783,
+38323,20508,
+38324,20509,
+38325,20510,
+38326,9163,
+38327,20511,
+38328,20512,
+38329,8691,
+38330,20513,
+38331,8695,
+38332,9167,
+38333,9166,
+38334,9162,
+38335,9165,
+38336,20514,
+38337,20515,
+38338,20516,
+38339,9168,
+38340,20517,
+38341,20518,
+38342,9836,
+38343,20519,
+38344,9153,
+38345,20520,
+38346,8174,
+38347,9169,
+38348,8184,
+38349,20521,
+38350,20522,
+38351,20523,
+38352,9171,
+38353,20524,
+38354,20525,
+38355,20526,
+38356,9170,
+38357,9172,
+38358,7832,
+38359,20527,
+38360,20528,
+38361,20529,
+38362,20530,
+38363,20531,
+38364,7980,
+38365,20532,
+38366,9173,
+38367,20533,
+38368,20534,
+38369,7793,
+38370,9873,
+38371,20535,
+38372,20536,
+38373,9157,
+38374,20537,
+38375,20538,
+38376,2762,
+38377,5765,
+38378,3322,
+38379,5766,
+38380,20539,
+38381,1086,
+38382,3801,
+38383,1334,
+38384,3277,
+38385,5767,
+38386,3901,
+38387,5768,
+38388,2135,
+38389,5769,
+38390,5770,
+38391,2763,
+38392,4419,
+38393,2873,
+38394,1860,
+38395,3796,
+38396,5771,
+38397,2811,
+38398,5772,
+38399,20540,
+38400,1604,
+38401,1774,
+38402,1929,
+38403,5773,
+38404,5774,
+38405,4359,
+38406,5775,
+38407,20541,
+38408,5776,
+38409,4084,
+38410,5777,
+38411,5778,
+38412,5779,
+38413,5780,
+38414,4095,
+38415,5781,
+38416,1218,
+38417,2470,
+38418,5782,
+38419,20542,
+38420,2454,
+38421,5783,
+38422,5784,
+38423,5785,
+38424,20543,
+38425,5786,
+38426,5787,
+38427,20544,
+38428,1714,
+38429,4948,
+38430,20545,
+38431,1554,
+38432,20546,
+38433,4950,
+38434,4949,
+38435,20547,
+38436,20548,
+38437,20549,
+38438,20550,
+38439,20551,
+38440,20552,
+38441,20553,
+38442,4952,
+38443,20554,
+38444,20555,
+38445,20556,
+38446,3273,
+38447,20557,
+38448,20558,
+38449,4951,
+38450,1629,
+38451,4125,
+38452,4220,
+38453,4500,
+38454,2216,
+38455,20559,
+38456,20560,
+38457,20561,
+38458,20562,
+38459,4677,
+38460,4954,
+38461,4953,
+38462,20563,
+38463,941,
+38464,3716,
+38465,20564,
+38466,4955,
+38467,20565,
+38468,1720,
+38469,2109,
+38470,2660,
+38471,2635,
+38472,1255,
+38473,4956,
+38474,20566,
+38475,2641,
+38476,2835,
+38477,2182,
+38478,20567,
+38479,20568,
+38480,3915,
+38481,20569,
+38482,20570,
+38483,20571,
+38484,4957,
+38485,3323,
+38486,20572,
+38487,20573,
+38488,8986,
+38489,20574,
+38490,20575,
+38491,1094,
+38492,20576,
+38493,8468,
+38494,20577,
+38495,4958,
+38496,20578,
+38497,1527,
+38498,4349,
+38499,8836,
+38500,1314,
+38501,20579,
+38502,20580,
+38503,4959,
+38504,4364,
+38505,3906,
+38506,2980,
+38507,20581,
+38508,4960,
+38509,20582,
+38510,20583,
+38511,20584,
+38512,8732,
+38513,20585,
+38514,4961,
+38515,7806,
+38516,4962,
+38517,2611,
+38518,3624,
+38519,3914,
+38520,8269,
+38521,20586,
+38522,20587,
+38523,20588,
+38524,20589,
+38525,8705,
+38526,20590,
+38527,20591,
+38528,20592,
+38529,20593,
+38530,20594,
+38531,20595,
+38532,20596,
+38533,4300,
+38534,2632,
+38535,20597,
+38536,4963,
+38537,20598,
+38538,7897,
+38539,3546,
+38540,20599,
+38541,4964,
+38542,8114,
+38543,3547,
+38544,4229,
+38545,20600,
+38546,20601,
+38547,20602,
+38548,1775,
+38549,8786,
+38550,20603,
+38551,4965,
+38552,954,
+38553,3875,
+38554,20604,
+38555,8057,
+38556,4464,
+38557,20605,
+38558,20606,
+38559,20607,
+38560,20608,
+38561,20609,
+38562,20610,
+38563,20611,
+38564,20612,
+38565,20613,
+38566,20614,
+38567,3554,
+38568,8535,
+38569,20615,
+38570,8639,
+38571,20616,
+38572,20617,
+38573,20618,
+38574,20619,
+38575,20620,
+38576,4966,
+38577,8735,
+38578,20621,
+38579,5764,
+38580,8253,
+38581,20622,
+38582,2542,
+38583,20623,
+38584,8213,
+38585,7545,
+38586,20624,
+38587,9893,
+38588,7546,
+38589,7547,
+38590,2868,
+38591,20625,
+38592,3219,
+38593,4108,
+38594,20626,
+38595,20627,
+38596,4006,
+38597,4078,
+38598,2082,
+38599,1830,
+38600,20628,
+38601,6940,
+38602,20629,
+38603,20630,
+38604,1353,
+38605,4255,
+38606,7548,
+38607,1312,
+38608,20631,
+38609,20632,
+38610,7549,
+38611,20633,
+38612,20634,
+38613,1490,
+38614,8534,
+38615,20635,
+38616,20636,
+38617,8516,
+38618,20637,
+38619,7825,
+38620,8791,
+38621,20638,
+38622,20639,
+38623,20640,
+38624,7551,
+38625,20641,
+38626,8202,
+38627,8338,
+38628,20642,
+38629,20643,
+38630,20644,
+38631,20645,
+38632,4303,
+38633,7521,
+38634,4050,
+38635,20646,
+38636,20647,
+38637,20648,
+38638,20649,
+38639,7523,
+38640,20650,
+38641,20651,
+38642,8784,
+38643,7522,
+38644,20652,
+38645,20653,
+38646,2604,
+38647,2498,
+38648,20654,
+38649,1035,
+38650,20655,
+38651,7875,
+38652,20656,
+38653,20657,
+38654,3836,
+38655,20658,
+38656,4019,
+38657,7525,
+38658,20659,
+38659,20660,
+38660,3939,
+38661,20661,
+38662,7524,
+38663,4497,
+38664,7526,
+38665,2750,
+38666,20662,
+38667,20663,
+38668,20664,
+38669,2057,
+38670,7528,
+38671,7527,
+38672,20665,
+38673,20666,
+38674,20667,
+38675,2881,
+38676,20668,
+38677,20669,
+38678,2593,
+38679,20670,
+38680,20671,
+38681,20672,
+38682,20673,
+38683,20674,
+38684,3487,
+38685,20675,
+38686,3881,
+38687,20676,
+38688,20677,
+38689,20678,
+38690,20679,
+38691,20680,
+38692,20681,
+38693,20682,
+38694,20683,
+38695,8616,
+38696,20684,
+38697,20685,
+38698,7529,
+38699,20686,
+38700,20687,
+38701,7530,
+38702,20688,
+38703,20689,
+38704,7531,
+38705,20690,
+38706,2653,
+38707,20691,
+38708,20692,
+38709,20693,
+38710,20694,
+38711,20695,
+38712,991,
+38713,3002,
+38714,20696,
+38715,20697,
+38716,20698,
+38717,9741,
+38718,7532,
+38719,20699,
+38720,20700,
+38721,20701,
+38722,9740,
+38723,20702,
+38724,9742,
+38725,20703,
+38726,20704,
+38727,20705,
+38728,8242,
+38729,20706,
+38730,20707,
+38731,20708,
+38732,20709,
+38733,20710,
+38734,20711,
+38735,20712,
+38736,20713,
+38737,20714,
+38738,3165,
+38739,7520,
+38740,20715,
+38741,20716,
+38742,2279,
+38743,20717,
+38744,20718,
+38745,2273,
+38746,9739,
+38747,1478,
+38748,20719,
+38749,20720,
+38750,1636,
+38751,20721,
+38752,2380,
+38753,2775,
+38754,2795,
+38755,20722,
+38756,20723,
+38757,4738,
+38758,20724,
+38759,20725,
+38760,8899,
+38761,1770,
+38762,20726,
+38763,20727,
+38764,20728,
+38765,20729,
+38766,20730,
+38767,20731,
+38768,20732,
+38769,20733,
+38770,20734,
+38771,2250,
+38772,4046,
+38773,20735,
+38774,987,
+38775,20736,
+38776,20737,
+38777,20738,
+38778,20739,
+38779,20740,
+38780,7624,
+38781,20741,
+38782,20742,
+38783,20743,
+38784,20744,
+38785,20745,
+38786,20746,
+38787,20747,
+38788,20748,
+38789,7625,
+38790,20749,
+38791,20750,
+38792,20751,
+38793,20752,
+38794,20753,
+38795,3959,
+38796,20754,
+38797,955,
+38798,20755,
+38799,7971,
+38800,20756,
+38801,7626,
+38802,7627,
+38803,20757,
+38804,7628,
+38805,20758,
+38806,20759,
+38807,20760,
+38808,3143,
+38809,20761,
+38810,20762,
+38811,20763,
+38812,20764,
+38813,20765,
+38814,20766,
+38815,20767,
+38816,2302,
+38817,20768,
+38818,20769,
+38819,7631,
+38820,20770,
+38821,20771,
+38822,9877,
+38823,20772,
+38824,20773,
+38825,20774,
+38826,20775,
+38827,7630,
+38828,20776,
+38829,1095,
+38830,20777,
+38831,7629,
+38832,20778,
+38833,20779,
+38834,7632,
+38835,20780,
+38836,7633,
+38837,20781,
+38838,20782,
+38839,20783,
+38840,20784,
+38841,20785,
+38842,20786,
+38843,20787,
+38844,20788,
+38845,9822,
+38846,20789,
+38847,20790,
+38848,20791,
+38849,20792,
+38850,20793,
+38851,9821,
+38852,20794,
+38853,20795,
+38854,9874,
+38855,20796,
+38856,20797,
+38857,9823,
+38858,20798,
+38859,8589,
+38860,8445,
+38861,20799,
+38862,20800,
+38863,20801,
+38864,20802,
+38865,20803,
+38866,20804,
+38867,8000,
+38868,20805,
+38869,20806,
+38870,20807,
+38871,20808,
+38872,20809,
+38873,9317,
+38874,20810,
+38875,20811,
+38876,9319,
+38877,20812,
+38878,9318,
+38879,20813,
+38880,20814,
+38881,20815,
+38882,20816,
+38883,20817,
+38884,20818,
+38885,20819,
+38886,3763,
+38887,3240,
+38888,20820,
+38889,1890,
+38890,6222,
+38891,6223,
+38892,6224,
+38893,2289,
+38894,20821,
+38895,20822,
+38896,20823,
+38897,20824,
+38898,20825,
+38899,4219,
+38900,20826,
+38901,4370,
+38902,3345,
+38903,20827,
+38904,20828,
+38905,20829,
+38906,20830,
+38907,20831,
+38908,20832,
+38909,20833,
+38910,20834,
+38911,8649,
+38912,20835,
+38913,8713,
+38914,7881,
+38915,8425,
+38916,20836,
+38917,8650,
+38918,8518,
+38919,9669,
+38920,8668,
+38921,20837,
+38922,9310,
+38923,20838,
+38924,8527,
+38925,20839,
+38926,9670,
+38927,9671,
+38928,8769,
+38929,8586,
+38930,7727,
+38931,7900,
+38932,20840,
+38933,20841,
+38934,20842,
+38935,8383,
+38936,8244,
+38937,20843,
+38938,20844,
+38939,20845,
+38940,9673,
+38941,20846,
+38942,20847,
+38943,20848,
+38944,20849,
+38945,9672,
+38946,20850,
+38947,20851,
+38948,8718,
+38949,20852,
+38950,9675,
+38951,20853,
+38952,20854,
+38953,20855,
+38954,20856,
+38955,20857,
+38956,20858,
+38957,8573,
+38958,20859,
+38959,20860,
+38960,8062,
+38961,20861,
+38962,20862,
+38963,20863,
+38964,20864,
+38965,20865,
+38966,20866,
+38967,9676,
+38968,8131,
+38969,20867,
+38970,20868,
+38971,8377,
+38972,20869,
+38973,8577,
+38974,20870,
+38975,20871,
+38976,20872,
+38977,20873,
+38978,20874,
+38979,20875,
+38980,20876,
+38981,20877,
+38982,8154,
+38983,20878,
+38984,20879,
+38985,20880,
+38986,20881,
+38987,20882,
+38988,8563,
+38989,7905,
+38990,9677,
+38991,20883,
+38992,20884,
+38993,20885,
+38994,20886,
+38995,9678,
+38996,8694,
+38997,20887,
+38998,20888,
+38999,20889,
+39000,8779,
+39001,9681,
+39002,20890,
+39003,7872,
+39004,20891,
+39005,20892,
+39006,8200,
+39007,20893,
+39008,20894,
+39009,20895,
+39010,9680,
+39011,20896,
+39012,20897,
+39013,9682,
+39014,20898,
+39015,7978,
+39016,20899,
+39017,20900,
+39018,20901,
+39019,7794,
+39020,9683,
+39021,20902,
+39022,20903,
+39023,8638,
+39024,9684,
+39025,8260,
+39026,20904,
+39027,9679,
+39028,8435,
+39029,4154,
+39030,1508,
+39031,3175,
+39032,7136,
+39033,3931,
+39034,3496,
+39035,4022,
+39036,6183,
+39037,3736,
+39038,1828,
+39039,1560,
+39040,7137,
+39041,1007,
+39042,3521,
+39043,7138,
+39044,4327,
+39045,2644,
+39046,2613,
+39047,3043,
+39048,2272,
+39049,7139,
+39050,2120,
+39051,20905,
+39052,7140,
+39053,7141,
+39054,20906,
+39055,7142,
+39056,4170,
+39057,3028,
+39058,20907,
+39059,3704,
+39060,7143,
+39061,20908,
+39062,4246,
+39063,2386,
+39064,3637,
+39065,20909,
+39066,7144,
+39067,7145,
+39068,4094,
+39069,1581,
+39070,7146,
+39071,7147,
+39072,1472,
+39073,7148,
+39074,7149,
+39075,20910,
+39076,1219,
+39077,7150,
+39078,7151,
+39079,3202,
+39080,7936,
+39081,20911,
+39082,20912,
+39083,20913,
+39084,20914,
+39085,20915,
+39086,9420,
+39087,9421,
+39088,20916,
+39089,9880,
+39090,20917,
+39091,9848,
+39092,20918,
+39093,20919,
+39094,9422,
+39095,20920,
+39096,20921,
+39097,20922,
+39098,20923,
+39099,20924,
+39100,9423,
+39101,20925,
+39102,20926,
+39103,20927,
+39104,20928,
+39105,20929,
+39106,20930,
+39107,20931,
+39108,8376,
+39109,20932,
+39110,9424,
+39111,20933,
+39112,9425,
+39113,20934,
+39114,20935,
+39115,20936,
+39116,20937,
+39117,20938,
+39118,1668,
+39119,20939,
+39120,20940,
+39121,6583,
+39122,6584,
+39123,6585,
+39124,20941,
+39125,6586,
+39126,20942,
+39127,20943,
+39128,3021,
+39129,6587,
+39130,6588,
+39131,7924,
+39132,20944,
+39133,20945,
+39134,1638,
+39135,3402,
+39136,9115,
+39137,20946,
+39138,9854,
+39139,20947,
+39140,20948,
+39141,20949,
+39142,20950,
+39143,5658,
+39144,7655,
+39145,9117,
+39146,9119,
+39147,9120,
+39148,20951,
+39149,9121,
+39150,20952,
+39151,7921,
+39152,20953,
+39153,20954,
+39154,8734,
+39155,20955,
+39156,9122,
+39157,20956,
+39158,20957,
+39159,20958,
+39160,20959,
+39161,20960,
+39162,20961,
+39163,20962,
+39164,8523,
+39165,7734,
+39166,8501,
+39167,20963,
+39168,20964,
+39169,20965,
+39170,20966,
+39171,8109,
+39172,20967,
+39173,7763,
+39174,20968,
+39175,20969,
+39176,20970,
+39177,9123,
+39178,8707,
+39179,20971,
+39180,7911,
+39181,7656,
+39182,20972,
+39183,20973,
+39184,1172,
+39185,9124,
+39186,8343,
+39187,7908,
+39188,20974,
+39189,20975,
+39190,20976,
+39191,20977,
+39192,8760,
+39193,20978,
+39194,20979,
+39195,9125,
+39196,20980,
+39197,20981,
+39198,8090,
+39199,20982,
+39200,20983,
+39201,8643,
+39202,20984,
+39203,20985,
+39204,20986,
+39205,20987,
+39206,20988,
+39207,20989,
+39208,7982,
+39209,20990,
+39210,20991,
+39211,20992,
+39212,20993,
+39213,20994,
+39214,7657,
+39215,20995,
+39216,20996,
+39217,20997,
+39218,20998,
+39219,9116,
+39220,20999,
+39221,21000,
+39222,21001,
+39223,9126,
+39224,21002,
+39225,21003,
+39226,21004,
+39227,21005,
+39228,9118,
+39229,21006,
+39230,8245,
+39231,9127,
+39232,21007,
+39233,21008,
+39234,21009,
+39235,9128,
+39236,21010,
+39237,8309,
+39238,21011,
+39239,21012,
+39240,9129,
+39241,9130,
+39242,9131,
+39243,8171,
+39244,9132,
+39245,21013,
+39246,21014,
+39247,21015,
+39248,21016,
+39249,8042,
+39250,8441,
+39251,21017,
+39252,7659,
+39253,7658,
+39254,21018,
+39255,9830,
+39256,21019,
+39257,21020,
+39258,21021,
+39259,21022,
+39260,9831,
+39261,21023,
+39262,7788,
+39263,21024,
+39264,21025,
+39265,21026,
+39266,9133,
+39267,5661,
+39268,21027,
+39269,2069,
+39270,21028,
+39271,5662,
+39272,5663,
+39273,5664,
+39274,5665,
+39275,5666,
+39276,5667,
+39277,1622,
+39278,4226,
+39279,2165,
+39280,3429,
+39281,1038,
+39282,3516,
+39283,21029,
+39284,5668,
+39285,1595,
+39286,3231,
+39287,5669,
+39288,21030,
+39289,21031,
+39290,2201,
+39291,21032,
+39292,1126,
+39293,5670,
+39294,21033,
+39295,1589,
+39296,5671,
+39297,2876,
+39298,21034,
+39299,21035,
+39300,5672,
+39301,3911,
+39302,1846,
+39303,5673,
+39304,2444,
+39305,21036,
+39306,5674,
+39307,1213,
+39308,21037,
+39309,5675,
+39310,21038,
+39311,2620,
+39312,5676,
+39313,5677,
+39314,2719,
+39315,5678,
+39316,5679,
+39317,5680,
+39318,3438,
+39319,4718,
+39320,4857,
+39321,3920,
+39322,21039,
+39323,21040,
+39324,21041,
+39325,21042,
+39326,21043,
+39327,21044,
+39328,21045,
+39329,21046,
+39330,21047,
+39331,21048,
+39332,21049,
+39333,6955,
+39334,21050,
+39335,21051,
+39336,5086,
+39337,21052,
+39338,21053,
+39339,21054,
+39340,8301,
+39341,8770,
+39342,7938,
+39343,21055,
+39344,21056,
+39345,8579,
+39346,21057,
+39347,7813,
+39348,8681,
+39349,21058,
+39350,21059,
+39351,21060,
+39352,21061,
+39353,21062,
+39354,21063,
+39355,21064,
+39356,21065,
+39357,21066,
+39358,21067,
+39359,21068,
+39360,21069,
+39361,7767,
+39362,21070,
+39363,21071,
+39364,21072,
+39365,21073,
+39366,21074,
+39367,21075,
+39368,21076,
+39369,21077,
+39370,21078,
+39371,21079,
+39372,21080,
+39373,21081,
+39374,21082,
+39375,21083,
+39376,8869,
+39377,9223,
+39378,8138,
+39379,21084,
+39380,9218,
+39381,8066,
+39382,21085,
+39383,21086,
+39384,9224,
+39385,9220,
+39386,21087,
+39387,8497,
+39388,21088,
+39389,8580,
+39390,21089,
+39391,9219,
+39392,21090,
+39393,8302,
+39394,9227,
+39395,21091,
+39396,21092,
+39397,21093,
+39398,21094,
+39399,21095,
+39400,21096,
+39401,21097,
+39402,21098,
+39403,21099,
+39404,21100,
+39405,7999,
+39406,21101,
+39407,21102,
+39408,21103,
+39409,8295,
+39410,21104,
+39411,21105,
+39412,21106,
+39413,21107,
+39414,21108,
+39415,21109,
+39416,21110,
+39417,21111,
+39418,21112,
+39419,21113,
+39420,21114,
+39421,21115,
+39422,21116,
+39423,8151,
+39424,21117,
+39425,7811,
+39426,21118,
+39427,21119,
+39428,21120,
+39429,9231,
+39430,21121,
+39431,21122,
+39432,21123,
+39433,21124,
+39434,21125,
+39435,21126,
+39436,21127,
+39437,9230,
+39438,8391,
+39439,9229,
+39440,21128,
+39441,21129,
+39442,21130,
+39443,21131,
+39444,21132,
+39445,21133,
+39446,9234,
+39447,21134,
+39448,21135,
+39449,8375,
+39450,21136,
+39451,21137,
+39452,21138,
+39453,21139,
+39454,21140,
+39455,21141,
+39456,21142,
+39457,21143,
+39458,21144,
+39459,21145,
+39460,21146,
+39461,21147,
+39462,21148,
+39463,21149,
+39464,21150,
+39465,21151,
+39466,21152,
+39467,9200,
+39468,21153,
+39469,9233,
+39470,9236,
+39471,21154,
+39472,8560,
+39473,21155,
+39474,21156,
+39475,21157,
+39476,21158,
+39477,21159,
+39478,9221,
+39479,8460,
+39480,9237,
+39481,21160,
+39482,21161,
+39483,21162,
+39484,21163,
+39485,21164,
+39486,8294,
+39487,21165,
+39488,9042,
+39489,9235,
+39490,9232,
+39491,9238,
+39492,9239,
+39493,8433,
+39494,21166,
+39495,21167,
+39496,21168,
+39497,21169,
+39498,9226,
+39499,21170,
+39500,21171,
+39501,9225,
+39502,21172,
+39503,9240,
+39504,21173,
+39505,21174,
+39506,21175,
+39507,21176,
+39508,21177,
+39509,8103,
+39510,21178,
+39511,8700,
+39512,21179,
+39513,21180,
+39514,8129,
+39515,9222,
+39516,21181,
+39517,21182,
+39518,21183,
+39519,8860,
+39520,21184,
+39521,21185,
+39522,8270,
+39523,21186,
+39524,9242,
+39525,9241,
+39526,21187,
+39527,21188,
+39528,21189,
+39529,21190,
+39530,9228,
+39531,21191,
+39532,2708,
+39533,4329,
+39534,3717,
+39535,4058,
+39536,1280,
+39537,3194,
+39538,21192,
+39539,1148,
+39540,2662,
+39541,6074,
+39542,3410,
+39543,6075,
+39544,6076,
+39545,2307,
+39546,6077,
+39547,4609,
+39548,3718,
+39549,6079,
+39550,2128,
+39551,6078,
+39552,6080,
+39553,6081,
+39554,2709,
+39555,21193,
+39556,2191,
+39557,6082,
+39558,2701,
+39559,1886,
+39560,6083,
+39561,21194,
+39562,6084,
+39563,1271,
+39564,4114,
+39565,21195,
+39566,21196,
+39567,2354,
+39568,6085,
+39569,3086,
+39570,6086,
+39571,6087,
+39572,21197,
+39573,21198,
+39574,6088,
+39575,3020,
+39576,6089,
+39577,21199,
+39578,3296,
+39579,6090,
+39580,6091,
+39581,6092,
+39582,5941,
+39583,6093,
+39584,6094,
+39585,2697,
+39586,6095,
+39587,6096,
+39588,4583,
+39589,6097,
+39590,21200,
+39591,6098,
+39592,1824,
+39593,21201,
+39594,21202,
+39595,21203,
+39596,21204,
+39597,21205,
+39598,21206,
+39599,7721,
+39600,7635,
+39601,7634,
+39602,21207,
+39603,21208,
+39604,21209,
+39605,21210,
+39606,7638,
+39607,7636,
+39608,1880,
+39609,21211,
+39610,7639,
+39611,21212,
+39612,7640,
+39613,21213,
+39614,21214,
+39615,21215,
+39616,7642,
+39617,7641,
+39618,7644,
+39619,21216,
+39620,21217,
+39621,7643,
+39622,21218,
+39623,21219,
+39624,21220,
+39625,21221,
+39626,21222,
+39627,7645,
+39628,7646,
+39629,21223,
+39630,21224,
+39631,9825,
+39632,21225,
+39633,7647,
+39634,9892,
+39635,3549,
+39636,8564,
+39637,9827,
+39638,9826,
+39639,21226,
+39640,1754,
+39641,21227,
+39642,21228,
+39643,21229,
+39644,21230,
+39645,21231,
+39646,21232,
+39647,7660,
+39648,21233,
+39649,7661,
+39650,21234,
+39651,21235,
+39652,21236,
+39653,21237,
+39654,7662,
+39655,21238,
+39656,21239,
+39657,21240,
+39658,21241,
+39659,7664,
+39660,21242,
+39661,7666,
+39662,9845,
+39663,7663,
+39664,21243,
+39665,21244,
+39666,21245,
+39667,21246,
+39668,21247,
+39669,21248,
+39670,21249,
+39671,21250,
+39672,21251,
+39673,7667,
+39674,21252,
+39675,7665,
+39676,21253,
+39677,21254,
+39678,21255,
+39679,21256,
+39680,21257,
+39681,21258,
+39682,21259,
+39683,4660,
+39684,21260,
+39685,21261,
+39686,8524,
+39687,21262,
+39688,7668,
+39689,21263,
+39690,21264,
+39691,21265,
+39692,21266,
+39693,9850,
+39694,21267,
+39695,7669,
+39696,21268,
+39697,21269,
+39698,21270,
+39699,7670,
+39700,21271,
+39701,21272,
+39702,21273,
+39703,21274,
+39704,21275,
+39705,21276,
+39706,9888,
+39707,21277,
+39708,21278,
+39709,21279,
+39710,21280,
+39711,7671,
+39712,21281,
+39713,21282,
+39714,9832,
+39715,7672,
+39716,21283,
+39717,7888,
+39718,21284,
+39719,8342,
+39720,21285,
+39721,9164,
+39722,21286,
+39723,21287,
+39724,21288,
+39725,21289,
+39726,9160,
+39727,5019,
+39728,21290,
+39729,8766,
+39730,4704,
+39731,21291,
+39732,21292,
+39733,21293,
+39734,21294,
+39735,21295,
+39736,21296,
+39737,21297,
+39738,21298,
+39739,6003,
+39740,1862,
+39741,21299,
+39742,21300,
+39743,21301,
+39744,21302,
+39745,2442,
+39746,2047,
+39747,7649,
+39748,3046,
+39749,7648,
+39750,21303,
+39751,7650,
+39752,7652,
+39753,7651,
+39754,21304,
+39755,21305,
+39756,21306,
+39757,7653,
+39758,9829,
+39759,3785,
+39760,21307,
+39761,7654,
+39762,21308,
+39763,21309,
+39764,2826,
+39765,21310,
+39766,21311,
+39767,21312,
+39768,9828,
+39769,21313,
+39770,8761,
+39771,21314,
+39772,21315,
+39773,21316,
+39774,21317,
+39775,21318,
+39776,21319,
+39777,21320,
+39778,21321,
+39779,21322,
+39780,21323,
+39781,21324,
+39782,21325,
+39783,21326,
+39784,21327,
+39785,21328,
+39786,21329,
+39787,21330,
+39788,21331,
+39789,21332,
+39790,21333,
+39791,8266,
+39792,21334,
+39793,21335,
+39794,21336,
+39795,21337,
+39796,9759,
+39797,21338,
+39798,21339,
+39799,9758,
+39800,21340,
+39801,21341,
+39802,21342,
+39803,21343,
+39804,21344,
+39805,21345,
+39806,21346,
+39807,21347,
+39808,21348,
+39809,9760,
+39810,21349,
+39811,9761,
+39812,21350,
+39813,21351,
+39814,21352,
+39815,21353,
+39816,21354,
+39817,21355,
+39818,21356,
+39819,21357,
+39820,21358,
+39821,21359,
+39822,9762,
+39823,21360,
+39824,9767,
+39825,7737,
+39826,9765,
+39827,21361,
+39828,21362,
+39829,21363,
+39830,21364,
+39831,21365,
+39832,21366,
+39833,21367,
+39834,9769,
+39835,21368,
+39836,21369,
+39837,9774,
+39838,9771,
+39839,21370,
+39840,21371,
+39841,21372,
+39842,21373,
+39843,21374,
+39844,21375,
+39845,21376,
+39846,21377,
+39847,21378,
+39848,21379,
+39849,21380,
+39850,9770,
+39851,9773,
+39852,21381,
+39853,9768,
+39854,8633,
+39855,21382,
+39856,21383,
+39857,21384,
+39858,21385,
+39859,21386,
+39860,21387,
+39861,21388,
+39862,21389,
+39863,21390,
+39864,21391,
+39865,21392,
+39866,21393,
+39867,21394,
+39868,21395,
+39869,21396,
+39870,21397,
+39871,21398,
+39872,9782,
+39873,9776,
+39874,21399,
+39875,21400,
+39876,21401,
+39877,21402,
+39878,21403,
+39879,9784,
+39880,21404,
+39881,8205,
+39882,9783,
+39883,21405,
+39884,21406,
+39885,21407,
+39886,21408,
+39887,21409,
+39888,21410,
+39889,21411,
+39890,21412,
+39891,21413,
+39892,9797,
+39893,21414,
+39894,9786,
+39895,21415,
+39896,21416,
+39897,21417,
+39898,21418,
+39899,9795,
+39900,21419,
+39901,9792,
+39902,21420,
+39903,21421,
+39904,21422,
+39905,9789,
+39906,9793,
+39907,21423,
+39908,9790,
+39909,21424,
+39910,21425,
+39911,9791,
+39912,8128,
+39913,21426,
+39914,9787,
+39915,9788,
+39916,21427,
+39917,21428,
+39918,21429,
+39919,21430,
+39920,9794,
+39921,21431,
+39922,21432,
+39923,21433,
+39924,9796,
+39925,21434,
+39926,21435,
+39927,21436,
+39928,21437,
+39929,21438,
+39930,21439,
+39931,21440,
+39932,21441,
+39933,9785,
+39934,21442,
+39935,9804,
+39936,21443,
+39937,21444,
+39938,21445,
+39939,21446,
+39940,21447,
+39941,21448,
+39942,21449,
+39943,21450,
+39944,9799,
+39945,9803,
+39946,21451,
+39947,21452,
+39948,21453,
+39949,9801,
+39950,21454,
+39951,21455,
+39952,9800,
+39953,21456,
+39954,9802,
+39955,8456,
+39956,21457,
+39957,21458,
+39958,21459,
+39959,21460,
+39960,21461,
+39961,21462,
+39962,21463,
+39963,21464,
+39964,21465,
+39965,21466,
+39966,21467,
+39967,21468,
+39968,9805,
+39969,21469,
+39970,21470,
+39971,9780,
+39972,21471,
+39973,9809,
+39974,21472,
+39975,21473,
+39976,9808,
+39977,9810,
+39978,21474,
+39979,21475,
+39980,21476,
+39981,9807,
+39982,21477,
+39983,21478,
+39984,21479,
+39985,9778,
+39986,9806,
+39987,9811,
+39988,21480,
+39989,9815,
+39990,21481,
+39991,9781,
+39992,21482,
+39993,9779,
+39994,21483,
+39995,9814,
+39996,21484,
+39997,21485,
+39998,9812,
+39999,21486,
+40000,21487,
+40001,21488,
+40002,21489,
+40003,21490,
+40004,21491,
+40005,9816,
+40006,21492,
+40007,21493,
+40008,9813,
+40009,7757,
+40010,21494,
+40011,21495,
+40012,21496,
+40013,21497,
+40014,21498,
+40015,21499,
+40016,21500,
+40017,21501,
+40018,9819,
+40019,21502,
+40020,9818,
+40021,21503,
+40022,9817,
+40023,8238,
+40024,9775,
+40025,21504,
+40026,21505,
+40027,21506,
+40028,21507,
+40029,9798,
+40030,21508,
+40031,9766,
+40032,21509,
+40033,21510,
+40034,21511,
+40035,21512,
+40036,21513,
+40037,21514,
+40038,21515,
+40039,9820,
+40040,21516,
+40041,21517,
+40042,21518,
+40043,21519,
+40044,21520,
+40045,9772,
+40046,21521,
+40047,21522,
+40048,21523,
+40049,21524,
+40050,21525,
+40051,21526,
+40052,21527,
+40053,21528,
+40054,21529,
+40055,21530,
+40056,9763,
+40057,21531,
+40058,9777,
+40059,21532,
+40060,4296,
+40061,21533,
+40062,21534,
+40063,7561,
+40064,21535,
+40065,2650,
+40066,7562,
+40067,21536,
+40068,21537,
+40069,7563,
+40070,7564,
+40071,7565,
+40072,7566,
+40073,21538,
+40074,21539,
+40075,7568,
+40076,21540,
+40077,1044,
+40078,7569,
+40079,21541,
+40080,7570,
+40081,7571,
+40082,7572,
+40083,21542,
+40084,7573,
+40085,7574,
+40086,21543,
+40087,21544,
+40088,21545,
+40089,21546,
+40090,7575,
+40091,7576,
+40092,3895,
+40093,21547,
+40094,7577,
+40095,7578,
+40096,7579,
+40097,7580,
+40098,7581,
+40099,7582,
+40100,2523,
+40101,7583,
+40102,7584,
+40103,7585,
+40104,7586,
+40105,7587,
+40106,21548,
+40107,7588,
+40108,21549,
+40109,7589,
+40110,7590,
+40111,21550,
+40112,7591,
+40113,7592,
+40114,7593,
+40115,7594,
+40116,7595,
+40117,7596,
+40118,7597,
+40119,7598,
+40120,2263,
+40121,21551,
+40122,7599,
+40123,7600,
+40124,7601,
+40125,7602,
+40126,21552,
+40127,21553,
+40128,21554,
+40129,21555,
+40130,21556,
+40131,3285,
+40132,7603,
+40133,7604,
+40134,7605,
+40135,7606,
+40136,21557,
+40137,21558,
+40138,7607,
+40139,7608,
+40140,7609,
+40141,7610,
+40142,7611,
+40143,7612,
+40144,7613,
+40145,21559,
+40146,21560,
+40147,7614,
+40148,7615,
+40149,7616,
+40150,1111,
+40151,7617,
+40152,7618,
+40153,7619,
+40154,21561,
+40155,21562,
+40156,7620,
+40157,7621,
+40158,2596,
+40159,7622,
+40160,21563,
+40161,21564,
+40162,7623,
+40163,21565,
+40164,21566,
+40165,8348,
+40166,21567,
+40167,21568,
+40168,21569,
+40169,9600,
+40170,21570,
+40171,21571,
+40172,8924,
+40173,21572,
+40174,21573,
+40175,21574,
+40176,21575,
+40177,21576,
+40178,21577,
+40179,7941,
+40180,8331,
+40181,21578,
+40182,9601,
+40183,21579,
+40184,21580,
+40185,21581,
+40186,21582,
+40187,21583,
+40188,21584,
+40189,21585,
+40190,21586,
+40191,21587,
+40192,21588,
+40193,21589,
+40194,21590,
+40195,21591,
+40196,21592,
+40197,21593,
+40198,9603,
+40199,9602,
+40200,21594,
+40201,8686,
+40202,21595,
+40203,21596,
+40204,21597,
+40205,21598,
+40206,21599,
+40207,21600,
+40208,21601,
+40209,21602,
+40210,21603,
+40211,21604,
+40212,21605,
+40213,8578,
+40214,21606,
+40215,21607,
+40216,21608,
+40217,21609,
+40218,21610,
+40219,8771,
+40220,21611,
+40221,9607,
+40222,21612,
+40223,9608,
+40224,21613,
+40225,21614,
+40226,21615,
+40227,9604,
+40228,21616,
+40229,21617,
+40230,8701,
+40231,21618,
+40232,8687,
+40233,21619,
+40234,21620,
+40235,21621,
+40236,21622,
+40237,21623,
+40238,21624,
+40239,9610,
+40240,9612,
+40241,21625,
+40242,21626,
+40243,21627,
+40244,21628,
+40245,21629,
+40246,21630,
+40247,21631,
+40248,21632,
+40249,21633,
+40250,21634,
+40251,8007,
+40252,21635,
+40253,21636,
+40254,21637,
+40255,7965,
+40256,21638,
+40257,21639,
+40258,9613,
+40259,21640,
+40260,21641,
+40261,21642,
+40262,21643,
+40263,21644,
+40264,21645,
+40265,21646,
+40266,21647,
+40267,21648,
+40268,21649,
+40269,21650,
+40270,21651,
+40271,21652,
+40272,21653,
+40273,8144,
+40274,9618,
+40275,9615,
+40276,21654,
+40277,21655,
+40278,21656,
+40279,21657,
+40280,21658,
+40281,21659,
+40282,21660,
+40283,21661,
+40284,9620,
+40285,7904,
+40286,21662,
+40287,21663,
+40288,9617,
+40289,9621,
+40290,21664,
+40291,21665,
+40292,21666,
+40293,21667,
+40294,21668,
+40295,21669,
+40296,21670,
+40297,21671,
+40298,9623,
+40299,21672,
+40300,8374,
+40301,21673,
+40302,21674,
+40303,9624,
+40304,21675,
+40305,21676,
+40306,8438,
+40307,21677,
+40308,21678,
+40309,21679,
+40310,21680,
+40311,21681,
+40312,21682,
+40313,21683,
+40314,21684,
+40315,21685,
+40316,21686,
+40317,21687,
+40318,21688,
+40319,21689,
+40320,21690,
+40321,21691,
+40322,21692,
+40323,21693,
+40324,21694,
+40325,21695,
+40326,21696,
+40327,9605,
+40328,21697,
+40329,9625,
+40330,21698,
+40331,21699,
+40332,21700,
+40333,21701,
+40334,21702,
+40335,21703,
+40336,21704,
+40337,21705,
+40338,21706,
+40339,9622,
+40340,21707,
+40341,21708,
+40342,21709,
+40343,21710,
+40344,9626,
+40345,21711,
+40346,9627,
+40347,21712,
+40348,21713,
+40349,21714,
+40350,21715,
+40351,21716,
+40352,21717,
+40353,21718,
+40354,21719,
+40355,21720,
+40356,21721,
+40357,9629,
+40358,21722,
+40359,21723,
+40360,21724,
+40361,9630,
+40362,21725,
+40363,21726,
+40364,21727,
+40365,21728,
+40366,21729,
+40367,9036,
+40368,21730,
+40369,21731,
+40370,21732,
+40371,21733,
+40372,8004,
+40373,21734,
+40374,21735,
+40375,21736,
+40376,21737,
+40377,21738,
+40378,21739,
+40379,9824,
+40380,9632,
+40381,21740,
+40382,21741,
+40383,21742,
+40384,9628,
+40385,21743,
+40386,9631,
+40387,21744,
+40388,8044,
+40389,21745,
+40390,21746,
+40391,21747,
+40392,21748,
+40393,21749,
+40394,21750,
+40395,21751,
+40396,21752,
+40397,21753,
+40398,21754,
+40399,21755,
+40400,21756,
+40401,21757,
+40402,21758,
+40403,9634,
+40404,21759,
+40405,21760,
+40406,21761,
+40407,8366,
+40408,21762,
+40409,9611,
+40410,9635,
+40411,21763,
+40412,21764,
+40413,21765,
+40414,21766,
+40415,21767,
+40416,21768,
+40417,21769,
+40418,21770,
+40419,21771,
+40420,21772,
+40421,9609,
+40422,9637,
+40423,21773,
+40424,21774,
+40425,21775,
+40426,21776,
+40427,21777,
+40428,21778,
+40429,21779,
+40430,21780,
+40431,9636,
+40432,21781,
+40433,21782,
+40434,9638,
+40435,9619,
+40436,21783,
+40437,21784,
+40438,21785,
+40439,21786,
+40440,9639,
+40441,8738,
+40442,9641,
+40443,21787,
+40444,21788,
+40445,21789,
+40446,21790,
+40447,21791,
+40448,21792,
+40449,21793,
+40450,21794,
+40451,21795,
+40452,21796,
+40453,21797,
+40454,21798,
+40455,21799,
+40456,21800,
+40457,21801,
+40458,21802,
+40459,21803,
+40460,9640,
+40461,21804,
+40462,21805,
+40463,21806,
+40464,21807,
+40465,21808,
+40466,21809,
+40467,21810,
+40468,21811,
+40469,9606,
+40470,21812,
+40471,21813,
+40472,21814,
+40473,21815,
+40474,9633,
+40475,9642,
+40476,21816,
+40477,9616,
+40478,9614,
+40479,2900,
+40480,6965,
+40481,2073,
+40482,6966,
+40483,2814,
+40484,21817,
+40485,2937,
+40486,4068,
+40487,21818,
+40488,6967,
+40489,6968,
+40490,6969,
+40491,6970,
+40492,6971,
+40493,4069,
+40494,21819,
+40495,4117,
+40496,21820,
+40497,6973,
+40498,6972,
+40499,4330,
+40500,21821,
+40501,3715,
+40502,6974,
+40503,6976,
+40504,6975,
+40505,6977,
+40506,6978,
+40507,21822,
+40508,21823,
+40509,1766,
+40510,6979,
+40511,1951,
+40512,21824,
+40513,6980,
+40514,6981,
+40515,2328,
+40516,6982,
+40517,1579,
+40518,6983,
+40519,6984,
+40520,6985,
+40521,6986,
+40522,3216,
+40523,6987,
+40524,6988,
+40525,21825,
+40526,6989,
+40527,2997,
+40528,21826,
+40529,6990,
+40530,21827,
+40531,21828,
+40532,21829,
+40533,6991,
+40534,21830,
+40535,6992,
+40536,7637,
+40537,21831,
+40538,6993,
+40539,6994,
+40540,6995,
+40541,21832,
+40542,6996,
+40543,21833,
+40544,21834,
+40545,21835,
+40546,21836,
+40547,6997,
+40548,1934,
+40549,21837,
+40550,6998,
+40551,6999,
+40552,7000,
+40553,7001,
+40554,7002,
+40555,7003,
+40556,7004,
+40557,7006,
+40558,21838,
+40559,21839,
+40560,4234,
+40561,7005,
+40562,21840,
+40563,7007,
+40564,21841,
+40565,9864,
+40566,21842,
+40567,21843,
+40568,21844,
+40569,9886,
+40570,9723,
+40571,21845,
+40572,8076,
+40573,8692,
+40574,7446,
+40575,2656,
+40576,21846,
+40577,21847,
+40578,7676,
+40579,21848,
+40580,21849,
+40581,21850,
+40582,21851,
+40583,7677,
+40584,7678,
+40585,21852,
+40586,21853,
+40587,7679,
+40588,21854,
+40589,21855,
+40590,21856,
+40591,21857,
+40592,21858,
+40593,21859,
+40594,7680,
+40595,2651,
+40596,21860,
+40597,21861,
+40598,21862,
+40599,8207,
+40600,21863,
+40601,21864,
+40602,21865,
+40603,21866,
+40604,21867,
+40605,7682,
+40606,21868,
+40607,7683,
+40608,21869,
+40609,21870,
+40610,21871,
+40611,21872,
+40612,21873,
+40613,8305,
+40614,2714,
+40615,21874,
+40616,21875,
+40617,9719,
+40618,21876,
+40619,21877,
+40620,21878,
+40621,21879,
+40622,21880,
+40623,9878,
+40624,21881,
+40625,21882,
+40626,21883,
+40627,21884,
+40628,7406,
+40629,9871,
+40630,21885,
+40631,21886,
+40632,7405,
+40633,21887,
+40634,21888,
+40635,2704,
+40636,21889,
+40637,7673,
+40638,7674,
+40639,21890,
+40640,21891,
+40641,21892,
+40642,21893,
+40643,21894,
+40644,2011,
+40645,21895,
+40646,21896,
+40647,21897,
+40648,21898,
+40649,4856,
+40650,21899,
+40651,21900,
+40652,8922,
+40653,3465,
+40654,2515,
+40655,6954,
+40656,21901,
+40657,1937,
+40658,21902,
+40659,21903,
+40660,3114,
+40661,21904,
+40662,21905,
+40663,21906,
+40664,2831,
+40665,21907,
+40666,21908,
+40667,7684,
+40668,7685,
+40669,7686,
+40670,7873,
+40671,7688,
+40672,7687,
+40673,21909,
+40674,7689,
+40675,21910,
+40676,21911,
+40677,7692,
+40678,21912,
+40679,7691,
+40680,7859,
+40681,7690,
+40682,7693,
+40683,21913,
+40684,21914,
+40685,21915,
+40686,21916,
+40687,7694,
+40688,21917,
+40689,21918,
+40690,9834,
+40691,21919,
+40692,9866,
+40693,21920,
+40694,21921,
+40695,9833,
+40696,21922,
+40697,6741,
+40698,21923,
+40699,6742,
+40700,6743,
+40701,9752,
+40702,7542,
+40703,9753,
+40704,21924,
+40705,21925,
+40706,21926,
+40707,21927,
+40708,21928,
+40709,21929,
+40710,21930,
+40711,21931,
+40712,21932,
+40713,9754,
+40714,21933,
+40715,7543,
+40716,21934,
+40717,7544,
+40718,1509,
+40719,21935,
+40720,4724,
+40721,21936,
+40722,21937,
+40723,1821,
+40724,21938,
+40725,9843,
+40726,21939,
+40727,4721,
+40728,21940,
+40729,5087,
+40730,21941,
+40731,21942,
+40732,21943,
+40733,21944,
+40734,21945,
+40735,21946,
+40736,3466,
+40737,21947,
+40738,7695,
+40739,21948,
+40740,21949,
+40741,21950,
+40742,21951,
+40743,21952,
+40744,21953,
+40745,21954,
+40746,21955,
+40747,21956,
+40748,7696,
+40749,21957,
+40750,21958,
+40751,7697,
+40752,21959,
+40753,21960,
+40754,21961,
+40755,21962,
+40756,21963,
+40757,21964,
+40758,21965,
+40759,7699,
+40760,21966,
+40761,7698,
+40762,21967,
+40763,1072,
+40764,21968,
+40765,7700,
+40766,7701,
+40767,21969,
+40768,21970,
+40769,21971,
+40770,21972,
+40771,21973,
+40772,7702,
+40773,21974,
+40774,21975,
+40775,21976,
+40776,21977,
+40777,21978,
+40778,8390,
+40779,8811,
+40780,21979,
+40781,21980,
+40782,21981,
+40783,9427,
+40784,3082,
+40785,6594,
+40786,7814,
+40787,21982,
+40788,9743,
+40789,21983,
+40790,21984,
+40791,21985,
+40792,21986,
+40793,9745,
+40794,21987,
+40795,21988,
+40796,9747,
+40797,21989,
+40798,21990,
+40799,9744,
+40800,9746,
+40801,8240,
+40802,21991,
+40803,9841,
+40804,21992,
+40805,21993,
+40806,9748,
+40807,21994,
+40808,21995,
+40809,21996,
+40810,9750,
+40811,21997,
+40812,9749,
+40813,21998,
+40814,21999,
+40815,22000,
+40816,22001,
+40817,22002,
+40818,8434,
+40819,22003,
+40820,22004,
+40821,22005,
+40822,22006,
+40823,9751,
+40824,22007,
+40825,22008,
+40826,22009,
+40827,22010,
+40828,22011,
+40829,22012,
+40830,22013,
+40831,1282,
+40832,7533,
+40833,22014,
+40834,22015,
+40835,7534,
+40836,2605,
+40837,7535,
+40838,7536,
+40839,7537,
+40840,7538,
+40841,7539,
+40842,7540,
+40843,3198,
+40844,7541,
+40845,8247,
+40846,22016,
+40847,22017,
+40848,8371,
+40849,22018,
+40850,22019,
+40851,22020,
+40852,7970,
+40853,9453,
+40854,22021,
+40855,22022,
+40856,22023,
+40857,2627,
+40858,1793,
+40859,6740,
+40860,7988,
+40861,22024,
+40862,22025,
+40863,1859,
+40864,4851,
+40865,22026,
+40866,22027,
+40867,22028,
+40868,22029,
+40869,22030,
+59414,22048,
+59415,22049,
+59416,22050,
+59422,22056,
+59430,22064,
+59435,22069,
+59436,22070,
+59441,22075,
+59442,22076,
+59451,22085,
+59459,22093,
+59476,22110,
+59477,22111,
+59492,22126,
+63788,22031,
+64013,22032,
+64014,22033,
+64015,22034,
+64017,22035,
+64019,22036,
+64020,22037,
+64024,22038,
+64031,22039,
+64032,22040,
+64033,22041,
+64035,22042,
+64036,22043,
+64039,22044,
+64040,22045,
+64041,22046,
+65072,10013,
+65097,10027,
+65098,10028,
+65099,10029,
+65100,10030,
+65101,10031,
+65102,10032,
+65103,10033,
+65104,10034,
+65105,10035,
+65106,10036,
+65108,10037,
+65109,10038,
+65110,10039,
+65111,10040,
+65113,10041,
+65114,10042,
+65115,10043,
+65116,10044,
+65117,10045,
+65118,10046,
+65119,10047,
+65120,10048,
+65121,10049,
+65122,10050,
+65123,10051,
+65124,10052,
+65125,10053,
+65126,10054,
+65128,10055,
+65129,10056,
+65130,10057,
+65131,10058,
+65281,262,
+65282,263,
+65283,264,
+65284,166,
+65285,266,
+65286,267,
+65287,268,
+65288,269,
+65289,270,
+65290,271,
+65291,272,
+65292,273,
+65293,274,
+65294,275,
+65295,276,
+65296,277,
+65297,278,
+65298,279,
+65299,280,
+65300,281,
+65301,282,
+65302,283,
+65303,284,
+65304,285,
+65305,286,
+65306,287,
+65307,288,
+65308,289,
+65309,290,
+65310,291,
+65311,292,
+65312,293,
+65313,294,
+65314,295,
+65315,296,
+65316,297,
+65317,298,
+65318,299,
+65319,300,
+65320,301,
+65321,302,
+65322,303,
+65323,304,
+65324,305,
+65325,306,
+65326,307,
+65327,308,
+65328,309,
+65329,310,
+65330,311,
+65331,312,
+65332,313,
+65333,314,
+65334,315,
+65335,316,
+65336,317,
+65337,318,
+65338,319,
+65339,320,
+65340,321,
+65341,322,
+65342,323,
+65343,324,
+65344,325,
+65345,326,
+65346,327,
+65347,328,
+65348,329,
+65349,330,
+65350,331,
+65351,332,
+65352,333,
+65353,334,
+65354,335,
+65355,336,
+65356,337,
+65357,338,
+65358,339,
+65359,340,
+65360,341,
+65361,342,
+65362,343,
+65363,344,
+65364,345,
+65365,346,
+65366,347,
+65367,348,
+65368,349,
+65369,350,
+65370,351,
+65371,352,
+65372,353,
+65373,354,
+65374,106,
+65504,168,
+65505,169,
+65506,10014,
+65507,355,
+65508,10015,
+65509,265,
+       };
+}
+
+# by UniGB-UCS2-V Cmap
+sub u2c_GB_V {
+       return {
+8212,598,
+8230,599,
+8741,7708,
+12289,575,
+12290,574,
+12296,584,
+12297,585,
+12298,586,
+12299,587,
+12300,588,
+12301,589,
+12302,590,
+12303,591,
+12304,594,
+12305,595,
+12307,7706,
+12308,582,
+12309,583,
+12310,592,
+12311,593,
+65281,578,
+65288,580,
+65289,581,
+65292,573,
+65294,7707,
+65306,576,
+65307,577,
+65309,7708,
+65311,579,
+65339,7709,
+65341,7710,
+65343,600,
+65371,596,
+65373,597,
+65374,7704,
+65507,7711,
+       };
+}
+
+# by UniJIS-UCS2-H Cmap
+sub u2c_JIS_H {
        return {
 32,1,
 33,2,
@@ -9780,7 +57012,9 @@ sub unicode2cidhash_hp {
        };
 }
 
-sub unicode2cidhash_h {
+# by UniJIS-UCS2-HW-H Cmap
+# but 92(5c) and 126(7e) modified
+sub u2c_JIS_HW_H {
        return {
 32,231,
 33,232,
@@ -9842,7 +57076,8 @@ sub unicode2cidhash_h {
 89,288,
 90,289,
 91,290,
-92,8719,
+#92,8719, # UniJIS-UCS2-HW-H, but some OpenType fonts do'nt have this glyph
+92,291,   # 90ms-RKSJ-H
 93,292,
 94,293,
 95,294,
@@ -9876,13 +57111,114 @@ sub unicode2cidhash_h {
 123,322,
 124,323,
 125,324,
-126,325,
+#126,325, # UniJIS-UCS2-HW-H, but some OpenType fonts do'nt have this glyph
+126,631,  # 90ms-RKSJ-H
 165,291,
        };
 }
 
-sub unicode2cidhash_vp {
+# by UniJIS-UCS2-HW-V Cmap
+# but 92(5c) and 126(7e) modified
+sub u2c_JIS_HW_V {
        return {
+32,231,
+33,232,
+34,233,
+35,234,
+36,235,
+37,236,
+38,237,
+39,238,
+40,239,
+41,240,
+42,241,
+43,242,
+44,243,
+45,244,
+46,245,
+47,246,
+48,247,
+49,248,
+50,249,
+51,250,
+52,251,
+53,252,
+54,253,
+55,254,
+56,255,
+57,256,
+58,257,
+59,258,
+60,259,
+61,260,
+62,261,
+63,262,
+64,263,
+65,264,
+66,265,
+67,266,
+68,267,
+69,268,
+70,269,
+71,270,
+72,271,
+73,272,
+74,273,
+75,274,
+76,275,
+77,276,
+78,277,
+79,278,
+80,279,
+81,280,
+82,281,
+83,282,
+84,283,
+85,284,
+86,285,
+87,286,
+88,287,
+89,288,
+90,289,
+91,290,
+#92,8719, # UniJIS-UCS2-HW-H, but some OpenType fonts do'nt have this glyph
+92,291,   # 90ms-RKSJ-H
+93,292,
+94,293,
+95,294,
+96,295,
+97,296,
+98,297,
+99,298,
+100,299,
+101,300,
+102,301,
+103,302,
+104,303,
+105,304,
+106,305,
+107,306,
+108,307,
+109,308,
+110,309,
+111,310,
+112,311,
+113,312,
+114,313,
+115,314,
+116,315,
+117,316,
+118,317,
+119,318,
+120,319,
+121,320,
+122,321,
+123,322,
+124,323,
+125,324,
+#126,325, # UniJIS-UCS2-HW-H, but some OpenType fonts do'nt have this glyph
+126,631,  # 90ms-RKSJ-H
+165,291,
 176,8269,
 8208,7893,
 8213,7892,
@@ -10137,104 +57473,9 @@ sub unicode2cidhash_vp {
        };
 }
 
-sub unicode2cidhash_v {
+# by UniJIS-UCS2-V Cmap
+sub u2c_JIS_V {
        return {
-32,231,
-33,232,
-34,233,
-35,234,
-36,235,
-37,236,
-38,237,
-39,238,
-40,239,
-41,240,
-42,241,
-43,242,
-44,243,
-45,244,
-46,245,
-47,246,
-48,247,
-49,248,
-50,249,
-51,250,
-52,251,
-53,252,
-54,253,
-55,254,
-56,255,
-57,256,
-58,257,
-59,258,
-60,259,
-61,260,
-62,261,
-63,262,
-64,263,
-65,264,
-66,265,
-67,266,
-68,267,
-69,268,
-70,269,
-71,270,
-72,271,
-73,272,
-74,273,
-75,274,
-76,275,
-77,276,
-78,277,
-79,278,
-80,279,
-81,280,
-82,281,
-83,282,
-84,283,
-85,284,
-86,285,
-87,286,
-88,287,
-89,288,
-90,289,
-91,290,
-92,8719,
-93,292,
-94,293,
-95,294,
-96,295,
-97,296,
-98,297,
-99,298,
-100,299,
-101,300,
-102,301,
-103,302,
-104,303,
-105,304,
-106,305,
-107,306,
-108,307,
-109,308,
-110,309,
-111,310,
-112,311,
-113,312,
-114,313,
-115,314,
-116,315,
-117,316,
-118,317,
-119,318,
-120,319,
-121,320,
-122,321,
-123,322,
-124,323,
-125,324,
-126,325,
-165,291,
 176,8269,
 8208,7893,
 8213,7892,
@@ -10489,4 +57730,17378 @@ sub unicode2cidhash_v {
        };
 }
 
-1;
+# by UniKS-UCS2-H Cmap
+sub u2c_KS_H {
+       return {
+32,1,
+33,2,
+34,3,
+35,4,
+36,5,
+37,6,
+38,7,
+39,8,
+40,9,
+41,10,
+42,11,
+43,12,
+44,13,
+45,14,
+46,15,
+47,16,
+48,17,
+49,18,
+50,19,
+51,20,
+52,21,
+53,22,
+54,23,
+55,24,
+56,25,
+57,26,
+58,27,
+59,28,
+60,29,
+61,30,
+62,31,
+63,32,
+64,33,
+65,34,
+66,35,
+67,36,
+68,37,
+69,38,
+70,39,
+71,40,
+72,41,
+73,42,
+74,43,
+75,44,
+76,45,
+77,46,
+78,47,
+79,48,
+80,49,
+81,50,
+82,51,
+83,52,
+84,53,
+85,54,
+86,55,
+87,56,
+88,57,
+89,58,
+90,59,
+91,60,
+92,61,
+93,62,
+94,63,
+95,64,
+96,65,
+97,66,
+98,67,
+99,68,
+100,69,
+101,70,
+102,71,
+103,72,
+104,73,
+105,74,
+106,75,
+107,76,
+108,77,
+109,78,
+110,79,
+111,80,
+112,81,
+113,82,
+114,83,
+115,84,
+116,85,
+117,86,
+118,87,
+119,88,
+120,89,
+121,90,
+122,91,
+123,92,
+124,93,
+125,94,
+126,95,
+161,208,
+164,214,
+167,155,
+168,107,
+170,668,
+171,176,
+176,138,
+177,130,
+178,843,
+179,844,
+180,199,
+182,244,
+184,206,
+185,842,
+186,675,
+187,177,
+188,751,
+189,748,
+190,752,
+191,209,
+198,666,
+208,667,
+215,131,
+216,673,
+222,676,
+223,768,
+230,757,
+240,759,
+247,132,
+248,766,
+254,769,
+273,758,
+294,669,
+295,760,
+305,761,
+306,670,
+307,762,
+312,763,
+319,671,
+320,764,
+321,672,
+322,765,
+329,772,
+330,678,
+331,771,
+338,674,
+339,767,
+358,677,
+359,770,
+700,8275,
+711,201,
+728,202,
+729,205,
+730,204,
+731,207,
+732,200,
+733,203,
+913,471,
+914,472,
+915,473,
+916,474,
+917,475,
+918,476,
+919,477,
+920,478,
+921,479,
+922,480,
+923,481,
+924,482,
+925,483,
+926,484,
+927,485,
+928,486,
+929,487,
+931,488,
+932,489,
+933,490,
+934,491,
+935,492,
+936,493,
+937,494,
+945,495,
+946,496,
+947,497,
+948,498,
+949,499,
+950,500,
+951,501,
+952,502,
+953,503,
+954,504,
+955,505,
+956,506,
+957,507,
+958,508,
+959,509,
+960,510,
+961,511,
+963,512,
+964,513,
+965,514,
+966,515,
+967,516,
+968,517,
+969,518,
+1025,1026,
+1040,1020,
+1041,1021,
+1042,1022,
+1043,1023,
+1044,1024,
+1045,1025,
+1046,1027,
+1047,1028,
+1048,1029,
+1049,1030,
+1050,1031,
+1051,1032,
+1052,1033,
+1053,1034,
+1054,1035,
+1055,1036,
+1056,1037,
+1057,1038,
+1058,1039,
+1059,1040,
+1060,1041,
+1061,1042,
+1062,1043,
+1063,1044,
+1064,1045,
+1065,1046,
+1066,1047,
+1067,1048,
+1068,1049,
+1069,1050,
+1070,1051,
+1071,1052,
+1072,1053,
+1073,1054,
+1074,1055,
+1075,1056,
+1076,1057,
+1077,1058,
+1078,1060,
+1079,1061,
+1080,1062,
+1081,1063,
+1082,1064,
+1083,1065,
+1084,1066,
+1085,1067,
+1086,1068,
+1087,1069,
+1088,1070,
+1089,1071,
+1090,1072,
+1091,1073,
+1092,1074,
+1093,1075,
+1094,1076,
+1095,1077,
+1096,1078,
+1097,1079,
+1098,1080,
+1099,1081,
+1100,1082,
+1101,1083,
+1102,1084,
+1103,1085,
+1105,1059,
+8211,109,
+8212,110,
+8214,111,
+8216,114,
+8217,115,
+8219,8238,
+8220,116,
+8221,117,
+8223,8237,
+8224,245,
+8225,246,
+8226,8607,
+8229,105,
+8230,106,
+8240,216,
+8242,139,
+8243,140,
+8244,8582,
+8245,9326,
+8246,9324,
+8249,8612,
+8250,8613,
+8251,156,
+8252,8763,
+8258,8599,
+8308,845,
+8314,8239,
+8315,8240,
+8316,8248,
+8317,8250,
+8318,8251,
+8319,846,
+8321,847,
+8322,848,
+8323,849,
+8324,850,
+8451,141,
+8457,215,
+8467,590,
+8470,258,
+8481,263,
+8482,260,
+8486,643,
+8491,142,
+8531,749,
+8532,750,
+8539,753,
+8540,754,
+8541,755,
+8542,756,
+8544,461,
+8545,462,
+8546,463,
+8547,464,
+8548,465,
+8549,466,
+8550,467,
+8551,468,
+8552,469,
+8553,470,
+8560,451,
+8561,452,
+8562,453,
+8563,454,
+8564,455,
+8565,456,
+8566,457,
+8567,458,
+8568,459,
+8569,460,
+8592,171,
+8593,172,
+8594,170,
+8595,173,
+8596,174,
+8597,247,
+8598,250,
+8599,248,
+8600,251,
+8601,249,
+8624,8868,
+8625,8865,
+8626,8864,
+8627,8869,
+8628,8867,
+8636,8884,
+8640,8885,
+8644,8896,
+8645,8897,
+8653,8816,
+8655,8815,
+8656,8814,
+8657,8854,
+8658,195,
+8659,8855,
+8660,196,
+8672,9190,
+8673,9192,
+8674,9191,
+8675,9193,
+8678,9198,
+8679,9200,
+8680,9199,
+8681,9201,
+8704,197,
+8706,151,
+8707,198,
+8710,8715,
+8711,152,
+8712,184,
+8713,8749,
+8715,185,
+8716,8750,
+8719,213,
+8721,212,
+8723,8726,
+8730,178,
+8733,180,
+8734,136,
+8735,8717,
+8736,148,
+8738,8738,
+8741,8719,
+8742,8720,
+8743,192,
+8744,193,
+8745,191,
+8746,190,
+8747,182,
+8748,183,
+8750,211,
+8756,137,
+8757,181,
+8758,210,
+8759,8321,
+8765,179,
+8771,8500,
+8773,8499,
+8776,8501,
+8784,8739,
+8785,8723,
+8786,154,
+8787,8722,
+8794,8753,
+8800,133,
+8801,153,
+8802,8734,
+8804,134,
+8805,135,
+8806,8724,
+8807,8725,
+8814,8745,
+8815,8746,
+8816,8481,
+8817,8482,
+8818,8483,
+8819,8484,
+8822,8489,
+8823,8490,
+8825,8491,
+8826,8475,
+8827,8476,
+8832,8479,
+8833,8480,
+8834,188,
+8835,189,
+8836,8748,
+8837,8747,
+8838,186,
+8839,187,
+8842,8486,
+8843,8488,
+8853,8727,
+8854,8728,
+8855,8729,
+8867,8742,
+8868,8503,
+8869,149,
+8891,8751,
+8892,8752,
+8910,8477,
+8911,8478,
+8922,8492,
+8923,8493,
+8942,8320,
+8943,106,
+8966,8754,
+8978,150,
+8980,8731,
+9312,733,
+9313,734,
+9314,735,
+9315,736,
+9316,737,
+9317,738,
+9318,739,
+9319,740,
+9320,741,
+9321,742,
+9322,743,
+9323,744,
+9324,745,
+9325,746,
+9326,747,
+9327,8791,
+9328,8792,
+9329,8793,
+9330,8794,
+9331,8795,
+9332,827,
+9333,828,
+9334,829,
+9335,830,
+9336,831,
+9337,832,
+9338,833,
+9339,834,
+9340,835,
+9341,836,
+9342,837,
+9343,838,
+9344,839,
+9345,840,
+9346,841,
+9347,9042,
+9348,9043,
+9349,9044,
+9350,9045,
+9351,9046,
+9372,801,
+9373,802,
+9374,803,
+9375,804,
+9376,805,
+9377,806,
+9378,807,
+9379,808,
+9380,809,
+9381,810,
+9382,811,
+9383,812,
+9384,813,
+9385,814,
+9386,815,
+9387,816,
+9388,817,
+9389,818,
+9390,819,
+9391,820,
+9392,821,
+9393,822,
+9394,823,
+9395,824,
+9396,825,
+9397,826,
+9398,8388,
+9399,8389,
+9400,8390,
+9401,8391,
+9402,8392,
+9403,8393,
+9404,8394,
+9405,8395,
+9406,8396,
+9407,8397,
+9408,8398,
+9409,8399,
+9410,8400,
+9411,8401,
+9412,8402,
+9413,8403,
+9414,8404,
+9415,8405,
+9416,8406,
+9417,8407,
+9418,8408,
+9419,8409,
+9420,8410,
+9421,8411,
+9422,8412,
+9423,8413,
+9424,707,
+9425,708,
+9426,709,
+9427,710,
+9428,711,
+9429,712,
+9430,713,
+9431,714,
+9432,715,
+9433,716,
+9434,717,
+9435,718,
+9436,719,
+9437,720,
+9438,721,
+9439,722,
+9440,723,
+9441,724,
+9442,725,
+9443,726,
+9444,727,
+9445,728,
+9446,729,
+9447,730,
+9448,731,
+9449,732,
+9472,519,
+9473,530,
+9474,520,
+9475,531,
+9484,521,
+9485,558,
+9486,557,
+9487,532,
+9488,522,
+9489,552,
+9490,551,
+9491,533,
+9492,524,
+9493,556,
+9494,555,
+9495,535,
+9496,523,
+9497,554,
+9498,553,
+9499,534,
+9500,525,
+9501,546,
+9502,559,
+9503,560,
+9504,541,
+9505,561,
+9506,562,
+9507,536,
+9508,527,
+9509,548,
+9510,563,
+9511,564,
+9512,543,
+9513,565,
+9514,566,
+9515,538,
+9516,526,
+9517,567,
+9518,568,
+9519,542,
+9520,547,
+9521,569,
+9522,570,
+9523,537,
+9524,528,
+9525,571,
+9526,572,
+9527,544,
+9528,549,
+9529,573,
+9530,574,
+9531,539,
+9532,529,
+9533,575,
+9534,576,
+9535,545,
+9536,577,
+9537,578,
+9538,550,
+9539,579,
+9540,580,
+9541,581,
+9542,582,
+9543,583,
+9544,584,
+9545,585,
+9546,586,
+9547,540,
+9618,232,
+9632,165,
+9633,164,
+9635,229,
+9636,233,
+9637,234,
+9638,237,
+9639,236,
+9640,235,
+9641,238,
+9649,8736,
+9650,167,
+9651,166,
+9653,8780,
+9654,220,
+9655,219,
+9657,8781,
+9660,169,
+9661,168,
+9663,8779,
+9664,218,
+9665,217,
+9667,8782,
+9670,163,
+9671,162,
+9672,228,
+9673,227,
+9674,8787,
+9675,159,
+9676,8639,
+9678,161,
+9679,160,
+9680,230,
+9681,231,
+9702,8775,
+9711,8633,
+9733,158,
+9734,157,
+9742,241,
+9743,240,
+9756,242,
+9757,9222,
+9758,243,
+9759,9223,
+9775,8664,
+9792,147,
+9794,146,
+9824,222,
+9825,223,
+9827,226,
+9828,221,
+9829,224,
+9831,225,
+9832,239,
+9833,253,
+9834,254,
+9836,255,
+9837,252,
+9839,8594,
+10006,8631,
+10010,8630,
+10045,8604,
+10070,8637,
+10102,8673,
+10103,8674,
+10104,8675,
+10105,8676,
+10106,8677,
+10107,8678,
+10108,8679,
+10109,8680,
+10110,8681,
+10111,8682,
+10122,8342,
+10123,8343,
+10124,8344,
+10125,8345,
+10126,8346,
+10127,8347,
+10128,8348,
+10129,8349,
+10130,8350,
+10131,8351,
+12288,101,
+12289,102,
+12290,103,
+12291,108,
+12296,120,
+12297,121,
+12298,122,
+12299,123,
+12300,124,
+12301,125,
+12302,126,
+12303,127,
+12304,128,
+12305,129,
+12306,8700,
+12307,175,
+12308,118,
+12309,119,
+12310,8219,
+12311,8220,
+12312,8221,
+12313,8222,
+12318,9322,
+12319,9323,
+12320,8671,
+12342,8701,
+12353,851,
+12354,852,
+12355,853,
+12356,854,
+12357,855,
+12358,856,
+12359,857,
+12360,858,
+12361,859,
+12362,860,
+12363,861,
+12364,862,
+12365,863,
+12366,864,
+12367,865,
+12368,866,
+12369,867,
+12370,868,
+12371,869,
+12372,870,
+12373,871,
+12374,872,
+12375,873,
+12376,874,
+12377,875,
+12378,876,
+12379,877,
+12380,878,
+12381,879,
+12382,880,
+12383,881,
+12384,882,
+12385,883,
+12386,884,
+12387,885,
+12388,886,
+12389,887,
+12390,888,
+12391,889,
+12392,890,
+12393,891,
+12394,892,
+12395,893,
+12396,894,
+12397,895,
+12398,896,
+12399,897,
+12400,898,
+12401,899,
+12402,900,
+12403,901,
+12404,902,
+12405,903,
+12406,904,
+12407,905,
+12408,906,
+12409,907,
+12410,908,
+12411,909,
+12412,910,
+12413,911,
+12414,912,
+12415,913,
+12416,914,
+12417,915,
+12418,916,
+12419,917,
+12420,918,
+12421,919,
+12422,920,
+12423,921,
+12424,922,
+12425,923,
+12426,924,
+12427,925,
+12428,926,
+12429,927,
+12430,928,
+12431,929,
+12432,930,
+12433,931,
+12434,932,
+12435,933,
+12449,934,
+12450,935,
+12451,936,
+12452,937,
+12453,938,
+12454,939,
+12455,940,
+12456,941,
+12457,942,
+12458,943,
+12459,944,
+12460,945,
+12461,946,
+12462,947,
+12463,948,
+12464,949,
+12465,950,
+12466,951,
+12467,952,
+12468,953,
+12469,954,
+12470,955,
+12471,956,
+12472,957,
+12473,958,
+12474,959,
+12475,960,
+12476,961,
+12477,962,
+12478,963,
+12479,964,
+12480,965,
+12481,966,
+12482,967,
+12483,968,
+12484,969,
+12485,970,
+12486,971,
+12487,972,
+12488,973,
+12489,974,
+12490,975,
+12491,976,
+12492,977,
+12493,978,
+12494,979,
+12495,980,
+12496,981,
+12497,982,
+12498,983,
+12499,984,
+12500,985,
+12501,986,
+12502,987,
+12503,988,
+12504,989,
+12505,990,
+12506,991,
+12507,992,
+12508,993,
+12509,994,
+12510,995,
+12511,996,
+12512,997,
+12513,998,
+12514,999,
+12515,1000,
+12516,1001,
+12517,1002,
+12518,1003,
+12519,1004,
+12520,1005,
+12521,1006,
+12522,1007,
+12523,1008,
+12524,1009,
+12525,1010,
+12526,1011,
+12527,1012,
+12528,1013,
+12529,1014,
+12530,1015,
+12531,1016,
+12532,1017,
+12533,1018,
+12534,1019,
+12539,104,
+12540,9330,
+12593,358,
+12594,359,
+12595,360,
+12596,361,
+12597,362,
+12598,363,
+12599,364,
+12600,365,
+12601,366,
+12602,367,
+12603,368,
+12604,369,
+12605,370,
+12606,371,
+12607,372,
+12608,373,
+12609,374,
+12610,375,
+12611,376,
+12612,377,
+12613,378,
+12614,379,
+12615,380,
+12616,381,
+12617,382,
+12618,383,
+12619,384,
+12620,385,
+12621,386,
+12622,387,
+12623,388,
+12624,389,
+12625,390,
+12626,391,
+12627,392,
+12628,393,
+12629,394,
+12630,395,
+12631,396,
+12632,397,
+12633,398,
+12634,399,
+12635,400,
+12636,401,
+12637,402,
+12638,403,
+12639,404,
+12640,405,
+12641,406,
+12642,407,
+12643,408,
+12644,101,
+12645,409,
+12646,410,
+12647,411,
+12648,412,
+12649,413,
+12650,414,
+12651,415,
+12652,416,
+12653,417,
+12654,418,
+12655,419,
+12656,420,
+12657,421,
+12658,422,
+12659,423,
+12660,424,
+12661,425,
+12662,426,
+12663,427,
+12664,428,
+12665,429,
+12666,430,
+12667,431,
+12668,432,
+12669,433,
+12670,434,
+12671,435,
+12672,436,
+12673,437,
+12674,438,
+12675,439,
+12676,440,
+12677,441,
+12678,442,
+12679,443,
+12680,444,
+12681,445,
+12682,446,
+12683,447,
+12684,448,
+12685,449,
+12686,450,
+12800,773,
+12801,774,
+12802,775,
+12803,776,
+12804,777,
+12805,778,
+12806,779,
+12807,780,
+12808,781,
+12809,782,
+12810,783,
+12811,784,
+12812,785,
+12813,786,
+12814,787,
+12815,788,
+12816,789,
+12817,790,
+12818,791,
+12819,792,
+12820,793,
+12821,794,
+12822,795,
+12823,796,
+12824,797,
+12825,798,
+12826,799,
+12827,800,
+12828,257,
+12849,8788,
+12857,8789,
+12896,679,
+12897,680,
+12898,681,
+12899,682,
+12900,683,
+12901,684,
+12902,685,
+12903,686,
+12904,687,
+12905,688,
+12906,689,
+12907,690,
+12908,691,
+12909,692,
+12910,693,
+12911,694,
+12912,695,
+12913,696,
+12914,697,
+12915,698,
+12916,699,
+12917,700,
+12918,701,
+12919,702,
+12920,703,
+12921,704,
+12922,705,
+12923,706,
+12927,256,
+12938,9301,
+12939,9302,
+12940,9303,
+12941,9304,
+12942,9305,
+12943,9306,
+12944,9300,
+12948,9080,
+12958,8761,
+12965,9096,
+13184,627,
+13185,628,
+13186,629,
+13187,630,
+13188,631,
+13192,612,
+13193,613,
+13194,646,
+13195,647,
+13196,648,
+13197,608,
+13198,609,
+13199,610,
+13200,638,
+13201,639,
+13202,640,
+13203,641,
+13204,642,
+13205,587,
+13206,588,
+13207,589,
+13208,591,
+13209,597,
+13210,598,
+13211,599,
+13212,600,
+13213,601,
+13214,602,
+13215,603,
+13216,604,
+13217,605,
+13218,606,
+13219,593,
+13220,594,
+13221,595,
+13222,596,
+13223,615,
+13224,616,
+13225,655,
+13226,656,
+13227,657,
+13228,658,
+13229,651,
+13230,652,
+13231,653,
+13232,617,
+13233,618,
+13234,619,
+13235,620,
+13236,621,
+13237,622,
+13238,623,
+13239,624,
+13240,625,
+13241,626,
+13242,632,
+13243,633,
+13244,634,
+13245,635,
+13246,636,
+13247,637,
+13248,644,
+13249,645,
+13250,261,
+13251,662,
+13252,592,
+13253,650,
+13254,665,
+13255,259,
+13256,614,
+13257,663,
+13258,607,
+13259,8790,
+13263,611,
+13264,660,
+13267,661,
+13270,649,
+13272,262,
+13275,654,
+13276,664,
+13277,659,
+19968,6460,
+19969,6704,
+19971,7364,
+19975,4670,
+19976,6534,
+19977,5320,
+19978,5331,
+19979,7616,
+19981,5109,
+19985,7288,
+19988,7041,
+19989,5181,
+19990,5492,
+19992,3893,
+19993,5041,
+19998,5682,
+20013,6922,
+20018,3802,
+20024,7882,
+20025,4192,
+20027,6860,
+20034,6029,
+20035,4154,
+20037,3894,
+20043,6942,
+20045,5241,
+20046,7800,
+20047,7614,
+20054,3855,
+20056,5683,
+20057,6380,
+20061,3895,
+20062,3613,
+20063,5862,
+20075,3500,
+20077,4329,
+20083,6309,
+20086,5092,
+20087,5315,
+20094,3601,
+20098,4389,
+20102,4551,
+20104,5934,
+20107,5242,
+20108,6413,
+20110,6197,
+20112,6252,
+20113,6238,
+20114,7801,
+20116,6049,
+20117,6705,
+20120,4058,
+20123,5243,
+20126,5775,
+20129,4696,
+20130,7670,
+20132,3868,
+20133,7685,
+20134,5947,
+20136,7771,
+20139,7710,
+20140,3660,
+20141,6706,
+20142,4427,
+20150,4193,
+20154,6443,
+20160,5771,
+20161,6444,
+20164,7331,
+20167,3896,
+20170,4038,
+20171,3560,
+20173,6479,
+20180,6483,
+20181,5244,
+20182,7380,
+20183,6535,
+20184,5110,
+20185,5418,
+20189,4331,
+20191,7148,
+20195,4250,
+20196,4489,
+20197,6414,
+20208,5833,
+20210,6923,
+20214,3602,
+20215,3561,
+20219,6469,
+20225,4062,
+20233,7671,
+20234,6415,
+20235,4051,
+20237,6050,
+20238,4063,
+20239,5074,
+20240,5005,
+20241,8005,
+20271,4988,
+20276,4905,
+20278,4490,
+20280,5735,
+20282,5245,
+20284,5246,
+20285,3436,
+20291,6643,
+20294,4194,
+20295,6591,
+20296,7544,
+20301,6284,
+20302,6592,
+20303,6861,
+20304,6854,
+20305,6198,
+20309,7617,
+20313,5935,
+20314,6461,
+20315,5171,
+20316,6509,
+20329,7502,
+20335,5879,
+20336,4989,
+20339,3437,
+20342,4127,
+20346,6644,
+20350,6462,
+20351,5247,
+20353,5736,
+20355,3476,
+20356,7015,
+20358,4420,
+20360,7336,
+20362,3839,
+20363,4506,
+20365,5692,
+20367,6862,
+20369,6310,
+20374,4594,
+20376,7042,
+20379,3786,
+20381,6394,
+20398,4764,
+20399,7966,
+20405,7367,
+20406,4440,
+20415,7518,
+20418,3705,
+20419,7241,
+20420,5776,
+20425,6051,
+20426,6902,
+20430,6782,
+20433,6174,
+20435,3661,
+20436,7734,
+20439,5537,
+20442,4613,
+20445,5058,
+20447,5248,
+20448,7759,
+20449,5737,
+20462,5567,
+20463,5111,
+20465,3897,
+20467,4970,
+20469,7576,
+20472,5093,
+20474,5925,
+20482,5042,
+20486,4428,
+20489,7092,
+20491,3562,
+20493,4969,
+20497,4836,
+20498,4269,
+20502,7705,
+20505,7967,
+20506,6395,
+20508,7134,
+20510,3662,
+20511,7043,
+20513,7093,
+20515,4941,
+20516,7337,
+20518,3969,
+20519,6837,
+20520,3585,
+20522,6030,
+20523,4595,
+20524,7394,
+20525,6131,
+20539,5863,
+20547,5917,
+20551,3438,
+20552,3627,
+20553,6285,
+20559,7519,
+20565,7686,
+20570,6863,
+20572,6707,
+20581,3603,
+20596,7330,
+20597,6708,
+20598,6199,
+20600,7465,
+20608,3856,
+20613,5112,
+20621,4942,
+20625,3614,
+20632,5303,
+20633,5182,
+20652,7262,
+20653,6175,
+20658,6052,
+20659,6645,
+20661,7114,
+20663,5332,
+20670,3663,
+20677,4023,
+20681,7177,
+20682,5419,
+20687,5333,
+20689,3869,
+20693,5075,
+20694,8035,
+20698,4552,
+20702,6286,
+20709,6140,
+20711,5684,
+20717,7082,
+20729,3439,
+20731,5020,
+20735,5249,
+20736,6396,
+20737,6903,
+20740,5912,
+20742,3664,
+20745,3617,
+20754,6311,
+20767,5334,
+20769,4543,
+20778,6200,
+20786,6593,
+20791,4441,
+20794,4133,
+20796,5926,
+20800,6089,
+20801,6359,
+20803,6255,
+20804,7772,
+20805,7306,
+20806,6783,
+20807,8013,
+20808,5420,
+20809,3840,
+20811,4016,
+20812,7431,
+20813,4735,
+20814,7449,
+20818,5777,
+20828,4348,
+20834,4059,
+20837,6477,
+20839,4155,
+20840,6646,
+20841,4429,
+20842,6312,
+20843,7499,
+20844,3787,
+20845,4591,
+20846,7791,
+20849,3788,
+20853,5043,
+20854,4064,
+20855,3898,
+20856,6647,
+20860,3654,
+20864,4065,
+20870,5933,
+20874,7126,
+20877,6570,
+20882,4765,
+20885,4736,
+20887,6176,
+20896,3819,
+20901,4748,
+20906,4733,
+20908,4332,
+20918,5864,
+20919,4424,
+20925,4477,
+20932,7130,
+20934,6904,
+20937,4430,
+20939,6784,
+20940,4607,
+20941,4333,
+20956,4606,
+20957,6390,
+20958,8036,
+20961,5009,
+20976,7904,
+20977,3563,
+20982,8014,
+20984,7167,
+20985,6141,
+20986,7303,
+20989,7651,
+20992,4270,
+20995,6445,
+20998,5152,
+20999,6684,
+21000,6031,
+21002,3477,
+21006,4837,
+21009,7773,
+21015,4478,
+21021,7214,
+21028,7490,
+21029,5037,
+21033,4614,
+21034,5304,
+21038,3835,
+21040,4271,
+21046,6759,
+21047,5561,
+21048,3970,
+21049,7077,
+21050,6484,
+21051,3465,
+21059,7205,
+21063,7360,
+21066,5301,
+21067,4017,
+21068,4397,
+21069,6648,
+21076,7135,
+21078,5113,
+21083,3536,
+21085,4886,
+21089,5463,
+21097,6480,
+21098,6649,
+21103,5114,
+21106,7649,
+21109,7094,
+21117,7577,
+21119,7215,
+21123,7948,
+21127,4018,
+21128,5021,
+21129,4577,
+21133,3618,
+21137,6760,
+21138,3619,
+21147,4458,
+21151,3789,
+21152,3440,
+21155,4479,
+21156,4024,
+21161,6785,
+21162,4169,
+21163,3624,
+21182,7703,
+21185,3665,
+21187,4930,
+21189,7361,
+21191,6177,
+21193,4737,
+21197,3666,
+21202,4604,
+21205,4334,
+21206,6229,
+21208,3510,
+21209,4812,
+21211,7979,
+21213,5685,
+21214,4511,
+21215,4766,
+21218,5493,
+21219,6619,
+21220,4025,
+21235,7980,
+21237,4442,
+21240,3971,
+21242,6510,
+21243,4009,
+21246,3899,
+21247,4848,
+21253,7545,
+21256,8015,
+21261,7546,
+21263,7547,
+21264,5076,
+21269,5183,
+21270,7863,
+21271,5151,
+21273,5693,
+21280,6536,
+21281,3841,
+21283,3530,
+21290,5184,
+21295,7928,
+21305,7604,
+21311,4188,
+21312,3900,
+21313,5772,
+21315,7149,
+21316,6478,
+21319,5686,
+21320,6053,
+21321,7994,
+21322,4906,
+21325,4671,
+21329,5185,
+21330,6834,
+21331,7395,
+21332,7760,
+21335,4145,
+21338,4887,
+21340,5077,
+21342,5031,
+21344,6692,
+21350,3852,
+21352,5450,
+21359,4800,
+21360,6446,
+21361,6287,
+21364,3466,
+21365,4390,
+21367,3972,
+21373,6926,
+21375,3667,
+21380,5851,
+21395,5840,
+21400,4615,
+21402,7968,
+21407,6256,
+21408,7332,
+21413,3979,
+21414,7618,
+21421,5989,
+21435,3586,
+21443,7083,
+21448,6201,
+21449,7044,
+21450,4052,
+21451,6202,
+21453,4907,
+21460,5628,
+21462,7316,
+21463,5568,
+21467,4908,
+21473,6032,
+21474,7251,
+21475,3901,
+21476,3729,
+21477,3902,
+21481,3730,
+21482,6943,
+21483,3994,
+21484,5500,
+21485,7500,
+21487,3441,
+21488,7432,
+21489,7016,
+21490,5250,
+21491,6203,
+21496,5251,
+21507,8023,
+21508,3467,
+21512,7663,
+21513,4128,
+21514,6620,
+21516,4335,
+21517,4749,
+21518,7969,
+21519,4616,
+21520,7450,
+21521,7711,
+21531,3953,
+21533,4638,
+21535,6381,
+21536,7534,
+21542,5115,
+21545,5153,
+21547,7652,
+21555,6055,
+21560,8030,
+21561,7317,
+21563,4838,
+21564,7970,
+21566,6054,
+21570,4443,
+21576,6709,
+21578,3731,
+21585,7408,
+21608,6867,
+21610,6866,
+21617,3732,
+21619,4851,
+21621,3442,
+21627,5738,
+21628,7802,
+21629,4750,
+21632,6594,
+21638,7548,
+21644,7864,
+21646,3903,
+21648,5116,
+21668,7381,
+21672,6485,
+21675,6944,
+21676,3870,
+21683,7687,
+21688,7653,
+21693,6447,
+21696,5841,
+21697,7590,
+21700,7853,
+21704,7664,
+21705,6571,
+21729,6257,
+21733,3443,
+21736,7216,
+21741,3767,
+21742,7953,
+21746,7168,
+21754,7549,
+21764,7503,
+21766,5252,
+21767,6980,
+21774,4617,
+21776,4239,
+21788,4689,
+21807,6313,
+21809,7095,
+21813,5821,
+21822,7382,
+21828,7396,
+21830,5335,
+21839,4839,
+21843,3706,
+21846,4217,
+21854,5778,
+21859,7654,
+21884,6761,
+21888,3579,
+21892,5421,
+21894,7169,
+21895,4374,
+21897,7971,
+21898,7655,
+21912,7150,
+21913,7995,
+21914,7883,
+21916,8037,
+21917,3501,
+21927,7990,
+21929,6314,
+21930,5336,
+21931,4132,
+21932,3871,
+21934,4195,
+21957,7972,
+21959,5365,
+21972,6981,
+21978,6056,
+21980,4066,
+21983,7045,
+21987,5253,
+21988,7338,
+22013,5569,
+22014,6868,
+22022,7409,
+22025,3444,
+22036,3904,
+22039,5337,
+22063,5501,
+22066,6786,
+22068,7318,
+22070,5694,
+22099,7719,
+22120,4067,
+22123,8038,
+22132,5154,
+22150,7954,
+22181,5956,
+22188,5223,
+22190,7712,
+22196,5927,
+22204,6511,
+22218,4152,
+22221,8039,
+22225,7242,
+22234,5570,
+22235,5254,
+22238,7929,
+22240,6448,
+22256,3774,
+22265,4491,
+22266,3733,
+22275,7550,
+22276,5902,
+22280,3973,
+22283,3947,
+22285,6288,
+22290,6259,
+22291,6258,
+22294,4272,
+22296,4196,
+22303,7451,
+22312,6572,
+22317,3995,
+22320,6945,
+22331,4068,
+22336,6946,
+22338,7491,
+22343,4010,
+22346,4943,
+22349,4218,
+22350,3511,
+22352,6855,
+22353,3581,
+22369,7474,
+22372,3775,
+22374,7410,
+22378,7529,
+22382,4252,
+22384,3668,
+22389,3905,
+22396,7397,
+22402,5571,
+22408,4251,
+22411,7774,
+22419,7688,
+22432,6373,
+22434,3906,
+22435,6260,
+22467,5842,
+22471,6178,
+22472,6905,
+22475,4708,
+22478,5474,
+22495,5948,
+22496,5117,
+22512,7115,
+22516,5720,
+22519,7032,
+22521,4971,
+22522,4069,
+22524,4070,
+22528,3959,
+22530,4240,
+22533,3637,
+22534,7459,
+22536,3537,
+22537,6355,
+22538,5793,
+22558,7187,
+22561,5059,
+22564,6762,
+22567,5957,
+22570,3512,
+22575,6142,
+22576,5918,
+22577,5060,
+22580,6537,
+22581,4273,
+22586,3707,
+22602,3857,
+22603,6002,
+22607,3564,
+22609,5502,
+22612,7424,
+22615,4274,
+22616,4241,
+22618,7252,
+22622,5362,
+22625,6650,
+22626,6057,
+22628,7981,
+22645,6982,
+22649,7084,
+22652,6651,
+22654,5629,
+22659,3669,
+22661,5373,
+22665,6179,
+22675,4801,
+22684,7265,
+22686,6931,
+22687,7720,
+22696,4834,
+22697,4319,
+22702,7383,
+22707,5155,
+22714,6058,
+22715,6538,
+22718,3478,
+22721,5022,
+22725,6090,
+22727,4197,
+22734,7982,
+22737,7630,
+22739,5829,
+22741,7803,
+22744,4564,
+22745,3842,
+22750,3858,
+22751,4536,
+22756,5880,
+22763,5255,
+22764,6470,
+22767,6539,
+22777,6463,
+22778,7804,
+22779,5374,
+22781,5572,
+22799,7619,
+22804,4071,
+22805,5403,
+22806,6135,
+22809,5630,
+22810,4190,
+22812,5865,
+22818,4797,
+22823,4253,
+22825,7151,
+22826,7433,
+22827,5118,
+22829,6143,
+22830,5834,
+22833,5758,
+22839,6416,
+22846,7761,
+22852,5928,
+22855,4072,
+22856,4156,
+22857,5094,
+22862,3996,
+22863,6869,
+22864,7884,
+22865,3708,
+22868,5156,
+22869,7730,
+22871,7466,
+22874,7689,
+22880,6652,
+22882,5256,
+22887,6059,
+22890,7418,
+22891,6360,
+22892,6540,
+22893,5404,
+22894,5157,
+22899,4159,
+22900,4170,
+22904,3479,
+22909,7805,
+22914,5936,
+22915,5186,
+22916,4697,
+22922,6471,
+22931,4073,
+22934,6144,
+22935,4039,
+22937,4802,
+22949,7384,
+22952,4944,
+22956,7467,
+22969,4709,
+22971,7131,
+22974,7188,
+22979,6710,
+22982,4767,
+22985,6486,
+22987,5695,
+22992,6595,
+22993,3734,
+22995,5475,
+22996,6289,
+23001,6472,
+23002,6145,
+23004,3538,
+23005,6864,
+23014,3480,
+23016,6417,
+23018,7017,
+23020,8040,
+23022,7672,
+23032,5958,
+23035,6449,
+23039,6487,
+23041,6290,
+23043,6132,
+23057,5257,
+23064,4153,
+23067,6060,
+23068,4134,
+23071,5959,
+23072,5739,
+23077,5779,
+23081,4672,
+23094,7319,
+23100,7096,
+23105,4565,
+23110,7475,
+23113,6107,
+23130,7844,
+23138,5187,
+23142,5119,
+23186,4710,
+23194,4852,
+23195,6261,
+23204,5696,
+23233,3445,
+23234,5573,
+23236,6262,
+23241,7018,
+23244,7758,
+23265,6621,
+23270,7673,
+23273,4181,
+23301,7865,
+23305,8041,
+23307,5422,
+23308,3872,
+23318,7535,
+23338,5224,
+23360,5338,
+23363,5881,
+23376,6488,
+23377,7754,
+23380,3790,
+23381,6481,
+23383,6489,
+23384,6832,
+23386,5120,
+23388,6490,
+23389,7955,
+23391,4727,
+23395,3709,
+23396,3735,
+23401,7690,
+23403,5546,
+23408,5631,
+23409,6522,
+23413,5121,
+23416,7631,
+23418,6315,
+23420,5923,
+23429,4266,
+23431,6204,
+23432,5574,
+23433,5807,
+23435,5553,
+23436,6108,
+23439,3864,
+23443,5078,
+23445,7427,
+23446,7950,
+23447,6838,
+23448,3820,
+23449,6870,
+23450,6711,
+23451,6109,
+23452,6397,
+23458,3580,
+23459,5423,
+23460,5759,
+23461,6316,
+23462,7885,
+23468,5476,
+23470,3963,
+23472,6573,
+23475,7691,
+23476,5960,
+23477,5503,
+23478,3446,
+23480,5740,
+23481,6180,
+23487,5632,
+23488,7116,
+23490,6622,
+23491,6263,
+23492,4074,
+23493,6450,
+23494,4883,
+23495,3907,
+23500,5122,
+23504,4711,
+23506,7635,
+23507,6205,
+23508,5721,
+23511,4168,
+23518,4664,
+23519,7078,
+23521,3803,
+23522,7368,
+23524,6061,
+23525,6146,
+23526,5760,
+23527,4167,
+23528,7117,
+23529,5762,
+23531,5258,
+23532,3821,
+23534,4553,
+23535,6906,
+23541,7253,
+23542,5061,
+23544,7247,
+23546,5259,
+23553,5095,
+23556,5260,
+23559,6541,
+23560,6653,
+23561,6291,
+23562,6833,
+23563,5763,
+23565,4254,
+23566,4275,
+23567,5504,
+23569,5505,
+23574,7178,
+23577,5339,
+23588,6206,
+23592,4945,
+23601,7320,
+23608,5697,
+23609,6361,
+23610,7136,
+23611,3736,
+23612,4186,
+23614,4853,
+23615,4180,
+23616,3948,
+23621,3587,
+23622,3710,
+23624,3960,
+23627,6078,
+23629,5699,
+23630,5698,
+23633,5451,
+23637,6654,
+23643,5044,
+23648,4276,
+23650,4566,
+23652,7335,
+23653,4618,
+23660,5538,
+23663,4358,
+23665,5305,
+23673,8024,
+23696,4075,
+23697,6527,
+23713,3539,
+23721,5822,
+23723,5575,
+23724,3531,
+23729,4255,
+23731,5794,
+23733,7806,
+23735,4870,
+23736,5808,
+23738,4492,
+23742,6693,
+23744,5576,
+23769,7339,
+23776,5340,
+23784,5780,
+23791,5096,
+23792,5097,
+23796,7735,
+23798,4277,
+23803,6907,
+23805,7762,
+23815,5671,
+23821,4421,
+23822,4076,
+23825,3776,
+23828,7263,
+23830,5843,
+23831,3540,
+23833,4596,
+23847,5672,
+23849,5175,
+23883,4854,
+23884,3513,
+23888,4399,
+23913,5673,
+23916,6136,
+23919,7046,
+23943,3908,
+23947,4278,
+23965,4365,
+23968,3873,
+23970,6147,
+23978,5931,
+23992,6003,
+23994,4493,
+23996,5375,
+23997,5795,
+24013,6137,
+24018,4673,
+24022,5823,
+24029,7152,
+24030,6871,
+24033,5640,
+24034,5506,
+24037,3791,
+24038,6856,
+24039,3874,
+24040,3588,
+24043,4813,
+24046,7047,
+24049,4077,
+24050,6418,
+24051,5261,
+24052,7476,
+24055,7674,
+24061,5547,
+24062,3604,
+24066,5700,
+24067,7551,
+24070,5010,
+24076,8042,
+24081,7428,
+24086,7189,
+24089,7019,
+24091,4990,
+24093,6763,
+24101,5577,
+24107,5262,
+24109,5405,
+24115,6542,
+24118,4256,
+24120,5341,
+24125,4768,
+24127,7973,
+24128,6712,
+24132,5796,
+24133,7571,
+24135,4946,
+24140,7905,
+24149,4665,
+24159,7340,
+24161,4996,
+24162,4242,
+24163,7536,
+24178,3481,
+24179,7530,
+24180,4160,
+24183,5045,
+24184,7706,
+24185,3482,
+24187,7886,
+24188,6317,
+24189,6318,
+24190,4078,
+24196,6543,
+24199,5188,
+24202,5342,
+24207,5376,
+24213,6596,
+24215,6694,
+24218,3670,
+24220,5123,
+24224,5343,
+24230,4279,
+24231,6857,
+24235,3737,
+24237,6713,
+24245,5824,
+24246,5377,
+24247,3541,
+24248,6181,
+24254,6319,
+24258,5344,
+24264,7620,
+24265,4483,
+24266,4412,
+24272,3909,
+24275,3815,
+24278,4554,
+24282,6872,
+24283,6655,
+24287,4803,
+24288,7097,
+24290,7537,
+24291,3843,
+24300,4444,
+24307,7197,
+24310,5961,
+24311,6714,
+24314,3605,
+24315,7930,
+24321,5032,
+24324,4537,
+24330,7538,
+24335,5722,
+24337,5701,
+24339,3964,
+24340,6787,
+24341,6451,
+24343,5172,
+24344,7854,
+24347,6419,
+24351,6764,
+24358,7736,
+24359,7807,
+24361,4171,
+24369,5872,
+24373,6544,
+24378,3542,
+24380,7605,
+24392,7411,
+24394,3543,
+24396,4855,
+24398,4674,
+24406,4198,
+24407,7792,
+24409,7997,
+24411,6420,
+24418,7775,
+24422,5919,
+24423,6230,
+24425,7118,
+24426,7578,
+24427,6788,
+24428,5225,
+24429,7513,
+24432,7098,
+24433,6004,
+24439,4947,
+24441,5949,
+24444,7597,
+24447,5173,
+24448,6126,
+24449,6715,
+24453,4257,
+24455,5641,
+24458,7931,
+24459,4600,
+24460,7974,
+24464,5378,
+24465,3671,
+24466,4280,
+24471,4364,
+24472,4972,
+24473,5263,
+24478,6839,
+24480,4422,
+24481,5903,
+24488,7906,
+24489,5079,
+24490,5642,
+24494,4856,
+24501,7038,
+24503,4267,
+24505,7170,
+24509,7998,
+24515,5764,
+24517,7606,
+24524,4079,
+24525,6452,
+24534,7248,
+24535,6947,
+24536,4698,
+24537,4699,
+24544,7307,
+24555,7379,
+24565,4163,
+24573,7850,
+24575,5158,
+24591,5835,
+24594,4172,
+24598,7552,
+24604,4494,
+24605,5264,
+24608,7434,
+24609,6421,
+24613,4053,
+24615,5477,
+24616,6264,
+24618,3859,
+24623,3625,
+24641,6473,
+24642,5643,
+24643,5702,
+24653,7907,
+24656,3792,
+24658,7675,
+24661,5379,
+24665,5882,
+24669,3836,
+24674,7932,
+24675,6491,
+24676,8010,
+24677,7341,
+24680,7636,
+24681,6374,
+24682,3468,
+24684,4164,
+24685,3793,
+24687,5723,
+24688,8031,
+24709,5985,
+24713,5761,
+24716,6765,
+24717,7637,
+24724,7933,
+24726,7504,
+24730,5554,
+24731,6656,
+24735,6062,
+24736,6320,
+24739,7887,
+24740,7254,
+24743,4619,
+24752,6840,
+24754,5189,
+24755,4268,
+24756,7312,
+24758,4871,
+24760,3711,
+24764,4281,
+24765,7132,
+24773,6716,
+24775,4320,
+24785,7841,
+24794,7851,
+24796,5406,
+24799,6321,
+24800,7793,
+24801,5797,
+24816,7385,
+24817,4178,
+24819,5345,
+24822,7908,
+24825,5866,
+24826,5478,
+24827,7333,
+24833,5578,
+24838,3606,
+24840,6322,
+24841,6323,
+24845,4872,
+24846,7517,
+24847,6398,
+24853,5798,
+24858,6207,
+24859,5844,
+24863,3514,
+24871,3860,
+24880,7909,
+24884,7099,
+24887,3565,
+24892,5741,
+24894,3566,
+24895,6265,
+24898,6182,
+24900,4601,
+24903,6375,
+24904,6492,
+24906,3655,
+24907,7435,
+24908,7910,
+24915,7579,
+24917,4769,
+24920,7085,
+24921,7086,
+24925,7471,
+24927,7453,
+24930,4675,
+24931,3822,
+24932,3469,
+24935,7794,
+24936,3567,
+24939,6841,
+24942,4445,
+24944,6292,
+24950,3672,
+24951,3544,
+24957,7137,
+24958,6168,
+24961,7255,
+24962,6208,
+24970,5190,
+24974,6932,
+24976,4465,
+24977,5237,
+24980,7217,
+24984,8044,
+24985,8043,
+24986,7412,
+24996,5159,
+24999,4336,
+25001,3628,
+25003,4873,
+25004,3673,
+25006,4814,
+25010,7723,
+25014,5913,
+25018,4219,
+25022,3515,
+25027,4026,
+25031,3483,
+25032,7692,
+25033,6391,
+25034,6063,
+25035,4815,
+25062,4135,
+25074,7039,
+25078,4375,
+25079,7934,
+25080,7737,
+25082,7087,
+25084,3910,
+25087,6399,
+25088,4466,
+25095,4243,
+25096,3804,
+25098,4816,
+25100,5667,
+25101,5579,
+25102,6369,
+25104,5479,
+25105,5781,
+25106,3712,
+25110,7842,
+25114,7138,
+25119,4019,
+25121,3516,
+25130,6685,
+25134,4592,
+25136,6657,
+25137,8045,
+25140,4258,
+25142,7808,
+25150,4446,
+25151,4948,
+25152,5507,
+25153,7520,
+25159,5424,
+25160,7809,
+25161,5191,
+25163,5580,
+25165,6574,
+25171,7386,
+25176,7398,
+25198,5160,
+25201,4054,
+25206,5124,
+25209,5192,
+25212,5852,
+25215,5687,
+25216,4080,
+25220,7218,
+25225,3648,
+25226,7477,
+25233,5914,
+25234,5380,
+25237,7468,
+25239,7676,
+25240,6686,
+25243,7553,
+25259,7598,
+25265,7554,
+25269,6597,
+25273,4690,
+25276,5830,
+25277,7266,
+25282,5174,
+25287,4817,
+25288,4165,
+25289,4409,
+25292,4909,
+25293,4888,
+25295,4136,
+25296,3861,
+25298,3589,
+25299,7139,
+25300,4931,
+25302,7387,
+25303,6148,
+25304,3911,
+25305,6835,
+25307,7219,
+25308,4973,
+25324,3837,
+25325,5724,
+25326,4129,
+25327,6934,
+25329,3794,
+25331,3974,
+25335,3738,
+25342,5678,
+25343,4137,
+25345,6948,
+25351,6949,
+25353,5809,
+25361,4282,
+25387,6858,
+25391,6983,
+25402,6717,
+25403,5963,
+25405,4676,
+25406,7763,
+25417,7055,
+25420,7501,
+25423,4143,
+25424,5962,
+25429,7555,
+25447,5098,
+25448,5265,
+25454,3590,
+25458,3975,
+25463,7190,
+25466,4144,
+25467,4166,
+25471,5381,
+25475,5508,
+25480,5581,
+25481,4283,
+25484,6545,
+25490,4974,
+25494,5853,
+25496,3961,
+25499,3853,
+25504,4425,
+25505,7119,
+25506,7420,
+25509,6701,
+25511,3795,
+25512,7267,
+25513,5929,
+25514,6789,
+25536,3484,
+25540,6324,
+25542,3997,
+25551,4804,
+25552,6766,
+25558,6387,
+25562,5883,
+25563,7888,
+25569,5799,
+25581,3629,
+25582,7999,
+25588,6266,
+25590,5867,
+25591,5327,
+25613,5548,
+25615,4889,
+25620,5509,
+25622,6149,
+25623,4284,
+25628,5582,
+25634,6984,
+25644,4910,
+25645,7425,
+25658,8006,
+25662,7056,
+25688,6623,
+25696,7256,
+25705,4656,
+25711,6950,
+25720,4770,
+25721,4771,
+25722,6702,
+25736,4512,
+25745,7447,
+25746,5316,
+25747,6150,
+25754,4161,
+25758,4244,
+25764,7171,
+25765,4932,
+25771,4818,
+25773,7478,
+25774,7261,
+25776,7062,
+25778,4890,
+25787,4212,
+25793,6091,
+25796,4513,
+25797,7153,
+25799,7445,
+25802,3630,
+25805,6790,
+25806,3674,
+25810,4040,
+25812,4220,
+25816,5023,
+25818,3591,
+25825,4259,
+25826,7399,
+25829,4400,
+25830,7079,
+25831,3592,
+25836,6400,
+25842,7140,
+25844,7877,
+25850,7479,
+25854,6151,
+25856,4911,
+25860,7448,
+25880,5884,
+25885,5471,
+25891,4467,
+25898,3875,
+25899,7878,
+25900,4401,
+25903,6951,
+25910,5583,
+25911,3739,
+25912,6325,
+25913,3568,
+25915,3796,
+25918,4949,
+25919,6718,
+25925,3740,
+25928,7956,
+25933,5382,
+25934,3876,
+25935,4874,
+25937,3912,
+25942,6064,
+25943,7505,
+25950,7100,
+25954,3517,
+25955,5306,
+25958,4321,
+25964,3675,
+25965,5885,
+25970,3741,
+25972,6719,
+25973,6624,
+25975,5125,
+25976,5584,
+25982,5425,
+25986,4484,
+25987,7539,
+25989,7957,
+25991,4840,
+25996,5226,
+26000,5193,
+26001,4912,
+26007,4349,
+26009,4555,
+26011,3768,
+26012,5266,
+26015,7030,
+26017,5817,
+26020,4027,
+26021,7141,
+26023,5126,
+26027,6512,
+26028,7088,
+26031,5267,
+26032,5742,
+26039,4199,
+26041,4950,
+26044,5904,
+26045,5703,
+26049,4951,
+26053,4447,
+26059,5426,
+26060,6720,
+26063,6828,
+26066,4578,
+26071,4081,
+26080,4819,
+26083,4082,
+26085,6464,
+26086,4200,
+26088,6952,
+26089,6791,
+26092,5644,
+26093,6231,
+26097,7638,
+26100,6209,
+26106,6127,
+26107,4875,
+26108,4876,
+26109,4322,
+26111,6065,
+26118,3777,
+26119,5688,
+26121,4952,
+26122,7810,
+26124,7101,
+26126,4751,
+26127,7845,
+26128,5161,
+26129,4041,
+26131,5950,
+26132,5407,
+26133,8019,
+26142,5046,
+26143,5480,
+26144,6005,
+26149,7300,
+26151,4712,
+26152,6513,
+26157,5510,
+26159,5704,
+26160,7621,
+26161,6232,
+26164,4805,
+26166,7102,
+26170,5047,
+26171,5836,
+26177,6792,
+26178,5705,
+26179,7911,
+26180,7912,
+26185,6985,
+26187,6986,
+26191,5810,
+26201,6908,
+26203,7738,
+26205,6873,
+26206,8046,
+26207,5481,
+26212,6066,
+26213,7890,
+26214,7935,
+26215,7811,
+26216,5743,
+26217,4677,
+26219,7400,
+26222,5062,
+26223,3676,
+26227,5408,
+26228,7198,
+26230,6721,
+26231,3990,
+26232,6722,
+26234,6953,
+26244,7991,
+26247,3447,
+26248,7988,
+26249,8000,
+26254,6006,
+26256,6293,
+26257,5383,
+26262,4140,
+26263,5825,
+26264,5886,
+26269,4752,
+26272,3742,
+26274,7103,
+26283,6528,
+26286,4772,
+26290,6546,
+26291,7795,
+26292,7572,
+26297,5464,
+26299,3677,
+26302,4323,
+26308,5999,
+26310,4459,
+26311,4221,
+26313,7958,
+26326,5845,
+26329,5384,
+26332,6152,
+26333,7573,
+26336,3844,
+26342,8047,
+26352,6125,
+26354,3769,
+26355,6033,
+26356,3678,
+26359,3502,
+26360,5385,
+26361,6794,
+26362,6793,
+26364,4678,
+26366,6933,
+26367,7206,
+26368,7264,
+26371,7936,
+26376,6281,
+26377,6326,
+26379,5176,
+26381,5080,
+26388,5302,
+26389,7031,
+26391,4413,
+26395,4700,
+26397,6795,
+26398,4083,
+26399,4084,
+26406,4798,
+26407,4538,
+26408,4788,
+26410,4857,
+26411,4691,
+26412,5091,
+26413,7080,
+26414,7304,
+26417,6874,
+26420,4891,
+26422,7388,
+26426,3984,
+26429,7975,
+26438,3485,
+26441,5321,
+26446,4620,
+26447,7707,
+26448,6575,
+26449,7249,
+26451,7580,
+26454,6547,
+26460,4350,
+26462,4085,
+26463,5539,
+26477,7677,
+26479,4975,
+26480,3615,
+26481,4337,
+26483,4806,
+26485,6598,
+26487,7480,
+26491,4183,
+26494,5555,
+26495,7492,
+26503,5194,
+26505,6128,
+26507,4953,
+26511,4146,
+26512,5409,
+26515,4351,
+26517,7369,
+26519,4647,
+26522,4713,
+26524,3805,
+26525,6954,
+26543,3743,
+26544,7531,
+26547,6955,
+26550,3448,
+26551,3449,
+26552,3913,
+26558,5706,
+26564,5048,
+26575,4991,
+26576,4773,
+26577,3518,
+26578,7365,
+26579,5990,
+26580,6327,
+26586,6328,
+26589,7401,
+26601,3914,
+26604,3486,
+26607,3450,
+26608,4157,
+26609,6875,
+26611,4579,
+26612,5707,
+26613,7127,
+26614,5268,
+26619,5269,
+26622,6723,
+26642,5645,
+26643,6658,
+26646,5386,
+26647,4602,
+26657,3877,
+26658,4992,
+26666,6876,
+26671,6233,
+26680,7704,
+26681,4028,
+26684,3631,
+26685,6576,
+26688,3616,
+26689,7678,
+26690,3713,
+26691,4285,
+26696,5811,
+26702,7020,
+26704,4338,
+26705,5346,
+26707,7891,
+26708,4130,
+26733,6987,
+26742,7454,
+26751,3487,
+26753,4431,
+26757,4714,
+26767,3770,
+26771,6577,
+26772,7342,
+26775,3679,
+26781,6796,
+26783,7959,
+26785,6110,
+26786,7220,
+26791,6067,
+26792,4621,
+26797,5270,
+26799,6767,
+26800,3714,
+26801,3778,
+26803,5511,
+26805,5011,
+26806,4858,
+26820,4087,
+26821,5049,
+26825,4738,
+26827,4086,
+26829,3779,
+26834,5099,
+26837,6842,
+26839,6797,
+26840,4020,
+26842,5177,
+26847,4339,
+26848,4245,
+26855,6523,
+26856,3715,
+26862,5322,
+26866,5387,
+26873,4286,
+26874,3823,
+26880,6111,
+26885,6401,
+26893,5725,
+26894,7268,
+26898,7221,
+26919,4753,
+26928,5868,
+26941,5964,
+26943,7301,
+26954,5887,
+26963,7592,
+26964,5452,
+26965,7389,
+26967,3607,
+26969,4820,
+26970,7222,
+26974,4608,
+26976,4147,
+26977,6329,
+26978,6330,
+26979,4859,
+26984,6724,
+26987,6928,
+26989,5932,
+26990,6599,
+26991,5646,
+26997,4021,
+26999,7693,
+27000,7269,
+27001,6007,
+27029,6183,
+27035,6988,
+27036,4954,
+27045,7913,
+27047,5195,
+27054,6008,
+27060,4580,
+27067,7426,
+27073,3744,
+27075,4913,
+27083,3915,
+27084,7460,
+27085,7104,
+27088,3862,
+27112,3816,
+27114,3569,
+27131,3998,
+27133,6798,
+27135,4029,
+27138,5800,
+27146,4997,
+27153,4432,
+27155,4567,
+27159,6600,
+27161,7581,
+27166,7270,
+27167,6548,
+27169,4774,
+27171,5888,
+27189,7223,
+27192,4892,
+27193,5585,
+27194,7866,
+27197,6909,
+27204,3519,
+27208,6153,
+27211,3878,
+27218,6239,
+27219,5647,
+27224,4015,
+27225,4366,
+27231,4088,
+27233,5347,
+27243,7951,
+27264,4201,
+27268,3632,
+27273,6725,
+27277,5915,
+27278,4042,
+27287,5024,
+27292,7937,
+27298,3620,
+27299,6549,
+27315,5227,
+27323,7656,
+27330,4287,
+27331,3985,
+27347,4514,
+27354,4448,
+27355,6927,
+27382,7724,
+27387,5858,
+27396,4391,
+27402,3976,
+27404,6550,
+27410,4392,
+27414,4402,
+27424,8027,
+27425,7048,
+27427,8020,
+27442,6169,
+27450,4089,
+27453,8028,
+27454,3824,
+27462,8029,
+27463,7727,
+27468,3451,
+27470,7413,
+27472,3916,
+27487,5937,
+27489,7889,
+27490,6956,
+27491,6726,
+27492,7049,
+27493,5063,
+27494,4821,
+27498,6133,
+27506,5494,
+27511,4460,
+27512,3991,
+27515,5271,
+27519,4795,
+27523,5837,
+27524,6989,
+27526,7436,
+27529,5648,
+27530,5586,
+27542,5726,
+27544,6524,
+27550,6240,
+27566,4485,
+27567,5228,
+27570,5465,
+27573,4202,
+27575,6376,
+27578,5317,
+27580,3470,
+27583,6659,
+27585,7996,
+27589,6402,
+27590,3917,
+27595,4822,
+27597,4775,
+27599,4715,
+27602,4309,
+27603,6356,
+27604,5196,
+27606,5197,
+27607,5198,
+27608,5199,
+27611,4776,
+27627,7812,
+27628,3918,
+27656,6660,
+27663,5774,
+27665,4877,
+27667,4728,
+27683,4090,
+27700,5587,
+27703,5238,
+27704,6009,
+27710,5012,
+27712,6727,
+27713,6929,
+27714,3919,
+27726,5013,
+27728,5410,
+27733,5307,
+27735,7639,
+27738,6068,
+27741,5938,
+27742,7855,
+27743,3545,
+27744,6957,
+27752,3784,
+27754,6129,
+27757,6034,
+27760,7437,
+27762,4055,
+27766,4841,
+27770,3649,
+27773,4091,
+27774,5162,
+27777,5765,
+27778,4092,
+27779,6079,
+27781,6267,
+27782,7679,
+27783,5965,
+27784,7370,
+27788,4324,
+27792,4789,
+27794,4796,
+27795,4234,
+27796,4739,
+27797,4849,
+27798,7308,
+27801,5272,
+27802,6958,
+27803,7506,
+27819,4692,
+27822,6601,
+27827,7622,
+27832,5200,
+27833,6331,
+27835,7343,
+27836,5512,
+27837,3745,
+27838,7179,
+27839,5966,
+27841,7914,
+27842,7776,
+27844,5453,
+27849,7154,
+27850,4893,
+27852,7607,
+27859,7856,
+27861,5018,
+27863,5273,
+27867,5014,
+27873,7556,
+27874,7481,
+27875,6388,
+27877,4187,
+27880,6877,
+27883,7739,
+27886,4914,
+27887,4878,
+27888,7438,
+27891,6010,
+27915,5889,
+27916,4480,
+27921,5064,
+27927,5495,
+27929,5588,
+27931,4382,
+27934,4340,
+27941,6990,
+27943,6332,
+27945,5454,
+27946,7857,
+27954,6878,
+27957,5649,
+27958,8016,
+27960,3845,
+27961,6268,
+27963,7899,
+27965,8032,
+27966,7482,
+27969,4581,
+27993,6687,
+27994,6910,
+27996,5229,
+28003,6112,
+28006,7557,
+28009,7813,
+28010,4414,
+28012,4622,
+28014,5127,
+28020,6170,
+28023,7694,
+28024,7371,
+28025,7764,
+28031,7507,
+28037,5986,
+28039,3680,
+28040,5513,
+28041,5472,
+28044,6184,
+28045,7960,
+28046,5967,
+28049,5540,
+28051,5968,
+28053,7207,
+28079,5846,
+28082,5854,
+28085,7657,
+28096,6728,
+28099,3977,
+28100,7344,
+28101,5411,
+28102,7961,
+28103,4093,
+28107,4648,
+28111,7814,
+28113,5633,
+28120,4288,
+28121,6843,
+28122,4568,
+28126,5556,
+28129,4222,
+28136,6729,
+28138,4597,
+28139,6382,
+28142,7938,
+28145,5766,
+28147,5650,
+28149,5969,
+28151,7846,
+28152,7199,
+28153,5930,
+28154,7155,
+28155,7180,
+28183,5323,
+28185,7892,
+28186,6602,
+28187,3520,
+28191,6730,
+28192,3593,
+28193,4289,
+28195,5274,
+28196,4933,
+28197,5801,
+28198,6099,
+28203,5455,
+28204,7334,
+28205,6294,
+28207,7680,
+28210,5427,
+28212,3503,
+28214,6011,
+28216,6333,
+28218,4807,
+28220,4860,
+28221,6578,
+28222,7847,
+28227,4976,
+28228,4861,
+28234,6879,
+28237,4203,
+28246,7815,
+28248,5348,
+28251,4223,
+28252,5727,
+28254,6731,
+28255,7915,
+28263,6185,
+28267,7271,
+28270,6453,
+28271,7429,
+28274,6269,
+28275,4148,
+28282,5065,
+28304,6270,
+28310,6911,
+28316,4582,
+28317,3920,
+28319,4754,
+28322,6465,
+28325,5128,
+28330,3716,
+28331,6083,
+28335,5514,
+28337,6991,
+28342,6186,
+28346,4189,
+28354,4955,
+28356,7105,
+28357,4746,
+28361,7916,
+28363,6493,
+28364,7142,
+28366,7777,
+28369,7900,
+28371,6579,
+28372,4290,
+28399,7208,
+28404,6625,
+28408,7816,
+28414,3780,
+28415,4679,
+28417,5905,
+28418,7582,
+28422,7366,
+28431,4569,
+28433,3570,
+28436,5970,
+28437,6799,
+28448,4666,
+28450,7640,
+28451,4468,
+28459,4680,
+28460,6959,
+28465,5589,
+28466,7106,
+28472,6695,
+28479,6551,
+28481,6012,
+28497,4934,
+28500,3650,
+28503,7033,
+28504,4915,
+28506,5634,
+28507,6529,
+28510,4515,
+28511,5412,
+28514,7917,
+28516,6362,
+28525,4224,
+28526,6800,
+28528,3986,
+28538,6525,
+28540,4341,
+28541,5066,
+28542,4639,
+28545,5328,
+28548,7040,
+28552,7172,
+28557,6880,
+28558,7514,
+28560,6241,
+28564,7817,
+28567,3488,
+28579,7641,
+28580,7446,
+28583,4507,
+28590,7939,
+28591,7063,
+28593,6661,
+28595,6069,
+28601,4225,
+28606,4213,
+28608,3633,
+28609,7402,
+28610,4486,
+28611,4175,
+28618,6035,
+28629,5677,
+28634,6013,
+28639,6768,
+28640,7818,
+28641,6334,
+28644,4291,
+28649,7819,
+28651,4403,
+28652,6912,
+28655,7403,
+28657,5230,
+28670,4449,
+28673,5890,
+28677,7778,
+28678,4310,
+28681,5275,
+28683,5767,
+28687,4583,
+28689,7574,
+28693,5231,
+28696,4516,
+28698,7642,
+28699,6014,
+28700,6370,
+28701,4461,
+28702,6732,
+28703,5515,
+28707,7695,
+28711,4539,
+28712,4544,
+28719,6015,
+28727,6437,
+28734,4393,
+28748,3825,
+28752,7779,
+28753,5562,
+28760,7414,
+28765,7820,
+28771,4681,
+28779,7867,
+28784,7940,
+28792,3921,
+28796,6514,
+28797,6580,
+28805,3681,
+28810,7321,
+28814,5991,
+28818,7224,
+28824,8021,
+28825,6494,
+28826,3846,
+28833,6733,
+28836,5516,
+28843,7740,
+28844,3594,
+28845,7415,
+28847,7780,
+28851,5050,
+28855,6881,
+28856,6515,
+28857,6696,
+28872,4481,
+28875,8007,
+28879,6070,
+28888,7858,
+28889,4383,
+28893,6935,
+28895,5971,
+28913,3682,
+28921,7515,
+28925,5100,
+28932,7983,
+28937,5920,
+28940,6913,
+28953,4977,
+28954,5163,
+28958,4325,
+28961,4823,
+28966,7225,
+28976,5992,
+28982,5972,
+28999,8001,
+29001,4469,
+29002,7992,
+29004,7918,
+29006,6662,
+29008,6016,
+29014,4141,
+29017,5973,
+29020,6234,
+29022,5318,
+29028,4716,
+29029,7893,
+29030,7976,
+29031,6801,
+29033,4998,
+29036,5891,
+29038,6495,
+29053,5428,
+29060,5728,
+29065,6242,
+29066,6253,
+29071,7984,
+29074,7781,
+29076,6187,
+29081,8048,
+29087,5635,
+29090,5101,
+29100,6071,
+29105,5987,
+29113,8049,
+29114,8050,
+29118,7345,
+29121,6000,
+29123,5974,
+29128,4367,
+29129,4326,
+29134,4556,
+29136,4640,
+29138,5517,
+29140,4999,
+29141,5975,
+29151,6017,
+29157,6802,
+29158,7064,
+29159,5590,
+29165,7243,
+29166,5473,
+29179,7985,
+29180,5744,
+29182,4292,
+29183,6154,
+29184,7731,
+29190,7575,
+29200,4517,
+29211,4394,
+29226,6803,
+29228,7483,
+29229,6587,
+29232,6271,
+29234,6295,
+29237,6516,
+29238,5129,
+29242,5869,
+29243,7962,
+29245,5349,
+29246,6422,
+29248,5350,
+29254,6552,
+29255,7521,
+29256,7493,
+29260,7508,
+29266,7191,
+29272,4311,
+29273,5782,
+29275,6210,
+29277,5232,
+29279,4777,
+29281,4778,
+29282,4545,
+29287,4790,
+29289,4850,
+29298,5369,
+29305,7472,
+29309,3638,
+29312,5388,
+29313,4623,
+29346,4312,
+29351,8051,
+29356,3639,
+29359,5015,
+29376,5351,
+29378,3847,
+29380,6626,
+29390,5831,
+29392,7821,
+29399,3922,
+29401,6603,
+29409,3879,
+29417,5591,
+29432,4624,
+29433,7765,
+29436,4415,
+29437,7509,
+29450,6036,
+29462,7107,
+29467,4729,
+29468,5708,
+29469,6836,
+29477,6138,
+29481,5482,
+29482,6604,
+29483,4808,
+29494,6335,
+29495,6336,
+29502,7901,
+29503,6272,
+29508,6080,
+29509,5276,
+29520,6553,
+29522,6072,
+29527,3980,
+29544,4313,
+29546,7941,
+29552,6018,
+29554,7949,
+29557,4488,
+29560,5592,
+29562,4214,
+29563,7725,
+29572,7741,
+29574,6496,
+29575,5552,
+29577,6081,
+29579,6130,
+29582,6734,
+29588,7156,
+29590,3923,
+29591,6211,
+29592,4094,
+29599,4879,
+29607,6363,
+29609,6113,
+29613,5233,
+29618,4495,
+29619,4260,
+29625,7742,
+29632,4894,
+29634,3452,
+29641,4880,
+29642,5308,
+29644,7608,
+29645,6992,
+29647,3471,
+29654,3848,
+29657,3797,
+29661,7977,
+29662,4384,
+29664,6882,
+29667,5651,
+29668,5067,
+29669,6423,
+29670,7713,
+29673,7782,
+29674,3999,
+29677,4916,
+29687,4824,
+29689,5483,
+29693,6735,
+29694,7743,
+29697,5429,
+29699,3924,
+29701,4416,
+29702,4625,
+29703,5593,
+29705,4584,
+29715,6114,
+29723,7372,
+29728,6663,
+29729,5636,
+29730,7404,
+29733,7822,
+29734,4095,
+29736,3781,
+29738,4096,
+29739,5102,
+29740,6115,
+29742,6844,
+29743,3826,
+29744,5993,
+29747,4649,
+29748,4043,
+29749,5201,
+29750,7484,
+29752,7405,
+29754,5019,
+29759,7848,
+29760,6212,
+29761,4779,
+29763,7302,
+29764,5430,
+29771,6296,
+29781,7623,
+29783,6273,
+29785,4173,
+29786,7823,
+29787,6019,
+29788,6337,
+29790,5389,
+29791,5674,
+29792,4585,
+29794,6188,
+29796,6155,
+29797,6084,
+29800,6993,
+29801,7783,
+29802,4657,
+29807,4417,
+29822,4030,
+29826,4097,
+29827,4626,
+29831,5431,
+29833,4470,
+29835,6554,
+29848,4641,
+29852,7919,
+29854,4895,
+29855,3683,
+29857,6994,
+29859,4098,
+29861,3684,
+29863,5025,
+29864,7065,
+29866,6804,
+29872,7894,
+29874,5594,
+29877,5939,
+29881,5637,
+29885,5363,
+29887,5432,
+29894,7021,
+29898,3685,
+29903,4540,
+29908,6020,
+29912,3827,
+29914,7066,
+29916,3806,
+29920,7824,
+29922,7583,
+29923,7494,
+29926,6100,
+29934,6092,
+29943,6497,
+29953,5051,
+29956,3640,
+29969,6936,
+29973,6093,
+29976,3521,
+29978,5768,
+29979,7181,
+29983,5370,
+29987,5309,
+29989,5371,
+29990,5518,
+29992,6189,
+29995,5068,
+29996,6190,
+30000,6664,
+30001,6338,
+30002,3532,
+30003,5745,
+30007,4149,
+30008,6665,
+30010,6736,
+30023,4011,
+30028,3717,
+30031,6139,
+30033,6666,
+30035,4235,
+30036,4917,
+30041,4586,
+30043,6995,
+30044,7289,
+30045,4825,
+30050,7609,
+30053,4426,
+30054,8008,
+30058,5000,
+30063,6914,
+30064,6424,
+30069,7868,
+30070,4246,
+30072,4099,
+30074,3546,
+30079,4100,
+30086,3547,
+30087,6883,
+30090,7192,
+30091,7610,
+30094,5520,
+30095,5519,
+30097,6403,
+30109,5310,
+30117,3571,
+30123,5951,
+30129,7558,
+30130,7599,
+30131,3522,
+30133,6498,
+30136,4215,
+30137,6996,
+30140,4342,
+30141,6605,
+30142,7022,
+30146,3453,
+30149,5052,
+30151,6937,
+30157,6425,
+30162,5892,
+30164,7346,
+30165,8022,
+30168,4352,
+30169,3686,
+30171,7455,
+30178,4627,
+30192,4226,
+30194,4658,
+30196,7347,
+30202,5202,
+30204,3746,
+30208,5906,
+30221,5893,
+30233,5521,
+30239,6085,
+30240,7143,
+30241,7108,
+30242,4918,
+30244,4587,
+30246,5595,
+30267,4570,
+30274,4557,
+30284,5826,
+30286,3489,
+30290,6339,
+30294,5026,
+30305,7348,
+30308,6688,
+30313,4376,
+30316,5433,
+30320,6094,
+30322,6667,
+30328,3718,
+30331,4368,
+30332,4935,
+30333,4993,
+30334,4994,
+30340,6627,
+30342,3572,
+30343,7920,
+30350,3880,
+30352,3747,
+30355,7825,
+30382,7600,
+30394,7272,
+30399,4755,
+30402,6213,
+30403,4978,
+30406,5164,
+30408,6021,
+30410,6438,
+30418,7665,
+30422,3573,
+30427,5484,
+30428,4293,
+30430,6526,
+30431,4731,
+30433,6997,
+30435,3523,
+30436,4919,
+30439,4518,
+30446,4791,
+30450,4730,
+30452,6975,
+30456,5352,
+30460,4920,
+30462,5652,
+30465,5485,
+30468,4740,
+30472,7421,
+30473,4862,
+30475,3490,
+30494,6998,
+30496,4741,
+30505,7744,
+30519,3978,
+30520,4780,
+30522,6805,
+30524,5812,
+30528,7057,
+30541,7745,
+30555,6737,
+30561,5596,
+30563,4314,
+30566,4792,
+30571,7193,
+30585,4294,
+30590,3748,
+30591,6037,
+30603,6999,
+30609,4756,
+30622,4682,
+30629,5038,
+30636,5653,
+30637,4558,
+30640,3524,
+30643,4343,
+30651,7182,
+30652,3621,
+30655,3925,
+30679,7244,
+30683,4781,
+30684,4060,
+30690,5709,
+30691,6404,
+30693,6960,
+30697,3926,
+30701,4204,
+30702,6134,
+30703,3881,
+30707,5413,
+30722,5277,
+30738,5203,
+30757,6961,
+30758,7120,
+30759,7373,
+30764,4652,
+30770,7559,
+30772,7485,
+30789,4000,
+30799,5976,
+30813,7226,
+30827,4588,
+30828,3687,
+30831,5977,
+30844,5178,
+30849,4101,
+30855,6738,
+30860,4528,
+30861,5847,
+30862,5563,
+30865,5204,
+30871,6116,
+30883,3504,
+30887,5027,
+30889,5414,
+30906,7879,
+30907,7880,
+30908,4659,
+30913,6499,
+30917,4956,
+30922,4546,
+30923,7050,
+30926,3719,
+30928,4921,
+30952,4660,
+30956,3688,
+30959,4102,
+30965,3491,
+30971,4922,
+30977,7227,
+30990,7228,
+30998,5940,
+31018,4450,
+31019,4462,
+31020,4923,
+31034,5710,
+31038,5278,
+31040,5279,
+31041,4103,
+31047,4104,
+31048,4105,
+31049,6962,
+31056,6214,
+31062,6806,
+31063,6963,
+31066,6807,
+31067,3595,
+31068,7826,
+31069,7290,
+31070,5746,
+31072,5280,
+31077,5353,
+31080,7584,
+31085,6769,
+31098,4106,
+31103,4529,
+31105,4044,
+31117,7869,
+31118,6739,
+31119,5081,
+31121,6215,
+31142,5907,
+31143,8052,
+31146,5434,
+31150,4508,
+31153,4295,
+31155,5894,
+31161,6216,
+31165,4045,
+31166,7870,
+31167,4315,
+31168,5597,
+31169,5281,
+31177,5053,
+31178,4162,
+31179,7273,
+31185,3807,
+31186,7229,
+31189,5205,
+31192,5206,
+31199,6808,
+31204,7377,
+31206,7000,
+31207,5838,
+31209,7023,
+31227,6426,
+31232,8053,
+31237,5496,
+31240,3492,
+31243,6740,
+31245,7230,
+31252,6474,
+31255,7510,
+31257,6976,
+31258,7349,
+31260,4609,
+31263,7591,
+31264,6809,
+31278,6845,
+31281,7378,
+31286,6235,
+31287,6977,
+31291,4296,
+31292,3454,
+31293,3720,
+31295,3749,
+31296,3771,
+31302,4793,
+31305,7350,
+31309,6628,
+31310,6022,
+31319,5598,
+31329,5366,
+31330,6038,
+31337,6086,
+31339,7881,
+31344,5895,
+31348,7755,
+31350,3927,
+31353,3965,
+31354,3798,
+31357,6741,
+31359,7157,
+31361,4330,
+31364,7058,
+31368,6156,
+31378,7024,
+31379,7109,
+31381,6810,
+31384,3954,
+31391,3962,
+31401,6101,
+31402,6102,
+31406,3966,
+31407,6157,
+31418,4001,
+31428,7067,
+31429,4002,
+31431,4353,
+31434,6689,
+31435,4653,
+31447,4809,
+31449,7089,
+31453,5054,
+31455,3689,
+31456,6555,
+31459,6915,
+31461,4344,
+31466,5599,
+31469,3505,
+31471,4205,
+31478,3690,
+31481,6900,
+31482,7291,
+31487,3493,
+31503,7852,
+31505,5522,
+31513,5372,
+31515,6629,
+31518,7439,
+31520,4654,
+31526,5130,
+31532,6770,
+31533,4496,
+31545,5497,
+31558,7611,
+31561,4369,
+31563,4031,
+31564,6668,
+31565,5654,
+31567,5006,
+31568,3849,
+31569,7292,
+31570,7456,
+31572,4236,
+31574,7128,
+31584,4012,
+31596,5486,
+31598,5390,
+31605,5978,
+31613,6073,
+31623,3574,
+31627,6669,
+31631,6588,
+31636,4896,
+31637,4107,
+31639,5311,
+31642,7051,
+31645,3656,
+31649,3828,
+31661,6670,
+31665,5354,
+31668,6530,
+31672,6606,
+31680,6690,
+31681,7921,
+31684,5016,
+31686,6671,
+31687,7522,
+31689,7293,
+31698,5729,
+31712,5523,
+31716,4316,
+31721,5282,
+31751,6829,
+31762,7068,
+31774,4206,
+31777,3494,
+31783,7922,
+31786,6531,
+31787,5524,
+31805,7183,
+31806,4487,
+31807,5131,
+31811,4404,
+31820,6884,
+31821,6630,
+31840,4541,
+31844,7184,
+31852,4628,
+31859,4863,
+31875,5207,
+31881,5165,
+31890,4655,
+31893,4897,
+31895,6811,
+31896,6697,
+31903,5541,
+31909,6901,
+31911,6556,
+31918,4433,
+31921,4434,
+31922,7070,
+31923,3582,
+31929,5600,
+31934,6742,
+31946,7827,
+31958,4247,
+31966,5166,
+31967,6812,
+31968,3548,
+31975,4435,
+31995,3721,
+31998,4003,
+32000,4108,
+32002,6885,
+32004,5873,
+32005,7859,
+32006,6217,
+32007,8025,
+32008,7895,
+32010,4842,
+32011,4843,
+32013,4150,
+32016,4184,
+32020,5655,
+32023,5283,
+32024,3865,
+32025,6964,
+32026,4056,
+32027,5167,
+32032,5525,
+32033,4957,
+32034,5367,
+32043,6500,
+32044,6886,
+32046,7081,
+32047,4571,
+32048,5498,
+32051,5747,
+32053,6607,
+32057,5526,
+32058,3525,
+32066,6846,
+32067,7746,
+32068,6813,
+32069,3691,
+32070,4924,
+32080,3651,
+32094,3882,
+32097,4385,
+32098,7747,
+32102,4057,
+32104,6371,
+32106,6454,
+32110,5391,
+32113,7457,
+32114,5284,
+32115,3549,
+32118,6691,
+32121,3641,
+32127,3928,
+32142,6743,
+32143,5601,
+32147,3692,
+32156,6847,
+32160,4530,
+32162,6887,
+32172,5602,
+32173,6340,
+32177,3550,
+32178,4701,
+32180,7173,
+32181,7121,
+32184,4598,
+32186,4109,
+32187,7416,
+32189,6517,
+32190,4610,
+32191,4742,
+32199,7351,
+32202,4126,
+32203,5208,
+32214,5392,
+32216,7658,
+32218,5435,
+32221,7034,
+32222,4207,
+32224,7209,
+32225,4881,
+32227,5979,
+32232,7523,
+32233,6117,
+32236,4743,
+32239,6297,
+32244,4471,
+32251,7352,
+32265,7001,
+32266,5855,
+32277,6087,
+32283,4898,
+32285,7002,
+32286,7828,
+32287,6171,
+32289,6581,
+32291,7748,
+32299,5103,
+32302,7294,
+32303,5980,
+32305,6848,
+32311,4572,
+32317,7257,
+32318,6631,
+32321,5001,
+32323,5179,
+32326,4826,
+32327,6158,
+32338,6938,
+32340,6978,
+32341,5436,
+32350,6159,
+32353,5603,
+32361,5689,
+32362,7942,
+32363,3722,
+32365,3642,
+32368,6814,
+32377,5952,
+32380,3723,
+32386,7069,
+32396,5542,
+32399,6672,
+32403,6023,
+32406,5466,
+32408,7071,
+32411,4317,
+32412,4405,
+32566,5132,
+32568,7681,
+32570,3652,
+32588,5859,
+32592,3829,
+32596,4702,
+32597,7643,
+32618,6859,
+32619,3854,
+32622,7353,
+32624,5007,
+32626,5393,
+32629,4717,
+32631,7486,
+32633,4629,
+32645,4377,
+32648,4110,
+32650,5896,
+32652,3551,
+32654,4864,
+32660,3750,
+32666,4497,
+32670,5604,
+32676,3955,
+32680,5437,
+32681,6405,
+32690,8054,
+32696,4630,
+32697,3583,
+32701,6218,
+32705,6095,
+32709,5711,
+32714,6439,
+32716,6440,
+32718,4498,
+32722,5679,
+32724,5355,
+32725,8033,
+32735,6632,
+32736,7322,
+32737,5209,
+32745,7524,
+32747,6118,
+32752,7644,
+32761,3883,
+32764,6441,
+32768,6160,
+32769,4519,
+32771,3751,
+32773,6501,
+32774,4111,
+32777,3929,
+32780,6427,
+32784,4158,
+32789,3693,
+32791,4782,
+32792,6243,
+32813,4112,
+32819,6428,
+32822,5870,
+32829,7422,
+32831,3694,
+32835,4227,
+32838,4499,
+32842,4559,
+32854,5487,
+32856,5239,
+32858,7323,
+32862,4844,
+32879,4472,
+32880,7258,
+32882,5488,
+32883,6191,
+32887,6979,
+32893,7200,
+32894,4542,
+32895,6368,
+32900,6429,
+32901,5638,
+32902,5285,
+32903,6815,
+32905,6357,
+32907,4605,
+32908,4113,
+32918,7231,
+32923,7682,
+32925,3495,
+32929,3752,
+32930,6965,
+32933,5210,
+32937,3643,
+32938,4958,
+32943,4061,
+32945,3866,
+32946,6358,
+32948,7963,
+32954,7540,
+32963,6298,
+32964,6865,
+32972,4979,
+32974,7440,
+32986,4980,
+32987,3533,
+32990,7560,
+32993,7829,
+32996,6364,
+32997,5394,
+33009,3850,
+33012,4345,
+33016,8017,
+33021,4185,
+33026,6966,
+33029,7766,
+33030,7324,
+33031,7767,
+33032,4722,
+33034,7144,
+33048,6119,
+33050,3472,
+33051,3695,
+33059,5656,
+33065,5605,
+33067,7419,
+33071,7561,
+33081,7110,
+33086,5211,
+33099,5856,
+33102,5748,
+33104,5133,
+33105,5134,
+33108,3552,
+33109,6120,
+33125,5489,
+33126,4179,
+33131,6849,
+33136,6161,
+33137,3608,
+33144,6557,
+33145,5082,
+33146,5438,
+33151,7461,
+33152,4959,
+33160,3634,
+33162,4899,
+33167,3753,
+33178,5135,
+33180,4667,
+33181,5675,
+33184,3884,
+33187,7025,
+33192,7516,
+33203,5439,
+33205,7313,
+33210,6392,
+33213,4228,
+33214,7943,
+33215,4176,
+33216,4359,
+33218,5212,
+33222,5916,
+33229,6771,
+33240,4410,
+33247,6558,
+33251,5749,
+33253,6103,
+33255,6559,
+33256,4650,
+33258,6502,
+33261,7325,
+33267,6967,
+33268,7354,
+33274,4261,
+33275,7003,
+33276,3930,
+33278,6341,
+33285,3931,
+33287,5941,
+33288,8034,
+33290,3932,
+33292,5456,
+33293,5286,
+33298,5395,
+33307,7158,
+33308,5657,
+33310,4827,
+33311,6888,
+33313,3553,
+33322,7683,
+33323,4960,
+33324,4925,
+33333,7390,
+33334,4900,
+33335,7749,
+33337,5440,
+33344,5136,
+33349,5942,
+33351,6744,
+33369,7111,
+33380,6406,
+33382,7659,
+33390,3496,
+33391,4436,
+33393,3497,
+33394,5368,
+33398,5994,
+33400,7232,
+33406,5848,
+33419,6219,
+33421,6518,
+33422,3967,
+33426,4703,
+33433,5137,
+33434,4360,
+33437,6968,
+33439,5324,
+33445,3575,
+33446,7830,
+33449,4046,
+33452,5168,
+33453,7487,
+33454,6039,
+33455,5769,
+33457,7871,
+33459,4961,
+33463,6969,
+33464,6244,
+33465,4032,
+33467,7274,
+33468,4783,
+33469,5783,
+33471,6482,
+33489,6274,
+33490,5995,
+33492,7441,
+33493,7233,
+33495,4810,
+33499,3455,
+33502,7562,
+33503,3933,
+33505,6430,
+33509,5874,
+33510,3754,
+33511,6608,
+33521,6024,
+33533,3755,
+33534,7612,
+33537,6921,
+33538,4828,
+33539,5017,
+33540,3456,
+33541,4784,
+33545,4693,
+33559,4757,
+33576,6503,
+33579,4704,
+33583,5083,
+33585,5606,
+33588,7944,
+33589,6455,
+33590,4191,
+33592,6192,
+33593,5943,
+33600,5658,
+33607,7708,
+33609,7234,
+33610,7784,
+33615,6475,
+33617,6431,
+33618,7923,
+33651,4354,
+33655,7624,
+33659,6633,
+33673,4631,
+33674,6560,
+33678,5287,
+33686,3696,
+33688,5750,
+33694,6121,
+33698,7768,
+33705,5138,
+33706,5784,
+33707,4668,
+33725,4705,
+33729,7201,
+33733,3830,
+33737,4531,
+33738,3949,
+33740,4013,
+33747,3808,
+33750,7112,
+33756,7122,
+33769,5069,
+33771,4033,
+33775,7872,
+33776,3756,
+33777,4611,
+33778,5213,
+33780,5827,
+33785,6609,
+33789,5639,
+33795,7314,
+33796,4297,
+33802,4423,
+33804,4732,
+33805,7532,
+33806,6299,
+33833,7275,
+33836,4683,
+33841,7993,
+33848,6342,
+33853,4386,
+33865,6001,
+33879,6610,
+33883,3506,
+33889,7563,
+33891,4346,
+33894,6300,
+33899,7831,
+33900,6561,
+33903,5875,
+33909,4004,
+33914,6930,
+33936,5607,
+33940,5712,
+33945,4799,
+33948,5312,
+33953,4962,
+33970,7564,
+33976,6939,
+33979,5876,
+33980,7113,
+33983,7832,
+33984,5549,
+33986,4758,
+33988,7295,
+33990,5415,
+33993,6193,
+33995,3576,
+33997,5713,
+34001,5288,
+34010,5608,
+34028,5104,
+34030,4473,
+34036,5659,
+34044,4560,
+34065,4747,
+34067,4684,
+34068,5084,
+34071,6504,
+34072,5325,
+34074,6250,
+34078,4573,
+34081,7123,
+34083,6562,
+34085,7259,
+34092,5527,
+34093,6383,
+34095,7004,
+34109,7541,
+34111,6301,
+34113,4229,
+34115,5002,
+34121,7235,
+34126,3885,
+34131,6245,
+34137,7796,
+34147,5660,
+34152,3981,
+34153,7430,
+34154,4829,
+34157,5528,
+34180,4901,
+34183,4865,
+34191,6407,
+34193,3554,
+34196,6563,
+34203,5457,
+34214,7159,
+34216,7989,
+34217,5319,
+34218,5751,
+34223,5396,
+34224,7986,
+34234,6772,
+34241,3757,
+34249,6505,
+34253,4406,
+34254,5752,
+34255,6564,
+34261,6220,
+34268,4451,
+34269,6040,
+34276,4370,
+34277,5877,
+34281,5003,
+34282,5609,
+34295,6611,
+34298,4642,
+34299,6816,
+34303,3817,
+34306,6041,
+34310,4520,
+34311,5529,
+34314,6088,
+34326,5924,
+34327,5028,
+34330,5441,
+34349,4395,
+34367,4378,
+34382,7833,
+34384,7632,
+34388,3609,
+34389,7133,
+34395,7721,
+34396,4521,
+34398,6221,
+34399,7834,
+34407,8009,
+34425,7860,
+34442,4845,
+34444,4963,
+34451,6456,
+34467,3799,
+34468,6817,
+34473,7355,
+34503,5289,
+34507,4208,
+34516,7945,
+34521,6104,
+34523,6889,
+34527,3886,
+34532,7666,
+34541,7026,
+34558,5785,
+34560,7245,
+34562,5105,
+34563,5753,
+34568,6074,
+34584,6970,
+34586,5214,
+34588,4884,
+34638,3508,
+34645,5730,
+34647,7924,
+34655,6302,
+34662,7625,
+34664,5676,
+34676,7835,
+34678,6703,
+34680,6105,
+34690,4418,
+34701,6372,
+34719,4759,
+34722,7785,
+34739,4248,
+34746,4379,
+34756,7376,
+34784,4926,
+34796,5442,
+34799,6162,
+34802,7309,
+34809,7696,
+34811,6408,
+34814,5467,
+34821,5690,
+34847,4411,
+34850,6916,
+34851,4452,
+34865,3758,
+34870,6532,
+34875,4685,
+34880,7756,
+34886,6924,
+34892,7709,
+34893,5981,
+34898,7750,
+34899,5668,
+34903,3457,
+34905,5786,
+34907,6303,
+34909,7310,
+34913,7786,
+34914,3934,
+34915,6409,
+34920,7585,
+34923,5326,
+34928,5565,
+34930,4151,
+34935,7311,
+34942,4047,
+34943,4048,
+34945,6275,
+34946,4763,
+34952,3458,
+34955,4262,
+34957,7565,
+34962,4209,
+34966,5610,
+34967,7005,
+34974,3782,
+34987,7601,
+34996,3759,
+35009,6582,
+35010,4482,
+35023,4632,
+35028,6042,
+35029,6343,
+35033,3956,
+35036,5070,
+35037,6565,
+35039,5290,
+35041,4633,
+35048,5215,
+35059,5356,
+35060,4981,
+35061,4982,
+35064,4380,
+35069,6773,
+35079,5085,
+35088,3507,
+35090,7566,
+35091,5071,
+35096,6304,
+35097,4983,
+35109,6172,
+35114,7462,
+35126,5680,
+35128,4574,
+35131,5458,
+35137,3555,
+35140,5897,
+35167,4049,
+35172,4407,
+35178,4694,
+35186,5681,
+35199,5397,
+35201,6163,
+35203,4230,
+35206,5086,
+35207,7511,
+35211,3644,
+35215,4005,
+35219,4734,
+35222,5714,
+35233,3635,
+35241,4298,
+35242,7363,
+35250,4034,
+35258,3473,
+35261,4408,
+35264,3831,
+35282,3474,
+35299,7697,
+35316,5357,
+35320,7246,
+35328,5921,
+35330,6745,
+35331,5139,
+35336,3724,
+35338,5754,
+35340,7861,
+35342,7452,
+35347,7987,
+35350,8026,
+35351,7406,
+35352,4114,
+35355,6106,
+35357,5787,
+35359,5557,
+35363,3653,
+35365,4182,
+35370,4964,
+35373,5459,
+35377,7722,
+35380,5530,
+35382,3459,
+35386,7006,
+35387,6890,
+35408,5291,
+35412,6818,
+35413,7533,
+35419,6612,
+35422,5292,
+35424,6025,
+35426,5661,
+35427,6043,
+35430,5715,
+35433,5716,
+35437,3987,
+35438,6673,
+35440,8055,
+35441,7873,
+35442,7698,
+35443,5358,
+35445,5443,
+35449,7185,
+35461,6891,
+35463,3809,
+35468,6971,
+35469,6457,
+35475,5398,
+35477,7417,
+35480,6344,
+35486,5908,
+35488,5490,
+35489,3725,
+35491,4830,
+35492,6075,
+35493,3760,
+35494,5558,
+35496,7946,
+35498,5460,
+35504,5611,
+35506,3810,
+35513,5216,
+35516,6410,
+35518,6377,
+35519,6819,
+35522,7186,
+35524,5662,
+35527,4231,
+35531,7202,
+35533,6589,
+35535,7276,
+35538,4437,
+35542,4535,
+35547,6345,
+35548,7194,
+35553,5717,
+35558,7210,
+35559,7699,
+35562,6746,
+35563,3498,
+35565,6346,
+35566,6506,
+35569,8002,
+35574,5770,
+35575,7593,
+35576,6774,
+35578,5922,
+35582,4139,
+35584,4785,
+35585,5818,
+35586,6305,
+35588,4371,
+35598,4866,
+35600,4885,
+35604,7633,
+35606,5543,
+35607,4965,
+35609,3657,
+35610,6442,
+35611,3556,
+35613,5293,
+35616,6164,
+35624,4786,
+35627,6634,
+35628,4589,
+35635,3935,
+35641,4035,
+35649,7874,
+35657,6940,
+35662,8011,
+35663,4115,
+35672,5731,
+35674,4232,
+35676,5072,
+35686,3697,
+35692,5217,
+35695,5953,
+35696,6411,
+35700,3645,
+35703,7836,
+35709,6044,
+35712,4318,
+35722,5033,
+35728,5612,
+35730,7090,
+35731,5898,
+35734,7091,
+35738,7072,
+35895,3772,
+35903,3726,
+35905,7902,
+35910,4355,
+35912,4116,
+35914,7594,
+35916,6122,
+35925,5718,
+35930,4327,
+35937,5359,
+35946,7837,
+35947,6045,
+35961,7586,
+35962,5719,
+35970,7236,
+35978,4723,
+35980,4787,
+35997,7512,
+35998,6747,
+36000,5140,
+36001,6583,
+36002,3800,
+36007,5234,
+36008,7875,
+36009,7495,
+36010,7423,
+36011,3832,
+36012,7129,
+36015,6613,
+36016,5499,
+36019,6433,
+36020,3992,
+36022,7528,
+36023,4718,
+36024,4263,
+36027,5218,
+36028,7195,
+36029,6432,
+36031,4831,
+36032,7626,
+36033,5169,
+36034,4547,
+36035,6476,
+36036,7947,
+36039,6507,
+36040,3460,
+36042,6635,
+36049,7007,
+36051,5235,
+36058,4548,
+36060,5294,
+36062,5360,
+36064,4984,
+36066,7751,
+36067,4719,
+36068,7160,
+36070,5141,
+36074,7027,
+36077,4299,
+36084,4549,
+36091,5142,
+36092,3936,
+36093,5364,
+36100,6972,
+36101,7315,
+36103,6365,
+36104,6941,
+36106,7073,
+36109,5468,
+36115,6566,
+36118,5544,
+36196,6636,
+36198,5295,
+36203,7732,
+36208,6892,
+36211,4006,
+36212,5143,
+36215,4117,
+36229,7237,
+36234,6282,
+36249,6820,
+36259,7326,
+36264,7277,
+36275,6830,
+36282,5144,
+36286,6973,
+36294,7442,
+36299,4936,
+36300,7028,
+36303,3461,
+36315,7488,
+36317,3596,
+36321,6637,
+36323,5444,
+36328,3811,
+36335,4522,
+36339,4300,
+36362,6194,
+36367,4237,
+36368,7161,
+36382,3597,
+36394,6850,
+36400,6347,
+36405,6851,
+36418,6348,
+36420,6775,
+36423,3610,
+36424,4301,
+36425,7052,
+36426,7797,
+36441,7296,
+36447,6638,
+36448,7145,
+36468,7297,
+36470,3982,
+36481,6821,
+36487,6614,
+36490,6893,
+36493,5878,
+36522,4643,
+36523,5755,
+36524,3968,
+36544,3937,
+36554,7053,
+36555,5819,
+36556,3988,
+36557,3957,
+36562,7726,
+36575,5982,
+36587,7008,
+36600,7298,
+36603,3462,
+36606,5732,
+36611,3887,
+36613,4523,
+36617,6584,
+36626,7196,
+36627,4686,
+36628,5073,
+36629,3698,
+36635,4438,
+36636,7356,
+36637,8003,
+36638,4706,
+36639,7174,
+36646,4474,
+36647,5055,
+36649,4985,
+36650,4599,
+36655,7035,
+36659,6894,
+36664,5613,
+36665,5087,
+36667,5088,
+36670,6674,
+36671,5944,
+36676,7650,
+36677,6276,
+36681,6675,
+36685,7175,
+36686,3888,
+36701,5945,
+36703,3867,
+36706,4463,
+36763,5756,
+36764,3761,
+36771,4398,
+36774,7496,
+36776,5034,
+36781,5296,
+36783,5035,
+36784,7009,
+36785,6173,
+36786,4177,
+36802,6222,
+36805,5757,
+36814,6026,
+36817,4036,
+36820,4927,
+36838,3463,
+36842,6639,
+36843,4902,
+36845,7029,
+36848,5669,
+36850,3626,
+36855,4867,
+36857,6640,
+36861,7278,
+36864,7463,
+36865,5559,
+36866,3838,
+36867,4302,
+36869,7978,
+36870,5954,
+36872,7787,
+36875,7567,
+36877,5531,
+36879,7469,
+36880,7299,
+36881,3938,
+36884,4303,
+36885,3699,
+36887,4356,
+36889,6615,
+36890,7458,
+36893,5399,
+36894,4500,
+36895,5545,
+36896,6822,
+36897,6917,
+36898,5106,
+36899,4475,
+36910,7211,
+36913,6895,
+36914,7010,
+36917,4007,
+36920,6466,
+36924,7615,
+36926,6350,
+36929,4361,
+36930,5614,
+36935,6223,
+36938,6349,
+36939,6246,
+36941,7525,
+36942,3812,
+36944,7627,
+36945,7925,
+36947,4304,
+36948,4216,
+36949,6306,
+36953,6165,
+36956,5550,
+36957,4238,
+36958,7212,
+36960,6277,
+36961,5532,
+36963,3646,
+36969,6641,
+36973,6823,
+36974,7054,
+36975,4362,
+36978,6974,
+36981,6918,
+36983,7162,
+36984,5445,
+36986,6351,
+36988,4561,
+36989,3598,
+36991,7602,
+36992,6166,
+36993,4720,
+36994,7700,
+36995,5615,
+36996,7896,
+36999,6434,
+37000,4669,
+37002,5036,
+37007,4381,
+37009,6389,
+37013,6096,
+37017,4707,
+37026,7788,
+37027,4138,
+37030,4966,
+37032,7250,
+37034,5297,
+37039,3526,
+37040,7443,
+37041,3939,
+37045,5533,
+37048,6616,
+37057,6236,
+37066,3889,
+37086,4419,
+37089,3958,
+37096,5145,
+37101,3818,
+37109,6224,
+37117,4305,
+37122,5802,
+37138,7279,
+37141,7714,
+37145,5219,
+37159,4372,
+37165,6748,
+37170,4210,
+37193,6352,
+37194,6749,
+37195,7280,
+37196,6519,
+37197,4986,
+37198,6896,
+37202,6897,
+37218,7238,
+37225,4760,
+37226,4387,
+37228,5616,
+37237,7964,
+37239,7843,
+37240,5313,
+37255,5663,
+37257,7327,
+37259,7239,
+37261,6776,
+37266,5491,
+37276,7281,
+37291,6412,
+37292,6567,
+37294,7240,
+37295,7798,
+37297,4937,
+37300,4509,
+37301,3584,
+37312,5899,
+37319,7124,
+37321,6353,
+37323,5416,
+37324,4634,
+37325,6925,
+37326,5871,
+37327,4439,
+37328,4635,
+37329,4131,
+37335,5566,
+37336,6750,
+37340,5146,
+37341,7374,
+37347,6824,
+37351,7163,
+37354,6225,
+37365,7125,
+37389,4363,
+37392,3622,
+37393,7497,
+37394,5329,
+37399,6366,
+37406,4014,
+37428,4501,
+37434,6082,
+37439,6676,
+37440,3534,
+37445,3599,
+37449,7752,
+37463,3658,
+37467,5983,
+37470,6283,
+37474,4938,
+37476,3940,
+37477,5670,
+37478,6751,
+37504,6378,
+37507,7260,
+37509,4347,
+37521,5446,
+37523,6677,
+37526,5617,
+37528,4761,
+37532,7660,
+37555,6046,
+37558,3941,
+37559,5534,
+37561,5618,
+37580,6752,
+37583,7769,
+37586,5107,
+37604,5400,
+37610,7568,
+37624,3600,
+37628,3557,
+37636,4532,
+37648,7282,
+37656,7283,
+37658,6590,
+37662,5664,
+37663,4233,
+37664,6753,
+37665,4118,
+37666,6678,
+37668,4119,
+37670,4050,
+37672,4811,
+37675,5417,
+37678,3762,
+37679,7059,
+37704,6027,
+37706,4476,
+37707,3813,
+37709,4306,
+37716,5803,
+37723,4211,
+37742,6354,
+37749,3611,
+37756,7375,
+37758,6852,
+37772,3659,
+37780,6195,
+37782,5564,
+37786,7284,
+37795,7789,
+37799,3577,
+37804,7838,
+37805,7011,
+37808,6467,
+37827,6831,
+37841,6642,
+37854,6196,
+37857,3700,
+37860,4575,
+37878,7036,
+37892,7952,
+37912,6853,
+37925,5447,
+37931,6679,
+37941,7176,
+37944,7407,
+37956,6898,
+37969,3527,
+37970,3528,
+37979,3851,
+38013,7074,
+38015,7060,
+38263,6568,
+38272,4846,
+38275,5469,
+38281,7542,
+38283,3578,
+38287,6367,
+38289,7645,
+38290,7646,
+38291,3499,
+38292,4882,
+38296,3535,
+38307,3475,
+38308,7667,
+38309,5008,
+38312,4008,
+38317,4453,
+38321,5988,
+38331,5996,
+38332,5820,
+38343,5828,
+38346,7903,
+38356,7668,
+38357,3983,
+38358,7473,
+38364,3833,
+38369,7164,
+38370,5029,
+38428,5147,
+38433,7165,
+38442,7498,
+38446,6123,
+38450,4967,
+38459,6825,
+38463,5788,
+38464,7391,
+38466,7603,
+38468,5148,
+38475,4576,
+38476,4724,
+38477,3558,
+38480,7647,
+38491,7543,
+38492,7669,
+38493,5470,
+38494,5691,
+38495,7146,
+38498,6278,
+38499,7012,
+38500,6777,
+38506,4987,
+38512,6384,
+38515,7013,
+38517,4612,
+38518,4307,
+38519,7661,
+38520,4593,
+38525,5900,
+38533,6226,
+38534,4603,
+38538,4264,
+38539,5619,
+38541,7926,
+38542,3727,
+38548,3636,
+38549,6247,
+38552,5849,
+38553,4022,
+38555,6778,
+38556,6569,
+38563,4644,
+38567,5620,
+38568,5621,
+38570,7728,
+38577,6379,
+38583,4510,
+38587,7147,
+38592,6520,
+38593,5813,
+38596,6254,
+38597,5789,
+38598,7037,
+38599,3763,
+38601,7357,
+38603,6919,
+38604,6508,
+38605,6097,
+38606,6617,
+38613,6826,
+38614,5622,
+38617,5773,
+38619,7285,
+38620,6533,
+38626,4636,
+38627,4142,
+38632,6227,
+38633,6228,
+38634,5461,
+38639,4847,
+38640,5170,
+38642,6248,
+38646,4502,
+38647,4550,
+38649,4903,
+38651,6680,
+38656,5623,
+38662,6754,
+38663,7014,
+38673,6698,
+38675,6047,
+38678,4651,
+38681,6028,
+38684,5361,
+38686,7628,
+38695,4832,
+38704,5314,
+38706,4524,
+38713,5030,
+38717,6779,
+38722,4464,
+38724,5850,
+38728,4503,
+38737,7203,
+38742,6755,
+38748,6756,
+38750,5220,
+38753,4868,
+38754,4744,
+38761,7733,
+38765,6458,
+38772,7876,
+38775,6459,
+38778,4695,
+38795,7799,
+38797,5814,
+38799,3801,
+38816,3950,
+38824,3509,
+38827,3951,
+38829,7526,
+38854,7166,
+38859,6307,
+38867,7648,
+38876,4308,
+38899,6385,
+38902,5535,
+38907,6249,
+38911,7715,
+38912,7839,
+38913,7757,
+38914,6757,
+38915,3701,
+38917,7684,
+38918,5665,
+38920,5624,
+38922,6237,
+38924,5560,
+38928,6048,
+38929,6124,
+38930,4928,
+38931,4328,
+38935,7489,
+38936,4504,
+38957,4357,
+38960,7770,
+38968,3702,
+38969,7464,
+38971,5236,
+38982,3814,
+38988,6780,
+38989,5857,
+38990,5804,
+38996,5815,
+39000,6279,
+39002,6681,
+39006,4590,
+39013,7840,
+39015,3764,
+39019,6682,
+39023,7753,
+39080,7595,
+39087,5330,
+39089,7444,
+39108,7588,
+39111,7587,
+39131,5221,
+39132,5004,
+39135,5733,
+39137,5551,
+39138,4120,
+39149,7362,
+39150,6386,
+39151,4929,
+39156,6435,
+39164,5298,
+39165,7569,
+39166,5734,
+39171,3890,
+39177,7716,
+39178,5901,
+39180,6436,
+39184,7075,
+39187,5790,
+39192,5946,
+39198,6683,
+39200,5056,
+39208,3834,
+39237,4687,
+39241,4037,
+39243,3989,
+39244,7076,
+39245,5448,
+39249,4121,
+39250,6167,
+39252,6098,
+39255,7717,
+39318,5625,
+39321,7718,
+39325,7613,
+39333,5089,
+39336,7790,
+39340,4661,
+39341,5909,
+39342,7596,
+39345,7392,
+39347,7358,
+39348,5666,
+39353,6468,
+39361,4904,
+39376,6899,
+39377,4174,
+39378,3942,
+39381,3464,
+39385,5149,
+39389,7393,
+39391,5299,
+39405,7701,
+39409,4388,
+39423,6920,
+39425,5240,
+39432,5057,
+39438,4122,
+39439,4123,
+39449,7527,
+39467,3612,
+39472,4373,
+39478,7286,
+39479,5536,
+39488,4725,
+39491,7589,
+39493,3943,
+39501,7965,
+39509,3891,
+39511,7729,
+39514,3703,
+39515,5955,
+39519,7328,
+39522,4454,
+39525,4124,
+39529,7897,
+39530,4455,
+39592,3785,
+39608,7702,
+39635,5626,
+39636,7213,
+39640,3765,
+39653,5997,
+39662,4939,
+39706,5627,
+39719,4562,
+39722,7470,
+39729,6251,
+39740,3993,
+39745,3863,
+39746,7849,
+39747,4940,
+39748,4995,
+39749,4721,
+39759,6308,
+39764,4662,
+39770,5910,
+39791,4525,
+39822,6699,
+39825,7570,
+39839,5816,
+39851,3892,
+39854,5449,
+39881,4637,
+39894,7204,
+39908,3783,
+39912,3704,
+39949,7287,
+39952,5805,
+39954,5090,
+39957,7629,
+39973,7898,
+39986,6076,
+39995,4688,
+40007,3559,
+40009,5039,
+40023,4645,
+40165,6827,
+40167,5150,
+40169,3944,
+40179,5108,
+40180,4762,
+40182,5984,
+40201,5791,
+40219,6280,
+40230,5839,
+40232,5832,
+40251,7862,
+40273,3647,
+40285,5792,
+40288,3773,
+40289,4833,
+40300,5180,
+40306,6521,
+40361,4794,
+40367,5860,
+40372,7634,
+40388,3728,
+40407,3945,
+40434,7329,
+40440,8012,
+40441,6393,
+40442,4526,
+40474,5861,
+40478,4396,
+40565,4527,
+40569,7662,
+40573,5998,
+40575,4533,
+40594,4125,
+40595,4534,
+40599,4456,
+40605,5300,
+40607,4646,
+40613,4726,
+40628,3952,
+40629,4745,
+40635,4663,
+40638,8004,
+40643,7927,
+40653,5401,
+40654,4457,
+40657,8018,
+40660,3623,
+40664,4835,
+40667,4265,
+40668,7305,
+40670,6700,
+40680,4249,
+40692,4869,
+40711,6077,
+40712,5040,
+40718,6758,
+40723,3766,
+40736,5402,
+40763,5222,
+40778,6781,
+40779,6585,
+40782,6586,
+40786,7359,
+40799,6618,
+40801,4505,
+40807,5462,
+40810,7061,
+40812,5911,
+40823,5806,
+40845,4563,
+40848,4968,
+40853,3529,
+40860,3946,
+44032,1086,
+44033,1087,
+44034,9333,
+44035,9334,
+44036,1088,
+44037,9335,
+44038,9336,
+44039,1089,
+44040,1090,
+44041,1091,
+44042,1092,
+44043,9337,
+44044,9338,
+44045,9339,
+44046,9340,
+44047,9341,
+44048,1093,
+44049,1094,
+44050,1095,
+44051,1096,
+44052,1097,
+44053,1098,
+44054,1099,
+44055,1100,
+44056,9342,
+44057,1101,
+44058,1102,
+44059,1103,
+44060,1104,
+44061,1105,
+44062,9343,
+44063,9344,
+44064,1106,
+44065,9345,
+44066,9346,
+44067,9347,
+44068,1107,
+44069,9348,
+44070,9349,
+44071,9350,
+44072,9351,
+44073,9352,
+44074,9353,
+44075,9354,
+44076,1108,
+44077,1109,
+44078,9355,
+44079,1110,
+44080,1111,
+44081,1112,
+44082,9356,
+44083,9357,
+44084,9358,
+44085,9359,
+44086,9360,
+44087,9361,
+44088,1113,
+44089,1114,
+44090,9362,
+44091,9363,
+44092,1115,
+44093,9364,
+44094,9365,
+44095,9366,
+44096,1116,
+44097,9367,
+44098,9368,
+44099,9369,
+44100,9370,
+44101,9371,
+44102,9372,
+44103,9373,
+44104,9374,
+44105,9375,
+44106,9376,
+44107,1117,
+44108,9377,
+44109,1118,
+44110,9378,
+44111,9379,
+44112,9380,
+44113,9381,
+44114,9382,
+44115,9383,
+44116,1119,
+44117,9384,
+44118,9385,
+44119,9386,
+44120,1120,
+44121,9387,
+44122,9388,
+44123,9389,
+44124,1121,
+44125,9390,
+44126,9391,
+44127,9392,
+44128,9393,
+44129,9394,
+44130,9395,
+44131,9396,
+44132,9397,
+44133,9398,
+44134,9399,
+44135,9400,
+44136,9401,
+44137,9402,
+44138,9403,
+44139,9404,
+44140,9405,
+44141,9406,
+44142,9407,
+44143,9408,
+44144,1122,
+44145,1123,
+44146,9409,
+44147,9410,
+44148,1124,
+44149,9411,
+44150,9412,
+44151,1125,
+44152,1126,
+44153,9413,
+44154,1127,
+44155,9414,
+44156,9415,
+44157,9416,
+44158,9417,
+44159,9418,
+44160,1128,
+44161,1129,
+44162,9419,
+44163,1130,
+44164,1131,
+44165,1132,
+44166,1133,
+44167,9420,
+44168,9421,
+44169,1134,
+44170,1135,
+44171,1136,
+44172,1137,
+44173,9422,
+44174,9423,
+44175,9424,
+44176,1138,
+44177,9425,
+44178,9426,
+44179,9427,
+44180,1139,
+44181,9428,
+44182,9429,
+44183,9430,
+44184,9431,
+44185,9432,
+44186,9433,
+44187,9434,
+44188,1140,
+44189,1141,
+44190,9435,
+44191,1142,
+44192,1143,
+44193,1144,
+44194,9436,
+44195,9437,
+44196,9438,
+44197,9439,
+44198,9440,
+44199,9441,
+44200,1145,
+44201,1146,
+44202,1147,
+44203,9442,
+44204,1148,
+44205,9443,
+44206,9444,
+44207,1149,
+44208,1150,
+44209,9445,
+44210,9446,
+44211,9447,
+44212,9448,
+44213,9449,
+44214,9450,
+44215,9451,
+44216,1151,
+44217,1152,
+44218,9452,
+44219,1153,
+44220,1154,
+44221,1155,
+44222,9453,
+44223,9454,
+44224,9455,
+44225,1156,
+44226,9456,
+44227,9457,
+44228,1157,
+44229,9458,
+44230,9459,
+44231,9460,
+44232,1158,
+44233,9461,
+44234,9462,
+44235,9463,
+44236,1159,
+44237,9464,
+44238,9465,
+44239,9466,
+44240,9467,
+44241,9468,
+44242,9469,
+44243,9470,
+44244,9471,
+44245,1160,
+44246,9472,
+44247,1161,
+44248,9473,
+44249,9474,
+44250,9475,
+44251,9476,
+44252,9477,
+44253,9478,
+44254,9479,
+44255,9480,
+44256,1162,
+44257,1163,
+44258,9481,
+44259,9482,
+44260,1164,
+44261,9483,
+44262,9484,
+44263,1165,
+44264,1166,
+44265,9485,
+44266,1167,
+44267,9486,
+44268,1168,
+44269,9487,
+44270,9488,
+44271,1169,
+44272,1170,
+44273,1171,
+44274,9489,
+44275,1172,
+44276,9490,
+44277,1173,
+44278,1174,
+44279,9491,
+44280,9492,
+44281,9493,
+44282,9494,
+44283,9495,
+44284,1175,
+44285,1176,
+44286,9496,
+44287,9497,
+44288,1177,
+44289,9498,
+44290,9499,
+44291,9500,
+44292,1178,
+44293,9501,
+44294,1179,
+44295,9502,
+44296,9503,
+44297,9504,
+44298,9505,
+44299,9506,
+44300,1180,
+44301,1181,
+44302,9507,
+44303,1182,
+44304,9508,
+44305,1183,
+44306,9509,
+44307,9510,
+44308,9511,
+44309,9512,
+44310,9513,
+44311,9514,
+44312,1184,
+44313,9515,
+44314,9516,
+44315,9517,
+44316,1185,
+44317,9518,
+44318,9519,
+44319,9520,
+44320,1186,
+44321,9521,
+44322,9522,
+44323,9523,
+44324,9524,
+44325,9525,
+44326,9526,
+44327,9527,
+44328,9528,
+44329,1187,
+44330,9529,
+44331,9530,
+44332,1188,
+44333,1189,
+44334,9531,
+44335,9532,
+44336,9533,
+44337,9534,
+44338,9535,
+44339,9536,
+44340,1190,
+44341,1191,
+44342,9537,
+44343,9538,
+44344,1192,
+44345,9539,
+44346,9540,
+44347,9541,
+44348,1193,
+44349,9542,
+44350,9543,
+44351,9544,
+44352,9545,
+44353,9546,
+44354,9547,
+44355,9548,
+44356,1194,
+44357,1195,
+44358,9549,
+44359,1196,
+44360,9550,
+44361,1197,
+44362,9551,
+44363,9552,
+44364,9553,
+44365,9554,
+44366,9555,
+44367,9556,
+44368,1198,
+44369,9557,
+44370,9558,
+44371,9559,
+44372,1199,
+44373,9560,
+44374,9561,
+44375,9562,
+44376,1200,
+44377,9563,
+44378,9564,
+44379,9565,
+44380,9566,
+44381,9567,
+44382,9568,
+44383,9569,
+44384,9570,
+44385,1201,
+44386,9571,
+44387,1202,
+44388,9572,
+44389,9573,
+44390,9574,
+44391,9575,
+44392,9576,
+44393,9577,
+44394,9578,
+44395,9579,
+44396,1203,
+44397,1204,
+44398,9580,
+44399,9581,
+44400,1205,
+44401,9582,
+44402,9583,
+44403,1206,
+44404,1207,
+44405,1208,
+44406,1209,
+44407,9584,
+44408,9585,
+44409,9586,
+44410,9587,
+44411,1210,
+44412,1211,
+44413,1212,
+44414,9588,
+44415,1213,
+44416,9589,
+44417,1214,
+44418,1215,
+44419,9590,
+44420,9591,
+44421,9592,
+44422,9593,
+44423,9594,
+44424,1216,
+44425,1217,
+44426,9595,
+44427,9596,
+44428,1218,
+44429,9597,
+44430,9598,
+44431,9599,
+44432,1219,
+44433,9600,
+44434,9601,
+44435,9602,
+44436,9603,
+44437,9604,
+44438,9605,
+44439,9606,
+44440,9607,
+44441,9608,
+44442,9609,
+44443,9610,
+44444,1220,
+44445,1221,
+44446,9611,
+44447,9612,
+44448,9613,
+44449,9614,
+44450,9615,
+44451,9616,
+44452,1222,
+44453,9617,
+44454,9618,
+44455,9619,
+44456,9620,
+44457,9621,
+44458,9622,
+44459,9623,
+44460,9624,
+44461,9625,
+44462,9626,
+44463,9627,
+44464,9628,
+44465,9629,
+44466,9630,
+44467,9631,
+44468,9632,
+44469,9633,
+44470,9634,
+44471,1223,
+44472,9635,
+44473,9636,
+44474,9637,
+44475,9638,
+44476,9639,
+44477,9640,
+44478,9641,
+44479,9642,
+44480,1224,
+44481,1225,
+44482,9643,
+44483,9644,
+44484,1226,
+44485,9645,
+44486,9646,
+44487,9647,
+44488,1227,
+44489,9648,
+44490,9649,
+44491,9650,
+44492,9651,
+44493,9652,
+44494,9653,
+44495,9654,
+44496,1228,
+44497,1229,
+44498,9655,
+44499,1230,
+44500,9656,
+44501,9657,
+44502,9658,
+44503,9659,
+44504,9660,
+44505,9661,
+44506,9662,
+44507,9663,
+44508,1231,
+44509,9664,
+44510,9665,
+44511,9666,
+44512,1232,
+44513,9667,
+44514,9668,
+44515,9669,
+44516,1233,
+44517,9670,
+44518,9671,
+44519,9672,
+44520,9673,
+44521,9674,
+44522,9675,
+44523,9676,
+44524,9677,
+44525,9678,
+44526,9679,
+44527,9680,
+44528,9681,
+44529,9682,
+44530,9683,
+44531,9684,
+44532,9685,
+44533,9686,
+44534,9687,
+44535,9688,
+44536,1234,
+44537,1235,
+44538,9689,
+44539,9690,
+44540,1236,
+44541,9691,
+44542,9692,
+44543,1237,
+44544,1238,
+44545,1239,
+44546,9693,
+44547,9694,
+44548,9695,
+44549,9696,
+44550,9697,
+44551,9698,
+44552,1240,
+44553,1241,
+44554,9699,
+44555,1242,
+44556,9700,
+44557,1243,
+44558,9701,
+44559,9702,
+44560,9703,
+44561,9704,
+44562,9705,
+44563,9706,
+44564,1244,
+44565,9707,
+44566,9708,
+44567,9709,
+44568,9710,
+44569,9711,
+44570,9712,
+44571,9713,
+44572,9714,
+44573,9715,
+44574,9716,
+44575,9717,
+44576,9718,
+44577,9719,
+44578,9720,
+44579,9721,
+44580,9722,
+44581,9723,
+44582,9724,
+44583,9725,
+44584,9726,
+44585,9727,
+44586,9728,
+44587,9729,
+44588,9730,
+44589,9731,
+44590,9732,
+44591,9733,
+44592,1245,
+44593,1246,
+44594,9734,
+44595,9735,
+44596,1247,
+44597,9736,
+44598,9737,
+44599,1248,
+44600,1249,
+44601,9738,
+44602,1250,
+44603,9739,
+44604,9740,
+44605,9741,
+44606,9742,
+44607,9743,
+44608,1251,
+44609,1252,
+44610,9744,
+44611,1253,
+44612,9745,
+44613,1254,
+44614,1255,
+44615,9746,
+44616,9747,
+44617,9748,
+44618,1256,
+44619,9749,
+44620,1257,
+44621,1258,
+44622,1259,
+44623,9750,
+44624,1260,
+44625,9751,
+44626,9752,
+44627,9753,
+44628,1261,
+44629,9754,
+44630,1262,
+44631,9755,
+44632,9756,
+44633,9757,
+44634,9758,
+44635,9759,
+44636,1263,
+44637,1264,
+44638,9760,
+44639,1265,
+44640,1266,
+44641,1267,
+44642,9761,
+44643,9762,
+44644,9763,
+44645,1268,
+44646,9764,
+44647,9765,
+44648,1269,
+44649,1270,
+44650,9766,
+44651,9767,
+44652,1271,
+44653,9768,
+44654,9769,
+44655,9770,
+44656,1272,
+44657,9771,
+44658,9772,
+44659,9773,
+44660,9774,
+44661,9775,
+44662,9776,
+44663,9777,
+44664,1273,
+44665,1274,
+44666,9778,
+44667,1275,
+44668,1276,
+44669,1277,
+44670,9779,
+44671,9780,
+44672,9781,
+44673,9782,
+44674,9783,
+44675,9784,
+44676,1278,
+44677,1279,
+44678,9785,
+44679,9786,
+44680,9787,
+44681,9788,
+44682,9789,
+44683,9790,
+44684,1280,
+44685,9791,
+44686,9792,
+44687,9793,
+44688,9794,
+44689,9795,
+44690,9796,
+44691,9797,
+44692,9798,
+44693,9799,
+44694,9800,
+44695,9801,
+44696,9802,
+44697,9803,
+44698,9804,
+44699,9805,
+44700,9806,
+44701,9807,
+44702,9808,
+44703,9809,
+44704,9810,
+44705,9811,
+44706,9812,
+44707,9813,
+44708,9814,
+44709,9815,
+44710,9816,
+44711,9817,
+44712,9818,
+44713,9819,
+44714,9820,
+44715,9821,
+44716,9822,
+44717,9823,
+44718,9824,
+44719,9825,
+44720,9826,
+44721,9827,
+44722,9828,
+44723,9829,
+44724,9830,
+44725,9831,
+44726,9832,
+44727,9833,
+44728,9834,
+44729,9835,
+44730,9836,
+44731,9837,
+44732,1281,
+44733,1282,
+44734,1283,
+44735,9838,
+44736,1284,
+44737,9839,
+44738,9840,
+44739,9841,
+44740,1285,
+44741,9842,
+44742,9843,
+44743,9844,
+44744,9845,
+44745,9846,
+44746,9847,
+44747,9848,
+44748,1286,
+44749,1287,
+44750,9849,
+44751,1288,
+44752,1289,
+44753,1290,
+44754,9850,
+44755,9851,
+44756,9852,
+44757,9853,
+44758,9854,
+44759,9855,
+44760,1291,
+44761,1292,
+44762,9856,
+44763,9857,
+44764,1293,
+44765,9858,
+44766,9859,
+44767,9860,
+44768,9861,
+44769,9862,
+44770,9863,
+44771,9864,
+44772,9865,
+44773,9866,
+44774,9867,
+44775,9868,
+44776,1294,
+44777,9869,
+44778,9870,
+44779,1295,
+44780,9871,
+44781,1296,
+44782,9872,
+44783,9873,
+44784,9874,
+44785,9875,
+44786,9876,
+44787,9877,
+44788,1297,
+44789,9878,
+44790,9879,
+44791,9880,
+44792,1298,
+44793,9881,
+44794,9882,
+44795,9883,
+44796,1299,
+44797,9884,
+44798,9885,
+44799,9886,
+44800,9887,
+44801,9888,
+44802,9889,
+44803,9890,
+44804,9891,
+44805,9892,
+44806,9893,
+44807,1300,
+44808,1301,
+44809,9894,
+44810,9895,
+44811,9896,
+44812,9897,
+44813,1302,
+44814,9898,
+44815,9899,
+44816,1303,
+44817,9900,
+44818,9901,
+44819,9902,
+44820,9903,
+44821,9904,
+44822,9905,
+44823,9906,
+44824,9907,
+44825,9908,
+44826,9909,
+44827,9910,
+44828,9911,
+44829,9912,
+44830,9913,
+44831,9914,
+44832,9915,
+44833,9916,
+44834,9917,
+44835,9918,
+44836,9919,
+44837,9920,
+44838,9921,
+44839,9922,
+44840,9923,
+44841,9924,
+44842,9925,
+44843,9926,
+44844,1304,
+44845,1305,
+44846,9927,
+44847,9928,
+44848,1306,
+44849,9929,
+44850,1307,
+44851,9930,
+44852,1308,
+44853,9931,
+44854,9932,
+44855,9933,
+44856,9934,
+44857,9935,
+44858,9936,
+44859,9937,
+44860,1309,
+44861,1310,
+44862,9938,
+44863,1311,
+44864,9939,
+44865,1312,
+44866,1313,
+44867,1314,
+44868,9940,
+44869,9941,
+44870,9942,
+44871,9943,
+44872,1315,
+44873,1316,
+44874,9944,
+44875,9945,
+44876,9946,
+44877,9947,
+44878,9948,
+44879,9949,
+44880,1317,
+44881,9950,
+44882,9951,
+44883,9952,
+44884,9953,
+44885,9954,
+44886,9955,
+44887,9956,
+44888,9957,
+44889,9958,
+44890,9959,
+44891,9960,
+44892,1318,
+44893,1319,
+44894,9961,
+44895,9962,
+44896,9963,
+44897,9964,
+44898,9965,
+44899,9966,
+44900,1320,
+44901,1321,
+44902,9967,
+44903,9968,
+44904,9969,
+44905,9970,
+44906,9971,
+44907,9972,
+44908,9973,
+44909,9974,
+44910,9975,
+44911,9976,
+44912,9977,
+44913,9978,
+44914,9979,
+44915,9980,
+44916,9981,
+44917,9982,
+44918,9983,
+44919,9984,
+44920,9985,
+44921,1322,
+44922,9986,
+44923,9987,
+44924,9988,
+44925,9989,
+44926,9990,
+44927,9991,
+44928,1323,
+44929,9992,
+44930,9993,
+44931,9994,
+44932,1324,
+44933,9995,
+44934,9996,
+44935,9997,
+44936,1325,
+44937,9998,
+44938,9999,
+44939,10000,
+44940,10001,
+44941,10002,
+44942,10003,
+44943,10004,
+44944,1326,
+44945,1327,
+44946,10005,
+44947,10006,
+44948,10007,
+44949,1328,
+44950,10008,
+44951,10009,
+44952,10010,
+44953,10011,
+44954,10012,
+44955,10013,
+44956,1329,
+44957,10014,
+44958,10015,
+44959,10016,
+44960,10017,
+44961,10018,
+44962,10019,
+44963,10020,
+44964,10021,
+44965,10022,
+44966,10023,
+44967,10024,
+44968,10025,
+44969,10026,
+44970,10027,
+44971,10028,
+44972,10029,
+44973,10030,
+44974,10031,
+44975,10032,
+44976,10033,
+44977,10034,
+44978,10035,
+44979,10036,
+44980,10037,
+44981,10038,
+44982,10039,
+44983,10040,
+44984,1330,
+44985,1331,
+44986,10041,
+44987,10042,
+44988,1332,
+44989,10043,
+44990,10044,
+44991,10045,
+44992,1333,
+44993,10046,
+44994,10047,
+44995,10048,
+44996,10049,
+44997,10050,
+44998,10051,
+44999,1334,
+45000,1335,
+45001,1336,
+45002,10052,
+45003,1337,
+45004,10053,
+45005,1338,
+45006,1339,
+45007,10054,
+45008,10055,
+45009,10056,
+45010,10057,
+45011,10058,
+45012,1340,
+45013,10059,
+45014,10060,
+45015,10061,
+45016,10062,
+45017,10063,
+45018,10064,
+45019,10065,
+45020,1341,
+45021,10066,
+45022,10067,
+45023,10068,
+45024,10069,
+45025,10070,
+45026,10071,
+45027,10072,
+45028,10073,
+45029,10074,
+45030,10075,
+45031,10076,
+45032,1342,
+45033,1343,
+45034,10077,
+45035,10078,
+45036,10079,
+45037,10080,
+45038,10081,
+45039,10082,
+45040,1344,
+45041,1345,
+45042,10083,
+45043,10084,
+45044,1346,
+45045,10085,
+45046,10086,
+45047,10087,
+45048,1347,
+45049,10088,
+45050,10089,
+45051,10090,
+45052,10091,
+45053,10092,
+45054,10093,
+45055,10094,
+45056,1348,
+45057,1349,
+45058,10095,
+45059,10096,
+45060,1350,
+45061,10097,
+45062,10098,
+45063,10099,
+45064,10100,
+45065,10101,
+45066,10102,
+45067,10103,
+45068,1351,
+45069,10104,
+45070,10105,
+45071,10106,
+45072,1352,
+45073,10107,
+45074,10108,
+45075,10109,
+45076,1353,
+45077,10110,
+45078,10111,
+45079,10112,
+45080,10113,
+45081,10114,
+45082,10115,
+45083,10116,
+45084,1354,
+45085,1355,
+45086,10117,
+45087,10118,
+45088,10119,
+45089,10120,
+45090,10121,
+45091,10122,
+45092,10123,
+45093,10124,
+45094,10125,
+45095,10126,
+45096,1356,
+45097,10127,
+45098,10128,
+45099,10129,
+45100,10130,
+45101,10131,
+45102,10132,
+45103,10133,
+45104,10134,
+45105,10135,
+45106,10136,
+45107,10137,
+45108,10138,
+45109,10139,
+45110,10140,
+45111,10141,
+45112,10142,
+45113,10143,
+45114,10144,
+45115,10145,
+45116,10146,
+45117,10147,
+45118,10148,
+45119,10149,
+45120,10150,
+45121,10151,
+45122,10152,
+45123,10153,
+45124,1357,
+45125,1358,
+45126,10154,
+45127,10155,
+45128,1359,
+45129,10156,
+45130,1360,
+45131,10157,
+45132,1361,
+45133,10158,
+45134,1362,
+45135,10159,
+45136,10160,
+45137,10161,
+45138,10162,
+45139,1363,
+45140,1364,
+45141,1365,
+45142,10163,
+45143,1366,
+45144,10164,
+45145,1367,
+45146,10165,
+45147,10166,
+45148,10167,
+45149,1368,
+45150,10168,
+45151,10169,
+45152,10170,
+45153,10171,
+45154,10172,
+45155,10173,
+45156,10174,
+45157,10175,
+45158,10176,
+45159,10177,
+45160,10178,
+45161,10179,
+45162,10180,
+45163,10181,
+45164,10182,
+45165,10183,
+45166,10184,
+45167,10185,
+45168,10186,
+45169,10187,
+45170,10188,
+45171,10189,
+45172,10190,
+45173,10191,
+45174,10192,
+45175,10193,
+45176,10194,
+45177,10195,
+45178,10196,
+45179,10197,
+45180,1369,
+45181,1370,
+45182,10198,
+45183,10199,
+45184,1371,
+45185,10200,
+45186,10201,
+45187,10202,
+45188,1372,
+45189,10203,
+45190,10204,
+45191,10205,
+45192,10206,
+45193,10207,
+45194,10208,
+45195,10209,
+45196,1373,
+45197,1374,
+45198,10210,
+45199,1375,
+45200,10211,
+45201,1376,
+45202,10212,
+45203,10213,
+45204,10214,
+45205,10215,
+45206,10216,
+45207,10217,
+45208,1377,
+45209,1378,
+45210,1379,
+45211,10218,
+45212,1380,
+45213,10219,
+45214,10220,
+45215,1381,
+45216,1382,
+45217,1383,
+45218,1384,
+45219,10221,
+45220,10222,
+45221,10223,
+45222,10224,
+45223,10225,
+45224,1385,
+45225,1386,
+45226,10226,
+45227,1387,
+45228,1388,
+45229,1389,
+45230,1390,
+45231,1391,
+45232,10227,
+45233,1392,
+45234,10228,
+45235,1393,
+45236,1394,
+45237,1395,
+45238,10229,
+45239,10230,
+45240,1396,
+45241,10231,
+45242,10232,
+45243,10233,
+45244,1397,
+45245,10234,
+45246,10235,
+45247,10236,
+45248,10237,
+45249,10238,
+45250,10239,
+45251,10240,
+45252,1398,
+45253,1399,
+45254,10241,
+45255,1400,
+45256,1401,
+45257,1402,
+45258,10242,
+45259,10243,
+45260,10244,
+45261,10245,
+45262,10246,
+45263,10247,
+45264,1403,
+45265,1404,
+45266,10248,
+45267,10249,
+45268,1405,
+45269,10250,
+45270,10251,
+45271,10252,
+45272,1406,
+45273,10253,
+45274,10254,
+45275,10255,
+45276,10256,
+45277,10257,
+45278,10258,
+45279,10259,
+45280,1407,
+45281,10260,
+45282,10261,
+45283,10262,
+45284,10263,
+45285,1408,
+45286,10264,
+45287,10265,
+45288,10266,
+45289,10267,
+45290,10268,
+45291,10269,
+45292,10270,
+45293,10271,
+45294,10272,
+45295,10273,
+45296,10274,
+45297,10275,
+45298,10276,
+45299,10277,
+45300,10278,
+45301,10279,
+45302,10280,
+45303,10281,
+45304,10282,
+45305,10283,
+45306,10284,
+45307,10285,
+45308,10286,
+45309,10287,
+45310,10288,
+45311,10289,
+45312,10290,
+45313,10291,
+45314,10292,
+45315,10293,
+45316,10294,
+45317,10295,
+45318,10296,
+45319,10297,
+45320,1409,
+45321,1410,
+45322,10298,
+45323,1411,
+45324,1412,
+45325,10299,
+45326,10300,
+45327,10301,
+45328,1413,
+45329,10302,
+45330,1414,
+45331,1415,
+45332,10303,
+45333,10304,
+45334,10305,
+45335,10306,
+45336,1416,
+45337,1417,
+45338,10307,
+45339,1418,
+45340,1419,
+45341,1420,
+45342,10308,
+45343,10309,
+45344,10310,
+45345,10311,
+45346,10312,
+45347,1421,
+45348,1422,
+45349,1423,
+45350,10313,
+45351,10314,
+45352,1424,
+45353,10315,
+45354,10316,
+45355,10317,
+45356,1425,
+45357,10318,
+45358,10319,
+45359,10320,
+45360,10321,
+45361,10322,
+45362,10323,
+45363,10324,
+45364,1426,
+45365,1427,
+45366,10325,
+45367,1428,
+45368,1429,
+45369,1430,
+45370,10326,
+45371,10327,
+45372,10328,
+45373,10329,
+45374,10330,
+45375,10331,
+45376,1431,
+45377,1432,
+45378,10332,
+45379,10333,
+45380,1433,
+45381,10334,
+45382,10335,
+45383,10336,
+45384,1434,
+45385,10337,
+45386,10338,
+45387,10339,
+45388,10340,
+45389,10341,
+45390,10342,
+45391,10343,
+45392,1435,
+45393,1436,
+45394,10344,
+45395,10345,
+45396,1437,
+45397,1438,
+45398,10346,
+45399,10347,
+45400,1439,
+45401,10348,
+45402,10349,
+45403,10350,
+45404,1440,
+45405,10351,
+45406,10352,
+45407,10353,
+45408,1441,
+45409,10354,
+45410,10355,
+45411,10356,
+45412,10357,
+45413,10358,
+45414,10359,
+45415,10360,
+45416,10361,
+45417,10362,
+45418,10363,
+45419,10364,
+45420,10365,
+45421,10366,
+45422,10367,
+45423,10368,
+45424,10369,
+45425,10370,
+45426,10371,
+45427,10372,
+45428,10373,
+45429,10374,
+45430,10375,
+45431,10376,
+45432,1442,
+45433,1443,
+45434,10377,
+45435,10378,
+45436,1444,
+45437,10379,
+45438,10380,
+45439,10381,
+45440,1445,
+45441,10382,
+45442,1446,
+45443,10383,
+45444,10384,
+45445,10385,
+45446,10386,
+45447,10387,
+45448,1447,
+45449,1448,
+45450,10388,
+45451,1449,
+45452,10389,
+45453,1450,
+45454,10390,
+45455,10391,
+45456,10392,
+45457,10393,
+45458,1451,
+45459,1452,
+45460,1453,
+45461,10394,
+45462,10395,
+45463,10396,
+45464,1454,
+45465,10397,
+45466,10398,
+45467,10399,
+45468,1455,
+45469,10400,
+45470,10401,
+45471,10402,
+45472,10403,
+45473,10404,
+45474,10405,
+45475,10406,
+45476,10407,
+45477,10408,
+45478,10409,
+45479,10410,
+45480,1456,
+45481,10411,
+45482,10412,
+45483,10413,
+45484,10414,
+45485,10415,
+45486,10416,
+45487,10417,
+45488,10418,
+45489,10419,
+45490,10420,
+45491,10421,
+45492,10422,
+45493,10423,
+45494,10424,
+45495,10425,
+45496,10426,
+45497,10427,
+45498,10428,
+45499,10429,
+45500,10430,
+45501,10431,
+45502,10432,
+45503,10433,
+45504,10434,
+45505,10435,
+45506,10436,
+45507,10437,
+45508,10438,
+45509,10439,
+45510,10440,
+45511,10441,
+45512,10442,
+45513,10443,
+45514,10444,
+45515,10445,
+45516,1457,
+45517,10446,
+45518,10447,
+45519,10448,
+45520,1458,
+45521,10449,
+45522,10450,
+45523,10451,
+45524,1459,
+45525,10452,
+45526,10453,
+45527,10454,
+45528,10455,
+45529,10456,
+45530,10457,
+45531,10458,
+45532,1460,
+45533,1461,
+45534,10459,
+45535,1462,
+45536,10460,
+45537,10461,
+45538,10462,
+45539,10463,
+45540,10464,
+45541,10465,
+45542,10466,
+45543,10467,
+45544,1463,
+45545,1464,
+45546,10468,
+45547,10469,
+45548,1465,
+45549,10470,
+45550,10471,
+45551,10472,
+45552,1466,
+45553,10473,
+45554,10474,
+45555,10475,
+45556,10476,
+45557,10477,
+45558,10478,
+45559,10479,
+45560,10480,
+45561,1467,
+45562,10481,
+45563,1468,
+45564,10482,
+45565,1469,
+45566,10483,
+45567,10484,
+45568,10485,
+45569,10486,
+45570,10487,
+45571,10488,
+45572,1470,
+45573,1471,
+45574,10489,
+45575,10490,
+45576,1472,
+45577,10491,
+45578,10492,
+45579,1473,
+45580,1474,
+45581,10493,
+45582,10494,
+45583,10495,
+45584,10496,
+45585,10497,
+45586,10498,
+45587,10499,
+45588,1475,
+45589,1476,
+45590,10500,
+45591,1477,
+45592,10501,
+45593,1478,
+45594,10502,
+45595,10503,
+45596,10504,
+45597,10505,
+45598,10506,
+45599,10507,
+45600,1479,
+45601,10508,
+45602,10509,
+45603,10510,
+45604,10511,
+45605,10512,
+45606,10513,
+45607,10514,
+45608,10515,
+45609,10516,
+45610,10517,
+45611,10518,
+45612,10519,
+45613,10520,
+45614,10521,
+45615,10522,
+45616,10523,
+45617,10524,
+45618,10525,
+45619,10526,
+45620,1480,
+45621,10527,
+45622,10528,
+45623,10529,
+45624,10530,
+45625,10531,
+45626,10532,
+45627,10533,
+45628,1481,
+45629,10534,
+45630,10535,
+45631,10536,
+45632,10537,
+45633,10538,
+45634,10539,
+45635,10540,
+45636,10541,
+45637,10542,
+45638,10543,
+45639,10544,
+45640,10545,
+45641,10546,
+45642,10547,
+45643,10548,
+45644,10549,
+45645,10550,
+45646,10551,
+45647,10552,
+45648,10553,
+45649,10554,
+45650,10555,
+45651,10556,
+45652,10557,
+45653,10558,
+45654,10559,
+45655,10560,
+45656,1482,
+45657,10561,
+45658,10562,
+45659,10563,
+45660,1483,
+45661,10564,
+45662,10565,
+45663,10566,
+45664,1484,
+45665,10567,
+45666,10568,
+45667,10569,
+45668,10570,
+45669,10571,
+45670,10572,
+45671,10573,
+45672,1485,
+45673,1486,
+45674,10574,
+45675,10575,
+45676,10576,
+45677,10577,
+45678,10578,
+45679,10579,
+45680,10580,
+45681,10581,
+45682,10582,
+45683,10583,
+45684,1487,
+45685,1488,
+45686,10584,
+45687,10585,
+45688,10586,
+45689,10587,
+45690,10588,
+45691,10589,
+45692,1489,
+45693,10590,
+45694,10591,
+45695,10592,
+45696,10593,
+45697,10594,
+45698,10595,
+45699,10596,
+45700,1490,
+45701,1491,
+45702,10597,
+45703,10598,
+45704,10599,
+45705,1492,
+45706,10600,
+45707,10601,
+45708,10602,
+45709,10603,
+45710,10604,
+45711,10605,
+45712,1493,
+45713,1494,
+45714,10606,
+45715,10607,
+45716,1495,
+45717,10608,
+45718,10609,
+45719,10610,
+45720,1496,
+45721,1497,
+45722,1498,
+45723,10611,
+45724,10612,
+45725,10613,
+45726,10614,
+45727,10615,
+45728,1499,
+45729,1500,
+45730,10616,
+45731,1501,
+45732,10617,
+45733,1502,
+45734,1503,
+45735,10618,
+45736,10619,
+45737,10620,
+45738,1504,
+45739,10621,
+45740,1505,
+45741,10622,
+45742,10623,
+45743,10624,
+45744,1506,
+45745,10625,
+45746,10626,
+45747,10627,
+45748,1507,
+45749,10628,
+45750,10629,
+45751,10630,
+45752,10631,
+45753,10632,
+45754,10633,
+45755,10634,
+45756,10635,
+45757,10636,
+45758,10637,
+45759,10638,
+45760,10639,
+45761,10640,
+45762,10641,
+45763,10642,
+45764,10643,
+45765,10644,
+45766,10645,
+45767,10646,
+45768,1508,
+45769,1509,
+45770,10647,
+45771,10648,
+45772,1510,
+45773,10649,
+45774,10650,
+45775,10651,
+45776,1511,
+45777,10652,
+45778,1512,
+45779,10653,
+45780,10654,
+45781,10655,
+45782,10656,
+45783,10657,
+45784,1513,
+45785,1514,
+45786,10658,
+45787,1515,
+45788,10659,
+45789,1516,
+45790,10660,
+45791,10661,
+45792,10662,
+45793,10663,
+45794,1517,
+45795,10664,
+45796,1518,
+45797,1519,
+45798,1520,
+45799,10665,
+45800,1521,
+45801,10666,
+45802,10667,
+45803,1522,
+45804,1523,
+45805,1524,
+45806,1525,
+45807,1526,
+45808,10668,
+45809,10669,
+45810,10670,
+45811,1527,
+45812,1528,
+45813,1529,
+45814,10671,
+45815,1530,
+45816,1531,
+45817,1532,
+45818,1533,
+45819,1534,
+45820,10672,
+45821,10673,
+45822,10674,
+45823,1535,
+45824,1536,
+45825,1537,
+45826,10675,
+45827,10676,
+45828,1538,
+45829,10677,
+45830,10678,
+45831,10679,
+45832,1539,
+45833,10680,
+45834,10681,
+45835,10682,
+45836,10683,
+45837,10684,
+45838,10685,
+45839,10686,
+45840,1540,
+45841,1541,
+45842,10687,
+45843,1542,
+45844,1543,
+45845,1544,
+45846,10688,
+45847,10689,
+45848,10690,
+45849,10691,
+45850,10692,
+45851,10693,
+45852,1545,
+45853,10694,
+45854,10695,
+45855,10696,
+45856,10697,
+45857,10698,
+45858,10699,
+45859,10700,
+45860,10701,
+45861,10702,
+45862,10703,
+45863,10704,
+45864,10705,
+45865,10706,
+45866,10707,
+45867,10708,
+45868,10709,
+45869,10710,
+45870,10711,
+45871,10712,
+45872,10713,
+45873,10714,
+45874,10715,
+45875,10716,
+45876,10717,
+45877,10718,
+45878,10719,
+45879,10720,
+45880,10721,
+45881,10722,
+45882,10723,
+45883,10724,
+45884,10725,
+45885,10726,
+45886,10727,
+45887,10728,
+45888,10729,
+45889,10730,
+45890,10731,
+45891,10732,
+45892,10733,
+45893,10734,
+45894,10735,
+45895,10736,
+45896,10737,
+45897,10738,
+45898,10739,
+45899,10740,
+45900,10741,
+45901,10742,
+45902,10743,
+45903,10744,
+45904,10745,
+45905,10746,
+45906,10747,
+45907,10748,
+45908,1546,
+45909,1547,
+45910,1548,
+45911,10749,
+45912,1549,
+45913,10750,
+45914,10751,
+45915,1550,
+45916,1551,
+45917,10752,
+45918,1552,
+45919,1553,
+45920,10753,
+45921,10754,
+45922,10755,
+45923,10756,
+45924,1554,
+45925,1555,
+45926,10757,
+45927,1556,
+45928,10758,
+45929,1557,
+45930,10759,
+45931,1558,
+45932,10760,
+45933,10761,
+45934,1559,
+45935,10762,
+45936,1560,
+45937,1561,
+45938,10763,
+45939,10764,
+45940,1562,
+45941,10765,
+45942,10766,
+45943,10767,
+45944,1563,
+45945,10768,
+45946,10769,
+45947,10770,
+45948,10771,
+45949,10772,
+45950,10773,
+45951,10774,
+45952,1564,
+45953,1565,
+45954,10775,
+45955,1566,
+45956,1567,
+45957,1568,
+45958,10776,
+45959,10777,
+45960,10778,
+45961,10779,
+45962,10780,
+45963,10781,
+45964,1569,
+45965,10782,
+45966,10783,
+45967,10784,
+45968,1570,
+45969,10785,
+45970,10786,
+45971,10787,
+45972,1571,
+45973,10788,
+45974,10789,
+45975,10790,
+45976,10791,
+45977,10792,
+45978,10793,
+45979,10794,
+45980,10795,
+45981,10796,
+45982,10797,
+45983,10798,
+45984,1572,
+45985,1573,
+45986,10799,
+45987,10800,
+45988,10801,
+45989,10802,
+45990,10803,
+45991,10804,
+45992,1574,
+45993,10805,
+45994,10806,
+45995,10807,
+45996,1575,
+45997,10808,
+45998,10809,
+45999,10810,
+46000,10811,
+46001,10812,
+46002,10813,
+46003,10814,
+46004,10815,
+46005,10816,
+46006,10817,
+46007,10818,
+46008,10819,
+46009,10820,
+46010,10821,
+46011,10822,
+46012,10823,
+46013,10824,
+46014,10825,
+46015,10826,
+46016,10827,
+46017,10828,
+46018,10829,
+46019,10830,
+46020,1576,
+46021,1577,
+46022,10831,
+46023,10832,
+46024,1578,
+46025,10833,
+46026,10834,
+46027,1579,
+46028,1580,
+46029,10835,
+46030,1581,
+46031,10836,
+46032,1582,
+46033,10837,
+46034,10838,
+46035,10839,
+46036,1583,
+46037,1584,
+46038,10840,
+46039,1585,
+46040,10841,
+46041,1586,
+46042,10842,
+46043,1587,
+46044,10843,
+46045,1588,
+46046,10844,
+46047,10845,
+46048,1589,
+46049,10846,
+46050,10847,
+46051,10848,
+46052,1590,
+46053,10849,
+46054,10850,
+46055,10851,
+46056,1591,
+46057,10852,
+46058,10853,
+46059,10854,
+46060,10855,
+46061,10856,
+46062,10857,
+46063,10858,
+46064,10859,
+46065,10860,
+46066,10861,
+46067,10862,
+46068,10863,
+46069,10864,
+46070,10865,
+46071,10866,
+46072,10867,
+46073,10868,
+46074,10869,
+46075,10870,
+46076,1592,
+46077,10871,
+46078,10872,
+46079,10873,
+46080,10874,
+46081,10875,
+46082,10876,
+46083,10877,
+46084,10878,
+46085,10879,
+46086,10880,
+46087,10881,
+46088,10882,
+46089,10883,
+46090,10884,
+46091,10885,
+46092,10886,
+46093,10887,
+46094,10888,
+46095,10889,
+46096,1593,
+46097,10890,
+46098,10891,
+46099,10892,
+46100,10893,
+46101,10894,
+46102,10895,
+46103,10896,
+46104,1594,
+46105,10897,
+46106,10898,
+46107,10899,
+46108,1595,
+46109,10900,
+46110,10901,
+46111,10902,
+46112,1596,
+46113,10903,
+46114,10904,
+46115,10905,
+46116,10906,
+46117,10907,
+46118,10908,
+46119,10909,
+46120,1597,
+46121,1598,
+46122,10910,
+46123,1599,
+46124,10911,
+46125,10912,
+46126,10913,
+46127,10914,
+46128,10915,
+46129,10916,
+46130,10917,
+46131,10918,
+46132,1600,
+46133,10919,
+46134,10920,
+46135,10921,
+46136,10922,
+46137,10923,
+46138,10924,
+46139,10925,
+46140,10926,
+46141,10927,
+46142,10928,
+46143,10929,
+46144,10930,
+46145,10931,
+46146,10932,
+46147,10933,
+46148,10934,
+46149,10935,
+46150,10936,
+46151,10937,
+46152,10938,
+46153,10939,
+46154,10940,
+46155,10941,
+46156,10942,
+46157,10943,
+46158,10944,
+46159,10945,
+46160,1601,
+46161,1602,
+46162,10946,
+46163,10947,
+46164,1603,
+46165,10948,
+46166,10949,
+46167,10950,
+46168,1604,
+46169,10951,
+46170,10952,
+46171,10953,
+46172,10954,
+46173,10955,
+46174,10956,
+46175,10957,
+46176,1605,
+46177,1606,
+46178,10958,
+46179,1607,
+46180,10959,
+46181,1608,
+46182,10960,
+46183,10961,
+46184,10962,
+46185,10963,
+46186,10964,
+46187,10965,
+46188,1609,
+46189,10966,
+46190,10967,
+46191,10968,
+46192,10969,
+46193,10970,
+46194,10971,
+46195,10972,
+46196,10973,
+46197,10974,
+46198,10975,
+46199,10976,
+46200,10977,
+46201,10978,
+46202,10979,
+46203,10980,
+46204,10981,
+46205,10982,
+46206,10983,
+46207,10984,
+46208,1610,
+46209,10985,
+46210,10986,
+46211,10987,
+46212,10988,
+46213,10989,
+46214,10990,
+46215,10991,
+46216,1611,
+46217,10992,
+46218,10993,
+46219,10994,
+46220,10995,
+46221,10996,
+46222,10997,
+46223,10998,
+46224,10999,
+46225,11000,
+46226,11001,
+46227,11002,
+46228,11003,
+46229,11004,
+46230,11005,
+46231,11006,
+46232,11007,
+46233,11008,
+46234,11009,
+46235,11010,
+46236,11011,
+46237,1612,
+46238,11012,
+46239,11013,
+46240,11014,
+46241,11015,
+46242,11016,
+46243,11017,
+46244,1613,
+46245,11018,
+46246,11019,
+46247,11020,
+46248,1614,
+46249,11021,
+46250,11022,
+46251,11023,
+46252,1615,
+46253,11024,
+46254,11025,
+46255,11026,
+46256,11027,
+46257,11028,
+46258,11029,
+46259,11030,
+46260,11031,
+46261,1616,
+46262,11032,
+46263,1617,
+46264,11033,
+46265,1618,
+46266,11034,
+46267,11035,
+46268,11036,
+46269,11037,
+46270,11038,
+46271,11039,
+46272,1619,
+46273,11040,
+46274,11041,
+46275,11042,
+46276,1620,
+46277,11043,
+46278,11044,
+46279,11045,
+46280,1621,
+46281,11046,
+46282,11047,
+46283,11048,
+46284,11049,
+46285,11050,
+46286,11051,
+46287,11052,
+46288,1622,
+46289,11053,
+46290,11054,
+46291,11055,
+46292,11056,
+46293,1623,
+46294,11057,
+46295,11058,
+46296,11059,
+46297,11060,
+46298,11061,
+46299,11062,
+46300,1624,
+46301,1625,
+46302,11063,
+46303,11064,
+46304,1626,
+46305,11065,
+46306,11066,
+46307,1627,
+46308,1628,
+46309,11067,
+46310,1629,
+46311,11068,
+46312,11069,
+46313,11070,
+46314,11071,
+46315,11072,
+46316,1630,
+46317,1631,
+46318,11073,
+46319,1632,
+46320,11074,
+46321,1633,
+46322,11075,
+46323,11076,
+46324,11077,
+46325,11078,
+46326,11079,
+46327,11080,
+46328,1634,
+46329,11081,
+46330,11082,
+46331,11083,
+46332,11084,
+46333,11085,
+46334,11086,
+46335,11087,
+46336,11088,
+46337,11089,
+46338,11090,
+46339,11091,
+46340,11092,
+46341,11093,
+46342,11094,
+46343,11095,
+46344,11096,
+46345,11097,
+46346,11098,
+46347,11099,
+46348,11100,
+46349,11101,
+46350,11102,
+46351,11103,
+46352,11104,
+46353,11105,
+46354,11106,
+46355,11107,
+46356,1635,
+46357,1636,
+46358,11108,
+46359,11109,
+46360,1637,
+46361,11110,
+46362,11111,
+46363,1638,
+46364,1639,
+46365,11112,
+46366,11113,
+46367,11114,
+46368,11115,
+46369,11116,
+46370,11117,
+46371,11118,
+46372,1640,
+46373,1641,
+46374,11119,
+46375,1642,
+46376,1643,
+46377,1644,
+46378,1645,
+46379,11120,
+46380,11121,
+46381,11122,
+46382,11123,
+46383,11124,
+46384,1646,
+46385,1647,
+46386,11125,
+46387,11126,
+46388,1648,
+46389,11127,
+46390,11128,
+46391,11129,
+46392,1649,
+46393,11130,
+46394,11131,
+46395,11132,
+46396,11133,
+46397,11134,
+46398,11135,
+46399,11136,
+46400,1650,
+46401,1651,
+46402,11137,
+46403,1652,
+46404,1653,
+46405,1654,
+46406,11138,
+46407,11139,
+46408,11140,
+46409,11141,
+46410,11142,
+46411,1655,
+46412,1656,
+46413,1657,
+46414,11143,
+46415,11144,
+46416,1658,
+46417,11145,
+46418,11146,
+46419,11147,
+46420,1659,
+46421,11148,
+46422,11149,
+46423,11150,
+46424,11151,
+46425,11152,
+46426,11153,
+46427,11154,
+46428,1660,
+46429,1661,
+46430,11155,
+46431,1662,
+46432,1663,
+46433,1664,
+46434,11156,
+46435,11157,
+46436,11158,
+46437,11159,
+46438,11160,
+46439,11161,
+46440,11162,
+46441,11163,
+46442,11164,
+46443,11165,
+46444,11166,
+46445,11167,
+46446,11168,
+46447,11169,
+46448,11170,
+46449,11171,
+46450,11172,
+46451,11173,
+46452,11174,
+46453,11175,
+46454,11176,
+46455,11177,
+46456,11178,
+46457,11179,
+46458,11180,
+46459,11181,
+46460,11182,
+46461,11183,
+46462,11184,
+46463,11185,
+46464,11186,
+46465,11187,
+46466,11188,
+46467,11189,
+46468,11190,
+46469,11191,
+46470,11192,
+46471,11193,
+46472,11194,
+46473,11195,
+46474,11196,
+46475,11197,
+46476,11198,
+46477,11199,
+46478,11200,
+46479,11201,
+46480,11202,
+46481,11203,
+46482,11204,
+46483,11205,
+46484,11206,
+46485,11207,
+46486,11208,
+46487,11209,
+46488,11210,
+46489,11211,
+46490,11212,
+46491,11213,
+46492,11214,
+46493,11215,
+46494,11216,
+46495,11217,
+46496,1665,
+46497,1666,
+46498,11218,
+46499,11219,
+46500,1667,
+46501,11220,
+46502,11221,
+46503,11222,
+46504,1668,
+46505,11223,
+46506,1669,
+46507,1670,
+46508,11224,
+46509,11225,
+46510,11226,
+46511,11227,
+46512,1671,
+46513,1672,
+46514,11228,
+46515,1673,
+46516,1674,
+46517,1675,
+46518,11229,
+46519,11230,
+46520,11231,
+46521,11232,
+46522,11233,
+46523,1676,
+46524,1677,
+46525,1678,
+46526,11234,
+46527,11235,
+46528,1679,
+46529,11236,
+46530,11237,
+46531,11238,
+46532,1680,
+46533,11239,
+46534,11240,
+46535,11241,
+46536,11242,
+46537,11243,
+46538,11244,
+46539,11245,
+46540,1681,
+46541,1682,
+46542,11246,
+46543,1683,
+46544,1684,
+46545,1685,
+46546,11247,
+46547,11248,
+46548,11249,
+46549,11250,
+46550,11251,
+46551,11252,
+46552,1686,
+46553,11253,
+46554,11254,
+46555,11255,
+46556,11256,
+46557,11257,
+46558,11258,
+46559,11259,
+46560,11260,
+46561,11261,
+46562,11262,
+46563,11263,
+46564,11264,
+46565,11265,
+46566,11266,
+46567,11267,
+46568,11268,
+46569,11269,
+46570,11270,
+46571,11271,
+46572,1687,
+46573,11272,
+46574,11273,
+46575,11274,
+46576,11275,
+46577,11276,
+46578,11277,
+46579,11278,
+46580,11279,
+46581,11280,
+46582,11281,
+46583,11282,
+46584,11283,
+46585,11284,
+46586,11285,
+46587,11286,
+46588,11287,
+46589,11288,
+46590,11289,
+46591,11290,
+46592,11291,
+46593,11292,
+46594,11293,
+46595,11294,
+46596,11295,
+46597,11296,
+46598,11297,
+46599,11298,
+46600,11299,
+46601,11300,
+46602,11301,
+46603,11302,
+46604,11303,
+46605,11304,
+46606,11305,
+46607,11306,
+46608,1688,
+46609,1689,
+46610,11307,
+46611,11308,
+46612,1690,
+46613,11309,
+46614,11310,
+46615,11311,
+46616,1691,
+46617,11312,
+46618,11313,
+46619,11314,
+46620,11315,
+46621,11316,
+46622,11317,
+46623,11318,
+46624,11319,
+46625,11320,
+46626,11321,
+46627,11322,
+46628,11323,
+46629,1692,
+46630,11324,
+46631,11325,
+46632,11326,
+46633,11327,
+46634,11328,
+46635,11329,
+46636,1693,
+46637,11330,
+46638,11331,
+46639,11332,
+46640,11333,
+46641,11334,
+46642,11335,
+46643,11336,
+46644,1694,
+46645,11337,
+46646,11338,
+46647,11339,
+46648,11340,
+46649,11341,
+46650,11342,
+46651,11343,
+46652,11344,
+46653,11345,
+46654,11346,
+46655,11347,
+46656,11348,
+46657,11349,
+46658,11350,
+46659,11351,
+46660,11352,
+46661,11353,
+46662,11354,
+46663,11355,
+46664,1695,
+46665,11356,
+46666,11357,
+46667,11358,
+46668,11359,
+46669,11360,
+46670,11361,
+46671,11362,
+46672,11363,
+46673,11364,
+46674,11365,
+46675,11366,
+46676,11367,
+46677,11368,
+46678,11369,
+46679,11370,
+46680,11371,
+46681,11372,
+46682,11373,
+46683,11374,
+46684,11375,
+46685,11376,
+46686,11377,
+46687,11378,
+46688,11379,
+46689,11380,
+46690,11381,
+46691,11382,
+46692,1696,
+46693,11383,
+46694,11384,
+46695,11385,
+46696,1697,
+46697,11386,
+46698,11387,
+46699,11388,
+46700,11389,
+46701,11390,
+46702,11391,
+46703,11392,
+46704,11393,
+46705,11394,
+46706,11395,
+46707,11396,
+46708,11397,
+46709,11398,
+46710,11399,
+46711,11400,
+46712,11401,
+46713,11402,
+46714,11403,
+46715,11404,
+46716,11405,
+46717,11406,
+46718,11407,
+46719,11408,
+46720,11409,
+46721,11410,
+46722,11411,
+46723,11412,
+46724,11413,
+46725,11414,
+46726,11415,
+46727,11416,
+46728,11417,
+46729,11418,
+46730,11419,
+46731,11420,
+46732,11421,
+46733,11422,
+46734,11423,
+46735,11424,
+46736,11425,
+46737,11426,
+46738,11427,
+46739,11428,
+46740,11429,
+46741,11430,
+46742,11431,
+46743,11432,
+46744,11433,
+46745,11434,
+46746,11435,
+46747,11436,
+46748,1698,
+46749,1699,
+46750,11437,
+46751,11438,
+46752,1700,
+46753,11439,
+46754,11440,
+46755,11441,
+46756,1701,
+46757,11442,
+46758,11443,
+46759,11444,
+46760,11445,
+46761,11446,
+46762,11447,
+46763,1702,
+46764,1703,
+46765,11448,
+46766,11449,
+46767,11450,
+46768,11451,
+46769,1704,
+46770,11452,
+46771,11453,
+46772,11454,
+46773,11455,
+46774,11456,
+46775,11457,
+46776,11458,
+46777,11459,
+46778,11460,
+46779,11461,
+46780,11462,
+46781,11463,
+46782,11464,
+46783,11465,
+46784,11466,
+46785,11467,
+46786,11468,
+46787,11469,
+46788,11470,
+46789,11471,
+46790,11472,
+46791,11473,
+46792,11474,
+46793,11475,
+46794,11476,
+46795,11477,
+46796,11478,
+46797,11479,
+46798,11480,
+46799,11481,
+46800,11482,
+46801,11483,
+46802,11484,
+46803,11485,
+46804,1705,
+46805,11486,
+46806,11487,
+46807,11488,
+46808,11489,
+46809,11490,
+46810,11491,
+46811,11492,
+46812,11493,
+46813,11494,
+46814,11495,
+46815,11496,
+46816,11497,
+46817,11498,
+46818,11499,
+46819,11500,
+46820,11501,
+46821,11502,
+46822,11503,
+46823,11504,
+46824,11505,
+46825,11506,
+46826,11507,
+46827,11508,
+46828,11509,
+46829,11510,
+46830,11511,
+46831,11512,
+46832,1706,
+46833,11513,
+46834,11514,
+46835,11515,
+46836,1707,
+46837,11516,
+46838,11517,
+46839,11518,
+46840,1708,
+46841,11519,
+46842,11520,
+46843,11521,
+46844,11522,
+46845,11523,
+46846,11524,
+46847,11525,
+46848,1709,
+46849,1710,
+46850,11526,
+46851,11527,
+46852,11528,
+46853,1711,
+46854,11529,
+46855,11530,
+46856,11531,
+46857,11532,
+46858,11533,
+46859,11534,
+46860,11535,
+46861,11536,
+46862,11537,
+46863,11538,
+46864,11539,
+46865,11540,
+46866,11541,
+46867,11542,
+46868,11543,
+46869,11544,
+46870,11545,
+46871,11546,
+46872,11547,
+46873,11548,
+46874,11549,
+46875,11550,
+46876,11551,
+46877,11552,
+46878,11553,
+46879,11554,
+46880,11555,
+46881,11556,
+46882,11557,
+46883,11558,
+46884,11559,
+46885,11560,
+46886,11561,
+46887,11562,
+46888,1712,
+46889,1713,
+46890,11563,
+46891,11564,
+46892,1714,
+46893,11565,
+46894,11566,
+46895,1715,
+46896,1716,
+46897,11567,
+46898,11568,
+46899,11569,
+46900,11570,
+46901,11571,
+46902,11572,
+46903,11573,
+46904,1717,
+46905,1718,
+46906,11574,
+46907,1719,
+46908,11575,
+46909,11576,
+46910,11577,
+46911,11578,
+46912,11579,
+46913,11580,
+46914,11581,
+46915,11582,
+46916,1720,
+46917,11583,
+46918,11584,
+46919,11585,
+46920,1721,
+46921,11586,
+46922,11587,
+46923,11588,
+46924,1722,
+46925,11589,
+46926,11590,
+46927,11591,
+46928,11592,
+46929,11593,
+46930,11594,
+46931,11595,
+46932,1723,
+46933,1724,
+46934,11596,
+46935,11597,
+46936,11598,
+46937,11599,
+46938,11600,
+46939,11601,
+46940,11602,
+46941,11603,
+46942,11604,
+46943,11605,
+46944,1725,
+46945,11606,
+46946,11607,
+46947,11608,
+46948,1726,
+46949,11609,
+46950,11610,
+46951,11611,
+46952,1727,
+46953,11612,
+46954,11613,
+46955,11614,
+46956,11615,
+46957,11616,
+46958,11617,
+46959,11618,
+46960,1728,
+46961,1729,
+46962,11619,
+46963,1730,
+46964,11620,
+46965,1731,
+46966,11621,
+46967,11622,
+46968,11623,
+46969,11624,
+46970,11625,
+46971,11626,
+46972,1732,
+46973,1733,
+46974,11627,
+46975,11628,
+46976,1734,
+46977,11629,
+46978,11630,
+46979,11631,
+46980,1735,
+46981,11632,
+46982,11633,
+46983,11634,
+46984,11635,
+46985,11636,
+46986,11637,
+46987,11638,
+46988,1736,
+46989,1737,
+46990,11639,
+46991,1738,
+46992,1739,
+46993,1740,
+46994,1741,
+46995,11640,
+46996,11641,
+46997,11642,
+46998,1742,
+46999,1743,
+47000,1744,
+47001,1745,
+47002,11643,
+47003,11644,
+47004,1746,
+47005,11645,
+47006,11646,
+47007,11647,
+47008,1747,
+47009,11648,
+47010,11649,
+47011,11650,
+47012,11651,
+47013,11652,
+47014,11653,
+47015,11654,
+47016,1748,
+47017,1749,
+47018,11655,
+47019,1750,
+47020,1751,
+47021,1752,
+47022,11656,
+47023,11657,
+47024,11658,
+47025,11659,
+47026,11660,
+47027,11661,
+47028,1753,
+47029,1754,
+47030,11662,
+47031,11663,
+47032,1755,
+47033,11664,
+47034,11665,
+47035,11666,
+47036,11667,
+47037,11668,
+47038,11669,
+47039,11670,
+47040,11671,
+47041,11672,
+47042,11673,
+47043,11674,
+47044,11675,
+47045,11676,
+47046,11677,
+47047,1756,
+47048,11678,
+47049,1757,
+47050,11679,
+47051,11680,
+47052,11681,
+47053,11682,
+47054,11683,
+47055,11684,
+47056,11685,
+47057,11686,
+47058,11687,
+47059,11688,
+47060,11689,
+47061,11690,
+47062,11691,
+47063,11692,
+47064,11693,
+47065,11694,
+47066,11695,
+47067,11696,
+47068,11697,
+47069,11698,
+47070,11699,
+47071,11700,
+47072,11701,
+47073,11702,
+47074,11703,
+47075,11704,
+47076,11705,
+47077,11706,
+47078,11707,
+47079,11708,
+47080,11709,
+47081,11710,
+47082,11711,
+47083,11712,
+47084,1758,
+47085,1759,
+47086,11713,
+47087,11714,
+47088,1760,
+47089,11715,
+47090,11716,
+47091,11717,
+47092,1761,
+47093,11718,
+47094,11719,
+47095,11720,
+47096,11721,
+47097,11722,
+47098,11723,
+47099,11724,
+47100,1762,
+47101,1763,
+47102,11725,
+47103,1764,
+47104,1765,
+47105,1766,
+47106,11726,
+47107,11727,
+47108,11728,
+47109,11729,
+47110,11730,
+47111,1767,
+47112,1768,
+47113,1769,
+47114,11731,
+47115,11732,
+47116,1770,
+47117,11733,
+47118,11734,
+47119,11735,
+47120,1771,
+47121,11736,
+47122,11737,
+47123,11738,
+47124,11739,
+47125,11740,
+47126,11741,
+47127,11742,
+47128,1772,
+47129,1773,
+47130,11743,
+47131,1774,
+47132,11744,
+47133,1775,
+47134,11745,
+47135,11746,
+47136,11747,
+47137,11748,
+47138,11749,
+47139,11750,
+47140,1776,
+47141,1777,
+47142,11751,
+47143,11752,
+47144,1778,
+47145,11753,
+47146,11754,
+47147,11755,
+47148,1779,
+47149,11756,
+47150,11757,
+47151,11758,
+47152,11759,
+47153,11760,
+47154,11761,
+47155,11762,
+47156,1780,
+47157,1781,
+47158,11763,
+47159,1782,
+47160,1783,
+47161,1784,
+47162,11764,
+47163,11765,
+47164,11766,
+47165,11767,
+47166,11768,
+47167,11769,
+47168,1785,
+47169,11770,
+47170,11771,
+47171,11772,
+47172,1786,
+47173,11773,
+47174,11774,
+47175,11775,
+47176,11776,
+47177,11777,
+47178,11778,
+47179,11779,
+47180,11780,
+47181,11781,
+47182,11782,
+47183,11783,
+47184,11784,
+47185,1787,
+47186,11785,
+47187,1788,
+47188,11786,
+47189,11787,
+47190,11788,
+47191,11789,
+47192,11790,
+47193,11791,
+47194,11792,
+47195,11793,
+47196,1789,
+47197,1790,
+47198,11794,
+47199,11795,
+47200,1791,
+47201,11796,
+47202,11797,
+47203,11798,
+47204,1792,
+47205,11799,
+47206,11800,
+47207,11801,
+47208,11802,
+47209,11803,
+47210,11804,
+47211,11805,
+47212,1793,
+47213,1794,
+47214,11806,
+47215,1795,
+47216,11807,
+47217,1796,
+47218,11808,
+47219,11809,
+47220,11810,
+47221,11811,
+47222,11812,
+47223,11813,
+47224,1797,
+47225,11814,
+47226,11815,
+47227,11816,
+47228,1798,
+47229,11817,
+47230,11818,
+47231,11819,
+47232,11820,
+47233,11821,
+47234,11822,
+47235,11823,
+47236,11824,
+47237,11825,
+47238,11826,
+47239,11827,
+47240,11828,
+47241,11829,
+47242,11830,
+47243,11831,
+47244,11832,
+47245,1799,
+47246,11833,
+47247,11834,
+47248,11835,
+47249,11836,
+47250,11837,
+47251,11838,
+47252,11839,
+47253,11840,
+47254,11841,
+47255,11842,
+47256,11843,
+47257,11844,
+47258,11845,
+47259,11846,
+47260,11847,
+47261,11848,
+47262,11849,
+47263,11850,
+47264,11851,
+47265,11852,
+47266,11853,
+47267,11854,
+47268,11855,
+47269,11856,
+47270,11857,
+47271,11858,
+47272,1800,
+47273,11859,
+47274,11860,
+47275,11861,
+47276,11862,
+47277,11863,
+47278,11864,
+47279,11865,
+47280,1801,
+47281,11866,
+47282,11867,
+47283,11868,
+47284,1802,
+47285,11869,
+47286,11870,
+47287,11871,
+47288,1803,
+47289,11872,
+47290,11873,
+47291,11874,
+47292,11875,
+47293,11876,
+47294,11877,
+47295,11878,
+47296,1804,
+47297,1805,
+47298,11879,
+47299,1806,
+47300,11880,
+47301,1807,
+47302,11881,
+47303,11882,
+47304,11883,
+47305,11884,
+47306,11885,
+47307,11886,
+47308,1808,
+47309,11887,
+47310,11888,
+47311,11889,
+47312,1809,
+47313,11890,
+47314,11891,
+47315,11892,
+47316,1810,
+47317,11893,
+47318,11894,
+47319,11895,
+47320,11896,
+47321,11897,
+47322,11898,
+47323,11899,
+47324,11900,
+47325,1811,
+47326,11901,
+47327,1812,
+47328,11902,
+47329,1813,
+47330,11903,
+47331,11904,
+47332,11905,
+47333,11906,
+47334,11907,
+47335,11908,
+47336,1814,
+47337,1815,
+47338,11909,
+47339,11910,
+47340,1816,
+47341,11911,
+47342,11912,
+47343,11913,
+47344,1817,
+47345,11914,
+47346,11915,
+47347,11916,
+47348,11917,
+47349,11918,
+47350,11919,
+47351,11920,
+47352,1818,
+47353,1819,
+47354,11921,
+47355,1820,
+47356,11922,
+47357,1821,
+47358,11923,
+47359,11924,
+47360,11925,
+47361,11926,
+47362,11927,
+47363,11928,
+47364,1822,
+47365,11929,
+47366,11930,
+47367,11931,
+47368,11932,
+47369,11933,
+47370,11934,
+47371,11935,
+47372,11936,
+47373,11937,
+47374,11938,
+47375,11939,
+47376,11940,
+47377,11941,
+47378,11942,
+47379,11943,
+47380,11944,
+47381,11945,
+47382,11946,
+47383,11947,
+47384,1823,
+47385,11948,
+47386,11949,
+47387,11950,
+47388,11951,
+47389,11952,
+47390,11953,
+47391,11954,
+47392,1824,
+47393,11955,
+47394,11956,
+47395,11957,
+47396,11958,
+47397,11959,
+47398,11960,
+47399,11961,
+47400,11962,
+47401,11963,
+47402,11964,
+47403,11965,
+47404,11966,
+47405,11967,
+47406,11968,
+47407,11969,
+47408,11970,
+47409,11971,
+47410,11972,
+47411,11973,
+47412,11974,
+47413,11975,
+47414,11976,
+47415,11977,
+47416,11978,
+47417,11979,
+47418,11980,
+47419,11981,
+47420,1825,
+47421,1826,
+47422,11982,
+47423,11983,
+47424,1827,
+47425,11984,
+47426,11985,
+47427,11986,
+47428,1828,
+47429,11987,
+47430,11988,
+47431,11989,
+47432,11990,
+47433,11991,
+47434,11992,
+47435,11993,
+47436,1829,
+47437,11994,
+47438,11995,
+47439,1830,
+47440,11996,
+47441,1831,
+47442,11997,
+47443,11998,
+47444,11999,
+47445,12000,
+47446,12001,
+47447,12002,
+47448,1832,
+47449,1833,
+47450,12003,
+47451,12004,
+47452,1834,
+47453,12005,
+47454,12006,
+47455,12007,
+47456,1835,
+47457,12008,
+47458,12009,
+47459,12010,
+47460,12011,
+47461,12012,
+47462,12013,
+47463,12014,
+47464,1836,
+47465,1837,
+47466,12015,
+47467,1838,
+47468,12016,
+47469,1839,
+47470,12017,
+47471,12018,
+47472,12019,
+47473,12020,
+47474,12021,
+47475,12022,
+47476,1840,
+47477,1841,
+47478,12023,
+47479,12024,
+47480,1842,
+47481,12025,
+47482,12026,
+47483,12027,
+47484,1843,
+47485,12028,
+47486,12029,
+47487,12030,
+47488,12031,
+47489,12032,
+47490,12033,
+47491,12034,
+47492,1844,
+47493,1845,
+47494,12035,
+47495,1846,
+47496,12036,
+47497,1847,
+47498,1848,
+47499,12037,
+47500,12038,
+47501,1849,
+47502,1850,
+47503,12039,
+47504,12040,
+47505,12041,
+47506,12042,
+47507,12043,
+47508,12044,
+47509,12045,
+47510,12046,
+47511,12047,
+47512,12048,
+47513,12049,
+47514,12050,
+47515,12051,
+47516,12052,
+47517,12053,
+47518,12054,
+47519,12055,
+47520,12056,
+47521,12057,
+47522,12058,
+47523,12059,
+47524,12060,
+47525,12061,
+47526,12062,
+47527,12063,
+47528,12064,
+47529,12065,
+47530,12066,
+47531,12067,
+47532,1851,
+47533,1852,
+47534,12068,
+47535,12069,
+47536,1853,
+47537,12070,
+47538,12071,
+47539,12072,
+47540,1854,
+47541,12073,
+47542,12074,
+47543,12075,
+47544,12076,
+47545,12077,
+47546,12078,
+47547,12079,
+47548,1855,
+47549,1856,
+47550,12080,
+47551,1857,
+47552,12081,
+47553,1858,
+47554,12082,
+47555,12083,
+47556,12084,
+47557,12085,
+47558,12086,
+47559,12087,
+47560,1859,
+47561,1860,
+47562,12088,
+47563,12089,
+47564,1861,
+47565,12090,
+47566,1862,
+47567,1863,
+47568,1864,
+47569,1865,
+47570,1866,
+47571,12091,
+47572,12092,
+47573,12093,
+47574,12094,
+47575,12095,
+47576,1867,
+47577,1868,
+47578,12096,
+47579,1869,
+47580,12097,
+47581,1870,
+47582,1871,
+47583,12098,
+47584,12099,
+47585,1872,
+47586,12100,
+47587,1873,
+47588,1874,
+47589,1875,
+47590,12101,
+47591,12102,
+47592,1876,
+47593,12103,
+47594,12104,
+47595,12105,
+47596,1877,
+47597,12106,
+47598,12107,
+47599,12108,
+47600,12109,
+47601,12110,
+47602,12111,
+47603,12112,
+47604,1878,
+47605,1879,
+47606,12113,
+47607,1880,
+47608,1881,
+47609,1882,
+47610,1883,
+47611,12114,
+47612,12115,
+47613,12116,
+47614,12117,
+47615,12118,
+47616,1884,
+47617,1885,
+47618,12119,
+47619,12120,
+47620,12121,
+47621,12122,
+47622,12123,
+47623,12124,
+47624,1886,
+47625,12125,
+47626,12126,
+47627,12127,
+47628,12128,
+47629,12129,
+47630,12130,
+47631,12131,
+47632,12132,
+47633,12133,
+47634,12134,
+47635,12135,
+47636,12136,
+47637,1887,
+47638,12137,
+47639,12138,
+47640,12139,
+47641,12140,
+47642,12141,
+47643,12142,
+47644,12143,
+47645,12144,
+47646,12145,
+47647,12146,
+47648,12147,
+47649,12148,
+47650,12149,
+47651,12150,
+47652,12151,
+47653,12152,
+47654,12153,
+47655,12154,
+47656,12155,
+47657,12156,
+47658,12157,
+47659,12158,
+47660,12159,
+47661,12160,
+47662,12161,
+47663,12162,
+47664,12163,
+47665,12164,
+47666,12165,
+47667,12166,
+47668,12167,
+47669,12168,
+47670,12169,
+47671,12170,
+47672,1888,
+47673,1889,
+47674,12171,
+47675,12172,
+47676,1890,
+47677,12173,
+47678,12174,
+47679,12175,
+47680,1891,
+47681,12176,
+47682,1892,
+47683,12177,
+47684,12178,
+47685,12179,
+47686,12180,
+47687,12181,
+47688,1893,
+47689,1894,
+47690,12182,
+47691,1895,
+47692,12183,
+47693,1896,
+47694,1897,
+47695,12184,
+47696,12185,
+47697,12186,
+47698,12187,
+47699,1898,
+47700,1899,
+47701,1900,
+47702,12188,
+47703,12189,
+47704,1901,
+47705,12190,
+47706,12191,
+47707,12192,
+47708,1902,
+47709,12193,
+47710,12194,
+47711,12195,
+47712,12196,
+47713,12197,
+47714,12198,
+47715,12199,
+47716,1903,
+47717,1904,
+47718,12200,
+47719,1905,
+47720,1906,
+47721,1907,
+47722,12201,
+47723,12202,
+47724,12203,
+47725,12204,
+47726,12205,
+47727,12206,
+47728,1908,
+47729,1909,
+47730,12207,
+47731,12208,
+47732,1910,
+47733,12209,
+47734,12210,
+47735,12211,
+47736,1911,
+47737,12212,
+47738,12213,
+47739,12214,
+47740,12215,
+47741,12216,
+47742,12217,
+47743,12218,
+47744,12219,
+47745,12220,
+47746,12221,
+47747,1912,
+47748,1913,
+47749,1914,
+47750,12222,
+47751,1915,
+47752,12223,
+47753,12224,
+47754,12225,
+47755,12226,
+47756,1916,
+47757,12227,
+47758,12228,
+47759,12229,
+47760,12230,
+47761,12231,
+47762,12232,
+47763,12233,
+47764,12234,
+47765,12235,
+47766,12236,
+47767,12237,
+47768,12238,
+47769,12239,
+47770,12240,
+47771,12241,
+47772,12242,
+47773,12243,
+47774,12244,
+47775,12245,
+47776,12246,
+47777,12247,
+47778,12248,
+47779,12249,
+47780,12250,
+47781,12251,
+47782,12252,
+47783,12253,
+47784,1917,
+47785,1918,
+47786,12254,
+47787,1919,
+47788,1920,
+47789,12255,
+47790,12256,
+47791,12257,
+47792,1921,
+47793,12258,
+47794,1922,
+47795,12259,
+47796,12260,
+47797,12261,
+47798,12262,
+47799,12263,
+47800,1923,
+47801,1924,
+47802,12264,
+47803,1925,
+47804,12265,
+47805,1926,
+47806,12266,
+47807,12267,
+47808,12268,
+47809,12269,
+47810,12270,
+47811,12271,
+47812,1927,
+47813,12272,
+47814,12273,
+47815,12274,
+47816,1928,
+47817,12275,
+47818,12276,
+47819,12277,
+47820,12278,
+47821,12279,
+47822,12280,
+47823,12281,
+47824,12282,
+47825,12283,
+47826,12284,
+47827,12285,
+47828,12286,
+47829,12287,
+47830,12288,
+47831,12289,
+47832,1929,
+47833,1930,
+47834,12290,
+47835,12291,
+47836,12292,
+47837,12293,
+47838,12294,
+47839,12295,
+47840,12296,
+47841,12297,
+47842,12298,
+47843,12299,
+47844,12300,
+47845,12301,
+47846,12302,
+47847,12303,
+47848,12304,
+47849,12305,
+47850,12306,
+47851,12307,
+47852,12308,
+47853,12309,
+47854,12310,
+47855,12311,
+47856,12312,
+47857,12313,
+47858,12314,
+47859,12315,
+47860,12316,
+47861,12317,
+47862,12318,
+47863,12319,
+47864,12320,
+47865,12321,
+47866,12322,
+47867,12323,
+47868,1931,
+47869,12324,
+47870,12325,
+47871,12326,
+47872,1932,
+47873,12327,
+47874,12328,
+47875,12329,
+47876,1933,
+47877,12330,
+47878,12331,
+47879,12332,
+47880,12333,
+47881,12334,
+47882,12335,
+47883,12336,
+47884,12337,
+47885,1934,
+47886,12338,
+47887,1935,
+47888,12339,
+47889,1936,
+47890,12340,
+47891,12341,
+47892,12342,
+47893,12343,
+47894,12344,
+47895,12345,
+47896,1937,
+47897,12346,
+47898,12347,
+47899,12348,
+47900,1938,
+47901,12349,
+47902,12350,
+47903,12351,
+47904,1939,
+47905,12352,
+47906,12353,
+47907,12354,
+47908,12355,
+47909,12356,
+47910,12357,
+47911,12358,
+47912,12359,
+47913,1940,
+47914,12360,
+47915,1941,
+47916,12361,
+47917,12362,
+47918,12363,
+47919,12364,
+47920,12365,
+47921,12366,
+47922,12367,
+47923,12368,
+47924,1942,
+47925,1943,
+47926,1944,
+47927,12369,
+47928,1945,
+47929,12370,
+47930,12371,
+47931,1946,
+47932,1947,
+47933,1948,
+47934,1949,
+47935,12372,
+47936,12373,
+47937,12374,
+47938,12375,
+47939,12376,
+47940,1950,
+47941,1951,
+47942,12377,
+47943,1952,
+47944,12378,
+47945,1953,
+47946,12379,
+47947,12380,
+47948,12381,
+47949,1954,
+47950,12382,
+47951,1955,
+47952,1956,
+47953,12383,
+47954,12384,
+47955,12385,
+47956,1957,
+47957,12386,
+47958,12387,
+47959,12388,
+47960,1958,
+47961,12389,
+47962,12390,
+47963,12391,
+47964,12392,
+47965,12393,
+47966,12394,
+47967,12395,
+47968,12396,
+47969,1959,
+47970,12397,
+47971,1960,
+47972,12398,
+47973,12399,
+47974,12400,
+47975,12401,
+47976,12402,
+47977,12403,
+47978,12404,
+47979,12405,
+47980,1961,
+47981,12406,
+47982,12407,
+47983,12408,
+47984,12409,
+47985,12410,
+47986,12411,
+47987,12412,
+47988,12413,
+47989,12414,
+47990,12415,
+47991,12416,
+47992,12417,
+47993,12418,
+47994,12419,
+47995,12420,
+47996,12421,
+47997,12422,
+47998,12423,
+47999,12424,
+48000,12425,
+48001,12426,
+48002,12427,
+48003,12428,
+48004,12429,
+48005,12430,
+48006,12431,
+48007,12432,
+48008,1962,
+48009,12433,
+48010,12434,
+48011,12435,
+48012,1963,
+48013,12436,
+48014,12437,
+48015,12438,
+48016,1964,
+48017,12439,
+48018,12440,
+48019,12441,
+48020,12442,
+48021,12443,
+48022,12444,
+48023,12445,
+48024,12446,
+48025,12447,
+48026,12448,
+48027,12449,
+48028,12450,
+48029,12451,
+48030,12452,
+48031,12453,
+48032,12454,
+48033,12455,
+48034,12456,
+48035,12457,
+48036,1965,
+48037,12458,
+48038,12459,
+48039,12460,
+48040,1966,
+48041,12461,
+48042,12462,
+48043,12463,
+48044,1967,
+48045,12464,
+48046,12465,
+48047,12466,
+48048,12467,
+48049,12468,
+48050,12469,
+48051,12470,
+48052,1968,
+48053,12471,
+48054,12472,
+48055,1969,
+48056,12473,
+48057,12474,
+48058,12475,
+48059,12476,
+48060,12477,
+48061,12478,
+48062,12479,
+48063,12480,
+48064,1970,
+48065,12481,
+48066,12482,
+48067,12483,
+48068,1971,
+48069,12484,
+48070,12485,
+48071,12486,
+48072,1972,
+48073,12487,
+48074,12488,
+48075,12489,
+48076,12490,
+48077,12491,
+48078,12492,
+48079,12493,
+48080,1973,
+48081,12494,
+48082,12495,
+48083,1974,
+48084,12496,
+48085,12497,
+48086,12498,
+48087,12499,
+48088,12500,
+48089,12501,
+48090,12502,
+48091,12503,
+48092,12504,
+48093,12505,
+48094,12506,
+48095,12507,
+48096,12508,
+48097,12509,
+48098,12510,
+48099,12511,
+48100,12512,
+48101,12513,
+48102,12514,
+48103,12515,
+48104,12516,
+48105,12517,
+48106,12518,
+48107,12519,
+48108,12520,
+48109,12521,
+48110,12522,
+48111,12523,
+48112,12524,
+48113,12525,
+48114,12526,
+48115,12527,
+48116,12528,
+48117,12529,
+48118,12530,
+48119,12531,
+48120,1975,
+48121,1976,
+48122,12532,
+48123,12533,
+48124,1977,
+48125,12534,
+48126,12535,
+48127,1978,
+48128,1979,
+48129,12536,
+48130,1980,
+48131,12537,
+48132,12538,
+48133,12539,
+48134,12540,
+48135,12541,
+48136,1981,
+48137,1982,
+48138,12542,
+48139,1983,
+48140,1984,
+48141,1985,
+48142,12543,
+48143,1986,
+48144,12544,
+48145,1987,
+48146,12545,
+48147,12546,
+48148,1988,
+48149,1989,
+48150,1990,
+48151,1991,
+48152,1992,
+48153,12547,
+48154,12548,
+48155,1993,
+48156,1994,
+48157,1995,
+48158,1996,
+48159,1997,
+48160,12549,
+48161,12550,
+48162,12551,
+48163,12552,
+48164,1998,
+48165,1999,
+48166,12553,
+48167,2000,
+48168,12554,
+48169,2001,
+48170,12555,
+48171,12556,
+48172,12557,
+48173,2002,
+48174,12558,
+48175,12559,
+48176,2003,
+48177,2004,
+48178,12560,
+48179,12561,
+48180,2005,
+48181,12562,
+48182,12563,
+48183,12564,
+48184,2006,
+48185,12565,
+48186,12566,
+48187,12567,
+48188,12568,
+48189,12569,
+48190,12570,
+48191,12571,
+48192,2007,
+48193,2008,
+48194,12572,
+48195,2009,
+48196,2010,
+48197,2011,
+48198,12573,
+48199,12574,
+48200,12575,
+48201,2012,
+48202,12576,
+48203,12577,
+48204,2013,
+48205,2014,
+48206,12578,
+48207,12579,
+48208,2015,
+48209,12580,
+48210,12581,
+48211,12582,
+48212,12583,
+48213,12584,
+48214,12585,
+48215,12586,
+48216,12587,
+48217,12588,
+48218,12589,
+48219,12590,
+48220,12591,
+48221,2016,
+48222,12592,
+48223,12593,
+48224,12594,
+48225,12595,
+48226,12596,
+48227,12597,
+48228,12598,
+48229,12599,
+48230,12600,
+48231,12601,
+48232,12602,
+48233,12603,
+48234,12604,
+48235,12605,
+48236,12606,
+48237,12607,
+48238,12608,
+48239,12609,
+48240,12610,
+48241,12611,
+48242,12612,
+48243,12613,
+48244,12614,
+48245,12615,
+48246,12616,
+48247,12617,
+48248,12618,
+48249,12619,
+48250,12620,
+48251,12621,
+48252,12622,
+48253,12623,
+48254,12624,
+48255,12625,
+48256,12626,
+48257,12627,
+48258,12628,
+48259,12629,
+48260,2017,
+48261,2018,
+48262,12630,
+48263,12631,
+48264,2019,
+48265,12632,
+48266,12633,
+48267,2020,
+48268,2021,
+48269,12634,
+48270,2022,
+48271,12635,
+48272,12636,
+48273,12637,
+48274,12638,
+48275,12639,
+48276,2023,
+48277,2024,
+48278,12640,
+48279,2025,
+48280,12641,
+48281,2026,
+48282,2027,
+48283,12642,
+48284,12643,
+48285,12644,
+48286,12645,
+48287,12646,
+48288,2028,
+48289,2029,
+48290,12647,
+48291,12648,
+48292,2030,
+48293,12649,
+48294,12650,
+48295,2031,
+48296,2032,
+48297,12651,
+48298,12652,
+48299,12653,
+48300,12654,
+48301,12655,
+48302,12656,
+48303,12657,
+48304,2033,
+48305,2034,
+48306,12658,
+48307,2035,
+48308,2036,
+48309,2037,
+48310,12659,
+48311,12660,
+48312,12661,
+48313,12662,
+48314,12663,
+48315,12664,
+48316,2038,
+48317,2039,
+48318,12665,
+48319,12666,
+48320,2040,
+48321,12667,
+48322,12668,
+48323,12669,
+48324,2041,
+48325,12670,
+48326,12671,
+48327,12672,
+48328,12673,
+48329,12674,
+48330,12675,
+48331,12676,
+48332,12677,
+48333,2042,
+48334,12678,
+48335,2043,
+48336,2044,
+48337,2045,
+48338,12679,
+48339,12680,
+48340,12681,
+48341,2046,
+48342,12682,
+48343,12683,
+48344,2047,
+48345,12684,
+48346,12685,
+48347,12686,
+48348,2048,
+48349,12687,
+48350,12688,
+48351,12689,
+48352,12690,
+48353,12691,
+48354,12692,
+48355,12693,
+48356,12694,
+48357,12695,
+48358,12696,
+48359,12697,
+48360,12698,
+48361,12699,
+48362,12700,
+48363,12701,
+48364,12702,
+48365,12703,
+48366,12704,
+48367,12705,
+48368,12706,
+48369,12707,
+48370,12708,
+48371,12709,
+48372,2049,
+48373,2050,
+48374,2051,
+48375,12710,
+48376,2052,
+48377,12711,
+48378,12712,
+48379,12713,
+48380,2053,
+48381,12714,
+48382,12715,
+48383,12716,
+48384,12717,
+48385,12718,
+48386,12719,
+48387,12720,
+48388,2054,
+48389,2055,
+48390,12721,
+48391,2056,
+48392,12722,
+48393,2057,
+48394,12723,
+48395,12724,
+48396,12725,
+48397,12726,
+48398,12727,
+48399,12728,
+48400,2058,
+48401,12729,
+48402,12730,
+48403,12731,
+48404,2059,
+48405,12732,
+48406,12733,
+48407,12734,
+48408,12735,
+48409,12736,
+48410,12737,
+48411,12738,
+48412,12739,
+48413,12740,
+48414,12741,
+48415,12742,
+48416,12743,
+48417,12744,
+48418,12745,
+48419,12746,
+48420,2060,
+48421,12747,
+48422,12748,
+48423,12749,
+48424,12750,
+48425,12751,
+48426,12752,
+48427,12753,
+48428,2061,
+48429,12754,
+48430,12755,
+48431,12756,
+48432,12757,
+48433,12758,
+48434,12759,
+48435,12760,
+48436,12761,
+48437,12762,
+48438,12763,
+48439,12764,
+48440,12765,
+48441,12766,
+48442,12767,
+48443,12768,
+48444,12769,
+48445,12770,
+48446,12771,
+48447,12772,
+48448,2062,
+48449,12773,
+48450,12774,
+48451,12775,
+48452,12776,
+48453,12777,
+48454,12778,
+48455,12779,
+48456,2063,
+48457,2064,
+48458,12780,
+48459,12781,
+48460,2065,
+48461,12782,
+48462,12783,
+48463,12784,
+48464,2066,
+48465,12785,
+48466,12786,
+48467,12787,
+48468,12788,
+48469,12789,
+48470,12790,
+48471,12791,
+48472,2067,
+48473,2068,
+48474,12792,
+48475,12793,
+48476,12794,
+48477,12795,
+48478,12796,
+48479,12797,
+48480,12798,
+48481,12799,
+48482,12800,
+48483,12801,
+48484,2069,
+48485,12802,
+48486,12803,
+48487,12804,
+48488,2070,
+48489,12805,
+48490,12806,
+48491,12807,
+48492,12808,
+48493,12809,
+48494,12810,
+48495,12811,
+48496,12812,
+48497,12813,
+48498,12814,
+48499,12815,
+48500,12816,
+48501,12817,
+48502,12818,
+48503,12819,
+48504,12820,
+48505,12821,
+48506,12822,
+48507,12823,
+48508,12824,
+48509,12825,
+48510,12826,
+48511,12827,
+48512,2071,
+48513,2072,
+48514,12828,
+48515,12829,
+48516,2073,
+48517,12830,
+48518,12831,
+48519,2074,
+48520,2075,
+48521,2076,
+48522,2077,
+48523,12832,
+48524,12833,
+48525,12834,
+48526,12835,
+48527,12836,
+48528,2078,
+48529,2079,
+48530,12837,
+48531,2080,
+48532,12838,
+48533,2081,
+48534,12839,
+48535,12840,
+48536,12841,
+48537,2082,
+48538,2083,
+48539,12842,
+48540,2084,
+48541,12843,
+48542,12844,
+48543,12845,
+48544,12846,
+48545,12847,
+48546,12848,
+48547,12849,
+48548,2085,
+48549,12850,
+48550,12851,
+48551,12852,
+48552,12853,
+48553,12854,
+48554,12855,
+48555,12856,
+48556,12857,
+48557,12858,
+48558,12859,
+48559,12860,
+48560,2086,
+48561,12861,
+48562,12862,
+48563,12863,
+48564,12864,
+48565,12865,
+48566,12866,
+48567,12867,
+48568,2087,
+48569,12868,
+48570,12869,
+48571,12870,
+48572,12871,
+48573,12872,
+48574,12873,
+48575,12874,
+48576,12875,
+48577,12876,
+48578,12877,
+48579,12878,
+48580,12879,
+48581,12880,
+48582,12881,
+48583,12882,
+48584,12883,
+48585,12884,
+48586,12885,
+48587,12886,
+48588,12887,
+48589,12888,
+48590,12889,
+48591,12890,
+48592,12891,
+48593,12892,
+48594,12893,
+48595,12894,
+48596,2088,
+48597,2089,
+48598,12895,
+48599,12896,
+48600,2090,
+48601,12897,
+48602,12898,
+48603,12899,
+48604,2091,
+48605,12900,
+48606,12901,
+48607,12902,
+48608,12903,
+48609,12904,
+48610,12905,
+48611,12906,
+48612,12907,
+48613,12908,
+48614,12909,
+48615,12910,
+48616,12911,
+48617,2092,
+48618,12912,
+48619,12913,
+48620,12914,
+48621,12915,
+48622,12916,
+48623,12917,
+48624,2093,
+48625,12918,
+48626,12919,
+48627,12920,
+48628,2094,
+48629,12921,
+48630,12922,
+48631,12923,
+48632,2095,
+48633,12924,
+48634,12925,
+48635,12926,
+48636,12927,
+48637,12928,
+48638,12929,
+48639,12930,
+48640,2096,
+48641,12931,
+48642,12932,
+48643,2097,
+48644,12933,
+48645,2098,
+48646,12934,
+48647,12935,
+48648,12936,
+48649,12937,
+48650,12938,
+48651,12939,
+48652,2099,
+48653,2100,
+48654,12940,
+48655,12941,
+48656,2101,
+48657,12942,
+48658,12943,
+48659,12944,
+48660,2102,
+48661,12945,
+48662,12946,
+48663,12947,
+48664,12948,
+48665,12949,
+48666,12950,
+48667,12951,
+48668,2103,
+48669,2104,
+48670,12952,
+48671,2105,
+48672,12953,
+48673,12954,
+48674,12955,
+48675,12956,
+48676,12957,
+48677,12958,
+48678,12959,
+48679,12960,
+48680,12961,
+48681,12962,
+48682,12963,
+48683,12964,
+48684,12965,
+48685,12966,
+48686,12967,
+48687,12968,
+48688,12969,
+48689,12970,
+48690,12971,
+48691,12972,
+48692,12973,
+48693,12974,
+48694,12975,
+48695,12976,
+48696,12977,
+48697,12978,
+48698,12979,
+48699,12980,
+48700,12981,
+48701,12982,
+48702,12983,
+48703,12984,
+48704,12985,
+48705,12986,
+48706,12987,
+48707,12988,
+48708,2106,
+48709,2107,
+48710,12989,
+48711,12990,
+48712,2108,
+48713,12991,
+48714,12992,
+48715,12993,
+48716,2109,
+48717,12994,
+48718,2110,
+48719,12995,
+48720,12996,
+48721,12997,
+48722,12998,
+48723,12999,
+48724,2111,
+48725,2112,
+48726,13000,
+48727,2113,
+48728,13001,
+48729,2114,
+48730,2115,
+48731,2116,
+48732,13002,
+48733,13003,
+48734,13004,
+48735,13005,
+48736,2117,
+48737,2118,
+48738,13006,
+48739,13007,
+48740,2119,
+48741,13008,
+48742,13009,
+48743,13010,
+48744,2120,
+48745,13011,
+48746,2121,
+48747,13012,
+48748,13013,
+48749,13014,
+48750,13015,
+48751,13016,
+48752,2122,
+48753,2123,
+48754,13017,
+48755,2124,
+48756,2125,
+48757,2126,
+48758,13018,
+48759,13019,
+48760,13020,
+48761,13021,
+48762,13022,
+48763,2127,
+48764,2128,
+48765,2129,
+48766,13023,
+48767,13024,
+48768,2130,
+48769,13025,
+48770,13026,
+48771,13027,
+48772,2131,
+48773,13028,
+48774,13029,
+48775,13030,
+48776,13031,
+48777,13032,
+48778,13033,
+48779,13034,
+48780,2132,
+48781,2133,
+48782,13035,
+48783,2134,
+48784,2135,
+48785,2136,
+48786,13036,
+48787,13037,
+48788,13038,
+48789,13039,
+48790,13040,
+48791,13041,
+48792,2137,
+48793,2138,
+48794,13042,
+48795,13043,
+48796,13044,
+48797,13045,
+48798,13046,
+48799,13047,
+48800,13048,
+48801,13049,
+48802,13050,
+48803,13051,
+48804,13052,
+48805,13053,
+48806,13054,
+48807,13055,
+48808,2139,
+48809,13056,
+48810,13057,
+48811,13058,
+48812,13059,
+48813,13060,
+48814,13061,
+48815,13062,
+48816,13063,
+48817,13064,
+48818,13065,
+48819,13066,
+48820,13067,
+48821,13068,
+48822,13069,
+48823,13070,
+48824,13071,
+48825,13072,
+48826,13073,
+48827,13074,
+48828,13075,
+48829,13076,
+48830,13077,
+48831,13078,
+48832,13079,
+48833,13080,
+48834,13081,
+48835,13082,
+48836,13083,
+48837,13084,
+48838,13085,
+48839,13086,
+48840,13087,
+48841,13088,
+48842,13089,
+48843,13090,
+48844,13091,
+48845,13092,
+48846,13093,
+48847,13094,
+48848,2140,
+48849,2141,
+48850,13095,
+48851,13096,
+48852,2142,
+48853,13097,
+48854,13098,
+48855,2143,
+48856,2144,
+48857,13099,
+48858,13100,
+48859,13101,
+48860,13102,
+48861,13103,
+48862,13104,
+48863,13105,
+48864,2145,
+48865,13106,
+48866,13107,
+48867,2146,
+48868,2147,
+48869,2148,
+48870,13108,
+48871,13109,
+48872,13110,
+48873,13111,
+48874,13112,
+48875,13113,
+48876,2149,
+48877,13114,
+48878,13115,
+48879,13116,
+48880,13117,
+48881,13118,
+48882,13119,
+48883,13120,
+48884,13121,
+48885,13122,
+48886,13123,
+48887,13124,
+48888,13125,
+48889,13126,
+48890,13127,
+48891,13128,
+48892,13129,
+48893,13130,
+48894,13131,
+48895,13132,
+48896,13133,
+48897,2150,
+48898,13134,
+48899,13135,
+48900,13136,
+48901,13137,
+48902,13138,
+48903,13139,
+48904,2151,
+48905,2152,
+48906,13140,
+48907,13141,
+48908,13142,
+48909,13143,
+48910,13144,
+48911,13145,
+48912,13146,
+48913,13147,
+48914,13148,
+48915,13149,
+48916,13150,
+48917,13151,
+48918,13152,
+48919,13153,
+48920,2153,
+48921,2154,
+48922,13154,
+48923,2155,
+48924,2156,
+48925,2157,
+48926,13155,
+48927,13156,
+48928,13157,
+48929,13158,
+48930,13159,
+48931,13160,
+48932,13161,
+48933,13162,
+48934,13163,
+48935,13164,
+48936,13165,
+48937,13166,
+48938,13167,
+48939,13168,
+48940,13169,
+48941,13170,
+48942,13171,
+48943,13172,
+48944,13173,
+48945,13174,
+48946,13175,
+48947,13176,
+48948,13177,
+48949,13178,
+48950,13179,
+48951,13180,
+48952,13181,
+48953,13182,
+48954,13183,
+48955,13184,
+48956,13185,
+48957,13186,
+48958,13187,
+48959,13188,
+48960,2158,
+48961,2159,
+48962,13189,
+48963,13190,
+48964,2160,
+48965,13191,
+48966,13192,
+48967,13193,
+48968,2161,
+48969,13194,
+48970,13195,
+48971,13196,
+48972,13197,
+48973,13198,
+48974,13199,
+48975,13200,
+48976,2162,
+48977,2163,
+48978,13201,
+48979,13202,
+48980,13203,
+48981,2164,
+48982,13204,
+48983,13205,
+48984,13206,
+48985,13207,
+48986,13208,
+48987,13209,
+48988,13210,
+48989,13211,
+48990,13212,
+48991,13213,
+48992,13214,
+48993,13215,
+48994,13216,
+48995,13217,
+48996,13218,
+48997,13219,
+48998,13220,
+48999,13221,
+49000,13222,
+49001,13223,
+49002,13224,
+49003,13225,
+49004,13226,
+49005,13227,
+49006,13228,
+49007,13229,
+49008,13230,
+49009,13231,
+49010,13232,
+49011,13233,
+49012,13234,
+49013,13235,
+49014,13236,
+49015,13237,
+49016,13238,
+49017,13239,
+49018,13240,
+49019,13241,
+49020,13242,
+49021,13243,
+49022,13244,
+49023,13245,
+49024,13246,
+49025,13247,
+49026,13248,
+49027,13249,
+49028,13250,
+49029,13251,
+49030,13252,
+49031,13253,
+49032,13254,
+49033,13255,
+49034,13256,
+49035,13257,
+49036,13258,
+49037,13259,
+49038,13260,
+49039,13261,
+49040,13262,
+49041,13263,
+49042,13264,
+49043,13265,
+49044,2165,
+49045,13266,
+49046,13267,
+49047,13268,
+49048,13269,
+49049,13270,
+49050,13271,
+49051,13272,
+49052,13273,
+49053,13274,
+49054,13275,
+49055,13276,
+49056,13277,
+49057,13278,
+49058,13279,
+49059,13280,
+49060,13281,
+49061,13282,
+49062,13283,
+49063,13284,
+49064,13285,
+49065,13286,
+49066,13287,
+49067,13288,
+49068,13289,
+49069,13290,
+49070,13291,
+49071,13292,
+49072,2166,
+49073,13293,
+49074,13294,
+49075,13295,
+49076,13296,
+49077,13297,
+49078,13298,
+49079,13299,
+49080,13300,
+49081,13301,
+49082,13302,
+49083,13303,
+49084,13304,
+49085,13305,
+49086,13306,
+49087,13307,
+49088,13308,
+49089,13309,
+49090,13310,
+49091,13311,
+49092,13312,
+49093,2167,
+49094,13313,
+49095,13314,
+49096,13315,
+49097,13316,
+49098,13317,
+49099,13318,
+49100,2168,
+49101,2169,
+49102,13319,
+49103,13320,
+49104,2170,
+49105,13321,
+49106,13322,
+49107,13323,
+49108,2171,
+49109,13324,
+49110,13325,
+49111,13326,
+49112,13327,
+49113,13328,
+49114,13329,
+49115,13330,
+49116,2172,
+49117,13331,
+49118,13332,
+49119,2173,
+49120,13333,
+49121,2174,
+49122,13334,
+49123,13335,
+49124,13336,
+49125,13337,
+49126,13338,
+49127,13339,
+49128,13340,
+49129,13341,
+49130,13342,
+49131,13343,
+49132,13344,
+49133,13345,
+49134,13346,
+49135,13347,
+49136,13348,
+49137,13349,
+49138,13350,
+49139,13351,
+49140,13352,
+49141,13353,
+49142,13354,
+49143,13355,
+49144,13356,
+49145,13357,
+49146,13358,
+49147,13359,
+49148,13360,
+49149,13361,
+49150,13362,
+49151,13363,
+49152,13364,
+49153,13365,
+49154,13366,
+49155,13367,
+49156,13368,
+49157,13369,
+49158,13370,
+49159,13371,
+49160,13372,
+49161,13373,
+49162,13374,
+49163,13375,
+49164,13376,
+49165,13377,
+49166,13378,
+49167,13379,
+49168,13380,
+49169,13381,
+49170,13382,
+49171,13383,
+49172,13384,
+49173,13385,
+49174,13386,
+49175,13387,
+49176,13388,
+49177,13389,
+49178,13390,
+49179,13391,
+49180,13392,
+49181,13393,
+49182,13394,
+49183,13395,
+49184,13396,
+49185,13397,
+49186,13398,
+49187,13399,
+49188,13400,
+49189,13401,
+49190,13402,
+49191,13403,
+49192,13404,
+49193,13405,
+49194,13406,
+49195,13407,
+49196,13408,
+49197,13409,
+49198,13410,
+49199,13411,
+49200,13412,
+49201,13413,
+49202,13414,
+49203,13415,
+49204,13416,
+49205,13417,
+49206,13418,
+49207,13419,
+49208,13420,
+49209,13421,
+49210,13422,
+49211,13423,
+49212,2175,
+49213,13424,
+49214,13425,
+49215,13426,
+49216,13427,
+49217,13428,
+49218,13429,
+49219,13430,
+49220,13431,
+49221,13432,
+49222,13433,
+49223,13434,
+49224,13435,
+49225,13436,
+49226,13437,
+49227,13438,
+49228,13439,
+49229,13440,
+49230,13441,
+49231,13442,
+49232,13443,
+49233,2176,
+49234,13444,
+49235,13445,
+49236,13446,
+49237,13447,
+49238,13448,
+49239,13449,
+49240,2177,
+49241,13450,
+49242,13451,
+49243,13452,
+49244,2178,
+49245,13453,
+49246,13454,
+49247,13455,
+49248,2179,
+49249,13456,
+49250,13457,
+49251,13458,
+49252,13459,
+49253,13460,
+49254,13461,
+49255,13462,
+49256,2180,
+49257,2181,
+49258,13463,
+49259,13464,
+49260,13465,
+49261,13466,
+49262,13467,
+49263,13468,
+49264,13469,
+49265,13470,
+49266,13471,
+49267,13472,
+49268,13473,
+49269,13474,
+49270,13475,
+49271,13476,
+49272,13477,
+49273,13478,
+49274,13479,
+49275,13480,
+49276,13481,
+49277,13482,
+49278,13483,
+49279,13484,
+49280,13485,
+49281,13486,
+49282,13487,
+49283,13488,
+49284,13489,
+49285,13490,
+49286,13491,
+49287,13492,
+49288,13493,
+49289,13494,
+49290,13495,
+49291,13496,
+49292,13497,
+49293,13498,
+49294,13499,
+49295,13500,
+49296,2182,
+49297,2183,
+49298,13501,
+49299,13502,
+49300,2184,
+49301,13503,
+49302,13504,
+49303,13505,
+49304,2185,
+49305,13506,
+49306,13507,
+49307,13508,
+49308,13509,
+49309,13510,
+49310,13511,
+49311,13512,
+49312,2186,
+49313,2187,
+49314,13513,
+49315,2188,
+49316,13514,
+49317,2189,
+49318,13515,
+49319,13516,
+49320,13517,
+49321,13518,
+49322,13519,
+49323,13520,
+49324,2190,
+49325,2191,
+49326,13521,
+49327,2192,
+49328,2193,
+49329,13522,
+49330,13523,
+49331,2194,
+49332,2195,
+49333,2196,
+49334,2197,
+49335,13524,
+49336,13525,
+49337,13526,
+49338,13527,
+49339,13528,
+49340,2198,
+49341,2199,
+49342,13529,
+49343,2200,
+49344,2201,
+49345,2202,
+49346,13530,
+49347,13531,
+49348,13532,
+49349,2203,
+49350,13533,
+49351,13534,
+49352,2204,
+49353,2205,
+49354,13535,
+49355,13536,
+49356,2206,
+49357,13537,
+49358,13538,
+49359,13539,
+49360,2207,
+49361,13540,
+49362,13541,
+49363,13542,
+49364,13543,
+49365,13544,
+49366,13545,
+49367,13546,
+49368,2208,
+49369,2209,
+49370,13547,
+49371,2210,
+49372,2211,
+49373,2212,
+49374,13548,
+49375,13549,
+49376,13550,
+49377,13551,
+49378,13552,
+49379,13553,
+49380,2213,
+49381,2214,
+49382,13554,
+49383,13555,
+49384,2215,
+49385,13556,
+49386,13557,
+49387,13558,
+49388,2216,
+49389,13559,
+49390,13560,
+49391,13561,
+49392,13562,
+49393,13563,
+49394,13564,
+49395,13565,
+49396,2217,
+49397,2218,
+49398,13566,
+49399,2219,
+49400,13567,
+49401,2220,
+49402,13568,
+49403,13569,
+49404,13570,
+49405,13571,
+49406,13572,
+49407,13573,
+49408,2221,
+49409,13574,
+49410,13575,
+49411,13576,
+49412,2222,
+49413,13577,
+49414,13578,
+49415,13579,
+49416,2223,
+49417,13580,
+49418,13581,
+49419,13582,
+49420,13583,
+49421,13584,
+49422,13585,
+49423,13586,
+49424,2224,
+49425,13587,
+49426,13588,
+49427,13589,
+49428,13590,
+49429,2225,
+49430,13591,
+49431,13592,
+49432,13593,
+49433,13594,
+49434,13595,
+49435,13596,
+49436,2226,
+49437,2227,
+49438,2228,
+49439,2229,
+49440,2230,
+49441,13597,
+49442,13598,
+49443,2231,
+49444,2232,
+49445,13599,
+49446,2233,
+49447,2234,
+49448,13600,
+49449,13601,
+49450,13602,
+49451,13603,
+49452,2235,
+49453,2236,
+49454,13604,
+49455,2237,
+49456,2238,
+49457,2239,
+49458,13605,
+49459,13606,
+49460,13607,
+49461,13608,
+49462,2240,
+49463,13609,
+49464,2241,
+49465,2242,
+49466,13610,
+49467,13611,
+49468,2243,
+49469,13612,
+49470,13613,
+49471,13614,
+49472,2244,
+49473,13615,
+49474,13616,
+49475,13617,
+49476,13618,
+49477,13619,
+49478,13620,
+49479,13621,
+49480,2245,
+49481,2246,
+49482,13622,
+49483,2247,
+49484,2248,
+49485,2249,
+49486,13623,
+49487,13624,
+49488,13625,
+49489,13626,
+49490,13627,
+49491,13628,
+49492,2250,
+49493,2251,
+49494,13629,
+49495,13630,
+49496,2252,
+49497,13631,
+49498,13632,
+49499,13633,
+49500,2253,
+49501,13634,
+49502,13635,
+49503,13636,
+49504,13637,
+49505,13638,
+49506,13639,
+49507,13640,
+49508,2254,
+49509,2255,
+49510,13641,
+49511,2256,
+49512,2257,
+49513,2258,
+49514,13642,
+49515,13643,
+49516,13644,
+49517,13645,
+49518,13646,
+49519,13647,
+49520,2259,
+49521,13648,
+49522,13649,
+49523,13650,
+49524,2260,
+49525,13651,
+49526,13652,
+49527,13653,
+49528,2261,
+49529,13654,
+49530,13655,
+49531,13656,
+49532,13657,
+49533,13658,
+49534,13659,
+49535,13660,
+49536,13661,
+49537,13662,
+49538,13663,
+49539,13664,
+49540,13665,
+49541,2262,
+49542,13666,
+49543,13667,
+49544,13668,
+49545,13669,
+49546,13670,
+49547,13671,
+49548,2263,
+49549,2264,
+49550,2265,
+49551,13672,
+49552,2266,
+49553,13673,
+49554,13674,
+49555,13675,
+49556,2267,
+49557,13676,
+49558,2268,
+49559,13677,
+49560,13678,
+49561,13679,
+49562,13680,
+49563,13681,
+49564,2269,
+49565,2270,
+49566,13682,
+49567,2271,
+49568,13683,
+49569,2272,
+49570,13684,
+49571,13685,
+49572,13686,
+49573,2273,
+49574,13687,
+49575,13688,
+49576,2274,
+49577,2275,
+49578,13689,
+49579,13690,
+49580,2276,
+49581,13691,
+49582,13692,
+49583,13693,
+49584,2277,
+49585,13694,
+49586,13695,
+49587,13696,
+49588,13697,
+49589,13698,
+49590,13699,
+49591,13700,
+49592,13701,
+49593,13702,
+49594,13703,
+49595,13704,
+49596,13705,
+49597,2278,
+49598,13706,
+49599,13707,
+49600,13708,
+49601,13709,
+49602,13710,
+49603,13711,
+49604,2279,
+49605,13712,
+49606,13713,
+49607,13714,
+49608,2280,
+49609,13715,
+49610,13716,
+49611,13717,
+49612,2281,
+49613,13718,
+49614,13719,
+49615,13720,
+49616,13721,
+49617,13722,
+49618,13723,
+49619,13724,
+49620,2282,
+49621,13725,
+49622,13726,
+49623,2283,
+49624,2284,
+49625,13727,
+49626,13728,
+49627,13729,
+49628,13730,
+49629,13731,
+49630,13732,
+49631,13733,
+49632,2285,
+49633,13734,
+49634,13735,
+49635,13736,
+49636,2286,
+49637,13737,
+49638,13738,
+49639,13739,
+49640,2287,
+49641,13740,
+49642,13741,
+49643,13742,
+49644,13743,
+49645,13744,
+49646,13745,
+49647,13746,
+49648,2288,
+49649,2289,
+49650,13747,
+49651,2290,
+49652,13748,
+49653,13749,
+49654,13750,
+49655,13751,
+49656,13752,
+49657,13753,
+49658,13754,
+49659,13755,
+49660,2291,
+49661,2292,
+49662,13756,
+49663,13757,
+49664,2293,
+49665,13758,
+49666,13759,
+49667,13760,
+49668,2294,
+49669,13761,
+49670,13762,
+49671,13763,
+49672,13764,
+49673,13765,
+49674,13766,
+49675,13767,
+49676,2295,
+49677,2296,
+49678,13768,
+49679,2297,
+49680,13769,
+49681,2298,
+49682,13770,
+49683,13771,
+49684,13772,
+49685,13773,
+49686,13774,
+49687,13775,
+49688,2299,
+49689,2300,
+49690,13776,
+49691,13777,
+49692,2301,
+49693,13778,
+49694,13779,
+49695,2302,
+49696,2303,
+49697,13780,
+49698,13781,
+49699,13782,
+49700,13783,
+49701,13784,
+49702,13785,
+49703,13786,
+49704,2304,
+49705,2305,
+49706,13787,
+49707,2306,
+49708,13788,
+49709,2307,
+49710,13789,
+49711,2308,
+49712,13790,
+49713,2309,
+49714,2310,
+49715,13791,
+49716,2311,
+49717,13792,
+49718,13793,
+49719,13794,
+49720,13795,
+49721,13796,
+49722,13797,
+49723,13798,
+49724,13799,
+49725,13800,
+49726,13801,
+49727,13802,
+49728,13803,
+49729,13804,
+49730,13805,
+49731,13806,
+49732,13807,
+49733,13808,
+49734,13809,
+49735,13810,
+49736,2312,
+49737,13811,
+49738,13812,
+49739,13813,
+49740,13814,
+49741,13815,
+49742,13816,
+49743,13817,
+49744,2313,
+49745,2314,
+49746,13818,
+49747,13819,
+49748,2315,
+49749,13820,
+49750,13821,
+49751,13822,
+49752,2316,
+49753,13823,
+49754,13824,
+49755,13825,
+49756,13826,
+49757,13827,
+49758,13828,
+49759,13829,
+49760,2317,
+49761,13830,
+49762,13831,
+49763,13832,
+49764,13833,
+49765,2318,
+49766,13834,
+49767,13835,
+49768,13836,
+49769,13837,
+49770,13838,
+49771,13839,
+49772,2319,
+49773,2320,
+49774,13840,
+49775,13841,
+49776,2321,
+49777,13842,
+49778,13843,
+49779,13844,
+49780,2322,
+49781,13845,
+49782,13846,
+49783,13847,
+49784,13848,
+49785,13849,
+49786,13850,
+49787,13851,
+49788,2323,
+49789,2324,
+49790,13852,
+49791,2325,
+49792,13853,
+49793,2326,
+49794,13854,
+49795,13855,
+49796,13856,
+49797,13857,
+49798,13858,
+49799,13859,
+49800,2327,
+49801,2328,
+49802,13860,
+49803,13861,
+49804,13862,
+49805,13863,
+49806,13864,
+49807,13865,
+49808,2329,
+49809,13866,
+49810,13867,
+49811,13868,
+49812,13869,
+49813,13870,
+49814,13871,
+49815,13872,
+49816,2330,
+49817,13873,
+49818,13874,
+49819,2331,
+49820,13875,
+49821,2332,
+49822,13876,
+49823,13877,
+49824,13878,
+49825,13879,
+49826,13880,
+49827,13881,
+49828,2333,
+49829,2334,
+49830,13882,
+49831,13883,
+49832,2335,
+49833,13884,
+49834,13885,
+49835,13886,
+49836,2336,
+49837,2337,
+49838,13887,
+49839,13888,
+49840,13889,
+49841,13890,
+49842,13891,
+49843,13892,
+49844,2338,
+49845,2339,
+49846,13893,
+49847,2340,
+49848,13894,
+49849,2341,
+49850,13895,
+49851,13896,
+49852,13897,
+49853,13898,
+49854,13899,
+49855,13900,
+49856,13901,
+49857,13902,
+49858,13903,
+49859,13904,
+49860,13905,
+49861,13906,
+49862,13907,
+49863,13908,
+49864,13909,
+49865,13910,
+49866,13911,
+49867,13912,
+49868,13913,
+49869,13914,
+49870,13915,
+49871,13916,
+49872,13917,
+49873,13918,
+49874,13919,
+49875,13920,
+49876,13921,
+49877,13922,
+49878,13923,
+49879,13924,
+49880,13925,
+49881,13926,
+49882,13927,
+49883,13928,
+49884,2342,
+49885,2343,
+49886,13929,
+49887,13930,
+49888,2344,
+49889,13931,
+49890,13932,
+49891,2345,
+49892,2346,
+49893,13933,
+49894,13934,
+49895,13935,
+49896,13936,
+49897,13937,
+49898,13938,
+49899,2347,
+49900,2348,
+49901,2349,
+49902,13939,
+49903,2350,
+49904,13940,
+49905,2351,
+49906,13941,
+49907,13942,
+49908,13943,
+49909,13944,
+49910,2352,
+49911,13945,
+49912,2353,
+49913,2354,
+49914,13946,
+49915,2355,
+49916,2356,
+49917,13947,
+49918,13948,
+49919,13949,
+49920,2357,
+49921,13950,
+49922,13951,
+49923,13952,
+49924,13953,
+49925,13954,
+49926,13955,
+49927,13956,
+49928,2358,
+49929,2359,
+49930,13957,
+49931,13958,
+49932,2360,
+49933,2361,
+49934,13959,
+49935,13960,
+49936,13961,
+49937,13962,
+49938,13963,
+49939,2362,
+49940,2363,
+49941,2364,
+49942,13964,
+49943,13965,
+49944,2365,
+49945,13966,
+49946,13967,
+49947,13968,
+49948,2366,
+49949,13969,
+49950,13970,
+49951,13971,
+49952,13972,
+49953,13973,
+49954,13974,
+49955,13975,
+49956,2367,
+49957,2368,
+49958,13976,
+49959,13977,
+49960,2369,
+49961,2370,
+49962,13978,
+49963,13979,
+49964,13980,
+49965,13981,
+49966,13982,
+49967,13983,
+49968,13984,
+49969,13985,
+49970,13986,
+49971,13987,
+49972,13988,
+49973,13989,
+49974,13990,
+49975,13991,
+49976,13992,
+49977,13993,
+49978,13994,
+49979,13995,
+49980,13996,
+49981,13997,
+49982,13998,
+49983,13999,
+49984,14000,
+49985,14001,
+49986,14002,
+49987,14003,
+49988,14004,
+49989,2371,
+49990,14005,
+49991,14006,
+49992,14007,
+49993,14008,
+49994,14009,
+49995,14010,
+49996,14011,
+49997,14012,
+49998,14013,
+49999,14014,
+50000,14015,
+50001,14016,
+50002,14017,
+50003,14018,
+50004,14019,
+50005,14020,
+50006,14021,
+50007,14022,
+50008,14023,
+50009,14024,
+50010,14025,
+50011,14026,
+50012,14027,
+50013,14028,
+50014,14029,
+50015,14030,
+50016,14031,
+50017,14032,
+50018,14033,
+50019,14034,
+50020,14035,
+50021,14036,
+50022,14037,
+50023,14038,
+50024,2372,
+50025,2373,
+50026,14039,
+50027,14040,
+50028,2374,
+50029,14041,
+50030,14042,
+50031,14043,
+50032,2375,
+50033,14044,
+50034,2376,
+50035,14045,
+50036,14046,
+50037,14047,
+50038,14048,
+50039,14049,
+50040,2377,
+50041,2378,
+50042,14050,
+50043,14051,
+50044,2379,
+50045,2380,
+50046,14052,
+50047,14053,
+50048,14054,
+50049,14055,
+50050,14056,
+50051,14057,
+50052,2381,
+50053,14058,
+50054,14059,
+50055,14060,
+50056,2382,
+50057,14061,
+50058,14062,
+50059,14063,
+50060,2383,
+50061,14064,
+50062,14065,
+50063,14066,
+50064,14067,
+50065,14068,
+50066,14069,
+50067,14070,
+50068,14071,
+50069,14072,
+50070,14073,
+50071,14074,
+50072,14075,
+50073,14076,
+50074,14077,
+50075,14078,
+50076,14079,
+50077,14080,
+50078,14081,
+50079,14082,
+50080,14083,
+50081,14084,
+50082,14085,
+50083,14086,
+50084,14087,
+50085,14088,
+50086,14089,
+50087,14090,
+50088,14091,
+50089,14092,
+50090,14093,
+50091,14094,
+50092,14095,
+50093,14096,
+50094,14097,
+50095,14098,
+50096,14099,
+50097,14100,
+50098,14101,
+50099,14102,
+50100,14103,
+50101,14104,
+50102,14105,
+50103,14106,
+50104,14107,
+50105,14108,
+50106,14109,
+50107,14110,
+50108,14111,
+50109,14112,
+50110,14113,
+50111,14114,
+50112,2384,
+50113,14115,
+50114,14116,
+50115,14117,
+50116,14118,
+50117,14119,
+50118,14120,
+50119,14121,
+50120,14122,
+50121,14123,
+50122,14124,
+50123,14125,
+50124,14126,
+50125,14127,
+50126,14128,
+50127,14129,
+50128,14130,
+50129,14131,
+50130,14132,
+50131,14133,
+50132,14134,
+50133,14135,
+50134,14136,
+50135,14137,
+50136,2385,
+50137,2386,
+50138,14138,
+50139,14139,
+50140,2387,
+50141,14140,
+50142,14141,
+50143,2388,
+50144,2389,
+50145,14142,
+50146,2390,
+50147,14143,
+50148,14144,
+50149,14145,
+50150,14146,
+50151,14147,
+50152,2391,
+50153,2392,
+50154,14148,
+50155,14149,
+50156,14150,
+50157,2393,
+50158,14151,
+50159,14152,
+50160,14153,
+50161,14154,
+50162,14155,
+50163,14156,
+50164,2394,
+50165,2395,
+50166,14157,
+50167,14158,
+50168,2396,
+50169,14159,
+50170,14160,
+50171,14161,
+50172,14162,
+50173,14163,
+50174,14164,
+50175,14165,
+50176,14166,
+50177,14167,
+50178,14168,
+50179,14169,
+50180,14170,
+50181,14171,
+50182,14172,
+50183,14173,
+50184,2397,
+50185,14174,
+50186,14175,
+50187,14176,
+50188,14177,
+50189,14178,
+50190,14179,
+50191,14180,
+50192,2398,
+50193,14181,
+50194,14182,
+50195,14183,
+50196,14184,
+50197,14185,
+50198,14186,
+50199,14187,
+50200,14188,
+50201,14189,
+50202,14190,
+50203,14191,
+50204,14192,
+50205,14193,
+50206,14194,
+50207,14195,
+50208,14196,
+50209,14197,
+50210,14198,
+50211,14199,
+50212,2399,
+50213,14200,
+50214,14201,
+50215,14202,
+50216,14203,
+50217,14204,
+50218,14205,
+50219,14206,
+50220,2400,
+50221,14207,
+50222,14208,
+50223,14209,
+50224,2401,
+50225,14210,
+50226,14211,
+50227,14212,
+50228,2402,
+50229,14213,
+50230,14214,
+50231,14215,
+50232,14216,
+50233,14217,
+50234,14218,
+50235,14219,
+50236,2403,
+50237,2404,
+50238,14220,
+50239,14221,
+50240,14222,
+50241,14223,
+50242,14224,
+50243,14225,
+50244,14226,
+50245,14227,
+50246,14228,
+50247,14229,
+50248,2405,
+50249,14230,
+50250,14231,
+50251,14232,
+50252,14233,
+50253,14234,
+50254,14235,
+50255,14236,
+50256,14237,
+50257,14238,
+50258,14239,
+50259,14240,
+50260,14241,
+50261,14242,
+50262,14243,
+50263,14244,
+50264,14245,
+50265,14246,
+50266,14247,
+50267,14248,
+50268,14249,
+50269,14250,
+50270,14251,
+50271,14252,
+50272,14253,
+50273,14254,
+50274,14255,
+50275,14256,
+50276,2406,
+50277,2407,
+50278,14257,
+50279,14258,
+50280,2408,
+50281,14259,
+50282,14260,
+50283,14261,
+50284,2409,
+50285,14262,
+50286,14263,
+50287,14264,
+50288,14265,
+50289,14266,
+50290,14267,
+50291,14268,
+50292,2410,
+50293,2411,
+50294,14269,
+50295,14270,
+50296,14271,
+50297,2412,
+50298,14272,
+50299,14273,
+50300,14274,
+50301,14275,
+50302,14276,
+50303,14277,
+50304,2413,
+50305,14278,
+50306,14279,
+50307,14280,
+50308,14281,
+50309,14282,
+50310,14283,
+50311,14284,
+50312,14285,
+50313,14286,
+50314,14287,
+50315,14288,
+50316,14289,
+50317,14290,
+50318,14291,
+50319,14292,
+50320,14293,
+50321,14294,
+50322,14295,
+50323,14296,
+50324,2414,
+50325,14297,
+50326,14298,
+50327,14299,
+50328,14300,
+50329,14301,
+50330,14302,
+50331,14303,
+50332,2415,
+50333,14304,
+50334,14305,
+50335,14306,
+50336,14307,
+50337,14308,
+50338,14309,
+50339,14310,
+50340,14311,
+50341,14312,
+50342,14313,
+50343,14314,
+50344,14315,
+50345,14316,
+50346,14317,
+50347,14318,
+50348,14319,
+50349,14320,
+50350,14321,
+50351,14322,
+50352,14323,
+50353,14324,
+50354,14325,
+50355,14326,
+50356,14327,
+50357,14328,
+50358,14329,
+50359,14330,
+50360,2416,
+50361,14331,
+50362,14332,
+50363,14333,
+50364,2417,
+50365,14334,
+50366,14335,
+50367,14336,
+50368,14337,
+50369,14338,
+50370,14339,
+50371,14340,
+50372,14341,
+50373,14342,
+50374,14343,
+50375,14344,
+50376,14345,
+50377,14346,
+50378,14347,
+50379,14348,
+50380,14349,
+50381,14350,
+50382,14351,
+50383,14352,
+50384,14353,
+50385,14354,
+50386,14355,
+50387,14356,
+50388,14357,
+50389,14358,
+50390,14359,
+50391,14360,
+50392,14361,
+50393,14362,
+50394,14363,
+50395,14364,
+50396,14365,
+50397,14366,
+50398,14367,
+50399,14368,
+50400,14369,
+50401,14370,
+50402,14371,
+50403,14372,
+50404,14373,
+50405,14374,
+50406,14375,
+50407,14376,
+50408,14377,
+50409,2418,
+50410,14378,
+50411,14379,
+50412,14380,
+50413,14381,
+50414,14382,
+50415,14383,
+50416,2419,
+50417,2420,
+50418,14384,
+50419,14385,
+50420,2421,
+50421,14386,
+50422,14387,
+50423,14388,
+50424,2422,
+50425,14389,
+50426,2423,
+50427,14390,
+50428,14391,
+50429,14392,
+50430,14393,
+50431,2424,
+50432,2425,
+50433,2426,
+50434,14394,
+50435,14395,
+50436,14396,
+50437,14397,
+50438,14398,
+50439,14399,
+50440,14400,
+50441,14401,
+50442,14402,
+50443,14403,
+50444,2427,
+50445,14404,
+50446,14405,
+50447,14406,
+50448,2428,
+50449,14407,
+50450,14408,
+50451,14409,
+50452,2429,
+50453,14410,
+50454,14411,
+50455,14412,
+50456,14413,
+50457,14414,
+50458,14415,
+50459,14416,
+50460,2430,
+50461,14417,
+50462,14418,
+50463,14419,
+50464,14420,
+50465,14421,
+50466,14422,
+50467,14423,
+50468,14424,
+50469,14425,
+50470,14426,
+50471,14427,
+50472,2431,
+50473,2432,
+50474,14428,
+50475,14429,
+50476,2433,
+50477,14430,
+50478,14431,
+50479,14432,
+50480,2434,
+50481,14433,
+50482,14434,
+50483,14435,
+50484,14436,
+50485,14437,
+50486,14438,
+50487,14439,
+50488,2435,
+50489,2436,
+50490,14440,
+50491,2437,
+50492,14441,
+50493,2438,
+50494,14442,
+50495,14443,
+50496,14444,
+50497,14445,
+50498,14446,
+50499,14447,
+50500,2439,
+50501,2440,
+50502,14448,
+50503,14449,
+50504,2441,
+50505,2442,
+50506,2443,
+50507,14450,
+50508,2444,
+50509,2445,
+50510,2446,
+50511,14451,
+50512,14452,
+50513,14453,
+50514,14454,
+50515,2447,
+50516,2448,
+50517,2449,
+50518,14455,
+50519,2450,
+50520,2451,
+50521,2452,
+50522,14456,
+50523,14457,
+50524,14458,
+50525,2453,
+50526,2454,
+50527,14459,
+50528,2455,
+50529,2456,
+50530,14460,
+50531,14461,
+50532,2457,
+50533,14462,
+50534,14463,
+50535,14464,
+50536,2458,
+50537,14465,
+50538,14466,
+50539,14467,
+50540,14468,
+50541,14469,
+50542,14470,
+50543,14471,
+50544,2459,
+50545,2460,
+50546,14472,
+50547,2461,
+50548,2462,
+50549,2463,
+50550,14473,
+50551,14474,
+50552,14475,
+50553,14476,
+50554,14477,
+50555,14478,
+50556,2464,
+50557,2465,
+50558,14479,
+50559,14480,
+50560,2466,
+50561,14481,
+50562,14482,
+50563,14483,
+50564,2467,
+50565,14484,
+50566,14485,
+50567,2468,
+50568,14486,
+50569,14487,
+50570,14488,
+50571,14489,
+50572,2469,
+50573,2470,
+50574,14490,
+50575,2471,
+50576,14491,
+50577,2472,
+50578,14492,
+50579,14493,
+50580,14494,
+50581,2473,
+50582,14495,
+50583,2474,
+50584,2475,
+50585,14496,
+50586,14497,
+50587,14498,
+50588,2476,
+50589,14499,
+50590,14500,
+50591,14501,
+50592,2477,
+50593,14502,
+50594,14503,
+50595,14504,
+50596,14505,
+50597,14506,
+50598,14507,
+50599,14508,
+50600,14509,
+50601,2478,
+50602,14510,
+50603,14511,
+50604,14512,
+50605,14513,
+50606,14514,
+50607,14515,
+50608,14516,
+50609,14517,
+50610,14518,
+50611,14519,
+50612,2479,
+50613,2480,
+50614,14520,
+50615,14521,
+50616,2481,
+50617,2482,
+50618,14522,
+50619,2483,
+50620,2484,
+50621,2485,
+50622,2486,
+50623,14523,
+50624,14524,
+50625,14525,
+50626,14526,
+50627,14527,
+50628,2487,
+50629,2488,
+50630,2489,
+50631,2490,
+50632,2491,
+50633,2492,
+50634,2493,
+50635,14528,
+50636,2494,
+50637,14529,
+50638,2495,
+50639,14530,
+50640,2496,
+50641,2497,
+50642,14531,
+50643,14532,
+50644,2498,
+50645,14533,
+50646,14534,
+50647,14535,
+50648,2499,
+50649,14536,
+50650,14537,
+50651,14538,
+50652,14539,
+50653,14540,
+50654,14541,
+50655,14542,
+50656,2500,
+50657,2501,
+50658,14543,
+50659,2502,
+50660,14544,
+50661,2503,
+50662,14545,
+50663,14546,
+50664,14547,
+50665,14548,
+50666,14549,
+50667,14550,
+50668,2504,
+50669,2505,
+50670,2506,
+50671,14551,
+50672,2507,
+50673,14552,
+50674,14553,
+50675,14554,
+50676,2508,
+50677,14555,
+50678,2509,
+50679,2510,
+50680,14556,
+50681,14557,
+50682,14558,
+50683,14559,
+50684,2511,
+50685,2512,
+50686,2513,
+50687,2514,
+50688,2515,
+50689,2516,
+50690,14560,
+50691,14561,
+50692,14562,
+50693,2517,
+50694,2518,
+50695,2519,
+50696,2520,
+50697,14563,
+50698,14564,
+50699,14565,
+50700,2521,
+50701,14566,
+50702,14567,
+50703,14568,
+50704,2522,
+50705,14569,
+50706,14570,
+50707,14571,
+50708,14572,
+50709,14573,
+50710,14574,
+50711,14575,
+50712,2523,
+50713,2524,
+50714,14576,
+50715,2525,
+50716,2526,
+50717,14577,
+50718,14578,
+50719,14579,
+50720,14580,
+50721,14581,
+50722,14582,
+50723,14583,
+50724,2527,
+50725,2528,
+50726,14584,
+50727,14585,
+50728,2529,
+50729,14586,
+50730,14587,
+50731,14588,
+50732,2530,
+50733,2531,
+50734,2532,
+50735,14589,
+50736,2533,
+50737,14590,
+50738,14591,
+50739,2534,
+50740,2535,
+50741,2536,
+50742,14592,
+50743,2537,
+50744,14593,
+50745,2538,
+50746,14594,
+50747,2539,
+50748,14595,
+50749,14596,
+50750,14597,
+50751,14598,
+50752,2540,
+50753,2541,
+50754,14599,
+50755,14600,
+50756,2542,
+50757,14601,
+50758,14602,
+50759,14603,
+50760,2543,
+50761,14604,
+50762,14605,
+50763,14606,
+50764,14607,
+50765,14608,
+50766,14609,
+50767,14610,
+50768,2544,
+50769,2545,
+50770,14611,
+50771,2546,
+50772,2547,
+50773,2548,
+50774,14612,
+50775,14613,
+50776,14614,
+50777,14615,
+50778,14616,
+50779,14617,
+50780,2549,
+50781,2550,
+50782,14618,
+50783,14619,
+50784,2551,
+50785,14620,
+50786,14621,
+50787,14622,
+50788,14623,
+50789,14624,
+50790,14625,
+50791,14626,
+50792,14627,
+50793,14628,
+50794,14629,
+50795,14630,
+50796,2552,
+50797,14631,
+50798,14632,
+50799,2553,
+50800,14633,
+50801,2554,
+50802,14634,
+50803,14635,
+50804,14636,
+50805,14637,
+50806,14638,
+50807,14639,
+50808,2555,
+50809,2556,
+50810,14640,
+50811,14641,
+50812,2557,
+50813,14642,
+50814,14643,
+50815,14644,
+50816,2558,
+50817,14645,
+50818,14646,
+50819,14647,
+50820,14648,
+50821,14649,
+50822,14650,
+50823,14651,
+50824,2559,
+50825,2560,
+50826,14652,
+50827,2561,
+50828,14653,
+50829,2562,
+50830,14654,
+50831,14655,
+50832,14656,
+50833,14657,
+50834,14658,
+50835,14659,
+50836,2563,
+50837,2564,
+50838,14660,
+50839,14661,
+50840,2565,
+50841,14662,
+50842,14663,
+50843,14664,
+50844,2566,
+50845,14665,
+50846,14666,
+50847,14667,
+50848,14668,
+50849,14669,
+50850,14670,
+50851,14671,
+50852,2567,
+50853,2568,
+50854,14672,
+50855,2569,
+50856,14673,
+50857,2570,
+50858,14674,
+50859,14675,
+50860,14676,
+50861,14677,
+50862,14678,
+50863,14679,
+50864,2571,
+50865,2572,
+50866,14680,
+50867,14681,
+50868,2573,
+50869,14682,
+50870,14683,
+50871,14684,
+50872,2574,
+50873,2575,
+50874,2576,
+50875,14685,
+50876,14686,
+50877,14687,
+50878,14688,
+50879,14689,
+50880,2577,
+50881,2578,
+50882,14690,
+50883,2579,
+50884,14691,
+50885,2580,
+50886,14692,
+50887,14693,
+50888,14694,
+50889,14695,
+50890,14696,
+50891,14697,
+50892,2581,
+50893,2582,
+50894,14698,
+50895,14699,
+50896,2583,
+50897,14700,
+50898,14701,
+50899,14702,
+50900,2584,
+50901,14703,
+50902,14704,
+50903,14705,
+50904,14706,
+50905,14707,
+50906,14708,
+50907,14709,
+50908,2585,
+50909,2586,
+50910,14710,
+50911,14711,
+50912,2587,
+50913,2588,
+50914,14712,
+50915,14713,
+50916,14714,
+50917,14715,
+50918,14716,
+50919,14717,
+50920,2589,
+50921,2590,
+50922,14718,
+50923,14719,
+50924,2591,
+50925,14720,
+50926,14721,
+50927,14722,
+50928,2592,
+50929,14723,
+50930,14724,
+50931,14725,
+50932,14726,
+50933,14727,
+50934,14728,
+50935,14729,
+50936,2593,
+50937,2594,
+50938,14730,
+50939,14731,
+50940,14732,
+50941,2595,
+50942,14733,
+50943,14734,
+50944,14735,
+50945,14736,
+50946,14737,
+50947,14738,
+50948,2596,
+50949,2597,
+50950,14739,
+50951,14740,
+50952,2598,
+50953,14741,
+50954,14742,
+50955,14743,
+50956,2599,
+50957,14744,
+50958,14745,
+50959,14746,
+50960,14747,
+50961,14748,
+50962,14749,
+50963,14750,
+50964,2600,
+50965,2601,
+50966,14751,
+50967,2602,
+50968,14752,
+50969,2603,
+50970,14753,
+50971,14754,
+50972,14755,
+50973,14756,
+50974,14757,
+50975,14758,
+50976,2604,
+50977,2605,
+50978,14759,
+50979,14760,
+50980,2606,
+50981,14761,
+50982,14762,
+50983,14763,
+50984,2607,
+50985,14764,
+50986,14765,
+50987,14766,
+50988,14767,
+50989,14768,
+50990,14769,
+50991,14770,
+50992,2608,
+50993,2609,
+50994,14771,
+50995,2610,
+50996,14772,
+50997,2611,
+50998,14773,
+50999,2612,
+51000,14774,
+51001,14775,
+51002,14776,
+51003,14777,
+51004,2613,
+51005,2614,
+51006,14778,
+51007,14779,
+51008,2615,
+51009,14780,
+51010,14781,
+51011,14782,
+51012,2616,
+51013,14783,
+51014,14784,
+51015,14785,
+51016,14786,
+51017,14787,
+51018,2617,
+51019,14788,
+51020,2618,
+51021,2619,
+51022,14789,
+51023,2620,
+51024,14790,
+51025,2621,
+51026,2622,
+51027,2623,
+51028,2624,
+51029,2625,
+51030,2626,
+51031,2627,
+51032,2628,
+51033,14791,
+51034,14792,
+51035,14793,
+51036,2629,
+51037,14794,
+51038,14795,
+51039,14796,
+51040,2630,
+51041,14797,
+51042,14798,
+51043,14799,
+51044,14800,
+51045,14801,
+51046,14802,
+51047,14803,
+51048,2631,
+51049,14804,
+51050,14805,
+51051,2632,
+51052,14806,
+51053,14807,
+51054,14808,
+51055,14809,
+51056,14810,
+51057,14811,
+51058,14812,
+51059,14813,
+51060,2633,
+51061,2634,
+51062,14814,
+51063,14815,
+51064,2635,
+51065,14816,
+51066,14817,
+51067,14818,
+51068,2636,
+51069,2637,
+51070,2638,
+51071,14819,
+51072,14820,
+51073,14821,
+51074,14822,
+51075,2639,
+51076,2640,
+51077,2641,
+51078,14823,
+51079,2642,
+51080,2643,
+51081,2644,
+51082,2645,
+51083,14824,
+51084,14825,
+51085,14826,
+51086,2646,
+51087,14827,
+51088,2647,
+51089,2648,
+51090,14828,
+51091,14829,
+51092,2649,
+51093,14830,
+51094,2650,
+51095,2651,
+51096,2652,
+51097,14831,
+51098,2653,
+51099,14832,
+51100,14833,
+51101,14834,
+51102,14835,
+51103,14836,
+51104,2654,
+51105,2655,
+51106,14837,
+51107,2656,
+51108,2657,
+51109,2658,
+51110,2659,
+51111,14838,
+51112,14839,
+51113,14840,
+51114,14841,
+51115,14842,
+51116,2660,
+51117,2661,
+51118,14843,
+51119,14844,
+51120,2662,
+51121,14845,
+51122,14846,
+51123,14847,
+51124,2663,
+51125,14848,
+51126,14849,
+51127,14850,
+51128,14851,
+51129,14852,
+51130,14853,
+51131,14854,
+51132,2664,
+51133,2665,
+51134,14855,
+51135,2666,
+51136,2667,
+51137,2668,
+51138,14856,
+51139,14857,
+51140,14858,
+51141,14859,
+51142,14860,
+51143,14861,
+51144,2669,
+51145,2670,
+51146,14862,
+51147,14863,
+51148,2671,
+51149,14864,
+51150,2672,
+51151,14865,
+51152,2673,
+51153,14866,
+51154,14867,
+51155,14868,
+51156,14869,
+51157,14870,
+51158,14871,
+51159,14872,
+51160,2674,
+51161,14873,
+51162,14874,
+51163,14875,
+51164,14876,
+51165,2675,
+51166,14877,
+51167,14878,
+51168,14879,
+51169,14880,
+51170,14881,
+51171,14882,
+51172,2676,
+51173,14883,
+51174,14884,
+51175,14885,
+51176,2677,
+51177,14886,
+51178,14887,
+51179,14888,
+51180,2678,
+51181,14889,
+51182,14890,
+51183,14891,
+51184,14892,
+51185,14893,
+51186,14894,
+51187,14895,
+51188,14896,
+51189,14897,
+51190,14898,
+51191,14899,
+51192,14900,
+51193,14901,
+51194,14902,
+51195,14903,
+51196,14904,
+51197,14905,
+51198,14906,
+51199,14907,
+51200,2679,
+51201,2680,
+51202,14908,
+51203,14909,
+51204,2681,
+51205,14910,
+51206,14911,
+51207,14912,
+51208,2682,
+51209,14913,
+51210,2683,
+51211,14914,
+51212,14915,
+51213,14916,
+51214,14917,
+51215,14918,
+51216,2684,
+51217,2685,
+51218,14919,
+51219,2686,
+51220,14920,
+51221,2687,
+51222,2688,
+51223,14921,
+51224,14922,
+51225,14923,
+51226,14924,
+51227,14925,
+51228,2689,
+51229,2690,
+51230,14926,
+51231,14927,
+51232,2691,
+51233,14928,
+51234,14929,
+51235,14930,
+51236,2692,
+51237,14931,
+51238,14932,
+51239,14933,
+51240,14934,
+51241,14935,
+51242,14936,
+51243,14937,
+51244,2693,
+51245,2694,
+51246,14938,
+51247,2695,
+51248,14939,
+51249,2696,
+51250,14940,
+51251,14941,
+51252,14942,
+51253,14943,
+51254,14944,
+51255,14945,
+51256,2697,
+51257,14946,
+51258,14947,
+51259,14948,
+51260,2698,
+51261,14949,
+51262,14950,
+51263,14951,
+51264,2699,
+51265,14952,
+51266,14953,
+51267,14954,
+51268,14955,
+51269,14956,
+51270,14957,
+51271,14958,
+51272,2700,
+51273,2701,
+51274,14959,
+51275,14960,
+51276,2702,
+51277,2703,
+51278,14961,
+51279,14962,
+51280,14963,
+51281,14964,
+51282,14965,
+51283,14966,
+51284,2704,
+51285,14967,
+51286,14968,
+51287,14969,
+51288,14970,
+51289,14971,
+51290,14972,
+51291,14973,
+51292,14974,
+51293,14975,
+51294,14976,
+51295,14977,
+51296,14978,
+51297,14979,
+51298,14980,
+51299,14981,
+51300,14982,
+51301,14983,
+51302,14984,
+51303,14985,
+51304,14986,
+51305,14987,
+51306,14988,
+51307,14989,
+51308,14990,
+51309,14991,
+51310,14992,
+51311,14993,
+51312,2705,
+51313,2706,
+51314,14994,
+51315,14995,
+51316,2707,
+51317,14996,
+51318,14997,
+51319,14998,
+51320,2708,
+51321,14999,
+51322,2709,
+51323,15000,
+51324,15001,
+51325,15002,
+51326,15003,
+51327,15004,
+51328,2710,
+51329,2711,
+51330,15005,
+51331,2712,
+51332,15006,
+51333,2713,
+51334,2714,
+51335,2715,
+51336,15007,
+51337,15008,
+51338,15009,
+51339,2716,
+51340,2717,
+51341,2718,
+51342,15010,
+51343,15011,
+51344,15012,
+51345,15013,
+51346,15014,
+51347,15015,
+51348,2719,
+51349,15016,
+51350,15017,
+51351,15018,
+51352,15019,
+51353,15020,
+51354,15021,
+51355,15022,
+51356,15023,
+51357,2720,
+51358,15024,
+51359,2721,
+51360,15025,
+51361,2722,
+51362,15026,
+51363,15027,
+51364,15028,
+51365,15029,
+51366,15030,
+51367,15031,
+51368,2723,
+51369,15032,
+51370,15033,
+51371,15034,
+51372,15035,
+51373,15036,
+51374,15037,
+51375,15038,
+51376,15039,
+51377,15040,
+51378,15041,
+51379,15042,
+51380,15043,
+51381,15044,
+51382,15045,
+51383,15046,
+51384,15047,
+51385,15048,
+51386,15049,
+51387,15050,
+51388,2724,
+51389,2725,
+51390,15051,
+51391,15052,
+51392,15053,
+51393,15054,
+51394,15055,
+51395,15056,
+51396,2726,
+51397,15057,
+51398,15058,
+51399,15059,
+51400,2727,
+51401,15060,
+51402,15061,
+51403,15062,
+51404,2728,
+51405,15063,
+51406,15064,
+51407,15065,
+51408,15066,
+51409,15067,
+51410,15068,
+51411,15069,
+51412,2729,
+51413,2730,
+51414,15070,
+51415,2731,
+51416,15071,
+51417,2732,
+51418,15072,
+51419,15073,
+51420,15074,
+51421,15075,
+51422,15076,
+51423,15077,
+51424,2733,
+51425,2734,
+51426,15078,
+51427,15079,
+51428,2735,
+51429,15080,
+51430,15081,
+51431,15082,
+51432,15083,
+51433,15084,
+51434,15085,
+51435,15086,
+51436,15087,
+51437,15088,
+51438,15089,
+51439,15090,
+51440,15091,
+51441,15092,
+51442,15093,
+51443,15094,
+51444,15095,
+51445,2736,
+51446,15096,
+51447,15097,
+51448,15098,
+51449,15099,
+51450,15100,
+51451,15101,
+51452,2737,
+51453,2738,
+51454,15102,
+51455,15103,
+51456,2739,
+51457,15104,
+51458,15105,
+51459,15106,
+51460,2740,
+51461,2741,
+51462,2742,
+51463,15107,
+51464,15108,
+51465,15109,
+51466,15110,
+51467,15111,
+51468,2743,
+51469,2744,
+51470,15112,
+51471,2745,
+51472,15113,
+51473,2746,
+51474,15114,
+51475,15115,
+51476,15116,
+51477,15117,
+51478,15118,
+51479,15119,
+51480,2747,
+51481,15120,
+51482,15121,
+51483,15122,
+51484,15123,
+51485,15124,
+51486,15125,
+51487,15126,
+51488,15127,
+51489,15128,
+51490,15129,
+51491,15130,
+51492,15131,
+51493,15132,
+51494,15133,
+51495,15134,
+51496,15135,
+51497,15136,
+51498,15137,
+51499,15138,
+51500,2748,
+51501,15139,
+51502,15140,
+51503,15141,
+51504,15142,
+51505,15143,
+51506,15144,
+51507,15145,
+51508,2749,
+51509,15146,
+51510,15147,
+51511,15148,
+51512,15149,
+51513,15150,
+51514,15151,
+51515,15152,
+51516,15153,
+51517,15154,
+51518,15155,
+51519,15156,
+51520,15157,
+51521,15158,
+51522,15159,
+51523,15160,
+51524,15161,
+51525,15162,
+51526,15163,
+51527,15164,
+51528,15165,
+51529,15166,
+51530,15167,
+51531,15168,
+51532,15169,
+51533,15170,
+51534,15171,
+51535,15172,
+51536,2750,
+51537,2751,
+51538,15173,
+51539,15174,
+51540,2752,
+51541,15175,
+51542,15176,
+51543,15177,
+51544,2753,
+51545,15178,
+51546,15179,
+51547,15180,
+51548,15181,
+51549,15182,
+51550,15183,
+51551,15184,
+51552,2754,
+51553,2755,
+51554,15185,
+51555,2756,
+51556,15186,
+51557,15187,
+51558,15188,
+51559,15189,
+51560,15190,
+51561,15191,
+51562,15192,
+51563,15193,
+51564,2757,
+51565,15194,
+51566,15195,
+51567,15196,
+51568,2758,
+51569,15197,
+51570,15198,
+51571,15199,
+51572,2759,
+51573,15200,
+51574,15201,
+51575,15202,
+51576,15203,
+51577,15204,
+51578,15205,
+51579,15206,
+51580,2760,
+51581,15207,
+51582,15208,
+51583,15209,
+51584,15210,
+51585,15211,
+51586,15212,
+51587,15213,
+51588,15214,
+51589,15215,
+51590,15216,
+51591,15217,
+51592,2761,
+51593,2762,
+51594,15218,
+51595,15219,
+51596,2763,
+51597,15220,
+51598,15221,
+51599,15222,
+51600,2764,
+51601,15223,
+51602,15224,
+51603,15225,
+51604,15226,
+51605,15227,
+51606,15228,
+51607,15229,
+51608,2765,
+51609,2766,
+51610,15230,
+51611,2767,
+51612,15231,
+51613,2768,
+51614,15232,
+51615,15233,
+51616,15234,
+51617,15235,
+51618,15236,
+51619,15237,
+51620,15238,
+51621,15239,
+51622,15240,
+51623,15241,
+51624,15242,
+51625,15243,
+51626,15244,
+51627,15245,
+51628,15246,
+51629,15247,
+51630,15248,
+51631,15249,
+51632,15250,
+51633,15251,
+51634,15252,
+51635,15253,
+51636,15254,
+51637,15255,
+51638,15256,
+51639,15257,
+51640,15258,
+51641,15259,
+51642,15260,
+51643,15261,
+51644,15262,
+51645,15263,
+51646,15264,
+51647,15265,
+51648,2769,
+51649,2770,
+51650,15266,
+51651,15267,
+51652,2771,
+51653,15268,
+51654,15269,
+51655,2772,
+51656,2773,
+51657,15270,
+51658,2774,
+51659,15271,
+51660,15272,
+51661,15273,
+51662,15274,
+51663,15275,
+51664,2775,
+51665,2776,
+51666,15276,
+51667,2777,
+51668,15277,
+51669,2778,
+51670,2779,
+51671,15278,
+51672,15279,
+51673,2780,
+51674,2781,
+51675,15280,
+51676,2782,
+51677,2783,
+51678,15281,
+51679,15282,
+51680,2784,
+51681,15283,
+51682,2785,
+51683,15284,
+51684,2786,
+51685,15285,
+51686,15286,
+51687,2787,
+51688,15287,
+51689,15288,
+51690,15289,
+51691,15290,
+51692,2788,
+51693,2789,
+51694,15291,
+51695,2790,
+51696,2791,
+51697,2792,
+51698,15292,
+51699,15293,
+51700,15294,
+51701,15295,
+51702,15296,
+51703,15297,
+51704,2793,
+51705,2794,
+51706,15298,
+51707,15299,
+51708,2795,
+51709,15300,
+51710,15301,
+51711,15302,
+51712,2796,
+51713,15303,
+51714,15304,
+51715,15305,
+51716,15306,
+51717,15307,
+51718,15308,
+51719,15309,
+51720,2797,
+51721,2798,
+51722,15310,
+51723,2799,
+51724,2800,
+51725,2801,
+51726,15311,
+51727,15312,
+51728,15313,
+51729,15314,
+51730,15315,
+51731,15316,
+51732,2802,
+51733,15317,
+51734,15318,
+51735,15319,
+51736,2803,
+51737,15320,
+51738,15321,
+51739,15322,
+51740,15323,
+51741,15324,
+51742,15325,
+51743,15326,
+51744,15327,
+51745,15328,
+51746,15329,
+51747,15330,
+51748,15331,
+51749,15332,
+51750,15333,
+51751,15334,
+51752,15335,
+51753,2804,
+51754,15336,
+51755,15337,
+51756,15338,
+51757,15339,
+51758,15340,
+51759,15341,
+51760,15342,
+51761,15343,
+51762,15344,
+51763,15345,
+51764,15346,
+51765,15347,
+51766,15348,
+51767,15349,
+51768,15350,
+51769,15351,
+51770,15352,
+51771,15353,
+51772,15354,
+51773,15355,
+51774,15356,
+51775,15357,
+51776,15358,
+51777,15359,
+51778,15360,
+51779,15361,
+51780,15362,
+51781,15363,
+51782,15364,
+51783,15365,
+51784,15366,
+51785,15367,
+51786,15368,
+51787,15369,
+51788,2805,
+51789,2806,
+51790,15370,
+51791,15371,
+51792,2807,
+51793,15372,
+51794,15373,
+51795,15374,
+51796,2808,
+51797,15375,
+51798,15376,
+51799,15377,
+51800,15378,
+51801,15379,
+51802,15380,
+51803,15381,
+51804,2809,
+51805,2810,
+51806,15382,
+51807,2811,
+51808,2812,
+51809,2813,
+51810,15383,
+51811,15384,
+51812,15385,
+51813,15386,
+51814,15387,
+51815,15388,
+51816,2814,
+51817,15389,
+51818,15390,
+51819,15391,
+51820,15392,
+51821,15393,
+51822,15394,
+51823,15395,
+51824,15396,
+51825,15397,
+51826,15398,
+51827,15399,
+51828,15400,
+51829,15401,
+51830,15402,
+51831,15403,
+51832,15404,
+51833,15405,
+51834,15406,
+51835,15407,
+51836,15408,
+51837,2815,
+51838,15409,
+51839,15410,
+51840,15411,
+51841,15412,
+51842,15413,
+51843,15414,
+51844,2816,
+51845,15415,
+51846,15416,
+51847,15417,
+51848,15418,
+51849,15419,
+51850,15420,
+51851,15421,
+51852,15422,
+51853,15423,
+51854,15424,
+51855,15425,
+51856,15426,
+51857,15427,
+51858,15428,
+51859,15429,
+51860,15430,
+51861,15431,
+51862,15432,
+51863,15433,
+51864,2817,
+51865,15434,
+51866,15435,
+51867,15436,
+51868,15437,
+51869,15438,
+51870,15439,
+51871,15440,
+51872,15441,
+51873,15442,
+51874,15443,
+51875,15444,
+51876,15445,
+51877,15446,
+51878,15447,
+51879,15448,
+51880,15449,
+51881,15450,
+51882,15451,
+51883,15452,
+51884,15453,
+51885,15454,
+51886,15455,
+51887,15456,
+51888,15457,
+51889,15458,
+51890,15459,
+51891,15460,
+51892,15461,
+51893,15462,
+51894,15463,
+51895,15464,
+51896,15465,
+51897,15466,
+51898,15467,
+51899,15468,
+51900,2818,
+51901,2819,
+51902,15469,
+51903,15470,
+51904,2820,
+51905,15471,
+51906,15472,
+51907,15473,
+51908,2821,
+51909,15474,
+51910,15475,
+51911,15476,
+51912,15477,
+51913,15478,
+51914,15479,
+51915,15480,
+51916,2822,
+51917,2823,
+51918,15481,
+51919,2824,
+51920,15482,
+51921,2825,
+51922,15483,
+51923,2826,
+51924,15484,
+51925,15485,
+51926,15486,
+51927,15487,
+51928,2827,
+51929,2828,
+51930,15488,
+51931,15489,
+51932,15490,
+51933,15491,
+51934,15492,
+51935,15493,
+51936,2829,
+51937,15494,
+51938,15495,
+51939,15496,
+51940,15497,
+51941,15498,
+51942,15499,
+51943,15500,
+51944,15501,
+51945,15502,
+51946,15503,
+51947,15504,
+51948,2830,
+51949,15505,
+51950,15506,
+51951,15507,
+51952,15508,
+51953,15509,
+51954,15510,
+51955,15511,
+51956,2831,
+51957,15512,
+51958,15513,
+51959,15514,
+51960,15515,
+51961,15516,
+51962,15517,
+51963,15518,
+51964,15519,
+51965,15520,
+51966,15521,
+51967,15522,
+51968,15523,
+51969,15524,
+51970,15525,
+51971,15526,
+51972,15527,
+51973,15528,
+51974,15529,
+51975,15530,
+51976,2832,
+51977,15531,
+51978,15532,
+51979,15533,
+51980,15534,
+51981,15535,
+51982,15536,
+51983,15537,
+51984,2833,
+51985,15538,
+51986,15539,
+51987,15540,
+51988,2834,
+51989,15541,
+51990,15542,
+51991,15543,
+51992,2835,
+51993,15544,
+51994,15545,
+51995,15546,
+51996,15547,
+51997,15548,
+51998,15549,
+51999,15550,
+52000,2836,
+52001,2837,
+52002,15551,
+52003,15552,
+52004,15553,
+52005,15554,
+52006,15555,
+52007,15556,
+52008,15557,
+52009,15558,
+52010,15559,
+52011,15560,
+52012,15561,
+52013,15562,
+52014,15563,
+52015,15564,
+52016,15565,
+52017,15566,
+52018,15567,
+52019,15568,
+52020,15569,
+52021,15570,
+52022,15571,
+52023,15572,
+52024,15573,
+52025,15574,
+52026,15575,
+52027,15576,
+52028,15577,
+52029,15578,
+52030,15579,
+52031,15580,
+52032,15581,
+52033,2838,
+52034,15582,
+52035,15583,
+52036,15584,
+52037,15585,
+52038,15586,
+52039,15587,
+52040,2839,
+52041,2840,
+52042,15588,
+52043,15589,
+52044,2841,
+52045,15590,
+52046,15591,
+52047,15592,
+52048,2842,
+52049,15593,
+52050,15594,
+52051,15595,
+52052,15596,
+52053,15597,
+52054,15598,
+52055,15599,
+52056,2843,
+52057,2844,
+52058,15600,
+52059,15601,
+52060,15602,
+52061,2845,
+52062,15603,
+52063,15604,
+52064,15605,
+52065,15606,
+52066,15607,
+52067,15608,
+52068,2846,
+52069,15609,
+52070,15610,
+52071,15611,
+52072,15612,
+52073,15613,
+52074,15614,
+52075,15615,
+52076,15616,
+52077,15617,
+52078,15618,
+52079,15619,
+52080,15620,
+52081,15621,
+52082,15622,
+52083,15623,
+52084,15624,
+52085,15625,
+52086,15626,
+52087,15627,
+52088,2847,
+52089,2848,
+52090,15628,
+52091,15629,
+52092,15630,
+52093,15631,
+52094,15632,
+52095,15633,
+52096,15634,
+52097,15635,
+52098,15636,
+52099,15637,
+52100,15638,
+52101,15639,
+52102,15640,
+52103,15641,
+52104,15642,
+52105,15643,
+52106,15644,
+52107,15645,
+52108,15646,
+52109,15647,
+52110,15648,
+52111,15649,
+52112,15650,
+52113,15651,
+52114,15652,
+52115,15653,
+52116,15654,
+52117,15655,
+52118,15656,
+52119,15657,
+52120,15658,
+52121,15659,
+52122,15660,
+52123,15661,
+52124,2849,
+52125,15662,
+52126,15663,
+52127,15664,
+52128,15665,
+52129,15666,
+52130,15667,
+52131,15668,
+52132,15669,
+52133,15670,
+52134,15671,
+52135,15672,
+52136,15673,
+52137,15674,
+52138,15675,
+52139,15676,
+52140,15677,
+52141,15678,
+52142,15679,
+52143,15680,
+52144,15681,
+52145,15682,
+52146,15683,
+52147,15684,
+52148,15685,
+52149,15686,
+52150,15687,
+52151,15688,
+52152,2850,
+52153,15689,
+52154,15690,
+52155,15691,
+52156,15692,
+52157,15693,
+52158,15694,
+52159,15695,
+52160,15696,
+52161,15697,
+52162,15698,
+52163,15699,
+52164,15700,
+52165,15701,
+52166,15702,
+52167,15703,
+52168,15704,
+52169,15705,
+52170,15706,
+52171,15707,
+52172,15708,
+52173,15709,
+52174,15710,
+52175,15711,
+52176,15712,
+52177,15713,
+52178,15714,
+52179,15715,
+52180,2851,
+52181,15716,
+52182,15717,
+52183,15718,
+52184,15719,
+52185,15720,
+52186,15721,
+52187,15722,
+52188,15723,
+52189,15724,
+52190,15725,
+52191,15726,
+52192,15727,
+52193,15728,
+52194,15729,
+52195,15730,
+52196,2852,
+52197,15731,
+52198,15732,
+52199,2853,
+52200,15733,
+52201,2854,
+52202,15734,
+52203,15735,
+52204,15736,
+52205,15737,
+52206,15738,
+52207,15739,
+52208,15740,
+52209,15741,
+52210,15742,
+52211,15743,
+52212,15744,
+52213,15745,
+52214,15746,
+52215,15747,
+52216,15748,
+52217,15749,
+52218,15750,
+52219,15751,
+52220,15752,
+52221,15753,
+52222,15754,
+52223,15755,
+52224,15756,
+52225,15757,
+52226,15758,
+52227,15759,
+52228,15760,
+52229,15761,
+52230,15762,
+52231,15763,
+52232,15764,
+52233,15765,
+52234,15766,
+52235,15767,
+52236,2855,
+52237,2856,
+52238,15768,
+52239,15769,
+52240,2857,
+52241,15770,
+52242,15771,
+52243,15772,
+52244,2858,
+52245,15773,
+52246,15774,
+52247,15775,
+52248,15776,
+52249,15777,
+52250,15778,
+52251,15779,
+52252,2859,
+52253,2860,
+52254,15780,
+52255,15781,
+52256,15782,
+52257,2861,
+52258,2862,
+52259,15783,
+52260,15784,
+52261,15785,
+52262,15786,
+52263,2863,
+52264,2864,
+52265,2865,
+52266,15787,
+52267,15788,
+52268,2866,
+52269,15789,
+52270,2867,
+52271,15790,
+52272,2868,
+52273,15791,
+52274,15792,
+52275,15793,
+52276,15794,
+52277,15795,
+52278,15796,
+52279,15797,
+52280,2869,
+52281,2870,
+52282,15798,
+52283,2871,
+52284,2872,
+52285,2873,
+52286,2874,
+52287,15799,
+52288,15800,
+52289,15801,
+52290,15802,
+52291,15803,
+52292,2875,
+52293,2876,
+52294,15804,
+52295,15805,
+52296,2877,
+52297,15806,
+52298,15807,
+52299,15808,
+52300,2878,
+52301,15809,
+52302,15810,
+52303,15811,
+52304,15812,
+52305,15813,
+52306,15814,
+52307,15815,
+52308,2879,
+52309,2880,
+52310,15816,
+52311,2881,
+52312,2882,
+52313,2883,
+52314,15817,
+52315,15818,
+52316,15819,
+52317,15820,
+52318,15821,
+52319,15822,
+52320,2884,
+52321,15823,
+52322,15824,
+52323,15825,
+52324,2885,
+52325,15826,
+52326,2886,
+52327,15827,
+52328,2887,
+52329,15828,
+52330,15829,
+52331,15830,
+52332,15831,
+52333,15832,
+52334,15833,
+52335,15834,
+52336,2888,
+52337,15835,
+52338,15836,
+52339,15837,
+52340,15838,
+52341,2889,
+52342,15839,
+52343,15840,
+52344,15841,
+52345,15842,
+52346,15843,
+52347,15844,
+52348,15845,
+52349,15846,
+52350,15847,
+52351,15848,
+52352,15849,
+52353,15850,
+52354,15851,
+52355,15852,
+52356,15853,
+52357,15854,
+52358,15855,
+52359,15856,
+52360,15857,
+52361,15858,
+52362,15859,
+52363,15860,
+52364,15861,
+52365,15862,
+52366,15863,
+52367,15864,
+52368,15865,
+52369,15866,
+52370,15867,
+52371,15868,
+52372,15869,
+52373,15870,
+52374,15871,
+52375,15872,
+52376,2890,
+52377,2891,
+52378,15873,
+52379,15874,
+52380,2892,
+52381,15875,
+52382,15876,
+52383,15877,
+52384,2893,
+52385,15878,
+52386,15879,
+52387,15880,
+52388,15881,
+52389,15882,
+52390,15883,
+52391,15884,
+52392,2894,
+52393,2895,
+52394,15885,
+52395,2896,
+52396,2897,
+52397,2898,
+52398,15886,
+52399,15887,
+52400,15888,
+52401,15889,
+52402,15890,
+52403,15891,
+52404,2899,
+52405,2900,
+52406,15892,
+52407,15893,
+52408,2901,
+52409,15894,
+52410,15895,
+52411,15896,
+52412,2902,
+52413,15897,
+52414,15898,
+52415,15899,
+52416,15900,
+52417,15901,
+52418,15902,
+52419,15903,
+52420,2903,
+52421,2904,
+52422,15904,
+52423,2905,
+52424,15905,
+52425,2906,
+52426,15906,
+52427,15907,
+52428,15908,
+52429,15909,
+52430,15910,
+52431,15911,
+52432,2907,
+52433,15912,
+52434,15913,
+52435,15914,
+52436,2908,
+52437,15915,
+52438,15916,
+52439,15917,
+52440,15918,
+52441,15919,
+52442,15920,
+52443,15921,
+52444,15922,
+52445,15923,
+52446,15924,
+52447,15925,
+52448,15926,
+52449,15927,
+52450,15928,
+52451,15929,
+52452,2909,
+52453,15930,
+52454,15931,
+52455,15932,
+52456,15933,
+52457,15934,
+52458,15935,
+52459,15936,
+52460,2910,
+52461,15937,
+52462,15938,
+52463,15939,
+52464,2911,
+52465,15940,
+52466,15941,
+52467,15942,
+52468,15943,
+52469,15944,
+52470,15945,
+52471,15946,
+52472,15947,
+52473,15948,
+52474,15949,
+52475,15950,
+52476,15951,
+52477,15952,
+52478,15953,
+52479,15954,
+52480,15955,
+52481,2912,
+52482,15956,
+52483,15957,
+52484,15958,
+52485,15959,
+52486,15960,
+52487,15961,
+52488,2913,
+52489,2914,
+52490,15962,
+52491,15963,
+52492,2915,
+52493,15964,
+52494,15965,
+52495,15966,
+52496,2916,
+52497,15967,
+52498,15968,
+52499,15969,
+52500,15970,
+52501,15971,
+52502,15972,
+52503,15973,
+52504,2917,
+52505,2918,
+52506,15974,
+52507,2919,
+52508,15975,
+52509,2920,
+52510,15976,
+52511,15977,
+52512,15978,
+52513,15979,
+52514,15980,
+52515,15981,
+52516,2921,
+52517,15982,
+52518,15983,
+52519,15984,
+52520,2922,
+52521,15985,
+52522,15986,
+52523,15987,
+52524,2923,
+52525,15988,
+52526,15989,
+52527,15990,
+52528,15991,
+52529,15992,
+52530,15993,
+52531,15994,
+52532,15995,
+52533,15996,
+52534,15997,
+52535,15998,
+52536,15999,
+52537,2924,
+52538,16000,
+52539,16001,
+52540,16002,
+52541,16003,
+52542,16004,
+52543,16005,
+52544,16006,
+52545,16007,
+52546,16008,
+52547,16009,
+52548,16010,
+52549,16011,
+52550,16012,
+52551,16013,
+52552,16014,
+52553,16015,
+52554,16016,
+52555,16017,
+52556,16018,
+52557,16019,
+52558,16020,
+52559,16021,
+52560,16022,
+52561,16023,
+52562,16024,
+52563,16025,
+52564,16026,
+52565,16027,
+52566,16028,
+52567,16029,
+52568,16030,
+52569,16031,
+52570,16032,
+52571,16033,
+52572,2925,
+52573,16034,
+52574,16035,
+52575,16036,
+52576,2926,
+52577,16037,
+52578,16038,
+52579,16039,
+52580,2927,
+52581,16040,
+52582,16041,
+52583,16042,
+52584,16043,
+52585,16044,
+52586,16045,
+52587,16046,
+52588,2928,
+52589,2929,
+52590,16047,
+52591,2930,
+52592,16048,
+52593,2931,
+52594,16049,
+52595,16050,
+52596,16051,
+52597,16052,
+52598,16053,
+52599,16054,
+52600,2932,
+52601,16055,
+52602,16056,
+52603,16057,
+52604,16058,
+52605,16059,
+52606,16060,
+52607,16061,
+52608,16062,
+52609,16063,
+52610,16064,
+52611,16065,
+52612,16066,
+52613,16067,
+52614,16068,
+52615,16069,
+52616,2933,
+52617,16070,
+52618,16071,
+52619,16072,
+52620,16073,
+52621,16074,
+52622,16075,
+52623,16076,
+52624,16077,
+52625,16078,
+52626,16079,
+52627,16080,
+52628,2934,
+52629,2935,
+52630,16081,
+52631,16082,
+52632,2936,
+52633,16083,
+52634,16084,
+52635,16085,
+52636,2937,
+52637,16086,
+52638,16087,
+52639,16088,
+52640,16089,
+52641,16090,
+52642,16091,
+52643,16092,
+52644,2938,
+52645,2939,
+52646,16093,
+52647,2940,
+52648,16094,
+52649,2941,
+52650,16095,
+52651,16096,
+52652,16097,
+52653,16098,
+52654,16099,
+52655,16100,
+52656,2942,
+52657,16101,
+52658,16102,
+52659,16103,
+52660,16104,
+52661,16105,
+52662,16106,
+52663,16107,
+52664,16108,
+52665,16109,
+52666,16110,
+52667,16111,
+52668,16112,
+52669,16113,
+52670,16114,
+52671,16115,
+52672,16116,
+52673,16117,
+52674,16118,
+52675,16119,
+52676,2943,
+52677,16120,
+52678,16121,
+52679,16122,
+52680,16123,
+52681,16124,
+52682,16125,
+52683,16126,
+52684,2944,
+52685,16127,
+52686,16128,
+52687,16129,
+52688,2945,
+52689,16130,
+52690,16131,
+52691,16132,
+52692,16133,
+52693,16134,
+52694,16135,
+52695,16136,
+52696,16137,
+52697,16138,
+52698,16139,
+52699,16140,
+52700,16141,
+52701,16142,
+52702,16143,
+52703,16144,
+52704,16145,
+52705,16146,
+52706,16147,
+52707,16148,
+52708,16149,
+52709,16150,
+52710,16151,
+52711,16152,
+52712,2946,
+52713,16153,
+52714,16154,
+52715,16155,
+52716,2947,
+52717,16156,
+52718,16157,
+52719,16158,
+52720,2948,
+52721,16159,
+52722,16160,
+52723,16161,
+52724,16162,
+52725,16163,
+52726,16164,
+52727,16165,
+52728,2949,
+52729,2950,
+52730,16166,
+52731,2951,
+52732,16167,
+52733,2952,
+52734,16168,
+52735,16169,
+52736,16170,
+52737,16171,
+52738,16172,
+52739,16173,
+52740,2953,
+52741,16174,
+52742,16175,
+52743,16176,
+52744,2954,
+52745,16177,
+52746,16178,
+52747,16179,
+52748,2955,
+52749,16180,
+52750,16181,
+52751,16182,
+52752,16183,
+52753,16184,
+52754,16185,
+52755,16186,
+52756,2956,
+52757,16187,
+52758,16188,
+52759,16189,
+52760,16190,
+52761,2957,
+52762,16191,
+52763,16192,
+52764,16193,
+52765,16194,
+52766,16195,
+52767,16196,
+52768,2958,
+52769,2959,
+52770,16197,
+52771,16198,
+52772,2960,
+52773,16199,
+52774,16200,
+52775,16201,
+52776,2961,
+52777,16202,
+52778,16203,
+52779,16204,
+52780,16205,
+52781,16206,
+52782,16207,
+52783,16208,
+52784,2962,
+52785,2963,
+52786,16209,
+52787,2964,
+52788,16210,
+52789,2965,
+52790,16211,
+52791,16212,
+52792,16213,
+52793,16214,
+52794,16215,
+52795,16216,
+52796,16217,
+52797,16218,
+52798,16219,
+52799,16220,
+52800,16221,
+52801,16222,
+52802,16223,
+52803,16224,
+52804,16225,
+52805,16226,
+52806,16227,
+52807,16228,
+52808,16229,
+52809,16230,
+52810,16231,
+52811,16232,
+52812,16233,
+52813,16234,
+52814,16235,
+52815,16236,
+52816,16237,
+52817,16238,
+52818,16239,
+52819,16240,
+52820,16241,
+52821,16242,
+52822,16243,
+52823,16244,
+52824,2966,
+52825,2967,
+52826,16245,
+52827,16246,
+52828,2968,
+52829,16247,
+52830,16248,
+52831,2969,
+52832,2970,
+52833,2971,
+52834,16249,
+52835,16250,
+52836,16251,
+52837,16252,
+52838,16253,
+52839,16254,
+52840,2972,
+52841,2973,
+52842,16255,
+52843,2974,
+52844,16256,
+52845,2975,
+52846,16257,
+52847,16258,
+52848,16259,
+52849,16260,
+52850,16261,
+52851,16262,
+52852,2976,
+52853,2977,
+52854,16263,
+52855,16264,
+52856,2978,
+52857,16265,
+52858,16266,
+52859,16267,
+52860,2979,
+52861,16268,
+52862,16269,
+52863,16270,
+52864,16271,
+52865,16272,
+52866,16273,
+52867,16274,
+52868,2980,
+52869,2981,
+52870,16275,
+52871,2982,
+52872,16276,
+52873,2983,
+52874,16277,
+52875,16278,
+52876,16279,
+52877,16280,
+52878,16281,
+52879,16282,
+52880,2984,
+52881,2985,
+52882,16283,
+52883,16284,
+52884,2986,
+52885,16285,
+52886,16286,
+52887,16287,
+52888,2987,
+52889,16288,
+52890,16289,
+52891,16290,
+52892,16291,
+52893,16292,
+52894,16293,
+52895,16294,
+52896,2988,
+52897,2989,
+52898,16295,
+52899,2990,
+52900,2991,
+52901,2992,
+52902,16296,
+52903,16297,
+52904,16298,
+52905,16299,
+52906,16300,
+52907,16301,
+52908,2993,
+52909,2994,
+52910,16302,
+52911,16303,
+52912,16304,
+52913,16305,
+52914,16306,
+52915,16307,
+52916,16308,
+52917,16309,
+52918,16310,
+52919,16311,
+52920,16312,
+52921,16313,
+52922,16314,
+52923,16315,
+52924,16316,
+52925,16317,
+52926,16318,
+52927,16319,
+52928,16320,
+52929,2995,
+52930,16321,
+52931,16322,
+52932,16323,
+52933,16324,
+52934,16325,
+52935,16326,
+52936,16327,
+52937,16328,
+52938,16329,
+52939,16330,
+52940,16331,
+52941,16332,
+52942,16333,
+52943,16334,
+52944,16335,
+52945,16336,
+52946,16337,
+52947,16338,
+52948,16339,
+52949,16340,
+52950,16341,
+52951,16342,
+52952,16343,
+52953,16344,
+52954,16345,
+52955,16346,
+52956,16347,
+52957,16348,
+52958,16349,
+52959,16350,
+52960,16351,
+52961,16352,
+52962,16353,
+52963,16354,
+52964,2996,
+52965,2997,
+52966,16355,
+52967,16356,
+52968,2998,
+52969,16357,
+52970,16358,
+52971,2999,
+52972,3000,
+52973,16359,
+52974,16360,
+52975,16361,
+52976,16362,
+52977,16363,
+52978,16364,
+52979,16365,
+52980,3001,
+52981,3002,
+52982,16366,
+52983,3003,
+52984,3004,
+52985,3005,
+52986,16367,
+52987,16368,
+52988,16369,
+52989,16370,
+52990,16371,
+52991,16372,
+52992,3006,
+52993,3007,
+52994,16373,
+52995,16374,
+52996,3008,
+52997,16375,
+52998,16376,
+52999,16377,
+53000,3009,
+53001,16378,
+53002,16379,
+53003,16380,
+53004,16381,
+53005,16382,
+53006,16383,
+53007,16384,
+53008,3010,
+53009,3011,
+53010,16385,
+53011,3012,
+53012,16386,
+53013,3013,
+53014,16387,
+53015,16388,
+53016,16389,
+53017,16390,
+53018,16391,
+53019,16392,
+53020,3014,
+53021,16393,
+53022,16394,
+53023,16395,
+53024,3015,
+53025,16396,
+53026,16397,
+53027,16398,
+53028,3016,
+53029,16399,
+53030,16400,
+53031,16401,
+53032,16402,
+53033,16403,
+53034,16404,
+53035,16405,
+53036,3017,
+53037,3018,
+53038,16406,
+53039,3019,
+53040,3020,
+53041,3021,
+53042,16407,
+53043,16408,
+53044,16409,
+53045,16410,
+53046,16411,
+53047,16412,
+53048,3022,
+53049,16413,
+53050,16414,
+53051,16415,
+53052,16416,
+53053,16417,
+53054,16418,
+53055,16419,
+53056,16420,
+53057,16421,
+53058,16422,
+53059,16423,
+53060,16424,
+53061,16425,
+53062,16426,
+53063,16427,
+53064,16428,
+53065,16429,
+53066,16430,
+53067,16431,
+53068,16432,
+53069,16433,
+53070,16434,
+53071,16435,
+53072,16436,
+53073,16437,
+53074,16438,
+53075,16439,
+53076,3023,
+53077,3024,
+53078,16440,
+53079,16441,
+53080,3025,
+53081,16442,
+53082,16443,
+53083,16444,
+53084,3026,
+53085,16445,
+53086,16446,
+53087,16447,
+53088,16448,
+53089,16449,
+53090,16450,
+53091,16451,
+53092,3027,
+53093,3028,
+53094,16452,
+53095,3029,
+53096,16453,
+53097,3030,
+53098,16454,
+53099,16455,
+53100,16456,
+53101,16457,
+53102,16458,
+53103,16459,
+53104,3031,
+53105,3032,
+53106,16460,
+53107,16461,
+53108,3033,
+53109,16462,
+53110,16463,
+53111,16464,
+53112,3034,
+53113,16465,
+53114,16466,
+53115,16467,
+53116,16468,
+53117,16469,
+53118,16470,
+53119,16471,
+53120,3035,
+53121,16472,
+53122,16473,
+53123,16474,
+53124,16475,
+53125,3036,
+53126,16476,
+53127,16477,
+53128,16478,
+53129,16479,
+53130,16480,
+53131,16481,
+53132,3037,
+53133,16482,
+53134,16483,
+53135,16484,
+53136,16485,
+53137,16486,
+53138,16487,
+53139,16488,
+53140,16489,
+53141,16490,
+53142,16491,
+53143,16492,
+53144,16493,
+53145,16494,
+53146,16495,
+53147,16496,
+53148,16497,
+53149,16498,
+53150,16499,
+53151,16500,
+53152,16501,
+53153,3038,
+53154,16502,
+53155,16503,
+53156,16504,
+53157,16505,
+53158,16506,
+53159,16507,
+53160,3039,
+53161,16508,
+53162,16509,
+53163,16510,
+53164,16511,
+53165,16512,
+53166,16513,
+53167,16514,
+53168,3040,
+53169,16515,
+53170,16516,
+53171,16517,
+53172,16518,
+53173,16519,
+53174,16520,
+53175,16521,
+53176,16522,
+53177,16523,
+53178,16524,
+53179,16525,
+53180,16526,
+53181,16527,
+53182,16528,
+53183,16529,
+53184,16530,
+53185,16531,
+53186,16532,
+53187,16533,
+53188,3041,
+53189,16534,
+53190,16535,
+53191,16536,
+53192,16537,
+53193,16538,
+53194,16539,
+53195,16540,
+53196,16541,
+53197,16542,
+53198,16543,
+53199,16544,
+53200,16545,
+53201,16546,
+53202,16547,
+53203,16548,
+53204,16549,
+53205,16550,
+53206,16551,
+53207,16552,
+53208,16553,
+53209,16554,
+53210,16555,
+53211,16556,
+53212,16557,
+53213,16558,
+53214,16559,
+53215,16560,
+53216,3042,
+53217,3043,
+53218,16561,
+53219,16562,
+53220,3044,
+53221,16563,
+53222,16564,
+53223,16565,
+53224,3045,
+53225,16566,
+53226,16567,
+53227,16568,
+53228,16569,
+53229,16570,
+53230,16571,
+53231,16572,
+53232,3046,
+53233,3047,
+53234,16573,
+53235,3048,
+53236,16574,
+53237,3049,
+53238,16575,
+53239,16576,
+53240,16577,
+53241,16578,
+53242,16579,
+53243,16580,
+53244,3050,
+53245,16581,
+53246,16582,
+53247,16583,
+53248,3051,
+53249,16584,
+53250,16585,
+53251,16586,
+53252,3052,
+53253,16587,
+53254,16588,
+53255,16589,
+53256,16590,
+53257,16591,
+53258,16592,
+53259,16593,
+53260,16594,
+53261,16595,
+53262,16596,
+53263,16597,
+53264,16598,
+53265,3053,
+53266,16599,
+53267,16600,
+53268,16601,
+53269,16602,
+53270,16603,
+53271,16604,
+53272,3054,
+53273,16605,
+53274,16606,
+53275,16607,
+53276,16608,
+53277,16609,
+53278,16610,
+53279,16611,
+53280,16612,
+53281,16613,
+53282,16614,
+53283,16615,
+53284,16616,
+53285,16617,
+53286,16618,
+53287,16619,
+53288,16620,
+53289,16621,
+53290,16622,
+53291,16623,
+53292,16624,
+53293,3055,
+53294,16625,
+53295,16626,
+53296,16627,
+53297,16628,
+53298,16629,
+53299,16630,
+53300,3056,
+53301,3057,
+53302,16631,
+53303,16632,
+53304,3058,
+53305,16633,
+53306,16634,
+53307,16635,
+53308,3059,
+53309,16636,
+53310,16637,
+53311,16638,
+53312,16639,
+53313,16640,
+53314,16641,
+53315,16642,
+53316,3060,
+53317,3061,
+53318,16643,
+53319,3062,
+53320,16644,
+53321,3063,
+53322,16645,
+53323,16646,
+53324,16647,
+53325,16648,
+53326,16649,
+53327,16650,
+53328,3064,
+53329,16651,
+53330,16652,
+53331,16653,
+53332,3065,
+53333,16654,
+53334,16655,
+53335,16656,
+53336,3066,
+53337,16657,
+53338,16658,
+53339,16659,
+53340,16660,
+53341,16661,
+53342,16662,
+53343,16663,
+53344,3067,
+53345,16664,
+53346,16665,
+53347,16666,
+53348,16667,
+53349,16668,
+53350,16669,
+53351,16670,
+53352,16671,
+53353,16672,
+53354,16673,
+53355,16674,
+53356,3068,
+53357,3069,
+53358,16675,
+53359,16676,
+53360,3070,
+53361,16677,
+53362,16678,
+53363,16679,
+53364,3071,
+53365,16680,
+53366,16681,
+53367,16682,
+53368,16683,
+53369,16684,
+53370,16685,
+53371,16686,
+53372,3072,
+53373,3073,
+53374,16687,
+53375,16688,
+53376,16689,
+53377,3074,
+53378,16690,
+53379,16691,
+53380,16692,
+53381,16693,
+53382,16694,
+53383,16695,
+53384,16696,
+53385,16697,
+53386,16698,
+53387,16699,
+53388,16700,
+53389,16701,
+53390,16702,
+53391,16703,
+53392,16704,
+53393,16705,
+53394,16706,
+53395,16707,
+53396,16708,
+53397,16709,
+53398,16710,
+53399,16711,
+53400,16712,
+53401,16713,
+53402,16714,
+53403,16715,
+53404,16716,
+53405,16717,
+53406,16718,
+53407,16719,
+53408,16720,
+53409,16721,
+53410,16722,
+53411,16723,
+53412,3075,
+53413,3076,
+53414,16724,
+53415,16725,
+53416,3077,
+53417,16726,
+53418,16727,
+53419,16728,
+53420,3078,
+53421,16729,
+53422,16730,
+53423,16731,
+53424,16732,
+53425,16733,
+53426,16734,
+53427,16735,
+53428,3079,
+53429,3080,
+53430,16736,
+53431,3081,
+53432,16737,
+53433,3082,
+53434,16738,
+53435,16739,
+53436,16740,
+53437,16741,
+53438,16742,
+53439,16743,
+53440,3083,
+53441,3084,
+53442,16744,
+53443,16745,
+53444,3085,
+53445,16746,
+53446,16747,
+53447,16748,
+53448,3086,
+53449,3087,
+53450,16749,
+53451,16750,
+53452,16751,
+53453,16752,
+53454,16753,
+53455,16754,
+53456,3088,
+53457,3089,
+53458,16755,
+53459,3090,
+53460,3091,
+53461,3092,
+53462,16756,
+53463,16757,
+53464,16758,
+53465,16759,
+53466,16760,
+53467,16761,
+53468,3093,
+53469,3094,
+53470,16762,
+53471,16763,
+53472,3095,
+53473,16764,
+53474,16765,
+53475,16766,
+53476,3096,
+53477,16767,
+53478,16768,
+53479,16769,
+53480,16770,
+53481,16771,
+53482,16772,
+53483,16773,
+53484,3097,
+53485,3098,
+53486,16774,
+53487,3099,
+53488,3100,
+53489,3101,
+53490,16775,
+53491,16776,
+53492,16777,
+53493,16778,
+53494,16779,
+53495,16780,
+53496,3102,
+53497,16781,
+53498,16782,
+53499,16783,
+53500,16784,
+53501,16785,
+53502,16786,
+53503,16787,
+53504,16788,
+53505,16789,
+53506,16790,
+53507,16791,
+53508,16792,
+53509,16793,
+53510,16794,
+53511,16795,
+53512,16796,
+53513,16797,
+53514,16798,
+53515,16799,
+53516,16800,
+53517,3103,
+53518,16801,
+53519,16802,
+53520,16803,
+53521,16804,
+53522,16805,
+53523,16806,
+53524,16807,
+53525,16808,
+53526,16809,
+53527,16810,
+53528,16811,
+53529,16812,
+53530,16813,
+53531,16814,
+53532,16815,
+53533,16816,
+53534,16817,
+53535,16818,
+53536,16819,
+53537,16820,
+53538,16821,
+53539,16822,
+53540,16823,
+53541,16824,
+53542,16825,
+53543,16826,
+53544,16827,
+53545,16828,
+53546,16829,
+53547,16830,
+53548,16831,
+53549,16832,
+53550,16833,
+53551,16834,
+53552,3104,
+53553,3105,
+53554,16835,
+53555,16836,
+53556,3106,
+53557,16837,
+53558,16838,
+53559,16839,
+53560,3107,
+53561,16840,
+53562,3108,
+53563,16841,
+53564,16842,
+53565,16843,
+53566,16844,
+53567,16845,
+53568,3109,
+53569,3110,
+53570,16846,
+53571,3111,
+53572,3112,
+53573,3113,
+53574,16847,
+53575,16848,
+53576,16849,
+53577,16850,
+53578,16851,
+53579,16852,
+53580,3114,
+53581,3115,
+53582,16853,
+53583,16854,
+53584,3116,
+53585,16855,
+53586,16856,
+53587,16857,
+53588,3117,
+53589,16858,
+53590,16859,
+53591,16860,
+53592,16861,
+53593,16862,
+53594,16863,
+53595,16864,
+53596,3118,
+53597,3119,
+53598,16865,
+53599,3120,
+53600,16866,
+53601,3121,
+53602,16867,
+53603,16868,
+53604,16869,
+53605,16870,
+53606,16871,
+53607,16872,
+53608,3122,
+53609,16873,
+53610,16874,
+53611,16875,
+53612,3123,
+53613,16876,
+53614,16877,
+53615,16878,
+53616,16879,
+53617,16880,
+53618,16881,
+53619,16882,
+53620,16883,
+53621,16884,
+53622,16885,
+53623,16886,
+53624,16887,
+53625,16888,
+53626,16889,
+53627,16890,
+53628,3124,
+53629,16891,
+53630,16892,
+53631,16893,
+53632,16894,
+53633,16895,
+53634,16896,
+53635,16897,
+53636,3125,
+53637,16898,
+53638,16899,
+53639,16900,
+53640,3126,
+53641,16901,
+53642,16902,
+53643,16903,
+53644,16904,
+53645,16905,
+53646,16906,
+53647,16907,
+53648,16908,
+53649,16909,
+53650,16910,
+53651,16911,
+53652,16912,
+53653,16913,
+53654,16914,
+53655,16915,
+53656,16916,
+53657,16917,
+53658,16918,
+53659,16919,
+53660,16920,
+53661,16921,
+53662,16922,
+53663,16923,
+53664,3127,
+53665,3128,
+53666,16924,
+53667,16925,
+53668,3129,
+53669,16926,
+53670,16927,
+53671,16928,
+53672,3130,
+53673,16929,
+53674,16930,
+53675,16931,
+53676,16932,
+53677,16933,
+53678,16934,
+53679,16935,
+53680,3131,
+53681,3132,
+53682,16936,
+53683,3133,
+53684,16937,
+53685,3134,
+53686,16938,
+53687,16939,
+53688,16940,
+53689,16941,
+53690,3135,
+53691,16942,
+53692,3136,
+53693,16943,
+53694,16944,
+53695,16945,
+53696,3137,
+53697,16946,
+53698,16947,
+53699,16948,
+53700,16949,
+53701,16950,
+53702,16951,
+53703,16952,
+53704,16953,
+53705,16954,
+53706,16955,
+53707,16956,
+53708,16957,
+53709,16958,
+53710,16959,
+53711,16960,
+53712,16961,
+53713,16962,
+53714,16963,
+53715,16964,
+53716,16965,
+53717,16966,
+53718,16967,
+53719,16968,
+53720,3138,
+53721,16969,
+53722,16970,
+53723,16971,
+53724,16972,
+53725,16973,
+53726,16974,
+53727,16975,
+53728,16976,
+53729,16977,
+53730,16978,
+53731,16979,
+53732,16980,
+53733,16981,
+53734,16982,
+53735,16983,
+53736,16984,
+53737,16985,
+53738,16986,
+53739,16987,
+53740,16988,
+53741,16989,
+53742,16990,
+53743,16991,
+53744,16992,
+53745,16993,
+53746,16994,
+53747,16995,
+53748,3139,
+53749,16996,
+53750,16997,
+53751,16998,
+53752,3140,
+53753,16999,
+53754,17000,
+53755,17001,
+53756,17002,
+53757,17003,
+53758,17004,
+53759,17005,
+53760,17006,
+53761,17007,
+53762,17008,
+53763,17009,
+53764,17010,
+53765,17011,
+53766,17012,
+53767,3141,
+53768,17013,
+53769,3142,
+53770,17014,
+53771,17015,
+53772,17016,
+53773,17017,
+53774,17018,
+53775,17019,
+53776,3143,
+53777,17020,
+53778,17021,
+53779,17022,
+53780,17023,
+53781,17024,
+53782,17025,
+53783,17026,
+53784,17027,
+53785,17028,
+53786,17029,
+53787,17030,
+53788,17031,
+53789,17032,
+53790,17033,
+53791,17034,
+53792,17035,
+53793,17036,
+53794,17037,
+53795,17038,
+53796,17039,
+53797,17040,
+53798,17041,
+53799,17042,
+53800,17043,
+53801,17044,
+53802,17045,
+53803,17046,
+53804,3144,
+53805,3145,
+53806,17047,
+53807,17048,
+53808,3146,
+53809,17049,
+53810,17050,
+53811,17051,
+53812,3147,
+53813,17052,
+53814,17053,
+53815,17054,
+53816,17055,
+53817,17056,
+53818,17057,
+53819,17058,
+53820,3148,
+53821,3149,
+53822,17059,
+53823,3150,
+53824,17060,
+53825,3151,
+53826,17061,
+53827,17062,
+53828,17063,
+53829,17064,
+53830,17065,
+53831,17066,
+53832,3152,
+53833,17067,
+53834,17068,
+53835,17069,
+53836,17070,
+53837,17071,
+53838,17072,
+53839,17073,
+53840,17074,
+53841,17075,
+53842,17076,
+53843,17077,
+53844,17078,
+53845,17079,
+53846,17080,
+53847,17081,
+53848,17082,
+53849,17083,
+53850,17084,
+53851,17085,
+53852,3153,
+53853,17086,
+53854,17087,
+53855,17088,
+53856,17089,
+53857,17090,
+53858,17091,
+53859,17092,
+53860,3154,
+53861,17093,
+53862,17094,
+53863,17095,
+53864,17096,
+53865,17097,
+53866,17098,
+53867,17099,
+53868,17100,
+53869,17101,
+53870,17102,
+53871,17103,
+53872,17104,
+53873,17105,
+53874,17106,
+53875,17107,
+53876,17108,
+53877,17109,
+53878,17110,
+53879,17111,
+53880,17112,
+53881,17113,
+53882,17114,
+53883,17115,
+53884,17116,
+53885,17117,
+53886,17118,
+53887,17119,
+53888,3155,
+53889,3156,
+53890,17120,
+53891,17121,
+53892,3157,
+53893,17122,
+53894,17123,
+53895,17124,
+53896,3158,
+53897,17125,
+53898,17126,
+53899,17127,
+53900,17128,
+53901,17129,
+53902,17130,
+53903,17131,
+53904,3159,
+53905,3160,
+53906,17132,
+53907,17133,
+53908,17134,
+53909,3161,
+53910,17135,
+53911,17136,
+53912,17137,
+53913,17138,
+53914,17139,
+53915,17140,
+53916,3162,
+53917,17141,
+53918,17142,
+53919,17143,
+53920,3163,
+53921,17144,
+53922,17145,
+53923,17146,
+53924,3164,
+53925,17147,
+53926,17148,
+53927,17149,
+53928,17150,
+53929,17151,
+53930,17152,
+53931,17153,
+53932,3165,
+53933,17154,
+53934,17155,
+53935,17156,
+53936,17157,
+53937,3166,
+53938,17158,
+53939,17159,
+53940,17160,
+53941,17161,
+53942,17162,
+53943,17163,
+53944,3167,
+53945,3168,
+53946,17164,
+53947,17165,
+53948,3169,
+53949,17166,
+53950,17167,
+53951,3170,
+53952,3171,
+53953,17168,
+53954,3172,
+53955,17169,
+53956,17170,
+53957,17171,
+53958,17172,
+53959,17173,
+53960,3173,
+53961,3174,
+53962,17174,
+53963,3175,
+53964,17175,
+53965,17176,
+53966,17177,
+53967,17178,
+53968,17179,
+53969,17180,
+53970,17181,
+53971,17182,
+53972,3176,
+53973,17183,
+53974,17184,
+53975,17185,
+53976,3177,
+53977,17186,
+53978,17187,
+53979,17188,
+53980,3178,
+53981,17189,
+53982,17190,
+53983,17191,
+53984,17192,
+53985,17193,
+53986,17194,
+53987,17195,
+53988,3179,
+53989,3180,
+53990,17196,
+53991,17197,
+53992,17198,
+53993,17199,
+53994,17200,
+53995,17201,
+53996,17202,
+53997,17203,
+53998,17204,
+53999,17205,
+54000,3181,
+54001,3182,
+54002,17206,
+54003,17207,
+54004,3183,
+54005,17208,
+54006,17209,
+54007,17210,
+54008,3184,
+54009,17211,
+54010,17212,
+54011,17213,
+54012,17214,
+54013,17215,
+54014,17216,
+54015,17217,
+54016,3185,
+54017,3186,
+54018,17218,
+54019,3187,
+54020,17219,
+54021,3188,
+54022,17220,
+54023,17221,
+54024,17222,
+54025,17223,
+54026,17224,
+54027,17225,
+54028,3189,
+54029,3190,
+54030,3191,
+54031,17226,
+54032,3192,
+54033,17227,
+54034,17228,
+54035,17229,
+54036,3193,
+54037,17230,
+54038,3194,
+54039,17231,
+54040,17232,
+54041,17233,
+54042,17234,
+54043,17235,
+54044,3195,
+54045,3196,
+54046,17236,
+54047,3197,
+54048,3198,
+54049,3199,
+54050,17237,
+54051,17238,
+54052,17239,
+54053,3200,
+54054,17240,
+54055,17241,
+54056,3201,
+54057,3202,
+54058,17242,
+54059,17243,
+54060,3203,
+54061,17244,
+54062,17245,
+54063,17246,
+54064,3204,
+54065,17247,
+54066,17248,
+54067,17249,
+54068,17250,
+54069,17251,
+54070,17252,
+54071,17253,
+54072,3205,
+54073,3206,
+54074,17254,
+54075,3207,
+54076,3208,
+54077,3209,
+54078,17255,
+54079,17256,
+54080,17257,
+54081,17258,
+54082,17259,
+54083,17260,
+54084,3210,
+54085,3211,
+54086,17261,
+54087,17262,
+54088,17263,
+54089,17264,
+54090,17265,
+54091,17266,
+54092,17267,
+54093,17268,
+54094,17269,
+54095,17270,
+54096,17271,
+54097,17272,
+54098,17273,
+54099,17274,
+54100,17275,
+54101,17276,
+54102,17277,
+54103,17278,
+54104,17279,
+54105,17280,
+54106,17281,
+54107,17282,
+54108,17283,
+54109,17284,
+54110,17285,
+54111,17286,
+54112,17287,
+54113,17288,
+54114,17289,
+54115,17290,
+54116,17291,
+54117,17292,
+54118,17293,
+54119,17294,
+54120,17295,
+54121,17296,
+54122,17297,
+54123,17298,
+54124,17299,
+54125,17300,
+54126,17301,
+54127,17302,
+54128,17303,
+54129,17304,
+54130,17305,
+54131,17306,
+54132,17307,
+54133,17308,
+54134,17309,
+54135,17310,
+54136,17311,
+54137,17312,
+54138,17313,
+54139,17314,
+54140,3212,
+54141,3213,
+54142,17315,
+54143,17316,
+54144,3214,
+54145,17317,
+54146,17318,
+54147,17319,
+54148,3215,
+54149,17320,
+54150,17321,
+54151,17322,
+54152,17323,
+54153,17324,
+54154,17325,
+54155,17326,
+54156,3216,
+54157,3217,
+54158,17327,
+54159,3218,
+54160,3219,
+54161,3220,
+54162,17328,
+54163,17329,
+54164,17330,
+54165,17331,
+54166,17332,
+54167,17333,
+54168,3221,
+54169,3222,
+54170,17334,
+54171,17335,
+54172,3223,
+54173,17336,
+54174,17337,
+54175,17338,
+54176,3224,
+54177,17339,
+54178,17340,
+54179,17341,
+54180,17342,
+54181,17343,
+54182,17344,
+54183,17345,
+54184,3225,
+54185,3226,
+54186,17346,
+54187,3227,
+54188,17347,
+54189,3228,
+54190,17348,
+54191,17349,
+54192,17350,
+54193,17351,
+54194,17352,
+54195,17353,
+54196,3229,
+54197,17354,
+54198,17355,
+54199,17356,
+54200,3230,
+54201,17357,
+54202,17358,
+54203,17359,
+54204,3231,
+54205,17360,
+54206,17361,
+54207,17362,
+54208,17363,
+54209,17364,
+54210,17365,
+54211,17366,
+54212,3232,
+54213,3233,
+54214,17367,
+54215,17368,
+54216,3234,
+54217,3235,
+54218,17369,
+54219,17370,
+54220,17371,
+54221,17372,
+54222,17373,
+54223,17374,
+54224,3236,
+54225,17375,
+54226,17376,
+54227,17377,
+54228,17378,
+54229,17379,
+54230,17380,
+54231,17381,
+54232,3237,
+54233,17382,
+54234,17383,
+54235,17384,
+54236,17385,
+54237,17386,
+54238,17387,
+54239,17388,
+54240,17389,
+54241,3238,
+54242,17390,
+54243,3239,
+54244,17391,
+54245,17392,
+54246,17393,
+54247,17394,
+54248,17395,
+54249,17396,
+54250,17397,
+54251,17398,
+54252,3240,
+54253,3241,
+54254,17399,
+54255,17400,
+54256,3242,
+54257,17401,
+54258,17402,
+54259,17403,
+54260,3243,
+54261,17404,
+54262,17405,
+54263,17406,
+54264,17407,
+54265,17408,
+54266,17409,
+54267,17410,
+54268,3244,
+54269,3245,
+54270,17411,
+54271,3246,
+54272,17412,
+54273,3247,
+54274,17413,
+54275,17414,
+54276,17415,
+54277,17416,
+54278,17417,
+54279,17418,
+54280,3248,
+54281,17419,
+54282,17420,
+54283,17421,
+54284,17422,
+54285,17423,
+54286,17424,
+54287,17425,
+54288,17426,
+54289,17427,
+54290,17428,
+54291,17429,
+54292,17430,
+54293,17431,
+54294,17432,
+54295,17433,
+54296,17434,
+54297,17435,
+54298,17436,
+54299,17437,
+54300,17438,
+54301,3249,
+54302,17439,
+54303,17440,
+54304,17441,
+54305,17442,
+54306,17443,
+54307,17444,
+54308,17445,
+54309,17446,
+54310,17447,
+54311,17448,
+54312,17449,
+54313,17450,
+54314,17451,
+54315,17452,
+54316,17453,
+54317,17454,
+54318,17455,
+54319,17456,
+54320,17457,
+54321,17458,
+54322,17459,
+54323,17460,
+54324,17461,
+54325,17462,
+54326,17463,
+54327,17464,
+54328,17465,
+54329,17466,
+54330,17467,
+54331,17468,
+54332,17469,
+54333,17470,
+54334,17471,
+54335,17472,
+54336,3250,
+54337,17473,
+54338,17474,
+54339,17475,
+54340,3251,
+54341,17476,
+54342,17477,
+54343,17478,
+54344,17479,
+54345,17480,
+54346,17481,
+54347,17482,
+54348,17483,
+54349,17484,
+54350,17485,
+54351,17486,
+54352,17487,
+54353,17488,
+54354,17489,
+54355,17490,
+54356,17491,
+54357,17492,
+54358,17493,
+54359,17494,
+54360,17495,
+54361,17496,
+54362,17497,
+54363,17498,
+54364,3252,
+54365,17499,
+54366,17500,
+54367,17501,
+54368,3253,
+54369,17502,
+54370,17503,
+54371,17504,
+54372,3254,
+54373,17505,
+54374,17506,
+54375,17507,
+54376,17508,
+54377,17509,
+54378,17510,
+54379,17511,
+54380,17512,
+54381,3255,
+54382,17513,
+54383,3256,
+54384,17514,
+54385,17515,
+54386,17516,
+54387,17517,
+54388,17518,
+54389,17519,
+54390,17520,
+54391,17521,
+54392,3257,
+54393,3258,
+54394,17522,
+54395,17523,
+54396,3259,
+54397,17524,
+54398,17525,
+54399,3260,
+54400,3261,
+54401,17526,
+54402,3262,
+54403,17527,
+54404,17528,
+54405,17529,
+54406,17530,
+54407,17531,
+54408,3263,
+54409,3264,
+54410,17532,
+54411,3265,
+54412,17533,
+54413,3266,
+54414,17534,
+54415,17535,
+54416,17536,
+54417,17537,
+54418,17538,
+54419,17539,
+54420,3267,
+54421,17540,
+54422,17541,
+54423,17542,
+54424,17543,
+54425,17544,
+54426,17545,
+54427,17546,
+54428,17547,
+54429,17548,
+54430,17549,
+54431,17550,
+54432,17551,
+54433,17552,
+54434,17553,
+54435,17554,
+54436,17555,
+54437,17556,
+54438,17557,
+54439,17558,
+54440,17559,
+54441,3268,
+54442,17560,
+54443,17561,
+54444,17562,
+54445,17563,
+54446,17564,
+54447,17565,
+54448,17566,
+54449,17567,
+54450,17568,
+54451,17569,
+54452,17570,
+54453,17571,
+54454,17572,
+54455,17573,
+54456,17574,
+54457,17575,
+54458,17576,
+54459,17577,
+54460,17578,
+54461,17579,
+54462,17580,
+54463,17581,
+54464,17582,
+54465,17583,
+54466,17584,
+54467,17585,
+54468,17586,
+54469,17587,
+54470,17588,
+54471,17589,
+54472,17590,
+54473,17591,
+54474,17592,
+54475,17593,
+54476,3269,
+54477,17594,
+54478,17595,
+54479,17596,
+54480,3270,
+54481,17597,
+54482,17598,
+54483,17599,
+54484,3271,
+54485,17600,
+54486,17601,
+54487,17602,
+54488,17603,
+54489,17604,
+54490,17605,
+54491,17606,
+54492,3272,
+54493,17607,
+54494,17608,
+54495,3273,
+54496,17609,
+54497,17610,
+54498,17611,
+54499,17612,
+54500,17613,
+54501,17614,
+54502,17615,
+54503,17616,
+54504,3274,
+54505,17617,
+54506,17618,
+54507,17619,
+54508,3275,
+54509,17620,
+54510,17621,
+54511,17622,
+54512,3276,
+54513,17623,
+54514,17624,
+54515,17625,
+54516,17626,
+54517,17627,
+54518,17628,
+54519,17629,
+54520,3277,
+54521,17630,
+54522,17631,
+54523,3278,
+54524,17632,
+54525,3279,
+54526,17633,
+54527,17634,
+54528,17635,
+54529,17636,
+54530,17637,
+54531,17638,
+54532,3280,
+54533,17639,
+54534,17640,
+54535,17641,
+54536,3281,
+54537,17642,
+54538,17643,
+54539,17644,
+54540,3282,
+54541,17645,
+54542,17646,
+54543,17647,
+54544,17648,
+54545,17649,
+54546,17650,
+54547,17651,
+54548,3283,
+54549,3284,
+54550,17652,
+54551,3285,
+54552,17653,
+54553,17654,
+54554,17655,
+54555,17656,
+54556,17657,
+54557,17658,
+54558,17659,
+54559,17660,
+54560,17661,
+54561,17662,
+54562,17663,
+54563,17664,
+54564,17665,
+54565,17666,
+54566,17667,
+54567,17668,
+54568,17669,
+54569,17670,
+54570,17671,
+54571,17672,
+54572,17673,
+54573,17674,
+54574,17675,
+54575,17676,
+54576,17677,
+54577,17678,
+54578,17679,
+54579,17680,
+54580,17681,
+54581,17682,
+54582,17683,
+54583,17684,
+54584,17685,
+54585,17686,
+54586,17687,
+54587,17688,
+54588,3286,
+54589,3287,
+54590,17689,
+54591,17690,
+54592,3288,
+54593,17691,
+54594,17692,
+54595,17693,
+54596,3289,
+54597,17694,
+54598,17695,
+54599,17696,
+54600,17697,
+54601,17698,
+54602,17699,
+54603,17700,
+54604,3290,
+54605,3291,
+54606,17701,
+54607,3292,
+54608,17702,
+54609,3293,
+54610,17703,
+54611,17704,
+54612,17705,
+54613,17706,
+54614,17707,
+54615,17708,
+54616,3294,
+54617,3295,
+54618,17709,
+54619,17710,
+54620,3296,
+54621,17711,
+54622,17712,
+54623,17713,
+54624,3297,
+54625,17714,
+54626,17715,
+54627,17716,
+54628,17717,
+54629,3298,
+54630,17718,
+54631,17719,
+54632,3299,
+54633,3300,
+54634,17720,
+54635,3301,
+54636,17721,
+54637,3302,
+54638,17722,
+54639,17723,
+54640,17724,
+54641,17725,
+54642,17726,
+54643,17727,
+54644,3303,
+54645,3304,
+54646,17728,
+54647,17729,
+54648,3305,
+54649,17730,
+54650,17731,
+54651,17732,
+54652,3306,
+54653,17733,
+54654,17734,
+54655,17735,
+54656,17736,
+54657,17737,
+54658,17738,
+54659,17739,
+54660,3307,
+54661,3308,
+54662,17740,
+54663,3309,
+54664,3310,
+54665,3311,
+54666,17741,
+54667,17742,
+54668,17743,
+54669,17744,
+54670,17745,
+54671,17746,
+54672,3312,
+54673,17747,
+54674,17748,
+54675,17749,
+54676,17750,
+54677,17751,
+54678,17752,
+54679,17753,
+54680,17754,
+54681,17755,
+54682,17756,
+54683,17757,
+54684,17758,
+54685,17759,
+54686,17760,
+54687,17761,
+54688,17762,
+54689,17763,
+54690,17764,
+54691,17765,
+54692,17766,
+54693,3313,
+54694,17767,
+54695,17768,
+54696,17769,
+54697,17770,
+54698,17771,
+54699,17772,
+54700,17773,
+54701,17774,
+54702,17775,
+54703,17776,
+54704,17777,
+54705,17778,
+54706,17779,
+54707,17780,
+54708,17781,
+54709,17782,
+54710,17783,
+54711,17784,
+54712,17785,
+54713,17786,
+54714,17787,
+54715,17788,
+54716,17789,
+54717,17790,
+54718,17791,
+54719,17792,
+54720,17793,
+54721,17794,
+54722,17795,
+54723,17796,
+54724,17797,
+54725,17798,
+54726,17799,
+54727,17800,
+54728,3314,
+54729,3315,
+54730,17801,
+54731,17802,
+54732,3316,
+54733,17803,
+54734,17804,
+54735,17805,
+54736,3317,
+54737,17806,
+54738,3318,
+54739,17807,
+54740,17808,
+54741,17809,
+54742,17810,
+54743,17811,
+54744,3319,
+54745,3320,
+54746,17812,
+54747,3321,
+54748,17813,
+54749,3322,
+54750,17814,
+54751,17815,
+54752,17816,
+54753,17817,
+54754,17818,
+54755,17819,
+54756,3323,
+54757,3324,
+54758,17820,
+54759,17821,
+54760,3325,
+54761,17822,
+54762,17823,
+54763,17824,
+54764,3326,
+54765,17825,
+54766,17826,
+54767,17827,
+54768,17828,
+54769,17829,
+54770,17830,
+54771,17831,
+54772,3327,
+54773,3328,
+54774,17832,
+54775,3329,
+54776,17833,
+54777,3330,
+54778,17834,
+54779,17835,
+54780,17836,
+54781,17837,
+54782,17838,
+54783,17839,
+54784,3331,
+54785,3332,
+54786,17840,
+54787,17841,
+54788,3333,
+54789,17842,
+54790,17843,
+54791,17844,
+54792,3334,
+54793,17845,
+54794,17846,
+54795,17847,
+54796,17848,
+54797,17849,
+54798,17850,
+54799,17851,
+54800,3335,
+54801,3336,
+54802,17852,
+54803,3337,
+54804,3338,
+54805,3339,
+54806,17853,
+54807,17854,
+54808,17855,
+54809,17856,
+54810,17857,
+54811,17858,
+54812,3340,
+54813,17859,
+54814,17860,
+54815,17861,
+54816,3341,
+54817,17862,
+54818,17863,
+54819,17864,
+54820,3342,
+54821,17865,
+54822,17866,
+54823,17867,
+54824,17868,
+54825,17869,
+54826,17870,
+54827,17871,
+54828,17872,
+54829,3343,
+54830,17873,
+54831,17874,
+54832,17875,
+54833,17876,
+54834,17877,
+54835,17878,
+54836,17879,
+54837,17880,
+54838,17881,
+54839,17882,
+54840,3344,
+54841,3345,
+54842,17883,
+54843,17884,
+54844,3346,
+54845,17885,
+54846,17886,
+54847,17887,
+54848,3347,
+54849,17888,
+54850,17889,
+54851,17890,
+54852,17891,
+54853,3348,
+54854,17892,
+54855,17893,
+54856,3349,
+54857,3350,
+54858,17894,
+54859,3351,
+54860,17895,
+54861,3352,
+54862,17896,
+54863,17897,
+54864,17898,
+54865,3353,
+54866,17899,
+54867,17900,
+54868,3354,
+54869,3355,
+54870,17901,
+54871,17902,
+54872,3356,
+54873,17903,
+54874,17904,
+54875,17905,
+54876,3357,
+54877,17906,
+54878,17907,
+54879,17908,
+54880,17909,
+54881,17910,
+54882,17911,
+54883,17912,
+54884,17913,
+54885,17914,
+54886,17915,
+54887,3358,
+54888,17916,
+54889,3359,
+54890,17917,
+54891,17918,
+54892,17919,
+54893,17920,
+54894,17921,
+54895,17922,
+54896,3360,
+54897,3361,
+54898,17923,
+54899,17924,
+54900,3362,
+54901,17925,
+54902,17926,
+54903,17927,
+54904,17928,
+54905,17929,
+54906,17930,
+54907,17931,
+54908,17932,
+54909,17933,
+54910,17934,
+54911,17935,
+54912,17936,
+54913,17937,
+54914,17938,
+54915,3363,
+54916,17939,
+54917,3364,
+54918,17940,
+54919,17941,
+54920,17942,
+54921,17943,
+54922,17944,
+54923,17945,
+54924,3365,
+54925,3366,
+54926,17946,
+54927,17947,
+54928,3367,
+54929,17948,
+54930,17949,
+54931,17950,
+54932,3368,
+54933,17951,
+54934,17952,
+54935,17953,
+54936,17954,
+54937,17955,
+54938,17956,
+54939,17957,
+54940,17958,
+54941,3369,
+54942,17959,
+54943,3370,
+54944,17960,
+54945,3371,
+54946,17961,
+54947,17962,
+54948,17963,
+54949,17964,
+54950,17965,
+54951,17966,
+54952,3372,
+54953,17967,
+54954,17968,
+54955,17969,
+54956,3373,
+54957,17970,
+54958,17971,
+54959,17972,
+54960,3374,
+54961,17973,
+54962,17974,
+54963,17975,
+54964,17976,
+54965,17977,
+54966,17978,
+54967,17979,
+54968,17980,
+54969,3375,
+54970,17981,
+54971,3376,
+54972,17982,
+54973,17983,
+54974,17984,
+54975,17985,
+54976,17986,
+54977,17987,
+54978,17988,
+54979,17989,
+54980,3377,
+54981,3378,
+54982,17990,
+54983,17991,
+54984,3379,
+54985,17992,
+54986,17993,
+54987,17994,
+54988,3380,
+54989,17995,
+54990,17996,
+54991,17997,
+54992,17998,
+54993,3381,
+54994,17999,
+54995,18000,
+54996,3382,
+54997,18001,
+54998,18002,
+54999,3383,
+55000,18003,
+55001,3384,
+55002,18004,
+55003,18005,
+55004,18006,
+55005,18007,
+55006,18008,
+55007,18009,
+55008,3385,
+55009,18010,
+55010,18011,
+55011,18012,
+55012,3386,
+55013,18013,
+55014,18014,
+55015,18015,
+55016,3387,
+55017,18016,
+55018,18017,
+55019,18018,
+55020,18019,
+55021,18020,
+55022,18021,
+55023,18022,
+55024,3388,
+55025,18023,
+55026,18024,
+55027,18025,
+55028,18026,
+55029,3389,
+55030,18027,
+55031,18028,
+55032,18029,
+55033,18030,
+55034,18031,
+55035,18032,
+55036,3390,
+55037,3391,
+55038,18033,
+55039,18034,
+55040,3392,
+55041,18035,
+55042,18036,
+55043,18037,
+55044,3393,
+55045,18038,
+55046,18039,
+55047,18040,
+55048,18041,
+55049,18042,
+55050,18043,
+55051,18044,
+55052,18045,
+55053,18046,
+55054,18047,
+55055,18048,
+55056,18049,
+55057,3394,
+55058,18050,
+55059,18051,
+55060,18052,
+55061,18053,
+55062,18054,
+55063,18055,
+55064,3395,
+55065,3396,
+55066,18056,
+55067,18057,
+55068,3397,
+55069,18058,
+55070,18059,
+55071,18060,
+55072,3398,
+55073,18061,
+55074,18062,
+55075,18063,
+55076,18064,
+55077,18065,
+55078,18066,
+55079,18067,
+55080,3399,
+55081,3400,
+55082,18068,
+55083,3401,
+55084,18069,
+55085,3402,
+55086,18070,
+55087,18071,
+55088,18072,
+55089,18073,
+55090,18074,
+55091,18075,
+55092,3403,
+55093,3404,
+55094,18076,
+55095,18077,
+55096,3405,
+55097,18078,
+55098,18079,
+55099,18080,
+55100,3406,
+55101,18081,
+55102,18082,
+55103,18083,
+55104,18084,
+55105,18085,
+55106,18086,
+55107,18087,
+55108,3407,
+55109,18088,
+55110,18089,
+55111,3408,
+55112,18090,
+55113,3409,
+55114,18091,
+55115,18092,
+55116,18093,
+55117,18094,
+55118,18095,
+55119,18096,
+55120,3410,
+55121,3411,
+55122,18097,
+55123,18098,
+55124,3412,
+55125,18099,
+55126,3413,
+55127,3414,
+55128,3415,
+55129,3416,
+55130,18100,
+55131,18101,
+55132,18102,
+55133,18103,
+55134,18104,
+55135,18105,
+55136,3417,
+55137,3418,
+55138,18106,
+55139,3419,
+55140,18107,
+55141,3420,
+55142,18108,
+55143,18109,
+55144,18110,
+55145,3421,
+55146,18111,
+55147,18112,
+55148,3422,
+55149,18113,
+55150,18114,
+55151,18115,
+55152,3423,
+55153,18116,
+55154,18117,
+55155,18118,
+55156,3424,
+55157,18119,
+55158,18120,
+55159,18121,
+55160,18122,
+55161,18123,
+55162,18124,
+55163,18125,
+55164,3425,
+55165,3426,
+55166,18126,
+55167,18127,
+55168,18128,
+55169,3427,
+55170,18129,
+55171,18130,
+55172,18131,
+55173,18132,
+55174,18133,
+55175,18134,
+55176,3428,
+55177,3429,
+55178,18135,
+55179,18136,
+55180,3430,
+55181,18137,
+55182,18138,
+55183,18139,
+55184,3431,
+55185,18140,
+55186,18141,
+55187,18142,
+55188,18143,
+55189,18144,
+55190,18145,
+55191,18146,
+55192,3432,
+55193,3433,
+55194,18147,
+55195,3434,
+55196,18148,
+55197,3435,
+55198,18149,
+55199,18150,
+55200,18151,
+55201,18152,
+55202,18153,
+55203,18154,
+63744,4116,
+63745,3678,
+63746,7053,
+63747,3460,
+63748,7900,
+63749,3802,
+63750,3902,
+63751,3946,
+63752,3946,
+63753,3708,
+63754,4131,
+63755,4374,
+63756,4156,
+63757,4375,
+63758,4376,
+63759,4377,
+63760,4378,
+63761,4379,
+63762,4380,
+63763,4381,
+63764,5800,
+63765,4382,
+63766,4383,
+63767,4384,
+63768,4386,
+63769,4387,
+63770,4388,
+63771,4389,
+63772,4390,
+63773,4391,
+63774,4394,
+63775,4395,
+63776,4396,
+63777,4399,
+63778,4403,
+63779,4406,
+63780,4407,
+63781,4409,
+63782,4410,
+63783,4411,
+63784,4412,
+63785,4413,
+63786,4414,
+63787,4415,
+63788,4419,
+63789,4420,
+63790,4424,
+63791,4511,
+63792,4513,
+63793,4514,
+63794,4517,
+63795,4518,
+63796,4519,
+63797,4520,
+63798,4521,
+63799,4522,
+63800,4524,
+63801,4525,
+63802,4526,
+63803,4528,
+63804,4529,
+63805,4530,
+63806,4531,
+63807,4532,
+63808,4533,
+63809,4535,
+63810,4536,
+63811,4537,
+63812,4541,
+63813,4542,
+63814,4545,
+63815,4546,
+63816,4547,
+63817,4550,
+63818,4564,
+63819,4566,
+63820,4567,
+63821,4568,
+63822,4569,
+63823,4571,
+63824,4572,
+63825,4576,
+63826,4604,
+63827,4605,
+63828,4606,
+63829,4607,
+63830,4609,
+63831,4610,
+63832,4611,
+63833,4612,
+63834,4318,
+63835,4136,
+63836,5800,
+63837,4139,
+63838,4192,
+63839,4167,
+63840,4172,
+63841,5552,
+63842,6424,
+63843,5151,
+63844,4922,
+63845,7518,
+63846,5079,
+63847,5109,
+63848,7607,
+63849,5584,
+63850,5367,
+63851,7083,
+63852,5362,
+63853,5485,
+63854,6001,
+63855,5460,
+63856,5317,
+63857,7009,
+63858,7370,
+63859,5678,
+63860,5874,
+63861,4425,
+63862,4426,
+63863,4427,
+63864,4429,
+63865,4430,
+63866,4431,
+63867,4435,
+63868,4436,
+63869,4437,
+63870,4439,
+63871,4442,
+63872,4443,
+63873,4159,
+63874,4444,
+63875,4447,
+63876,4449,
+63877,4450,
+63878,4453,
+63879,4455,
+63880,4456,
+63881,4457,
+63882,4458,
+63883,4459,
+63884,4460,
+63885,4463,
+63886,4160,
+63887,4465,
+63888,4466,
+63889,4161,
+63890,4468,
+63891,4469,
+63892,4470,
+63893,4162,
+63894,4471,
+63895,4472,
+63896,4474,
+63897,4473,
+63898,4475,
+63899,4476,
+63900,4478,
+63901,4479,
+63902,6447,
+63903,4481,
+63904,4482,
+63905,5460,
+63906,4483,
+63907,4163,
+63908,4166,
+63909,4485,
+63910,4487,
+63911,4488,
+63912,4489,
+63913,4491,
+63914,4167,
+63915,4493,
+63916,4494,
+63917,4495,
+63918,7783,
+63919,4497,
+63920,4499,
+63921,4501,
+63922,4502,
+63923,4503,
+63924,4504,
+63925,4506,
+63926,4508,
+63927,4509,
+63928,4510,
+63929,5797,
+63930,4551,
+63931,4552,
+63932,4553,
+63933,4180,
+63934,4555,
+63935,5800,
+63936,4556,
+63937,4557,
+63938,4560,
+63939,4561,
+63940,4563,
+63941,7988,
+63942,6123,
+63943,4577,
+63944,4183,
+63945,4579,
+63946,4581,
+63947,4582,
+63948,4584,
+63949,4586,
+63950,4588,
+63951,4184,
+63952,4590,
+63953,4591,
+63954,4592,
+63955,4593,
+63956,4595,
+63957,4596,
+63958,4597,
+63959,4599,
+63960,4600,
+63961,4601,
+63962,4602,
+63963,5552,
+63964,4603,
+63965,4614,
+63966,4616,
+63967,4618,
+63968,5950,
+63969,4620,
+63970,4621,
+63971,4187,
+63972,4625,
+63973,4627,
+63974,4629,
+63975,4632,
+63976,4633,
+63977,4634,
+63978,4636,
+63979,4188,
+63980,4189,
+63981,4638,
+63982,4640,
+63983,4641,
+63984,4642,
+63985,4644,
+63986,4645,
+63987,4646,
+63988,4647,
+63989,4648,
+63990,4650,
+63991,4653,
+63992,4654,
+63993,4655,
+63994,5351,
+63995,6494,
+63996,5731,
+63997,5771,
+63998,4191,
+63999,6484,
+64000,6684,
+64001,4279,
+64002,7139,
+64003,4247,
+64004,4266,
+64005,4340,
+64006,7572,
+64007,5088,
+64008,7709,
+64009,3558,
+64010,3644,
+64011,3815,
+65281,264,
+65282,265,
+65283,266,
+65284,267,
+65285,268,
+65286,269,
+65287,270,
+65288,271,
+65289,272,
+65290,273,
+65291,274,
+65292,275,
+65293,276,
+65294,277,
+65295,278,
+65296,279,
+65297,280,
+65298,281,
+65299,282,
+65300,283,
+65301,284,
+65302,285,
+65303,286,
+65304,287,
+65305,288,
+65306,289,
+65307,290,
+65308,291,
+65309,292,
+65310,293,
+65311,294,
+65312,295,
+65313,296,
+65314,297,
+65315,298,
+65316,299,
+65317,300,
+65318,301,
+65319,302,
+65320,303,
+65321,304,
+65322,305,
+65323,306,
+65324,307,
+65325,308,
+65326,309,
+65327,310,
+65328,311,
+65329,312,
+65330,313,
+65331,314,
+65332,315,
+65333,316,
+65334,317,
+65335,318,
+65336,319,
+65337,320,
+65338,321,
+65339,322,
+65340,112,
+65341,324,
+65342,325,
+65343,326,
+65344,327,
+65345,328,
+65346,329,
+65347,330,
+65348,331,
+65349,332,
+65350,333,
+65351,334,
+65352,335,
+65353,336,
+65354,337,
+65355,338,
+65356,339,
+65357,340,
+65358,341,
+65359,342,
+65360,343,
+65361,344,
+65362,345,
+65363,346,
+65364,347,
+65365,348,
+65366,349,
+65367,350,
+65368,351,
+65369,352,
+65370,353,
+65371,354,
+65372,355,
+65373,356,
+65374,113,
+65504,143,
+65505,144,
+65506,194,
+65507,357,
+65509,145,
+65510,323,
+       };
+}
+
+# by UniKS-UCS2-V Cmap
+sub u2c_KS_V {
+       return {
+8211,8059,
+8212,8060,
+8214,8061,
+8229,8058,
+12289,8056,
+12290,8057,
+12296,8065,
+12297,8066,
+12298,8067,
+12299,8068,
+12300,8069,
+12301,8070,
+12302,8071,
+12303,8072,
+12304,8073,
+12305,8074,
+12307,8075,
+12308,8063,
+12309,8064,
+65281,8076,
+65288,8077,
+65289,8078,
+65292,8079,
+65294,8080,
+65306,8081,
+65307,8082,
+65308,8083,
+65309,8084,
+65310,8085,
+65311,8086,
+65339,8087,
+65341,8088,
+65343,8089,
+65371,8090,
+65372,8091,
+65373,8092,
+65374,8062,
+65507,8093,
+       };
+}
index 833ea43..17db0bd 100644 (file)
@@ -1,6 +1,12 @@
 package PDFJ::Unicode;
+use PDFJ::U2C;
 use strict;
 
+BEGIN {
+       eval { require bytes; };
+       bytes->import unless $@;
+}
+
 my $euc2unihash;
 
 sub e2u {
@@ -73,10 +79,14 @@ sub sjistounicode {
 
 sub utf8tounicode {
        my $str = shift;
+       if( $] > 5.007 ) {
+               utf8::downgrade($str, 1);
+       }
+       $str =~ s/^\xfe\xff//;
        my $result;
        while( $str =~ /([\x00-\x7F])|([\xC0-\xDF])([\x80-\xBF])|([\xE0-\xEF])([\x80-\xBF])([\x80-\xBF])/g ) {
-               if( $1 ) {
-                       $result .= "\x00$1";
+               if( defined $1 ) {
+                       $result .= "\x00".$1;
                } elsif( $2 ) {
                        $result .= pack("n",((ord($2) & 31) << 6)|(ord($3) & 63));
                } else {
@@ -87,28 +97,17 @@ sub utf8tounicode {
        $result;
 }
 
-my $unicode2cidhash_hp;
-my $unicode2cidhash_h;
-my $unicode2cidhash_vp;
-my $unicode2cidhash_v;
+my %u2chashes;
 sub unicodetocid {
-       my($uni, $type) = @_; # $type: H, V, Hp, Vp
-       unless( $unicode2cidhash_hp ) {
-               require PDFJ::U2C;
-               $unicode2cidhash_hp = unicode2cidhash_hp();
-               $unicode2cidhash_h  = unicode2cidhash_h();
-               $unicode2cidhash_vp = unicode2cidhash_vp();
-               $unicode2cidhash_v  = unicode2cidhash_v();
+       my($uni, $encoding) = @_; 
+       unless( exists $u2chashes{$encoding} ) {
+               $u2chashes{$encoding} = PDFJ::U2C::hashes($encoding);
+       }
+       my $hashes = $u2chashes{$encoding};
+       for my $hash(@$hashes) {
+               return $hash->{$uni} if $hash->{$uni};
        }
-       if( $type eq 'H' ) {
-               $unicode2cidhash_h->{$uni} || $unicode2cidhash_hp->{$uni};
-       } elsif( $type eq 'V' ) {
-               $unicode2cidhash_v->{$uni} || $unicode2cidhash_hp->{$uni};
-       } elsif( $type eq 'Vp' ) {
-               $unicode2cidhash_vp->{$uni} || $unicode2cidhash_hp->{$uni};
-       } else {
-               $unicode2cidhash_hp->{$uni};
-       } 
+       return '-';
 }
 
 1;