Changeset b5b0907


Ignore:
Timestamp:
Jun 15, 2015, 12:45:26 PM (10 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
94b4364
Parents:
ea9b9d3 (diff), a1d5d2a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into resolver

Conflicts:

src/CodeGen/CodeGenerator.cc

Location:
src
Files:
5 deleted
50 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jun 11 13:22:39 2015
    13 // Update Count     : 137
     12// Last Modified On : Mon Jun 15 12:43:21 2015
     13// Update Count     : 138
    1414//
    1515
     
    1919#include <list>
    2020
     21#include "Parser/ParseNode.h"
     22
    2123#include "SynTree/Type.h"
    22 #include "SynTree/Declaration.h"
    23 #include "SynTree/Statement.h"
    2424#include "SynTree/Expression.h"
    2525#include "SynTree/Initializer.h"
     26#include "SynTree/Statement.h"
    2627
    2728#include "utility.h"
     
    628629        void CodeGenerator::handleStorageClass( Declaration *decl ) {
    629630                switch ( decl->get_storageClass() ) {
    630                   case Declaration::NoStorageClass:
    631                         break;
    632                   case Declaration::Extern:
     631                  case DeclarationNode::Extern:
    633632                        output << "extern ";
    634633                        break;
    635                   case Declaration::Static:
     634                  case DeclarationNode::Static:
    636635                        output << "static ";
    637636                        break;
    638                   case Declaration::Auto:
     637                  case DeclarationNode::Auto:
    639638                        // silently drop storage class
    640639                        break;
    641                   case Declaration::Register:
     640                  case DeclarationNode::Register:
    642641                        output << "register ";
    643642                        break;
    644                   case Declaration::Inline:
     643                  case DeclarationNode::Inline:
    645644                        // handled as special via isInline flag (FIX)
    646645                        break;
    647                   case Declaration::Fortran:
     646                  case DeclarationNode::Fortran:
    648647                        // not handled
     648                        output << "fortran ";
     649                        break;
     650                  case DeclarationNode::Noreturn:
     651                        // not handled
     652                        output << "_Noreturn ";
     653                        break;
     654                  case DeclarationNode::Threadlocal:
     655                        // not handled
     656                        output << "_Thread_local ";
     657                        break;
     658                  case DeclarationNode::NoStorageClass:
    649659                        break;
    650660                } // switch
  • src/GenPoly/Box.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:31:41 2015
    13 // Update Count     : 1
     12// Last Modified On : Sat Jun 13 07:13:46 2015
     13// Update Count     : 3
    1414//
    1515
     
    2626#include "ScrubTyVars.h"
    2727
    28 #include "SynTree/Declaration.h"
     28#include "Parser/ParseNode.h"
     29
    2930#include "SynTree/Type.h"
    3031#include "SynTree/Expression.h"
     
    3233#include "SynTree/Statement.h"
    3334#include "SynTree/Mutator.h"
     35
    3436#include "ResolvExpr/TypeEnvironment.h"
     37
    3538#include "SymTab/Mangler.h"
    3639
     
    282285
    283286                ObjectDecl *Pass1::makeTemporary( Type *type ) {
    284                         ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), Declaration::NoStorageClass, LinkageSpec::C, 0, type, 0 );
     287                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, type, 0 );
    285288                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
    286289                        return newObj;
     
    362365                                        arg = new AddressExpr( arg );
    363366                                } else {
    364                                         ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), Declaration::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
     367                                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
    365368                                        newObj->get_type()->get_qualifiers() = Type::Qualifiers();
    366369                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
     
    433436                                makeRetParm( adapter );
    434437                        } // if
    435                         adapter->get_parameters().push_front( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 ) );
     438                        adapter->get_parameters().push_front( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 ) );
    436439                        return adapter;
    437440                }
     
    521524                        adapterBody->get_kids().push_back( bodyStmt );
    522525                        std::string adapterName = makeAdapterName( mangleName );
    523                         return new FunctionDecl( adapterName, Declaration::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false );
     526                        return new FunctionDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false );
    524527                }
    525528
     
    902905                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    903906                                        std::string adapterName = makeAdapterName( mangleName );
    904                                         paramList.push_front( new ObjectDecl( adapterName, Declaration::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) );
     907                                        paramList.push_front( new ObjectDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) );
    905908                                        adaptersDone.insert( adaptersDone.begin(), mangleName );
    906909                                }
     
    961964                        std::list< DeclarationWithType *>::iterator last = funcType->get_parameters().begin();
    962965                        std::list< DeclarationWithType *> inferredParams;
    963                         ObjectDecl *newObj = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
    964 ///   ObjectDecl *newFunPtr = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 );
     966                        ObjectDecl *newObj = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
     967///   ObjectDecl *newFunPtr = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 );
    965968                        for ( std::list< TypeDecl *>::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
    966969                                ObjectDecl *thisParm;
  • src/GenPoly/Specialize.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:55:09 2015
    13 // Update Count     : 4
     12// Last Modified On : Sat Jun 13 07:14:42 2015
     13// Update Count     : 5
    1414//
    1515
     
    1919#include "PolyMutator.h"
    2020
    21 #include "SynTree/Declaration.h"
     21#include "Parser/ParseNode.h"
     22
     23#include "SynTree/Expression.h"
    2224#include "SynTree/Statement.h"
    23 #include "SynTree/Expression.h"
    2425#include "SynTree/Type.h"
    2526#include "SynTree/TypeSubstitution.h"
     
    9697                                        newEnv.applyFree( newType );
    9798                                } // if
    98                                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), Declaration::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false );
     99                                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false );
    99100                                thunkFunc->fixUniqueId();
    100101
  • src/Makefile.am

    rea9b9d3 rb5b0907  
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jun  4 21:01:59 2015
    14 ## Update Count     : 15
     13## Last Modified On : Sat Jun 13 08:22:14 2015
     14## Update Count     : 17
    1515###############################################################################
    1616
     
    3838cfa_cpplib_PROGRAMS = cfa-cpp
    3939cfa_cpp_SOURCES = ${SRC}
    40 # need files Common/utility.h and Parser/lex.h
    41 cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common -I${srcdir}/Parser
     40# need files Common/utility.h
     41cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
    4242
    4343CXXFLAGS = -g   # remove default -O2 to allow better debugging
  • src/Makefile.in

    rea9b9d3 rb5b0907  
    392392cfa_cpplibdir = ${libdir}
    393393cfa_cpp_SOURCES = ${SRC}
    394 # need files Common/utility.h and Parser/lex.h
    395 cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common -I${srcdir}/Parser
     394# need files Common/utility.h
     395cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
    396396all: $(BUILT_SOURCES)
    397397        $(MAKE) $(AM_MAKEFLAGS) all-am
  • src/Parser/DeclarationNode.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 23:29:13 2015
    13 // Update Count     : 23
     12// Last Modified On : Sat Jun 13 08:02:03 2015
     13// Update Count     : 58
    1414//
    1515
     
    2121
    2222#include "TypeData.h"
     23
     24#include "SynTree/Declaration.h"
    2325#include "SynTree/Expression.h"
    2426
    25 
    2627using namespace std;
    2728
    2829// These must remain in the same order as the corresponding DeclarationNode enumerations.
     30const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "" };
    2931const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" };
    3032const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" };
    31 const char *DeclarationNode::modifierName[] = { "signed", "unsigned", "short", "long" };
    32 const char *DeclarationNode::tyConName[] = { "struct", "union", "context" };
     33const char *DeclarationNode::modifierName[]  = { "signed", "unsigned", "short", "long" };
     34const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
    3335const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" };
    3436
     
    6365}
    6466
    65 const char *storageClassName[] = {
    66         // order must correspond with DeclarationNode::StorageClass
    67         "extern",
    68         "static",
    69         "auto",
    70         "register",
    71         "inline",
    72         "fortran",
    73 };
    74 
    7567void DeclarationNode::print( std::ostream &os, int indent ) const {
    7668        os << string( indent, ' ' );
     
    7971        } else {
    8072                os << name << ": ";
    81         }
     73        } // if
    8274
    8375        if ( linkage != LinkageSpec::Cforall ) {
    8476                os << LinkageSpec::toString( linkage ) << " ";
    85         }
    86 
    87         printEnums( storageClasses.begin(), storageClasses.end(), storageClassName, os );
     77        } // if
     78
     79        printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
    8880        if ( type ) {
    8981                type->print( os, indent );
    9082        } else {
    9183                os << "untyped entity ";
    92         }
     84        } // if
    9385
    9486        if ( bitfieldWidth ) {
    9587                os << endl << string( indent + 2, ' ' ) << "with bitfield width ";
    9688                bitfieldWidth->printOneLine( os );
    97         }
     89        } // if
    9890
    9991        if ( initializer != 0 ) {
    10092                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    10193                initializer->printOneLine( os );
    102         }
     94        } // if
    10395
    10496        os << endl;
     
    109101        if ( hasEllipsis ) {
    110102                os << string( indent, ' ' )  << "and a variable number of other arguments" << endl;
    111         }
     103        } // if
    112104}
    113105
     
    123115        if ( body ) {
    124116                newnode->type->function->hasBody = true;
    125         }
     117        } // if
    126118
    127119        if ( ret ) {
     
    129121                ret->type = 0;
    130122                delete ret;
    131         }
     123        } // if
    132124
    133125        return newnode;
     
    141133}
    142134
    143 DeclarationNode *DeclarationNode::newStorageClass( StorageClass sc ) {
     135DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    144136        DeclarationNode *newnode = new DeclarationNode;
    145137        newnode->storageClasses.push_back( sc );
     
    177169}
    178170
    179 DeclarationNode *DeclarationNode::newAggregate( TyCon kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
     171DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
    180172        DeclarationNode *newnode = new DeclarationNode;
    181173        newnode->type = new TypeData( TypeData::Aggregate );
     
    184176        if ( newnode->type->aggregate->name == "" ) {
    185177                newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
    186         }
     178        } // if
    187179        newnode->type->aggregate->params = formals;
    188180        newnode->type->aggregate->actuals = actuals;
     
    198190        if ( newnode->type->enumeration->name == "" ) {
    199191                newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
    200         }
     192        } // if
    201193        newnode->type->enumeration->constants = constants;
    202194        return newnode;
     
    331323                        } else {
    332324                                dst->forall = src->forall;
    333                         }
     325                        } // if
    334326                        src->forall = 0;
    335                 }
     327                } // if
    336328                if ( dst->base ) {
    337329                        addQualifiersToType( src, dst->base );
     
    341333                } else {
    342334                        dst->qualifiers.splice( dst->qualifiers.end(), src->qualifiers );
    343                 }
    344         }
     335                } // if
     336        } // if
    345337}
    346338         
     
    351343                        if ( ! type ) {
    352344                                type = new TypeData;
    353                         }
     345                        } // if
    354346                        addQualifiersToType( q->type, type );
    355347                        if ( q->type && q->type->forall ) {
     
    357349                                        type->forall->appendList( q->type->forall );
    358350                                } else {
    359                                         type->forall = q->type->forall;
    360                                 }
     351                                        if ( type->kind == TypeData::Aggregate ) {
     352                                                type->aggregate->params = q->type->forall;
     353                                        } else {
     354                                                type->forall = q->type->forall;
     355                                        } // if
     356                                } // if
    361357                                q->type->forall = 0;
    362                         }
    363                 }
    364         }
     358                        } // if
     359                } // if
     360        } // if
    365361        delete q;
    366362        return this;
     
    379375                        } else {
    380376                                dst->forall = src->forall;
    381                         }
     377                        } // if
    382378                        src->forall = 0;
    383                 }
     379                } // if
    384380                if ( dst->base ) {
    385381                        addTypeToType( src, dst->base );
     
    398394                                        dst->basic->modifiers.splice( dst->basic->modifiers.end(), src->basic->modifiers );
    399395                                        dst->basic->typeSpec.splice( dst->basic->typeSpec.end(), src->basic->typeSpec );
    400                                 }
     396                                } // if
    401397                                break;
    402398
     
    409405                                        if ( src->kind == TypeData::Aggregate ) {
    410406                                                dst->base->aggInst->params = maybeClone( src->aggregate->actuals );
    411                                         }
     407                                        } // if
    412408                                        dst->base->qualifiers.splice( dst->base->qualifiers.end(), src->qualifiers );
    413409                                        src = 0;
     
    419415                                        } else {
    420416                                                dst->forall = src->forall;
    421                                         }
     417                                        } // if
    422418                                        src->forall = 0;
    423419                                        dst->base = src;
    424420                                        src = 0;
    425                                 }
    426                         }
    427                 }
    428         }
     421                                } // switch
     422                        } // switch
     423                } // if
     424        } // if
    429425}
    430426
     
    439435                                        if ( o->type->kind == TypeData::Aggregate ) {
    440436                                                type->aggInst->params = maybeClone( o->type->aggregate->actuals );
    441                                         }
     437                                        } // if
    442438                                        type->qualifiers.splice( type->qualifiers.end(), o->type->qualifiers );
    443439                                } else {
    444440                                        type = o->type;
    445                                 }
     441                                } // if
    446442                                o->type = 0;
    447443                        } else {
    448444                                addTypeToType( o->type, type );
    449                         }
    450                 }
     445                        } // if
     446                } // if
    451447                if ( o->bitfieldWidth ) {
    452448                        bitfieldWidth = o->bitfieldWidth;
    453                 }
    454         }
     449                } // if
     450        } // if
    455451        delete o;
    456452        return this;
     
    475471                } else {
    476472                        type->symbolic->assertions = assertions;
    477                 }
     473                } // if
    478474                break;
    479        
    480475          case TypeData::Variable:
    481476                if ( type->variable->assertions ) {
     
    483478                } else {
    484479                        type->variable->assertions = assertions;
    485                 }
     480                } // if
    486481                break;
    487        
    488482          default:
    489483                assert( false );
    490         }
     484        } // switch
    491485       
    492486        return this;
     
    526520}
    527521
    528 static void
    529 setBase( TypeData *&type, TypeData *newType ) {
     522static void setBase( TypeData *&type, TypeData *newType ) {
    530523        if ( type ) {
    531524                TypeData *prevBase = type;
     
    534527                        prevBase = curBase;
    535528                        curBase = curBase->base;
    536                 }
     529                } // while
    537530                prevBase->base = newType;
    538531        } else {
    539532                type = newType;
    540         }
     533        } // if
    541534}
    542535
     
    547540                p->type = 0;
    548541                delete p;
    549         }
     542        } // if
    550543        return this;
    551544}
     
    557550                a->type = 0;
    558551                delete a;
    559         }
     552        } // if
    560553        return this;
    561554}
     
    572565                                if ( type->kind == TypeData::Aggregate ) {
    573566                                        p->type->base->aggInst->params = maybeClone( type->aggregate->actuals );
    574                                 }
     567                                } // if
    575568                                p->type->base->qualifiers.splice( p->type->base->qualifiers.end(), type->qualifiers );
    576569                                break;
     
    578571                          default:
    579572                                p->type->base = type;
    580                         }
     573                        } // switch
    581574                        type = 0;
    582                 }
     575                } // if
    583576                delete this;
    584577                return p;
    585578        } else {
    586579                return this;
    587         }
     580        } // if
    588581}
    589582
     
    593586        while ( cur->base ) {
    594587                cur = cur->base;
    595         }
     588        } // while
    596589        return cur;
    597590}
     
    609602                                if ( type->kind == TypeData::Aggregate ) {
    610603                                        lastArray->base->aggInst->params = maybeClone( type->aggregate->actuals );
    611                                 }
     604                                } // if
    612605                                lastArray->base->qualifiers.splice( lastArray->base->qualifiers.end(), type->qualifiers );
    613606                                break;
    614607                          default:
    615608                                lastArray->base = type;
    616                         }
     609                        } // switch
    617610                        type = 0;
    618                 }
     611                } // if
    619612                delete this;
    620613                return a;
    621614        } else {
    622615                return this;
    623         }
     616        } // if
    624617}
    625618
     
    637630                } else {
    638631                        type->function->idList = ids;
    639                 }
     632                } // if
    640633                return type;
    641634        } else {
     
    643636                newtype->function->idList = ids;
    644637                return newtype;
    645         }
     638        } // if
    646639}
    647640       
     
    662655        while ( srcType->base ) {
    663656                srcType = srcType->base;
    664         }
     657        } // while
    665658        newnode->type = maybeClone( srcType );
    666659        if ( newnode->type->kind == TypeData::AggregateInst ) {
     
    673666                        delete newnode->type->aggInst->aggregate->aggregate->members;
    674667                        newnode->type->aggInst->aggregate->aggregate->members = 0;
    675                 }
    676         }
     668                } // if
     669        } // if
    677670        newnode->type->forall = maybeClone( type->forall );
    678671        newnode->storageClasses = storageClasses;
     
    688681                        while ( srcType->base ) {
    689682                                srcType = srcType->base;
    690                         }
     683                        } // while
    691684                        TypeData *newType = srcType->clone();
    692685                        if ( newType->kind == TypeData::AggregateInst ) {
     
    699692                                        delete newType->aggInst->aggregate->aggregate->members;
    700693                                        newType->aggInst->aggregate->aggregate->members = 0;
    701                                 }
    702                         }
     694                                } // if
     695                        } // if
    703696                        newType->forall = maybeClone( type->forall );
    704697                        if ( ! o->type ) {
     
    707700                                addTypeToType( newType, o->type );
    708701                                delete newType;
    709                         }
    710                 }
    711         }
     702                        } // if
     703                } // if
     704        } // if
    712705        return o;
    713706}
     
    731724                                addTypeToType( newType, o->type );
    732725                                delete newType;
    733                         }
    734                 }
    735         }
     726                        } // if
     727                } // if
     728        } // if
    736729        return o;
    737730}
     
    740733        if ( node != 0 ) {
    741734                set_link( node );
    742         }
     735        } // if
    743736        return this;
    744737}
     
    803796                                } else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
    804797                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    805                                         *out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
     798                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    806799                                        delete agg;
    807800                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
    808801                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    809                                         *out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
     802                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    810803                                } // if
    811804                        } // if
     
    882875}
    883876
    884 Declaration::StorageClass DeclarationNode::buildStorageClass() const {
    885         static const Declaration::StorageClass scMap[] = { 
    886                 Declaration::Extern,
    887                 Declaration::Static,
    888                 Declaration::Auto,
    889                 Declaration::Register,
    890                 Declaration::Inline,
    891                 Declaration::Fortran
    892         }; 
    893  
    894         Declaration::StorageClass ret = Declaration::NoStorageClass;
    895         for ( std::list< StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    896                 assert( unsigned( *i ) < sizeof( scMap ) / sizeof( scMap[0] ) );
    897           if ( *i == Inline ) continue;
    898           if ( ret != Declaration::NoStorageClass ) {
     877DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
     878        DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
     879        for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
     880          if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
     881
     882          if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    899883                        throw SemanticError( "invalid combination of storage classes in declaration of ", this );
    900                 }
    901                 ret = scMap[ *i ];
    902         }
     884                } // if
     885                ret = *i;
     886        } // for
    903887        return ret;
    904888}
    905889
    906890bool DeclarationNode::buildInline() const {
    907         std::list< StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), Inline );
     891        std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), DeclarationNode::Inline );
    908892  if ( first == storageClasses.end() ) return false;
    909         std::list< StorageClass >::const_iterator next = std::find( ++first, storageClasses.end(), Inline );
     893        std::list< DeclarationNode::StorageClass >::const_iterator next = std::find( ++first, storageClasses.end(), DeclarationNode::Inline );
    910894  if ( next == storageClasses.end() ) return true;
    911895        throw SemanticError( "duplicate inline specification in declaration of ", this );
  • src/Parser/ParseNode.h

    rea9b9d3 rb5b0907  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 22:02:00 2015
    13 // Update Count     : 65
     12// Last Modified On : Sat Jun 13 07:24:22 2015
     13// Update Count     : 79
    1414//
    1515
     
    2222
    2323#include "utility.h"
     24#include "Parser/LinkageSpec.h"
    2425#include "SynTree/Type.h"
    25 #include "SynTree/Declaration.h"
     26//#include "SynTree/Declaration.h"
    2627#include "UniqueName.h"
    2728
     
    265266  public:
    266267        enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Attribute };
    267         enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran };
     268        enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
    268269        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
    269         enum Modifier { Signed, Unsigned, Short, Long };
    270         enum TyCon { Struct, Union, Context };
     270        enum Modifier  { Signed, Unsigned, Short, Long };
     271        enum Aggregate { Struct, Union, Context };
    271272        enum TypeClass { Type, Dtype, Ftype };
    272273
     274        static const char *storageName[]; 
    273275        static const char *qualifierName[];
    274276        static const char *basicTypeName[];
    275277        static const char *modifierName[];
    276         static const char *tyConName[];
     278        static const char *aggregateName[];
    277279        static const char *typeClassName[];
    278280
     
    285287        static DeclarationNode *newForall( DeclarationNode *);
    286288        static DeclarationNode *newFromTypedef( std::string *);
    287         static DeclarationNode *newAggregate( TyCon kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields );
     289        static DeclarationNode *newAggregate( Aggregate kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields );
    288290        static DeclarationNode *newEnum( std::string *name, DeclarationNode *constants );
    289291        static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
     
    344346        ~DeclarationNode();
    345347  private:
    346         Declaration::StorageClass buildStorageClass() const;
     348        StorageClass buildStorageClass() const;
    347349        bool buildInline() const;
    348350
  • src/Parser/TypeData.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 12:26:02 2015
    13 // Update Count     : 8
     12// Last Modified On : Sat Jun 13 08:03:20 2015
     13// Update Count     : 15
    1414//
    1515
     
    8989                attr->type = 0;
    9090                break;
    91         }
     91        } // switch
    9292}
    9393
     
    155155                delete attr;
    156156                break;
    157         }
     157        } // switch
    158158}
    159159
     
    225225                newtype->attr->type = maybeClone( attr->type );
    226226                break;
    227         }
     227        } // switch
    228228        return newtype;
    229229}
     
    238238                os << "forall " << endl;
    239239                forall->printList( os, indent+4 );
    240         }
     240        } // if
    241241
    242242        switch ( kind ) {
     
    249249                        os << "to ";
    250250                        base->print( os, indent );
    251                 }
     251                } // if
    252252                break;
    253253          case EnumConstant:
     
    261261                if ( array->isStatic ) {
    262262                        os << "static ";
    263                 }
     263                } // if
    264264                if ( array->dimension ) {
    265265                        os << "array of ";
     
    269269                } else {
    270270                        os << "open array of ";
    271                 }
     271                } // if
    272272                if ( base ) {
    273273                        base->print( os, indent );
    274                 }
     274                } // if
    275275                break;
    276276          case Function:
     
    281281                } else {
    282282                        os << string( indent+2, ' ' ) << "with no parameters " << endl;
    283                 }
     283                } // if
    284284                if ( function->idList ) {
    285285                        os << string( indent+2, ' ' ) << "with old-style identifier list " << endl;
    286286                        function->idList->printList( os, indent+4 );
    287                 }
     287                } // if
    288288                if ( function->oldDeclList ) {
    289289                        os << string( indent+2, ' ' ) << "with old-style declaration list " << endl;
    290290                        function->oldDeclList->printList( os, indent+4 );
    291                 }
     291                } // if
    292292                os << string( indent+2, ' ' ) << "returning ";
    293293                if ( base ) {
     
    295295                } else {
    296296                        os << "nothing ";
    297                 }
     297                } // if
    298298                os << endl;
    299299                if ( function->hasBody ) {
    300300                        os << string( indent+2, ' ' ) << "with body " << endl;
    301                 }
     301                } // if
    302302                if ( function->body ) {
    303303                        function->body->printList( os, indent+2 );
    304                 }
     304                } // if
    305305                break;
    306306          case Aggregate:
    307                 os << DeclarationNode::tyConName[ aggregate->kind ] << ' ' << aggregate->name << endl;
     307                os << DeclarationNode::aggregateName[ aggregate->kind ] << ' ' << aggregate->name << endl;
    308308                if ( aggregate->params ) {
    309309                        os << string( indent+2, ' ' ) << "with type parameters " << endl;
    310310                        aggregate->params->printList( os, indent+4 );
    311                 }
     311                } // if
    312312                if ( aggregate->actuals ) {
    313313                        os << string( indent+2, ' ' ) << "instantiated with actual parameters " << endl;
    314314                        aggregate->actuals->printList( os, indent+4 );
    315                 }
     315                } // if
    316316                if ( aggregate->members ) {
    317317                        os << string( indent+2, ' ' ) << "with members " << endl;
     
    319319///     } else {
    320320///       os << string( indent+2, ' ' ) << "with no members " << endl;
    321                 }
     321                } // if
    322322                break;
    323323          case AggregateInst:
     
    327327                } else {
    328328                        os << "instance of an unspecified aggregate ";
    329                 }
     329                } // if
    330330                if ( aggInst->params ) {
    331331                        os << string( indent+2, ' ' ) << "with parameters " << endl;
    332332                        aggInst->params->printList( os, indent+2 );
    333                 }
     333                } // if
    334334                break;
    335335          case Enum:
     
    338338                        os << "with constants" << endl;
    339339                        enumeration->constants->printList( os, indent+2 );
    340                 }
     340                } // if
    341341                break;
    342342          case SymbolicInst:
     
    345345                        os << " with parameters" << endl;
    346346                        symbolic->actuals->printList( os, indent + 2 );
    347                 }
     347                } // if
    348348                break;
    349349          case Symbolic:
     
    352352                } else {
    353353                        os << "type definition ";
    354                 }
     354                } // if
    355355                if ( symbolic->params ) {
    356356                        os << endl << string( indent+2, ' ' ) << "with parameters" << endl;
    357357                        symbolic->params->printList( os, indent + 2 );
    358                 }
     358                } // if
    359359                if ( symbolic->assertions ) {
    360360                        os << endl << string( indent+2, ' ' ) << "with assertions" << endl;
    361361                        symbolic->assertions->printList( os, indent + 4 );
    362362                        os << string( indent+2, ' ' );
    363                 }
     363                } // if
    364364                if ( base ) {
    365365                        os << "for ";
    366366                        base->print( os, indent + 2 );
    367                 }
     367                } // if
    368368                break;
    369369          case Variable:
     
    373373                        variable->assertions->printList( os, indent + 4 );
    374374                        os << string( indent+2, ' ' );
    375                 }
     375                } // if
    376376                break;
    377377          case Tuple:
     
    380380                        os << "with members " << endl;
    381381                        tuple->members->printList( os, indent + 2 );
    382                 }
     382                } // if
    383383                break;
    384384          case Typeof:
     
    386386                if ( typeexpr->expr ) {
    387387                        typeexpr->expr->print( os, indent + 2 );
    388                 }
     388                } // if
    389389                break;
    390390          case Attr:
     
    392392                if ( attr->expr ) {
    393393                        attr->expr->print( os, indent + 2 );
    394                 }
     394                } // if
    395395                if ( attr->type ) {
    396396                        attr->type->print( os, indent + 2 );
    397                 }
    398                 break;
    399         }
     397                } // if
     398                break;
     399        } // switch
    400400}
    401401
     
    408408                        ret = clone();
    409409                        ret->qualifiers.clear();
    410                 }
     410                } // if
    411411                break;
    412412          case Enum:
     
    414414                        ret = clone();
    415415                        ret->qualifiers.clear();
    416                 }
     416                } // if
    417417                break;
    418418          case AggregateInst:
    419419                if ( aggInst->aggregate ) {
    420420                        ret = aggInst->aggregate->extractAggregate( false );
    421                 }
     421                } // if
    422422                break;
    423423          default:
    424424                if ( base ) {
    425425                        ret = base->extractAggregate( false );
    426                 }
    427         }
     426                } // if
     427        } // switch
    428428        return ret;
    429429}
     
    434434                if ( (*i)->get_kind() == TypeDecl::Any ) {
    435435                        FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    436                         assignType->get_parameters().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
    437                         assignType->get_parameters().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
    438                         assignType->get_returnVals().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
    439                         (*i)->get_assertions().push_front( new FunctionDecl( "?=?", Declaration::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false ) );
    440                 }
    441         }
    442 }
    443 
    444 Declaration *TypeData::buildDecl( std::string name, Declaration::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init ) const {
     436                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
     437                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
     438                        assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
     439                        (*i)->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false ) );
     440                } // if
     441        } // for
     442}
     443
     444Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init ) const {
    445445        if ( kind == TypeData::Function ) {
    446446                FunctionDecl *decl;
     
    454454                                // std::list<Label> ls;
    455455                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline );
    456                         }
     456                        } // if
    457457                } else {
    458458                        decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline );
    459                 }
     459                } // if
    460460                for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_link() ) ) {
    461461                        if ( cur->get_name() != "" ) {
    462462                                decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
    463                         }
    464                 }
     463                        } // if
     464                } // for
    465465                buildList( function->oldDeclList, decl->get_oldDecls() );
    466466                return decl;
     
    478478                } else {
    479479                        return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init );
    480                 }
    481         }
     480                } // if
     481        } // if
    482482        return 0;
    483483}
     
    514514          case Variable:
    515515                assert( false );
    516         }
     516        } // switch
    517517
    518518        return 0;
     
    541541                        q.isAttribute = true;
    542542                        break;
    543                 }
    544         }
     543                } // switch
     544        } // for
    545545        return q;
    546546}
     
    563563                                } else {
    564564                                        return new VoidType( buildQualifiers() );
    565                                 }
     565                                } // if
    566566                        } else {
    567567                                ret = kindMap[ *i ];
    568                         }
     568                        } // if
    569569                } else {
    570570                        switch ( *i ) {
     
    582582                                          default:
    583583                                                throw SemanticError( "invalid type specifier \"float\" in type: ", this );
    584                                         }
    585                                 }
     584                                        } // switch
     585                                } // if
    586586                                break;
    587587                          case DeclarationNode::Double:
     
    595595                                          default:
    596596                                                throw SemanticError( "invalid type specifier \"double\" in type: ", this );
    597                                         }
    598                                 }
     597                                        } // switch
     598                                } // if
    599599                                break;
    600600       
     
    609609                                  default:
    610610                                        throw SemanticError( "invalid type specifier \"_Complex\" in type: ", this );
    611                                 }
     611                                } // switch
    612612                                break;
    613613                          case DeclarationNode::Imaginary:
     
    621621                                  default:
    622622                                        throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", this );
    623                                 }
     623                                } // switch
    624624                                break;
    625625                          default:
    626626                                throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", this );
    627                         }
    628                 }
     627                        } // switch
     628                } // if
    629629                if ( *i == DeclarationNode::Double ) {
    630630                        sawDouble = true;
    631                 }
    632         }
     631                } // if
     632        } // for
    633633
    634634        for ( std::list< DeclarationNode::Modifier >::const_iterator i = basic->modifiers.begin(); i != basic->modifiers.end(); ++i ) {
     
    663663                                  default:
    664664                                        throw SemanticError( "invalid type modifier \"long\" in type: ", this );
    665                                 }
    666                         }
     665                                } // switch
     666                        } // if
    667667                        break;
    668668                  case DeclarationNode::Short:
     
    680680                                  default:
    681681                                        throw SemanticError( "invalid type modifier \"short\" in type: ", this );
    682                                 }
    683                         }
     682                                } // switch
     683                        } // if
    684684                        break;
    685685                  case DeclarationNode::Signed:
     
    705705                                  default:
    706706                                        throw SemanticError( "invalid type modifer \"signed\" in type: ", this );
    707                                 }
    708                         }
     707                                } // switch
     708                        } // if
    709709                        break;
    710710                  case DeclarationNode::Unsigned:
     
    733733                                  default:
    734734                                        throw SemanticError( "invalid type modifer \"unsigned\" in type: ", this );
    735                                 }
    736                         }
    737                         break;
    738                 }
     735                                } // switch
     736                        } // if
     737                        break;
     738                } // switch
    739739
    740740                if ( *i == DeclarationNode::Signed ) {
    741741                        sawSigned = true;
    742                 }
    743         }
     742                } // if
     743        } // for
    744744
    745745        BasicType *bt;
     
    748748        } else {
    749749                bt = new BasicType( buildQualifiers(), ret );
    750         }
     750        } // if
    751751        buildForall( forall, bt->get_forall() );
    752752        return bt;
     
    760760        } else {
    761761                pt = new PointerType( buildQualifiers(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
    762         }
     762        } // if
    763763        buildForall( forall, pt->get_forall() );
    764764        return pt;
     
    773773                at = new ArrayType( buildQualifiers(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ),
    774774                                                        maybeBuild< Expression >( array->dimension ), array->isVarLen, array->isStatic );
    775         }
     775        } // if
    776776        buildForall( forall, at->get_forall() );
    777777        return at;
     
    791791                        break;
    792792                  default:
    793                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", Declaration::NoStorageClass, 0, false, LinkageSpec::Cforall ) ) );
    794                 }
     793                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, LinkageSpec::Cforall ) ) );
     794                } // switch
    795795        } else {
    796                 ft->get_returnVals().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 ) );
    797         }
     796                ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 ) );
     797        } // if
    798798        return ft;
    799799}
     
    817817          default:
    818818                assert( false );
    819         }
     819        } // switch
    820820        buildList( aggregate->params, at->get_parameters() );
    821821        buildList( aggregate->members, at->get_members() );
     
    857857                  default:
    858858                        assert( false );
    859                 }
    860         }
     859                } // switch
     860        } // if
    861861        buildList( aggInst->params, ret->get_parameters() );
    862862        buildForall( forall, ret->get_forall() );
     
    864864}
    865865
    866 NamedTypeDecl *TypeData::buildSymbolic( const std::string &name, Declaration::StorageClass sc ) const {
     866NamedTypeDecl *TypeData::buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const {
    867867        assert( kind == Symbolic );
    868868        NamedTypeDecl *ret;
     
    871871        } else {
    872872                ret = new TypeDecl( name, sc, maybeBuild< Type >( base ), TypeDecl::Any );
    873         }
     873        } // if
    874874        buildList( symbolic->params, ret->get_parameters() );
    875875        buildList( symbolic->assertions, ret->get_assertions() );
     
    881881        static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    882882
    883         TypeDecl *ret = new TypeDecl( variable->name, Declaration::NoStorageClass, 0, kindMap[ variable->tyClass ] );
     883        TypeDecl *ret = new TypeDecl( variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ variable->tyClass ] );
    884884        buildList( variable->assertions, ret->get_assertions() );
    885885       
     
    931931                assert( attr->type );
    932932                ret = new AttrType( buildQualifiers(), attr->name, attr->type->buildType() );
    933         }
     933        } // if
    934934
    935935        return ret;
  • src/Parser/TypeData.h

    rea9b9d3 rb5b0907  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 15:20:00 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jun 13 07:26:16 2015
     13// Update Count     : 5
    1414//
    1515
     
    4444
    4545        struct Aggregate_t {
    46                 DeclarationNode::TyCon kind;
     46                DeclarationNode::Aggregate kind;
    4747                std::string name;
    4848                DeclarationNode *params;
     
    120120        TypeData *extractAggregate( bool toplevel = true ) const;
    121121        // helper function for DeclNodeImpl::build
    122         Declaration * buildDecl( std::string name, Declaration::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
     122        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
    123123        // helper functions for build()
    124124        Type::Qualifiers buildQualifiers() const;
     
    128128        AggregateDecl * buildAggregate() const;
    129129        ReferenceToType * buildAggInst() const;
    130         NamedTypeDecl * buildSymbolic( const std::string &name, Declaration::StorageClass sc ) const;
     130        NamedTypeDecl * buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const;
    131131        TypeDecl* buildVariable() const;
    132132        EnumDecl* buildEnum() const;
  • src/Parser/lex.cc

    rea9b9d3 rb5b0907  
    13901390 * Created On       : Sat Sep 22 08:58:10 2001
    13911391 * Last Modified By : Peter A. Buhr
    1392  * Last Modified On : Mon Jun  8 20:24:15 2015
    1393  * Update Count     : 381
     1392 * Last Modified On : Thu Jun 11 21:52:35 2015
     1393 * Update Count     : 382
    13941394 */
    13951395#line 20 "lex.ll"
  • src/Parser/lex.ll

    rea9b9d3 rb5b0907  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Mon Jun  8 20:24:15 2015
    13  * Update Count     : 381
     12 * Last Modified On : Thu Jun 11 21:52:35 2015
     13 * Update Count     : 382
    1414 */
    1515
  • src/Parser/parser.cc

    rea9b9d3 rb5b0907  
    330330        ExpressionNode *en;
    331331        DeclarationNode *decl;
    332         DeclarationNode::TyCon aggKey;
     332        DeclarationNode::Aggregate aggKey;
    333333        DeclarationNode::TypeClass tclass;
    334334        StatementNode *sn;
     
    568568
    569569/* YYFINAL -- State number of the termination state.  */
    570 #define YYFINAL  238
     570#define YYFINAL  240
    571571/* YYLAST -- Last index in YYTABLE.  */
    572 #define YYLAST   12086
     572#define YYLAST   12141
    573573
    574574/* YYNTOKENS -- Number of terminals.  */
     
    577577#define YYNNTS  235
    578578/* YYNRULES -- Number of rules.  */
    579 #define YYNRULES  733
     579#define YYNRULES  735
    580580/* YYNRULES -- Number of states.  */
    581 #define YYNSTATES  1550
     581#define YYNSTATES  1552
    582582
    583583/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    665665    1060,  1061,  1067,  1069,  1072,  1076,  1078,  1081,  1083,  1085,
    666666    1087,  1089,  1091,  1093,  1095,  1097,  1099,  1101,  1103,  1105,
    667     1107,  1109,  1111,  1113,  1115,  1117,  1119,  1121,  1124,  1127,
    668     1131,  1135,  1137,  1141,  1143,  1146,  1149,  1152,  1157,  1162,
    669     1167,  1172,  1174,  1177,  1180,  1184,  1186,  1189,  1192,  1194,
    670     1197,  1200,  1204,  1206,  1209,  1212,  1214,  1216,  1221,  1224,
    671     1230,  1240,  1248,  1259,  1272,  1280,  1294,  1297,  1300,  1302,
    672     1305,  1308,  1312,  1315,  1319,  1321,  1324,  1328,  1331,  1334,
    673     1339,  1340,  1342,  1345,  1348,  1350,  1351,  1353,  1356,  1359,
    674     1365,  1372,  1375,  1378,  1383,  1384,  1387,  1388,  1390,  1392,
    675     1394,  1400,  1406,  1412,  1414,  1420,  1426,  1436,  1438,  1444,
    676     1445,  1447,  1449,  1455,  1457,  1459,  1465,  1471,  1473,  1477,
    677     1481,  1486,  1488,  1490,  1492,  1494,  1497,  1499,  1503,  1507,
    678     1509,  1512,  1514,  1518,  1520,  1522,  1524,  1526,  1528,  1530,
    679     1532,  1534,  1536,  1538,  1540,  1543,  1545,  1547,  1549,  1552,
    680     1553,  1556,  1558,  1563,  1565,  1568,  1572,  1577,  1580,  1583,
    681     1585,  1588,  1591,  1597,  1603,  1611,  1618,  1620,  1623,  1626,
    682     1630,  1635,  1641,  1644,  1647,  1652,  1653,  1658,  1661,  1663,
    683     1665,  1667,  1668,  1671,  1677,  1683,  1697,  1699,  1701,  1705,
    684     1709,  1712,  1716,  1720,  1723,  1728,  1730,  1737,  1747,  1748,
    685     1760,  1762,  1766,  1770,  1774,  1776,  1778,  1784,  1787,  1793,
    686     1794,  1796,  1798,  1802,  1803,  1805,  1807,  1809,  1811,  1812,
    687     1819,  1822,  1824,  1827,  1832,  1835,  1839,  1843,  1847,  1852,
    688     1858,  1864,  1870,  1877,  1879,  1881,  1883,  1887,  1888,  1894,
    689     1895,  1897,  1899,  1902,  1909,  1911,  1915,  1916,  1918,  1923,
    690     1925,  1927,  1929,  1931,  1934,  1936,  1939,  1942,  1944,  1948,
    691     1951,  1955,  1959,  1962,  1967,  1972,  1976,  1985,  1989,  1992,
    692     1994,  1997,  2004,  2013,  2017,  2020,  2024,  2028,  2033,  2038,
    693     2042,  2044,  2046,  2048,  2053,  2060,  2064,  2067,  2071,  2075,
    694     2080,  2085,  2089,  2092,  2094,  2097,  2100,  2102,  2106,  2109,
    695     2113,  2117,  2120,  2125,  2130,  2134,  2141,  2150,  2154,  2157,
    696     2159,  2162,  2165,  2168,  2172,  2176,  2179,  2184,  2189,  2193,
    697     2200,  2209,  2213,  2216,  2218,  2221,  2224,  2226,  2229,  2233,
    698     2237,  2240,  2245,  2252,  2261,  2263,  2266,  2269,  2271,  2274,
    699     2277,  2281,  2285,  2287,  2292,  2297,  2301,  2307,  2316,  2320,
    700     2325,  2331,  2333,  2339,  2345,  2352,  2359,  2361,  2364,  2367,
    701     2369,  2372,  2375,  2379,  2383,  2385,  2390,  2395,  2399,  2405,
    702     2414,  2418,  2420,  2423,  2425,  2430,  2437,  2443,  2450,  2458,
    703     2466,  2468,  2471,  2474,  2476,  2479,  2482,  2486,  2490,  2492,
    704     2497,  2502,  2506,  2515,  2519,  2521,  2523,  2526,  2528,  2530,
    705     2533,  2537,  2540,  2544,  2547,  2551,  2557,  2560,  2567,  2571,
    706     2574,  2580,  2583,  2590,  2594,  2597,  2604,  2611,  2618,  2626,
    707     2628,  2631,  2633,  2635,  2637,  2640,  2644,  2647,  2651,  2654,
    708     2658,  2664,  2671,  2674,  2680,  2687,  2690,  2696,  2704,  2711,
    709     2718,  2719,  2721,  2722
     667    1107,  1109,  1111,  1113,  1115,  1117,  1119,  1121,  1123,  1125,
     668    1128,  1131,  1135,  1139,  1141,  1145,  1147,  1150,  1153,  1156,
     669    1161,  1166,  1171,  1176,  1178,  1181,  1184,  1188,  1190,  1193,
     670    1196,  1198,  1201,  1204,  1208,  1210,  1213,  1216,  1218,  1220,
     671    1225,  1228,  1234,  1244,  1252,  1263,  1276,  1284,  1298,  1301,
     672    1304,  1306,  1309,  1312,  1316,  1319,  1323,  1325,  1328,  1332,
     673    1335,  1338,  1343,  1344,  1346,  1349,  1352,  1354,  1355,  1357,
     674    1360,  1363,  1369,  1376,  1379,  1382,  1387,  1388,  1391,  1392,
     675    1394,  1396,  1398,  1404,  1410,  1416,  1418,  1424,  1430,  1440,
     676    1442,  1448,  1449,  1451,  1453,  1459,  1461,  1463,  1469,  1475,
     677    1477,  1481,  1485,  1490,  1492,  1494,  1496,  1498,  1501,  1503,
     678    1507,  1511,  1513,  1516,  1518,  1522,  1524,  1526,  1528,  1530,
     679    1532,  1534,  1536,  1538,  1540,  1542,  1544,  1547,  1549,  1551,
     680    1553,  1556,  1557,  1560,  1562,  1567,  1569,  1572,  1576,  1581,
     681    1584,  1587,  1589,  1592,  1595,  1601,  1607,  1615,  1622,  1624,
     682    1627,  1630,  1634,  1639,  1645,  1648,  1651,  1656,  1657,  1662,
     683    1665,  1667,  1669,  1671,  1672,  1675,  1681,  1687,  1701,  1703,
     684    1705,  1709,  1713,  1716,  1720,  1724,  1727,  1732,  1734,  1741,
     685    1751,  1752,  1764,  1766,  1770,  1774,  1778,  1780,  1782,  1788,
     686    1791,  1797,  1798,  1800,  1802,  1806,  1807,  1809,  1811,  1813,
     687    1815,  1816,  1823,  1826,  1828,  1831,  1836,  1839,  1843,  1847,
     688    1851,  1856,  1862,  1868,  1874,  1881,  1883,  1885,  1887,  1891,
     689    1892,  1898,  1899,  1901,  1903,  1906,  1913,  1915,  1919,  1920,
     690    1922,  1927,  1929,  1931,  1933,  1935,  1938,  1940,  1943,  1946,
     691    1948,  1952,  1955,  1959,  1963,  1966,  1971,  1976,  1980,  1989,
     692    1993,  1996,  1998,  2001,  2008,  2017,  2021,  2024,  2028,  2032,
     693    2037,  2042,  2046,  2048,  2050,  2052,  2057,  2064,  2068,  2071,
     694    2075,  2079,  2084,  2089,  2093,  2096,  2098,  2101,  2104,  2106,
     695    2110,  2113,  2117,  2121,  2124,  2129,  2134,  2138,  2145,  2154,
     696    2158,  2161,  2163,  2166,  2169,  2172,  2176,  2180,  2183,  2188,
     697    2193,  2197,  2204,  2213,  2217,  2220,  2222,  2225,  2228,  2230,
     698    2233,  2237,  2241,  2244,  2249,  2256,  2265,  2267,  2270,  2273,
     699    2275,  2278,  2281,  2285,  2289,  2291,  2296,  2301,  2305,  2311,
     700    2320,  2324,  2329,  2335,  2337,  2343,  2349,  2356,  2363,  2365,
     701    2368,  2371,  2373,  2376,  2379,  2383,  2387,  2389,  2394,  2399,
     702    2403,  2409,  2418,  2422,  2424,  2427,  2429,  2434,  2441,  2447,
     703    2454,  2462,  2470,  2472,  2475,  2478,  2480,  2483,  2486,  2490,
     704    2494,  2496,  2501,  2506,  2510,  2519,  2523,  2525,  2527,  2530,
     705    2532,  2534,  2537,  2541,  2544,  2548,  2551,  2555,  2561,  2564,
     706    2571,  2575,  2578,  2584,  2587,  2594,  2598,  2601,  2608,  2615,
     707    2622,  2630,  2632,  2635,  2637,  2639,  2641,  2644,  2648,  2651,
     708    2655,  2658,  2662,  2668,  2675,  2678,  2684,  2691,  2694,  2700,
     709    2708,  2715,  2722,  2723,  2725,  2726
    710710};
    711711
     
    822822     221,    -1,   220,   216,   221,    -1,   222,    -1,   221,   222,
    823823      -1,   223,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
    824       -1,     8,    -1,     9,    -1,    16,    -1,    21,    -1,    20,
    825       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    826       -1,    15,    -1,    24,    -1,    25,    -1,    26,    -1,   226,
    827       -1,   220,   226,    -1,   225,   222,    -1,   225,   222,   216,
    828       -1,   225,   222,   226,    -1,   227,    -1,   215,   228,   215,
    829       -1,   224,    -1,   216,   224,    -1,   227,   217,    -1,   227,
    830      224,    -1,    27,   101,   263,   102,    -1,    27,   101,   160,
    831      102,    -1,    71,   101,   263,   102,    -1,    71,   101,   160,
    832      102,    -1,   230,    -1,   220,   230,    -1,   229,   222,    -1,
    833      229,   222,   216,    -1,   233,    -1,   216,   233,    -1,   230,
    834      217,    -1,   232,    -1,   220,   232,    -1,   231,   222,    -1,
    835      231,   222,   216,    -1,    67,    -1,   216,    67,    -1,   232,
    836      217,    -1,   234,    -1,   244,    -1,   235,   106,   236,   107,
    837       -1,   235,   261,    -1,   235,   261,   106,   236,   107,    -1,
    838      235,   101,   126,   272,   127,   102,   106,   236,   107,    -1,
    839      235,   101,   126,   272,   127,   102,   261,    -1,   235,   101,
    840      126,   272,   127,   102,   261,   106,   236,   107,    -1,   235,
    841      101,   126,   272,   127,   102,   101,   278,   102,   106,   236,
    842      107,    -1,   235,   101,   126,   278,   127,   102,   261,    -1,
    843      235,   101,   126,   272,   127,   102,   101,   278,   102,   261,
    844      106,   236,   107,    -1,    30,   298,    -1,    31,   298,    -1,
    845      237,    -1,   236,   237,    -1,   238,   124,    -1,    38,   238,
    846      124,    -1,   239,   124,    -1,    38,   239,   124,    -1,   352,
    847       -1,   352,   261,    -1,   238,   108,   261,    -1,   238,   108,
    848       -1,   214,   240,    -1,   239,   108,   298,   240,    -1,    -1,
    849      242,    -1,   304,   241,    -1,   317,   241,    -1,   343,    -1,
    850       -1,   242,    -1,   109,   154,    -1,    29,   298,    -1,   243,
    851      106,   245,   358,   107,    -1,   243,   261,   106,   245,   358,
    852      107,    -1,   243,   261,    -1,   261,   246,    -1,   245,   108,
    853      261,   246,    -1,    -1,   123,   154,    -1,    -1,   248,    -1,
    854      250,    -1,   249,    -1,   249,   127,   108,   126,   250,    -1,
    855      250,   127,   108,   126,    89,    -1,   249,   127,   108,   126,
    856       89,    -1,   254,    -1,   250,   127,   108,   126,   254,    -1,
    857      249,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
    858      250,   127,   108,   126,   254,    -1,   255,    -1,   250,   127,
    859      108,   126,   255,    -1,    -1,   252,    -1,   253,    -1,   253,
    860      127,   108,   126,    89,    -1,   257,    -1,   256,    -1,   253,
    861      127,   108,   126,   257,    -1,   253,   127,   108,   126,   256,
    862       -1,   256,    -1,   348,   259,   359,    -1,   356,   259,   359,
    863       -1,   216,   356,   259,   359,    -1,   206,    -1,   257,    -1,
    864      348,    -1,   356,    -1,   216,   356,    -1,   357,    -1,   213,
    865      322,   359,    -1,   213,   326,   359,    -1,   213,    -1,   213,
    866      337,    -1,   131,    -1,   258,   108,   131,    -1,   129,    -1,
    867       67,    -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,
    868      131,    -1,    67,    -1,    68,    -1,   352,    -1,   214,    -1,
    869      214,   343,    -1,   352,    -1,   357,    -1,   214,    -1,   214,
    870      331,    -1,    -1,   123,   265,    -1,   155,    -1,   106,   266,
    871      358,   107,    -1,   265,    -1,   267,   265,    -1,   266,   108,
    872      265,    -1,   266,   108,   267,   265,    -1,   268,   109,    -1,
    873      261,   109,    -1,   269,    -1,   268,   269,    -1,   105,   261,
    874       -1,   103,   126,   155,   127,   104,    -1,   103,   126,   296,
    875      127,   104,    -1,   103,   126,   154,    89,   154,   127,   104,
    876       -1,   105,   103,   126,   138,   127,   104,    -1,   271,    -1,
    877      220,   271,    -1,   270,   222,    -1,   270,   222,   216,    -1,
    878       68,   101,   278,   102,    -1,   216,    68,   101,   278,   102,
    879       -1,   271,   217,    -1,   273,   359,    -1,   272,   108,   273,
    880      359,    -1,    -1,   275,   261,   274,   276,    -1,   214,   322,
    881       -1,    32,    -1,    34,    -1,    33,    -1,    -1,   276,   277,
    882       -1,   121,   261,   101,   278,   102,    -1,   121,   106,   126,
    883      284,   107,    -1,   121,   101,   126,   272,   127,   102,   106,
    884      126,   284,   107,   101,   278,   102,    -1,   263,    -1,   155,
    885       -1,   278,   108,   263,    -1,   278,   108,   155,    -1,    32,
    886      280,    -1,   221,    32,   280,    -1,   279,   108,   280,    -1,
    887      281,   276,    -1,   281,   276,   123,   263,    -1,   261,    -1,
    888      260,   101,   126,   272,   127,   102,    -1,    35,   261,   101,
    889      126,   272,   127,   102,   106,   107,    -1,    -1,    35,   261,
    890      101,   126,   272,   127,   102,   106,   283,   284,   107,    -1,
    891      285,    -1,   284,   126,   285,    -1,   286,   127,   124,    -1,
    892      287,   127,   124,    -1,   204,    -1,   206,    -1,   286,   127,
    893      108,   126,   259,    -1,   214,   295,    -1,   287,   127,   108,
    894      126,   295,    -1,    -1,   289,    -1,   291,    -1,   289,   126,
    895      291,    -1,    -1,   289,    -1,   201,    -1,   293,    -1,   189,
    896       -1,    -1,     5,    75,   292,   106,   290,   107,    -1,    38,
    897      291,    -1,   294,    -1,   309,   164,    -1,   313,   126,   196,
    898      164,    -1,   205,   164,    -1,   213,   309,   164,    -1,   216,
    899      309,   164,    -1,   220,   309,   164,    -1,   220,   216,   309,
    900      164,    -1,   213,   313,   126,   196,   164,    -1,   216,   313,
    901      126,   196,   164,    -1,   220,   313,   126,   196,   164,    -1,
    902      220,   216,   313,   126,   196,   164,    -1,   304,    -1,   309,
    903       -1,   317,    -1,   154,   115,   154,    -1,    -1,    57,   101,
    904      133,   102,   298,    -1,    -1,   299,    -1,   300,    -1,   299,
    905      300,    -1,    37,   101,   101,   301,   102,   102,    -1,   302,
    906       -1,   301,   108,   302,    -1,    -1,   303,    -1,   303,   101,
    907      161,   102,    -1,   259,    -1,   223,    -1,   224,    -1,   217,
    908       -1,   305,   298,    -1,   306,    -1,   307,   298,    -1,   308,
    909      298,    -1,   129,    -1,   101,   305,   102,    -1,   111,   304,
    910       -1,   111,   216,   304,    -1,   101,   306,   102,    -1,   305,
    911      335,    -1,   101,   306,   102,   335,    -1,   101,   307,   102,
    912      336,    -1,   101,   307,   102,    -1,   101,   306,   102,   101,
    913      126,   251,   127,   102,    -1,   101,   308,   102,    -1,   310,
    914      298,    -1,   311,    -1,   312,   298,    -1,   305,   101,   126,
    915      251,   127,   102,    -1,   101,   311,   102,   101,   126,   251,
    916      127,   102,    -1,   101,   310,   102,    -1,   111,   309,    -1,
    917      111,   216,   309,    -1,   101,   311,   102,    -1,   101,   311,
    918      102,   335,    -1,   101,   312,   102,   336,    -1,   101,   312,
    919      102,    -1,   314,    -1,   315,    -1,   316,    -1,   305,   101,
    920      258,   102,    -1,   101,   315,   102,   101,   258,   102,    -1,
    921      101,   314,   102,    -1,   111,   313,    -1,   111,   216,   313,
    922       -1,   101,   315,   102,    -1,   101,   315,   102,   335,    -1,
    923      101,   316,   102,   336,    -1,   101,   316,   102,    -1,   318,
    924      298,    -1,   319,    -1,   320,   298,    -1,   321,   298,    -1,
    925       67,    -1,   101,   318,   102,    -1,   111,   317,    -1,   111,
    926      216,   317,    -1,   101,   319,   102,    -1,   318,   335,    -1,
    927      101,   319,   102,   335,    -1,   101,   320,   102,   336,    -1,
    928      101,   320,   102,    -1,   318,   101,   126,   251,   127,   102,
    929       -1,   101,   319,   102,   101,   126,   251,   127,   102,    -1,
    930      101,   321,   102,    -1,   305,   298,    -1,   323,    -1,   324,
    931      298,    -1,   325,   298,    -1,   111,   322,    -1,   111,   216,
    932      322,    -1,   101,   323,   102,    -1,   305,   341,    -1,   101,
    933      323,   102,   335,    -1,   101,   324,   102,   336,    -1,   101,
    934      324,   102,    -1,   305,   101,   126,   251,   127,   102,    -1,
    935      101,   323,   102,   101,   126,   251,   127,   102,    -1,   101,
    936      325,   102,    -1,   327,   298,    -1,   328,    -1,   329,   298,
    937       -1,   330,   298,    -1,    67,    -1,   111,   326,    -1,   111,
    938      216,   326,    -1,   101,   328,   102,    -1,   327,   341,    -1,
    939      101,   328,   102,   341,    -1,   327,   101,   126,   251,   127,
    940      102,    -1,   101,   328,   102,   101,   126,   251,   127,   102,
    941       -1,   332,    -1,   333,   298,    -1,   334,   298,    -1,   111,
    942       -1,   111,   216,    -1,   111,   331,    -1,   111,   216,   331,
    943       -1,   101,   332,   102,    -1,   335,    -1,   101,   332,   102,
    944      335,    -1,   101,   333,   102,   336,    -1,   101,   333,   102,
    945       -1,   101,   126,   251,   127,   102,    -1,   101,   332,   102,
    946      101,   126,   251,   127,   102,    -1,   101,   334,   102,    -1,
    947      103,   126,   127,   104,    -1,   103,   126,   127,   104,   336,
    948       -1,   336,    -1,   103,   126,   155,   127,   104,    -1,   103,
    949      126,   111,   127,   104,    -1,   336,   103,   126,   155,   127,
    950      104,    -1,   336,   103,   126,   111,   127,   104,    -1,   338,
    951       -1,   339,   298,    -1,   340,   298,    -1,   111,    -1,   111,
    952      216,    -1,   111,   337,    -1,   111,   216,   337,    -1,   101,
    953      338,   102,    -1,   341,    -1,   101,   338,   102,   341,    -1,
    954      101,   339,   102,   336,    -1,   101,   339,   102,    -1,   101,
    955      126,   251,   127,   102,    -1,   101,   338,   102,   101,   126,
    956      251,   127,   102,    -1,   101,   340,   102,    -1,   342,    -1,
    957      342,   336,    -1,   336,    -1,   103,   126,   127,   104,    -1,
    958      103,   126,   216,   111,   127,   104,    -1,   103,   126,   216,
    959      127,   104,    -1,   103,   126,   216,   155,   127,   104,    -1,
    960      103,   126,     7,   215,   155,   127,   104,    -1,   103,   126,
    961      216,     7,   155,   127,   104,    -1,   344,    -1,   345,   298,
    962       -1,   346,   298,    -1,   111,    -1,   111,   216,    -1,   111,
    963      343,    -1,   111,   216,   343,    -1,   101,   344,   102,    -1,
    964      335,    -1,   101,   344,   102,   335,    -1,   101,   345,   102,
    965      336,    -1,   101,   345,   102,    -1,   101,   344,   102,   101,
    966      126,   251,   127,   102,    -1,   101,   346,   102,    -1,   348,
    967       -1,   356,    -1,   216,   356,    -1,   349,    -1,   350,    -1,
    968      111,   214,    -1,   216,   111,   214,    -1,   111,   357,    -1,
    969      216,   111,   357,    -1,   111,   347,    -1,   216,   111,   347,
    970       -1,   103,   126,   127,   104,   214,    -1,   351,   214,    -1,
    971      103,   126,   127,   104,   336,   214,    -1,   351,   336,   214,
    972       -1,   336,   214,    -1,   103,   126,   127,   104,   349,    -1,
    973      351,   349,    -1,   103,   126,   127,   104,   336,   349,    -1,
    974      351,   336,   349,    -1,   336,   349,    -1,   103,   126,   216,
    975      111,   127,   104,    -1,   103,   126,   216,   155,   127,   104,
    976       -1,   103,   126,   220,   155,   127,   104,    -1,   103,   126,
    977      220,   216,   155,   127,   104,    -1,   356,    -1,   216,   356,
    978       -1,   353,    -1,   354,    -1,   355,    -1,   111,   214,    -1,
    979      216,   111,   214,    -1,   111,   357,    -1,   216,   111,   357,
    980       -1,   111,   352,    -1,   216,   111,   352,    -1,   103,   126,
    981      127,   104,   214,    -1,   103,   126,   127,   104,   336,   214,
    982       -1,   336,   214,    -1,   103,   126,   127,   104,   354,    -1,
    983      103,   126,   127,   104,   336,   354,    -1,   336,   354,    -1,
    984      103,   126,   250,   127,   104,    -1,   103,   126,   127,   104,
    985      101,   247,   102,    -1,   356,   101,   126,   247,   127,   102,
    986       -1,   207,   101,   126,   247,   127,   102,    -1,    -1,   108,
    987       -1,    -1,   123,   155,    -1
     824      -1,     8,    -1,     9,    -1,    62,    -1,    64,    -1,    16,
     825      -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
     826      -1,    22,    -1,    23,    -1,    15,    -1,    24,    -1,    25,
     827      -1,    26,    -1,   226,    -1,   220,   226,    -1,   225,   222,
     828      -1,   225,   222,   216,    -1,   225,   222,   226,    -1,   227,
     829      -1,   215,   228,   215,    -1,   224,    -1,   216,   224,    -1,
     830     227,   217,    -1,   227,   224,    -1,    27,   101,   263,   102,
     831      -1,    27,   101,   160,   102,    -1,    71,   101,   263,   102,
     832      -1,    71,   101,   160,   102,    -1,   230,    -1,   220,   230,
     833      -1,   229,   222,    -1,   229,   222,   216,    -1,   233,    -1,
     834     216,   233,    -1,   230,   217,    -1,   232,    -1,   220,   232,
     835      -1,   231,   222,    -1,   231,   222,   216,    -1,    67,    -1,
     836     216,    67,    -1,   232,   217,    -1,   234,    -1,   244,    -1,
     837     235,   106,   236,   107,    -1,   235,   261,    -1,   235,   261,
     838     106,   236,   107,    -1,   235,   101,   126,   272,   127,   102,
     839     106,   236,   107,    -1,   235,   101,   126,   272,   127,   102,
     840     261,    -1,   235,   101,   126,   272,   127,   102,   261,   106,
     841     236,   107,    -1,   235,   101,   126,   272,   127,   102,   101,
     842     278,   102,   106,   236,   107,    -1,   235,   101,   126,   278,
     843     127,   102,   261,    -1,   235,   101,   126,   272,   127,   102,
     844     101,   278,   102,   261,   106,   236,   107,    -1,    30,   298,
     845      -1,    31,   298,    -1,   237,    -1,   236,   237,    -1,   238,
     846     124,    -1,    38,   238,   124,    -1,   239,   124,    -1,    38,
     847     239,   124,    -1,   352,    -1,   352,   261,    -1,   238,   108,
     848     261,    -1,   238,   108,    -1,   214,   240,    -1,   239,   108,
     849     298,   240,    -1,    -1,   242,    -1,   304,   241,    -1,   317,
     850     241,    -1,   343,    -1,    -1,   242,    -1,   109,   154,    -1,
     851      29,   298,    -1,   243,   106,   245,   358,   107,    -1,   243,
     852     261,   106,   245,   358,   107,    -1,   243,   261,    -1,   261,
     853     246,    -1,   245,   108,   261,   246,    -1,    -1,   123,   154,
     854      -1,    -1,   248,    -1,   250,    -1,   249,    -1,   249,   127,
     855     108,   126,   250,    -1,   250,   127,   108,   126,    89,    -1,
     856     249,   127,   108,   126,    89,    -1,   254,    -1,   250,   127,
     857     108,   126,   254,    -1,   249,   127,   108,   126,   254,    -1,
     858     249,   127,   108,   126,   250,   127,   108,   126,   254,    -1,
     859     255,    -1,   250,   127,   108,   126,   255,    -1,    -1,   252,
     860      -1,   253,    -1,   253,   127,   108,   126,    89,    -1,   257,
     861      -1,   256,    -1,   253,   127,   108,   126,   257,    -1,   253,
     862     127,   108,   126,   256,    -1,   256,    -1,   348,   259,   359,
     863      -1,   356,   259,   359,    -1,   216,   356,   259,   359,    -1,
     864     206,    -1,   257,    -1,   348,    -1,   356,    -1,   216,   356,
     865      -1,   357,    -1,   213,   322,   359,    -1,   213,   326,   359,
     866      -1,   213,    -1,   213,   337,    -1,   131,    -1,   258,   108,
     867     131,    -1,   129,    -1,    67,    -1,    68,    -1,   130,    -1,
     868      67,    -1,    68,    -1,   131,    -1,    67,    -1,    68,    -1,
     869     352,    -1,   214,    -1,   214,   343,    -1,   352,    -1,   357,
     870      -1,   214,    -1,   214,   331,    -1,    -1,   123,   265,    -1,
     871     155,    -1,   106,   266,   358,   107,    -1,   265,    -1,   267,
     872     265,    -1,   266,   108,   265,    -1,   266,   108,   267,   265,
     873      -1,   268,   109,    -1,   261,   109,    -1,   269,    -1,   268,
     874     269,    -1,   105,   261,    -1,   103,   126,   155,   127,   104,
     875      -1,   103,   126,   296,   127,   104,    -1,   103,   126,   154,
     876      89,   154,   127,   104,    -1,   105,   103,   126,   138,   127,
     877     104,    -1,   271,    -1,   220,   271,    -1,   270,   222,    -1,
     878     270,   222,   216,    -1,    68,   101,   278,   102,    -1,   216,
     879      68,   101,   278,   102,    -1,   271,   217,    -1,   273,   359,
     880      -1,   272,   108,   273,   359,    -1,    -1,   275,   261,   274,
     881     276,    -1,   214,   322,    -1,    32,    -1,    34,    -1,    33,
     882      -1,    -1,   276,   277,    -1,   121,   261,   101,   278,   102,
     883      -1,   121,   106,   126,   284,   107,    -1,   121,   101,   126,
     884     272,   127,   102,   106,   126,   284,   107,   101,   278,   102,
     885      -1,   263,    -1,   155,    -1,   278,   108,   263,    -1,   278,
     886     108,   155,    -1,    32,   280,    -1,   221,    32,   280,    -1,
     887     279,   108,   280,    -1,   281,   276,    -1,   281,   276,   123,
     888     263,    -1,   261,    -1,   260,   101,   126,   272,   127,   102,
     889      -1,    35,   261,   101,   126,   272,   127,   102,   106,   107,
     890      -1,    -1,    35,   261,   101,   126,   272,   127,   102,   106,
     891     283,   284,   107,    -1,   285,    -1,   284,   126,   285,    -1,
     892     286,   127,   124,    -1,   287,   127,   124,    -1,   204,    -1,
     893     206,    -1,   286,   127,   108,   126,   259,    -1,   214,   295,
     894      -1,   287,   127,   108,   126,   295,    -1,    -1,   289,    -1,
     895     291,    -1,   289,   126,   291,    -1,    -1,   289,    -1,   201,
     896      -1,   293,    -1,   189,    -1,    -1,     5,    75,   292,   106,
     897     290,   107,    -1,    38,   291,    -1,   294,    -1,   309,   164,
     898      -1,   313,   126,   196,   164,    -1,   205,   164,    -1,   213,
     899     309,   164,    -1,   216,   309,   164,    -1,   220,   309,   164,
     900      -1,   220,   216,   309,   164,    -1,   213,   313,   126,   196,
     901     164,    -1,   216,   313,   126,   196,   164,    -1,   220,   313,
     902     126,   196,   164,    -1,   220,   216,   313,   126,   196,   164,
     903      -1,   304,    -1,   309,    -1,   317,    -1,   154,   115,   154,
     904      -1,    -1,    57,   101,   133,   102,   298,    -1,    -1,   299,
     905      -1,   300,    -1,   299,   300,    -1,    37,   101,   101,   301,
     906     102,   102,    -1,   302,    -1,   301,   108,   302,    -1,    -1,
     907     303,    -1,   303,   101,   161,   102,    -1,   259,    -1,   223,
     908      -1,   224,    -1,   217,    -1,   305,   298,    -1,   306,    -1,
     909     307,   298,    -1,   308,   298,    -1,   129,    -1,   101,   305,
     910     102,    -1,   111,   304,    -1,   111,   216,   304,    -1,   101,
     911     306,   102,    -1,   305,   335,    -1,   101,   306,   102,   335,
     912      -1,   101,   307,   102,   336,    -1,   101,   307,   102,    -1,
     913     101,   306,   102,   101,   126,   251,   127,   102,    -1,   101,
     914     308,   102,    -1,   310,   298,    -1,   311,    -1,   312,   298,
     915      -1,   305,   101,   126,   251,   127,   102,    -1,   101,   311,
     916     102,   101,   126,   251,   127,   102,    -1,   101,   310,   102,
     917      -1,   111,   309,    -1,   111,   216,   309,    -1,   101,   311,
     918     102,    -1,   101,   311,   102,   335,    -1,   101,   312,   102,
     919     336,    -1,   101,   312,   102,    -1,   314,    -1,   315,    -1,
     920     316,    -1,   305,   101,   258,   102,    -1,   101,   315,   102,
     921     101,   258,   102,    -1,   101,   314,   102,    -1,   111,   313,
     922      -1,   111,   216,   313,    -1,   101,   315,   102,    -1,   101,
     923     315,   102,   335,    -1,   101,   316,   102,   336,    -1,   101,
     924     316,   102,    -1,   318,   298,    -1,   319,    -1,   320,   298,
     925      -1,   321,   298,    -1,    67,    -1,   101,   318,   102,    -1,
     926     111,   317,    -1,   111,   216,   317,    -1,   101,   319,   102,
     927      -1,   318,   335,    -1,   101,   319,   102,   335,    -1,   101,
     928     320,   102,   336,    -1,   101,   320,   102,    -1,   318,   101,
     929     126,   251,   127,   102,    -1,   101,   319,   102,   101,   126,
     930     251,   127,   102,    -1,   101,   321,   102,    -1,   305,   298,
     931      -1,   323,    -1,   324,   298,    -1,   325,   298,    -1,   111,
     932     322,    -1,   111,   216,   322,    -1,   101,   323,   102,    -1,
     933     305,   341,    -1,   101,   323,   102,   335,    -1,   101,   324,
     934     102,   336,    -1,   101,   324,   102,    -1,   305,   101,   126,
     935     251,   127,   102,    -1,   101,   323,   102,   101,   126,   251,
     936     127,   102,    -1,   101,   325,   102,    -1,   327,   298,    -1,
     937     328,    -1,   329,   298,    -1,   330,   298,    -1,    67,    -1,
     938     111,   326,    -1,   111,   216,   326,    -1,   101,   328,   102,
     939      -1,   327,   341,    -1,   101,   328,   102,   341,    -1,   327,
     940     101,   126,   251,   127,   102,    -1,   101,   328,   102,   101,
     941     126,   251,   127,   102,    -1,   332,    -1,   333,   298,    -1,
     942     334,   298,    -1,   111,    -1,   111,   216,    -1,   111,   331,
     943      -1,   111,   216,   331,    -1,   101,   332,   102,    -1,   335,
     944      -1,   101,   332,   102,   335,    -1,   101,   333,   102,   336,
     945      -1,   101,   333,   102,    -1,   101,   126,   251,   127,   102,
     946      -1,   101,   332,   102,   101,   126,   251,   127,   102,    -1,
     947     101,   334,   102,    -1,   103,   126,   127,   104,    -1,   103,
     948     126,   127,   104,   336,    -1,   336,    -1,   103,   126,   155,
     949     127,   104,    -1,   103,   126,   111,   127,   104,    -1,   336,
     950     103,   126,   155,   127,   104,    -1,   336,   103,   126,   111,
     951     127,   104,    -1,   338,    -1,   339,   298,    -1,   340,   298,
     952      -1,   111,    -1,   111,   216,    -1,   111,   337,    -1,   111,
     953     216,   337,    -1,   101,   338,   102,    -1,   341,    -1,   101,
     954     338,   102,   341,    -1,   101,   339,   102,   336,    -1,   101,
     955     339,   102,    -1,   101,   126,   251,   127,   102,    -1,   101,
     956     338,   102,   101,   126,   251,   127,   102,    -1,   101,   340,
     957     102,    -1,   342,    -1,   342,   336,    -1,   336,    -1,   103,
     958     126,   127,   104,    -1,   103,   126,   216,   111,   127,   104,
     959      -1,   103,   126,   216,   127,   104,    -1,   103,   126,   216,
     960     155,   127,   104,    -1,   103,   126,     7,   215,   155,   127,
     961     104,    -1,   103,   126,   216,     7,   155,   127,   104,    -1,
     962     344,    -1,   345,   298,    -1,   346,   298,    -1,   111,    -1,
     963     111,   216,    -1,   111,   343,    -1,   111,   216,   343,    -1,
     964     101,   344,   102,    -1,   335,    -1,   101,   344,   102,   335,
     965      -1,   101,   345,   102,   336,    -1,   101,   345,   102,    -1,
     966     101,   344,   102,   101,   126,   251,   127,   102,    -1,   101,
     967     346,   102,    -1,   348,    -1,   356,    -1,   216,   356,    -1,
     968     349,    -1,   350,    -1,   111,   214,    -1,   216,   111,   214,
     969      -1,   111,   357,    -1,   216,   111,   357,    -1,   111,   347,
     970      -1,   216,   111,   347,    -1,   103,   126,   127,   104,   214,
     971      -1,   351,   214,    -1,   103,   126,   127,   104,   336,   214,
     972      -1,   351,   336,   214,    -1,   336,   214,    -1,   103,   126,
     973     127,   104,   349,    -1,   351,   349,    -1,   103,   126,   127,
     974     104,   336,   349,    -1,   351,   336,   349,    -1,   336,   349,
     975      -1,   103,   126,   216,   111,   127,   104,    -1,   103,   126,
     976     216,   155,   127,   104,    -1,   103,   126,   220,   155,   127,
     977     104,    -1,   103,   126,   220,   216,   155,   127,   104,    -1,
     978     356,    -1,   216,   356,    -1,   353,    -1,   354,    -1,   355,
     979      -1,   111,   214,    -1,   216,   111,   214,    -1,   111,   357,
     980      -1,   216,   111,   357,    -1,   111,   352,    -1,   216,   111,
     981     352,    -1,   103,   126,   127,   104,   214,    -1,   103,   126,
     982     127,   104,   336,   214,    -1,   336,   214,    -1,   103,   126,
     983     127,   104,   354,    -1,   103,   126,   127,   104,   336,   354,
     984      -1,   336,   354,    -1,   103,   126,   250,   127,   104,    -1,
     985     103,   126,   127,   104,   101,   247,   102,    -1,   356,   101,
     986     126,   247,   127,   102,    -1,   207,   101,   126,   247,   127,
     987     102,    -1,    -1,   108,    -1,    -1,   123,   155,    -1
    988988};
    989989
     
    10211021    1173,  1183,  1184,  1189,  1190,  1195,  1197,  1199,  1201,  1203,
    10221022    1206,  1205,  1217,  1218,  1220,  1230,  1231,  1236,  1240,  1242,
    1023     1244,  1246,  1248,  1251,  1256,  1258,  1260,  1262,  1264,  1266,
    1024     1268,  1270,  1272,  1274,  1276,  1278,  1284,  1285,  1287,  1289,
    1025     1291,  1296,  1297,  1303,  1304,  1306,  1308,  1313,  1315,  1317,
    1026     1319,  1324,  1325,  1327,  1329,  1334,  1335,  1337,  1342,  1343,
    1027     1345,  1347,  1352,  1354,  1356,  1361,  1362,  1366,  1368,  1370,
    1028     1372,  1374,  1376,  1378,  1380,  1383,  1388,  1390,  1395,  1397,
    1029     1402,  1403,  1405,  1406,  1411,  1412,  1414,  1416,  1421,  1423,
    1030     1429,  1430,  1432,  1435,  1438,  1443,  1444,  1449,  1454,  1458,
    1031     1460,  1462,  1467,  1469,  1475,  1476,  1484,  1485,  1489,  1490,
    1032     1491,  1493,  1495,  1503,  1504,  1506,  1508,  1513,  1514,  1520,
    1033     1521,  1525,  1526,  1531,  1532,  1533,  1535,  1544,  1545,  1547,
    1034     1550,  1552,  1556,  1557,  1558,  1560,  1562,  1566,  1571,  1579,
    1035     1580,  1589,  1591,  1596,  1597,  1598,  1602,  1603,  1604,  1608,
    1036     1609,  1610,  1614,  1615,  1616,  1621,  1622,  1623,  1624,  1630,
    1037     1631,  1635,  1636,  1640,  1641,  1642,  1643,  1658,  1659,  1664,
    1038     1665,  1669,  1671,  1675,  1677,  1679,  1703,  1704,  1706,  1708,
    1039     1713,  1715,  1717,  1722,  1723,  1729,  1728,  1732,  1736,  1738,
    1040     1740,  1746,  1747,  1752,  1757,  1759,  1764,  1766,  1767,  1769,
    1041     1774,  1776,  1778,  1783,  1785,  1790,  1795,  1803,  1809,  1808,
    1042     1822,  1823,  1828,  1829,  1833,  1838,  1843,  1851,  1856,  1867,
    1043     1868,  1879,  1880,  1886,  1887,  1891,  1892,  1893,  1896,  1895,
    1044     1906,  1911,  1918,  1924,  1933,  1939,  1945,  1951,  1957,  1965,
    1045     1971,  1979,  1985,  1994,  1995,  1996,  2000,  2004,  2006,  2009,
    1046     2011,  2015,  2016,  2020,  2024,  2025,  2028,  2030,  2031,  2035,
    1047     2036,  2037,  2038,  2073,  2074,  2075,  2076,  2080,  2085,  2090,
    1048     2092,  2094,  2099,  2101,  2103,  2105,  2110,  2112,  2122,  2123,
    1049     2124,  2128,  2130,  2132,  2137,  2139,  2141,  2146,  2148,  2150,
    1050     2159,  2160,  2161,  2165,  2167,  2169,  2174,  2176,  2178,  2183,
    1051     2185,  2187,  2202,  2203,  2204,  2205,  2209,  2214,  2219,  2221,
    1052     2223,  2228,  2230,  2232,  2234,  2239,  2241,  2243,  2253,  2254,
    1053     2255,  2256,  2260,  2262,  2264,  2269,  2271,  2273,  2275,  2280,
    1054     2282,  2284,  2315,  2316,  2317,  2318,  2322,  2330,  2332,  2334,
    1055     2339,  2341,  2346,  2348,  2362,  2363,  2364,  2368,  2370,  2372,
    1056     2374,  2376,  2381,  2382,  2384,  2386,  2391,  2393,  2395,  2401,
    1057     2403,  2405,  2409,  2411,  2413,  2415,  2429,  2430,  2431,  2435,
    1058     2437,  2439,  2441,  2443,  2448,  2449,  2451,  2453,  2458,  2460,
    1059     2462,  2468,  2469,  2471,  2481,  2484,  2486,  2489,  2491,  2493,
    1060     2506,  2507,  2508,  2512,  2514,  2516,  2518,  2520,  2525,  2526,
    1061     2528,  2530,  2535,  2537,  2545,  2546,  2547,  2552,  2553,  2557,
    1062     2559,  2561,  2563,  2565,  2567,  2574,  2576,  2578,  2580,  2582,
    1063     2584,  2586,  2588,  2590,  2592,  2597,  2599,  2601,  2606,  2632,
    1064     2633,  2635,  2639,  2640,  2644,  2646,  2648,  2650,  2652,  2654,
    1065     2661,  2663,  2665,  2667,  2669,  2671,  2676,  2681,  2683,  2685,
    1066     2705,  2707,  2712,  2713
     1023    1244,  1246,  1248,  1250,  1252,  1254,  1259,  1261,  1263,  1265,
     1024    1267,  1269,  1271,  1273,  1275,  1277,  1279,  1281,  1287,  1288,
     1025    1290,  1292,  1294,  1299,  1300,  1306,  1307,  1309,  1311,  1316,
     1026    1318,  1320,  1322,  1327,  1328,  1330,  1332,  1337,  1338,  1340,
     1027    1345,  1346,  1348,  1350,  1355,  1357,  1359,  1364,  1365,  1369,
     1028    1371,  1373,  1375,  1377,  1379,  1381,  1383,  1386,  1391,  1393,
     1029    1398,  1400,  1405,  1406,  1408,  1409,  1414,  1415,  1417,  1419,
     1030    1424,  1426,  1432,  1433,  1435,  1438,  1441,  1446,  1447,  1452,
     1031    1457,  1461,  1463,  1465,  1470,  1472,  1478,  1479,  1487,  1488,
     1032    1492,  1493,  1494,  1496,  1498,  1506,  1507,  1509,  1511,  1516,
     1033    1517,  1523,  1524,  1528,  1529,  1534,  1535,  1536,  1538,  1547,
     1034    1548,  1550,  1553,  1555,  1559,  1560,  1561,  1563,  1565,  1569,
     1035    1574,  1582,  1583,  1592,  1594,  1599,  1600,  1601,  1605,  1606,
     1036    1607,  1611,  1612,  1613,  1617,  1618,  1619,  1624,  1625,  1626,
     1037    1627,  1633,  1634,  1638,  1639,  1643,  1644,  1645,  1646,  1661,
     1038    1662,  1667,  1668,  1672,  1674,  1678,  1680,  1682,  1706,  1707,
     1039    1709,  1711,  1716,  1718,  1720,  1725,  1726,  1732,  1731,  1735,
     1040    1739,  1741,  1743,  1749,  1750,  1755,  1760,  1762,  1767,  1769,
     1041    1770,  1772,  1777,  1779,  1781,  1786,  1788,  1793,  1798,  1806,
     1042    1812,  1811,  1825,  1826,  1831,  1832,  1836,  1841,  1846,  1854,
     1043    1859,  1870,  1871,  1882,  1883,  1889,  1890,  1894,  1895,  1896,
     1044    1899,  1898,  1909,  1914,  1921,  1927,  1936,  1942,  1948,  1954,
     1045    1960,  1968,  1974,  1982,  1988,  1997,  1998,  1999,  2003,  2007,
     1046    2009,  2012,  2014,  2018,  2019,  2023,  2027,  2028,  2031,  2033,
     1047    2034,  2038,  2039,  2040,  2041,  2076,  2077,  2078,  2079,  2083,
     1048    2088,  2093,  2095,  2097,  2102,  2104,  2106,  2108,  2113,  2115,
     1049    2125,  2126,  2127,  2131,  2133,  2135,  2140,  2142,  2144,  2149,
     1050    2151,  2153,  2162,  2163,  2164,  2168,  2170,  2172,  2177,  2179,
     1051    2181,  2186,  2188,  2190,  2205,  2206,  2207,  2208,  2212,  2217,
     1052    2222,  2224,  2226,  2231,  2233,  2235,  2237,  2242,  2244,  2246,
     1053    2256,  2257,  2258,  2259,  2263,  2265,  2267,  2272,  2274,  2276,
     1054    2278,  2283,  2285,  2287,  2318,  2319,  2320,  2321,  2325,  2333,
     1055    2335,  2337,  2342,  2344,  2349,  2351,  2365,  2366,  2367,  2371,
     1056    2373,  2375,  2377,  2379,  2384,  2385,  2387,  2389,  2394,  2396,
     1057    2398,  2404,  2406,  2408,  2412,  2414,  2416,  2418,  2432,  2433,
     1058    2434,  2438,  2440,  2442,  2444,  2446,  2451,  2452,  2454,  2456,
     1059    2461,  2463,  2465,  2471,  2472,  2474,  2484,  2487,  2489,  2492,
     1060    2494,  2496,  2509,  2510,  2511,  2515,  2517,  2519,  2521,  2523,
     1061    2528,  2529,  2531,  2533,  2538,  2540,  2548,  2549,  2550,  2555,
     1062    2556,  2560,  2562,  2564,  2566,  2568,  2570,  2577,  2579,  2581,
     1063    2583,  2585,  2587,  2589,  2591,  2593,  2595,  2600,  2602,  2604,
     1064    2609,  2635,  2636,  2638,  2642,  2643,  2647,  2649,  2651,  2653,
     1065    2655,  2657,  2664,  2666,  2668,  2670,  2672,  2674,  2679,  2684,
     1066    2686,  2688,  2708,  2710,  2715,  2716
    10671067};
    10681068#endif
     
    12341234     215,   216,   216,   217,   217,   218,   218,   218,   218,   218,
    12351235     219,   218,   220,   220,   220,   221,   221,   222,   223,   223,
    1236      223,   223,   223,   223,   224,   224,   224,   224,   224,   224,
    1237      224,   224,   224,   224,   224,   224,   225,   225,   225,   225,
    1238      225,   226,   226,   227,   227,   227,   227,   228,   228,   228,
    1239      228,   229,   229,   229,   229,   230,   230,   230,   231,   231,
    1240      231,   231,   232,   232,   232,   233,   233,   234,   234,   234,
    1241      234,   234,   234,   234,   234,   234,   235,   235,   236,   236,
    1242      237,   237,   237,   237,   238,   238,   238,   238,   239,   239,
    1243      240,   240,   240,   240,   240,   241,   241,   242,   243,   244,
    1244      244,   244,   245,   245,   246,   246,   247,   247,   248,   248,
    1245      248,   248,   248,   249,   249,   249,   249,   250,   250,   251,
    1246      251,   252,   252,   253,   253,   253,   253,   254,   254,   254,
    1247      254,   254,   255,   255,   255,   255,   255,   256,   256,   257,
    1248      257,   258,   258,   259,   259,   259,   260,   260,   260,   261,
    1249      261,   261,   262,   262,   262,   263,   263,   263,   263,   264,
    1250      264,   265,   265,   266,   266,   266,   266,   267,   267,   268,
    1251      268,   269,   269,   269,   269,   269,   270,   270,   270,   270,
    1252      271,   271,   271,   272,   272,   274,   273,   273,   275,   275,
    1253      275,   276,   276,   277,   277,   277,   278,   278,   278,   278,
    1254      279,   279,   279,   280,   280,   281,   281,   282,   283,   282,
    1255      284,   284,   285,   285,   286,   286,   286,   287,   287,   288,
    1256      288,   289,   289,   290,   290,   291,   291,   291,   292,   291,
    1257      291,   293,   293,   293,   294,   294,   294,   294,   294,   294,
    1258      294,   294,   294,   295,   295,   295,   296,   297,   297,   298,
    1259      298,   299,   299,   300,   301,   301,   302,   302,   302,   303,
    1260      303,   303,   303,   304,   304,   304,   304,   305,   305,   306,
    1261      306,   306,   307,   307,   307,   307,   308,   308,   309,   309,
    1262      309,   310,   310,   310,   311,   311,   311,   312,   312,   312,
    1263      313,   313,   313,   314,   314,   314,   315,   315,   315,   316,
    1264      316,   316,   317,   317,   317,   317,   318,   318,   319,   319,
    1265      319,   320,   320,   320,   320,   321,   321,   321,   322,   322,
    1266      322,   322,   323,   323,   323,   324,   324,   324,   324,   325,
    1267      325,   325,   326,   326,   326,   326,   327,   328,   328,   328,
    1268      329,   329,   330,   330,   331,   331,   331,   332,   332,   332,
    1269      332,   332,   333,   333,   333,   333,   334,   334,   334,   335,
    1270      335,   335,   336,   336,   336,   336,   337,   337,   337,   338,
    1271      338,   338,   338,   338,   339,   339,   339,   339,   340,   340,
    1272      340,   341,   341,   341,   342,   342,   342,   342,   342,   342,
    1273      343,   343,   343,   344,   344,   344,   344,   344,   345,   345,
    1274      345,   345,   346,   346,   347,   347,   347,   348,   348,   349,
    1275      349,   349,   349,   349,   349,   350,   350,   350,   350,   350,
    1276      350,   350,   350,   350,   350,   351,   351,   351,   351,   352,
    1277      352,   352,   353,   353,   354,   354,   354,   354,   354,   354,
    1278      355,   355,   355,   355,   355,   355,   356,   357,   357,   357,
    1279      358,   358,   359,   359
     1236     223,   223,   223,   223,   223,   223,   224,   224,   224,   224,
     1237     224,   224,   224,   224,   224,   224,   224,   224,   225,   225,
     1238     225,   225,   225,   226,   226,   227,   227,   227,   227,   228,
     1239     228,   228,   228,   229,   229,   229,   229,   230,   230,   230,
     1240     231,   231,   231,   231,   232,   232,   232,   233,   233,   234,
     1241     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
     1242     236,   236,   237,   237,   237,   237,   238,   238,   238,   238,
     1243     239,   239,   240,   240,   240,   240,   240,   241,   241,   242,
     1244     243,   244,   244,   244,   245,   245,   246,   246,   247,   247,
     1245     248,   248,   248,   248,   248,   249,   249,   249,   249,   250,
     1246     250,   251,   251,   252,   252,   253,   253,   253,   253,   254,
     1247     254,   254,   254,   254,   255,   255,   255,   255,   255,   256,
     1248     256,   257,   257,   258,   258,   259,   259,   259,   260,   260,
     1249     260,   261,   261,   261,   262,   262,   262,   263,   263,   263,
     1250     263,   264,   264,   265,   265,   266,   266,   266,   266,   267,
     1251     267,   268,   268,   269,   269,   269,   269,   269,   270,   270,
     1252     270,   270,   271,   271,   271,   272,   272,   274,   273,   273,
     1253     275,   275,   275,   276,   276,   277,   277,   277,   278,   278,
     1254     278,   278,   279,   279,   279,   280,   280,   281,   281,   282,
     1255     283,   282,   284,   284,   285,   285,   286,   286,   286,   287,
     1256     287,   288,   288,   289,   289,   290,   290,   291,   291,   291,
     1257     292,   291,   291,   293,   293,   293,   294,   294,   294,   294,
     1258     294,   294,   294,   294,   294,   295,   295,   295,   296,   297,
     1259     297,   298,   298,   299,   299,   300,   301,   301,   302,   302,
     1260     302,   303,   303,   303,   303,   304,   304,   304,   304,   305,
     1261     305,   306,   306,   306,   307,   307,   307,   307,   308,   308,
     1262     309,   309,   309,   310,   310,   310,   311,   311,   311,   312,
     1263     312,   312,   313,   313,   313,   314,   314,   314,   315,   315,
     1264     315,   316,   316,   316,   317,   317,   317,   317,   318,   318,
     1265     319,   319,   319,   320,   320,   320,   320,   321,   321,   321,
     1266     322,   322,   322,   322,   323,   323,   323,   324,   324,   324,
     1267     324,   325,   325,   325,   326,   326,   326,   326,   327,   328,
     1268     328,   328,   329,   329,   330,   330,   331,   331,   331,   332,
     1269     332,   332,   332,   332,   333,   333,   333,   333,   334,   334,
     1270     334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
     1271     337,   338,   338,   338,   338,   338,   339,   339,   339,   339,
     1272     340,   340,   340,   341,   341,   341,   342,   342,   342,   342,
     1273     342,   342,   343,   343,   343,   344,   344,   344,   344,   344,
     1274     345,   345,   345,   345,   346,   346,   347,   347,   347,   348,
     1275     348,   349,   349,   349,   349,   349,   349,   350,   350,   350,
     1276     350,   350,   350,   350,   350,   350,   350,   351,   351,   351,
     1277     351,   352,   352,   352,   353,   353,   354,   354,   354,   354,
     1278     354,   354,   355,   355,   355,   355,   355,   355,   356,   357,
     1279     357,   357,   358,   358,   359,   359
    12801280};
    12811281
     
    13141314       0,     5,     1,     2,     3,     1,     2,     1,     1,     1,
    13151315       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1316        1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
    1317        3,     1,     3,     1,     2,     2,     2,     4,     4,     4,
    1318        4,     1,     2,     2,     3,     1,     2,     2,     1,     2,
    1319        2,     3,     1,     2,     2,     1,     1,     4,     2,     5,
    1320        9,     7,    10,    12,     7,    13,     2,     2,     1,     2,
    1321        2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
    1322        0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
    1323        6,     2,     2,     4,     0,     2,     0,     1,     1,     1,
    1324        5,     5,     5,     1,     5,     5,     9,     1,     5,     0,
    1325        1,     1,     5,     1,     1,     5,     5,     1,     3,     3,
    1326        4,     1,     1,     1,     1,     2,     1,     3,     3,     1,
    1327        2,     1,     3,     1,     1,     1,     1,     1,     1,     1,
    1328        1,     1,     1,     1,     2,     1,     1,     1,     2,     0,
    1329        2,     1,     4,     1,     2,     3,     4,     2,     2,     1,
    1330        2,     2,     5,     5,     7,     6,     1,     2,     2,     3,
    1331        4,     5,     2,     2,     4,     0,     4,     2,     1,     1,
    1332        1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
    1333        2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
    1334        1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
    1335        1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
    1336        2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
    1337        5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
    1338        1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
    1339        1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
    1340        3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
    1341        2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
    1342        1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
    1343        4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
    1344        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1345        2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
    1346        8,     3,     2,     1,     2,     2,     1,     2,     3,     3,
    1347        2,     4,     6,     8,     1,     2,     2,     1,     2,     2,
    1348        3,     3,     1,     4,     4,     3,     5,     8,     3,     4,
    1349        5,     1,     5,     5,     6,     6,     1,     2,     2,     1,
     1316       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
     1317       2,     3,     3,     1,     3,     1,     2,     2,     2,     4,
     1318       4,     4,     4,     1,     2,     2,     3,     1,     2,     2,
     1319       1,     2,     2,     3,     1,     2,     2,     1,     1,     4,
     1320       2,     5,     9,     7,    10,    12,     7,    13,     2,     2,
     1321       1,     2,     2,     3,     2,     3,     1,     2,     3,     2,
     1322       2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
     1323       2,     5,     6,     2,     2,     4,     0,     2,     0,     1,
     1324       1,     1,     5,     5,     5,     1,     5,     5,     9,     1,
     1325       5,     0,     1,     1,     5,     1,     1,     5,     5,     1,
     1326       3,     3,     4,     1,     1,     1,     1,     2,     1,     3,
     1327       3,     1,     2,     1,     3,     1,     1,     1,     1,     1,
     1328       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
     1329       2,     0,     2,     1,     4,     1,     2,     3,     4,     2,
     1330       2,     1,     2,     2,     5,     5,     7,     6,     1,     2,
     1331       2,     3,     4,     5,     2,     2,     4,     0,     4,     2,
     1332       1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
     1333       3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
     1334       0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
     1335       5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
     1336       0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
     1337       4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
     1338       5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
     1339       4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
     1340       3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
     1341       2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
     1342       4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
     1343       3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
     1344       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
     1345       2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
     1346       3,     6,     8,     3,     2,     1,     2,     2,     1,     2,
     1347       3,     3,     2,     4,     6,     8,     1,     2,     2,     1,
    13501348       2,     2,     3,     3,     1,     4,     4,     3,     5,     8,
    1351        3,     1,     2,     1,     4,     6,     5,     6,     7,     7,
    1352        1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
    1353        4,     3,     8,     3,     1,     1,     2,     1,     1,     2,
    1354        3,     2,     3,     2,     3,     5,     2,     6,     3,     2,
    1355        5,     2,     6,     3,     2,     6,     6,     6,     7,     1,
    1356        2,     1,     1,     1,     2,     3,     2,     3,     2,     3,
    1357        5,     6,     2,     5,     6,     2,     5,     7,     6,     6,
    1358        0,     1,     0,     2
     1349       3,     4,     5,     1,     5,     5,     6,     6,     1,     2,
     1350       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
     1351       5,     8,     3,     1,     2,     1,     4,     6,     5,     6,
     1352       7,     7,     1,     2,     2,     1,     2,     2,     3,     3,
     1353       1,     4,     4,     3,     8,     3,     1,     1,     2,     1,
     1354       1,     2,     3,     2,     3,     2,     3,     5,     2,     6,
     1355       3,     2,     5,     2,     6,     3,     2,     6,     6,     6,
     1356       7,     1,     2,     1,     1,     1,     2,     3,     2,     3,
     1357       2,     3,     5,     6,     2,     5,     6,     2,     5,     7,
     1358       6,     6,     0,     1,     0,     2
    13591359};
    13601360
     
    13651365{
    13661366     279,   279,   300,   298,   301,   299,   302,   303,   285,   287,
    1367      286,     0,   288,   312,   304,   309,   307,   308,   306,   305,
    1368      310,   311,   313,   314,   315,   529,   529,   529,     0,     0,
    1369        0,   279,   279,   289,     7,   342,     0,     8,    13,    14,
    1370        0,     2,   279,   547,     9,   507,   505,   231,     3,   439,
    1371        3,   244,     0,     3,     3,     3,   232,     3,     0,     0,
    1372        0,   280,   281,   283,   279,   292,   295,   297,   323,   271,
    1373      316,   321,   272,   331,   273,   338,   335,   345,     0,     0,
    1374      346,   274,   456,     3,     3,     0,     2,   501,   506,   511,
    1375      284,     0,     0,   529,   559,   529,     2,   570,   571,   572,
    1376      279,     0,   712,   713,     0,    12,   279,     0,   255,   256,
    1377        0,   280,   275,   276,   277,   278,   508,   290,   378,   530,
    1378      531,   356,   357,    12,   430,   431,    11,   426,   429,     0,
    1379      485,   480,   471,   430,   431,     0,     0,   510,     0,   280,
    1380      279,     0,     0,     0,     0,     0,     0,     0,     0,   279,
    1381        2,     0,   714,   280,   564,   576,   718,   711,   709,   716,
    1382        0,     0,   238,     2,     0,   514,   424,   425,   423,     0,
    1383        0,     0,     0,   529,     0,   586,     0,     0,   527,   523,
    1384      529,   544,   529,   529,   524,     2,   525,   529,   583,   529,
    1385      529,     0,     0,     0,   279,   279,   298,   343,     0,     2,
    1386      279,   245,   282,   293,   324,   336,     0,     2,     0,   439,
    1387      246,   280,   317,   332,   339,   457,     0,     2,     0,   296,
    1388      318,   325,   326,     0,   333,   337,   340,   344,     2,   279,
    1389      348,     0,   381,   458,   462,     0,     0,     0,     1,   279,
    1390        2,   512,   558,   560,   279,     2,   722,   280,   725,   527,
    1391      527,   280,     0,     0,     0,   258,   529,   524,     2,   279,
    1392        0,     0,   279,   532,     2,   483,     2,   536,     0,     0,
    1393        0,     0,    17,    56,     4,     5,     6,    15,     0,     0,
    1394        0,   279,     2,     0,   279,    62,    63,    64,    65,    19,
    1395       18,    20,    23,    47,    66,     0,    69,    73,    76,    79,
    1396       84,    87,    89,    91,    93,    95,    97,   102,   477,   732,
    1397      437,   476,     0,   435,   436,     0,   548,   563,   566,   569,
    1398      575,   578,   581,     2,   279,     0,     3,   411,     0,   419,
    1399      280,   279,   292,   316,   272,   331,   338,     3,     3,   393,
    1400      397,   407,   412,   456,   279,   413,   687,   688,   279,   414,
    1401      416,   279,     2,   565,   577,   710,     2,     2,   233,     2,
    1402        0,     0,   441,   440,   137,     2,     2,   235,     2,     2,
    1403      234,     2,   266,     2,   267,     0,   265,     0,     0,     0,
    1404        0,     0,     0,     0,     0,     0,   549,   588,     0,   439,
    1405        2,   543,   552,   641,   545,   546,   515,   279,     2,   582,
    1406      591,   584,   585,     0,   261,   279,   279,   322,     0,   280,
    1407      279,   279,   715,   719,   717,   516,   279,   527,   239,   247,
    1408      294,     0,     2,   517,   279,   481,   319,   320,   268,   334,
    1409      341,   279,   279,     2,   370,   279,   358,     0,     0,   364,
    1410      709,   279,   730,   384,     0,   459,   482,   236,   237,   502,
    1411      279,   421,     0,   279,   221,     0,     2,   223,     0,   280,
    1412        0,   241,     2,   242,   263,     0,     0,     2,   279,   527,
    1413      279,   468,   470,   469,     0,     0,   732,     0,   279,     0,
    1414      279,   472,   279,   542,   540,   541,   539,     0,   534,   537,
    1415       66,   101,     0,   279,    54,    50,   279,    59,   279,   279,
    1416       48,    49,    61,     2,   124,     0,     0,   433,     0,   432,
    1417      279,    52,    53,    16,     0,    30,    31,    35,     2,     0,
    1418      114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
    1419        0,     0,    51,     0,     0,     0,     0,     0,     0,     0,
     1367     286,     0,   288,   314,   306,   311,   309,   310,   308,   307,
     1368     312,   313,   315,   316,   317,   531,   531,   531,     0,     0,
     1369       0,   279,   279,   289,   304,   305,     7,   344,     0,     8,
     1370      13,    14,     0,     2,   279,   549,     9,   509,   507,   231,
     1371       3,   441,     3,   244,     0,     3,     3,     3,   232,     3,
     1372       0,     0,     0,   280,   281,   283,   279,   292,   295,   297,
     1373     325,   271,   318,   323,   272,   333,   273,   340,   337,   347,
     1374       0,     0,   348,   274,   458,     3,     3,     0,     2,   503,
     1375     508,   513,   284,     0,     0,   531,   561,   531,     2,   572,
     1376     573,   574,   279,     0,   714,   715,     0,    12,   279,     0,
     1377     255,   256,     0,   280,   275,   276,   277,   278,   510,   290,
     1378     380,   532,   533,   358,   359,    12,   432,   433,    11,   428,
     1379     431,     0,   487,   482,   473,   432,   433,     0,     0,   512,
     1380       0,   280,   279,     0,     0,     0,     0,     0,     0,     0,
     1381       0,   279,     2,     0,   716,   280,   566,   578,   720,   713,
     1382     711,   718,     0,     0,   238,     2,     0,   516,   426,   427,
     1383     425,     0,     0,     0,     0,   531,     0,   588,     0,     0,
     1384     529,   525,   531,   546,   531,   531,   526,     2,   527,   531,
     1385     585,   531,   531,     0,     0,     0,   279,   279,   298,   345,
     1386       0,     2,   279,   245,   282,   293,   326,   338,     0,     2,
     1387       0,   441,   246,   280,   319,   334,   341,   459,     0,     2,
     1388       0,   296,   320,   327,   328,     0,   335,   339,   342,   346,
     1389       2,   279,   350,     0,   383,   460,   464,     0,     0,     0,
     1390       1,   279,     2,   514,   560,   562,   279,     2,   724,   280,
     1391     727,   529,   529,   280,     0,     0,     0,   258,   531,   526,
     1392       2,   279,     0,     0,   279,   534,     2,   485,     2,   538,
     1393       0,     0,     0,     0,    17,    56,     4,     5,     6,    15,
     1394       0,     0,     0,   279,     2,     0,   279,    62,    63,    64,
     1395      65,    19,    18,    20,    23,    47,    66,     0,    69,    73,
     1396      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
     1397     479,   734,   439,   478,     0,   437,   438,     0,   550,   565,
     1398     568,   571,   577,   580,   583,     2,   279,     0,     3,   413,
     1399       0,   421,   280,   279,   292,   318,   272,   333,   340,     3,
     1400       3,   395,   399,   409,   414,   458,   279,   415,   689,   690,
     1401     279,   416,   418,   279,     2,   567,   579,   712,     2,     2,
     1402     233,     2,     0,     0,   443,   442,   137,     2,     2,   235,
     1403       2,     2,   234,     2,   266,     2,   267,     0,   265,     0,
     1404       0,     0,     0,     0,     0,     0,     0,     0,   551,   590,
     1405       0,   441,     2,   545,   554,   643,   547,   548,   517,   279,
     1406       2,   584,   593,   586,   587,     0,   261,   279,   279,   324,
     1407       0,   280,   279,   279,   717,   721,   719,   518,   279,   529,
     1408     239,   247,   294,     0,     2,   519,   279,   483,   321,   322,
     1409     268,   336,   343,   279,   279,     2,   372,   279,   360,     0,
     1410       0,   366,   711,   279,   732,   386,     0,   461,   484,   236,
     1411     237,   504,   279,   423,     0,   279,   221,     0,     2,   223,
     1412       0,   280,     0,   241,     2,   242,   263,     0,     0,     2,
     1413     279,   529,   279,   470,   472,   471,     0,     0,   734,     0,
     1414     279,     0,   279,   474,   279,   544,   542,   543,   541,     0,
     1415     536,   539,    66,   101,     0,   279,    54,    50,   279,    59,
     1416     279,   279,    48,    49,    61,     2,   124,     0,     0,   435,
     1417       0,   434,   279,    52,    53,    16,     0,    30,    31,    35,
     1418       2,     0,   114,   115,   116,   117,   118,   119,   120,   121,
     1419     122,   123,     0,     0,    51,     0,     0,     0,     0,     0,
    14201420       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1421        0,     0,     0,   105,     2,   627,   438,   624,   529,   529,
    1422      632,   460,   279,     2,   567,     2,   568,     0,   579,   580,
    1423      279,     2,   279,     0,   689,   280,   693,   684,   685,   691,
    1424      279,     0,   616,     2,     2,   649,   529,   732,   599,   529,
    1425      529,   732,   529,   613,   529,   529,   663,   420,   646,   529,
    1426      529,   654,   661,   279,   415,   280,     0,     0,   279,   699,
    1427      280,   704,   732,   696,   279,   701,   732,     0,   279,   279,
    1428        0,     3,    17,     2,     0,     0,   443,   730,     0,     0,
    1429      449,   225,     0,   279,     0,     0,     0,   527,   551,   555,
    1430      557,   587,   590,   594,   597,   550,   589,     0,   269,     3,
    1431        0,   279,   262,     0,     0,     0,     0,   260,     0,     2,
    1432        0,     0,   243,   518,   279,     0,   437,     3,     3,     0,
    1433        0,   279,     0,     0,   673,   368,   371,   375,   529,   375,
    1434      678,   374,   670,   529,   529,   347,   359,   367,   360,   529,
    1435      362,   365,   279,   731,     0,     0,   382,   730,   280,     3,
    1436      400,     3,   404,   403,   573,     0,   513,   279,     3,     3,
    1437      279,   419,   280,     3,   413,   414,     2,     0,     0,     0,
    1438      467,   291,   279,   463,   465,     3,     2,     2,     0,   484,
    1439        3,     0,   536,   126,     0,   210,     0,     0,     2,     0,
    1440        0,    36,     0,     0,   279,    21,     0,    22,     0,   673,
    1441      434,     0,   106,     0,     3,     2,    28,     2,     0,    33,
    1442        0,     2,    26,   103,   104,    70,    71,    72,    74,    75,
    1443       77,    78,    82,    83,    80,    81,    85,    86,    88,    90,
    1444       92,    94,    96,     0,     0,   733,   279,     0,     0,     0,
    1445      628,   629,   625,   626,   479,   478,   279,     0,     0,     0,
    1446      280,   279,   279,   643,   686,   342,     0,   720,   279,   723,
    1447      642,     2,   279,     0,     0,     0,     0,     0,     0,     0,
    1448        0,     3,   650,   602,   617,   651,     2,   598,   605,   417,
    1449      600,   601,   418,     2,   612,   620,   614,   615,   647,   648,
    1450      662,   690,   694,   692,   732,   253,     2,   726,     2,   408,
    1451      698,   703,   409,   279,     3,   387,     3,     3,     3,   439,
    1452        0,     3,     3,     2,   451,   448,   731,     0,   444,     2,
    1453      447,   450,     0,   279,   226,   248,     3,   257,   259,     0,
    1454      439,     2,   553,   554,     2,   592,   593,     0,     3,     0,
    1455      519,     3,   328,   327,   330,   329,   461,   279,     0,   520,
    1456        0,   521,     2,   627,     0,     0,   361,   363,     2,     0,
    1457        0,     0,     0,     0,   377,   674,   675,   372,   376,   373,
    1458      671,   672,   366,   370,   349,   384,   379,   385,     0,     0,
    1459        0,   422,   224,     0,     0,     3,     2,   649,   415,     0,
    1460      509,     0,   732,   471,     0,   279,   279,   279,     0,   533,
    1461      535,   127,     0,   206,     0,     0,   211,   212,    55,    60,
    1462      279,     0,    58,    57,     0,     0,   125,   674,     0,    67,
    1463       68,   107,   112,     3,   108,   106,     0,     0,     3,    25,
    1464       35,     3,     0,    99,     0,     3,   631,   635,   638,   630,
    1465        3,   574,   108,     2,   279,     3,     3,   280,     0,     2,
    1466        2,   721,   724,     0,     3,   604,   608,   611,   619,   653,
    1467      657,   660,   279,     0,     3,   603,   618,   652,   279,   279,
    1468      410,   279,   279,   279,     0,     0,     0,     0,   240,   108,
    1469        0,   101,     0,     3,     3,     0,   445,     0,   442,     0,
    1470        0,   229,   279,     0,     0,   126,     0,     0,     0,     0,
    1471        0,   126,     0,     0,     0,     2,     0,     0,     3,   128,
    1472      129,     2,   139,   130,   131,   132,   133,   134,   135,   141,
    1473      143,     0,     0,     0,   270,   279,   279,   529,   639,     0,
    1474        0,     0,   522,   628,     0,     0,   279,   279,   677,   681,
    1475      683,   676,   369,   383,   380,   561,     2,   645,   644,     0,
    1476      650,     2,   464,   466,   486,     3,   494,   495,     0,     2,
    1477      490,     3,     3,     0,     0,   538,     0,     0,   210,     0,
    1478        3,    37,   108,   730,   106,     0,     3,   642,    42,     3,
    1479       40,     3,    34,     0,     3,    98,   100,     0,     2,   633,
    1480      634,     0,   695,   279,   700,   279,     0,     0,     0,     3,
    1481      279,   279,   279,   619,     0,     2,   606,   607,     2,   621,
    1482        2,   655,   656,     0,   664,     0,     3,     0,     3,     3,
    1483        3,     3,   395,   394,   398,     0,   729,     2,     2,   728,
    1484      109,     0,     0,     0,     0,     3,   446,     3,     0,   227,
    1485      142,     3,   280,   279,     0,     0,     0,     0,     2,   187,
    1486        0,   185,     0,     0,     0,     0,     0,     0,   191,     0,
    1487      279,   529,   147,   144,   279,     0,     0,   252,   264,     3,
    1488        3,   528,   640,   595,   279,   279,   279,   351,   354,     0,
    1489        2,   679,   680,   279,   251,   279,     0,   497,   474,   279,
    1490        0,     0,   473,   488,     0,   207,     0,   213,   106,     0,
    1491        0,   113,   110,     0,     0,     0,     0,     0,     0,    24,
    1492        0,   636,   279,   562,   697,   702,   705,   706,   707,     0,
    1493        3,     3,   658,   279,   279,   279,     3,     3,     0,   666,
    1494        0,     0,     0,     0,   727,   279,   279,     3,   526,   109,
    1495      453,     0,     0,   230,   280,     0,     0,     0,     0,   279,
    1496      188,   186,     0,   183,   189,     0,     0,     0,   192,   195,
    1497      193,   190,     0,   126,   140,   138,   228,     0,     0,     0,
    1498      279,   279,   108,   279,   402,   406,   405,     0,   491,     2,
    1499      492,     2,   493,   487,   279,   214,     0,     0,     3,   642,
    1500       32,   111,     2,    45,     2,    43,    41,    29,   109,    27,
    1501        3,   708,     0,     0,     3,     3,     3,     0,     0,   665,
    1502      667,   609,   622,   254,     2,   392,     3,   391,     0,   455,
    1503      452,   126,     0,     0,   126,     3,     0,   126,   184,     0,
    1504        2,   200,   194,     0,   108,   136,   556,   596,     0,   350,
    1505      279,     3,     2,     0,     0,     2,   208,   215,     0,     0,
    1506        0,     0,     0,     0,   250,   249,     0,     0,     0,   668,
    1507      669,   279,     0,   454,   148,     0,     0,     2,   161,   126,
    1508      150,     0,   178,     0,   126,     0,     2,   152,     0,     2,
    1509        2,   279,     0,   352,     0,   279,   496,   498,   489,     0,
    1510        0,   111,    38,     3,     3,   637,   610,   623,   659,   396,
    1511      126,   154,   157,     0,   156,   160,     3,   163,   162,     0,
    1512      126,   180,   126,     3,     0,   279,     0,     2,   279,   279,
    1513      682,     2,   209,   216,     0,     0,     0,   149,     0,     0,
    1514      159,   217,   164,     2,   219,   179,     0,   182,   168,   196,
    1515        3,   201,   205,     0,   279,   353,   279,     0,    39,    46,
    1516       44,   155,   158,   126,     0,   165,   279,   126,   126,     0,
    1517      169,     0,     0,   673,   202,   203,   204,   197,     3,   355,
    1518      279,   145,   166,   151,   126,   220,   181,   176,   174,   170,
    1519      153,   126,     0,   674,     0,     0,   146,   167,   177,   171,
    1520      175,   174,   172,     3,     0,   475,   173,   198,     3,   199
     1421       0,     0,     0,     0,     0,   105,     2,   629,   440,   626,
     1422     531,   531,   634,   462,   279,     2,   569,     2,   570,     0,
     1423     581,   582,   279,     2,   279,     0,   691,   280,   695,   686,
     1424     687,   693,   279,     0,   618,     2,     2,   651,   531,   734,
     1425     601,   531,   531,   734,   531,   615,   531,   531,   665,   422,
     1426     648,   531,   531,   656,   663,   279,   417,   280,     0,     0,
     1427     279,   701,   280,   706,   734,   698,   279,   703,   734,     0,
     1428     279,   279,     0,     3,    17,     2,     0,     0,   445,   732,
     1429       0,     0,   451,   225,     0,   279,     0,     0,     0,   529,
     1430     553,   557,   559,   589,   592,   596,   599,   552,   591,     0,
     1431     269,     3,     0,   279,   262,     0,     0,     0,     0,   260,
     1432       0,     2,     0,     0,   243,   520,   279,     0,   439,     3,
     1433       3,     0,     0,   279,     0,     0,   675,   370,   373,   377,
     1434     531,   377,   680,   376,   672,   531,   531,   349,   361,   369,
     1435     362,   531,   364,   367,   279,   733,     0,     0,   384,   732,
     1436     280,     3,   402,     3,   406,   405,   575,     0,   515,   279,
     1437       3,     3,   279,   421,   280,     3,   415,   416,     2,     0,
     1438       0,     0,   469,   291,   279,   465,   467,     3,     2,     2,
     1439       0,   486,     3,     0,   538,   126,     0,   210,     0,     0,
     1440       2,     0,     0,    36,     0,     0,   279,    21,     0,    22,
     1441       0,   675,   436,     0,   106,     0,     3,     2,    28,     2,
     1442       0,    33,     0,     2,    26,   103,   104,    70,    71,    72,
     1443      74,    75,    77,    78,    82,    83,    80,    81,    85,    86,
     1444      88,    90,    92,    94,    96,     0,     0,   735,   279,     0,
     1445       0,     0,   630,   631,   627,   628,   481,   480,   279,     0,
     1446       0,     0,   280,   279,   279,   645,   688,   344,     0,   722,
     1447     279,   725,   644,     2,   279,     0,     0,     0,     0,     0,
     1448       0,     0,     0,     3,   652,   604,   619,   653,     2,   600,
     1449     607,   419,   602,   603,   420,     2,   614,   622,   616,   617,
     1450     649,   650,   664,   692,   696,   694,   734,   253,     2,   728,
     1451       2,   410,   700,   705,   411,   279,     3,   389,     3,     3,
     1452       3,   441,     0,     3,     3,     2,   453,   450,   733,     0,
     1453     446,     2,   449,   452,     0,   279,   226,   248,     3,   257,
     1454     259,     0,   441,     2,   555,   556,     2,   594,   595,     0,
     1455       3,     0,   521,     3,   330,   329,   332,   331,   463,   279,
     1456       0,   522,     0,   523,     2,   629,     0,     0,   363,   365,
     1457       2,     0,     0,     0,     0,     0,   379,   676,   677,   374,
     1458     378,   375,   673,   674,   368,   372,   351,   386,   381,   387,
     1459       0,     0,     0,   424,   224,     0,     0,     3,     2,   651,
     1460     417,     0,   511,     0,   734,   473,     0,   279,   279,   279,
     1461       0,   535,   537,   127,     0,   206,     0,     0,   211,   212,
     1462      55,    60,   279,     0,    58,    57,     0,     0,   125,   676,
     1463       0,    67,    68,   107,   112,     3,   108,   106,     0,     0,
     1464       3,    25,    35,     3,     0,    99,     0,     3,   633,   637,
     1465     640,   632,     3,   576,   108,     2,   279,     3,     3,   280,
     1466       0,     2,     2,   723,   726,     0,     3,   606,   610,   613,
     1467     621,   655,   659,   662,   279,     0,     3,   605,   620,   654,
     1468     279,   279,   412,   279,   279,   279,     0,     0,     0,     0,
     1469     240,   108,     0,   101,     0,     3,     3,     0,   447,     0,
     1470     444,     0,     0,   229,   279,     0,     0,   126,     0,     0,
     1471       0,     0,     0,   126,     0,     0,     0,     2,     0,     0,
     1472       3,   128,   129,     2,   139,   130,   131,   132,   133,   134,
     1473     135,   141,   143,     0,     0,     0,   270,   279,   279,   531,
     1474     641,     0,     0,     0,   524,   630,     0,     0,   279,   279,
     1475     679,   683,   685,   678,   371,   385,   382,   563,     2,   647,
     1476     646,     0,   652,     2,   466,   468,   488,     3,   496,   497,
     1477       0,     2,   492,     3,     3,     0,     0,   540,     0,     0,
     1478     210,     0,     3,    37,   108,   732,   106,     0,     3,   644,
     1479      42,     3,    40,     3,    34,     0,     3,    98,   100,     0,
     1480       2,   635,   636,     0,   697,   279,   702,   279,     0,     0,
     1481       0,     3,   279,   279,   279,   621,     0,     2,   608,   609,
     1482       2,   623,     2,   657,   658,     0,   666,     0,     3,     0,
     1483       3,     3,     3,     3,   397,   396,   400,     0,   731,     2,
     1484       2,   730,   109,     0,     0,     0,     0,     3,   448,     3,
     1485       0,   227,   142,     3,   280,   279,     0,     0,     0,     0,
     1486       2,   187,     0,   185,     0,     0,     0,     0,     0,     0,
     1487     191,     0,   279,   531,   147,   144,   279,     0,     0,   252,
     1488     264,     3,     3,   530,   642,   597,   279,   279,   279,   353,
     1489     356,     0,     2,   681,   682,   279,   251,   279,     0,   499,
     1490     476,   279,     0,     0,   475,   490,     0,   207,     0,   213,
     1491     106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
     1492       0,    24,     0,   638,   279,   564,   699,   704,   707,   708,
     1493     709,     0,     3,     3,   660,   279,   279,   279,     3,     3,
     1494       0,   668,     0,     0,     0,     0,   729,   279,   279,     3,
     1495     528,   109,   455,     0,     0,   230,   280,     0,     0,     0,
     1496       0,   279,   188,   186,     0,   183,   189,     0,     0,     0,
     1497     192,   195,   193,   190,     0,   126,   140,   138,   228,     0,
     1498       0,     0,   279,   279,   108,   279,   404,   408,   407,     0,
     1499     493,     2,   494,     2,   495,   489,   279,   214,     0,     0,
     1500       3,   644,    32,   111,     2,    45,     2,    43,    41,    29,
     1501     109,    27,     3,   710,     0,     0,     3,     3,     3,     0,
     1502       0,   667,   669,   611,   624,   254,     2,   394,     3,   393,
     1503       0,   457,   454,   126,     0,     0,   126,     3,     0,   126,
     1504     184,     0,     2,   200,   194,     0,   108,   136,   558,   598,
     1505       0,   352,   279,     3,     2,     0,     0,     2,   208,   215,
     1506       0,     0,     0,     0,     0,     0,   250,   249,     0,     0,
     1507       0,   670,   671,   279,     0,   456,   148,     0,     0,     2,
     1508     161,   126,   150,     0,   178,     0,   126,     0,     2,   152,
     1509       0,     2,     2,   279,     0,   354,     0,   279,   498,   500,
     1510     491,     0,     0,   111,    38,     3,     3,   639,   612,   625,
     1511     661,   398,   126,   154,   157,     0,   156,   160,     3,   163,
     1512     162,     0,   126,   180,   126,     3,     0,   279,     0,     2,
     1513     279,   279,   684,     2,   209,   216,     0,     0,     0,   149,
     1514       0,     0,   159,   217,   164,     2,   219,   179,     0,   182,
     1515     168,   196,     3,   201,   205,     0,   279,   355,   279,     0,
     1516      39,    46,    44,   155,   158,   126,     0,   165,   279,   126,
     1517     126,     0,   169,     0,     0,   675,   202,   203,   204,   197,
     1518       3,   357,   279,   145,   166,   151,   126,   220,   181,   176,
     1519     174,   170,   153,   126,     0,   676,     0,     0,   146,   167,
     1520     177,   171,   175,   174,   172,     3,     0,   477,   173,   198,
     1521       3,   199
    15211522};
    15221523
     
    15241525static const yytype_int16 yydefgoto[] =
    15251526{
    1526       -1,   812,   454,   289,    43,   127,   128,   290,   291,   292,
    1527      293,   758,   740,  1129,  1130,   294,   295,   296,   297,   298,
    1528      299,   300,   301,   302,   303,   304,   305,   306,   307,  1032,
    1529      504,   972,   309,   973,   531,   951,  1057,  1521,  1059,  1060,
    1530     1061,  1062,  1522,  1063,  1064,  1452,  1453,  1418,  1419,  1420,
    1531     1504,  1505,  1509,  1510,  1539,  1540,  1065,  1376,  1066,  1067,
    1532     1308,  1309,  1310,  1490,  1068,   955,   956,   957,  1398,  1482,
    1533     1483,   455,   456,   873,   874,  1040,    46,    47,    48,    49,
    1534       50,   327,   151,    53,    54,    55,    56,    57,   329,    59,
    1535       60,   251,    62,    63,   262,   331,   332,    66,    67,    68,
    1536       69,   112,    71,   194,   334,   113,    74,   114,    76,    77,
    1537       78,   435,   436,   437,   438,   675,   917,   676,    79,    80,
    1538      442,   696,   854,   855,   337,   338,   699,   700,   701,   339,
    1539      340,   341,   342,   452,   169,   129,   130,   508,   311,   162,
    1540      626,   627,   628,   629,   630,    81,   115,   475,   476,   943,
    1541      477,   265,   481,   312,    83,   131,   132,    84,  1334,  1109,
    1542     1110,  1111,  1112,    85,    86,   717,    87,   261,    88,    89,
    1543      178,  1034,   662,   391,   119,    90,   487,   488,   489,   179,
    1544      256,   181,   182,   183,   257,    93,    94,    95,    96,    97,
    1545       98,    99,   186,   187,   188,   189,   190,   823,   588,   589,
    1546      590,   591,   592,   593,   594,   595,   556,   557,   558,   559,
    1547      680,   100,   597,   598,   599,   600,   601,   602,   916,   682,
    1548      683,   684,   576,   345,   346,   347,   348,   439,   157,   102,
    1549      103,   349,   350,   694,   553
     1527      -1,   814,   456,   291,    45,   129,   130,   292,   293,   294,
     1528     295,   760,   742,  1131,  1132,   296,   297,   298,   299,   300,
     1529     301,   302,   303,   304,   305,   306,   307,   308,   309,  1034,
     1530     506,   974,   311,   975,   533,   953,  1059,  1523,  1061,  1062,
     1531    1063,  1064,  1524,  1065,  1066,  1454,  1455,  1420,  1421,  1422,
     1532    1506,  1507,  1511,  1512,  1541,  1542,  1067,  1378,  1068,  1069,
     1533    1310,  1311,  1312,  1492,  1070,   957,   958,   959,  1400,  1484,
     1534    1485,   457,   458,   875,   876,  1042,    48,    49,    50,    51,
     1535      52,   329,   153,    55,    56,    57,    58,    59,   331,    61,
     1536      62,   253,    64,    65,   264,   333,   334,    68,    69,    70,
     1537      71,   114,    73,   196,   336,   115,    76,   116,    78,    79,
     1538      80,   437,   438,   439,   440,   677,   919,   678,    81,    82,
     1539     444,   698,   856,   857,   339,   340,   701,   702,   703,   341,
     1540     342,   343,   344,   454,   171,   131,   132,   510,   313,   164,
     1541     628,   629,   630,   631,   632,    83,   117,   477,   478,   945,
     1542     479,   267,   483,   314,    85,   133,   134,    86,  1336,  1111,
     1543    1112,  1113,  1114,    87,    88,   719,    89,   263,    90,    91,
     1544     180,  1036,   664,   393,   121,    92,   489,   490,   491,   181,
     1545     258,   183,   184,   185,   259,    95,    96,    97,    98,    99,
     1546     100,   101,   188,   189,   190,   191,   192,   825,   590,   591,
     1547     592,   593,   594,   595,   596,   597,   558,   559,   560,   561,
     1548     682,   102,   599,   600,   601,   602,   603,   604,   918,   684,
     1549     685,   686,   578,   347,   348,   349,   350,   441,   159,   104,
     1550     105,   351,   352,   696,   555
    15501551};
    15511552
    15521553/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15531554   STATE-NUM.  */
    1554 #define YYPACT_NINF -1291
     1555#define YYPACT_NINF -1306
    15551556static const yytype_int16 yypact[] =
    15561557{
    1557     3767,  2676, -1291,    62, -1291, -1291, -1291, -1291, -1291, -1291,
    1558    -1291,   146, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1559    -1291, -1291, -1291, -1291, -1291,   115,   115,   115,   905,   892,
    1560      225,  4876,  1045, -1291, -1291, -1291,   234, -1291, -1291, -1291,
    1561      678, -1291,  2287, -1291, -1291, -1291, -1291, -1291, -1291,    63,
    1562      239, -1291,  1646, -1291, -1291, -1291, -1291,   252,   886,   360,
    1563       99,  7577, -1291, -1291,  9303,  1009, -1291, -1291, -1291,  1359,
    1564      399,  5014,   640,   618,  1359,   728, -1291, -1291,   365,   285,
    1565    -1291,  1359,  1167,   282, -1291,   469,   486, -1291, -1291, -1291,
    1566    -1291,   345,   239,   115, -1291,   115, -1291, -1291, -1291, -1291,
    1567    10104,  1646, -1291, -1291,  1646, -1291, 10163,   377, -1291, -1291,
    1568     1212, 10222, -1291,  1045,  1045,  1045, -1291, -1291, -1291,   115,
    1569    -1291, -1291, -1291,   406,   455,   458, -1291, -1291, -1291,   466,
    1570    -1291, -1291, -1291, -1291, -1291,   475,   515, -1291,   538,  1045,
    1571     8846,  1230,    47,   506,   511,   552,   556,   559,   591,  7019,
    1572    -1291,   604, -1291,  9372, -1291, -1291, -1291, -1291,   614, -1291,
    1573      250,  3635, -1291,   620,   260, -1291, -1291, -1291, -1291,   645,
    1574      270,   290,   311,   115,   629, -1291,   886,  1586,   701, -1291,
    1575      122, -1291,   115,   115,   239, -1291, -1291,   145, -1291,   115,
    1576      115,  2053,   660,   672,  1045, 11990, -1291, -1291,   676, -1291,
    1577     2287, -1291, -1291,  1359, -1291, -1291,   239, -1291,  1646,    63,
    1578    -1291,  7818, -1291,  1045,  1045,  1045,   239, -1291,   905, -1291,
    1579     3082, -1291, -1291,   666,  1045, -1291,  1045, -1291, -1291,  5469,
    1580      699,   892,   721,  1045, -1291,   905,   706,   710, -1291,  4876,
    1581      778, -1291, -1291, -1291,  6212, -1291, -1291,  5247, -1291,   701,
    1582      141, 10222, 11181,  1212,  2053, -1291,   171, -1291, -1291, 10163,
    1583     1646,   744, 11930, -1291, -1291,   401, -1291, 11692, 11409, 11466,
    1584    11409, 11523, -1291,   753, -1291, -1291, -1291, -1291, 11580, 11580,
    1585      778,  8528, -1291, 11409,  8952, -1291, -1291, -1291, -1291, -1291,
    1586    -1291,   782, -1291,   993,  2004, 11409, -1291,   364,   202,   603,
    1587      611,   697,   758,   762,   769,   821,    44, -1291, -1291,   789,
    1588      446, -1291,   353, -1291, -1291,  1230, -1291, -1291,   434,   816,
    1589    -1291,   572,   816, -1291,  8634,   818, -1291, -1291,  1508,  1393,
    1590     8274, 11990,  1359, -1291,  1359,  1045,  1045, -1291, -1291, -1291,
    1591    -1291, -1291, -1291,  1045, 10281,  1646, -1291, -1291, 10340,  1905,
    1592    -1291,  7019, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1593     5697, 11409, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1594    -1291, -1291, -1291, -1291, -1291,  1212, -1291,   936,   839,   846,
    1595      864,   951,   873,   893,   897,  1586, -1291, -1291,   902,    63,
    1596    -1291, -1291, -1291,   925, -1291, -1291, -1291,  6212, -1291, -1291,
    1597    -1291, -1291, -1291,  2053, -1291,  8846,  8846, -1291,  1212, 12018,
    1598     8846,  7926, -1291, -1291, -1291, -1291,  6212,   141, -1291, -1291,
    1599     1359,   239, -1291, -1291,  6212, -1291,  3835, -1291, -1291,  1045,
    1600     1045,  5848, 10399, -1291,  1122,  9570, -1291,   315,   316,   892,
    1601    -1291,  5469,   935,   923,   892,  1045, -1291, -1291, -1291, -1291,
    1602    10759, -1291,   387, 11958, -1291,   239,   964, -1291,  1212, 11767,
    1603    11238, -1291, -1291, -1291, -1291,   999,  2053, -1291,  8339,   701,
    1604     7468, -1291, -1291, -1291,   752,   594,   789,   892, 11930,   537,
    1605    10163, -1291, 11930, -1291, -1291, -1291, -1291,   624, -1291,   973,
    1606    -1291, -1291,   152,  8528, -1291, -1291,  8528, -1291,  8740,  8528,
    1607    -1291, -1291, -1291, -1291, -1291,   664,   979,   483,   982, -1291,
    1608     6675, -1291, -1291, -1291,    65, -1291, -1291, 11295, -1291,    91,
    1609    -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1610    11181, 11181, -1291, 11409, 11409, 11409, 11409, 11409, 11409, 11409,
    1611    11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409,
    1612    11409,  3856, 11181, -1291,   446,  1147, -1291, -1291,   115,   115,
    1613    -1291, -1291,  8846, -1291, -1291, -1291,   925,   778, -1291,   925,
    1614     6675, -1291,  9058,   989, -1291, 10458, -1291, -1291,   614, -1291,
    1615     8198,   991, -1291,   306, -1291,  1892,   253,   789, -1291,   115,
    1616      115,   789,   258, -1291,   115,   115,   925, -1291, -1291,   115,
    1617      115, -1291,   816, 10517,  1646, 11898,   307,   330, 10517, -1291,
    1618    10694, -1291,   789, -1291, 10281, -1291,   162,  1003,  7991,  7991,
    1619     1646,  5948,  1007, -1291,   361,  1011, -1291,  1000,  3635,   682,
    1620    -1291,  1096,  1646,  7991,   778,  1212,   778,   701,   705,   816,
    1621    -1291, -1291,   717,   816, -1291, -1291, -1291,  1051, -1291, 11352,
    1622      239, 10759, -1291,   702,  1025,   723,  1027, -1291,   734, -1291,
    1623     1026,   239, -1291, -1291,  6212,   239,  1580,  1024,  1032,   341,
    1624      385,  7131,  1763, 11409,  2122, -1291, -1291,  1035,    43,  1035,
    1625    -1291, -1291, -1291,   115,   115, -1291, -1291,   892, -1291,   115,
    1626    -1291, -1291,  9629,   892,  1028, 11409, -1291,   935, 11898, -1291,
    1627    -1291,  1031, -1291, -1291, -1291,   778, -1291, 11833, 11409, -1291,
    1628     7991,   675,  8274, -1291, -1291,   614,  1034,  1038,   752,  2429,
    1629    -1291, -1291, 11930, -1291, -1291,  1024, -1291, -1291,  1047, -1291,
    1630     1024,  1048, 11692, 11181,  1029,  1076,  1060,  1061, -1291,  1055,
    1631     1064, -1291,  1065,  1067,  6788, -1291, 11181, -1291,   483,  1926,
    1632    -1291,  6058, 11181,  1068,  1063, -1291, -1291, -1291,   756, -1291,
    1633    11181, -1291, -1291, -1291, -1291, -1291, -1291, -1291,   364,   364,
    1634      202,   202,   603,   603,   603,   603,   611,   611,   697,   758,
    1635      762,   769,   821, 11409,   790, -1291, 10759,  1072,  1073,  1080,
    1636     1147, -1291, -1291, -1291, -1291, -1291, 10759, 11352,   760,  1081,
    1637     7243,  9164,  7019, -1291, -1291,  1085,  1089, -1291, 10104, -1291,
    1638    -1291,   306, 10759,  1010,  1090,  1092,  1093,  1098,  1099,  1100,
    1639     1101,  4615,  1892, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1640    -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1641      925, -1291, -1291, -1291,   789, -1291, -1291, -1291, -1291, -1291,
    1642    -1291, -1291, -1291,  9986, -1291, -1291,  1103,  1104, -1291,    63,
    1643     1105,  1063,  5948, -1291, -1291, -1291,  5697,  1107, -1291, -1291,
    1644    -1291, -1291,   892,  6285,  1187, -1291, -1291, -1291, -1291,  1106,
    1645       63, -1291, -1291,   925, -1291, -1291,   925,   175, 11409,  1112,
    1646    -1291, -1291, -1291, -1291, -1291, -1291, -1291,  7019,   512, -1291,
    1647      239, -1291,  1580,  1740,  1132,  1133, -1291, -1291, -1291,  1120,
    1648      880,  1136,  1143,  1144, -1291,  2122, -1291, -1291, -1291, -1291,
    1649    -1291, -1291, -1291,  1122, -1291,   923, -1291, -1291,  1140,  1149,
    1650     1148, -1291, -1291,  1156,  1157, -1291,   675,  2323, -1291,   374,
    1651    -1291,  2429,   789, -1291,  1150, 11930, 10576,  8846,  1160, -1291,
    1652    -1291,  1155,  1163, -1291,  1165,   173,  1161, -1291,  1166,  1166,
    1653     6675, 11181, -1291, -1291,  1166,  1169, -1291,  1926,  5697, -1291,
    1654    -1291, -1291, -1291,  1172,  4760, 11181,  1180,   778,  5948, -1291,
    1655    11295, -1291,   778, -1291, 11181, -1291,   792,   816, -1291, -1291,
    1656    -1291, -1291,  5313, -1291,  8634, -1291, -1291,  7355,  1183, -1291,
    1657    -1291, -1291, -1291,  1191, -1291,   828,   816, -1291,   866,   887,
    1658      816, -1291,  1045,  1190,  4985, -1291, -1291, -1291, 10759, 10759,
    1659    -1291,  8404,  8404,  7991,  1194,  1192,  1193,  1200, -1291, -1291,
    1660     1199,   450,   221,  1063, -1291,   778, -1291,  3635, -1291, 11181,
    1661      501, -1291,  6563,  1207,  1208, 11124,  1209,  1210,   112,   142,
    1662       54, 11181,  1213,   239,  5569, -1291,  1211,  1197, -1291, -1291,
    1663    -1291,  1215, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,
    1664    -1291,   892,  1223, 11181, -1291, 10759, 10759,   115,   816,  1224,
    1665     1225,  1085, -1291,  1740,   651,   892,  6675, 10635,   924,   816,
    1666    -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,  1226,
    1667     2323, -1291, -1291,  1206, -1291,  1024, -1291, -1291,  1212,  1228,
    1668    -1291, -1291, -1291,   765,  1232, -1291, 11409,  1216,  1076,  1076,
    1669     1234, -1291,  9688,  1000, 11181,  1240,  1172,   563,   227,  1239,
    1670    -1291,  1234, -1291,  1246,  1239, -1291, -1291,  1251, -1291, -1291,
    1671      925,  1252, -1291, 10281, -1291,  6907,  1254,  1256,  1257, -1291,
    1672    10045,  7991,  7991, -1291,  1253, -1291, -1291,   925, -1291, -1291,
    1673    -1291, -1291,   925, 11181, -1291, 11181, 11409,  1267, -1291, -1291,
    1674    -1291, -1291, -1291, -1291, -1291,  1273, -1291, -1291, -1291, -1291,
    1675    -1291, 11409, 11409,  1275,  1276,  1239, -1291, -1291,   892, -1291,
    1676    -1291, -1291,  7753, 10576, 11181, 11181,  1287, 11181, -1291, -1291,
    1677     1260, -1291,  1263, 11181,  1264,  1266, 11181,   938, -1291,  1268,
    1678     6675,   115, -1291, -1291,  6285,  1229,   542, -1291, -1291, -1291,
    1679    -1291, -1291,   925, -1291,  9440,  8846,  5469,  1285, -1291,  1289,
    1680    -1291, -1291,   925, 10967, -1291,  8339,  1295, -1291, -1291, 10576,
    1681      548,   582, -1291,  1291,  1297, -1291,   219, -1291, 11181,  1298,
    1682     1299, -1291, -1291,  1301,    98,   168,   778,  1303,  1305, -1291,
    1683     1306, -1291, 10759, -1291, -1291, -1291, -1291, -1291, -1291,  1309,
    1684    -1291, -1291, -1291, 10759, 10759, 10759, -1291, -1291,  1311, -1291,
    1685     1315,  1318,  1322,   507, -1291,  8058,  8166, -1291, -1291,   689,
    1686    -1291,  1321,  1325, -1291,  8469,   767,   776,  1329,   779,  6439,
    1687    -1291, -1291,   609, -1291, -1291,   784,  1330,   239,  1371,  1379,
    1688    -1291, -1291,  1332, 11124, -1291, -1291, -1291,  1336,  1337,   808,
    1689     9750,  5469,  9508, 10759, -1291, -1291, -1291,  1328, -1291, -1291,
    1690    -1291, -1291, -1291, -1291, 10576, -1291,  1316,  1368,  1172,    97,
    1691    -1291, -1291, -1291, -1291, -1291, -1291, -1291, -1291,  1342, -1291,
    1692    -1291, -1291,  1343,  1350, -1291, -1291, -1291,  1352,  1355, -1291,
    1693    -1291, -1291, -1291, -1291, -1291, -1291,  1361, -1291,  1362, -1291,
    1694    -1291, 11124,   118, 11181, 11124, -1291,  1365, 11181, -1291,   186,
    1695     1382, -1291, -1291,  1353,  9270, -1291, -1291, -1291,   497, -1291,
    1696     9809, -1291, -1291,  1646,  1212,  1369, -1291, -1291,   825,  1364,
    1697    11181,   778,   778,  1377, -1291, -1291,  1378,  1380,  1384, -1291,
    1698    -1291,  8404,  1381, -1291,  1447, 11409,  1383, -1291, -1291, 11044,
    1699    -1291,   837, -1291,  1366, 11124,  1373, -1291, -1291,  1396, -1291,
    1700     1406,  5469,  1394, -1291,  1397, 10576, -1291, -1291, -1291,  1386,
    1701     1426,  1399, -1291,  1239,  1239, -1291, -1291, -1291, -1291, -1291,
    1702    11124,   240, -1291,   900, -1291, -1291,  4527, -1291, -1291,  1387,
    1703    11181, -1291, 11181,  4527,   239, 10399,  1401, -1291,  9868,  5469,
    1704    -1291,  1405, -1291, -1291, 11181,  1402,  1412, -1291, 11409, 11409,
    1705    -1291, -1291,   990,   130, -1291, -1291,  1404, -1291,   990, -1291,
    1706    -1291,  1855,   778,   239, 10399, -1291,  9927,  1424, -1291, -1291,
    1707    -1291, -1291, -1291, 11044,  1419,   990,  7686, 11181, 10964,  1422,
    1708      990,  1431,  1855,  2409, -1291, -1291, -1291, -1291, -1291, -1291,
    1709     8846, -1291, 10846, -1291, 11044, -1291, -1291,  1410, 10765, -1291,
    1710    -1291, 10964,   239,  2409,  1440,   850, -1291, 10846, -1291, -1291,
    1711    -1291, 10765, -1291, -1291,   239, -1291, -1291, -1291, -1291, -1291
     1558    6112, 10121, -1306,    45, -1306, -1306, -1306, -1306, -1306, -1306,
     1559   -1306,    27, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1560   -1306, -1306, -1306, -1306, -1306,    94,    94,    94,   808,   829,
     1561      69,  7553,   431, -1306, -1306, -1306, -1306, -1306,   134, -1306,
     1562   -1306, -1306,  1527, -1306,  4935, -1306, -1306, -1306, -1306, -1306,
     1563   -1306,    26,   185, -1306,  1590, -1306, -1306, -1306, -1306,   194,
     1564     544,   310,   103,  4656, -1306, -1306,  9491,  1148, -1306, -1306,
     1565   -1306,   779,   321,  3969,   180,  1184,   779,  1266, -1306, -1306,
     1566     614,   276, -1306,   779,  1398,   228, -1306,   350,   396, -1306,
     1567   -1306, -1306, -1306,   244,   185,    94, -1306,    94, -1306, -1306,
     1568   -1306, -1306, 10357,  1590, -1306, -1306,  1590, -1306, 10416,   306,
     1569   -1306, -1306,   946, 10475, -1306,   431,   431,   431, -1306, -1306,
     1570   -1306,    94, -1306, -1306, -1306,   360,   406,   415, -1306, -1306,
     1571   -1306,   427, -1306, -1306, -1306, -1306, -1306,   436,   460, -1306,
     1572     463,   431,  8930,  3037,   712,   484,   502,   510,   513,   524,
     1573     541,  6995, -1306,   566, -1306,  9560, -1306, -1306, -1306, -1306,
     1574     571, -1306,   234,  4195, -1306,   344,   251, -1306, -1306, -1306,
     1575   -1306,   601,   345,   349,   389,    94,   611, -1306,   544,  2525,
     1576     633, -1306,   129, -1306,    94,    94,   185, -1306, -1306,   222,
     1577   -1306,    94,    94,  2900,   637,   644,   431, 11276, -1306, -1306,
     1578     661, -1306,  4935, -1306, -1306,   779, -1306, -1306,   185, -1306,
     1579    1590,    26, -1306,  7796, -1306,   431,   431,   431,   185, -1306,
     1580     808, -1306,  6454, -1306, -1306,   657,   431, -1306,   431, -1306,
     1581   -1306, 10180,   647,   829,   671,   431, -1306,   808,   669,   673,
     1582   -1306,  7553,   752, -1306, -1306, -1306,  9361, -1306, -1306,  5911,
     1583   -1306,   633,   191, 10475,  5789,   946,  2900, -1306,   291, -1306,
     1584   -1306, 10416,  1590,   704,  2725, -1306, -1306,   255, -1306, 11839,
     1585   11556, 11613, 11556, 11670, -1306,   734, -1306, -1306, -1306, -1306,
     1586   11727, 11727,   752,  8612, -1306, 11556,  9036, -1306, -1306, -1306,
     1587   -1306, -1306, -1306,   770, -1306,   468,  1857, 11556, -1306,   446,
     1588     717,   853,   280,   793,   751,   737,   733,   795,   166, -1306,
     1589   -1306,   778,   551, -1306,   298, -1306, -1306,  3037, -1306, -1306,
     1590     401,   802, -1306,   490,   802, -1306,  8718,   811, -1306, -1306,
     1591    1169,   608,  8252, 11276,   779, -1306,   779,   431,   431, -1306,
     1592   -1306, -1306, -1306, -1306, -1306,   431, 10534,  1590, -1306, -1306,
     1593   10593,  1775, -1306,  6995, -1306, -1306, -1306, -1306, -1306, -1306,
     1594   -1306, -1306,  4717, 11556, -1306, -1306, -1306, -1306, -1306, -1306,
     1595   -1306, -1306, -1306, -1306, -1306, -1306, -1306,   946, -1306,   807,
     1596     826,   840,   846,   849,   855,   868,   875,  2525, -1306, -1306,
     1597     820,    26, -1306, -1306, -1306,   881, -1306, -1306, -1306,  9361,
     1598   -1306, -1306, -1306, -1306, -1306,  2900, -1306,  8930,  8930, -1306,
     1599     946, 12073,  8930,  7904, -1306, -1306, -1306, -1306,  9361,   191,
     1600   -1306, -1306,   779,   185, -1306, -1306,  9361, -1306,  6576, -1306,
     1601   -1306,   431,   431,  8506, 10652, -1306,  1231,  3253, -1306,   400,
     1602     418,   829, -1306, 10180,   884,   864,   829,   431, -1306, -1306,
     1603   -1306, -1306, 11012, -1306,   521,  8172, -1306,   185,   891, -1306,
     1604     946, 11914,  5969, -1306, -1306, -1306, -1306,   916,  2900, -1306,
     1605    8317,   633,  7444, -1306, -1306, -1306,  1642,   538,   778,   829,
     1606    2725,   700, 10416, -1306,  2725, -1306, -1306, -1306, -1306,   572,
     1607   -1306,   901, -1306, -1306,   122,  8612, -1306, -1306,  8612, -1306,
     1608    8824,  8612, -1306, -1306, -1306, -1306, -1306,   581,   912,   557,
     1609     918, -1306,  6659, -1306, -1306, -1306,   100, -1306, -1306,  6125,
     1610   -1306,   113, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1611   -1306, -1306,  5789,  5789, -1306, 11556, 11556, 11556, 11556, 11556,
     1612   11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556,
     1613   11556, 11556, 11556,  4485,  5789, -1306,   551,   858, -1306, -1306,
     1614      94,    94, -1306, -1306,  8930, -1306, -1306, -1306,   881,   752,
     1615   -1306,   881,  6659, -1306,  9142,   924, -1306, 10711, -1306, -1306,
     1616     571, -1306,  9696,   928, -1306,  1037, -1306,  2282,   292,   778,
     1617   -1306,    94,    94,   778,   300, -1306,    94,    94,   881, -1306,
     1618   -1306,    94,    94, -1306,   802, 10770,  1590, 12045,   172,   352,
     1619   10770, -1306, 10947, -1306,   778, -1306, 10534, -1306,   171,   931,
     1620    7969,  7969,  1590,  4778,   929, -1306,   372,   935, -1306,   956,
     1621    4195,   607, -1306,  1042,  1590,  7969,   752,   946,   752,   633,
     1622     763,   802, -1306, -1306,   797,   802, -1306, -1306, -1306,   997,
     1623   -1306, 11499,   185, 11012, -1306,   589,   976,   605,   984, -1306,
     1624     626, -1306,   986,   185, -1306, -1306,  9361,   185,  1612,   980,
     1625     983,   435,   443,  7107,  1354, 11556,  2791, -1306, -1306,   987,
     1626      87,   987, -1306, -1306, -1306,    94,    94, -1306, -1306,   829,
     1627   -1306,    94, -1306, -1306,  9764,   829,   996, 11556, -1306,   884,
     1628   12045, -1306, -1306,  1003, -1306, -1306, -1306,   752, -1306, 11980,
     1629   11556, -1306,  7969,   585,  8252, -1306, -1306,   571,  1001,  1002,
     1630    1642,  3314, -1306, -1306,  2725, -1306, -1306,   980, -1306, -1306,
     1631    1010, -1306,   980,  1013, 11839,  5789,   992,  1044,  1018,  1019,
     1632   -1306,  1015,  1025, -1306,  1026,  1027,  6771, -1306,  5789, -1306,
     1633     557,   926, -1306,  5040,  5789,  1029,  1022, -1306, -1306, -1306,
     1634     629, -1306,  5789, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1635     446,   446,   717,   717,   853,   853,   853,   853,   280,   280,
     1636     793,   751,   737,   733,   795, 11556,   886, -1306, 11012,  1032,
     1637    1034,  1035,   858, -1306, -1306, -1306, -1306, -1306, 11012, 11499,
     1638     653,  1038,  7219,  9248,  6995, -1306, -1306,  1030,  1043, -1306,
     1639   10357, -1306, -1306,  1037, 11012,   923,  1045,  1048,  1049,  1056,
     1640    1057,  1058,  1060,  3551,  2282, -1306, -1306, -1306, -1306, -1306,
     1641   -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1642   -1306, -1306,   881, -1306, -1306, -1306,   778, -1306, -1306, -1306,
     1643   -1306, -1306, -1306, -1306, -1306, 10239, -1306, -1306,  1061,  1062,
     1644   -1306,    26,  1041,  1022,  4778, -1306, -1306, -1306,  4717,  1039,
     1645   -1306, -1306, -1306, -1306,   829,  6270,  1111, -1306, -1306, -1306,
     1646   -1306,  1047,    26, -1306, -1306,   881, -1306, -1306,   881,   347,
     1647   11556,  1063, -1306, -1306, -1306, -1306, -1306, -1306, -1306,  6995,
     1648     899, -1306,   185, -1306,  1612,  2196,  1070,  1074, -1306, -1306,
     1649   -1306,  1077,   953,  1076,  1086,  1087, -1306,  2791, -1306, -1306,
     1650   -1306, -1306, -1306, -1306, -1306,  1231, -1306,   864, -1306, -1306,
     1651    1083,  1089,  1084, -1306, -1306,  1095,  1107, -1306,   585,  1172,
     1652   -1306,   375, -1306,  3314,   778, -1306,  1091,  2725, 10829,  8930,
     1653    1114, -1306, -1306,  1109,  1116, -1306,  1118,   295,  1112, -1306,
     1654    1117,  1117,  6659,  5789, -1306, -1306,  1117,  1120, -1306,   926,
     1655    4717, -1306, -1306, -1306, -1306,  1119,  5240,  5789,  1121,   752,
     1656    4778, -1306,  6125, -1306,   752, -1306,  5789, -1306,   828,   802,
     1657   -1306, -1306, -1306, -1306,  9389, -1306,  8718, -1306, -1306,  7331,
     1658    1127, -1306, -1306, -1306, -1306,  1131, -1306,   852,   802, -1306,
     1659     870,   879,   802, -1306,   431,  1135,  5490, -1306, -1306, -1306,
     1660   11012, 11012, -1306,  8382,  8382,  7969,  1133,  1132,  1134,  1139,
     1661   -1306, -1306,  1144,   596,    62,  1022, -1306,   752, -1306,  4195,
     1662   -1306,  5789,   458, -1306,  6547,  1149,  1151, 11442,  1152,  1153,
     1663      52,    75,    37,  5789,  1158,   185,  4069, -1306,  1113,  1138,
     1664   -1306, -1306, -1306,  1156, -1306, -1306, -1306, -1306, -1306, -1306,
     1665   -1306, -1306, -1306,   829,  1162,  5789, -1306, 11012, 11012,    94,
     1666     802,  1164,  1163,  1030, -1306,  2196,   819,   829,  6659, 10888,
     1667     887,   802, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1668   -1306,  1179,  1172, -1306, -1306,  1165, -1306,   980, -1306, -1306,
     1669     946,  1167, -1306, -1306, -1306,   662,  1183, -1306, 11556,  1161,
     1670    1044,  1044,  1182, -1306,  9823,   956,  5789,  1189,  1119,   540,
     1671      74,  1186, -1306,  1182, -1306,  1191,  1186, -1306, -1306,  1195,
     1672   -1306, -1306,   881,  1197, -1306, 10534, -1306,  6883,  1198,  1200,
     1673    1205, -1306, 10298,  7969,  7969, -1306,  1208, -1306, -1306,   881,
     1674   -1306, -1306, -1306, -1306,   881,  5789, -1306,  5789, 11556,  1209,
     1675   -1306, -1306, -1306, -1306, -1306, -1306, -1306,  1213, -1306, -1306,
     1676   -1306, -1306, -1306, 11556, 11556,  1212,  1214,  1186, -1306, -1306,
     1677     829, -1306, -1306, -1306,  3779, 10829,  5789,  5789,  1272,  5789,
     1678   -1306, -1306,  1203, -1306,  1204,  5789,  1206,  1207,  5789,  1006,
     1679   -1306,  1215,  6659,    94, -1306, -1306,  6270,  1222,   477, -1306,
     1680   -1306, -1306, -1306, -1306,   881, -1306,  9628,  8930, 10180,  1216,
     1681   -1306,  1229, -1306, -1306,   881, 11248, -1306,  8317,  1217, -1306,
     1682   -1306, 10829,   486,   495, -1306,  1230,  1245, -1306,   308, -1306,
     1683    5789,  1244,  1242, -1306, -1306,  1248,   136,   146,   752,  1251,
     1684    1254, -1306,  1256, -1306, 11012, -1306, -1306, -1306, -1306, -1306,
     1685   -1306,  1257, -1306, -1306, -1306, 11012, 11012, 11012, -1306, -1306,
     1686    1260, -1306,  1264,  1267,  1268,   646, -1306,  8036,  8144, -1306,
     1687   -1306,   715, -1306,  1270,  1273, -1306,  8447,   690,   721,  1275,
     1688     725,  6425, -1306, -1306,   508, -1306, -1306,   730,  1277,   185,
     1689    1316,  1326, -1306, -1306,  1278, 11442, -1306, -1306, -1306,  1279,
     1690    1282,   740,  9885, 10180,  5774, 11012, -1306, -1306, -1306,  1281,
     1691   -1306, -1306, -1306, -1306, -1306, -1306, 10829, -1306,  1261,  1315,
     1692    1119,   357, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1693    1283, -1306, -1306, -1306,  1289,  1293, -1306, -1306, -1306,  1295,
     1694    1296, -1306, -1306, -1306, -1306, -1306, -1306, -1306,  1302, -1306,
     1695    1301, -1306, -1306, 11442,   130,  5789, 11442, -1306,  1304,  5789,
     1696   -1306,   155,  1328, -1306, -1306,  1314,  9458, -1306, -1306, -1306,
     1697     320, -1306,  9944, -1306, -1306,  1590,   946,  1311, -1306, -1306,
     1698     742,  1320,  5789,   752,   752,  1325, -1306, -1306,  1330,  1331,
     1699    1334, -1306, -1306,  8382,  1329, -1306,  1401, 11556,  1333, -1306,
     1700   -1306, 11362, -1306,   745, -1306,  1319, 11442,  1324, -1306, -1306,
     1701    1336, -1306,  1355, 10180,  1343, -1306,  1352, 10829, -1306, -1306,
     1702   -1306,  1332,  1387,  1358, -1306,  1186,  1186, -1306, -1306, -1306,
     1703   -1306, -1306, 11442,   118, -1306,   954, -1306, -1306,  7662, -1306,
     1704   -1306,  1339,  5789, -1306,  5789,  7662,   185, 10652,  1362, -1306,
     1705   10003, 10180, -1306,  1364, -1306, -1306,  5789,  1365,  1370, -1306,
     1706   11556, 11556, -1306, -1306,  1024,   101, -1306, -1306,  1356, -1306,
     1707    1024, -1306, -1306,  1567,   752,   185, 10652, -1306, 10062,  1375,
     1708   -1306, -1306, -1306, -1306, -1306, 11362,  1372,  1024,  7731,  5789,
     1709   11282,  1377,  1024,  1380,  1567,  2919, -1306, -1306, -1306, -1306,
     1710   -1306, -1306,  8930, -1306, 11127, -1306, 11362, -1306, -1306,  1361,
     1711   11046, -1306, -1306, 11282,   185,  2919,  1385,   747, -1306, 11127,
     1712   -1306, -1306, -1306, 11046, -1306, -1306,   185, -1306, -1306, -1306,
     1713   -1306, -1306
    17121714};
    17131715
     
    17151717static const yytype_int16 yypgoto[] =
    17161718{
    1717    -1291,  4245,  3306, -1291,  1116, -1291,    -1,     2,   896, -1291,
    1718    -1291, -1291,  -495,  -897,  -137,  5431, -1291,   913,   541,   551,
    1719      480,   578,  1002,  1004,  1001,  1005,  1006, -1291,    40,  -196,
    1720     5036,   426,  -670,  -935, -1291,   410,  -536,   405, -1291,   215,
    1721    -1291,   338, -1139, -1291, -1291,    76, -1291, -1286,  -974,   178,
    1722    -1291, -1291, -1291, -1291,    21, -1264, -1291, -1291, -1291, -1291,
    1723    -1291, -1291,   251,    72,    70,   452, -1291,   461, -1291,   108,
    1724    -1291,  -221, -1291, -1291, -1291,   510,  -756, -1291, -1291,     0,
    1725     -911,   123,  2941, -1291, -1291, -1291,    -4, -1291,   104,   656,
    1726      -23,  1441,  3190, -1291, -1291,    57,    83,   545,  -242,  1645,
    1727    -1291,  1583, -1291, -1291,   105,  2213, -1291,  2417,   430, -1291,
    1728    -1291,  -424,  -392,  1159,  1162,   665,   908,   386, -1291, -1291,
    1729     1151,   667,  -582, -1291,  -560,   393,  -622, -1291, -1291,  -913,
    1730     -944,  -339,   625,  1039,    -8, -1291,   220,   304,  -284,  -197,
    1731     -141,   644,   727, -1291,   986, -1291,  2799,  -407,   895, -1291,
    1732    -1291,   677, -1291,  -399, -1291,   -84, -1291, -1291, -1291, -1255,
    1733      388, -1291, -1291, -1291,  1154, -1291,    85, -1291, -1291,  -787,
    1734     -102, -1290,   -38,  1983, -1291,  2958, -1291,   894, -1291,  -164,
    1735      127,  -169,  -166,  -161,     4,   -37,   -35,   -34,   791,    51,
    1736       55,    59,  -101,  -155,  -153,  -140,  -138,  -299,  -486,  -465,
    1737     -454,  -533, -1291,  -528, -1291, -1291,  -539,  -526,  -507,  -477,
    1738     1502,  4608,  -529,  -535,  -530,  -514,  -525, -1291,  -360,  -646,
    1739     -641,  -638,  -576,  -285,  -303, -1291, -1291,  1288,    18,   -86,
    1740    -1291,   339,   120,  -577,  -382
     1719   -1306,  4178,  3354, -1306,  1595, -1306,    -1,     2,   839, -1306,
     1720   -1306, -1306,  -497,  -915,  -215,  4919, -1306,   975,   537,   542,
     1721     346,   554,   941,   943,   950,   945,   949, -1306,    17,  -251,
     1722    5020,   377,  -700,  -894, -1306,  -198,  -684,  -459, -1306,    77,
     1723   -1306,   290, -1062, -1306, -1306,    40, -1306, -1305, -1076,   127,
     1724   -1306, -1306, -1306, -1306,   -21, -1283, -1306, -1306, -1306, -1306,
     1725   -1306, -1306,   216,    31,    14,   408, -1306,   414, -1306,    76,
     1726   -1306,  -305, -1306, -1306, -1306,   467,  -851, -1306, -1306,     8,
     1727    -929,    10,  2660, -1306, -1306, -1306,  -110, -1306,   299,   597,
     1728     -29,  1428,  4046, -1306, -1306,    55,    49,    79,  -229,  1809,
     1729   -1306,  1752, -1306, -1306,    66,  2021, -1306,  2437,  1677, -1306,
     1730   -1306,  -412,  -376,  1122,  1124,   625,   871,  -270, -1306, -1306,
     1731    1105,   627,  -558, -1306,  -460,  -395,    48, -1306, -1306,  -855,
     1732    -990,   470,   652,   990,   -16, -1306,   727,    -5,  -244,  -195,
     1733    -127,   583,   692, -1306,   930, -1306,  2734,  -373,   841, -1306,
     1734   -1306,   619, -1306,  -405, -1306,    85, -1306, -1306, -1306, -1245,
     1735     327, -1306, -1306, -1306,  1097, -1306,    28, -1306, -1306,  -832,
     1736    -104, -1279,  -133,  2533, -1306,  3317, -1306,   836, -1306,  -122,
     1737    1439,  -163,  -160,  -157,     4,   -41,   -37,   -36,   587,    42,
     1738      51,    90,  -121,  -155,  -152,  -151,  -149,  -294,  -486,  -446,
     1739    -427,  -545, -1306,  -531, -1306, -1306,  -525,  -485,  -484,  -477,
     1740    1927,  4727,  -549,  -504,  -503,  -475,  -461, -1306,  -386,  -662,
     1741    -654,  -649,  -575,  -248,  -333, -1306, -1306,   226,   125,   -50,
     1742   -1306,   339,   169,  -590,  -241
    17411743};
    17421744
     
    17441746   positive, shift that token.  If negative, reduce the rule which
    17451747   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1746 #define YYTABLE_NINF -505
     1748#define YYTABLE_NINF -507
    17471749static const yytype_int16 yytable[] =
    17481750{
    1749      107,   108,    44,   143,    92,   144,   145,   378,   255,   138,
    1750      379,   658,   418,   386,   248,   380,   791,   692,   101,   101,
    1751      363,   381,   759,   382,   667,   484,   911,   842,   787,   891,
    1752      587,   912,   668,    44,   913,    92,   383,   858,   384,   577,
    1753     1126,   611,    44,   686,    44,   615,   154,   788,   818,   101,
    1754      867,   876,   824,   819,    44,   817,   825,    64,   856,   856,
    1755       44,   828,   184,    44,   209,   206,    44,   835,   216,   820,
    1756       45,   725,   492,   856,   681,   730,   387,   789,  1174,  1395,
    1757       30,   970,   101,    65,   378,  1134,  1070,   379,    64,   404,
    1758      386,   146,   380,   249,   723,   147,   250,   814,   381,   148,
    1759      382,    45,   911,    44,    58,    72,    44,   912,  1172,  1173,
    1760      913,   702,    44,   383,    65,   384,   137,  1069,   815,   105,
    1761      928,   654,   656,    51,   109,  1454,   192,    91,   935,   816,
    1762      105,  1191,   550,  1458,   425,    58,    72,   116,  1185,   143,
    1763      389,   144,   145,    44,   203,   154,   390,   750,   240,   316,
    1764      856,   446,    30,   387,    51,    44,   105,   353,    91,    30,
    1765     1415,  1416,   159,   105,   985,  1203,   551,   142,   755,    91,
    1766      193,   407,  -218,  -218,   990,   720,   650,   105,    44,    44,
    1767     1471,   154,    30,   714,   201,   180,   161,   210,    91,  1454,
    1768     1004,    91,   648,    44,   761,   661,   729,   952,   388,  -109,
    1769      417,  1342,    44,   665,   154,   829,  1400,   105,    30,   832,
    1770       44,   461,   463,    44,   742,   421,   143,  1458,   144,   145,
    1771     -109,   645,  1458,   240,  1417,   390,   159,   146,  1415,  1416,
    1772      849,   147,   814,   105,   852,   148,  1199,  -218,  1458,   451,
    1773      457,    44,   462,    92,  1529,  1458,   398,   117,   390,   135,
    1774      513,   989,   469,   815,   734,    44,    44,   101,   154,   486,
    1775      314,   735,    44,   462,   816,   165,  1201,  1542,    91,    44,
    1776      677,  1344,   467,   637,   390,  1117,   818,  1077,   795,   502,
    1777       91,   819,  1118,  1003,   646,   552,  1190,   577,   828,  1016,
    1778       30,  1174,  1426,  1017,   420,    30,    64,   820,   230,   232,
    1779      686,   652,   645,   377,   180,  1254,   657,   241,   491,    45,
    1780     1181,   851,   702,  1338,  1136,   536,   537,    44,   577,   353,
    1781      414,  1336,    65,   577,   449,   814,   136,    91,  1337,  1478,
    1782       44,    44,  1255,   679,   419,   140,  1182,   612,    91,   104,
    1783      104,   616,  1174,    58,    72,   163,   815,    44,   458,    72,
    1784      105,    44,   133,   134,   826,  1182,   584,   816,   357,   833,
    1785      173,   584,    51,   191,   791,   646,    91,   720,   366,  1528,
    1786      104,    34,  1172,  1173,   358,    37,   787,    44,   369,   414,
    1787      465,   158,    38,    39,   367,  1537,   714,    44,  1191,   353,
    1788      235,   231,  1541,   457,   370,   788,  1169,  1170,   371,   396,
    1789      208,   818,  -275,   104,   159,    44,   819,   811,   825,   584,
    1790       44,   845,   457,   203,   372,   846,   814,   585,   842,   373,
    1791      457,   415,   820,   687,   689,   789,   105,  1070,   133,   134,
    1792      105,   423,   133,   134,   847,   374,    44,   815,   848,   688,
    1793      690,  1175,    91,   900,   579,   158,   240,   702,   816,   687,
    1794      260,   443,   107,  1219,  1220,   561,   586,   702,  1069,   714,
    1795       44,   562,  1020,   856,   863,   906,   228,  1174,    44,   238,
    1796      353,   229,    44,   702,    92,   533,    44,   914,   847,   158,
    1797      534,   535,  1101,  1159,  1161,  1132,  -500,   868,   101,   704,
    1798      484,   205,   355,   689,   809,   705,   506,   739,  1449,   927,
    1799      252,   458,    72,   378,  1443,  1444,   379,   -10,  1503,   907,
    1800      386,   380,   180,   756,  1508,  1205,   739,   381,   762,   382,
    1801      458,    72,   479,  1015,   480,   314,   314,    64,   458,    72,
    1802      314,  1524,   383,   878,   384,   563,  1531,   390,  1105,   158,
    1803       45,   205,   203,  1377,   989,  1191,  1250,   554,  1113,   390,
    1804      208,   314,  1191,    65,  -102,  1091,  -427,   555,  -102,  -428,
    1805     1102,   678,   105,   681,   133,   134,   451,   264,   440,  1270,
    1806     1271,  1017,   711,   387,    58,    72,   266,    34,   104,  1081,
    1807      625,    37,    44,   205,   748,    44,   390,    44,    38,    39,
    1808      355,   856,   856,    51,   749,  1191,   844,    91,   158,   880,
    1809      314,   586,   105,  1431,   133,   134,    44,  1091,   317,  1188,
    1810      219,  1363,   859,   318,   220,  1364,   267,   224,   314,   226,
    1811      440,  -276,    44,   158,   875,  1189,   233,   801,     8,     9,
    1812       10,    11,    12,   877,    44,   879,   663,    44,   726,   268,
    1813     1350,   205,  1015,   727,     2,   196,     4,     5,     6,     7,
    1814     1188,  1354,  1355,  1356,   319,    30,  1329,   110,   320,   691,
    1815      457,   321,  1028,   578,   443,  -109,  1316,  -109,    44,   604,
    1816      706,  -109,  1330,   567,    44,   390,    44,   205,    33,   702,
    1817      702,   205,   314,  1074,   538,   539,  -109,  -109,   420,  1144,
    1818     1331,   505,   579,   322,   540,   541,   721,   724,   152,   728,
    1819     1484,  1391,   722,   932,   931,   352,  1332,  1484,   506,   577,
    1820      813,   506,   586,   491,   506,   356,   105,   746,   133,   134,
    1821       44,    44,  1002,   843,   486,  1036,   731,   364,   579,   542,
    1822      543,  -277,   732,  1378,    44,   491,   702,   702,     8,     9,
    1823       10,    11,    12,    34,   158,   158,   368,    37,   219,   158,
    1824     1525,   645,  1225,   376,    38,    39,   246,  1226,   388,   677,
    1825      205,   405,   152,  1375,    -3,    30,   745,   809,   458,    72,
    1826      158,   440,   746,   406,   440,   711,   936,   410,   584,    40,
    1827      440,   203,   544,   545,  1015,   869,   937,   624,    33,   141,
    1828      428,   870,  -452,   586,  -452,   203,   310,   736,  -452,   910,
    1829      737,   678,  1320,   743,   892,   441,   881,   715,   390,   104,
    1830      746,   458,    72,    44,   646,   653,   655,    34,   884,   158,
    1831      390,    37,   679,   983,    44,   894,  1319,   444,    38,    39,
    1832      447,   746,   440,   155,   448,   440,   896,   158,   440,   205,
    1833     1265,  1425,   562,   105,   864,   813,   586,  1144,   711,   185,
    1834      470,   408,   207,   718,   498,   217,   412,   513,   979,   801,
    1835      714,   713,   991,   719,   980,   890,   911,  1242,   705,  1371,
    1836      546,   912,  1056,   562,   913,   746,   899,   219,  1372,   224,
    1837      901,  1374,   547,   203,   746,   434,  1379,   746,   809,   205,
    1838      548,   101,   746,  1138,  1325,   390,  1186,  1390,   746,   984,
    1839       44,   158,  1031,   505,    44,    44,   505,   922,   549,   505,
    1840     1388,   578,   552,   925,   804,   412,   562,    44,   474,   565,
    1841     1244,  1144,   580,   702,  1486,    44,  1487,  1439,   686,  1155,
    1842       64,   390,   155,  1440,   702,   702,   702,   507,   813,  1459,
    1843      152,   638,   578,    44,   354,   746,  1106,   578,   639,   586,
    1844      714,    34,  1545,   175,   801,    37,    65,   105,   562,   133,
    1845      134,   784,    38,    39,   101,   219,   640,  1158,   155,   584,
    1846      123,  1526,   124,   125,   126,   642,  1128,    58,    72,   739,
    1847      574,  1128,   316,   390,   702,  1287,  1288,   176,  1160,  1163,
    1848      584,   155,  1306,  1307,    44,   643,    51,   177,   686,   644,
    1849      609,   809,   422,   647,   613,   205,  1237,  1468,  1479,  1480,
    1850      715,   857,   857,     2,   196,     4,     5,     6,     7,  1144,
    1851      772,   773,   774,   775,  1135,  1230,   857,   390,   245,   813,
    1852      586,   440,  1415,  1416,  1128,   205,   809,   240,   316,   390,
    1853      205,   218,   678,   693,  1056,  1496,   695,  1200,  1202,  1204,
    1854      678,   938,   398,   641,   390,     8,     9,    10,    11,    12,
    1855      101,   310,   310,   918,   713,   918,   310,   314,   586,  1107,
    1856     -222,   514,   515,   516,   733,   703,   686,   768,   769,  1031,
    1857      420,   747,    30,   715,   751,    44,   625,   666,   434,   770,
    1858      771,   434,  1041,   803,   517,   810,   518,   434,   519,  1193,
    1859      467,   316,   390,   857,   686,    33,   354,   853,   866,   110,
    1860       44,   826,   316,   584,   843,  1082,   -12,  1343,  1345,  1346,
    1861      865,  1535,   776,   777,   872,    65,   277,   893,   205,   895,
    1862      898,  1515,   722,  -401,   474,   926,   310,   713,   474,   604,
    1863      562,  -504,   205,   801,   673,   940,   458,    72,   947,   507,
    1864      949,   954,   507,   953,   310,   507,   491,     8,     9,    10,
    1865       11,    12,   958,   959,   961,    51,   962,   963,   168,   964,
    1866     -278,   975,   974,  1091,   986,   987,   354,     8,     9,    10,
    1867       11,    12,   988,   495,    30,   992,   999,    34,   625,   175,
    1868     1000,    37,  1005,   209,  1006,  1007,   511,   512,    38,    39,
    1869     1008,  1009,  1010,  1011,    30,  -389,  -388,    33,   532,  1029,
    1870      586,   101,   104,  1056,  1038,  1071,  1078,   168,   310,  1451,
    1871      168,   491,   491,   672,  1087,   390,    44,    33,   574,  1073,
    1872      205,   673,   101,   674,  1084,  1085,   807,   512,  1088,  1106,
    1873        8,     9,    10,    11,    12,  1089,  1090,  1094,   554,   711,
    1874      390,  1095,  1104,  1128,  1128,  1128,  1096,   101,   555,   841,
    1875     1097,  1098,  1114,   746,   574,  1115,  1116,    30,  1207,  1119,
    1876      850,    64,   968,  1122,   512,   203,   703,    34,  1058,   175,
    1877     1124,    37,  1501,  1451,  1127,   104,   158,  1150,    38,    39,
    1878       33,  1041,  1437,  1153,  1164,    34,  1176,    65,   809,    37,
    1879     1177,  1178,  1179,  1180,  1227,  1228,    38,    39,  1194,  1195,
    1880     1197,  1198,  1056,   253,  1206,   201,   210,   101,    58,    72,
    1881     1211,  1212,    -3,   254,   168,  1217,  1223,   479,  1234,  1224,
    1882      156,    40,  1297,   578,  1106,  1238,  1315,    51,  1243,   711,
    1883     1245,   141,  1248,   378,  1252,   314,   379,  1256,   434,   386,
    1884     1259,   380,   101,  1261,  1263,  1272,  1193,   381,  1266,   382,
    1885     1267,  1268,  1107,     2,   196,     4,     5,     6,     7,   645,
    1886     1056,  1279,   383,  1056,   384,  1284,   168,   420,   474,  1289,
    1887     1290,   104,    65,   168,  1300,  1436,    44,  1301,  1303,  1514,
    1888     1304,  1321,  1311,  1322,   156,    44,    44,  1327,  1333,  1335,
    1889     1128,  1128,  1339,   458,    72,  1341,  1340,  1347,  1293,  1348,
    1890     1349,   703,   387,  1351,  1171,  1359,   857,   419,  1056,  1360,
    1891     1361,   703,    51,  1056,  1362,  1369,  1307,   205,   313,  1370,
    1892     1373,  1380,   646,  1383,  1392,  1106,  1384,   703,  1386,  1387,
    1893     1396,    61,   111,  1397,   168,  1404,   765,   766,   767,  1056,
    1894     1196,  1400,  1405,   101,  1430,   491,  1409,  1107,    34,  1410,
    1895      582,   168,    37,  -390,  1001,   168,  1413,  1424,  1441,    38,
    1896       39,  1428,    61,   139,   101,   143,  1438,   144,   145,  1445,
    1897     1446,   101,  1447,   153,   715,   512,  1448,  1450,   413,  1364,
    1898     1460,  1516,  1455,    44,   583,  1466,   584,  1462,  1464,  1470,
    1899     1469,  1473,  1056,  1493,   585,   211,  1499,  1056,  1474,   807,
    1900     1472,  1485,  1497,  1193,    44,    44,  1500,   154,   491,   491,
    1901     1193,  1056,  1381,  1056,   101,  1520,  1523,  1056,  1507,  1530,
    1902     1056,   208,   104,  1532,  1538,    44,  1056,   353,   713,    65,
    1903     1056,   247,  1544,   887,   857,   857,    65,   413,   778,   780,
    1904     1251,   779,  1314,   104,   781,  1502,   782,  1427,  1107,  1382,
    1905      458,    72,  1546,  1193,   158,   440,  1518,   458,    72,   509,
    1906     1246,  1488,   156,    34,   715,   166,   167,    37,   104,    51,
    1907     1247,  1216,   315,    70,    38,    39,    51,   919,  1092,    65,
    1908      330,   669,  1093,  1037,   670,   697,     8,     9,    10,    11,
    1909       12,   474,  1108,   310,  1295,  1296,   798,  1298,  1432,   352,
    1910      458,    72,  1123,  1302,    70,   871,  1305,   942,   385,  1058,
    1911     1103,   512,   205,    30,   716,     0,   950,  1328,     0,    51,
    1912      807,     0,   403,   208,     0,   139,   409,     0,   104,   465,
    1913      314,   153,     0,   703,   703,    34,    33,   212,  1142,    37,
    1914      841,    34,     0,   175,     0,    37,    38,    39,     0,   440,
    1915      440,   426,    38,    39,   969,   429,     0,   430,     0,     0,
    1916        0,     0,     0,   104,   445,     0,     0,     0,  1366,  1489,
    1917       61,   902,   392,   390,     0,   459,     0,   176,     0,   400,
    1918        0,   903,     0,   313,   313,   466,   806,   177,   313,     0,
    1919      703,   703,     0,   409,     0,     0,   204,     0,  1517,     0,
    1920        0,    34,     0,   166,   167,    37,   222,     0,  1385,   313,
    1921      168,     0,    38,    39,   205,     0,     0,     0,     0,   440,
    1922        0,     0,   333,     0,     0,     0,   168,     0,     0,     0,
    1923        0,     0,     0,   807,     0,     0,     0,  1543,   168,     0,
    1924        8,     9,    10,    11,    12,     0,   204,     0,   392,  1548,
    1925        0,     0,     0,     0,     0,   575,     0,     0,   313,     0,
    1926      440,     0,   605,     0,   104,     0,  1414,    30,   807,  1422,
    1927        0,   509,     0,  1421,   509,   610,   313,   509,     0,   610,
    1928        0,     0,   330,     0,     0,   104,     0,     0,   204,  1264,
    1929       33,   512,   104,   427,   440,    34,  1142,   440,   440,    37,
    1930        0,     0,   560,     0,     0,     0,    38,    39,     0,     0,
    1931      564,     0,    70,   568,  1457,     0,     0,    70,    34,  1461,
    1932      175,     0,    37,   440,     0,   440,     0,     0,   459,    38,
    1933       39,   902,     0,   390,     0,   104,     0,     0,   168,     0,
    1934      313,   903,   330,     0,     0,  1477,   204,   459,  1326,   158,
    1935        0,     0,     0,     0,   672,   459,   390,     0,     0,     0,
    1936        0,     0,     0,     0,   674,     0,     0,     0,     0,   392,
    1937     1142,   310,   434,   400,     0,     0,     0,   703,     0,     0,
    1938        0,   698,   204,     0,   409,  1108,   204,     0,   703,   703,
    1939      703,     0,     8,     9,    10,    11,    12,   512,     0,   712,
    1940        0,    61,   485,     0,   212,     0,     0,     0,     0,   409,
    1941       34,     0,   175,   409,    37,     0,     0,  1536,     0,    30,
    1942        0,    38,    39,  1536,   333,     0,     8,     9,    10,    11,
    1943       12,     0,  1536,     0,     0,     0,  1536,     0,   703,     0,
    1944        0,   330,    33,     0,     0,   495,  1512,    34,   390,   582,
    1945        0,    37,     0,    30,     0,     0,  1513,   392,    38,    39,
    1946       34,     0,   166,   167,    37,   204,   434,   434,  1142,     0,
    1947       70,    38,    39,     0,     0,     0,    33,     0,     0,     0,
    1948     1108,     0,     0,   583,   333,   584,   790,     0,     0,    70,
    1949        0,     0,     0,   585,     0,     0,   356,    70,   118,   121,
    1950      122,   800,     0,   575,   806,     0,     0,     0,     0,     0,
    1951        0,   247,     0,     0,     0,     0,   822,   748,     0,   390,
    1952        0,     0,     0,   333,     0,     0,     0,   749,     0,     0,
    1953      807,     0,     0,     0,   575,     0,   434,     0,     0,   575,
    1954        0,   333,     0,    70,   204,   610,   560,   560,     0,   330,
    1955      330,     0,     0,     8,     9,    10,    11,    12,     0,     0,
    1956        0,   204,     0,     0,   330,     0,   242,     0,   243,   512,
    1957        0,     0,     0,     0,     0,     0,     0,   434,     0,     0,
    1958       30,  1108,   698,   333,   520,   521,   522,   523,   524,   525,
    1959      526,   527,   528,   529,   204,   459,     0,     0,   806,     0,
    1960        0,     0,   712,    33,     0,   915,     0,     0,    34,     0,
    1961      175,  1491,    37,     0,   434,   434,     0,   530,     0,    38,
    1962       39,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    1963      882,     0,     0,     0,   885,     0,     0,     0,   459,     0,
    1964     1491,   330,   434,   333,   253,     0,   375,     0,     0,    30,
    1965      941,     0,     0,   409,   254,   394,   395,     0,   560,     0,
    1966      399,     0,   401,   402,     0,     0,   310,     0,     0,     0,
    1967      392,     0,    33,     0,     0,   712,     0,    34,     0,   175,
    1968      967,    37,     0,     0,     0,     0,     0,     0,    38,    39,
    1969        0,   333,   333,     0,     0,     0,     0,     0,     0,     0,
    1970        0,     0,     0,    73,     0,     0,   333,     0,     0,     0,
    1971      204,     0,     0,   672,     0,   390,     0,   698,     0,     0,
    1972        0,     0,     0,   674,   333,   313,     0,   698,     0,     0,
    1973        0,     0,   997,   800,    73,     0,     0,    70,     0,   247,
    1974      204,     0,     0,   698,   333,   204,     0,     0,     0,     0,
    1975        0,     0,  1014,     0,     0,     0,     0,     0,     0,     0,
    1976        0,     0,     0,     0,     0,     0,     0,   213,     0,     0,
     1751     109,   145,    46,   140,    94,   146,   147,   660,   257,   110,
     1752      53,   111,   913,   613,    47,   380,   420,   617,   381,   494,
     1753     914,   382,   761,   383,  1071,   915,   384,   385,   670,   386,
     1754     844,   694,   793,    46,  1176,    94,   365,   589,   827,   869,
     1755     486,    53,   826,  1072,    46,    47,    46,   391,   156,    67,
     1756     683,   954,   250,   972,   819,    66,    46,   388,   389,   139,
     1757     669,   688,    46,   860,   186,    46,    74,   208,    46,  1136,
     1758     218,   789,   790,   203,   211,   715,   212,   878,   579,   791,
     1759      67,   820,   821,  1128,   148,   507,    66,   251,   913,   406,
     1760     252,  1397,   380,   149,   652,   381,   914,    74,   382,   816,
     1761     383,   915,   107,   384,   385,    46,   386,   727,    46,   930,
     1762     822,   732,   205,   663,    46,  1193,  1460,   107,   463,   465,
     1763     118,   667,  1187,   752,    30,   103,   103,   830,   119,   167,
     1764     194,    30,   150,   837,   388,   389,   459,   145,  1456,   817,
     1765     107,   146,   147,  -218,  -218,    46,   221,   156,  1205,   163,
     1766     222,  1183,  1256,   226,   937,   228,   103,    46,   818,   355,
     1767     858,   858,   235,   656,   658,   107,    30,   409,  1174,  1175,
     1768     138,   243,  1417,  1418,   195,   858,  1201,  1184,   107,  1257,
     1769      46,    46,   722,   156,     2,   198,     4,     5,     6,     7,
     1770     392,   103,  1473,  1192,   419,    46,   650,  1417,  1418,  1203,
     1771    1460,   107,  1456,   757,    46,  1460,   156,  1480,  -218,   655,
     1772     657,   107,    46,   161,   145,    46,   763,   423,   146,   147,
     1773     148,  1460,   716,   421,   736,   859,   859,  1531,  1460,   149,
     1774     242,   737,   392,  1184,   816,   142,  1419,   725,   731,  1344,
     1775     859,   453,    34,    46,    35,    94,   471,  1176,   390,  1346,
     1776    1544,    53,   858,   488,   552,    47,   744,    46,    46,    30,
     1777     156,  1428,   422,   398,    46,   647,   648,   991,   150,   451,
     1778     158,    46,   464,   639,   817,  1019,   847,   161,   715,  1018,
     1779     848,   504,  1005,   853,   221,   417,  1138,   493,   553,   459,
     1780      67,   165,   464,   818,   554,   425,    66,   507,  1176,    60,
     1781     507,   654,   175,   507,    -3,   427,   659,    74,   459,   820,
     1782     821,   316,    74,   193,   679,   681,   459,   859,   688,    46,
     1783     797,   355,   448,   400,  -275,   392,   579,   816,    30,    30,
     1784      60,   614,    46,    46,   158,   618,   237,    30,   822,   106,
     1785     106,   107,   359,   135,   136,   242,   647,   648,   831,    46,
     1786     240,   715,   834,    46,   830,   786,  1340,   579,   360,   368,
     1787     508,   902,   579,   542,   543,  1071,   103,   817,   315,  1207,
     1788     106,   416,  1193,   851,   722,   369,   481,   854,   482,    46,
     1789     793,   205,   233,   160,  1072,   107,   818,   135,   136,    46,
     1790     827,   355,   469,   828,   392,   586,  -502,  1119,   544,   545,
     1791     563,   835,   210,   586,  1120,   106,   564,    46,  1505,   920,
     1792    1338,   920,    46,   221,  1510,   226,  1060,  1339,   816,   789,
     1793     790,   844,   515,  1176,   916,   716,  1433,   791,   415,   254,
     1794     416,  1526,  1174,  1175,   820,   821,  1533,   107,    46,   135,
     1795     136,     8,     9,    10,    11,    12,   929,   160,  1530,  1079,
     1796    1379,   366,   262,   371,   109,   161,   849,   373,   817,  -109,
     1797     850,   -10,    46,   822,  1539,    74,  1402,  1177,    30,   372,
     1798      46,  1543,   355,   374,    46,   865,    94,   818,    46,   849,
     1799    -109,   160,    53,  1103,    74,  1134,    47,   415,  1445,  1446,
     1800     738,    33,    74,   739,   357,   581,   745,   375,   716,   741,
     1801     665,   221,   565,   870,   392,   486,   882,  -429,   689,   511,
     1802     205,   380,   158,   376,   381,   758,  -430,   382,   741,   383,
     1803     764,    67,   384,   385,   690,   386,   691,    66,   266,  1193,
     1804    1017,  1093,   811,   880,   708,  1252,  1193,   268,    74,   683,
     1805      60,   160,   692,   689,  1115,   460,   516,   517,   518,  1161,
     1806    1163,   691,   210,  1019,   388,   389,   459,   535,  1451,   908,
     1807     991,   269,   536,   537,   270,   858,  1190,   909,   453,   519,
     1808     442,   520,   508,   521,  1107,   508,   316,   316,   508,  1193,
     1809     106,   316,  1191,  1093,    46,  1190,   319,    46,  1198,    46,
     1810     846,   569,   357,   392,  1331,  1272,  1273,   103,   112,   934,
     1811     160,  1318,   316,  1333,   320,  1022,   861,  1486,    46,    36,
     1812    1332,   177,   321,    39,  1486,   322,   748,  1377,   877,  1334,
     1813      40,    41,   442,   706,    46,   160,   323,   803,  1173,   707,
     1814     859,   157,  1380,   315,   315,   879,    46,   881,   315,    46,
     1815     723,   154,  -109,   324,  -109,   178,   724,   187,  -109,  1017,
     1816     209,   316,   556,   219,   392,   179,   422,  1527,   750,   315,
     1817     392,  1146,   557,  -109,  -109,   580,  1030,   354,   751,   316,
     1818      46,   606,   358,    36,   733,   584,    46,    39,    46,   107,
     1819     734,   135,   136,   747,    40,    41,   938,  1076,   586,   748,
     1820     390,   894,   493,   858,   858,  1427,   939,   748,   460,   248,
     1821    -102,   893,   370,  1104,  -102,   154,   933,   896,   315,   585,
     1822     871,   586,   626,   748,   493,   230,   872,   460,   488,   587,
     1823     231,   511,    46,    46,   511,   460,   315,   511,   898,   892,
     1824     157,   981,    74,   316,   564,   378,    46,   982,   407,   312,
     1825     901,  1038,   356,   581,   903,   408,   160,   160,   579,   205,
     1826    1365,   160,   715,   443,  1366,   993,   137,  1060,   859,   859,
     1827    1004,   707,   412,   205,  1244,   107,   157,   135,   136,   713,
     1828     564,    60,   160,   442,   845,    74,   442,   446,  1488,   581,
     1829    1489,   430,   442,     2,   198,     4,     5,     6,     7,   157,
     1830     315,  1017,  1373,   449,   410,   647,   648,   450,   748,   414,
     1831     424,   728,   985,   679,   681,   811,   729,   232,   234,   717,
     1832     472,   106,  1267,   242,   318,    46,  1322,   107,  -454,  1146,
     1833    -454,   160,  1321,  1374,  -454,  1528,    46,  1376,   436,   748,
     1834     538,   539,  1381,   748,   442,   500,   987,   442,   748,   160,
     1835     442,    34,  1390,    35,  1441,   515,   992,  1461,   564,  1547,
     1836    1442,   205,   913,   748,   550,   564,  1387,   549,   414,   803,
     1837     914,   476,  1006,   548,   883,   915,   392,  1246,     8,     9,
     1838      10,    11,    12,   125,  1058,   126,   127,   128,   546,   547,
     1839     509,  1033,   551,   154,   107,    53,   135,   136,   774,   775,
     1840     776,   777,  1368,  1146,   107,    30,   135,   136,   886,   716,
     1841     392,   554,    46,   160,   356,   567,    46,    46,   242,   318,
     1842     392,  1392,  1188,   580,  1416,   582,   806,  1424,    33,    46,
     1843    1227,   649,   704,   576,    67,  1228,   811,    46,   640,  1140,
     1844      66,   392,  1289,  1290,   540,   541,     8,     9,    10,    11,
     1845      12,    74,   641,   611,   580,    46,   688,   615,   642,   580,
     1846     400,   643,   392,  1157,   803,   392,  1108,   644,  1109,   556,
     1847     445,   392,  1459,    30,    36,   460,  1083,  1463,    39,   557,
     1848     645,  1160,   713,   586,   356,    40,    41,   646,  1130,  1084,
     1849    1162,   741,   586,  1130,   247,  1165,    33,   697,  1232,   716,
     1850     392,  1146,   695,  1479,   748,   986,    46,  -222,  1297,  1298,
     1851     103,  1300,   735,  1137,   312,   312,  1239,  1304,   460,   312,
     1852    1307,    36,   717,   177,   749,    39,   688,   469,   318,   392,
     1853     753,  1470,    40,    41,   828,   318,   586,   750,   805,   392,
     1854     668,   436,   812,   442,   436,   855,  1130,   751,   -12,   811,
     1855     436,  1345,  1347,  1348,   867,   713,  1058,   255,   422,  1202,
     1856    1204,  1206,   112,   940,    53,   318,   392,   256,  1033,  1498,
     1857    1308,  1309,  1481,  1482,   868,  1538,  1417,  1418,  1171,  1172,
     1858     874,  1538,   279,   103,   811,   770,   771,   476,   895,   312,
     1859    1538,   476,   772,   773,  1538,   717,   897,    46,   724,   627,
     1860     900,   564,   509,    67,   688,   509,   675,   312,   509,  1195,
     1861     778,   779,    36,   928,   705,  -403,    39,  1517,  -506,   942,
     1862      74,   949,    46,    40,    41,   951,   955,  1537,   316,   956,
     1863     960,   961,   688,   704,   963,  1221,  1222,   964,   965,   966,
     1864     977,  1001,  1209,   976,   988,   493,   989,   990,   813,  1073,
     1865     586,   606,   994,   803,  1002,  1031,  1040,  1007,   587,  1093,
     1866    1008,  1009,     2,   198,     4,     5,     6,     7,  1010,  1011,
     1867    1012,   312,  1013,  -391,  -390,   845,  1453,  1080,   693,   103,
     1868    1075,   576,  1086,   445,    60,   315,  1087,  1423,  1090,   809,
     1869     220,  1089,     8,     9,    10,    11,    12,  -276,  1091,  1092,
     1870    1096,  1097,  1098,  1106,     8,     9,    10,    11,    12,  1099,
     1871     493,   493,   843,   211,   203,   212,   726,   576,   730,    30,
     1872      34,  1100,    35,   852,   106,  1058,  1116,   748,  1117,  1118,
     1873    1121,    30,  1213,   970,  1124,  1129,    53,  1126,    46,  1503,
     1874    1453,  1152,    33,  1155,    36,  1178,   168,   169,    39,  1166,
     1875    1179,  1181,  1180,   205,    33,    40,    41,   497,  1182,  1108,
     1876    1196,  1109,  1197,  1199,  1200,  1130,  1130,  1130,   704,  1208,
     1877     513,   514,  1214,    -3,  1219,    67,  1225,  1226,   704,  -277,
     1878     354,    66,   534,   938,  1240,   586,     8,     9,    10,    11,
     1879      12,  1236,    74,   939,   704,  1247,   481,   106,   160,  1245,
     1880    1250,   436,  1439,  1254,  1258,  1261,    36,  1263,   177,  1265,
     1881      39,   514,  1268,    30,  1269,   705,   421,    40,    41,  1270,
     1882    1274,    53,  1352,  1281,  1058,  1286,  1291,  1299,  1292,  1329,
     1883     103,   476,  1323,  1356,  1357,  1358,    33,  1302,  1303,  1317,
     1884    1305,  1306,   674,  1324,   392,   580,   811,  1335,   514,  1313,
     1885     675,   103,   676,   460,  1108,   422,  1109,  1337,  1341,  1342,
     1886      67,   380,  1343,   866,   381,  1349,  1195,   382,  1350,   383,
     1887    1351,  1353,   384,   385,  1361,   386,   103,    74,  1362,  1363,
     1888    1364,  1309,  1058,  1393,  1371,  1058,  1375,  1372,  1382,  1438,
     1889    1385,  1388,  1386,   106,  1389,  1398,  1383,  1394,    46,  1516,
     1890    1399,  1406,  1402,   388,   389,  1407,   316,    46,    46,  1411,
     1891    1412,  -278,  1130,  1130,  -392,  1415,  1426,  1003,     8,     9,
     1892      10,    11,    12,   647,   648,  1432,   924,  1430,  1440,    36,
     1893    1058,   177,   927,    39,  1443,  1058,   103,  1447,    63,   113,
     1894      40,    41,  1448,  1449,   493,    30,  1450,  1366,  1466,    93,
     1895     705,  1452,  1457,  1462,  1468,  1108,   713,  1109,  1464,  1471,
     1896     705,  1058,   809,   315,  1472,   674,  1474,   392,    33,    63,
     1897     141,   103,  1475,  1487,  1495,   676,   705,  1476,    53,  1501,
     1898      93,  1499,   155,   145,  1502,    53,  1522,   146,   147,  1525,
     1899    1509,   144,  1534,    93,  1532,  1540,   717,  1546,   889,   780,
     1900     704,   704,   781,  1518,   213,    46,   783,   493,   493,   182,
     1901     782,   784,    93,  1253,  1058,    93,  1316,    67,  1429,  1058,
     1902     767,   768,   769,  1195,    67,    60,    46,    46,    53,   156,
     1903    1195,  1504,  1548,  1058,    74,  1058,  1384,  1520,  1248,  1058,
     1904     249,    74,  1058,   210,   106,  1249,   713,    46,  1058,   355,
     1905    1218,  1490,  1058,  1491,   476,  1110,   312,   704,   704,   514,
     1906    1094,   699,   921,  1125,  1095,   106,   671,    67,   672,   800,
     1907    1039,   873,   103,  1195,  1105,   944,   160,   442,  1330,   718,
     1908     952,   317,  1519,   809,    74,     0,   717,     0,     0,   332,
     1909     106,     0,    93,   103,     0,     0,     0,     0,     0,     0,
     1910     103,  1144,    36,   843,    93,   627,    39,     0,     0,     0,
     1911     460,  1043,     0,    40,    41,     0,     0,   387,     0,     0,
     1912       0,  1545,     0,     0,     0,     0,     0,   379,   182,     0,
     1913       0,   405,     0,  1550,   141,   411,     0,     0,    42,     0,
     1914     155,     0,    36,   103,   177,   210,    39,     0,   143,     0,
     1915     106,    93,     0,    40,    41,     0,     0,     0,     0,   170,
     1916     428,     0,    93,     0,   431,    36,   432,   168,   169,    39,
     1917       0,   442,   442,   447,     0,     0,    40,    41,  1514,    63,
     1918     392,     0,   705,   705,   461,   106,     0,    36,  1515,     0,
     1919      93,    39,     0,     0,   468,   514,   809,     0,    40,    41,
     1920       0,   316,   411,  1494,   467,     0,     0,   627,   170,     0,
     1921       0,   170,     0,     0,     0,  1327,     0,    36,     0,     0,
     1922       0,    39,     0,   904,     0,   392,     0,     0,    40,    41,
     1923       0,   809,  1494,   905,     0,     0,     0,     0,   971,   705,
     1924     705,   442,     0,     0,   704,     0,     0,     0,     0,     0,
     1925     207,     0,  1266,   720,     0,   704,   704,   704,   315,  1144,
     1926       0,     0,    72,   721,   577,     0,    93,   460,     0,     0,
     1927       0,   607,     0,     0,   460,     0,     0,     0,     0,     0,
     1928     588,     0,   442,     0,   612,     0,   106,     0,   612,     0,
     1929       0,   332,     0,    72,     0,     0,     0,     0,     0,     0,
     1930     207,     0,     0,     0,     0,   704,     0,   106,     0,     0,
     1931    1043,     0,     0,     0,   106,   170,   442,   460,     0,   442,
     1932     442,     0,     0,  1229,  1230,     0,     0,     0,   214,     0,
     1933       0,     0,     0,  1144,   312,   436,   182,   461,     0,     0,
     1934       0,     0,   207,     0,     0,   442,     0,   442,  1110,     0,
     1935      36,   332,   168,   169,    39,     0,   461,   106,     0,     0,
     1936       0,    40,    41,     0,   461,     0,     0,   170,     0,     0,
     1937       0,   160,     0,     0,   170,   514,     0,     0,     0,     0,
     1938       0,     0,   206,     0,     0,   680,   358,     0,     0,     0,
     1939     700,     0,   224,   411,     0,     0,     0,  1328,     0,     0,
     1940     207,     0,     0,     0,     0,     0,     0,     0,   714,     0,
     1941      63,     0,     0,   335,     0,     0,     0,     0,   411,     0,
     1942       0,    93,   411,     0,     0,   588,   705,  1295,     0,   436,
     1943     436,  1144,   206,     0,     0,   170,   207,   705,   705,   705,
     1944     207,     0,     0,  1110,     0,     0,     0,     0,     0,     0,
     1945     332,     0,   170,     0,     0,     0,   170,   522,   523,   524,
     1946     525,   526,   527,   528,   529,   530,   531,     0,     0,     0,
     1947       0,     0,     0,     0,   206,     0,     0,     0,     0,     0,
     1948       0,   514,     0,     0,   429,     0,     0,   705,     0,     0,
     1949     532,     0,     0,   809,     0,   792,     0,     0,     0,   436,
     1950       0,     0,     0,    72,     0,     0,     0,     0,    72,     0,
     1951     802,     0,   577,     0,     0,     0,     0,     0,     0,   207,
     1952     249,     0,     0,     0,     0,   824,     0,     0,     0,   497,
     1953       0,    75,   206,     0,   815,     0,   588,     0,     0,     0,
     1954     436,     0,     0,   577,  1110,     0,     0,     0,   577,     0,
     1955       0,     0,     0,     0,   612,     0,     0,     0,   332,   332,
     1956       0,     0,    75,     0,     0,     0,     0,     0,   206,     0,
     1957       0,     0,   206,   332,  1493,     0,     0,   436,   436,     0,
     1958       0,     0,     0,     0,     0,     0,     0,     0,   487,     0,
     1959       0,   700,     0,     0,     0,   214,     0,   215,   207,     0,
     1960       0,     0,     0,  1493,   461,   436,     0,     0,     0,     0,
     1961       0,   714,     0,     0,   917,   335,     0,   588,     0,   394,
     1962       0,     0,     0,   912,     0,   680,   402,  1434,     0,   312,
    19771963       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1978       70,     0,   560,   333,   247,     0,     0,     8,     9,    10,
     1964       0,     0,     0,     0,     0,     0,     0,   461,   207,     0,
     1965     332,   206,     0,   514,     0,     0,     0,     0,     0,   943,
     1966       0,    72,   411,     0,     0,     0,     0,     0,     0,   815,
     1967     588,     0,     0,     0,     0,   335,     0,     0,     0,     0,
     1968      72,     0,   337,     0,   714,     0,     0,   808,    72,   969,
     1969       0,     0,     0,     0,     0,   394,     0,     0,     0,     0,
     1970       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1971       0,   170,     0,     0,   335,     0,     8,     9,    10,    11,
     1972      12,     0,     0,     0,     0,     0,   700,   170,     0,     0,
     1973     206,     0,   335,     0,    72,     0,   700,     0,     0,   170,
     1974       0,   999,   802,    30,     0,     0,     0,   206,   249,   562,
     1975       0,     0,   700,     0,     0,     0,     0,   566,     0,     0,
     1976     570,  1016,   815,     0,   207,     0,    33,     0,     0,     0,
     1977       0,    36,    75,   588,   335,    39,     0,    75,     0,     0,
     1978     206,     0,    40,    41,     0,     0,     0,     0,     0,     0,
     1979       0,     0,     0,   249,   207,     0,     0,     0,     0,   207,
     1980       0,     0,     8,     9,    10,    11,    12,   904,     0,   392,
     1981       0,     0,     0,    63,     0,     0,   394,   905,     0,     0,
     1982     402,     0,     0,     0,     0,     0,     0,     0,     0,    30,
     1983       0,     0,     0,     0,   335,     0,     0,   802,     0,   170,
     1984       0,     0,     0,  1085,     0,     0,     0,     0,     0,     0,
     1985       0,     0,    33,   815,   588,     0,     0,    36,     0,   584,
     1986       0,    39,     0,     0,   215,     0,   680,     0,    40,    41,
     1987       0,     0,     0,     0,   680,     0,     0,  1102,     0,     0,
     1988       0,     0,   335,   335,   337,   411,   113,   207,     0,     0,
     1989       0,     0,   588,   585,     0,   586,   206,   335,     0,     0,
     1990     332,   207,     0,   587,   394,     0,     0,     0,     0,     0,
     1991       0,     0,     0,     0,   249,   335,     0,     0,     0,     0,
     1992       0,     0,     0,     0,     0,     0,   206,     0,    72,     0,
     1993      75,   206,   612,     0,   577,   335,     0,     0,     0,     0,
     1994       0,     0,     0,     0,   337,     0,     0,    77,     0,    75,
     1995       0,     0,   141,     0,     0,     0,     0,    75,   700,   700,
     1996       0,   332,   332,   332,     0,     0,     0,     0,     0,     0,
     1997       0,    72,     0,     0,   335,     0,     0,     0,    77,     0,
     1998       0,     0,  1194,   337,     0,     0,     0,     0,     0,   207,
     1999       0,     0,     0,   562,   562,     0,     0,     0,     0,     0,
     2000       0,   337,     0,    75,     0,   808,     0,     0,   335,     0,
     2001       0,     0,     0,   216,     0,   700,   700,     0,     0,   206,
     2002       0,     0,     0,     0,     0,     0,   802,   249,     0,     0,
     2003       0,     0,     0,   206,   588,     0,     0,     0,     0,     0,
     2004       0,     0,     0,   337,     0,     8,     9,    10,    11,    12,
     2005     335,     0,     0,   487,     0,     0,     0,     0,     0,     0,
     2006     335,     0,   249,     0,     0,   214,   335,     0,   120,   123,
     2007     124,     0,    30,     0,     0,     0,   335,   884,     0,     0,
     2008       0,   887,     0,   612,     0,   714,     0,     0,     0,     0,
     2009     612,   332,   332,     0,     0,    33,     0,     0,   338,   808,
     2010      36,     0,   177,   337,    39,   562,     0,     0,     0,     0,
     2011       0,    40,    41,     0,     0,     0,     0,   394,     0,     0,
     2012       0,   206,     0,     0,     0,     0,     0,     0,     0,     0,
     2013       0,     0,     0,  1296,     0,     0,   178,    72,   244,     0,
     2014     245,     0,     0,     0,     0,     0,   179,     0,     0,     0,
     2015     332,   337,   337,     0,    63,     0,     0,     0,     0,     0,
     2016       0,   335,     0,     0,   612,     0,   337,     0,     0,     0,
     2017      54,    54,     0,   700,     0,   714,     0,     0,     0,   113,
     2018       0,     0,     0,     0,   337,     0,   207,     0,    77,     0,
     2019       0,     0,     0,    77,     0,     0,     0,    75,     0,     0,
     2020       0,    54,   700,     0,   337,     0,     0,     0,     0,     0,
     2021       0,     0,     0,   700,   700,   700,     0,     0,   377,     0,
     2022       0,     0,     0,     0,   335,   332,   332,   396,   397,   562,
     2023       0,     0,   401,    54,   403,   404,    54,     0,     0,  1194,
     2024      75,     0,     0,   337,    84,     8,     9,    10,    11,    12,
     2025      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2026      23,    24,   612,   700,    25,    26,    27,   473,   474,   475,
     2027       0,     0,    30,     0,   113,    84,     0,   337,     0,     0,
     2028     216,     0,   335,   335,     0,   335,   335,   335,     0,     0,
     2029       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2030     338,     0,    37,    38,     0,     0,    72,     0,     0,     0,
     2031     217,     8,     9,    10,    11,    12,     0,     0,   206,   337,
     2032       0,   330,     0,     0,   249,     0,     0,     0,     0,   337,
     2033       0,   808,     0,     0,   215,   337,     0,     0,    30,   335,
     2034     335,   562,   562,     0,     0,   337,    77,     0,     0,   394,
     2035     335,   332,     0,     0,     0,     0,     0,     0,     0,     0,
     2036     338,    33,     0,     0,     0,    77,    36,     0,   177,     0,
     2037      39,     0,     0,    77,     0,   113,     0,    40,    41,     0,
     2038       0,   207,     0,    54,     0,     0,     0,     0,     0,     0,
     2039       0,     0,     0,     0,     0,   345,  1194,     0,     0,   338,
     2040       0,     0,   674,  1194,   392,     0,    75,     0,     0,   335,
     2041       0,    54,   676,     0,     0,   335,   335,   338,     0,    77,
     2042       8,     9,    10,    11,    12,  1141,     0,     0,     0,     0,
     2043     337,     0,     0,     0,     0,     0,     0,     0,     0,     8,
     2044       9,    10,    11,    12,  1158,     0,  1194,    30,     0,     0,
     2045       0,     0,     0,  1535,     0,     0,     0,   214,     0,   338,
     2046       0,     0,     0,   467,     0,     0,    30,     0,     0,     0,
     2047      33,     0,     0,     0,   335,    36,     0,   177,    72,    39,
     2048       0,     0,     0,   207,     0,    84,    40,    41,     0,    33,
     2049      84,   808,     0,   337,    36,     0,   177,   335,    39,   335,
     2050     170,     0,     0,     0,     0,    40,    41,     0,     0,     0,
     2051       0,   255,     0,   206,     0,     0,     0,     0,     0,   338,
     2052       0,   256,   562,   330,     0,     0,   335,  1233,     0,     0,
     2053    1514,     0,   392,     0,     0,     0,     0,   335,   335,   335,
     2054    1515,     0,     0,     0,     0,     0,     0,     0,     0,   335,
     2055     335,   337,   337,     0,   337,   337,   337,     8,     9,    10,
     2056      11,    12,     0,    72,     0,     0,     0,   338,   338,     0,
     2057       0,     0,     0,     0,     0,    75,     0,   217,     0,     0,
     2058       0,     0,   338,   330,    30,     0,     0,   335,     0,     0,
     2059       0,     0,     0,     0,     0,     0,     0,   345,     0,     0,
     2060     338,     0,     0,   794,   795,     0,     0,    33,   337,   337,
     2061       0,     0,    36,    77,     0,   206,    39,     0,     0,   337,
     2062     338,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2063       0,   829,     0,     0,   832,   833,     0,   836,     0,   838,
     2064     839,     0,    54,    84,   840,   841,     0,     0,    42,     0,
     2065       0,     0,     0,     0,     0,     0,    77,   345,   143,   338,
     2066       0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
     2067      84,     0,     0,     0,     0,   335,     0,     0,   337,     0,
     2068       0,     0,   330,     0,   337,   337,     0,     0,     0,     0,
     2069       0,     0,     0,   338,     0,     0,   345,     0,     0,     0,
     2070       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2071       0,     0,     0,     0,   345,     0,    84,     0,     0,     0,
     2072      72,     0,     0,     0,     0,     0,   215,    72,   922,   923,
     2073       0,     0,     0,     0,   925,   338,     0,     0,     0,     0,
     2074       0,     0,   330,   337,     0,   338,     0,    75,     0,     0,
     2075     216,   338,     0,     0,     0,     0,   345,     0,     0,     0,
     2076       0,   338,     0,     0,     0,     0,   337,     0,   337,     0,
     2077      72,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2078      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2079     330,   330,    25,    26,    27,   337,     0,     0,     0,     0,
     2080      30,   434,     0,     0,     0,   330,   337,   337,   337,     0,
     2081       0,     0,     0,     0,     0,     0,   345,     0,   337,   337,
     2082       0,     0,    77,    33,     0,     0,     0,     0,     0,     0,
     2083      37,    38,    75,     0,     8,     9,    10,    11,    12,     0,
     2084       0,     0,     0,     0,     0,     0,   338,     0,     0,     0,
     2085       0,     0,   122,   122,   122,     0,   337,     0,     0,     0,
     2086       0,    30,     0,     0,   345,   345,   435,     0,     0,     0,
     2087     687,     0,     0,     0,   108,     0,     0,     0,     0,   345,
     2088       0,     0,   330,     0,    33,     0,     0,     0,     0,    36,
     2089       0,     0,     0,    39,     0,     0,     0,   345,     0,     0,
     2090      40,    41,     0,     0,     0,     0,     0,     0,     0,   338,
     2091      84,     0,     0,     0,   162,     0,   166,   345,     0,   172,
     2092     173,   174,   122,   176,   122,   720,     0,     0,     0,     0,
     2093       0,     0,     0,     0,     0,   721,     0,     0,   225,     0,
     2094       0,     0,     0,     0,   337,     0,     0,     0,   265,   238,
     2095     239,     0,     0,    84,     0,     0,   345,     0,     0,     0,
     2096       0,     0,     0,     0,     0,     0,     0,   338,   338,     0,
     2097     338,   338,   338,     0,   330,     0,     0,     0,     0,     0,
     2098       0,     0,     0,     0,     0,     0,     0,     0,     0,    75,
     2099     345,    77,     0,     0,     0,     0,    75,     0,     0,     0,
     2100       0,     0,   122,     0,     0,     0,     0,     0,     0,   122,
     2101       0,   122,   122,     0,     0,   327,   122,     0,   122,   122,
     2102       0,     0,     0,     0,   338,   338,     0,     0,     0,     0,
     2103       0,     0,   345,     0,     0,   338,     0,     0,     0,    75,
     2104       0,     0,   345,     0,     0,    54,     0,   217,   345,     0,
     2105       0,     0,     0,     0,     0,     0,     0,     0,   345,     0,
     2106       0,     0,     0,     0,     0,     0,     0,     0,  1014,   330,
     2107       0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
     2108       0,     0,     0,     0,     0,   122,     0,     0,     0,     0,
     2109       0,     0,     0,     0,   338,     0,     0,   271,    30,   272,
     2110     338,   338,     0,     0,     0,     0,     0,     0,     0,     0,
     2111       0,     0,     0,     0,     0,     0,     0,     0,    54,    84,
     2112     273,    33,  1223,     0,     0,     0,   274,     0,     0,     0,
     2113     275,     0,   330,   276,   277,   278,   279,    40,    41,     0,
     2114     280,   281,   216,   345,     0,     0,     0,     0,   282,     0,
     2115       0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
     2116       0,     0,   283,    77,   361,     0,     0,     0,     0,     0,
     2117       0,   285,   890,   287,   288,   289,   290,     0,     0,     0,
     2118       0,     0,   338,     0,   338,     0,     0,     0,     0,     0,
     2119     575,     0,   583,   330,   330,   330,     0,     0,     0,     0,
     2120       0,     0,     0,   608,   609,     0,   345,     0,     0,     0,
     2121       0,   338,     0,     0,    54,     0,     0,   619,     0,     0,
     2122       0,     0,   338,   338,   338,     0,     0,     0,     0,     0,
     2123       0,     0,     0,     0,   338,   338,     0,     0,     0,     0,
     2124       0,     0,     0,     0,     0,     0,     0,     0,    77,     0,
     2125       0,     0,     0,     0,     0,     0,  1315,     0,   330,     0,
     2126       0,     0,     0,     0,   345,   345,     0,   345,   345,   345,
     2127       0,     0,   338,     0,     0,     0,     0,   662,     0,     0,
     2128       0,     0,     0,     0,     0,     0,     0,     0,    84,     0,
     2129       0,     0,   197,     2,   198,     4,     5,     6,     7,     8,
     2130       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2131      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2132      27,   345,   345,   330,   330,     0,    30,     0,     0,     0,
     2133       0,     0,   345,     0,     0,     0,     0,     0,     0,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2135       0,    34,     0,    35,     0,     0,   199,   200,     0,     0,
     2136     338,     0,     0,     0,    54,    54,     0,     0,     0,     0,
     2137       0,     0,     0,     0,     0,     0,   755,     0,     0,     0,
     2138       0,     0,   330,     0,     0,     0,    54,   122,   122,     0,
     2139       0,   345,   201,     0,     0,     0,     0,   345,   345,     0,
     2140     261,     0,     0,     0,     0,    77,     0,     0,     0,     0,
     2141       0,    54,    77,     0,     0,   122,     0,     0,   122,   122,
     2142       0,   122,     0,   122,   122,     0,     0,     0,   122,   122,
     2143       0,     0,     0,     0,     0,     0,   801,     0,     0,   217,
     2144       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2145       0,     0,     0,     0,     0,    77,   345,   330,   330,     0,
     2146      84,     0,     0,     0,     0,     0,    54,     0,     0,     0,
     2147       0,    54,     0,     0,     0,     0,     0,     0,     0,   345,
     2148       0,   345,     0,     0,     0,     0,     0,   862,     0,     8,
     2149       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2150      19,    20,    21,    22,    23,    24,    54,   122,   345,     0,
     2151       0,     0,   122,   122,     0,   891,    30,     0,   122,   345,
     2152     345,   345,     0,     0,     0,     0,     0,     0,     0,     0,
     2153       0,   345,   345,   906,   907,     0,     0,   911,     0,    33,
     2154       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
     2155       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2156       0,     0,     0,     0,     0,   931,     0,   932,     0,   345,
     2157       0,     0,     0,     0,   935,   936,     0,     0,     0,   941,
     2158       0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
     2159       0,   946,     0,     0,     0,     0,   950,     0,     0,     0,
     2160       0,     0,     0,     0,     0,     0,     0,    54,     0,     0,
     2161     967,     0,     0,     0,     0,   271,     0,   272,     0,   204,
     2162     978,     0,     0,     0,     0,     0,     0,     0,    54,   223,
     2163       0,   227,     0,   229,     0,    54,     0,     0,   273,     0,
     2164     236,     0,     0,     0,   274,     0,     0,     0,   275,     0,
     2165       0,   276,   277,   278,   279,    40,    41,   345,   280,   281,
     2166       0,     0,     0,     0,     0,     0,   282,     0,  1000,   204,
     2167       0,   227,   229,   236,     0,     0,     0,     0,    54,     0,
     2168     283,     0,   361,     0,     0,     0,     0,  1015,     0,   285,
     2169     363,   287,   288,   289,   290,     0,     0,   204,     0,     0,
     2170       0,     0,    84,  1210,     0,     0,     0,     0,     0,    84,
     2171       0,   204,     0,     0,     0,     0,     0,     0,     0,     0,
     2172    1026,     0,  1027,  1028,  1029,     0,     0,  1032,   862,     0,
     2173       0,   151,     0,     0,     0,     0,     0,     0,     0,     0,
     2174       0,   271,  1074,   272,     0,     0,     0,     0,     0,     0,
     2175       0,     0,    84,     0,   575,     0,     0,  1081,     0,     0,
     2176       0,     0,     0,  1082,   273,     0,     0,     0,     0,   204,
     2177     274,   227,   229,   236,   275,     0,   241,   276,   277,   278,
     2178     279,    40,    41,     0,   280,   281,   246,     0,     0,     0,
     2179       0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
     2180       0,  1101,     0,     0,     0,   204,   283,     0,   361,   204,
     2181       0,   362,     0,     0,     0,   285,   363,   287,   288,   289,
     2182     290,     0,     0,     0,     0,   485,   755,     0,     0,     0,
     2183       0,     0,     0,     0,     0,     0,     0,     0,     0,  1127,
     2184     353,     0,     0,     0,   862,     0,     0,  1135,     0,     0,
     2185       0,  1139,     0,   367,     0,     0,  1143,     0,     0,     0,
     2186    1148,  1149,  1150,     0,     0,     0,     0,     0,     0,     0,
     2187    1156,     0,     0,   204,     0,   399,     0,     0,     0,     0,
     2188    1169,     0,     0,     0,     0,     0,     0,     0,   204,   413,
     2189       0,     0,     0,   227,   229,     0,     0,   418,     0,  1185,
     2190    1186,   236,     0,     0,     0,     0,   122,   426,     0,     0,
     2191       0,     0,     0,     0,     0,     0,     0,     0,   433,     0,
     2192       0,     0,     0,     0,  1215,     0,     0,  1217,     0,     0,
     2193     452,     0,     0,     0,     0,   462,     0,     0,     0,     0,
     2194       0,     0,     0,   204,     0,     0,     0,     0,   470,     0,
     2195       0,     0,  1231,     0,   480,     0,   484,     0,     0,     0,
     2196       0,   204,     0,     0,     0,     0,     0,   204,     0,     0,
     2197       0,  1238,   512,     0,     0,     0,     0,  1242,  1243,     0,
     2198       0,     0,     0,     0,   204,     0,  1251,   204,   204,     0,
     2199       0,     0,  1255,     0,     0,  1259,     0,  1260,     0,     0,
     2200    1262,     0,     0,   204,     0,     0,     0,     0,     0,     0,
     2201       0,   862,     0,   572,     0,  1271,     0,   204,     0,     0,
     2202       0,     0,     0,     0,   204,     0,     0,     0,     0,     0,
     2203       0,   271,  1280,   272,  1282,  1283,  1284,  1285,     0,     0,
     2204     122,     0,   620,     0,     0,     0,   621,   622,     0,   623,
     2205       0,  1293,     0,  1294,   273,   633,   634,   166,   635,   636,
     2206     274,   637,     0,   638,   275,     0,     0,   276,   277,   278,
     2207     279,    40,    41,     0,   280,   281,  1314,     0,     0,     0,
     2208     651,     0,   282,     0,     0,  1319,  1320,     0,   653,     0,
     2209       0,     0,     0,     0,     0,     0,   283,     0,   361,     0,
     2210       0,     0,     0,     0,   785,   285,   363,   287,   288,   289,
     2211     290,     0,   666,     0,     0,     0,     0,     0,     0,     0,
     2212       0,     0,     0,   673,     0,     0,     0,     0,     0,     0,
     2213       0,     0,     0,   204,     0,     0,  1354,  1355,     0,     0,
     2214       0,     0,  1359,  1360,     0,     0,   709,     0,     0,     0,
     2215       0,     0,   712,  1370,     0,     0,     0,   452,     0,     0,
     2216       0,     0,     0,   204,     0,     0,     0,     0,   204,   197,
     2217       2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
     2218      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2219      22,    23,    24,   746,     0,    25,    26,    27,     0,     0,
     2220       0,     0,     0,    30,  1401,     0,     0,     0,   762,     0,
     2221       0,     0,     0,     0,     0,     0,  1405,     0,     0,     0,
     2222    1408,  1409,  1410,     0,     0,     0,    33,     0,    34,     0,
     2223      35,    36,  1414,   199,   200,    39,     0,     0,     0,     0,
     2224       0,  1425,    40,    41,   788,     0,     0,     0,     0,     0,
     2225       0,     0,     0,   798,     0,   799,   204,  1436,     0,     0,
     2226       0,   804,     0,   271,     0,   272,     0,    42,     0,   201,
     2227     204,     0,     0,     0,   823,     0,     0,   202,     0,     0,
     2228       0,     0,     0,     0,     0,     0,   273,     0,     0,     0,
     2229     485,     0,   624,     0,   135,   136,   275,     0,     0,   276,
     2230     277,   278,   279,    40,    41,     0,   280,   281,     0,  1477,
     2231    1478,     0,     0,   864,   282,     0,     0,     0,     0,     0,
     2232       0,     0,  1483,     0,   271,     0,   272,     0,   283,  1483,
     2233     625,     0,   626,   362,     0,     0,     0,   285,   363,   287,
     2234     288,   289,   290,     0,     0,     0,     0,   273,   204,   899,
     2235       0,     0,     0,   274,     0,     0,  1513,   275,   204,     0,
     2236     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
     2237       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
     2238     204,     0,     0,     0,  1536,     0,     0,     0,   346,   283,
     2239       0,   361,     0,     0,     0,     0,   754,     0,   285,   363,
     2240     287,   288,   289,   290,     0,     0,   241,     0,     0,  1549,
     2241       0,     0,     0,     0,  1551,     0,   947,   948,     0,   395,
     2242       0,     0,     0,     0,     0,     0,   395,     0,   962,     0,
     2243       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,     0,     0,     0,   979,     0,   980,     0,     0,
     2245       0,   984,     0,     0,     0,     8,     9,    10,    11,    12,
     2246      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2247      23,    24,     0,   204,    25,    26,    27,     0,     0,     0,
     2248       0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
     2249       0,     0,     0,     0,     0,   395,     0,     0,     0,   204,
     2250       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2251      36,     0,    37,    38,    39,     0,  1020,     0,     0,     0,
     2252       0,    40,    41,  1021,     0,   204,     0,     0,     0,     0,
     2253       0,     0,     0,     0,     0,     0,  1023,     0,  1024,     0,
     2254       0,     0,     0,     0,     0,     0,    42,     0,   152,   395,
     2255       0,     0,     0,  1037,     0,   204,    44,   395,   568,  1041,
     2256     395,   571,     0,   346,     0,     0,     0,     0,   598,     0,
     2257       0,  1077,   204,     0,  1078,     0,     0,     0,     0,     0,
     2258       0,     0,     0,     0,     0,     0,   271,   616,   272,     0,
     2259     346,     0,   788,     0,     0,     0,     0,     0,  1088,     0,
     2260       0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
     2261       0,     0,     0,     0,     0,   274,   395,     0,     0,   275,
     2262     395,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2263     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2264       0,   204,     0,     0,     0,     0,     0,     0,     0,     0,
     2265     346,   283,     0,   361,     0,     0,   970,     0,   204,     0,
     2266     285,   363,   287,   288,   289,   290,     0,     0,     0,     0,
     2267       0,     0,   310,   395,     0,     0,     0,     0,     0,     0,
     2268       0,   328,     0,  1147,     0,     0,     0,     0,     0,  1153,
     2269    1154,     0,     0,   364,     0,     0,     0,     0,     0,   492,
     2270     496,   492,   499,     0,   395,     0,     0,   346,     0,   502,
     2271     503,     0,     0,     0,   492,   492,     0,     0,     0,     0,
     2272       0,     0,     0,     0,     0,     0,   492,     0,     0,     0,
     2273       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2274       0,     0,     0,     0,     0,  1212,   395,     0,     0,   346,
     2275     204,  1216,     0,     0,     0,   492,     0,     0,     0,     0,
     2276       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2277      18,    19,    20,    21,    22,    23,    24,  -279,     0,    25,
     2278      26,    27,     0,     0,   466,     0,  1235,    30,     0,     0,
     2279       0,  1237,   492,   395,   395,     0,     0,     0,     0,  1241,
     2280       0,     0,     0,     0,     0,     0,     0,     0,     0,   346,
     2281      33,   346,     0,     0,     0,     0,     0,    37,    38,   810,
     2282       0,  -279,   598,     0,   598,   598,     0,     0,  1264,     0,
     2283       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
     2284       0,   842,   346,     0,     0,  1275,     0,   346,  1276,     0,
     2285    1277,  1025,   204,   567,     0,     0,     0,   346,   346,     0,
     2286       0,   108,     0,     0,     0,     0,     0,  1287,  1288,     0,
     2287       0,     0,   346,     0,     0,     0,     0,   395,   885,     0,
     2288       0,   395,   888,   328,     0,     0,     0,     0,  1301,     0,
     2289       0,     0,   364,     0,     0,     0,     0,     0,     0,     0,
     2290       0,     0,     0,     0,     0,   395,     0,     0,     0,     0,
     2291     346,   395,     0,   395,     0,     0,     0,   395,     0,     0,
     2292    1325,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2293       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2294       0,     0,   310,     0,     0,     0,     0,     0,     0,   346,
     2295     598,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2296       0,     0,     0,   310,   492,   492,   492,   492,   492,   492,
     2297     492,   492,   492,   492,   492,   492,   492,   492,   492,   492,
     2298     492,   492,     0,   346,     0,     0,     0,   395,   395,     0,
     2299       0,     0,   711,     0,     0,     0,     0,     0,     0,     0,
     2300       0,     0,     0,   492,     0,     0,     0,  1167,     0,     0,
     2301       8,     9,    10,    11,    12,     0,     0,     0,     0,  1395,
     2302       0,  1396,     0,     0,     0,     0,     0,     0,     0,   395,
     2303     743,     0,  1403,     0,  1404,     0,   271,    30,   272,     0,
     2304       0,   346,   756,     0,     0,     0,     0,     0,     0,   743,
     2305     598,     0,   598,     0,  1413,     0,     0,     0,     0,   273,
     2306      33,   598,   765,   766,     0,   274,     0,     0,     0,   275,
     2307    1431,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2308     281,     0,  1437,     0,   787,  1241,     0,   282,     0,     0,
     2309       0,   204,   810,     0,   796,     0,     0,     0,     0,     0,
     2310       0,   283,   756,   361,   492,     0,     0,  1458,     0,     0,
     2311     285,  1168,   287,   288,   289,   290,  1465,     0,     0,  1467,
     2312    1469,     0,     0,     0,     0,     0,   492,     0,     0,     0,
     2313       0,     0,     0,     0,     0,     0,   346,     0,     0,   492,
     2314       0,   395,   395,     0,     0,     0,     0,     0,     0,   395,
     2315       0,     0,     0,   863,   395,     0,     0,  1496,     0,     0,
     2316     364,  1241,   395,     0,     0,     0,     0,     0,     0,     0,
     2317       0,     0,     0,  1508,     0,   598,   598,     0,     0,     0,
     2318       0,   328,   492,     0,     0,     0,     0,     0,     0,     0,
     2319       0,     0,     0,     0,     0,     0,     0,     0,     0,   346,
     2320       0,     0,     0,   328,     0,     0,   395,     0,     0,     0,
     2321       0,     0,     0,   810,   492,     0,     0,     0,     0,     0,
     2322       0,     0,     0,     0,     0,   395,  1142,     0,     0,     0,
     2323       0,  1145,     0,   346,     0,     0,     0,     0,     0,     0,
     2324       0,     0,     0,     0,   395,  1159,     0,   598,   598,  1164,
     2325       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2326     346,   346,   346,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,     0,   756,     0,   968,     0,
     2328       0,     0,     0,     0,   973,     0,     0,     0,     0,     0,
     2329       0,     0,   983,     0,     8,     9,    10,    11,    12,    13,
     2330      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2331      24,  -279,     0,    25,    26,    27,     0,  1224,     0,   492,
     2332       0,    30,   395,     0,     0,   346,   810,   395,  1234,   328,
     2333       0,     0,   997,   998,   328,   271,     0,   272,     0,   598,
     2334       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2335       0,    37,    38,   328,     0,  -279,     0,     0,   273,     0,
     2336       0,   810,     0,     0,   274,     0,     0,     0,   275,     0,
     2337       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2338       0,     0,     0,     0,   346,  1025,   282,   567,     0,  1145,
     2339     346,   346,     0,     0,  1035,   610,     0,     0,   364,     0,
     2340     283,     0,   361,     0,     0,     0,     0,     0,     0,   285,
     2341     363,   287,   288,   289,   290,   492,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,   492,     0,     0,     0,   328,
     2343       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2344      17,    18,    19,    20,    21,    22,    23,    24,     0,   346,
     2345      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2346       0,     0,     0,  1145,     0,     0,     0,     0,     0,     0,
     2347       0,     0,     0,   492,   346,     0,     0,     0,     0,   310,
     2348       0,    33,     0,     0,     0,     0,     0,     0,   199,   200,
     2349       0,     0,  1122,  1123,     0,     0,     0,     0,     0,     0,
     2350     364,     0,     0,     0,     0,     0,     0,   973,     0,     0,
     2351    1133,     0,   743,     0,     0,   271,     0,   272,     0,     0,
     2352       0,     0,     0,     0,   346,   346,     0,     0,     0,  1151,
     2353       0,     0,   261,     0,     0,     0,     0,     0,   273,     0,
     2354       0,     0,     0,     0,   274,     0,  1170,   492,   275,     0,
     2355       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2356       0,  1145,     0,     0,     0,     0,   282,     0,     0,   364,
     2357       0,  1189,     0,     0,     0,     0,     0,     0,     0,     0,
     2358     283,     0,   361,     0,     0,     0,  1211,     0,     0,   285,
     2359     710,   287,   288,   289,   290,     0,     0,   492,     0,     0,
     2360       0,     0,     0,     0,     0,  1220,     0,     0,     0,     0,
     2361       0,     0,   492,   492,     0,     0,     0,     0,   756,     0,
     2362       0,     0,  -501,   810,     0,     1,     2,     3,     4,     5,
     2363       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2364      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2365     346,    25,    26,    27,    28,     0,   973,    29,     0,    30,
     2366      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2367       0,   271,     0,   272,     0,     0,     0,   863,     0,    32,
     2368       0,     0,    33,     0,    34,     0,    35,    36,     0,    37,
     2369      38,    39,     0,     0,   273,  1278,     0,  1279,    40,    41,
     2370     624,     0,     0,     0,   275,     0,     0,   276,   277,   278,
     2371     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
     2372       0,     0,   282,    42,     0,    43,     0,     0,     0,     0,
     2373     395,     0,     0,    44,     0,     0,   283,     0,   759,     0,
     2374       0,     0,   756,     0,     0,   285,   363,   287,   288,   289,
     2375     290,   395,   395,     0,     0,     0,     0,   310,     0,     0,
     2376       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2377       0,     0,   395,     0,     0,     0,     0,     0,     0,     0,
     2378     973,     0,     0,     1,     2,   198,     4,     5,     6,     7,
     2379       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2380      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2381      26,    27,    28,     0,     0,    29,   271,    30,  1044,  1045,
     2382       0,  1046,     0,     0,  1047,  1048,  1049,  1050,  1051,  1052,
     2383    1053,  1054,     0,  1055,     0,     0,  1056,    32,     0,   273,
     2384      33,     0,    34,     0,    35,   624,   492,    37,    38,   275,
     2385       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2386     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2387       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2388       0,   283,     0,  1057,     0,     0,   165,     0,     0,     0,
     2389     285,   286,   287,   288,   289,   290,     0,     0,     0,     0,
     2390       0,     0,     0,     0,  -126,     0,     0,     0,     0,   492,
     2391     492,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2392       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2393       0,     0,  1444,     0,     0,     0,     0,     0,     1,     2,
     2394     198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2395      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2396      23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
     2397      29,   271,    30,   272,     8,     9,    10,    11,    12,    13,
     2398      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2399      24,  -279,     0,     0,   273,    33,     0,    34,     0,    35,
     2400     274,    30,    37,    38,   275,     0,  1500,   276,   277,   278,
     2401     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
     2402       0,     0,   282,     0,    33,     0,     0,     0,     0,     0,
     2403       0,     0,     0,     0,     0,  -279,   283,     0,  1057,     0,
     2404       0,     0,     0,     0,     0,   285,   286,   287,   288,   289,
     2405     290,     0,   310,     0,     0,     0,     0,     0,     0,  -126,
     2406       1,     2,   198,     4,     5,     6,     7,     8,     9,    10,
    19792407      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    1980       21,    22,    23,    24,    61,     0,    25,    26,    27,     0,
    1981        0,     0,     0,     0,    30,     0,     0,   333,     0,     0,
    1982        0,     0,     0,     8,     9,    10,    11,    12,   800,     0,
    1983      806,     0,     0,   204,  1083,     0,     0,    33,     0,     0,
    1984        0,     0,    34,     0,    35,    36,    37,   204,     0,     0,
    1985       30,     0,   335,    38,    39,     0,     0,     0,     0,   333,
    1986        0,     0,     0,     0,     0,     0,     0,   485,  1100,   333,
    1987        0,     0,     0,    33,   212,   333,   409,   111,    40,     0,
    1988      150,     0,     0,     0,     0,   333,     0,     0,    42,     0,
    1989        0,   330,     0,     0,   560,   560,     0,     0,     0,     0,
    1990        0,     0,   392,     0,     0,   247,     0,    75,     0,     8,
    1991        9,    10,    11,    12,   936,     0,   584,     0,     0,     0,
    1992        0,     0,     0,   610,   937,   575,     0,     0,     0,     8,
    1993        9,    10,    11,    12,     0,   204,    30,     0,    75,     0,
    1994        0,     0,    73,   139,     0,     0,    70,    73,     0,   698,
    1995      698,     0,   330,   330,   330,     0,    30,     0,     0,    33,
    1996        0,     0,     0,     0,    34,     0,   175,     0,    37,     0,
    1997      333,   214,     0,  1192,     0,    38,    39,     0,  1139,    33,
    1998        0,     0,     0,     0,    34,     0,     0,     0,    37,     0,
    1999      806,     0,     0,     0,     0,    38,    39,  1156,     0,   168,
    2000     1512,     0,   390,   313,     0,     0,   698,   698,     0,     0,
    2001     1513,     0,     0,     0,     0,     0,     0,   800,   247,     0,
    2002      718,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2003      719,   792,   793,   333,   213,     0,     0,     0,     0,     0,
     2408      21,    22,    23,    24,     0,     0,    25,    26,    27,    28,
     2409       0,     0,    29,   271,    30,   272,     8,     9,    10,    11,
     2410      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2411      22,    23,    24,  -280,     0,     0,   273,    33,     0,    34,
     2412       0,    35,   274,    30,    37,    38,   275,     0,     0,   276,
     2413     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2414       0,     0,     0,     0,   282,     0,    33,     0,     0,     0,
     2415       0,     0,     0,     0,     0,     0,     0,  -280,   283,     0,
     2416      43,     0,     0,     0,     0,     0,     0,   285,   286,   287,
     2417     288,   289,   290,     2,   198,     4,     5,     6,     7,     8,
     2418       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2419      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2420      27,     0,     0,     0,     0,   271,    30,   272,     0,     0,
    20042421       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2005        0,     0,     0,   247,   335,     0,   336,     0,     0,   827,
    2006        0,     0,   830,   831,     0,   834,     0,   836,   837,     0,
    2007        0,     0,   838,   839,   610,   560,   712,     0,     0,     0,
    2008     1231,   610,   330,   330,     0,     0,     0,     0,     0,     0,
    2009        0,   333,   333,     0,   333,   333,   333,     0,     0,     0,
    2010       73,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2011        0,     0,     0,     0,   335,    70,     0,     0,     0,    73,
    2012        0,     0,     0,     0,  1294,     0,     0,    73,     0,     0,
    2013        0,     0,   204,     0,     0,     0,     0,     0,     0,     0,
    2014        0,   330,     0,     0,     0,    61,    75,     0,   333,   333,
    2015        0,    75,     0,   335,     0,   610,   920,   921,     0,   333,
    2016        0,     0,   923,     0,   698,     0,   712,     0,     0,     0,
    2017      111,   335,     0,    73,     0,     0,     8,     9,    10,    11,
     2422       0,     0,     0,     0,     0,     0,     0,     0,   273,    33,
     2423       0,    34,     0,    35,   274,     0,    37,    38,   275,     0,
     2424       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2425       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
     2426       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2427     283,     0,   325,    -3,     0,     0,     0,   754,     0,   285,
     2428     326,   287,   288,   289,   290,     2,   198,     4,     5,     6,
     2429       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2430      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2431      25,    26,    27,     0,     0,     0,     0,   271,    30,   272,
     2432       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2433       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2434     273,    33,     0,    34,     0,    35,   274,     0,    37,    38,
     2435     275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
     2436     280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
     2437       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2438       0,     0,   283,     0,   910,    -3,     0,     0,     0,   754,
     2439       0,   285,   326,   287,   288,   289,   290,     2,   198,     4,
     2440       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2441      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2442       0,     0,    25,    26,    27,     0,     0,     0,     0,   271,
     2443      30,   272,     0,     0,     0,     0,     0,     0,     0,     0,
     2444       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2445       0,     0,   273,    33,     0,    34,     0,    35,   274,     0,
     2446      37,    38,   275,     0,     0,   276,   277,   278,   279,    40,
     2447      41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
     2448     282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2449       0,     0,     0,     0,   283,     0,   910,    -3,     0,     0,
     2450       0,   754,     0,   285,   574,   287,   288,   289,   290,     2,
     2451     198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2452      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2453      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2454       0,   271,    30,   272,     0,     0,     0,     0,     0,     0,
     2455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2456       0,     0,     0,     0,   273,    33,     0,    34,     0,    35,
     2457     274,     0,    37,    38,   275,     0,     0,   276,   277,   278,
     2458     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
     2459       0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
     2460       0,     0,     0,     0,     0,     0,   283,     0,   325,    -3,
     2461       0,     0,     0,     0,     0,   285,   326,   287,   288,   289,
     2462     290,     2,   198,     4,     5,     6,     7,     8,     9,    10,
     2463      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2464      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2465       0,     0,     0,   271,    30,   272,     0,     0,     0,     0,
     2466       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2467       0,     0,     0,     0,     0,     0,   273,    33,     0,    34,
     2468       0,    35,   274,     0,    37,    38,   275,     0,     0,   276,
     2469     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2470       0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,     0,     0,   283,     0,
     2472     910,    -3,     0,     0,     0,     0,     0,   285,   326,   287,
     2473     288,   289,   290,     2,   198,     4,     5,     6,     7,     8,
     2474       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2475      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2476      27,     0,     0,     0,     0,   271,    30,   272,     0,     0,
     2477       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2478       0,     0,     0,     0,     0,     0,     0,     0,   273,    33,
     2479       0,    34,     0,    35,   274,     0,   199,   200,   275,     0,
     2480       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2481       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
     2482       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2483     283,     0,   995,     0,     0,     0,     0,     0,     0,   285,
     2484     996,   287,   288,   289,   290,     2,   198,     4,     5,     6,
     2485       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2486      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2487      25,    26,    27,     0,     0,     0,     0,   271,    30,   272,
     2488       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2489       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2490     273,    33,     0,    34,     0,    35,   274,     0,   199,   200,
     2491     275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
     2492     280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
     2493       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2494       0,     0,   283,     0,   361,     0,     0,     0,     0,     0,
     2495       0,   285,   363,   287,   288,   289,   290,     1,     2,     3,
     2496       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2497      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2498      24,     0,     0,    25,    26,    27,    28,     0,     0,    29,
     2499       0,    30,    31,     0,     0,     0,     0,     0,     0,     0,
     2500       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2501       0,    32,     0,     0,    33,     0,    34,     0,    35,    36,
     2502       0,    37,    38,    39,     0,     0,     0,     0,     0,     0,
     2503      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
     2504       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2505       0,     0,     0,     0,     0,    42,     0,    43,     0,     0,
     2506       0,  -505,     0,     0,     0,    44,     1,     2,     3,     4,
     2507       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2508      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2509       0,     0,    25,    26,    27,    28,     0,     0,    29,     0,
     2510      30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2512      32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
     2513      37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
     2514      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516       0,     0,     0,     0,    42,     0,    43,     0,     0,     0,
     2517       0,     0,     0,     0,    44,     1,     2,   198,     4,     5,
     2518       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2519      16,    17,    18,    19,    20,    21,    22,    23,    24,  -279,
     2520       0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
     2521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2523       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2524      38,     0,     0,  -279,     1,     2,   198,     4,     5,     6,
     2525       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2526      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2527      25,    26,    27,    28,     0,    43,    29,     0,    30,     0,
     2528       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
     2529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2530       0,    33,     0,    34,     0,    35,     0,     0,    37,    38,
     2531       2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
    20182532      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2019       22,    23,    24,   698,     0,    25,    26,    27,     0,     0,
    2020        0,     0,     0,    30,   698,   698,   698,     0,     0,     0,
    2021        0,     0,     0,   335,     0,     0,   330,   330,   333,     0,
    2022        0,     0,     0,     0,   333,   333,    33,     0,     0,     0,
    2023     1192,   105,     0,    35,    36,     0,     0,     0,   214,     0,
    2024        0,     0,     0,  1492,     0,     0,     0,     0,     0,     0,
    2025        0,     0,     0,   610,   698,     0,     0,     0,   336,     0,
    2026        0,     0,     0,     0,     0,   111,   212,     0,     0,    41,
    2027        0,     0,  1492,   335,     0,     0,     0,   106,     0,     0,
    2028        0,     0,     0,   333,     0,     0,     0,    70,     0,    82,
    2029        0,     0,     0,     0,     0,     0,     0,     0,   313,     0,
    2030        0,     0,     0,     0,    75,     0,   333,     0,   333,     0,
    2031        0,     0,     0,     0,     0,   247,     0,     0,   336,     0,
    2032       82,   335,   335,    75,     0,     0,     0,   204,     0,     0,
    2033        0,    75,     0,     0,     0,   333,   335,     0,     0,     0,
    2034        0,     0,   330,     0,     0,     0,   333,   333,   333,     0,
    2035        0,     0,     0,   215,   335,     0,     0,   336,   333,   333,
    2036        0,     0,     0,     0,     0,     0,   111,    73,     0,     0,
    2037        0,     0,    70,     0,   335,   336,     0,    75,     0,     0,
    2038        0,     0,     0,     0,     0,     0,     0,  1192,     0,     0,
    2039        0,     0,     0,     0,  1192,     0,   333,     0,     0,     0,
     2533      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2534       0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
     2535       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
     2536       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2537      35,    36,     0,   199,   200,    39,     0,     0,     0,     0,
     2538       0,     0,    40,    41,     0,     0,     0,     0,     0,     0,
    20402539       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2041       73,     0,     0,   335,     0,     0,     0,   336,     0,     0,
    2042        0,     0,     0,     0,     0,     0,     0,     0,     0,   204,
    2043        0,    52,    52,     0,     0,     0,     0,  1192,   343,     0,
    2044        0,     0,     0,     0,  1533,     0,     0,   335,     0,     0,
     2540       0,     0,     0,     0,     0,     0,     0,    42,     0,   201,
     2541       0,     0,     0,     0,     0,     0,     0,   202,     2,   198,
     2542       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2543      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2544      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2545       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    20452546       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2046        0,     0,    52,     0,     0,     0,     0,     0,     0,     0,
    2047        0,     0,     0,   120,   120,   120,     0,   336,     0,     0,
    2048        0,     0,     0,     0,   333,     0,     0,     0,     0,   335,
    2049        0,     0,    52,     0,     0,    52,     0,     0,     0,   335,
    2050        0,     0,     0,     0,   213,   335,     0,     0,     0,     0,
    2051        0,     0,     0,     0,     0,   335,     0,     0,     0,     0,
    2052        0,     0,     0,     0,     0,   336,   336,     0,    82,    70,
    2053        0,     0,     0,    82,     0,     0,    70,     0,     0,     0,
    2054      336,   120,     0,   120,     0,     0,     0,     0,     0,     0,
    2055     1221,     0,     0,     0,     0,     0,     0,     0,   336,     0,
    2056        0,     0,     0,     0,     0,     0,     0,   263,     0,     0,
    2057        0,    75,     0,     0,     0,     0,    73,     0,   336,    70,
    2058      328,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2059       16,    17,    18,    19,    20,    21,    22,    23,    24,  -279,
    2060      335,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    2061        0,     0,     0,     0,    75,     0,     0,   336,     0,     0,
    2062      215,   120,     0,     0,     0,     0,     0,     0,   120,     0,
    2063      120,   120,    33,     0,     0,   120,     0,   120,   120,     0,
    2064      343,     0,    52,  -279,     0,     0,     0,     0,     0,     0,
    2065        0,   336,     0,     0,     0,     0,     0,     0,     0,     0,
    2066        0,     0,     0,   335,     0,     0,     0,     0,     0,     0,
    2067       52,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2068        0,     0,     0,     0,  1313,     0,    82,     0,     0,     0,
    2069        0,     0,     0,   336,     0,     0,     0,     0,     0,     0,
    2070      343,     0,     0,   336,   120,    82,     0,     0,   214,   336,
    2071        0,     0,     0,    82,     0,     0,     0,     0,     0,   336,
    2072        0,   335,   335,     0,   335,   335,   335,     0,     0,     0,
    2073        0,     0,     0,     0,     0,     0,     0,     0,     0,   343,
    2074        0,   202,     0,     0,     0,    73,     0,     0,     0,     0,
    2075        0,   221,     0,   225,     0,   227,     0,   343,     0,    82,
    2076        0,     0,   234,     0,     0,     0,     0,     0,     0,     0,
    2077        0,     0,     0,     0,     0,     0,     0,     0,   335,   335,
    2078       75,     0,   328,     0,     0,     0,     0,     0,     0,   335,
    2079        0,   202,     0,   225,   227,   234,     0,     0,     0,   343,
    2080        0,     0,     0,     0,   336,     0,     0,     0,     0,     0,
    2081        0,     0,     0,     0,     0,     0,     0,     0,     0,   202,
     2547       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
     2548       0,    37,    38,     2,   198,     4,     5,     6,     7,     8,
     2549       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2550      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2551      27,     0,     0,     0,     0,     0,    30,   661,    -3,     0,
     2552       0,     0,     0,     0,     0,   610,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2554       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
     2555       2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
     2556      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2557      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2558       0,  -388,   661,    30,     0,     0,     0,     0,     0,     0,
     2559     610,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2560       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2561      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    20822562       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2083        0,     0,     0,   202,     0,     0,     0,     0,     0,     0,
    2084        0,     0,   328,     0,   160,     0,   164,     0,   335,   170,
    2085      171,   172,     0,   174,   335,   335,     0,     0,     0,   343,
    2086        0,     0,     0,     0,     0,     0,     0,   336,   223,     0,
    2087        0,     0,     0,     0,     0,     0,     0,     0,     0,   236,
    2088      237,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2089        0,   202,     0,   225,   227,   234,   213,     0,     0,     0,
    2090        0,    52,     0,     0,     0,     0,     0,   343,   343,     0,
    2091        0,     0,     0,   335,     0,     0,     0,    73,     0,     0,
    2092        0,     0,   343,     0,     0,   336,   336,   202,   336,   336,
    2093      336,   202,     0,     0,     0,     0,   335,     0,   335,     0,
    2094      343,   328,     0,     0,     0,   325,     0,   483,     0,    75,
    2095        0,     0,     0,    82,     0,     0,     0,     0,     0,     0,
    2096      343,     0,     0,     0,     0,   335,     0,     0,     0,     0,
    2097        0,     0,     0,     0,     0,     0,   335,   335,   335,     0,
    2098        0,     0,   336,   336,     0,     0,     0,     0,   335,   335,
    2099        0,     0,     0,   336,     0,   202,    82,     0,     0,   343,
    2100        0,   328,    73,     0,     0,     0,   120,   120,     0,     0,
    2101      202,     0,     0,     0,     0,   225,   227,     0,     0,     0,
    2102        0,     0,     0,   234,     0,     0,   335,     0,     0,     0,
    2103        0,     0,     0,   343,   120,     0,     0,   120,   120,     0,
    2104      120,     0,   120,   120,     0,     0,     0,   120,   120,   328,
    2105      328,     0,   336,     0,     0,     0,     0,     0,   336,   336,
    2106        0,     0,     0,     0,   328,   202,     0,     0,     0,     0,
    2107        0,     0,     0,     0,     0,   343,     0,     0,     0,     0,
    2108        0,     0,     0,   202,     0,   343,     0,     0,     0,   202,
    2109      215,   343,     0,     0,     0,     0,     0,     0,     0,     0,
    2110      214,   343,     0,     0,     0,     0,   202,     0,     0,   202,
    2111      202,     0,     0,     0,   335,     0,     0,   336,     0,     0,
    2112      573,    75,   581,     0,     0,   202,   120,     0,     0,     0,
    2113        0,   120,   120,   606,   607,     0,     0,   120,     0,   202,
    2114      336,   328,   336,     0,     0,     0,   202,   617,     0,     0,
    2115        0,     0,     0,     0,     0,     0,     0,     0,     0,    73,
    2116        0,   269,    82,   270,     0,     0,    73,     0,     0,   336,
     2563       0,     0,     0,     0,     0,  1367,     0,     0,     0,     0,
     2564       0,     0,     0,     0,     0,     0,     0,     0,     0,   661,
     2565       0,     0,     0,     0,     0,     0,     0,   610,     2,   198,
     2566       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2567      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2568      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2569       0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
     2570      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2571       0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
     2572       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    21172573       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2118      336,   336,   336,     0,   271,     0,   343,     0,     0,     0,
    2119      272,     0,   336,   336,   273,     0,     0,   274,   275,   276,
    2120      277,    38,    39,     0,   278,   279,    75,   660,     0,    73,
    2121        0,     0,   280,     0,     0,     0,     0,     0,     0,     0,
    2122        0,     0,     0,     0,     0,     0,   281,     0,   359,     0,
    2123      336,   360,     0,   328,     0,   283,   361,   285,   286,   287,
    2124      288,     0,     0,     0,     0,     0,     0,     0,     0,   343,
    2125        0,     0,     0,     0,     0,   202,     0,  -499,     0,     0,
    2126        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
     2574       0,     0,    33,  1369,     0,     0,     0,   107,     0,    37,
     2575      38,     0,     0,     0,     0,     0,     0,   661,     0,     0,
     2576       0,     0,     0,     0,     0,   610,     2,   198,     4,     5,
     2577       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2578      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2579       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2580       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2581       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2582       0,     0,    33,     0,    34,     0,    35,     0,     0,   199,
     2583     200,     2,   198,     4,     5,     6,     7,     8,     9,    10,
    21272584      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2128       21,    22,    23,    24,     0,   202,    25,    26,    27,    28,
    2129      202,     0,    29,     0,    30,    31,     0,     0,     0,     0,
    2130        0,     0,     0,     0,    52,     0,   753,   343,   343,     0,
    2131      343,   343,   343,     0,    32,     0,     0,    33,   336,     0,
    2132        0,     0,    34,     0,    35,    36,    37,     0,   328,     0,
    2133        0,    82,     0,    38,    39,     8,     9,    10,    11,    12,
    2134       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2135       23,    24,  -280,     0,     0,     0,     0,     0,    40,     0,
    2136       41,     0,    30,    75,   343,   343,   799,     0,    42,     0,
    2137       75,     0,     0,     0,     0,   343,     0,    52,   202,     0,
    2138        0,     0,   269,     0,   270,    33,     0,     0,     0,     0,
    2139        0,   328,   202,     0,     0,     0,  -280,     0,     0,     0,
    2140        0,     0,     0,     0,     0,   271,     0,     0,     0,     0,
    2141        0,   272,   483,    75,     0,   273,     0,   860,   274,   275,
    2142      276,   277,    38,    39,     0,   278,   279,     0,     0,     0,
    2143        0,     0,     0,   280,   343,     0,     0,     0,     0,     0,
    2144      343,   343,     0,     0,     0,   889,     0,   281,     0,   359,
    2145        0,     0,   328,   328,   328,   783,   283,   361,   285,   286,
    2146      287,   288,     0,   904,   905,     0,     0,   909,     0,     0,
    2147      202,     0,     0,    52,     0,     0,     0,     0,     0,     0,
    2148      202,     0,   215,     0,     0,     0,     0,     0,     0,     0,
    2149        0,     0,     0,     0,     0,   929,     0,   930,     0,   343,
    2150        0,     0,   202,    82,   933,   934,     0,     0,     0,   939,
    2151        0,     0,     0,     0,     0,     0,     0,   328,     0,     0,
    2152        0,   944,   343,     0,   343,   120,   948,     0,     0,     0,
     2585      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2586       0,     0,     0,     0,    30,   260,     0,     0,     0,     0,
     2587       0,     0,     0,   605,     0,     0,     0,     0,     0,     0,
     2588       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2589       0,    35,     0,     0,    37,    38,     2,   198,     4,     5,
     2590       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2591      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2592       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2593     573,     0,     0,     0,     0,     0,     0,     0,   610,     0,
    21532594       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2154      965,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2155      976,   343,     0,     0,     0,     0,     0,     0,     0,     0,
    2156        0,     0,   343,   343,   343,     0,     0,     0,     0,     0,
    2157        0,     0,     0,     0,   343,   343,     0,     0,     0,     0,
    2158        0,     0,   328,   328,     0,     0,     0,     0,    82,     0,
    2159        0,     0,     0,     0,     0,   202,     0,     0,   998,     0,
     2595       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2596      38,     2,   198,     4,     5,     6,     7,     8,     9,    10,
     2597      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2598      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2599       0,     0,     0,     0,    30,   661,     0,     0,     0,     0,
     2600       0,     0,     0,   610,     0,     0,     0,     0,     0,     0,
     2601       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2602       0,    35,     0,     0,   199,   200,     8,     9,    10,    11,
     2603      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2604      22,    23,    24,     0,     0,    25,    26,    27,   473,   474,
     2605     475,     0,   271,    30,   272,     0,     0,     0,     0,     0,
     2606     201,     0,     0,     0,     0,     0,     0,     0,   261,     0,
     2607       0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
     2608       0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
     2609     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
     2610       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
     2611       0,     0,     0,     0,     0,     0,     0,   283,     0,   284,
     2612       0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
     2613     289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
     2614      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2615       0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
     2616     272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    21602617       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2161        0,     0,   343,     0,     0,     0,     0,  1013,     0,     0,
    2162        0,   202,     0,    52,    52,     0,     0,     0,     0,     0,
     2618       0,   273,    33,     0,     0,     0,     0,   274,     0,    37,
     2619      38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2620       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    21632621       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2164        0,   328,     0,     0,     0,    52,     0,   202,     0,     0,
    2165     1024,     0,  1025,  1026,  1027,     0,     0,  1030,   860,   120,
    2166        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2167       52,     0,  1072,     0,     0,     0,     0,   202,     0,     0,
    2168        0,     0,     0,     0,   573,     0,     0,  1079,     0,     0,
    2169        0,     0,     0,  1080,   202,     0,     0,     0,     0,     0,
    2170      343,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2171        0,     0,     0,     0,     0,     0,   328,   328,     0,     0,
    2172        0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
    2173       52,  1099,     0,     0,     0,     0,     0,     0,     0,     0,
    2174        0,     0,     0,     0,     0,    82,     0,     0,     0,     0,
    2175        0,     0,    82,     0,     0,     0,   753,     0,     0,     0,
    2176        0,     0,     0,   202,     0,    52,     0,     0,     0,  1125,
    2177        0,     0,     0,     0,   860,     0,   149,  1133,     0,     0,
    2178      202,  1137,     0,     0,     0,     0,  1141,     0,     0,     0,
    2179     1146,  1147,  1148,     0,     0,    82,     0,     0,     0,     0,
    2180     1154,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2181     1167,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2182        0,   239,     0,     0,     0,     0,     0,     0,     0,  1183,
    2183     1184,   244,     0,     0,     0,     0,     0,     0,     0,     0,
    2184        0,     0,   328,     0,     0,     0,     0,     0,     0,     0,
    2185        0,     0,     0,     0,  1213,     0,     0,  1215,     0,     0,
    2186        0,     0,     0,     0,     0,     0,    52,     0,     0,     0,
    2187        0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
    2188        0,     0,  1229,     0,     0,   351,     0,    52,     0,     0,
    2189        0,     0,     0,     0,    52,     0,     0,     0,   365,     0,
    2190        0,  1236,     0,     0,     0,     0,     0,  1240,  1241,     0,
    2191        0,     0,     0,     0,     0,     0,  1249,     0,     0,     0,
    2192      397,     0,  1253,     0,     0,  1257,     0,  1258,     0,     0,
    2193     1260,     0,     0,     0,   411,     0,     0,    52,     0,     0,
    2194        0,   860,   416,     0,     0,  1269,     0,     0,     0,     0,
    2195        0,     0,   424,     0,     0,     0,     0,     0,     0,     0,
    2196        0,     0,  1278,   431,  1280,  1281,  1282,  1283,     0,     0,
    2197        0,     0,     0,     0,   202,   450,     0,     0,     0,     0,
    2198      460,  1291,     0,  1292,     0,     0,     0,   164,     0,     0,
    2199        0,     0,     0,   468,     0,     0,     0,     0,     0,   478,
    2200        0,   482,     0,     0,     0,     0,  1312,     0,     0,     0,
    2201        0,     0,     0,     0,     0,  1317,  1318,   510,     0,     0,
    2202        1,     2,   196,     4,     5,     6,     7,     8,     9,    10,
    2203       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2204       21,    22,    23,    24,  -279,     0,    25,    26,    27,    28,
    2205        0,     0,    29,     0,    30,     0,     0,     0,   570,     0,
    2206        0,     0,     0,     0,     0,     0,  1352,  1353,     0,     0,
    2207        0,     0,  1357,  1358,     0,     0,     0,    33,     0,     0,
    2208        0,     0,     0,  1368,    35,    36,     0,   618,  -279,     0,
    2209        0,   619,   620,     0,   621,     0,     0,     0,     0,     0,
    2210      631,   632,     0,   633,   634,     0,   635,     0,   636,     0,
    2211        0,     0,  1012,     0,     0,     8,     9,    10,    11,    12,
    2212       41,     0,     0,     0,     0,   649,     0,     0,   106,     0,
    2213        0,     0,     0,   651,  1399,     0,     0,     0,     0,     0,
    2214        0,   269,    30,   270,     0,     0,  1403,     0,     0,     0,
    2215     1406,  1407,  1408,     0,     0,     0,     0,   664,     0,     0,
    2216        0,     0,  1412,     0,   271,    33,     0,     0,   671,     0,
    2217      272,  1423,     0,     0,   273,     0,     0,   274,   275,   276,
    2218      277,    38,    39,     0,   278,   279,     0,  1434,     0,     0,
    2219        0,   707,   280,     0,     0,     0,     0,   710,     0,     0,
    2220        0,     0,   450,     0,     0,     0,   281,     0,   359,     0,
    2221        0,     0,     0,   202,     0,   283,   888,   285,   286,   287,
    2222      288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2223        0,     0,     0,     0,     0,     0,     0,     0,   744,  1475,
    2224     1476,     0,     0,     0,     0,     0,     0,   344,     0,     0,
    2225        0,     0,  1481,   760,     0,     0,     0,     0,     0,  1481,
    2226        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2227       18,    19,    20,    21,    22,    23,    24,  -279,   393,    25,
    2228       26,    27,     0,     0,     0,   393,  1511,    30,     0,   786,
    2229        0,     0,     0,     0,     0,     0,     0,     0,   796,     0,
    2230      797,     0,     0,     0,     0,     0,   802,     0,     0,     0,
    2231       33,     0,     0,     0,  1534,     0,     0,    35,    36,   821,
    2232        0,  -279,     0,     0,     0,     0,     0,     0,     0,     0,
    2233        0,     0,     0,     0,     0,     0,     0,     0,     0,  1547,
    2234        0,     0,     0,     0,  1549,     0,     0,     0,     0,     0,
    2235        0,  1023,     0,   565,   393,     0,     0,     0,   862,     0,
    2236        0,   106,     0,     0,     0,     0,     0,     0,     0,     1,
    2237        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    2238       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2239       22,    23,    24,     0,   897,    25,    26,    27,    28,     0,
    2240        0,    29,     0,    30,    31,     0,     0,     0,   393,     0,
    2241        0,     0,     0,     0,     0,     0,   393,   566,     0,   393,
    2242      569,     0,   344,    32,     0,     0,    33,   596,     0,     0,
    2243        0,    34,     0,    35,    36,    37,     0,     0,     0,     0,
    2244        0,     0,    38,    39,     0,     0,   614,     0,     0,   344,
    2245        0,   239,     0,     0,     0,     0,     0,     0,     0,     0,
    2246        0,   945,   946,     0,     0,     0,     0,    40,     0,    41,
    2247        0,     0,     0,   960,     0,   393,     0,    42,     0,   393,
    2248        0,     0,  1165,     0,     0,     8,     9,    10,    11,    12,
    2249      977,     0,   978,     0,     0,     0,   982,     0,     0,     0,
    2250        0,     0,     0,     0,     0,     0,     0,     0,     0,   344,
    2251        0,   269,    30,   270,     8,     9,    10,    11,    12,    13,
    2252       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2253       24,     0,   393,     0,   271,    33,     0,     0,     0,     0,
    2254      272,    30,     0,     0,   273,     0,     0,   274,   275,   276,
    2255      277,    38,    39,     0,   278,   279,     0,     0,     0,     0,
    2256        0,  1018,   280,   393,    33,     0,   344,     0,  1019,     0,
    2257        0,     0,     0,     0,     0,     0,   281,     0,   359,     0,
    2258        0,  1021,     0,  1022,     0,   283,  1166,   285,   286,   287,
    2259      288,     0,     0,     0,     0,     0,     0,     0,  1035,     0,
    2260        0,     0,     0,     0,  1039,   393,     0,     0,   344,     0,
    2261        0,     0,     0,     0,     0,     0,  1075,     0,     0,  1076,
    2262        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2263        0,     0,     0,     0,     0,     0,     0,   786,     0,     0,
    2264        0,     0,     0,  1086,     0,     0,     0,     0,     0,     0,
    2265        0,     0,   393,   393,     0,     0,     0,     0,     0,     0,
    2266        0,     0,     0,     0,     0,     0,   308,     0,   344,     0,
    2267      344,     0,     0,     0,     0,   326,     0,     0,   808,     0,
    2268        0,   596,     0,   596,   596,     0,     0,   362,     0,     0,
    2269      596,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2270      840,   344,     0,     0,     0,     0,   344,     0,     0,     0,
    2271        0,     0,     0,     0,     0,     0,   344,   344,     0,     0,
    2272        0,     0,     0,     0,     0,     0,     0,     0,  1145,     0,
    2273        0,   344,     0,     0,  1151,  1152,   393,   883,     0,     0,
    2274      393,   886,     0,     0,     0,     0,     0,     8,     9,    10,
    2275       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2276       21,    22,    23,    24,   393,     0,    25,    26,    27,   344,
    2277      393,     0,   393,     0,    30,     0,   393,     0,   464,     0,
    2278        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2279     1210,     0,     0,     0,     0,     0,  1214,    33,     0,     0,
    2280        0,     0,     0,     0,   197,   198,     0,     0,   344,   596,
    2281        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2282       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2283     -279,  1233,    25,    26,    27,     0,  1235,     0,     0,     0,
    2284       30,     0,   344,     0,  1239,     0,   393,   393,   259,     0,
    2285        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2286        0,     0,     0,    33,     0,     0,     0,     0,    34,     0,
    2287      805,    36,    37,  1262,  -279,     0,     0,   326,     0,    38,
    2288       39,     0,     0,     0,     0,     0,   362,     0,   393,     0,
    2289     1273,     0,     0,  1274,     0,  1275,     0,     0,     0,     0,
    2290      344,     0,     0,     0,  1023,     0,   565,     0,     0,   596,
    2291        0,   596,  1285,  1286,   608,     0,     0,     0,     0,     0,
    2292      596,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2293        0,     0,     0,  1299,     0,     0,   308,     0,     0,     0,
    2294        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2295        0,   808,     0,     0,     0,     0,     0,   308,     0,     0,
    2296        0,     0,     0,     0,     0,  1323,     0,     0,     0,     8,
    2297        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2298       19,    20,    21,    22,    23,    24,   709,     0,    25,    26,
    2299       27,     0,     0,     0,     0,   344,    30,   432,     0,     0,
    2300      393,   393,     0,     0,     0,     0,     0,     0,   393,     0,
    2301        0,     0,     0,   393,     0,     0,     0,     0,     0,    33,
    2302        0,   393,     0,     0,   741,     0,    35,    36,     0,     0,
    2303        0,     0,     0,     0,   596,   596,   754,     0,     0,     0,
    2304        0,     0,     0,   741,     0,     0,     0,     0,     0,     0,
    2305        0,     0,     0,     0,     0,     0,   763,   764,   344,     0,
    2306        0,     0,   433,     0,  1393,   393,  1394,     0,     0,     0,
    2307      106,     0,   808,     0,     0,     0,     0,  1401,   785,  1402,
    2308        0,     0,     0,     0,   393,  1140,     0,     0,   794,     0,
    2309     1143,     0,   344,     0,     0,   269,   754,   270,     0,  1411,
    2310        0,     0,     0,   393,  1157,     0,   596,   596,  1162,     0,
    2311        0,     0,     0,     0,     0,  1429,     0,     0,   271,   344,
    2312      344,   344,     0,     0,   272,     0,     0,  1435,   273,     0,
    2313     1239,   274,   275,   276,   277,    38,    39,     0,   278,   279,
    2314        0,     0,     0,     0,     0,     0,   280,   861,     0,     0,
    2315        0,     0,  1456,     0,   362,     0,     0,     0,     0,     0,
    2316      281,  1463,   359,     0,  1465,  1467,     0,     0,     0,   283,
    2317      361,   285,   286,   287,   288,   326,  1222,     0,     0,     0,
    2318        0,   393,     0,  1208,   344,   808,   393,  1232,     0,   490,
    2319      494,   490,   497,     0,     0,     0,     0,   326,   596,   500,
    2320      501,     0,  1494,     0,   490,   490,  1239,     0,     0,     0,
    2321        0,     0,     0,     0,     0,     0,   490,     0,  1506,     0,
    2322      808,     0,     0,   269,     0,   270,     0,     0,     0,     0,
    2323        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2324        0,     0,     0,   344,     0,   490,   271,     0,  1143,   344,
    2325      344,     0,   622,     0,   133,   134,   273,     0,     0,   274,
    2326      275,   276,   277,    38,    39,     0,   278,   279,     0,     0,
    2327      754,     0,   966,     0,   280,     0,     0,     0,   971,     0,
    2328        0,     0,   490,     0,     0,     0,   981,     0,   281,     0,
    2329      623,     0,   624,   360,     0,     0,     0,   283,   361,   285,
    2330      286,   287,   288,     0,     0,     0,     0,     0,   344,     0,
    2331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332        0,     0,  1143,   326,     0,     0,   995,   996,   326,     0,
    2333        0,     0,     0,   344,     0,     0,     0,     0,     0,     0,
    2334        0,     0,     0,     0,     0,     0,     0,   326,     8,     9,
     2622       0,     0,     0,   283,     0,   505,     0,     0,   165,     0,
     2623       0,     0,   285,   286,   287,   288,   289,   290,     8,     9,
    23352624      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    23362625      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2337      471,   472,   473,     0,   269,    30,   270,     0,     0,     0,
    2338        0,     0,     0,   344,   344,     0,     0,     0,  1033,     0,
    2339        0,     0,   362,     0,     0,     0,     0,   271,    33,     0,
    2340        0,     0,     0,   272,     0,    35,    36,   273,     0,     0,
    2341      274,   275,   276,   277,    38,    39,     0,   278,   279,     0,
    2342     1143,     0,     0,   326,     0,   280,     0,     0,     0,     0,
    2343        0,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2344        0,   282,     0,     0,     0,     0,     0,     0,   283,   284,
    2345      285,   286,   287,   288,   490,   490,   490,   490,   490,   490,
    2346      490,   490,   490,   490,   490,   490,   490,   490,   490,   490,
    2347      490,   490,     0,   308,   269,     0,   270,     0,     0,     0,
    2348        0,     0,   808,     0,     0,     0,  1120,  1121,     0,     0,
    2349        0,     0,     0,   490,   362,     0,     0,   271,     0,     0,
    2350        0,   971,     0,   272,  1131,     0,   741,   273,     0,   344,
    2351      274,   275,   276,   277,    38,    39,     0,   278,   279,     0,
    2352        0,     0,     0,  1149,     0,   280,     0,     0,     0,     0,
    2353        0,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2354     1168,   359,     0,     0,     0,     0,   752,     0,   283,   361,
    2355      285,   286,   287,   288,     0,     0,     0,     0,     0,     0,
    2356        0,     0,     0,   362,     0,  1187,     0,     0,     0,     0,
     2626       0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
    23572627       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2358     1209,     0,     0,     0,   269,     0,   270,     0,     0,   393,
    2359        0,     0,     0,     0,   490,     0,     0,     0,     0,  1218,
    2360        0,     0,     0,     0,     0,     0,     0,   271,     0,     0,
    2361      393,   393,   754,   272,     0,     0,   490,   273,     0,     0,
    2362      274,   275,   276,   277,    38,    39,     0,   278,   279,   490,
    2363        0,   393,     0,     0,     0,   280,     0,     0,     0,     0,
    2364        0,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2365      971,   359,     0,     0,   968,     0,     0,     0,   283,   361,
    2366      285,   286,   287,   288,     0,     0,     0,     0,     0,     0,
    2367        0,   861,   490,     0,     0,     0,     0,     0,     0,     0,
    2368        0,     0,     0,     0,     0,     0,     0,     0,     0,  1276,
    2369        0,  1277,     0,     0,     0,     0,     0,     0,     0,     0,
    2370        0,     0,     0,     0,   490,   453,     2,   196,     4,     5,
    2371        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2628       0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
     2629       0,     0,     0,   274,     0,    37,    38,   275,     0,     0,
     2630     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
     2631       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
     2633       0,   573,    -3,     0,     0,     0,     0,     0,   285,   574,
     2634     287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
     2635      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2636      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2637     271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
     2638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2639       0,     0,     0,   273,    33,     0,     0,     0,     0,   624,
     2640       0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
     2641      40,    41,     0,   280,   281,     0,     0,     0,     0,     0,
     2642       0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
     2643       0,     0,     0,     0,     0,   283,   -35,   740,     0,     0,
     2644       0,     0,     0,     0,   285,   286,   287,   288,   289,   290,
     2645       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2646      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2647      26,    27,     0,     0,     0,     0,   271,    30,   272,     0,
     2648       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2649       0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
     2650      33,     0,     0,     0,     0,   274,     0,    37,    38,   275,
     2651       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2652     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2653       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2654       0,   283,     0,   284,     0,     0,     0,     0,     0,     0,
     2655     285,   286,   287,   288,   289,   290,     8,     9,    10,    11,
     2656      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2657      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2658       0,     0,   271,    30,   272,     0,     0,     0,     0,     0,
     2659       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2660       0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
     2661       0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
     2662     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
     2663       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
     2664       0,     0,     0,     0,     0,     0,     0,   283,     0,   152,
     2665       0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
     2666     289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
    23722667      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2373        0,    25,    26,    27,     0,     0,   754,     0,     0,    30,
     2668       0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
     2669     272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23742670       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2375        0,   308,     0,     0,     0,     0,     0,     0,     0,     0,
    2376        0,     0,    33,     0,     0,     0,     0,     0,     0,    35,
    2377       36,     0,     0,     0,   971,     0,     0,     0,     1,     2,
    2378      196,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2671       0,   273,    33,     0,     0,     0,     0,   274,     0,    37,
     2672      38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2673       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
     2674       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2675       0,     0,     0,   283,     0,   573,     0,     0,     0,     0,
     2676       0,     0,   285,   574,   287,   288,   289,   290,     8,     9,
     2677      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2678      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2679       0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
     2680       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2681       0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
     2682       0,     0,     0,   274,     0,    37,    38,   275,     0,     0,
     2683     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
     2684       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
     2685       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
     2686       0,   361,     0,     0,     0,     0,     0,     0,   285,   363,
     2687     287,   288,   289,   290,   455,     2,   198,     4,     5,     6,
     2688       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2689      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2690      25,    26,    27,     0,     0,     0,     0,     0,    30,     8,
     2691       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2692      19,    20,    21,    22,    23,    24,  -279,     0,    25,    26,
     2693      27,    33,     0,    34,     0,    35,    30,     0,    37,    38,
     2694       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2695       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2696       0,     0,     0,     0,    36,     0,   807,    38,    39,     0,
     2697    -279,     0,     0,     0,     0,    40,    41,    -3,     8,     9,
     2698      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2699      20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
     2700    1025,     0,   567,     0,     0,    30,     0,     0,     0,     0,
     2701     610,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2702      17,    18,    19,    20,    21,    22,    23,    24,    33,     0,
     2703      25,    26,    27,    36,     0,   807,    38,    39,    30,  -279,
     2704       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
     2705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2706       0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
     2707      39,   567,     0,     0,     0,     0,     0,    40,    41,   108,
     2708       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2709      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2710      26,    27,    42,     0,    43,     0,     0,    30,     0,     0,
     2711       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
     2712       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2713      33,     0,     0,     0,     0,    36,     0,   199,   200,    39,
     2714       0,     0,     0,     0,     0,     0,    40,    41,     8,     9,
     2715      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2716      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2717       0,    42,     0,   260,     0,    30,     0,     0,     0,     0,
     2718       0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
     2719       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2720       0,     0,     0,    36,     0,   807,    38,    39,     0,     0,
     2721       0,     0,     0,     0,    40,    41,     8,     9,    10,    11,
     2722      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2723      22,    23,    24,     0,     0,    25,    26,    27,     0,  1025,
     2724       0,   567,     0,    30,     0,     0,     0,     0,     0,   610,
     2725       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2726       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2727       0,    36,     0,   807,    38,    39,     0,     0,     0,     0,
     2728       0,     0,    40,    41,     8,     9,    10,    11,    12,    13,
     2729      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2730      24,     0,     0,    25,    26,    27,     0,     0,     0,   567,
     2731       0,    30,   434,     0,     0,     0,     0,   108,     0,     0,
     2732       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2733       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2734       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2735      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2736    -279,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2737      30,     0,     0,     0,     0,     0,     0,   435,     0,     0,
     2738       0,   926,     0,     0,     0,   108,     0,     0,     0,     0,
     2739       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2740      37,    38,     0,     0,  -279,     8,     9,    10,    11,    12,
    23792741      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2380       23,    24,     0,     0,    25,    26,    27,    28,    -3,   490,
    2381       29,   269,    30,  1042,  1043,     0,  1044,     0,     0,  1045,
    2382     1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,  1053,     0,
    2383        0,  1054,    32,     0,   271,    33,     0,     0,     0,     0,
    2384      622,     0,    35,    36,   273,     0,     0,   274,   275,   276,
    2385      277,    38,    39,     0,   278,   279,     0,     0,     0,     0,
    2386        0,     0,   280,     0,     0,     0,     0,     0,     0,     0,
    2387        0,     0,     0,     0,     0,     0,   281,     0,  1055,     0,
    2388        0,   163,     0,     0,     0,   283,   284,   285,   286,   287,
    2389      288,     0,     0,     0,     0,     0,     0,     0,     0,  -126,
    2390        0,     0,     0,     0,     0,   490,     0,     0,     0,     0,
    2391        0,     0,     0,     0,     0,   490,     0,     0,     0,     0,
    2392        0,     0,     0,     0,     0,     0,  1442,     0,     0,     0,
    2393        0,     0,     1,     2,   196,     4,     5,     6,     7,     8,
     2742      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2743       0,     0,    30,   434,     0,     0,   567,     0,     0,     0,
     2744       0,     0,     0,     0,   108,     0,     0,     0,     0,     0,
     2745       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2746       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2747      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2748      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2749       0,    30,   434,     0,     0,     0,     0,     0,   435,     0,
     2750       0,     0,  1391,     0,     0,     0,   108,     0,     0,     0,
     2751       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2752       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2753      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2754       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2755      30,   434,     0,     0,     0,     0,     0,   435,     0,     0,
     2756       0,  1435,     0,     0,     0,   108,     0,     0,     0,     0,
     2757       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2758      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2759      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2760       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2761     434,     0,     0,     0,     0,     0,   435,     0,     0,     0,
     2762    1497,     0,     0,     0,   108,     0,     0,     0,     0,     0,
     2763       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2764      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2765      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2766      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2767       0,     0,     0,     0,     0,   435,     0,     0,     0,  1521,
     2768       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
     2769       0,    33,     0,     0,     0,     0,   107,     0,    37,    38,
     2770       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2771      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2772      26,    27,     0,     0,     0,     0,     0,    30,   434,     0,
     2773       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
     2774       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
     2775      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
    23942776       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    23952777      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2396       27,    28,     0,   490,    29,   269,    30,   270,     0,     0,
    2397        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2398        0,     0,     0,     0,     0,     0,     0,     0,   271,    33,
    2399        0,     0,     0,     0,   272,     0,    35,    36,   273,     0,
    2400     1498,   274,   275,   276,   277,    38,    39,     0,   278,   279,
    2401        0,     0,     0,     0,     0,     0,   280,     0,     0,     0,
    2402        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2403      281,     0,  1055,     0,     0,     0,     0,   490,     0,   283,
    2404      284,   285,   286,   287,   288,     0,   308,     0,     0,     0,
    2405        0,     0,     0,  -126,     0,     0,     1,     2,   196,     4,
    2406        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2407       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2408        0,     0,    25,    26,    27,    28,     0,   490,    29,   269,
    2409       30,   270,     0,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,   490,   490,     0,     0,     0,     0,     0,     0,
    2411        0,     0,   271,    33,     0,     0,     0,     0,   272,     0,
    2412       35,    36,   273,     0,     0,   274,   275,   276,   277,    38,
    2413       39,     0,   278,   279,     0,     0,     0,     0,     0,     0,
    2414      280,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2415        0,     0,     0,     0,   281,     0,    41,     0,     0,     0,
    2416        0,     0,     0,   283,   284,   285,   286,   287,   288,     2,
    2417      196,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2778      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2779       0,     0,     0,   435,     0,     0,     0,     0,     0,     0,
     2780       0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
     2781       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2782      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2783      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2784       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2785    1025,     0,   567,     0,     0,     0,     0,     0,     0,     0,
     2786     108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2787       0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
     2788      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2789      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2790       0,     0,     0,     0,    30,     0,     0,     0,     0,  1025,
     2791       0,   567,     0,     0,     0,     0,     0,     0,     0,   610,
     2792       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2793       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     2794      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2795      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2796       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2797     247,     0,     0,     0,     0,     0,     0,     0,   108,     0,
     2798       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2799       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
    24182800      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    24192801      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2420        0,   269,    30,   270,     0,     0,     0,     0,     0,     0,
    2421        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,   271,    33,     0,     0,     0,     0,
    2423      272,     0,    35,    36,   273,     0,     0,   274,   275,   276,
    2424      277,    38,    39,     0,   278,   279,     0,     0,     0,     0,
    2425        0,     0,   280,     0,     0,     0,     0,     0,     0,     0,
    2426        0,     0,     0,     0,     0,     0,   281,     0,   323,    -3,
    2427        0,     0,     0,   752,     0,   283,   324,   285,   286,   287,
    2428      288,     0,     2,   196,     4,     5,     6,     7,     8,     9,
     2802       0,     0,    30,     0,     0,     0,     0,     0,     0,   152,
     2803       0,     0,     0,     0,     0,     0,     0,   108,     0,     0,
     2804       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2805       0,     0,   199,   200,     8,     9,    10,    11,    12,    13,
     2806      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2807      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2808       0,    30,     0,     0,     0,     0,     0,     0,   260,     0,
     2809       0,     0,     0,     0,     0,     0,   261,     0,     0,     0,
     2810       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2811       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2812      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2813       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2814      30,     0,     0,     0,     0,     0,     0,   247,     0,     0,
     2815       0,     0,     0,     0,     0,   610,     0,     0,     0,     0,
     2816       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2817      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2818      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2819       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2820       0,     0,     0,     0,     0,     0,   567,     0,     0,     0,
     2821       0,     0,     0,     0,   610,     0,     0,     0,     0,     0,
     2822       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2823      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2824      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2825      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2826       0,     0,     0,     0,     0,   435,     0,     0,     0,     0,
     2827       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
     2828       0,    33,     0,     0,     0,     0,     0,     0,   199,   200,
     2829       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2830      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2831      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
     2832       0,     0,     0,     0,   260,     0,     0,     0,     0,     0,
     2833       0,     0,   605,     0,     0,     0,     0,     0,     0,     0,
     2834      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     2835       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2836      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2837      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2838       0,     0,     0,   573,     0,     0,     0,     0,     0,     0,
     2839       0,   610,     0,     0,     0,     0,     0,     0,     0,    33,
     2840       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
    24292841      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    24302842      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2431        0,     0,     0,     0,   269,    30,   270,     0,     0,     0,
    2432        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2433        0,     0,     0,     0,     0,     0,   490,   271,    33,     0,
    2434        0,     0,     0,   272,     0,    35,    36,   273,     0,     0,
    2435      274,   275,   276,   277,    38,    39,     0,   278,   279,     0,
    2436        0,     0,     0,     0,     0,   280,     0,     0,     0,     0,
    2437        0,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2438        0,   908,    -3,     0,     0,     0,   752,     0,   283,   324,
    2439      285,   286,   287,   288,     0,     0,     0,     0,     0,   490,
    2440      490,     2,   196,     4,     5,     6,     7,     8,     9,    10,
    2441       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2442       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2443        0,     0,     0,   269,    30,   270,     0,     0,     0,     0,
    2444        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2445        0,     0,     0,     0,     0,     0,   271,    33,     0,     0,
    2446        0,     0,   272,     0,    35,    36,   273,     0,     0,   274,
    2447      275,   276,   277,    38,    39,     0,   278,   279,     0,     0,
    2448        0,     0,     0,     0,   280,     0,     0,     0,     0,     0,
    2449        0,     0,     0,     0,     0,     0,     0,     0,   281,     0,
    2450      908,    -3,     0,     0,     0,   752,     0,   283,   572,   285,
    2451      286,   287,   288,     2,   196,     4,     5,     6,     7,     8,
    2452        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2453       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2454       27,     0,     0,     0,     0,   269,    30,   270,     0,     0,
    2455        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2456        0,     0,     0,     0,     0,     0,     0,     0,   271,    33,
    2457        0,     0,     0,     0,   272,     0,    35,    36,   273,     0,
    2458        0,   274,   275,   276,   277,    38,    39,     0,   278,   279,
    2459        0,     0,     0,     0,     0,     0,   280,     0,     0,     0,
    2460        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2461      281,     0,   323,    -3,     0,     0,     0,     0,     0,   283,
    2462      324,   285,   286,   287,   288,     2,   196,     4,     5,     6,
    2463        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2464       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2465       25,    26,    27,     0,     0,     0,     0,   269,    30,   270,
    2466        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2467        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2468      271,    33,     0,     0,     0,     0,   272,     0,    35,    36,
    2469      273,     0,     0,   274,   275,   276,   277,    38,    39,     0,
    2470      278,   279,     0,     0,     0,     0,     0,     0,   280,     0,
    2471        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2472        0,     0,   281,     0,   908,    -3,     0,     0,     0,     0,
    2473        0,   283,   324,   285,   286,   287,   288,     2,   196,     4,
    2474        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2475       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2476        0,     0,    25,    26,    27,     0,     0,     0,     0,   269,
    2477       30,   270,     0,     0,     0,     0,     0,     0,     0,     0,
    2478        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2479        0,     0,   271,    33,     0,     0,     0,     0,   272,     0,
    2480      197,   198,   273,     0,     0,   274,   275,   276,   277,    38,
    2481       39,     0,   278,   279,     0,     0,     0,     0,     0,     0,
    2482      280,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2483        0,     0,     0,     0,   281,     0,   993,     0,     0,     0,
    2484        0,     0,     0,   283,   994,   285,   286,   287,   288,     2,
    2485      196,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2486       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2487       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2488        0,   269,    30,   270,     0,     0,     0,     0,     0,     0,
    2489        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2490        0,     0,     0,     0,   271,    33,     0,     0,     0,     0,
    2491      272,     0,   197,   198,   273,     0,     0,   274,   275,   276,
    2492      277,    38,    39,     0,   278,   279,     0,     0,     0,     0,
    2493        0,     0,   280,     0,     0,     0,     0,     0,     0,     0,
    2494        0,     0,     0,     0,     0,     0,   281,     0,   359,     0,
    2495        0,     0,     0,     0,     0,   283,   361,   285,   286,   287,
    2496      288,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    2497       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2498       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2499       28,     0,     0,    29,     0,    30,    31,     0,     0,     0,
    2500        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2501        0,     0,     0,     0,     0,    32,     0,     0,    33,     0,
    2502        0,     0,     0,    34,     0,    35,    36,    37,     0,     0,
    2503        0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
    2504        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2505        0,     0,     0,     0,     0,     0,     0,     0,     0,    40,
    2506        0,    41,     0,     0,     0,  -503,     0,     0,     0,    42,
    2507      195,     2,   196,     4,     5,     6,     7,     8,     9,    10,
     2843       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2844       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
     2845     108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2846       0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
    25082847      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25092848      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    25102849       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2850       0,   567,     0,     0,     0,     0,     0,     0,     0,   108,
     2851       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2852       0,     0,     0,     0,   199,   200,     2,   198,     4,     5,
     2853       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2854      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2855       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2856       0,     0,     0,     0,     0,     0,     0,     0,   605,     0,
    25112857       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2512        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2513        0,     0,    34,     0,   197,   198,    37,     0,     0,     0,
    2514        0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2516        0,     0,     0,     0,     0,     0,     0,     0,    40,     0,
    2517      199,     0,     0,     0,     0,     0,     0,     0,   200,     1,
    2518        2,   196,     4,     5,     6,     7,     8,     9,    10,    11,
    2519       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2520       22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
    2521        0,    29,     0,    30,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2523        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2524        0,     0,     0,    35,    36,     0,   195,     2,   196,     4,
    2525        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2526       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2527        0,     0,    25,    26,    27,     0,     0,     0,     0,    41,
    2528       30,     0,     0,     0,     0,     0,     0,   106,     0,     0,
    2529        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2530        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2531      197,   198,     2,   196,     4,     5,     6,     7,     8,     9,
     2858       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2859      38,     0,   271,     0,   272,  1045,     0,  1046,     0,     0,
     2860    1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,  1529,  1055,
     2861       0,     0,  1056,    32,     0,   273,     0,     0,     0,     0,
     2862       0,   624,     0,     0,  -401,   275,     0,     0,   276,   277,
     2863     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
     2864       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
     2865       0,     0,     0,     0,     0,     0,     0,   283,     0,   361,
     2866       0,     0,   165,     0,     0,     0,   285,   363,   287,   288,
     2867     289,   290,     0,   271,     0,   272,  1045,     0,  1046,     0,
     2868    -126,  1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,     0,
     2869    1055,     0,     0,  1056,    32,     0,   273,     0,     0,     0,
     2870       0,     0,   624,     0,     0,     0,   275,     0,     0,   276,
     2871     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2872       0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
     2873       0,     0,     0,     0,     0,     0,     0,     0,   283,     0,
     2874     361,     0,     0,   165,     0,     0,     0,   285,   363,   287,
     2875     288,   289,   290,     0,     0,     0,     0,     0,     0,     0,
     2876       0,  -126,     2,   198,     4,     5,     6,     7,     8,     9,
    25322877      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    25332878      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2534        0,     0,     0,     0,     0,    30,   199,     0,     0,     0,
    2535        0,     0,     0,     0,   259,     0,     0,     0,     0,     0,
    2536        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2537        0,     0,     0,    34,     0,   197,   198,    37,     0,     0,
    2538        0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
     2879       0,     0,     0,     0,     0,    30,     8,     9,    10,    11,
     2880      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2881      22,    23,    24,     0,     0,    25,    26,    27,    33,     0,
     2882      34,     0,    35,    30,     0,    37,    38,     0,   271,     0,
     2883     272,  1045,     0,  1046,  1417,  1418,  1047,  1048,  1049,  1050,
     2884    1051,  1052,  1053,  1054,  1529,  1055,    33,  1326,  1056,    32,
     2885       0,   273,     0,    37,    38,     0,     0,   624,     0,     0,
     2886       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2887       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    25392888       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2540        0,     0,     0,     0,     0,     0,     0,     0,     0,    40,
    2541        0,   199,     0,     0,     0,     0,     0,     0,     0,   200,
    2542        2,   196,     4,     5,     6,     7,     8,     9,    10,    11,
    2543       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2544       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2545        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2889       0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
     2890       0,     0,   285,   363,   287,   288,   289,   290,   271,     0,
     2891     272,  1045,     0,  1046,  1417,  1418,  1047,  1048,  1049,  1050,
     2892    1051,  1052,  1053,  1054,     0,  1055,     0,     0,  1056,    32,
     2893       0,   273,     0,     0,     0,     0,     0,   624,     0,     0,
     2894       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2895       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    25462896       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2548        0,     0,     0,    35,    36,     2,   196,     4,     5,     6,
    2549        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2550       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2551       25,    26,    27,     0,     0,     0,     0,     0,    30,   659,
    2552       -3,     0,     0,     0,     0,     0,     0,   608,     0,     0,
     2897       0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
     2898       0,     0,   285,   363,   287,   288,   289,   290,   271,     0,
     2899     272,  1045,     0,  1046,     0,     0,  1047,  1048,  1049,  1050,
     2900    1051,  1052,  1053,  1054,     0,  1055,     0,     0,  1056,    32,
     2901       0,   273,     0,     0,     0,     0,     0,   624,     0,     0,
     2902       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2903       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
     2904       0,     0,     0,     0,     0,   271,     0,   272,     0,     0,
     2905       0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
     2906       0,     0,   285,   363,   287,   288,   289,   290,   273,     0,
     2907       0,     0,     0,     0,   274,     0,     0,     0,   275,     0,
     2908       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2909       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
     2910       0,     0,   271,     0,   272,     0,     0,     0,     0,     0,
     2911     283,     0,   361,     0,     0,     0,     0,     0,     0,   285,
     2912     890,   287,   288,   289,   290,   273,     0,     0,     0,     0,
     2913       0,   274,     0,     0,     0,   275,     0,     0,   276,   277,
     2914     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
     2915       0,     0,     0,   282,     0,     0,     0,     0,     0,   271,
     2916       0,   272,     0,     0,     0,     0,     0,   283,     0,     0,
     2917       0,     0,     0,     0,     0,     0,   285,   363,   287,   288,
     2918     289,   290,   273,     0,     0,     0,     0,     0,   274,     0,
     2919       0,     0,   275,     0,     0,   276,   277,   278,   279,    40,
     2920      41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
     2921     282,     0,     0,     0,     0,     0,   271,     0,   272,     0,
     2922       0,     0,     0,     0,   495,     0,     0,     0,     0,     0,
     2923       0,     0,     0,   285,   363,   287,   288,   289,   290,   273,
     2924       0,     0,     0,     0,     0,   274,     0,     0,     0,   275,
     2925       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2926     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2927       0,     0,     0,   271,     0,   272,     0,     0,     0,     0,
     2928       0,   498,     0,     0,     0,     0,     0,     0,     0,     0,
     2929     285,   363,   287,   288,   289,   290,   273,     0,     0,     0,
     2930       0,     0,   274,     0,     0,     0,   275,     0,     0,   276,
     2931     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2932       0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
     2933       0,     0,     0,     0,     0,     0,     0,     0,   501,     0,
     2934       0,     0,     0,     0,     0,     0,     0,   285,   363,   287,
     2935     288,   289,   290,     2,   198,     4,     5,     6,     7,     8,
     2936       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2937      19,    20,    21,    22,    23,    24,     0,     0,     0,     0,
     2938       0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    25532939       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2554        0,    33,     0,     0,     0,     0,     0,     0,    35,    36,
    2555        0,     0,     2,   196,     4,     5,     6,     7,     8,     9,
    2556       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2557       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2558        0,     0,     0,  -386,   659,    30,     0,     0,     0,     0,
    2559        0,     0,   608,     0,     0,     0,     0,     0,     0,     0,
    2560        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2561        0,     0,     0,     0,     0,    35,    36,     0,     0,     0,
    2562        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2563        0,     0,     0,     0,     0,     0,     0,  1365,     0,     0,
    2564        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2565        0,   659,     0,     0,     0,     0,     0,     0,     0,   608,
    2566        2,   196,     4,     5,     6,     7,     8,     9,    10,    11,
    2567       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2568       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2569        0,     0,     0,    30,     0,     0,     0,     0,     8,     9,
    2570       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2571       20,    21,    22,    23,    24,     0,    33,    25,    26,    27,
    2572        0,     0,     0,    35,    36,    30,     0,     0,     0,     0,
    2573        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,  1367,     0,     0,    33,     0,
    2575        0,     0,     0,    34,     0,   805,    36,    37,     0,   659,
    2576        0,     0,     0,     0,    38,    39,     0,   608,     2,   196,
    2577        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2578       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2579       24,   565,     0,    25,    26,    27,     0,     0,     0,   106,
    2580        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2581        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2582        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2583        0,   197,   198,     2,   196,     4,     5,     6,     7,     8,
    2584        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2585       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2586       27,     0,     0,     0,     0,     0,    30,   258,     0,     0,
    2587        0,     0,     0,     0,     0,   603,     0,     0,     0,     0,
    25882940       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2589        0,     0,     0,     0,     0,     0,    35,    36,     2,   196,
     2941       0,    34,     0,    35,    36,     0,   168,   169,    39,     0,
     2942       0,     0,     0,     0,     0,    40,    41,   197,     2,   198,
    25902943       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25912944      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    25922945      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2593        0,    30,   571,     0,     0,     0,     0,     0,     0,     0,
    2594      608,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2595        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2596        0,    35,    36,     2,   196,     4,     5,     6,     7,     8,
    2597        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2598       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2599       27,     0,     0,     0,     0,     0,    30,   659,     0,     0,
    2600        0,     0,     0,     0,     0,   608,     0,     0,     0,     0,
    2601        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2602        0,     0,     0,     0,     0,     0,   197,   198,     8,     9,
    2603       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2604       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2605        0,     0,     0,     0,   269,    30,   270,     0,     0,     0,
    2606        0,     0,   199,     0,     0,     0,     0,     0,     0,     0,
    2607      259,     0,     0,     0,     0,     0,     0,   271,    33,     0,
    2608        0,     0,     0,   272,     0,    35,    36,   273,     0,     0,
    2609      274,   275,   276,   277,    38,    39,     0,   278,   279,     0,
    2610        0,     0,     0,     0,     0,   280,     0,     0,     0,     0,
    2611        0,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2612        0,   503,     0,     0,   163,     0,     0,     0,   283,   284,
    2613      285,   286,   287,   288,     8,     9,    10,    11,    12,    13,
    2614       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2615       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2616      269,    30,   270,     0,     0,     0,     0,     0,     0,     0,
     2946       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    26172947       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2618        0,     0,     0,   271,    33,     0,     0,     0,     0,   272,
    2619        0,    35,    36,   273,     0,     0,   274,   275,   276,   277,
    2620       38,    39,     0,   278,   279,     0,     0,     0,     0,     0,
    2621        0,   280,     0,     0,     0,     0,     0,     0,     0,     0,
    2622        0,     0,     0,     0,     0,   281,     0,   571,    -3,     0,
    2623        0,     0,     0,     0,   283,   572,   285,   286,   287,   288,
    2624        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2625       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2626       26,    27,     0,     0,     0,     0,   269,    30,   270,     0,
    2627        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2628        0,     0,     0,     0,     0,     0,     0,     0,     0,   271,
    2629       33,     0,     0,     0,     0,   622,     0,    35,    36,   273,
    2630        0,     0,   274,   275,   276,   277,    38,    39,     0,   278,
    2631      279,     0,     0,     0,     0,     0,     0,   280,     0,     0,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2633        0,   281,   -35,   738,     0,     0,     0,     0,     0,     0,
    2634      283,   284,   285,   286,   287,   288,     8,     9,    10,    11,
    2635       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2636       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2637        0,     0,   269,    30,   270,     0,     0,     0,     0,     0,
    2638        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2639        0,     0,     0,     0,     0,   271,    33,     0,     0,     0,
    2640        0,   272,     0,    35,    36,   273,     0,     0,   274,   275,
    2641      276,   277,    38,    39,     0,   278,   279,     0,     0,     0,
    2642        0,     0,     0,   280,     0,     0,     0,     0,     0,     0,
    2643        0,     0,     0,     0,     0,     0,     0,   281,     0,   282,
    2644        0,     0,     0,     0,     0,     0,   283,   284,   285,   286,
    2645      287,   288,     8,     9,    10,    11,    12,    13,    14,    15,
    2646       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2647        0,    25,    26,    27,     0,     0,     0,     0,   269,    30,
    2648      270,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2649        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2650        0,   271,    33,     0,     0,     0,     0,   272,     0,    35,
    2651       36,   273,     0,     0,   274,   275,   276,   277,    38,    39,
    2652        0,   278,   279,     0,     0,     0,     0,     0,     0,   280,
    2653        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2654        0,     0,     0,   281,     0,   150,     0,     0,     0,     0,
    2655        0,     0,   283,   284,   285,   286,   287,   288,     8,     9,
    2656       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2657       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2658        0,     0,     0,     0,   269,    30,   270,     0,     0,     0,
    2659        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2660        0,     0,     0,     0,     0,     0,     0,   271,    33,     0,
    2661        0,     0,     0,   272,     0,    35,    36,   273,     0,     0,
    2662      274,   275,   276,   277,    38,    39,     0,   278,   279,     0,
    2663        0,     0,     0,     0,     0,   280,     0,     0,     0,     0,
    2664        0,     0,     0,     0,     0,     0,     0,     0,     0,   281,
    2665        0,   571,     0,     0,     0,     0,     0,     0,   283,   572,
    2666      285,   286,   287,   288,     8,     9,    10,    11,    12,    13,
    2667       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2668       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2669      269,    30,   270,     0,     0,     0,     0,     0,     0,     0,
    2670        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2671        0,     0,     0,   271,    33,     0,     0,     0,     0,   272,
    2672        0,    35,    36,   273,     0,     0,   274,   275,   276,   277,
    2673       38,    39,     0,   278,   279,     0,     0,     0,     0,     0,
    2674        0,   280,     0,     0,     0,     0,     0,     0,     0,     0,
    2675        0,     0,     0,     0,     0,   281,     0,   359,     0,     0,
    2676        0,     0,     0,     0,   283,   361,   285,   286,   287,   288,
    2677        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2678       18,    19,    20,    21,    22,    23,    24,  -279,     0,    25,
    2679       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2680        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2681       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2682       33,     0,    25,    26,    27,    34,     0,   805,    36,    37,
    2683       30,  -279,     0,     0,     0,     0,    38,    39,     0,     0,
    2684        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2685        0,     0,     0,    33,     0,     0,     0,     0,    34,     0,
    2686       35,    36,    37,   565,     0,     0,     0,     0,     0,    38,
    2687       39,   106,     8,     9,    10,    11,    12,    13,    14,    15,
    2688       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2689        0,    25,    26,    27,    40,     0,    41,     0,     0,    30,
    2690        0,     0,     0,     0,    42,     0,     0,     0,     0,     0,
    2691        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2692        0,     0,    33,     0,     0,     0,     0,    34,     0,   197,
    2693      198,    37,     0,     0,     0,     0,     0,     0,    38,    39,
    2694        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2695       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2696       26,    27,     0,    40,     0,   258,     0,    30,     0,     0,
    2697        0,     0,     0,   200,     0,     0,     0,     0,     0,     0,
    2698        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2699       33,     0,     0,     0,     0,    34,     0,   805,    36,    37,
    2700        0,     0,     0,     0,     0,     0,    38,    39,     8,     9,
    2701       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2702       20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
    2703        0,  1023,     0,   565,     0,    30,     0,     0,     0,     0,
    2704        0,   608,     0,     0,     0,     0,     0,     0,     0,     0,
    2705        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2706        0,     0,     0,     0,     0,    35,    36,     0,     0,  -279,
    2707        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2708       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2709       26,    27,     0,     0,     0,     0,     0,    30,   432,  1023,
    2710        0,   565,     0,     0,     0,     0,     0,     0,     0,   608,
    2711        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2712       33,     0,     0,     0,     0,     0,     0,    35,    36,     8,
    2713        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2714       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2715       27,     0,     0,     0,     0,     0,    30,   432,     0,     0,
    2716        0,     0,     0,   433,     0,     0,     0,   685,     0,     0,
    2717        0,   106,     0,     0,     0,     0,     0,     0,     0,    33,
    2718        0,     0,     0,     0,     0,     0,    35,    36,     8,     9,
    2719       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2720       20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
    2721        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2722        0,     0,   433,     0,     0,     0,   924,     0,     0,     0,
    2723      106,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2724        0,     0,     0,     0,     0,    35,    36,     0,     0,  -279,
    2725        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2726       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2727       26,    27,     0,     0,     0,     0,     0,    30,   432,     0,
    2728        0,   565,     0,     0,     0,     0,     0,     0,     0,   106,
    2729        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2730       33,     0,     0,     0,     0,     0,     0,    35,    36,     8,
    2731        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2732       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2733       27,     0,     0,     0,     0,     0,    30,   432,     0,     0,
    2734        0,     0,     0,   433,     0,     0,     0,  1389,     0,     0,
    2735        0,   106,     0,     0,     0,     0,     0,     0,     0,    33,
    2736        0,     0,     0,     0,     0,     0,    35,    36,     8,     9,
    2737       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2738       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2739        0,     0,     0,     0,     0,    30,   432,     0,     0,     0,
    2740        0,     0,   433,     0,     0,     0,  1433,     0,     0,     0,
    2741      106,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2742        0,     0,     0,     0,     0,    35,    36,     8,     9,    10,
    2743       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2744       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2745        0,     0,     0,     0,    30,   432,     0,     0,     0,     0,
    2746        0,   433,     0,     0,     0,  1495,     0,     0,     0,   106,
    2747        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2748        0,     0,     0,     0,    35,    36,     8,     9,    10,    11,
    2749       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2750       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2751        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2752      433,     0,     0,     0,  1519,     0,     0,     0,   106,     0,
    2753        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2754        0,     0,     0,    35,    36,     8,     9,    10,    11,    12,
    2755       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2756       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2757        0,     0,    30,     0,     0,     0,     0,  1023,     0,   565,
    2758        0,     0,     0,     0,     0,     0,     0,   106,     0,     0,
    2759        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2760        0,     0,    35,    36,     8,     9,    10,    11,    12,    13,
    2761       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2762       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2763        0,    30,     0,     0,     0,     0,  1023,     0,   565,     0,
    2764        0,     0,     0,     0,     0,     0,   608,     0,     0,     0,
    2765        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2766        0,    35,    36,     8,     9,    10,    11,    12,    13,    14,
    2767       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2768        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2769       30,     0,     0,     0,     0,     0,     0,   245,     0,     0,
    2770        0,     0,     0,     0,     0,   106,     0,     0,     0,     0,
    2771        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2772       35,    36,     8,     9,    10,    11,    12,    13,    14,    15,
    2773       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2774        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2775        0,     0,     0,     0,     0,     0,   150,     0,     0,     0,
    2776        0,     0,     0,     0,   106,     0,     0,     0,     0,     0,
    2777        0,     0,    33,     0,     0,     0,     0,     0,     0,   197,
    2778      198,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2779       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2780       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2781        0,     0,     0,     0,     0,   258,     0,     0,     0,     0,
    2782        0,     0,     0,   259,     0,     0,     0,     0,     0,     0,
    2783        0,    33,     0,     0,     0,     0,     0,     0,    35,    36,
     2948       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
     2949       0,   199,   200,   455,     2,   198,     4,     5,     6,     7,
    27842950       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    27852951      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    27862952      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2787        0,     0,     0,     0,   245,     0,     0,     0,     0,     0,
    2788        0,     0,   608,     0,     0,     0,     0,     0,     0,     0,
    2789       33,     0,     0,     0,     0,     0,     0,    35,    36,     8,
    2790        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2791       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2792       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2793        0,     0,     0,   565,     0,     0,     0,     0,     0,     0,
    2794        0,   608,     0,     0,     0,     0,     0,     0,     0,    33,
    2795        0,     0,     0,     0,     0,     0,    35,    36,     8,     9,
    2796       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2797       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2798        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2799        0,     0,   433,     0,     0,     0,     0,     0,     0,     0,
    2800      106,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2801        0,     0,     0,     0,     0,   197,   198,     8,     9,    10,
    2802       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2803       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2804        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2805        0,   258,     0,     0,     0,     0,     0,     0,     0,   603,
    2806        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2807        0,     0,     0,     0,    35,    36,     8,     9,    10,    11,
    2808       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2809       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2810        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2811      571,     0,     0,     0,     0,     0,     0,     0,   608,     0,
    2812        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2813        0,     0,     0,    35,    36,     8,     9,    10,    11,    12,
     2953       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2954       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2955      33,     0,    34,     0,    35,     0,     0,    37,    38,     2,
     2956     198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    28142957      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    28152958      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2816        0,     0,    30,     0,     0,     0,     0,     0,     0,    41,
    2817        0,     0,     0,     0,     0,     0,     0,   106,     0,     0,
    2818        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2819        0,     0,    35,    36,     8,     9,    10,    11,    12,    13,
    2820       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2821       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2822        0,    30,     0,     0,     0,     0,     0,     0,   565,     0,
    2823        0,     0,     0,     0,     0,     0,   106,     0,     0,     0,
    2824        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2825        0,   197,   198,     2,   196,     4,     5,     6,     7,     8,
    2826        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2827       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2828       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2829        0,   269,     0,   270,  1043,   603,  1044,     0,     0,  1045,
    2830     1046,  1047,  1048,  1049,  1050,  1051,  1052,  1527,  1053,    33,
    2831        0,  1054,    32,     0,   271,     0,    35,    36,     0,     0,
    2832      622,     0,     0,     0,   273,     0,     0,   274,   275,   276,
    2833      277,    38,    39,     0,   278,   279,     0,     0,     0,     0,
    2834        0,     0,   280,     0,     0,     0,     0,     0,     0,     0,
    2835        0,  -399,     0,     0,     0,     0,   281,     0,   359,     0,
    2836        0,   163,     0,     0,     0,   283,   361,   285,   286,   287,
    2837      288,     0,   269,     0,   270,  1043,     0,  1044,     0,  -126,
    2838     1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,  1053,
    2839        0,     0,  1054,    32,     0,   271,     0,     0,     0,     0,
    2840        0,   622,     0,     0,     0,   273,     0,     0,   274,   275,
    2841      276,   277,    38,    39,     0,   278,   279,     0,     0,     0,
    2842        0,     0,     0,   280,     0,     0,     0,     0,     0,     0,
    2843        0,     0,     0,     0,     0,     0,     0,   281,     0,   359,
    2844        0,     0,   163,     0,     0,     0,   283,   361,   285,   286,
    2845      287,   288,     0,     0,     0,     0,     0,     0,     0,     0,
    2846     -126,     2,   196,     4,     5,     6,     7,     8,     9,    10,
    2847       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2848       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2849      269,     0,   270,  1043,    30,  1044,  1415,  1416,  1045,  1046,
    2850     1047,  1048,  1049,  1050,  1051,  1052,  1527,  1053,     0,     0,
    2851     1054,    32,     0,   271,     0,     0,     0,    33,     0,   622,
    2852        0,     0,     0,   273,    35,    36,   274,   275,   276,   277,
    2853       38,    39,     0,   278,   279,     0,     0,     0,     0,     0,
    2854        0,   280,     0,     0,     0,     0,  1324,     0,     0,     0,
    2855        0,     0,     0,     0,     0,   281,     0,   359,     0,     0,
    2856      163,     0,     0,     0,   283,   361,   285,   286,   287,   288,
    2857      269,     0,   270,  1043,     0,  1044,  1415,  1416,  1045,  1046,
    2858     1047,  1048,  1049,  1050,  1051,  1052,     0,  1053,     0,     0,
    2859     1054,    32,     0,   271,     0,     0,     0,     0,     0,   622,
    2860        0,     0,     0,   273,     0,     0,   274,   275,   276,   277,
    2861       38,    39,     0,   278,   279,     0,     0,     0,     0,     0,
    2862        0,   280,     0,     0,     0,     0,     0,     0,     0,     0,
    2863        0,     0,     0,     0,     0,   281,     0,   359,     0,     0,
    2864      163,     0,     0,     0,   283,   361,   285,   286,   287,   288,
    2865      269,     0,   270,  1043,     0,  1044,     0,     0,  1045,  1046,
    2866     1047,  1048,  1049,  1050,  1051,  1052,     0,  1053,     0,     0,
    2867     1054,    32,     0,   271,     0,     0,     0,     0,     0,   622,
    2868        0,     0,     0,   273,     0,     0,   274,   275,   276,   277,
    2869       38,    39,     0,   278,   279,     0,     0,     0,     0,     0,
    2870        0,   280,     0,     0,     0,     0,     0,   269,     0,   270,
    2871        0,     0,     0,     0,     0,   281,     0,   359,     0,     0,
    2872      163,     0,     0,     0,   283,   361,   285,   286,   287,   288,
    2873      271,     0,     0,     0,     0,     0,   272,     0,     0,     0,
    2874      273,     0,     0,   274,   275,   276,   277,    38,    39,     0,
    2875      278,   279,     0,     0,     0,     0,     0,     0,   280,     0,
    2876        0,     0,     0,     0,   269,     0,   270,     0,     0,     0,
    2877        0,     0,   281,     0,   359,     0,     0,     0,     0,     0,
    2878        0,   283,   361,   285,   286,   287,   288,   271,     0,     0,
    2879        0,     0,     0,   272,     0,     0,     0,   273,     0,     0,
    2880      274,   275,   276,   277,    38,    39,     0,   278,   279,     0,
    2881        0,     0,     0,     0,     0,   280,     0,     0,     0,     0,
    2882        0,   269,     0,   270,     0,     0,     0,     0,     0,   281,
    2883        0,   359,     0,     0,     0,     0,     0,     0,   283,   708,
    2884      285,   286,   287,   288,   271,     0,     0,     0,     0,     0,
    2885      622,     0,     0,     0,   273,     0,     0,   274,   275,   276,
    2886      277,    38,    39,     0,   278,   279,     0,     0,     0,     0,
    2887        0,     0,   280,     0,     0,     0,     0,     0,   269,     0,
    2888      270,     0,     0,     0,     0,     0,   281,     0,   757,     0,
    2889        0,     0,     0,     0,     0,   283,   361,   285,   286,   287,
    2890      288,   271,     0,     0,     0,     0,     0,   272,     0,     0,
    2891        0,   273,     0,     0,   274,   275,   276,   277,    38,    39,
    2892        0,   278,   279,     0,     0,     0,     0,     0,     0,   280,
    2893        0,     0,     0,     0,     0,   269,     0,   270,     0,     0,
    2894        0,     0,     0,   281,     0,   359,     0,     0,     0,     0,
    2895        0,     0,   283,   888,   285,   286,   287,   288,   271,     0,
    2896        0,     0,     0,     0,   272,     0,     0,     0,   273,     0,
    2897        0,   274,   275,   276,   277,    38,    39,     0,   278,   279,
    2898        0,     0,     0,     0,     0,     0,   280,     0,     0,     0,
    2899        0,     0,   269,     0,   270,     0,     0,     0,     0,     0,
    2900      281,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2901      361,   285,   286,   287,   288,   271,     0,     0,     0,     0,
    2902        0,   272,     0,     0,     0,   273,     0,     0,   274,   275,
    2903      276,   277,    38,    39,     0,   278,   279,     0,     0,     0,
    2904        0,     0,     0,   280,     0,     0,     0,     0,     0,   269,
    2905        0,   270,     0,     0,     0,     0,     0,   493,     0,     0,
    2906        0,     0,     0,     0,     0,     0,   283,   361,   285,   286,
    2907      287,   288,   271,     0,     0,     0,     0,     0,   272,     0,
    2908        0,     0,   273,     0,     0,   274,   275,   276,   277,    38,
    2909       39,     0,   278,   279,     0,     0,     0,     0,     0,     0,
    2910      280,     0,     0,     0,     0,     0,   269,     0,   270,     0,
    2911        0,     0,     0,     0,   496,     0,     0,     0,     0,     0,
    2912        0,     0,     0,   283,   361,   285,   286,   287,   288,   271,
    2913        0,     0,     0,     0,     0,   272,     0,     0,     0,   273,
    2914        0,     0,   274,   275,   276,   277,    38,    39,     0,   278,
    2915      279,     0,     0,     0,     0,     0,     0,   280,     0,     0,
    2916        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2917        0,   499,     0,     0,     0,     0,     0,     0,     0,     0,
    2918      283,   361,   285,   286,   287,   288,     2,   196,     4,     5,
    2919        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2920       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2921        0,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    2922        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2923        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2924        0,     0,    33,     0,     0,     0,     0,    34,     0,   166,
    2925      167,    37,     0,     0,     0,     0,     0,     0,    38,    39,
    2926      195,     2,   196,     4,     5,     6,     7,     8,     9,    10,
    2927       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2928       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2929        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2930        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2931        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2932        0,     0,     0,     0,   197,   198,   453,     2,   196,     4,
    2933        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2959       0,     0,    30,     8,     9,    10,    11,    12,    13,    14,
    29342960      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2935        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2936       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2961       0,     0,    25,    26,    27,    33,     0,    34,     0,    35,
     2962      30,     0,   199,   200,     0,     0,     0,     0,     0,     0,
    29372963       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    29382964       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2939       35,    36,     2,   196,     4,     5,     6,     7,     8,     9,
    2940       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2941       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2942        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2943        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2944       18,    19,    20,    21,    22,    23,    24,     0,    33,    25,
    2945       26,    27,   471,   472,   473,   197,   198,    30,     8,     9,
    2946       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2947       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2948       33,     0,     0,     0,     0,    30,     0,    35,    36,     0,
    2949        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2950       18,    19,    20,    21,    22,    23,    24,     0,    33,    25,
    2951       26,    27,     0,   105,     0,    35,    36,    30,     8,     9,
    2952       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2953       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2954       33,     0,     0,     0,     0,    30,     0,    35,    36,     0,
    2955        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2956        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2957        0,     0,     0,     0,     0,   197,   198
     2965     199,   200
    29582966};
    29592967
    29602968#define yypact_value_is_default(yystate) \
    2961   ((yystate) == (-1291))
     2969  ((yystate) == (-1306))
    29622970
    29632971#define yytable_value_is_error(yytable_value) \
     
    29662974static const yytype_int16 yycheck[] =
    29672975{
    2968        1,     1,     0,    40,     0,    40,    40,   176,   110,    32,
    2969      176,   410,   209,   177,   100,   176,   555,   441,     0,     1,
    2970      161,   176,   517,   176,   431,   267,   672,   603,   554,   651,
    2971      329,   672,   431,    31,   672,    31,   176,   619,   176,   324,
    2972      975,   344,    40,   435,    42,   348,    42,   554,   583,    31,
    2973      627,   633,   585,   583,    52,   583,   585,     0,   618,   619,
    2974       58,   586,    58,    61,    64,    61,    64,   592,    64,   583,
    2975        0,   478,   268,   633,   434,   482,   177,   554,  1022,  1334,
    2976       37,   751,    64,     0,   253,   982,   873,   253,    31,   191,
    2977      254,    40,   253,   101,   476,    40,   104,   583,   253,    40,
    2978      253,    31,   748,   101,     0,     0,   104,   748,  1021,  1022,
    2979      748,   450,   110,   253,    31,   253,    31,   873,   583,    65,
    2980      697,   405,   406,     0,     1,  1415,    27,     0,   710,   583,
    2981       65,  1042,    88,  1419,   218,    31,    31,    75,  1035,   176,
    2982      178,   176,   176,   141,    61,   141,   103,   507,   101,   102,
    2983      710,   235,    37,   254,    31,   153,    65,   153,    31,    37,
    2984       42,    43,    42,    65,   786,   111,   122,    40,   103,    42,
    2985       71,   194,    42,    43,   796,   474,   397,    65,   176,   177,
    2986     1435,   177,    37,   468,    61,    58,   123,    64,    61,  1479,
    2987      812,    64,   389,   191,   103,   416,   480,   733,    57,   102,
    2988      208,   103,   200,   424,   200,   587,   109,    65,    37,   591,
    2989      208,   249,   250,   211,   498,   211,   253,  1503,   253,   253,
    2990      123,   385,  1508,   101,   106,   103,   106,   176,    42,    43,
    2991      612,   176,   718,    65,   616,   176,   124,   107,  1524,   240,
    2992      244,   239,   101,   239,  1508,  1531,   101,   101,   103,    29,
    2993       75,   790,   260,   718,   102,   253,   254,   239,   254,   267,
    2994      140,   109,   260,   101,   718,    50,   124,  1531,   141,   267,
    2995      434,   103,   101,   375,   103,   102,   811,   102,   562,   280,
    2996      153,   811,   109,   811,   385,   123,  1042,   572,   813,   822,
    2997       37,  1235,   106,   822,   211,    37,   239,   811,    78,    79,
    2998      692,   403,   466,   176,   177,    78,   408,    92,   268,   239,
    2999       89,   614,   651,  1248,   984,   113,   114,   315,   603,   315,
    3000      200,   102,   239,   608,   239,   811,   101,   200,   109,    89,
    3001      328,   329,   105,   434,   211,   101,   115,   345,   211,     0,
    3002        1,   349,  1286,   239,   239,   106,   811,   345,   244,   244,
    3003       65,   349,    67,    68,   101,   115,   103,   811,   108,   101,
    3004      108,   103,   239,     3,   903,   466,   239,   666,   108,  1508,
    3005       31,    65,  1285,  1286,   124,    69,   902,   375,   108,   259,
    3006      253,    42,    76,    77,   124,  1524,   671,   385,  1299,   385,
    3007      108,   106,  1531,   397,   124,   902,  1018,  1019,   108,   184,
    3008       61,   936,     3,    64,   284,   403,   936,   101,   937,   103,
    3009      408,   104,   416,   330,   124,   108,   902,   111,   994,   108,
    3010      424,   206,   936,   108,   108,   902,    65,  1214,    67,    68,
    3011       65,   216,    67,    68,   104,   124,   434,   902,   108,   124,
    3012      124,  1023,   315,   664,   324,   106,   101,   786,   902,   108,
    3013      111,   231,   453,  1075,  1076,   102,   329,   796,  1214,   744,
    3014      458,   108,   844,  1023,   103,   124,   101,  1411,   466,     0,
    3015      466,   106,   470,   812,   470,   111,   474,   673,   104,   140,
    3016      116,   117,   108,  1008,  1009,   980,     0,   628,   470,   102,
    3017      732,    61,   153,   108,   580,   108,   281,   498,  1411,   695,
    3018      123,   397,   397,   672,  1401,  1402,   672,   101,  1482,   124,
    3019      674,   672,   385,   514,  1488,  1051,   517,   672,   519,   672,
    3020      416,   416,   121,   822,   123,   405,   406,   470,   424,   424,
    3021      410,  1505,   672,   635,   672,   101,  1510,   103,   945,   200,
    3022      470,   111,   459,  1299,  1083,  1456,  1123,   101,   947,   103,
    3023      211,   431,  1463,   470,   104,   915,   101,   111,   108,   101,
    3024      942,   434,    65,   923,    67,    68,   567,   101,   229,  1151,
    3025     1152,  1100,   468,   674,   470,   470,   101,    65,   239,    67,
    3026      360,    69,   580,   153,   101,   583,   103,   585,    76,    77,
    3027      251,  1151,  1152,   470,   111,  1506,   604,   470,   259,   637,
    3028      480,   474,    65,   106,    67,    68,   604,   967,   102,   108,
    3029       65,   104,   620,   102,    69,   108,   101,    72,   498,    74,
    3030      281,     3,   620,   284,   632,   124,    81,   570,    10,    11,
    3031       12,    13,    14,   634,   632,   636,   421,   635,   101,   101,
    3032     1262,   211,   941,   106,     4,     5,     6,     7,     8,     9,
    3033      108,  1273,  1274,  1275,   102,    37,   108,     1,   102,   439,
    3034      664,   102,   859,   324,   444,   102,   124,   104,   666,   330,
    3035      455,   108,   124,   101,   672,   103,   674,   247,    60,  1018,
    3036     1019,   251,   562,   880,    81,    82,   123,   124,   605,   992,
    3037      108,   281,   572,   102,    83,    84,   102,   477,    42,   479,
    3038     1456,  1323,   108,   707,   705,   101,   124,  1463,   493,   994,
    3039      583,   496,   585,   673,   499,   101,    65,   108,    67,    68,
    3040      718,   719,   808,   603,   732,   866,   102,   107,   608,   118,
    3041      119,     3,   108,   124,   732,   695,  1075,  1076,    10,    11,
    3042       12,    13,    14,    65,   405,   406,   101,    69,   203,   410,
    3043     1506,   915,   101,   124,    76,    77,   100,   106,    57,   923,
    3044      330,   101,   106,  1299,   124,    37,   102,   853,   664,   664,
    3045      431,   432,   108,   101,   435,   671,   101,   101,   103,   101,
    3046      441,   698,    85,    86,  1083,   103,   111,   105,    60,   111,
    3047      124,   109,   103,   666,   105,   712,   140,   493,   109,   672,
    3048      496,   674,  1226,   499,   102,   106,   101,   468,   103,   470,
    3049      108,   707,   707,   811,   915,   405,   406,    65,   101,   480,
    3050      103,    69,   923,   783,   822,   102,  1225,   106,    76,    77,
    3051      124,   108,   493,    42,   124,   496,   102,   498,   499,   409,
    3052     1143,  1377,   108,    65,   624,   718,   719,  1150,   744,    58,
    3053      106,   195,    61,   101,   101,    64,   200,    75,   102,   802,
    3054     1145,   468,   102,   111,   108,   650,  1512,   102,   108,   102,
    3055      112,  1512,   873,   108,  1512,   108,   661,   332,   102,   334,
    3056      665,   102,   120,   800,   108,   229,   102,   108,   974,   459,
    3057      121,   873,   108,   101,  1233,   103,  1037,  1321,   108,   109,
    3058      898,   562,   862,   493,   902,   903,   496,   687,    87,   499,
    3059      102,   572,   123,   693,   575,   259,   108,   915,   262,   103,
    3060     1116,  1224,   104,  1262,  1460,   923,  1462,   102,  1320,   101,
    3061      873,   103,   141,   108,  1273,  1274,  1275,   281,   811,   102,
    3062      284,   102,   603,   941,   153,   108,   946,   608,   102,   822,
    3063     1235,    65,   102,    67,   897,    69,   873,    65,   108,    67,
    3064       68,   551,    76,    77,   946,   420,   102,   101,   177,   103,
    3065       65,  1507,    67,    68,    69,   102,   977,   873,   873,   980,
    3066      324,   982,   102,   103,  1323,  1181,  1182,   101,   101,  1012,
    3067      103,   200,    54,    55,   992,   102,   873,   111,  1390,   102,
    3068      344,  1087,   211,   101,   348,   575,  1108,  1431,   108,   109,
    3069      671,   618,   619,     4,     5,     6,     7,     8,     9,  1322,
    3070      540,   541,   542,   543,   984,   101,   633,   103,   103,   902,
    3071      903,   692,    42,    43,  1035,   605,  1122,   101,   102,   103,
    3072      610,    32,   915,   108,  1045,  1469,   123,  1048,  1049,  1050,
    3073      923,   712,   101,   102,   103,    10,    11,    12,    13,    14,
    3074     1042,   405,   406,   677,   671,   679,   410,   947,   941,   946,
    3075      106,    78,    79,    80,   101,   450,  1468,   536,   537,  1039,
    3076      997,   102,    37,   744,   102,  1083,   866,   431,   432,   538,
    3077      539,   435,   872,   104,   101,   104,   103,   441,   105,  1042,
    3078      101,   102,   103,   710,  1496,    60,   315,   104,   108,   453,
    3079     1108,   101,   102,   103,   994,   900,   109,  1254,  1255,  1256,
    3080      109,  1520,   544,   545,    28,  1042,    75,   102,   698,   102,
    3081      104,  1491,   108,   102,   478,   107,   480,   744,   482,   800,
    3082      108,   107,   712,  1086,   109,   107,  1042,  1042,   101,   493,
    3083      102,    75,   496,   124,   498,   499,  1116,    10,    11,    12,
    3084       13,    14,   102,   102,   109,  1042,   102,   102,    52,   102,
    3085        3,   108,   104,  1533,   102,   102,   385,    10,    11,    12,
    3086       13,    14,   102,   270,    37,   104,   101,    65,   968,    67,
    3087      101,    69,   102,  1193,   102,   102,   283,   284,    76,    77,
    3088      102,   102,   102,   102,    37,   102,   102,    60,   295,   104,
    3089     1083,  1193,   873,  1214,   107,    28,   104,   101,   562,  1415,
    3090      104,  1181,  1182,   101,   104,   103,  1224,    60,   572,   123,
    3091      800,   109,  1214,   111,   102,   102,   580,   324,   102,  1239,
    3092       10,    11,    12,    13,    14,   102,   102,   107,   101,  1145,
    3093      103,   102,   102,  1254,  1255,  1256,   108,  1239,   111,   603,
    3094      104,   104,   102,   108,   608,   102,   101,    37,  1053,   108,
    3095      614,  1214,   106,   104,   361,  1192,   651,    65,   873,    67,
    3096      108,    69,  1478,  1479,   104,   946,   947,   104,    76,    77,
    3097       60,  1071,  1394,   102,   104,    65,   102,  1214,  1384,    69,
    3098      108,   108,   102,   104,  1084,  1085,    76,    77,   101,   101,
    3099      101,   101,  1313,   101,   101,  1192,  1193,  1299,  1214,  1214,
    3100      109,   124,   107,   111,   208,   102,   102,   121,   102,   104,
    3101       42,   101,    45,   994,  1334,   107,   107,  1214,   106,  1235,
    3102      124,   111,   108,  1512,   104,  1225,  1512,   108,   692,  1513,
    3103      104,  1512,  1334,   102,   102,   102,  1299,  1512,   104,  1512,
    3104      104,   104,  1239,     4,     5,     6,     7,     8,     9,  1533,
    3105     1371,   104,  1512,  1374,  1512,   102,   260,  1294,   722,   104,
    3106      104,  1042,  1299,   267,   124,  1393,  1384,   124,   124,  1491,
    3107      124,   106,   124,   104,   106,  1393,  1394,   102,   107,   102,
    3108     1401,  1402,   104,  1299,  1299,   104,   107,   104,  1188,   104,
    3109      104,   786,  1513,   104,  1021,   104,  1023,  1294,  1419,   104,
    3110      102,   796,  1299,  1424,   102,   104,    55,   997,   140,   104,
    3111      101,   101,  1533,    54,   106,  1435,   104,   812,   102,   102,
    3112      124,     0,     1,    75,   328,   102,   533,   534,   535,  1450,
    3113     1045,   109,   102,  1435,   101,  1415,   104,  1334,    65,   104,
    3114       67,   345,    69,   102,   808,   349,   104,   102,   104,    76,
    3115       77,    89,    31,    32,  1456,  1512,   107,  1512,  1512,   102,
    3116      102,  1463,   102,    42,  1145,   572,   102,    40,   200,   108,
    3117      124,  1492,   109,  1491,   101,    89,   103,   124,   102,   102,
    3118      106,    75,  1503,   102,   111,    64,   104,  1508,   109,   853,
    3119      124,   124,   107,  1456,  1512,  1513,   104,  1513,  1478,  1479,
    3120     1463,  1522,  1307,  1524,  1506,   101,   107,  1528,   124,   107,
    3121     1531,  1192,  1193,   102,   124,  1533,  1537,  1533,  1145,  1456,
    3122     1541,   100,   102,   647,  1151,  1152,  1463,   259,   546,   548,
    3123     1124,   547,  1214,  1214,   549,  1479,   550,  1379,  1435,  1308,
    3124     1456,  1456,  1541,  1506,  1225,  1226,  1494,  1463,  1463,   281,
    3125     1118,  1463,   284,    65,  1235,    67,    68,    69,  1239,  1456,
    3126     1119,  1071,   141,     0,    76,    77,  1463,   679,   923,  1506,
    3127      149,   432,   925,   866,   432,   444,    10,    11,    12,    13,
    3128       14,   945,   946,   947,  1194,  1195,   567,  1197,  1388,   101,
    3129     1506,  1506,   968,  1203,    31,   629,  1206,   722,   177,  1214,
    3130      943,   708,  1192,    37,   470,    -1,   732,  1239,    -1,  1506,
    3131      974,    -1,   191,  1294,    -1,   194,   195,    -1,  1299,  1512,
    3132     1520,   200,    -1,  1018,  1019,    65,    60,    64,   992,    69,
    3133      994,    65,    -1,    67,    -1,    69,    76,    77,    -1,  1320,
    3134     1321,   220,    76,    77,   751,   224,    -1,   226,    -1,    -1,
    3135       -1,    -1,    -1,  1334,   233,    -1,    -1,    -1,  1285,  1464,
    3136      239,   101,   180,   103,    -1,   244,    -1,   101,    -1,   187,
    3137       -1,   111,    -1,   405,   406,   254,   580,   111,   410,    -1,
    3138     1075,  1076,    -1,   262,    -1,    -1,    61,    -1,  1493,    -1,
    3139       -1,    65,    -1,    67,    68,    69,    71,    -1,  1313,   431,
    3140      604,    -1,    76,    77,  1294,    -1,    -1,    -1,    -1,  1390,
    3141       -1,    -1,   149,    -1,    -1,    -1,   620,    -1,    -1,    -1,
    3142       -1,    -1,    -1,  1087,    -1,    -1,    -1,  1532,   632,    -1,
    3143       10,    11,    12,    13,    14,    -1,   111,    -1,   256,  1544,
    3144       -1,    -1,    -1,    -1,    -1,   324,    -1,    -1,   480,    -1,
    3145     1431,    -1,   331,    -1,  1435,    -1,  1371,    37,  1122,  1374,
    3146       -1,   493,    -1,  1373,   496,   344,   498,   499,    -1,   348,
    3147       -1,    -1,   351,    -1,    -1,  1456,    -1,    -1,   153,  1143,
    3148       60,   888,  1463,   220,  1465,    65,  1150,  1468,  1469,    69,
    3149       -1,    -1,   310,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3150      318,    -1,   239,   321,  1419,    -1,    -1,   244,    65,  1424,
    3151       67,    -1,    69,  1494,    -1,  1496,    -1,    -1,   397,    76,
    3152       77,   101,    -1,   103,    -1,  1506,    -1,    -1,   732,    -1,
    3153      562,   111,   411,    -1,    -1,  1450,   211,   416,  1233,  1520,
    3154       -1,    -1,    -1,    -1,   101,   424,   103,    -1,    -1,    -1,
    3155       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,   377,
    3156     1224,  1225,  1226,   381,    -1,    -1,    -1,  1262,    -1,    -1,
    3157       -1,   450,   247,    -1,   453,  1239,   251,    -1,  1273,  1274,
    3158     1275,    -1,    10,    11,    12,    13,    14,   994,    -1,   468,
    3159       -1,   470,   267,    -1,   331,    -1,    -1,    -1,    -1,   478,
    3160       65,    -1,    67,   482,    69,    -1,    -1,  1522,    -1,    37,
    3161       -1,    76,    77,  1528,   351,    -1,    10,    11,    12,    13,
    3162       14,    -1,  1537,    -1,    -1,    -1,  1541,    -1,  1323,    -1,
    3163       -1,   510,    60,    -1,    -1,  1042,   101,    65,   103,    67,
    3164       -1,    69,    -1,    37,    -1,    -1,   111,   465,    76,    77,
    3165       65,    -1,    67,    68,    69,   330,  1320,  1321,  1322,    -1,
    3166      397,    76,    77,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3167     1334,    -1,    -1,   101,   411,   103,   555,    -1,    -1,   416,
    3168       -1,    -1,    -1,   111,    -1,    -1,   101,   424,    25,    26,
    3169       27,   570,    -1,   572,   898,    -1,    -1,    -1,    -1,    -1,
    3170       -1,   580,    -1,    -1,    -1,    -1,   585,   101,    -1,   103,
    3171       -1,    -1,    -1,   450,    -1,    -1,    -1,   111,    -1,    -1,
    3172     1384,    -1,    -1,    -1,   603,    -1,  1390,    -1,    -1,   608,
    3173       -1,   468,    -1,   470,   409,   614,   554,   555,    -1,   618,
    3174      619,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
    3175       -1,   426,    -1,    -1,   633,    -1,    93,    -1,    95,  1166,
    3176       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1431,    -1,    -1,
    3177       37,  1435,   651,   510,    90,    91,    92,    93,    94,    95,
    3178       96,    97,    98,    99,   459,   664,    -1,    -1,   992,    -1,
    3179       -1,    -1,   671,    60,    -1,   674,    -1,    -1,    65,    -1,
    3180       67,  1465,    69,    -1,  1468,  1469,    -1,   123,    -1,    76,
    3181       77,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3182      638,    -1,    -1,    -1,   642,    -1,    -1,    -1,   707,    -1,
    3183     1494,   710,  1496,   570,   101,    -1,   173,    -1,    -1,    37,
    3184      719,    -1,    -1,   722,   111,   182,   183,    -1,   666,    -1,
    3185      187,    -1,   189,   190,    -1,    -1,  1520,    -1,    -1,    -1,
    3186      678,    -1,    60,    -1,    -1,   744,    -1,    65,    -1,    67,
    3187      749,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3188       -1,   618,   619,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3189       -1,    -1,    -1,     0,    -1,    -1,   633,    -1,    -1,    -1,
    3190      575,    -1,    -1,   101,    -1,   103,    -1,   786,    -1,    -1,
    3191       -1,    -1,    -1,   111,   651,   947,    -1,   796,    -1,    -1,
    3192       -1,    -1,   801,   802,    31,    -1,    -1,   664,    -1,   808,
    3193      605,    -1,    -1,   812,   671,   610,    -1,    -1,    -1,    -1,
    3194       -1,    -1,   821,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3195       -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
     2976       1,    42,     0,    32,     0,    42,    42,   412,   112,     1,
     2977       0,     1,   674,   346,     0,   178,   211,   350,   178,   270,
     2978     674,   178,   519,   178,   875,   674,   178,   178,   433,   178,
     2979     605,   443,   557,    31,  1024,    31,   163,   331,   587,   629,
     2980     269,    31,   587,   875,    42,    31,    44,   180,    44,     0,
     2981     436,   735,   102,   753,   585,     0,    54,   179,   179,    31,
     2982     433,   437,    60,   621,    60,    63,     0,    63,    66,   984,
     2983      66,   556,   556,    63,    66,   470,    66,   635,   326,   556,
     2984      31,   585,   585,   977,    42,   283,    31,   103,   750,   193,
     2985     106,  1336,   255,    42,   399,   255,   750,    31,   255,   585,
     2986     255,   750,    65,   255,   255,   103,   255,   480,   106,   699,
     2987     585,   484,    63,   418,   112,  1044,  1421,    65,   251,   252,
     2988      75,   426,  1037,   509,    37,     0,     1,   588,   101,    52,
     2989      27,    37,    42,   594,   256,   256,   246,   178,  1417,   585,
     2990      65,   178,   178,    42,    43,   143,    67,   143,   111,   123,
     2991      71,    89,    78,    74,   712,    76,    31,   155,   585,   155,
     2992     620,   621,    83,   407,   408,    65,    37,   196,  1023,  1024,
     2993     101,    94,    42,    43,    71,   635,   124,   115,    65,   105,
     2994     178,   179,   476,   179,     4,     5,     6,     7,     8,     9,
     2995     103,    66,  1437,  1044,   210,   193,   391,    42,    43,   124,
     2996    1505,    65,  1481,   103,   202,  1510,   202,    89,   107,   407,
     2997     408,    65,   210,    44,   255,   213,   103,   213,   255,   255,
     2998     178,  1526,   470,   213,   102,   620,   621,  1510,  1533,   178,
     2999     101,   109,   103,   115,   720,   101,   106,   478,   482,   103,
     3000     635,   242,    62,   241,    64,   241,   262,  1237,    57,   103,
     3001    1533,   241,   712,   269,    88,   241,   500,   255,   256,    37,
     3002     256,   106,   213,   186,   262,   387,   387,   792,   178,   241,
     3003      44,   269,   101,   377,   720,   824,   104,   108,   673,   824,
     3004     108,   282,   813,   616,   205,   208,   986,   270,   122,   399,
     3005     241,   106,   101,   720,   123,   218,   241,   495,  1288,     0,
     3006     498,   405,   108,   501,   124,   220,   410,   241,   418,   813,
     3007     813,   142,   246,     3,   436,   436,   426,   712,   694,   317,
     3008     564,   317,   237,   101,     3,   103,   574,   813,    37,    37,
     3009      31,   347,   330,   331,   108,   351,   108,    37,   813,     0,
     3010       1,    65,   108,    67,    68,   101,   468,   468,   589,   347,
     3011       0,   746,   593,   351,   815,   553,  1250,   605,   124,   108,
     3012     283,   666,   610,    83,    84,  1216,   241,   813,   142,  1053,
     3013      31,   202,  1301,   614,   668,   124,   121,   618,   123,   377,
     3014     905,   332,   106,    44,  1216,    65,   813,    67,    68,   387,
     3015     939,   387,   101,   101,   103,   103,     0,   102,   118,   119,
     3016     102,   101,    63,   103,   109,    66,   108,   405,  1484,   679,
     3017     102,   681,   410,   334,  1490,   336,   875,   109,   904,   904,
     3018     904,   996,    75,  1413,   675,   673,   106,   904,   202,   123,
     3019     261,  1507,  1287,  1288,   938,   938,  1512,    65,   436,    67,
     3020      68,    10,    11,    12,    13,    14,   697,   108,  1510,   102,
     3021    1301,   107,   113,   108,   455,   286,   104,   108,   904,   102,
     3022     108,   101,   460,   938,  1526,   399,   109,  1025,    37,   124,
     3023     468,  1533,   468,   124,   472,   103,   472,   904,   476,   104,
     3024     123,   142,   472,   108,   418,   982,   472,   261,  1403,  1404,
     3025     495,    60,   426,   498,   155,   326,   501,   108,   746,   500,
     3026     423,   422,   101,   630,   103,   734,   639,   101,   108,   283,
     3027     461,   674,   286,   124,   674,   516,   101,   674,   519,   674,
     3028     521,   472,   674,   674,   124,   674,   108,   472,   101,  1458,
     3029     824,   917,   582,   637,   457,  1125,  1465,   101,   472,   925,
     3030     241,   202,   124,   108,   949,   246,    78,    79,    80,  1010,
     3031    1011,   108,   213,  1102,   676,   676,   666,   111,  1413,   124,
     3032    1085,   101,   116,   117,   101,  1025,   108,   124,   569,   101,
     3033     231,   103,   495,   105,   947,   498,   407,   408,   501,  1508,
     3034     241,   412,   124,   969,   582,   108,   102,   585,  1047,   587,
     3035     606,   101,   253,   103,   108,  1153,  1154,   472,     1,   709,
     3036     261,   124,   433,   108,   102,   846,   622,  1458,   606,    65,
     3037     124,    67,   102,    69,  1465,   102,   108,  1301,   634,   124,
     3038      76,    77,   283,   102,   622,   286,   102,   572,  1023,   108,
     3039    1025,    44,   124,   407,   408,   636,   634,   638,   412,   637,
     3040     102,    44,   102,   102,   104,   101,   108,    60,   108,   943,
     3041      63,   482,   101,    66,   103,   111,   607,  1508,   101,   433,
     3042     103,   994,   111,   123,   124,   326,   861,   101,   111,   500,
     3043     668,   332,   101,    65,   102,    67,   674,    69,   676,    65,
     3044     108,    67,    68,   102,    76,    77,   101,   882,   103,   108,
     3045      57,   102,   675,  1153,  1154,  1379,   111,   108,   399,   102,
     3046     104,   653,   101,   944,   108,   108,   707,   102,   482,   101,
     3047     103,   103,   105,   108,   697,   101,   109,   418,   734,   111,
     3048     106,   495,   720,   721,   498,   426,   500,   501,   102,   652,
     3049     143,   102,   666,   564,   108,   124,   734,   108,   101,   142,
     3050     663,   868,   155,   574,   667,   101,   407,   408,   996,   700,
     3051     104,   412,  1147,   106,   108,   102,    29,  1216,  1153,  1154,
     3052     810,   108,   101,   714,   102,    65,   179,    67,    68,   470,
     3053     108,   472,   433,   434,   605,   709,   437,   106,  1462,   610,
     3054    1464,   124,   443,     4,     5,     6,     7,     8,     9,   202,
     3055     564,  1085,   102,   124,   197,   917,   917,   124,   108,   202,
     3056     213,   101,   785,   925,   925,   855,   106,    80,    81,   470,
     3057     106,   472,  1145,   101,   102,   813,  1228,    65,   103,  1152,
     3058     105,   482,  1227,   102,   109,  1509,   824,   102,   231,   108,
     3059     113,   114,   102,   108,   495,   101,   788,   498,   108,   500,
     3060     501,    62,   102,    64,   102,    75,   798,   102,   108,   102,
     3061     108,   802,  1514,   108,   121,   108,  1315,   120,   261,   804,
     3062    1514,   264,   814,   112,   101,  1514,   103,  1118,    10,    11,
     3063      12,    13,    14,    65,   875,    67,    68,    69,    85,    86,
     3064     283,   864,    87,   286,    65,   875,    67,    68,   542,   543,
     3065     544,   545,  1287,  1226,    65,    37,    67,    68,   101,  1147,
     3066     103,   123,   900,   564,   317,   103,   904,   905,   101,   102,
     3067     103,  1323,  1039,   574,  1373,   104,   577,  1376,    60,   917,
     3068     101,   101,   452,   326,   875,   106,   976,   925,   102,   101,
     3069     875,   103,  1183,  1184,    81,    82,    10,    11,    12,    13,
     3070      14,   875,   102,   346,   605,   943,  1322,   350,   102,   610,
     3071     101,   102,   103,   101,   899,   103,   948,   102,   948,   101,
     3072     233,   103,  1421,    37,    65,   666,    67,  1426,    69,   111,
     3073     102,   101,   673,   103,   387,    76,    77,   102,   979,   902,
     3074     101,   982,   103,   984,   103,  1014,    60,   123,   101,  1237,
     3075     103,  1324,   108,  1452,   108,   109,   994,   106,  1196,  1197,
     3076     875,  1199,   101,   986,   407,   408,  1110,  1205,   709,   412,
     3077    1208,    65,   673,    67,   102,    69,  1392,   101,   102,   103,
     3078     102,  1433,    76,    77,   101,   102,   103,   101,   104,   103,
     3079     433,   434,   104,   694,   437,   104,  1037,   111,   109,  1089,
     3080     443,  1256,  1257,  1258,   109,   746,  1047,   101,   999,  1050,
     3081    1051,  1052,   455,   714,  1044,   102,   103,   111,  1041,  1471,
     3082      54,    55,   108,   109,   108,  1524,    42,    43,  1020,  1021,
     3083      28,  1530,    75,   948,  1124,   538,   539,   480,   102,   482,
     3084    1539,   484,   540,   541,  1543,   746,   102,  1085,   108,   362,
     3085     104,   108,   495,  1044,  1470,   498,   109,   500,   501,  1044,
     3086     546,   547,    65,   107,   452,   102,    69,  1493,   107,   107,
     3087    1044,   101,  1110,    76,    77,   102,   124,  1522,   949,    75,
     3088     102,   102,  1498,   653,   109,  1077,  1078,   102,   102,   102,
     3089     108,   101,  1055,   104,   102,  1118,   102,   102,   101,    28,
     3090     103,   802,   104,  1088,   101,   104,   107,   102,   111,  1535,
     3091     102,   102,     4,     5,     6,     7,     8,     9,   102,   102,
     3092     102,   564,   102,   102,   102,   996,  1417,   104,   441,  1044,
     3093     123,   574,   102,   446,   875,   949,   102,  1375,   102,   582,
     3094      32,   104,    10,    11,    12,    13,    14,     3,   102,   102,
     3095     107,   102,   108,   102,    10,    11,    12,    13,    14,   104,
     3096    1183,  1184,   605,  1195,  1194,  1195,   479,   610,   481,    37,
     3097      62,   104,    64,   616,   875,  1216,   102,   108,   102,   101,
     3098     108,    37,   109,   106,   104,   104,  1216,   108,  1226,  1480,
     3099    1481,   104,    60,   102,    65,   102,    67,    68,    69,   104,
     3100     108,   102,   108,  1194,    60,    76,    77,   272,   104,  1241,
     3101     101,  1241,   101,   101,   101,  1256,  1257,  1258,   788,   101,
     3102     285,   286,   124,   107,   102,  1216,   102,   104,   798,     3,
     3103     101,  1216,   297,   101,   107,   103,    10,    11,    12,    13,
     3104      14,   102,  1216,   111,   814,   124,   121,   948,   949,   106,
     3105     108,   694,  1396,   104,   108,   104,    65,   102,    67,   102,
     3106      69,   326,   104,    37,   104,   653,  1296,    76,    77,   104,
     3107     102,  1301,  1264,   104,  1315,   102,   104,    45,   104,   102,
     3108    1195,   724,   106,  1275,  1276,  1277,    60,   124,   124,   107,
     3109     124,   124,   101,   104,   103,   996,  1386,   107,   363,   124,
     3110     109,  1216,   111,  1044,  1336,  1296,  1336,   102,   104,   107,
     3111    1301,  1514,   104,   626,  1514,   104,  1301,  1514,   104,  1514,
     3112     104,   104,  1514,  1514,   104,  1514,  1241,  1301,   104,   102,
     3113     102,    55,  1373,  1325,   104,  1376,   101,   104,   101,  1395,
     3114      54,   102,   104,  1044,   102,   124,  1309,   106,  1386,  1493,
     3115      75,   102,   109,  1515,  1515,   102,  1227,  1395,  1396,   104,
     3116     104,     3,  1403,  1404,   102,   104,   102,   810,    10,    11,
     3117      12,    13,    14,  1535,  1535,   101,   689,    89,   107,    65,
     3118    1421,    67,   695,    69,   104,  1426,  1301,   102,     0,     1,
     3119      76,    77,   102,   102,  1417,    37,   102,   108,   102,     0,
     3120     788,    40,   109,   124,    89,  1437,  1147,  1437,   124,   106,
     3121     798,  1452,   855,  1227,   102,   101,   124,   103,    60,    31,
     3122      32,  1336,    75,   124,   102,   111,   814,   109,  1458,   104,
     3123      31,   107,    44,  1514,   104,  1465,   101,  1514,  1514,   107,
     3124     124,    42,   102,    44,   107,   124,  1147,   102,   649,   548,
     3125    1020,  1021,   549,  1494,    66,  1493,   551,  1480,  1481,    60,
     3126     550,   552,    63,  1126,  1505,    66,  1216,  1458,  1381,  1510,
     3127     535,   536,   537,  1458,  1465,  1216,  1514,  1515,  1508,  1515,
     3128    1465,  1481,  1543,  1524,  1458,  1526,  1310,  1496,  1120,  1530,
     3129     102,  1465,  1533,  1194,  1195,  1121,  1237,  1535,  1539,  1535,
     3130    1073,  1465,  1543,  1466,   947,   948,   949,  1077,  1078,   574,
     3131     925,   446,   681,   970,   927,  1216,   434,  1508,   434,   569,
     3132     868,   631,  1437,  1508,   945,   724,  1227,  1228,  1241,   472,
     3133     734,   143,  1495,   976,  1508,    -1,  1237,    -1,    -1,   151,
     3134    1241,    -1,   143,  1458,    -1,    -1,    -1,    -1,    -1,    -1,
     3135    1465,   994,    65,   996,   155,   868,    69,    -1,    -1,    -1,
     3136    1301,   874,    -1,    76,    77,    -1,    -1,   179,    -1,    -1,
     3137      -1,  1534,    -1,    -1,    -1,    -1,    -1,   178,   179,    -1,
     3138      -1,   193,    -1,  1546,   196,   197,    -1,    -1,   101,    -1,
     3139     202,    -1,    65,  1508,    67,  1296,    69,    -1,   111,    -1,
     3140    1301,   202,    -1,    76,    77,    -1,    -1,    -1,    -1,    54,
     3141     222,    -1,   213,    -1,   226,    65,   228,    67,    68,    69,
     3142      -1,  1322,  1323,   235,    -1,    -1,    76,    77,   101,   241,
     3143     103,    -1,  1020,  1021,   246,  1336,    -1,    65,   111,    -1,
     3144     241,    69,    -1,    -1,   256,   710,  1089,    -1,    76,    77,
     3145      -1,  1522,   264,  1467,   255,    -1,    -1,   970,   103,    -1,
     3146      -1,   106,    -1,    -1,    -1,  1235,    -1,    65,    -1,    -1,
     3147      -1,    69,    -1,   101,    -1,   103,    -1,    -1,    76,    77,
     3148      -1,  1124,  1496,   111,    -1,    -1,    -1,    -1,   753,  1077,
     3149    1078,  1392,    -1,    -1,  1264,    -1,    -1,    -1,    -1,    -1,
     3150      63,    -1,  1145,   101,    -1,  1275,  1276,  1277,  1522,  1152,
     3151      -1,    -1,     0,   111,   326,    -1,   317,  1458,    -1,    -1,
     3152      -1,   333,    -1,    -1,  1465,    -1,    -1,    -1,    -1,    -1,
     3153     331,    -1,  1433,    -1,   346,    -1,  1437,    -1,   350,    -1,
     3154      -1,   353,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,
     3155     113,    -1,    -1,    -1,    -1,  1325,    -1,  1458,    -1,    -1,
     3156    1073,    -1,    -1,    -1,  1465,   210,  1467,  1508,    -1,  1470,
     3157    1471,    -1,    -1,  1086,  1087,    -1,    -1,    -1,    66,    -1,
     3158      -1,    -1,    -1,  1226,  1227,  1228,   387,   399,    -1,    -1,
     3159      -1,    -1,   155,    -1,    -1,  1496,    -1,  1498,  1241,    -1,
     3160      65,   413,    67,    68,    69,    -1,   418,  1508,    -1,    -1,
     3161      -1,    76,    77,    -1,   426,    -1,    -1,   262,    -1,    -1,
     3162      -1,  1522,    -1,    -1,   269,   890,    -1,    -1,    -1,    -1,
     3163      -1,    -1,    63,    -1,    -1,   436,   101,    -1,    -1,    -1,
     3164     452,    -1,    73,   455,    -1,    -1,    -1,  1235,    -1,    -1,
     3165     213,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,
     3166     472,    -1,    -1,   151,    -1,    -1,    -1,    -1,   480,    -1,
     3167      -1,   472,   484,    -1,    -1,   476,  1264,  1190,    -1,  1322,
     3168    1323,  1324,   113,    -1,    -1,   330,   249,  1275,  1276,  1277,
     3169     253,    -1,    -1,  1336,    -1,    -1,    -1,    -1,    -1,    -1,
     3170     512,    -1,   347,    -1,    -1,    -1,   351,    90,    91,    92,
     3171      93,    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,
     3172      -1,    -1,    -1,    -1,   155,    -1,    -1,    -1,    -1,    -1,
     3173      -1,   996,    -1,    -1,   222,    -1,    -1,  1325,    -1,    -1,
     3174     123,    -1,    -1,  1386,    -1,   557,    -1,    -1,    -1,  1392,
     3175      -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,
     3176     572,    -1,   574,    -1,    -1,    -1,    -1,    -1,    -1,   332,
     3177     582,    -1,    -1,    -1,    -1,   587,    -1,    -1,    -1,  1044,
     3178      -1,     0,   213,    -1,   585,    -1,   587,    -1,    -1,    -1,
     3179    1433,    -1,    -1,   605,  1437,    -1,    -1,    -1,   610,    -1,
     3180      -1,    -1,    -1,    -1,   616,    -1,    -1,    -1,   620,   621,
     3181      -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,   249,    -1,
     3182      -1,    -1,   253,   635,  1467,    -1,    -1,  1470,  1471,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,    -1,
     3184      -1,   653,    -1,    -1,    -1,   333,    -1,    66,   411,    -1,
     3185      -1,    -1,    -1,  1496,   666,  1498,    -1,    -1,    -1,    -1,
     3186      -1,   673,    -1,    -1,   676,   353,    -1,   668,    -1,   182,
     3187      -1,    -1,    -1,   674,    -1,   676,   189,  1390,    -1,  1522,
    31963188      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3197      707,    -1,   790,   710,   853,    -1,    -1,    10,    11,    12,
    3198       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3199       23,    24,    25,    26,   873,    -1,    29,    30,    31,    -1,
    3200       -1,    -1,    -1,    -1,    37,    -1,    -1,   744,    -1,    -1,
    3201       -1,    -1,    -1,    10,    11,    12,    13,    14,   897,    -1,
    3202     1224,    -1,    -1,   698,   903,    -1,    -1,    60,    -1,    -1,
    3203       -1,    -1,    65,    -1,    67,    68,    69,   712,    -1,    -1,
    3204       37,    -1,   149,    76,    77,    -1,    -1,    -1,    -1,   786,
    3205       -1,    -1,    -1,    -1,    -1,    -1,    -1,   732,   937,   796,
    3206       -1,    -1,    -1,    60,   801,   802,   945,   946,   101,    -1,
    3207      103,    -1,    -1,    -1,    -1,   812,    -1,    -1,   111,    -1,
    3208       -1,   960,    -1,    -1,   902,   903,    -1,    -1,    -1,    -1,
    3209       -1,    -1,   910,    -1,    -1,   974,    -1,     0,    -1,    10,
    3210       11,    12,    13,    14,   101,    -1,   103,    -1,    -1,    -1,
    3211       -1,    -1,    -1,   992,   111,   994,    -1,    -1,    -1,    10,
    3212       11,    12,    13,    14,    -1,   800,    37,    -1,    31,    -1,
    3213       -1,    -1,   239,  1012,    -1,    -1,   873,   244,    -1,  1018,
    3214     1019,    -1,  1021,  1022,  1023,    -1,    37,    -1,    -1,    60,
    3215       -1,    -1,    -1,    -1,    65,    -1,    67,    -1,    69,    -1,
    3216      897,    64,    -1,  1042,    -1,    76,    77,    -1,   986,    60,
    3217       -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
    3218     1384,    -1,    -1,    -1,    -1,    76,    77,  1005,    -1,  1393,
    3219      101,    -1,   103,  1225,    -1,    -1,  1075,  1076,    -1,    -1,
    3220      111,    -1,    -1,    -1,    -1,    -1,    -1,  1086,  1087,    -1,
    3221      101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3222      111,   558,   559,   960,   331,    -1,    -1,    -1,    -1,    -1,
     3189      -1,    -1,    -1,    -1,    -1,    -1,    -1,   709,   461,    -1,
     3190     712,   332,    -1,  1168,    -1,    -1,    -1,    -1,    -1,   721,
     3191      -1,   399,   724,    -1,    -1,    -1,    -1,    -1,    -1,   720,
     3192     721,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
     3193     418,    -1,   151,    -1,   746,    -1,    -1,   582,   426,   751,
     3194      -1,    -1,    -1,    -1,    -1,   258,    -1,    -1,    -1,    -1,
    32233195      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3224       -1,    -1,    -1,  1122,   351,    -1,   149,    -1,    -1,   586,
    3225       -1,    -1,   589,   590,    -1,   592,    -1,   594,   595,    -1,
    3226       -1,    -1,   599,   600,  1143,  1083,  1145,    -1,    -1,    -1,
    3227     1088,  1150,  1151,  1152,    -1,    -1,    -1,    -1,    -1,    -1,
    3228       -1,  1018,  1019,    -1,  1021,  1022,  1023,    -1,    -1,    -1,
    3229      397,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3230       -1,    -1,    -1,    -1,   411,  1042,    -1,    -1,    -1,   416,
    3231       -1,    -1,    -1,    -1,  1193,    -1,    -1,   424,    -1,    -1,
    3232       -1,    -1,   997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3233       -1,  1210,    -1,    -1,    -1,  1214,   239,    -1,  1075,  1076,
    3234       -1,   244,    -1,   450,    -1,  1224,   683,   684,    -1,  1086,
    3235       -1,    -1,   689,    -1,  1233,    -1,  1235,    -1,    -1,    -1,
    3236     1239,   468,    -1,   470,    -1,    -1,    10,    11,    12,    13,
    3237       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3238       24,    25,    26,  1262,    -1,    29,    30,    31,    -1,    -1,
    3239       -1,    -1,    -1,    37,  1273,  1274,  1275,    -1,    -1,    -1,
    3240       -1,    -1,    -1,   510,    -1,    -1,  1285,  1286,  1145,    -1,
    3241       -1,    -1,    -1,    -1,  1151,  1152,    60,    -1,    -1,    -1,
    3242     1299,    65,    -1,    67,    68,    -1,    -1,    -1,   331,    -1,
    3243       -1,    -1,    -1,  1465,    -1,    -1,    -1,    -1,    -1,    -1,
    3244       -1,    -1,    -1,  1322,  1323,    -1,    -1,    -1,   351,    -1,
    3245       -1,    -1,    -1,    -1,    -1,  1334,  1193,    -1,    -1,   103,
    3246       -1,    -1,  1494,   570,    -1,    -1,    -1,   111,    -1,    -1,
    3247       -1,    -1,    -1,  1210,    -1,    -1,    -1,  1214,    -1,     0,
    3248       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1520,    -1,
    3249       -1,    -1,    -1,    -1,   397,    -1,  1233,    -1,  1235,    -1,
    3250       -1,    -1,    -1,    -1,    -1,  1384,    -1,    -1,   411,    -1,
    3251       31,   618,   619,   416,    -1,    -1,    -1,  1192,    -1,    -1,
    3252       -1,   424,    -1,    -1,    -1,  1262,   633,    -1,    -1,    -1,
    3253       -1,    -1,  1411,    -1,    -1,    -1,  1273,  1274,  1275,    -1,
    3254       -1,    -1,    -1,    64,   651,    -1,    -1,   450,  1285,  1286,
    3255       -1,    -1,    -1,    -1,    -1,    -1,  1435,   664,    -1,    -1,
    3256       -1,    -1,  1299,    -1,   671,   468,    -1,   470,    -1,    -1,
    3257       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1456,    -1,    -1,
    3258       -1,    -1,    -1,    -1,  1463,    -1,  1323,    -1,    -1,    -1,
     3196      -1,   606,    -1,    -1,   452,    -1,    10,    11,    12,    13,
     3197      14,    -1,    -1,    -1,    -1,    -1,   788,   622,    -1,    -1,
     3198     411,    -1,   470,    -1,   472,    -1,   798,    -1,    -1,   634,
     3199      -1,   803,   804,    37,    -1,    -1,    -1,   428,   810,   312,
     3200      -1,    -1,   814,    -1,    -1,    -1,    -1,   320,    -1,    -1,
     3201     323,   823,   813,    -1,   577,    -1,    60,    -1,    -1,    -1,
     3202      -1,    65,   241,   824,   512,    69,    -1,   246,    -1,    -1,
     3203     461,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
     3204      -1,    -1,    -1,   855,   607,    -1,    -1,    -1,    -1,   612,
     3205      -1,    -1,    10,    11,    12,    13,    14,   101,    -1,   103,
     3206      -1,    -1,    -1,   875,    -1,    -1,   379,   111,    -1,    -1,
     3207     383,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3208      -1,    -1,    -1,    -1,   572,    -1,    -1,   899,    -1,   734,
     3209      -1,    -1,    -1,   905,    -1,    -1,    -1,    -1,    -1,    -1,
     3210      -1,    -1,    60,   904,   905,    -1,    -1,    65,    -1,    67,
     3211      -1,    69,    -1,    -1,   333,    -1,   917,    -1,    76,    77,
     3212      -1,    -1,    -1,    -1,   925,    -1,    -1,   939,    -1,    -1,
     3213      -1,    -1,   620,   621,   353,   947,   948,   700,    -1,    -1,
     3214      -1,    -1,   943,   101,    -1,   103,   577,   635,    -1,    -1,
     3215     962,   714,    -1,   111,   467,    -1,    -1,    -1,    -1,    -1,
     3216      -1,    -1,    -1,    -1,   976,   653,    -1,    -1,    -1,    -1,
     3217      -1,    -1,    -1,    -1,    -1,    -1,   607,    -1,   666,    -1,
     3218     399,   612,   994,    -1,   996,   673,    -1,    -1,    -1,    -1,
     3219      -1,    -1,    -1,    -1,   413,    -1,    -1,     0,    -1,   418,
     3220      -1,    -1,  1014,    -1,    -1,    -1,    -1,   426,  1020,  1021,
     3221      -1,  1023,  1024,  1025,    -1,    -1,    -1,    -1,    -1,    -1,
     3222      -1,   709,    -1,    -1,   712,    -1,    -1,    -1,    31,    -1,
     3223      -1,    -1,  1044,   452,    -1,    -1,    -1,    -1,    -1,   802,
     3224      -1,    -1,    -1,   556,   557,    -1,    -1,    -1,    -1,    -1,
     3225      -1,   470,    -1,   472,    -1,   900,    -1,    -1,   746,    -1,
     3226      -1,    -1,    -1,    66,    -1,  1077,  1078,    -1,    -1,   700,
     3227      -1,    -1,    -1,    -1,    -1,    -1,  1088,  1089,    -1,    -1,
     3228      -1,    -1,    -1,   714,  1085,    -1,    -1,    -1,    -1,    -1,
     3229      -1,    -1,    -1,   512,    -1,    10,    11,    12,    13,    14,
     3230     788,    -1,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,
     3231     798,    -1,  1124,    -1,    -1,   803,   804,    -1,    25,    26,
     3232      27,    -1,    37,    -1,    -1,    -1,   814,   640,    -1,    -1,
     3233      -1,   644,    -1,  1145,    -1,  1147,    -1,    -1,    -1,    -1,
     3234    1152,  1153,  1154,    -1,    -1,    60,    -1,    -1,   151,   994,
     3235      65,    -1,    67,   572,    69,   668,    -1,    -1,    -1,    -1,
     3236      -1,    76,    77,    -1,    -1,    -1,    -1,   680,    -1,    -1,
     3237      -1,   802,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3238      -1,    -1,    -1,  1195,    -1,    -1,   101,   875,    95,    -1,
     3239      97,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3240    1212,   620,   621,    -1,  1216,    -1,    -1,    -1,    -1,    -1,
     3241      -1,   899,    -1,    -1,  1226,    -1,   635,    -1,    -1,    -1,
     3242       0,     1,    -1,  1235,    -1,  1237,    -1,    -1,    -1,  1241,
     3243      -1,    -1,    -1,    -1,   653,    -1,   999,    -1,   241,    -1,
     3244      -1,    -1,    -1,   246,    -1,    -1,    -1,   666,    -1,    -1,
     3245      -1,    31,  1264,    -1,   673,    -1,    -1,    -1,    -1,    -1,
     3246      -1,    -1,    -1,  1275,  1276,  1277,    -1,    -1,   175,    -1,
     3247      -1,    -1,    -1,    -1,   962,  1287,  1288,   184,   185,   792,
     3248      -1,    -1,   189,    63,   191,   192,    66,    -1,    -1,  1301,
     3249     709,    -1,    -1,   712,     0,    10,    11,    12,    13,    14,
     3250      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3251      25,    26,  1324,  1325,    29,    30,    31,    32,    33,    34,
     3252      -1,    -1,    37,    -1,  1336,    31,    -1,   746,    -1,    -1,
     3253     333,    -1,  1020,  1021,    -1,  1023,  1024,  1025,    -1,    -1,
     3254      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3255     353,    -1,    67,    68,    -1,    -1,  1044,    -1,    -1,    -1,
     3256      66,    10,    11,    12,    13,    14,    -1,    -1,   999,   788,
     3257      -1,   151,    -1,    -1,  1386,    -1,    -1,    -1,    -1,   798,
     3258      -1,  1226,    -1,    -1,   803,   804,    -1,    -1,    37,  1077,
     3259    1078,   904,   905,    -1,    -1,   814,   399,    -1,    -1,   912,
     3260    1088,  1413,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3261     413,    60,    -1,    -1,    -1,   418,    65,    -1,    67,    -1,
     3262      69,    -1,    -1,   426,    -1,  1437,    -1,    76,    77,    -1,
     3263      -1,  1194,    -1,   213,    -1,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,    -1,    -1,   151,  1458,    -1,    -1,   452,
     3265      -1,    -1,   101,  1465,   103,    -1,   875,    -1,    -1,  1147,
     3266      -1,   241,   111,    -1,    -1,  1153,  1154,   470,    -1,   472,
     3267      10,    11,    12,    13,    14,   988,    -1,    -1,    -1,    -1,
     3268     899,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,
     3269      11,    12,    13,    14,  1007,    -1,  1508,    37,    -1,    -1,
     3270      -1,    -1,    -1,  1515,    -1,    -1,    -1,  1195,    -1,   512,
     3271      -1,    -1,    -1,  1514,    -1,    -1,    37,    -1,    -1,    -1,
     3272      60,    -1,    -1,    -1,  1212,    65,    -1,    67,  1216,    69,
     3273      -1,    -1,    -1,  1296,    -1,   241,    76,    77,    -1,    60,
     3274     246,  1386,    -1,   962,    65,    -1,    67,  1235,    69,  1237,
     3275    1395,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,
     3276      -1,   101,    -1,  1194,    -1,    -1,    -1,    -1,    -1,   572,
     3277      -1,   111,  1085,   353,    -1,    -1,  1264,  1090,    -1,    -1,
     3278     101,    -1,   103,    -1,    -1,    -1,    -1,  1275,  1276,  1277,
     3279     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1287,
     3280    1288,  1020,  1021,    -1,  1023,  1024,  1025,    10,    11,    12,
     3281      13,    14,    -1,  1301,    -1,    -1,    -1,   620,   621,    -1,
     3282      -1,    -1,    -1,    -1,    -1,  1044,    -1,   333,    -1,    -1,
     3283      -1,    -1,   635,   413,    37,    -1,    -1,  1325,    -1,    -1,
     3284      -1,    -1,    -1,    -1,    -1,    -1,    -1,   353,    -1,    -1,
     3285     653,    -1,    -1,   560,   561,    -1,    -1,    60,  1077,  1078,
     3286      -1,    -1,    65,   666,    -1,  1296,    69,    -1,    -1,  1088,
     3287     673,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
     3288      -1,   588,    -1,    -1,   591,   592,    -1,   594,    -1,   596,
     3289     597,    -1,   472,   399,   601,   602,    -1,    -1,   101,    -1,
     3290      -1,    -1,    -1,    -1,    -1,    -1,   709,   413,   111,   712,
     3291      -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3292     426,    -1,    -1,    -1,    -1,  1413,    -1,    -1,  1147,    -1,
     3293      -1,    -1,   512,    -1,  1153,  1154,    -1,    -1,    -1,    -1,
     3294      -1,    -1,    -1,   746,    -1,    -1,   452,    -1,    -1,    -1,
    32593295      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3260      707,    -1,    -1,   710,    -1,    -1,    -1,   510,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1294,
    3262       -1,     0,     1,    -1,    -1,    -1,    -1,  1506,   149,    -1,
    3263       -1,    -1,    -1,    -1,  1513,    -1,    -1,   744,    -1,    -1,
    3264       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3265       -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3266       -1,    -1,    -1,    25,    26,    27,    -1,   570,    -1,    -1,
    3267       -1,    -1,    -1,    -1,  1411,    -1,    -1,    -1,    -1,   786,
    3268       -1,    -1,    61,    -1,    -1,    64,    -1,    -1,    -1,   796,
    3269       -1,    -1,    -1,    -1,   801,   802,    -1,    -1,    -1,    -1,
    3270       -1,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,
    3271       -1,    -1,    -1,    -1,    -1,   618,   619,    -1,   239,  1456,
    3272       -1,    -1,    -1,   244,    -1,    -1,  1463,    -1,    -1,    -1,
    3273      633,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    3274     1077,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   651,    -1,
    3275       -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,
    3276       -1,   664,    -1,    -1,    -1,    -1,   873,    -1,   671,  1506,
    3277      149,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3278       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3279      897,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3280       -1,    -1,    -1,    -1,   707,    -1,    -1,   710,    -1,    -1,
    3281      331,   173,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
    3282      182,   183,    60,    -1,    -1,   187,    -1,   189,   190,    -1,
    3283      351,    -1,   211,    71,    -1,    -1,    -1,    -1,    -1,    -1,
    3284       -1,   744,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3285       -1,    -1,    -1,   960,    -1,    -1,    -1,    -1,    -1,    -1,
    3286      239,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3287       -1,    -1,    -1,    -1,  1211,    -1,   397,    -1,    -1,    -1,
    3288       -1,    -1,    -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,
    3289      411,    -1,    -1,   796,   256,   416,    -1,    -1,   801,   802,
    3290       -1,    -1,    -1,   424,    -1,    -1,    -1,    -1,    -1,   812,
    3291       -1,  1018,  1019,    -1,  1021,  1022,  1023,    -1,    -1,    -1,
    3292       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   450,
    3293       -1,    61,    -1,    -1,    -1,  1042,    -1,    -1,    -1,    -1,
    3294       -1,    71,    -1,    73,    -1,    75,    -1,   468,    -1,   470,
    3295       -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3296       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1075,  1076,
    3297      873,    -1,   351,    -1,    -1,    -1,    -1,    -1,    -1,  1086,
    3298       -1,   111,    -1,   113,   114,   115,    -1,    -1,    -1,   510,
    3299       -1,    -1,    -1,    -1,   897,    -1,    -1,    -1,    -1,    -1,
    3300       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   139,
    3301       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,    -1,    -1,
    3303       -1,    -1,   411,    -1,    48,    -1,    50,    -1,  1145,    53,
    3304       54,    55,    -1,    57,  1151,  1152,    -1,    -1,    -1,   570,
    3305       -1,    -1,    -1,    -1,    -1,    -1,    -1,   960,    72,    -1,
    3306       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3307       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3308       -1,   211,    -1,   213,   214,   215,  1193,    -1,    -1,    -1,
    3309       -1,   470,    -1,    -1,    -1,    -1,    -1,   618,   619,    -1,
    3310       -1,    -1,    -1,  1210,    -1,    -1,    -1,  1214,    -1,    -1,
    3311       -1,    -1,   633,    -1,    -1,  1018,  1019,   247,  1021,  1022,
    3312     1023,   251,    -1,    -1,    -1,    -1,  1233,    -1,  1235,    -1,
    3313      651,   510,    -1,    -1,    -1,   149,    -1,   267,    -1,  1042,
    3314       -1,    -1,    -1,   664,    -1,    -1,    -1,    -1,    -1,    -1,
    3315      671,    -1,    -1,    -1,    -1,  1262,    -1,    -1,    -1,    -1,
    3316       -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,  1275,    -1,
    3317       -1,    -1,  1075,  1076,    -1,    -1,    -1,    -1,  1285,  1286,
    3318       -1,    -1,    -1,  1086,    -1,   315,   707,    -1,    -1,   710,
    3319       -1,   570,  1299,    -1,    -1,    -1,   558,   559,    -1,    -1,
    3320      330,    -1,    -1,    -1,    -1,   335,   336,    -1,    -1,    -1,
    3321       -1,    -1,    -1,   343,    -1,    -1,  1323,    -1,    -1,    -1,
    3322       -1,    -1,    -1,   744,   586,    -1,    -1,   589,   590,    -1,
    3323      592,    -1,   594,   595,    -1,    -1,    -1,   599,   600,   618,
    3324      619,    -1,  1145,    -1,    -1,    -1,    -1,    -1,  1151,  1152,
    3325       -1,    -1,    -1,    -1,   633,   385,    -1,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,   786,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,   403,    -1,   796,    -1,    -1,    -1,   409,
    3328      801,   802,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3329     1193,   812,    -1,    -1,    -1,    -1,   426,    -1,    -1,   429,
    3330      430,    -1,    -1,    -1,  1411,    -1,    -1,  1210,    -1,    -1,
    3331      324,  1214,   326,    -1,    -1,   445,   678,    -1,    -1,    -1,
    3332       -1,   683,   684,   337,   338,    -1,    -1,   689,    -1,   459,
    3333     1233,   710,  1235,    -1,    -1,    -1,   466,   351,    -1,    -1,
    3334       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1456,
    3335       -1,    36,   873,    38,    -1,    -1,  1463,    -1,    -1,  1262,
    3336       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337     1273,  1274,  1275,    -1,    59,    -1,   897,    -1,    -1,    -1,
    3338       65,    -1,  1285,  1286,    69,    -1,    -1,    72,    73,    74,
    3339       75,    76,    77,    -1,    79,    80,  1299,   411,    -1,  1506,
    3340       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3341       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3342     1323,   106,    -1,   802,    -1,   110,   111,   112,   113,   114,
    3343      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   960,
    3344       -1,    -1,    -1,    -1,    -1,   575,    -1,     0,    -1,    -1,
    3345        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3346       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3347       23,    24,    25,    26,    -1,   605,    29,    30,    31,    32,
    3348      610,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,    -1,
    3349       -1,    -1,    -1,    -1,   873,    -1,   510,  1018,  1019,    -1,
    3350     1021,  1022,  1023,    -1,    57,    -1,    -1,    60,  1411,    -1,
    3351       -1,    -1,    65,    -1,    67,    68,    69,    -1,   897,    -1,
    3352       -1,  1042,    -1,    76,    77,    10,    11,    12,    13,    14,
    3353       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3354       25,    26,    27,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3355      103,    -1,    37,  1456,  1075,  1076,   570,    -1,   111,    -1,
    3356     1463,    -1,    -1,    -1,    -1,  1086,    -1,   946,   698,    -1,
    3357       -1,    -1,    36,    -1,    38,    60,    -1,    -1,    -1,    -1,
    3358       -1,   960,   712,    -1,    -1,    -1,    71,    -1,    -1,    -1,
    3359       -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
    3360       -1,    65,   732,  1506,    -1,    69,    -1,   621,    72,    73,
    3361       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3362       -1,    -1,    -1,    87,  1145,    -1,    -1,    -1,    -1,    -1,
    3363     1151,  1152,    -1,    -1,    -1,   649,    -1,   101,    -1,   103,
    3364       -1,    -1,  1021,  1022,  1023,   109,   110,   111,   112,   113,
    3365      114,   115,    -1,   667,   668,    -1,    -1,   671,    -1,    -1,
    3366      790,    -1,    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,
    3367      800,    -1,  1193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3368       -1,    -1,    -1,    -1,    -1,   699,    -1,   701,    -1,  1210,
    3369       -1,    -1,   822,  1214,   708,   709,    -1,    -1,    -1,   713,
    3370       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,
    3371       -1,   725,  1233,    -1,  1235,  1077,   730,    -1,    -1,    -1,
    3372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3373      744,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3374      754,  1262,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3375       -1,    -1,  1273,  1274,  1275,    -1,    -1,    -1,    -1,    -1,
    3376       -1,    -1,    -1,    -1,  1285,  1286,    -1,    -1,    -1,    -1,
    3377       -1,    -1,  1151,  1152,    -1,    -1,    -1,    -1,  1299,    -1,
    3378       -1,    -1,    -1,    -1,    -1,   915,    -1,    -1,   802,    -1,
    3379       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3380       -1,    -1,  1323,    -1,    -1,    -1,    -1,   821,    -1,    -1,
    3381       -1,   941,    -1,  1192,  1193,    -1,    -1,    -1,    -1,    -1,
    3382       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3383       -1,  1210,    -1,    -1,    -1,  1214,    -1,   967,    -1,    -1,
    3384      854,    -1,   856,   857,   858,    -1,    -1,   861,   862,  1211,
    3385       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3386     1239,    -1,   876,    -1,    -1,    -1,    -1,   997,    -1,    -1,
    3387       -1,    -1,    -1,    -1,   888,    -1,    -1,   891,    -1,    -1,
    3388       -1,    -1,    -1,   897,  1014,    -1,    -1,    -1,    -1,    -1,
    3389     1411,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3390       -1,    -1,    -1,    -1,    -1,    -1,  1285,  1286,    -1,    -1,
    3391       -1,    -1,    -1,    -1,    -1,  1294,    -1,    -1,    -1,    -1,
    3392     1299,   935,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3393       -1,    -1,    -1,    -1,    -1,  1456,    -1,    -1,    -1,    -1,
    3394       -1,    -1,  1463,    -1,    -1,    -1,   960,    -1,    -1,    -1,
    3395       -1,    -1,    -1,  1083,    -1,  1334,    -1,    -1,    -1,   973,
    3396       -1,    -1,    -1,    -1,   978,    -1,    41,   981,    -1,    -1,
    3397     1100,   985,    -1,    -1,    -1,    -1,   990,    -1,    -1,    -1,
    3398      994,   995,   996,    -1,    -1,  1506,    -1,    -1,    -1,    -1,
    3399     1004,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3400     1014,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3401       -1,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1033,
    3402     1034,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3403       -1,    -1,  1411,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3404       -1,    -1,    -1,    -1,  1058,    -1,    -1,  1061,    -1,    -1,
    3405       -1,    -1,    -1,    -1,    -1,    -1,  1435,    -1,    -1,    -1,
    3406       -1,    -1,  1192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3407       -1,    -1,  1086,    -1,    -1,   150,    -1,  1456,    -1,    -1,
    3408       -1,    -1,    -1,    -1,  1463,    -1,    -1,    -1,   163,    -1,
    3409       -1,  1105,    -1,    -1,    -1,    -1,    -1,  1111,  1112,    -1,
    3410       -1,    -1,    -1,    -1,    -1,    -1,  1120,    -1,    -1,    -1,
    3411      185,    -1,  1126,    -1,    -1,  1129,    -1,  1131,    -1,    -1,
    3412     1134,    -1,    -1,    -1,   199,    -1,    -1,  1506,    -1,    -1,
    3413       -1,  1145,   207,    -1,    -1,  1149,    -1,    -1,    -1,    -1,
    3414       -1,    -1,   217,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3415       -1,    -1,  1166,   228,  1168,  1169,  1170,  1171,    -1,    -1,
    3416       -1,    -1,    -1,    -1,  1294,   240,    -1,    -1,    -1,    -1,
    3417      245,  1185,    -1,  1187,    -1,    -1,    -1,  1191,    -1,    -1,
    3418       -1,    -1,    -1,   258,    -1,    -1,    -1,    -1,    -1,   264,
    3419       -1,   266,    -1,    -1,    -1,    -1,  1210,    -1,    -1,    -1,
    3420       -1,    -1,    -1,    -1,    -1,  1219,  1220,   282,    -1,    -1,
    3421        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3422       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3423       23,    24,    25,    26,    27,    -1,    29,    30,    31,    32,
    3424       -1,    -1,    35,    -1,    37,    -1,    -1,    -1,   323,    -1,
    3425       -1,    -1,    -1,    -1,    -1,    -1,  1270,  1271,    -1,    -1,
    3426       -1,    -1,  1276,  1277,    -1,    -1,    -1,    60,    -1,    -1,
    3427       -1,    -1,    -1,  1287,    67,    68,    -1,   352,    71,    -1,
    3428       -1,   356,   357,    -1,   359,    -1,    -1,    -1,    -1,    -1,
    3429      365,   366,    -1,   368,   369,    -1,   371,    -1,   373,    -1,
    3430       -1,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
    3431      103,    -1,    -1,    -1,    -1,   390,    -1,    -1,   111,    -1,
    3432       -1,    -1,    -1,   398,  1338,    -1,    -1,    -1,    -1,    -1,
    3433       -1,    36,    37,    38,    -1,    -1,  1350,    -1,    -1,    -1,
    3434     1354,  1355,  1356,    -1,    -1,    -1,    -1,   422,    -1,    -1,
    3435       -1,    -1,  1366,    -1,    59,    60,    -1,    -1,   433,    -1,
    3436       65,  1375,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3437       75,    76,    77,    -1,    79,    80,    -1,  1391,    -1,    -1,
    3438       -1,   456,    87,    -1,    -1,    -1,    -1,   462,    -1,    -1,
    3439       -1,    -1,   467,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3440       -1,    -1,    -1,  1533,    -1,   110,   111,   112,   113,   114,
    3441      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3442       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   503,  1443,
    3443     1444,    -1,    -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,
    3444       -1,    -1,  1456,   518,    -1,    -1,    -1,    -1,    -1,  1463,
    3445       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3446       20,    21,    22,    23,    24,    25,    26,    27,   180,    29,
    3447       30,    31,    -1,    -1,    -1,   187,  1490,    37,    -1,   554,
    3448       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   563,    -1,
    3449      565,    -1,    -1,    -1,    -1,    -1,   571,    -1,    -1,    -1,
    3450       60,    -1,    -1,    -1,  1518,    -1,    -1,    67,    68,   584,
    3451       -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3452       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1543,
    3453       -1,    -1,    -1,    -1,  1548,    -1,    -1,    -1,    -1,    -1,
    3454       -1,   101,    -1,   103,   256,    -1,    -1,    -1,   623,    -1,
    3455       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
    3456        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3457       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3458       24,    25,    26,    -1,   659,    29,    30,    31,    32,    -1,
    3459       -1,    35,    -1,    37,    38,    -1,    -1,    -1,   310,    -1,
    3460       -1,    -1,    -1,    -1,    -1,    -1,   318,   319,    -1,   321,
    3461      322,    -1,   324,    57,    -1,    -1,    60,   329,    -1,    -1,
    3462       -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
    3463       -1,    -1,    76,    77,    -1,    -1,   348,    -1,    -1,   351,
    3464       -1,   716,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3465       -1,   726,   727,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3466       -1,    -1,    -1,   738,    -1,   377,    -1,   111,    -1,   381,
    3467       -1,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
    3468      755,    -1,   757,    -1,    -1,    -1,   761,    -1,    -1,    -1,
    3469       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   411,
    3470       -1,    36,    37,    38,    10,    11,    12,    13,    14,    15,
    3471       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3472       26,    -1,   434,    -1,    59,    60,    -1,    -1,    -1,    -1,
    3473       65,    37,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3474       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3475       -1,   826,    87,   465,    60,    -1,   468,    -1,   833,    -1,
    3476       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3477       -1,   846,    -1,   848,    -1,   110,   111,   112,   113,   114,
    3478      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   863,    -1,
    3479       -1,    -1,    -1,    -1,   869,   507,    -1,    -1,   510,    -1,
    3480       -1,    -1,    -1,    -1,    -1,    -1,   881,    -1,    -1,   884,
    3481       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3482       -1,    -1,    -1,    -1,    -1,    -1,    -1,   902,    -1,    -1,
    3483       -1,    -1,    -1,   908,    -1,    -1,    -1,    -1,    -1,    -1,
    3484       -1,    -1,   554,   555,    -1,    -1,    -1,    -1,    -1,    -1,
    3485       -1,    -1,    -1,    -1,    -1,    -1,   140,    -1,   570,    -1,
    3486      572,    -1,    -1,    -1,    -1,   149,    -1,    -1,   580,    -1,
    3487       -1,   583,    -1,   585,   586,    -1,    -1,   161,    -1,    -1,
    3488      592,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3489      602,   603,    -1,    -1,    -1,    -1,   608,    -1,    -1,    -1,
    3490       -1,    -1,    -1,    -1,    -1,    -1,   618,   619,    -1,    -1,
    3491       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   993,    -1,
    3492       -1,   633,    -1,    -1,   999,  1000,   638,   639,    -1,    -1,
    3493      642,   643,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3494       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3495       23,    24,    25,    26,   666,    -1,    29,    30,    31,   671,
    3496      672,    -1,   674,    -1,    37,    -1,   678,    -1,   252,    -1,
    3497       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3498     1055,    -1,    -1,    -1,    -1,    -1,  1061,    60,    -1,    -1,
    3499       -1,    -1,    -1,    -1,    67,    68,    -1,    -1,   710,   711,
    3500       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3296      -1,    -1,    -1,    -1,   470,    -1,   472,    -1,    -1,    -1,
     3297    1458,    -1,    -1,    -1,    -1,    -1,  1195,  1465,   685,   686,
     3298      -1,    -1,    -1,    -1,   691,   788,    -1,    -1,    -1,    -1,
     3299      -1,    -1,   572,  1212,    -1,   798,    -1,  1216,    -1,    -1,
     3300     803,   804,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
     3301      -1,   814,    -1,    -1,    -1,    -1,  1235,    -1,  1237,    -1,
     3302    1508,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    35013303      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3502       27,  1096,    29,    30,    31,    -1,  1101,    -1,    -1,    -1,
    3503       37,    -1,   744,    -1,  1109,    -1,   748,   749,   111,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3505       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3506       67,    68,    69,  1138,    71,    -1,    -1,   351,    -1,    76,
    3507       77,    -1,    -1,    -1,    -1,    -1,   360,    -1,   790,    -1,
    3508     1155,    -1,    -1,  1158,    -1,  1160,    -1,    -1,    -1,    -1,
    3509      802,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   811,
    3510       -1,   813,  1177,  1178,   111,    -1,    -1,    -1,    -1,    -1,
    3511      822,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3512       -1,    -1,    -1,  1198,    -1,    -1,   410,    -1,    -1,    -1,
    3513       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3514       -1,   853,    -1,    -1,    -1,    -1,    -1,   431,    -1,    -1,
    3515       -1,    -1,    -1,    -1,    -1,  1230,    -1,    -1,    -1,    10,
    3516       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3517       21,    22,    23,    24,    25,    26,   460,    -1,    29,    30,
    3518       31,    -1,    -1,    -1,    -1,   897,    37,    38,    -1,    -1,
    3519      902,   903,    -1,    -1,    -1,    -1,    -1,    -1,   910,    -1,
    3520       -1,    -1,    -1,   915,    -1,    -1,    -1,    -1,    -1,    60,
    3521       -1,   923,    -1,    -1,   498,    -1,    67,    68,    -1,    -1,
    3522       -1,    -1,    -1,    -1,   936,   937,   510,    -1,    -1,    -1,
    3523       -1,    -1,    -1,   517,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,    -1,    -1,   530,   531,   960,    -1,
    3525       -1,    -1,   103,    -1,  1329,   967,  1331,    -1,    -1,    -1,
    3526      111,    -1,   974,    -1,    -1,    -1,    -1,  1342,   552,  1344,
    3527       -1,    -1,    -1,    -1,   986,   987,    -1,    -1,   562,    -1,
    3528      992,    -1,   994,    -1,    -1,    36,   570,    38,    -1,  1364,
    3529       -1,    -1,    -1,  1005,  1006,    -1,  1008,  1009,  1010,    -1,
    3530       -1,    -1,    -1,    -1,    -1,  1380,    -1,    -1,    59,  1021,
    3531     1022,  1023,    -1,    -1,    65,    -1,    -1,  1392,    69,    -1,
    3532     1395,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3533       -1,    -1,    -1,    -1,    -1,    -1,    87,   621,    -1,    -1,
    3534       -1,    -1,  1417,    -1,   628,    -1,    -1,    -1,    -1,    -1,
    3535      101,  1426,   103,    -1,  1429,  1430,    -1,    -1,    -1,   110,
    3536      111,   112,   113,   114,   115,   649,  1078,    -1,    -1,    -1,
    3537       -1,  1083,    -1,   124,  1086,  1087,  1088,  1089,    -1,   268,
    3538      269,   270,   271,    -1,    -1,    -1,    -1,   671,  1100,   278,
    3539      279,    -1,  1467,    -1,   283,   284,  1471,    -1,    -1,    -1,
    3540       -1,    -1,    -1,    -1,    -1,    -1,   295,    -1,  1483,    -1,
    3541     1122,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3542       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3543       -1,    -1,    -1,  1145,    -1,   324,    59,    -1,  1150,  1151,
    3544     1152,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3545       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3546      744,    -1,   746,    -1,    87,    -1,    -1,    -1,   752,    -1,
    3547       -1,    -1,   361,    -1,    -1,    -1,   760,    -1,   101,    -1,
    3548      103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,   112,
    3549      113,   114,   115,    -1,    -1,    -1,    -1,    -1,  1210,    -1,
    3550       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3551       -1,    -1,  1224,   797,    -1,    -1,   800,   801,   802,    -1,
    3552       -1,    -1,    -1,  1235,    -1,    -1,    -1,    -1,    -1,    -1,
    3553       -1,    -1,    -1,    -1,    -1,    -1,    -1,   821,    10,    11,
    3554       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3555       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3556       32,    33,    34,    -1,    36,    37,    38,    -1,    -1,    -1,
    3557       -1,    -1,    -1,  1285,  1286,    -1,    -1,    -1,   862,    -1,
    3558       -1,    -1,   866,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3559       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3560       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3561     1322,    -1,    -1,   897,    -1,    87,    -1,    -1,    -1,    -1,
    3562       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3563       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3564      112,   113,   114,   115,   533,   534,   535,   536,   537,   538,
    3565      539,   540,   541,   542,   543,   544,   545,   546,   547,   548,
    3566      549,   550,    -1,   947,    36,    -1,    38,    -1,    -1,    -1,
    3567       -1,    -1,  1384,    -1,    -1,    -1,   960,   961,    -1,    -1,
    3568       -1,    -1,    -1,   572,   968,    -1,    -1,    59,    -1,    -1,
    3569       -1,   975,    -1,    65,   978,    -1,   980,    69,    -1,  1411,
    3570       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3571       -1,    -1,    -1,   997,    -1,    87,    -1,    -1,    -1,    -1,
    3572       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3573     1014,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,
    3574      112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,
    3575       -1,    -1,    -1,  1037,    -1,  1039,    -1,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3577     1054,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,  1491,
    3578       -1,    -1,    -1,    -1,   673,    -1,    -1,    -1,    -1,  1073,
    3579       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,
    3580     1512,  1513,  1086,    65,    -1,    -1,   695,    69,    -1,    -1,
    3581       72,    73,    74,    75,    76,    77,    -1,    79,    80,   708,
    3582       -1,  1533,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3584     1124,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    3585      112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,
    3586       -1,  1145,   751,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1163,
    3588       -1,  1165,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3589       -1,    -1,    -1,    -1,   783,     3,     4,     5,     6,     7,
    3590        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3591       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3592       -1,    29,    30,    31,    -1,    -1,  1210,    -1,    -1,    37,
    3593       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3594       -1,  1225,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3596       68,    -1,    -1,    -1,  1248,    -1,    -1,    -1,     3,     4,
    3597        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3598       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3599       25,    26,    -1,    -1,    29,    30,    31,    32,   106,   888,
    3600       35,    36,    37,    38,    39,    -1,    41,    -1,    -1,    44,
    3601       45,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
    3602       -1,    56,    57,    -1,    59,    60,    -1,    -1,    -1,    -1,
    3603       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3604       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3605       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3606       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3607       -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3608      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,
    3609       -1,    -1,    -1,    -1,    -1,   984,    -1,    -1,    -1,    -1,
    3610       -1,    -1,    -1,    -1,    -1,   994,    -1,    -1,    -1,    -1,
    3611       -1,    -1,    -1,    -1,    -1,    -1,  1400,    -1,    -1,    -1,
     3304     620,   621,    29,    30,    31,  1264,    -1,    -1,    -1,    -1,
     3305      37,    38,    -1,    -1,    -1,   635,  1275,  1276,  1277,    -1,
     3306      -1,    -1,    -1,    -1,    -1,    -1,   572,    -1,  1287,  1288,
     3307      -1,    -1,   875,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3308      67,    68,  1301,    -1,    10,    11,    12,    13,    14,    -1,
     3309      -1,    -1,    -1,    -1,    -1,    -1,   899,    -1,    -1,    -1,
     3310      -1,    -1,    25,    26,    27,    -1,  1325,    -1,    -1,    -1,
     3311      -1,    37,    -1,    -1,   620,   621,   103,    -1,    -1,    -1,
     3312     107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,   635,
     3313      -1,    -1,   712,    -1,    60,    -1,    -1,    -1,    -1,    65,
     3314      -1,    -1,    -1,    69,    -1,    -1,    -1,   653,    -1,    -1,
     3315      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   962,
     3316     666,    -1,    -1,    -1,    50,    -1,    52,   673,    -1,    55,
     3317      56,    57,    95,    59,    97,   101,    -1,    -1,    -1,    -1,
     3318      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    74,    -1,
     3319      -1,    -1,    -1,    -1,  1413,    -1,    -1,    -1,   121,    85,
     3320      86,    -1,    -1,   709,    -1,    -1,   712,    -1,    -1,    -1,
     3321      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1020,  1021,    -1,
     3322    1023,  1024,  1025,    -1,   804,    -1,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1458,
     3324     746,  1044,    -1,    -1,    -1,    -1,  1465,    -1,    -1,    -1,
     3325      -1,    -1,   175,    -1,    -1,    -1,    -1,    -1,    -1,   182,
     3326      -1,   184,   185,    -1,    -1,   151,   189,    -1,   191,   192,
     3327      -1,    -1,    -1,    -1,  1077,  1078,    -1,    -1,    -1,    -1,
     3328      -1,    -1,   788,    -1,    -1,  1088,    -1,    -1,    -1,  1508,
     3329      -1,    -1,   798,    -1,    -1,   875,    -1,   803,   804,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   814,    -1,
     3331      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,   899,
     3332      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
     3333      -1,    -1,    -1,    -1,    -1,   258,    -1,    -1,    -1,    -1,
     3334      -1,    -1,    -1,    -1,  1147,    -1,    -1,    36,    37,    38,
     3335    1153,  1154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3336      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   948,   875,
     3337      59,    60,  1079,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3338      69,    -1,   962,    72,    73,    74,    75,    76,    77,    -1,
     3339      79,    80,  1195,   899,    -1,    -1,    -1,    -1,    87,    -1,
     3340      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,
     3341      -1,    -1,   101,  1216,   103,    -1,    -1,    -1,    -1,    -1,
     3342      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3343      -1,    -1,  1235,    -1,  1237,    -1,    -1,    -1,    -1,    -1,
     3344     326,    -1,   328,  1023,  1024,  1025,    -1,    -1,    -1,    -1,
     3345      -1,    -1,    -1,   339,   340,    -1,   962,    -1,    -1,    -1,
     3346      -1,  1264,    -1,    -1,  1044,    -1,    -1,   353,    -1,    -1,
     3347      -1,    -1,  1275,  1276,  1277,    -1,    -1,    -1,    -1,    -1,
     3348      -1,    -1,    -1,    -1,  1287,  1288,    -1,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1301,    -1,
     3350      -1,    -1,    -1,    -1,    -1,    -1,  1213,    -1,  1088,    -1,
     3351      -1,    -1,    -1,    -1,  1020,  1021,    -1,  1023,  1024,  1025,
     3352      -1,    -1,  1325,    -1,    -1,    -1,    -1,   413,    -1,    -1,
     3353      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1044,    -1,
    36123354      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    36133355      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    36143356      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3615       31,    32,    -1,  1042,    35,    36,    37,    38,    -1,    -1,
     3357      31,  1077,  1078,  1153,  1154,    -1,    37,    -1,    -1,    -1,
     3358      -1,    -1,  1088,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3360      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
     3361    1413,    -1,    -1,    -1,  1194,  1195,    -1,    -1,    -1,    -1,
     3362      -1,    -1,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
     3363      -1,    -1,  1212,    -1,    -1,    -1,  1216,   560,   561,    -1,
     3364      -1,  1147,   103,    -1,    -1,    -1,    -1,  1153,  1154,    -1,
     3365     111,    -1,    -1,    -1,    -1,  1458,    -1,    -1,    -1,    -1,
     3366      -1,  1241,  1465,    -1,    -1,   588,    -1,    -1,   591,   592,
     3367      -1,   594,    -1,   596,   597,    -1,    -1,    -1,   601,   602,
     3368      -1,    -1,    -1,    -1,    -1,    -1,   572,    -1,    -1,  1195,
    36163369      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3617       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3618       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3619     1474,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3620       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3370      -1,    -1,    -1,    -1,    -1,  1508,  1212,  1287,  1288,    -1,
     3371    1216,    -1,    -1,    -1,    -1,    -1,  1296,    -1,    -1,    -1,
     3372      -1,  1301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1235,
     3373      -1,  1237,    -1,    -1,    -1,    -1,    -1,   623,    -1,    10,
     3374      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3375      21,    22,    23,    24,    25,    26,  1336,   680,  1264,    -1,
     3376      -1,    -1,   685,   686,    -1,   651,    37,    -1,   691,  1275,
     3377    1276,  1277,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3378      -1,  1287,  1288,   669,   670,    -1,    -1,   673,    -1,    60,
     3379      -1,    -1,    -1,    -1,    -1,  1301,    -1,    -1,    -1,    -1,
    36213380      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3622      101,    -1,   103,    -1,    -1,    -1,    -1,  1116,    -1,   110,
    3623      111,   112,   113,   114,   115,    -1,  1520,    -1,    -1,    -1,
    3624       -1,    -1,    -1,   124,    -1,    -1,     3,     4,     5,     6,
    3625        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3626       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3627       -1,    -1,    29,    30,    31,    32,    -1,  1166,    35,    36,
    3628       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3629       -1,    -1,  1181,  1182,    -1,    -1,    -1,    -1,    -1,    -1,
    3630       -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3631       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3632       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3633       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3634       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3635       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
     3381      -1,    -1,    -1,    -1,    -1,   701,    -1,   703,    -1,  1325,
     3382      -1,    -1,    -1,    -1,   710,   711,    -1,    -1,    -1,   715,
     3383      -1,    -1,    -1,  1413,    -1,    -1,    -1,    -1,    -1,    -1,
     3384      -1,   727,    -1,    -1,    -1,    -1,   732,    -1,    -1,    -1,
     3385      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1437,    -1,    -1,
     3386     746,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    63,
     3387     756,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1458,    73,
     3388      -1,    75,    -1,    77,    -1,  1465,    -1,    -1,    59,    -1,
     3389      84,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     3390      -1,    72,    73,    74,    75,    76,    77,  1413,    79,    80,
     3391      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,   804,   113,
     3392      -1,   115,   116,   117,    -1,    -1,    -1,    -1,  1508,    -1,
     3393     101,    -1,   103,    -1,    -1,    -1,    -1,   823,    -1,   110,
     3394     111,   112,   113,   114,   115,    -1,    -1,   141,    -1,    -1,
     3395      -1,    -1,  1458,   124,    -1,    -1,    -1,    -1,    -1,  1465,
     3396      -1,   155,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3397     856,    -1,   858,   859,   860,    -1,    -1,   863,   864,    -1,
     3398      -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3399      -1,    36,   878,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3400      -1,    -1,  1508,    -1,   890,    -1,    -1,   893,    -1,    -1,
     3401      -1,    -1,    -1,   899,    59,    -1,    -1,    -1,    -1,   213,
     3402      65,   215,   216,   217,    69,    -1,    88,    72,    73,    74,
     3403      75,    76,    77,    -1,    79,    80,    98,    -1,    -1,    -1,
     3404      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3405      -1,   937,    -1,    -1,    -1,   249,   101,    -1,   103,   253,
     3406      -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3407     115,    -1,    -1,    -1,    -1,   269,   962,    -1,    -1,    -1,
     3408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
     3409     152,    -1,    -1,    -1,   980,    -1,    -1,   983,    -1,    -1,
     3410      -1,   987,    -1,   165,    -1,    -1,   992,    -1,    -1,    -1,
     3411     996,   997,   998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3412    1006,    -1,    -1,   317,    -1,   187,    -1,    -1,    -1,    -1,
     3413    1016,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   332,   201,
     3414      -1,    -1,    -1,   337,   338,    -1,    -1,   209,    -1,  1035,
     3415    1036,   345,    -1,    -1,    -1,    -1,  1079,   219,    -1,    -1,
     3416      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,    -1,
     3417      -1,    -1,    -1,    -1,  1060,    -1,    -1,  1063,    -1,    -1,
     3418     242,    -1,    -1,    -1,    -1,   247,    -1,    -1,    -1,    -1,
     3419      -1,    -1,    -1,   387,    -1,    -1,    -1,    -1,   260,    -1,
     3420      -1,    -1,  1088,    -1,   266,    -1,   268,    -1,    -1,    -1,
     3421      -1,   405,    -1,    -1,    -1,    -1,    -1,   411,    -1,    -1,
     3422      -1,  1107,   284,    -1,    -1,    -1,    -1,  1113,  1114,    -1,
     3423      -1,    -1,    -1,    -1,   428,    -1,  1122,   431,   432,    -1,
     3424      -1,    -1,  1128,    -1,    -1,  1131,    -1,  1133,    -1,    -1,
     3425    1136,    -1,    -1,   447,    -1,    -1,    -1,    -1,    -1,    -1,
     3426      -1,  1147,    -1,   325,    -1,  1151,    -1,   461,    -1,    -1,
     3427      -1,    -1,    -1,    -1,   468,    -1,    -1,    -1,    -1,    -1,
     3428      -1,    36,  1168,    38,  1170,  1171,  1172,  1173,    -1,    -1,
     3429    1213,    -1,   354,    -1,    -1,    -1,   358,   359,    -1,   361,
     3430      -1,  1187,    -1,  1189,    59,   367,   368,  1193,   370,   371,
     3431      65,   373,    -1,   375,    69,    -1,    -1,    72,    73,    74,
     3432      75,    76,    77,    -1,    79,    80,  1212,    -1,    -1,    -1,
     3433     392,    -1,    87,    -1,    -1,  1221,  1222,    -1,   400,    -1,
     3434      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3435      -1,    -1,    -1,    -1,   109,   110,   111,   112,   113,   114,
     3436     115,    -1,   424,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3437      -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      -1,    -1,    -1,   577,    -1,    -1,  1272,  1273,    -1,    -1,
     3439      -1,    -1,  1278,  1279,    -1,    -1,   458,    -1,    -1,    -1,
     3440      -1,    -1,   464,  1289,    -1,    -1,    -1,   469,    -1,    -1,
     3441      -1,    -1,    -1,   607,    -1,    -1,    -1,    -1,   612,     3,
     3442       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3443      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3444      24,    25,    26,   505,    -1,    29,    30,    31,    -1,    -1,
     3445      -1,    -1,    -1,    37,  1340,    -1,    -1,    -1,   520,    -1,
     3446      -1,    -1,    -1,    -1,    -1,    -1,  1352,    -1,    -1,    -1,
     3447    1356,  1357,  1358,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3448      64,    65,  1368,    67,    68,    69,    -1,    -1,    -1,    -1,
     3449      -1,  1377,    76,    77,   556,    -1,    -1,    -1,    -1,    -1,
     3450      -1,    -1,    -1,   565,    -1,   567,   700,  1393,    -1,    -1,
     3451      -1,   573,    -1,    36,    -1,    38,    -1,   101,    -1,   103,
     3452     714,    -1,    -1,    -1,   586,    -1,    -1,   111,    -1,    -1,
     3453      -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
     3454     734,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3455      73,    74,    75,    76,    77,    -1,    79,    80,    -1,  1445,
     3456    1446,    -1,    -1,   625,    87,    -1,    -1,    -1,    -1,    -1,
     3457      -1,    -1,  1458,    -1,    36,    -1,    38,    -1,   101,  1465,
     3458     103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,   112,
     3459     113,   114,   115,    -1,    -1,    -1,    -1,    59,   792,   661,
     3460      -1,    -1,    -1,    65,    -1,    -1,  1492,    69,   802,    -1,
     3461      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3462      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3463     824,    -1,    -1,    -1,  1520,    -1,    -1,    -1,   151,   101,
     3464      -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,
     3465     112,   113,   114,   115,    -1,    -1,   718,    -1,    -1,  1545,
     3466      -1,    -1,    -1,    -1,  1550,    -1,   728,   729,    -1,   182,
     3467      -1,    -1,    -1,    -1,    -1,    -1,   189,    -1,   740,    -1,
     3468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,   757,    -1,   759,    -1,    -1,
     3470      -1,   763,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3471      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3472      25,    26,    -1,   917,    29,    30,    31,    -1,    -1,    -1,
     3473      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3474      -1,    -1,    -1,    -1,    -1,   258,    -1,    -1,    -1,   943,
     3475      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3476      65,    -1,    67,    68,    69,    -1,   828,    -1,    -1,    -1,
     3477      -1,    76,    77,   835,    -1,   969,    -1,    -1,    -1,    -1,
     3478      -1,    -1,    -1,    -1,    -1,    -1,   848,    -1,   850,    -1,
     3479      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   312,
     3480      -1,    -1,    -1,   865,    -1,   999,   111,   320,   321,   871,
     3481     323,   324,    -1,   326,    -1,    -1,    -1,    -1,   331,    -1,
     3482      -1,   883,  1016,    -1,   886,    -1,    -1,    -1,    -1,    -1,
     3483      -1,    -1,    -1,    -1,    -1,    -1,    36,   350,    38,    -1,
     3484     353,    -1,   904,    -1,    -1,    -1,    -1,    -1,   910,    -1,
     3485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
     3486      -1,    -1,    -1,    -1,    -1,    65,   379,    -1,    -1,    69,
     3487     383,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3488      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3489      -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3490     413,   101,    -1,   103,    -1,    -1,   106,    -1,  1102,    -1,
     3491     110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
     3492      -1,    -1,   142,   436,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,   151,    -1,   995,    -1,    -1,    -1,    -1,    -1,  1001,
     3494    1002,    -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,   270,
     3495     271,   272,   273,    -1,   467,    -1,    -1,   470,    -1,   280,
     3496     281,    -1,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
     3497      -1,    -1,    -1,    -1,    -1,    -1,   297,    -1,    -1,    -1,
     3498      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3499      -1,    -1,    -1,    -1,    -1,  1057,   509,    -1,    -1,   512,
     3500    1194,  1063,    -1,    -1,    -1,   326,    -1,    -1,    -1,    -1,
     3501      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3502      20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
     3503      30,    31,    -1,    -1,   254,    -1,  1098,    37,    -1,    -1,
     3504      -1,  1103,   363,   556,   557,    -1,    -1,    -1,    -1,  1111,
     3505      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   572,
     3506      60,   574,    -1,    -1,    -1,    -1,    -1,    67,    68,   582,
     3507      -1,    71,   585,    -1,   587,   588,    -1,    -1,  1140,    -1,
     3508      -1,   594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,   604,   605,    -1,    -1,  1157,    -1,   610,  1160,    -1,
     3510    1162,   101,  1296,   103,    -1,    -1,    -1,   620,   621,    -1,
     3511      -1,   111,    -1,    -1,    -1,    -1,    -1,  1179,  1180,    -1,
     3512      -1,    -1,   635,    -1,    -1,    -1,    -1,   640,   641,    -1,
     3513      -1,   644,   645,   353,    -1,    -1,    -1,    -1,  1200,    -1,
     3514      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,    -1,   668,    -1,    -1,    -1,    -1,
     3516     673,   674,    -1,   676,    -1,    -1,    -1,   680,    -1,    -1,
     3517    1232,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3518      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3519      -1,    -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,   712,
     3520     713,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3521      -1,    -1,    -1,   433,   535,   536,   537,   538,   539,   540,
     3522     541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
     3523     551,   552,    -1,   746,    -1,    -1,    -1,   750,   751,    -1,
     3524      -1,    -1,   462,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3525      -1,    -1,    -1,   574,    -1,    -1,    -1,     7,    -1,    -1,
     3526      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,  1331,
     3527      -1,  1333,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   792,
     3528     500,    -1,  1344,    -1,  1346,    -1,    36,    37,    38,    -1,
     3529      -1,   804,   512,    -1,    -1,    -1,    -1,    -1,    -1,   519,
     3530     813,    -1,   815,    -1,  1366,    -1,    -1,    -1,    -1,    59,
     3531      60,   824,   532,   533,    -1,    65,    -1,    -1,    -1,    69,
     3532    1382,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3533      80,    -1,  1394,    -1,   554,  1397,    -1,    87,    -1,    -1,
     3534      -1,  1535,   855,    -1,   564,    -1,    -1,    -1,    -1,    -1,
     3535      -1,   101,   572,   103,   675,    -1,    -1,  1419,    -1,    -1,
     3536     110,   111,   112,   113,   114,   115,  1428,    -1,    -1,  1431,
     3537    1432,    -1,    -1,    -1,    -1,    -1,   697,    -1,    -1,    -1,
     3538      -1,    -1,    -1,    -1,    -1,    -1,   899,    -1,    -1,   710,
     3539      -1,   904,   905,    -1,    -1,    -1,    -1,    -1,    -1,   912,
     3540      -1,    -1,    -1,   623,   917,    -1,    -1,  1469,    -1,    -1,
     3541     630,  1473,   925,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3542      -1,    -1,    -1,  1485,    -1,   938,   939,    -1,    -1,    -1,
     3543      -1,   651,   753,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   962,
     3545      -1,    -1,    -1,   673,    -1,    -1,   969,    -1,    -1,    -1,
     3546      -1,    -1,    -1,   976,   785,    -1,    -1,    -1,    -1,    -1,
     3547      -1,    -1,    -1,    -1,    -1,   988,   989,    -1,    -1,    -1,
     3548      -1,   994,    -1,   996,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,  1007,  1008,    -1,  1010,  1011,  1012,
     3550      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3551    1023,  1024,  1025,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3552      -1,    -1,    -1,    -1,    -1,    -1,   746,    -1,   748,    -1,
     3553      -1,    -1,    -1,    -1,   754,    -1,    -1,    -1,    -1,    -1,
     3554      -1,    -1,   762,    -1,    10,    11,    12,    13,    14,    15,
     3555      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3556      26,    27,    -1,    29,    30,    31,    -1,  1080,    -1,   890,
     3557      -1,    37,  1085,    -1,    -1,  1088,  1089,  1090,  1091,   799,
     3558      -1,    -1,   802,   803,   804,    36,    -1,    38,    -1,  1102,
     3559      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    67,    68,   823,    -1,    71,    -1,    -1,    59,    -1,
     3561      -1,  1124,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     3562      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3563      -1,    -1,    -1,    -1,  1147,   101,    87,   103,    -1,  1152,
     3564    1153,  1154,    -1,    -1,   864,   111,    -1,    -1,   868,    -1,
     3565     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3566     111,   112,   113,   114,   115,   986,    -1,    -1,    -1,    -1,
     3567      -1,    -1,    -1,    -1,    -1,   996,    -1,    -1,    -1,   899,
     3568      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3569      19,    20,    21,    22,    23,    24,    25,    26,    -1,  1212,
     3570      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3571      -1,    -1,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,
     3572      -1,    -1,    -1,  1044,  1237,    -1,    -1,    -1,    -1,   949,
     3573      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3574      -1,    -1,   962,   963,    -1,    -1,    -1,    -1,    -1,    -1,
     3575     970,    -1,    -1,    -1,    -1,    -1,    -1,   977,    -1,    -1,
     3576     980,    -1,   982,    -1,    -1,    36,    -1,    38,    -1,    -1,
     3577      -1,    -1,    -1,    -1,  1287,  1288,    -1,    -1,    -1,   999,
     3578      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    59,    -1,
     3579      -1,    -1,    -1,    -1,    65,    -1,  1016,  1118,    69,    -1,
     3580      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3581      -1,  1324,    -1,    -1,    -1,    -1,    87,    -1,    -1,  1039,
     3582      -1,  1041,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3583     101,    -1,   103,    -1,    -1,    -1,  1056,    -1,    -1,   110,
     3584     111,   112,   113,   114,   115,    -1,    -1,  1168,    -1,    -1,
     3585      -1,    -1,    -1,    -1,    -1,  1075,    -1,    -1,    -1,    -1,
     3586      -1,    -1,  1183,  1184,    -1,    -1,    -1,    -1,  1088,    -1,
     3587      -1,    -1,     0,  1386,    -1,     3,     4,     5,     6,     7,
     3588       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3589      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3590    1413,    29,    30,    31,    32,    -1,  1126,    35,    -1,    37,
     3591      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3592      -1,    36,    -1,    38,    -1,    -1,    -1,  1147,    -1,    57,
     3593      -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,
     3594      68,    69,    -1,    -1,    59,  1165,    -1,  1167,    76,    77,
     3595      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
     3596      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3597      -1,    -1,    87,   101,    -1,   103,    -1,    -1,    -1,    -1,
     3598    1493,    -1,    -1,   111,    -1,    -1,   101,    -1,   103,    -1,
     3599      -1,    -1,  1212,    -1,    -1,   110,   111,   112,   113,   114,
     3600     115,  1514,  1515,    -1,    -1,    -1,    -1,  1227,    -1,    -1,
     3601      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3602      -1,    -1,  1535,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3603    1250,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
     3604      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3605      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3606      30,    31,    32,    -1,    -1,    35,    36,    37,    38,    39,
     3607      -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
     3608      50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,    59,
     3609      60,    -1,    62,    -1,    64,    65,  1417,    67,    68,    69,
     3610      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3611      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3613      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3614     110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
     3615      -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    -1,  1480,
     3616    1481,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3617      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3618      -1,    -1,  1402,    -1,    -1,    -1,    -1,    -1,     3,     4,
    36363619       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36373620      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3638       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3639       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3640       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3641       -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
    3642       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3621      25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
     3622      35,    36,    37,    38,    10,    11,    12,    13,    14,    15,
     3623      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3624      26,    27,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3625      65,    37,    67,    68,    69,    -1,  1476,    72,    73,    74,
    36433626      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3644       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3645       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   104,
    3646       -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,   114,
    3647      115,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    3648       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3649       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3650       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3651       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3652       -1,    -1,    -1,    -1,    -1,    -1,  1415,    59,    60,    -1,
    3653       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3654       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3655       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3656       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3657       -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,   111,
    3658      112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,  1478,
    3659     1479,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3627      -1,    -1,    87,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3628      -1,    -1,    -1,    -1,    -1,    71,   101,    -1,   103,    -1,
     3629      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3630     115,    -1,  1522,    -1,    -1,    -1,    -1,    -1,    -1,   124,
     3631       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    36603632      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3661       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3662       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    3663       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3665       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3633      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
     3634      -1,    -1,    35,    36,    37,    38,    10,    11,    12,    13,
     3635      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3636      24,    25,    26,    27,    -1,    -1,    59,    60,    -1,    62,
     3637      -1,    64,    65,    37,    67,    68,    69,    -1,    -1,    72,
    36663638      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3667       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3668       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3669      103,   104,    -1,    -1,    -1,   108,    -1,   110,   111,   112,
     3639      -1,    -1,    -1,    -1,    87,    -1,    60,    -1,    -1,    -1,
     3640      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,   101,    -1,
     3641     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    36703642     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
    36713643      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     
    36743646      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36753647      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3676       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3648      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
    36773649      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    36783650      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    36793651      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3680      101,    -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,
     3652     101,    -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,
    36813653     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
    36823654       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     
    36853657      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36863658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3687       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3659      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    36883660      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    36893661      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    36903662      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3691       -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,    -1,
     3663      -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,   108,
    36923664      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    36933665       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     
    36963668      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36973669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3698       -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3670      -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    36993671      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    37003672      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    37013673      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3702       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3703       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
     3674      -1,    -1,    -1,    -1,   101,    -1,   103,   104,    -1,    -1,
     3675      -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
    37043676       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    37053677      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    37073679      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    37083680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3709       -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
     3681      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
    37103682      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    37113683      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    37123684      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3713       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3685      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   104,
    37143686      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3715      115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3716       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3717       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3718       32,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
    3719       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3720       -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
    3721       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
    3723       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3725       -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
    3726        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3687     115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    37273688      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    37283689      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3729       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3690      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    37303691      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3732       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3733       -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
     3692      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
     3693      -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3694      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3695      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3696      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3697     103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3698     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     3699      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3700      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3701      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    37343702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3736      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     3,
    3737        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3738       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3739       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
    3740       -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3703      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3704      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3705      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3706      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    37413707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3743       -1,    -1,    -1,    67,    68,    -1,     3,     4,     5,     6,
     3708     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3709     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
     3710       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3711      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3712      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3714      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3715      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3716      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3717      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3718      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3719      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3720      -1,   110,   111,   112,   113,   114,   115,     3,     4,     5,
     3721       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3722      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3723      26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,
     3724      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3725      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3726      -1,    57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
     3727      -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3730      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3731      -1,   107,    -1,    -1,    -1,   111,     3,     4,     5,     6,
    37443732       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    37453733      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3746       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,   103,
    3747       37,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3734      -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,
     3735      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37483736      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3749       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3750       67,    68,     4,     5,     6,     7,     8,     9,    10,    11,
    3751       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3752       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3753       -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,
    3754       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3755       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3756       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3757       -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3737      57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
     3738      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3739      77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37583740      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3759       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3760       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3741      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3742      -1,    -1,    -1,    -1,   111,     3,     4,     5,     6,     7,
     3743       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3744      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3745      -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
     3746      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3747      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3748      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3749      68,    -1,    -1,    71,     3,     4,     5,     6,     7,     8,
     3750       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3751      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3752      29,    30,    31,    32,    -1,   103,    35,    -1,    37,    -1,
     3753      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3754      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3755      -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
    37613756       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    37623757      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    37633758      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3764       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3759      -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
     3760      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3761      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3762      64,    65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
    37653764      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3766       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3767       -1,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
    3768        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3769       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3770       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,   103,
    3771      104,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3765      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3766      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
     3767       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3768      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3769      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3770      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37723771      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3773       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3774       -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    3775       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3776       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3777       -1,    -1,    -1,   102,   103,    37,    -1,    -1,    -1,    -1,
    3778       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3780       -1,    -1,    -1,    -1,    -1,    67,    68,    -1,    -1,    -1,
    3781       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3782       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
    3783       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3784       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3772      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     3773      -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
     3774      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3775      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3776      31,    -1,    -1,    -1,    -1,    -1,    37,   103,   104,    -1,
     3777      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3778      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3779      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
    37853780       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    37863781      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    37873782      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3788       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    10,    11,
    3789       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3790       22,    23,    24,    25,    26,    -1,    60,    29,    30,    31,
    3791       -1,    -1,    -1,    67,    68,    37,    -1,    -1,    -1,    -1,
     3783      -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3784     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3785      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3786      64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
    37923787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    60,    -1,
    3794       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,   103,
    3795       -1,    -1,    -1,    -1,    76,    77,    -1,   111,     4,     5,
    3796        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3797       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3798       26,   103,    -1,    29,    30,    31,    -1,    -1,    -1,   111,
    3799       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3801       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3802       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    3803       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3804       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3805       31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    3806       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3807       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3808       -1,    -1,    -1,    -1,    -1,    -1,    67,    68,     4,     5,
     3788      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
     3789      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     3790      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    38093791       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    38103792      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    38113793      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3812       -1,    37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3813      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3814       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3815       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    3816       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3817       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3818       31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    3819       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3820       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3821       -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
     3794      -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
     3795      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3796      -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
     3797      -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3798      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3799      -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
     3800      68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3801      -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
     3802       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3803      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3804      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3805      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3807      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3808      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3809      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3810      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3811      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
     3812      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3813      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3814      -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
     3815       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3816      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3817      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3818     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3820      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3821      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3822      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3823      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3824      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
     3825      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3826      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3827      -1,    64,    -1,    -1,    67,    68,    10,    11,    12,    13,
     3828      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3829      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
     3830      34,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3831     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3832      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
     3833      -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
     3834      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3835      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3836      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3837      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
     3838     114,   115,    10,    11,    12,    13,    14,    15,    16,    17,
     3839      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3840      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
     3841      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3842      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3843      -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
     3844      68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     3845      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3846      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3847      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     3848      -1,    -1,   110,   111,   112,   113,   114,   115,    10,    11,
    38223849      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    38233850      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    38243851      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3825       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3826      111,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
     3852      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3853      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    38273854      -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    38283855      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    38293856      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    38303857      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3831       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
     3858      -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
    38323859     112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
    38333860      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    38393866      76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    38403867      -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3841       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   104,    -1,
     3868      -1,    -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,
    38423869      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    38433870      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    38503877      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    38513878      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3852       -1,   101,   102,   103,    -1,    -1,    -1,    -1,    -1,    -1,
     3879      -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    38533880     110,   111,   112,   113,   114,   115,    10,    11,    12,    13,
    38543881      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    38833910      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    38843911      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3885      112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
    3886       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3887       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3888       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3912     112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
     3913       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3914      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3915      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    10,
     3916      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3917      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
     3918      31,    60,    -1,    62,    -1,    64,    37,    -1,    67,    68,
    38893919      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3890       -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,
    3891       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3892       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3893       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3894       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3895       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3896       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3897       20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
    3898       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3899       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3900       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3901       60,    -1,    29,    30,    31,    65,    -1,    67,    68,    69,
    3902       37,    71,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3920      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3921      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3922      71,    -1,    -1,    -1,    -1,    76,    77,   106,    10,    11,
     3923      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3924      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
     3925     101,    -1,   103,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     3926     111,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3927      19,    20,    21,    22,    23,    24,    25,    26,    60,    -1,
     3928      29,    30,    31,    65,    -1,    67,    68,    69,    37,    71,
     3929      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
    39033930      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3904       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3905       67,    68,    69,   103,    -1,    -1,    -1,    -1,    -1,    76,
    3906       77,   111,    10,    11,    12,    13,    14,    15,    16,    17,
    3907       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3908       -1,    29,    30,    31,   101,    -1,   103,    -1,    -1,    37,
    3909       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3910       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3911       -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3912       68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
     3931      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3932      69,   103,    -1,    -1,    -1,    -1,    -1,    76,    77,   111,
    39133933      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    39143934      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3915       30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,
    3916       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3935      30,    31,   101,    -1,   103,    -1,    -1,    37,    -1,    -1,
     3936      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39173937      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39183938      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    39193939      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,
    39203940      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3921       22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
     3941      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    39223942      -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,
    39233943      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39243944      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3925       -1,    -1,    -1,    -1,    -1,    67,    68,    -1,    -1,    71,
     3945      -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
     3946      -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,    13,
     3947      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3948      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,   101,
     3949      -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,
     3950      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3951      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
     3952      -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
     3953      -1,    -1,    76,    77,    10,    11,    12,    13,    14,    15,
     3954      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3955      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,   103,
     3956      -1,    37,    38,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3957      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3958      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3959      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3960      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3961      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3962      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3963      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3964      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3965      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
     3966      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3967      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3968      -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
     3969      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3970      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3971      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3972      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3973      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3974      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3975      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3976      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3977      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3978      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3979      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3980      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3981      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3982      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3983      67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
     3984      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3985      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3986      38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
     3987     107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3988      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3989      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3990      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3991      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3992      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,
     3993      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3994      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    39263995      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    39273996      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3928       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,   101,
    3929       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3930       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3997      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
     3998      -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3999      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39314000      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
    39324001      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    39334002      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3934       31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,
    3935       -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,
    3936       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3937       -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
    3938       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3939       22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
    3940       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3941       -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,
    3942      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3943       -1,    -1,    -1,    -1,    -1,    67,    68,    -1,    -1,    71,
    3944       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3945       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3946       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
    3947       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3948       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3949       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
    3950       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3951       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3952       31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,
    3953       -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,
     4003      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
     4004      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    39544005      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    39554006      -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
    39564007      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    39574008      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3958       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
    3959       -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,
     4009      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     4010     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39604011     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    39614012      -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
    39624013      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    39634014      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3964       -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    -1,
    3965       -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
     4015      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,
     4016      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    39664017      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    39674018      -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
     
    39694020      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    39704021      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3971      103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,    -1,
     4022     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    39724023      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    39734024      -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
    39744025      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    39754026      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3976       -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,   103,
     4027      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    39774028      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    39784029      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     
    39804031      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    39814032      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3982       -1,    37,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     4033      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    39834034      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    39844035      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     
    40244075      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    40254076      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    4026       -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
    4027       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4028       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4029       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    4030      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    4031       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    4032       -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
    4033       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4034       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    4035       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    4036       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    4037       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    4038       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    4039       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4040       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    4041       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    4042       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    4043       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    4044       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    4045       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4046       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    4047       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4048       -1,    36,    -1,    38,    39,   111,    41,    -1,    -1,    44,
    4049       45,    46,    47,    48,    49,    50,    51,    52,    53,    60,
    4050       -1,    56,    57,    -1,    59,    -1,    67,    68,    -1,    -1,
    4051       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    4052       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    4053       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4054       -1,   102,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    4055       -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    4056      115,    -1,    36,    -1,    38,    39,    -1,    41,    -1,   124,
    4057       44,    45,    46,    47,    48,    49,    50,    51,    -1,    53,
     4077      -1,    -1,    -1,    -1,    67,    68,     4,     5,     6,     7,
     4078       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     4079      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     4080      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     4081      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     4082      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4083      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     4084      68,    -1,    36,    -1,    38,    39,    -1,    41,    -1,    -1,
     4085      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    40584086      -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
    4059       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     4087      -1,    65,    -1,    -1,   102,    69,    -1,    -1,    72,    73,
    40604088      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    40614089      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    40624090      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    40634091      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
    4064      114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4065      124,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    4066       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    4067       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    4068       36,    -1,    38,    39,    37,    41,    42,    43,    44,    45,
    4069       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    4070       56,    57,    -1,    59,    -1,    -1,    -1,    60,    -1,    65,
    4071       -1,    -1,    -1,    69,    67,    68,    72,    73,    74,    75,
    4072       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    4073       -1,    87,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,
    4074       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    4075      106,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    4076       36,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
    4077       46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
    4078       56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
    4079       -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
    4080       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    4081       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4082       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    4083      106,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    4084       36,    -1,    38,    39,    -1,    41,    -1,    -1,    44,    45,
    4085       46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
    4086       56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
    4087       -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
    4088       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    4089       -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
    4090       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    4091      106,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    4092       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    4093       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    4094       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    4095       -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    4096       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    4097       -1,   110,   111,   112,   113,   114,   115,    59,    -1,    -1,
    4098       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    4099       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    4100       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    4101       -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
    4102       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    4103      112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
    4104       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    4105       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    4106       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    4107       38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    4108       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    4109      115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     4092     114,   115,    -1,    36,    -1,    38,    39,    -1,    41,    -1,
     4093     124,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
     4094      53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
     4095      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     4096      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     4097      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     4098      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     4099     103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     4100     113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4101      -1,   124,     4,     5,     6,     7,     8,     9,    10,    11,
     4102      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     4103      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     4104      -1,    -1,    -1,    -1,    -1,    37,    10,    11,    12,    13,
     4105      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     4106      24,    25,    26,    -1,    -1,    29,    30,    31,    60,    -1,
     4107      62,    -1,    64,    37,    -1,    67,    68,    -1,    36,    -1,
     4108      38,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
     4109      48,    49,    50,    51,    52,    53,    60,    89,    56,    57,
     4110      -1,    59,    -1,    67,    68,    -1,    -1,    65,    -1,    -1,
     4111      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     4112      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     4113      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4114      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     4115      -1,    -1,   110,   111,   112,   113,   114,   115,    36,    -1,
     4116      38,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
     4117      48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
     4118      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     4119      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     4120      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     4121      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4122      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     4123      -1,    -1,   110,   111,   112,   113,   114,   115,    36,    -1,
     4124      38,    39,    -1,    41,    -1,    -1,    44,    45,    46,    47,
     4125      48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
     4126      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    41104127      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    41114128      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    41124129      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    4113       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
     4130      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
    41144131      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    41154132      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     
    41174134      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    41184135      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
    4119      101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     4136     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    41204137     111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
    41214138      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     
    41334150      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    41344151      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     4152      -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     4153      -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4154     110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
     4155      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     4156      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     4157      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     4158      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     4159      -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     4160     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     4161      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4162      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,
     4163      -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    41354164      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4136       -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4137      110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    4138        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    4139       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    4140       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     4165      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     4166      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     4167      -1,    -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,
     4168       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     4169      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4170      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     4171      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4172      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4173      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     4174      -1,    67,    68,     3,     4,     5,     6,     7,     8,     9,
     4175      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     4176      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     4177      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    41414178      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    41424179      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4143       -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    4144       68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    4145        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    4146       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    4147       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    4148       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    4149       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4150       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    4151       -1,    -1,    -1,    -1,    67,    68,     3,     4,     5,     6,
    4152        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     4180      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,
     4181       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     4182      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4183      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     4184      -1,    -1,    37,    10,    11,    12,    13,    14,    15,    16,
    41534185      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4154       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    4155       37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4186      -1,    -1,    29,    30,    31,    60,    -1,    62,    -1,    64,
     4187      37,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
    41564188      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    41574189      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    4158       67,    68,     4,     5,     6,     7,     8,     9,    10,    11,
    4159       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4160       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4161       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    4162       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4163       20,    21,    22,    23,    24,    25,    26,    -1,    60,    29,
    4164       30,    31,    32,    33,    34,    67,    68,    37,    10,    11,
    4165       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4166       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4167       60,    -1,    -1,    -1,    -1,    37,    -1,    67,    68,    -1,
    4168       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4169       20,    21,    22,    23,    24,    25,    26,    -1,    60,    29,
    4170       30,    31,    -1,    65,    -1,    67,    68,    37,    10,    11,
    4171       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4172       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4173       60,    -1,    -1,    -1,    -1,    37,    -1,    67,    68,    -1,
    4174       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4175       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    4176       -1,    -1,    -1,    -1,    -1,    67,    68
     4190      67,    68
    41774191};
    41784192
     
    41844198      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    41854199      22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    4186       37,    38,    57,    60,    65,    67,    68,    69,    76,    77,
    4187      101,   103,   111,   129,   132,   189,   201,   202,   203,   204,
    4188      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
    4189      215,   216,   217,   218,   220,   221,   222,   223,   224,   225,
    4190      226,   227,   229,   230,   231,   232,   233,   234,   235,   243,
    4191      244,   270,   271,   279,   282,   288,   289,   291,   293,   294,
    4192      300,   305,   309,   310,   311,   312,   313,   314,   315,   316,
    4193      336,   353,   354,   355,   356,    65,   111,   131,   204,   206,
    4194      214,   216,   226,   230,   232,   271,    75,   101,   298,   299,
    4195      300,   298,   298,    65,    67,    68,    69,   130,   131,   260,
    4196      261,   280,   281,    67,    68,   261,   101,   291,   215,   216,
    4197      101,   111,   305,   310,   311,   312,   314,   315,   316,   126,
    4198      103,   207,   214,   216,   309,   313,   352,   353,   356,   357,
    4199      127,   123,   264,   106,   127,   164,    67,    68,   129,   259,
    4200      127,   127,   127,   108,   127,    67,   101,   111,   295,   304,
    4201      305,   306,   307,   308,   309,   313,   317,   318,   319,   320,
    4202      321,     3,    27,    71,   228,     3,     5,    67,    68,   103,
    4203      111,   206,   217,   221,   224,   233,   309,   313,   356,   204,
    4204      206,   216,   226,   230,   232,   271,   309,   313,    32,   222,
    4205      222,   217,   224,   127,   222,   217,   222,   217,   101,   106,
    4206      261,   106,   261,   222,   217,   108,   127,   127,     0,   126,
    4207      101,   164,   298,   298,   126,   103,   214,   216,   354,   259,
    4208      259,   216,   123,   101,   111,   295,   305,   309,   103,   111,
    4209      356,   292,   219,   300,   101,   276,   101,   101,   101,    36,
    4210       38,    59,    65,    69,    72,    73,    74,    75,    79,    80,
    4211       87,   101,   103,   110,   111,   112,   113,   114,   115,   128,
    4212      132,   133,   134,   135,   140,   141,   142,   143,   144,   145,
    4213      146,   147,   148,   149,   150,   151,   152,   153,   155,   157,
    4214      214,   263,   278,   352,   357,   216,   102,   102,   102,   102,
    4215      102,   102,   102,   103,   111,   127,   155,   206,   207,   213,
    4216      216,   220,   221,   226,   229,   230,   232,   249,   250,   254,
    4217      255,   256,   257,   271,   336,   348,   349,   350,   351,   356,
    4218      357,   126,   101,   309,   313,   356,   101,   108,   124,   103,
    4219      106,   111,   155,   265,   107,   126,   108,   124,   101,   108,
    4220      124,   108,   124,   108,   124,   298,   124,   305,   306,   307,
    4221      308,   318,   319,   320,   321,   216,   304,   317,    57,   297,
    4222      103,   298,   335,   336,   298,   298,   164,   126,   101,   298,
    4223      335,   298,   298,   216,   295,   101,   101,   215,   214,   216,
    4224      101,   126,   214,   352,   357,   164,   126,   259,   264,   206,
    4225      221,   309,   313,   164,   126,   280,   216,   226,   124,   216,
    4226      216,   126,    38,   103,   214,   236,   237,   238,   239,   352,
    4227      356,   106,   245,   261,   106,   216,   280,   124,   124,   291,
    4228      126,   131,   258,     3,   127,   196,   197,   211,   213,   216,
    4229      126,   297,   101,   297,   155,   305,   216,   101,   126,   259,
    4230      106,    32,    33,    34,   214,   272,   273,   275,   126,   121,
    4231      123,   277,   126,   217,   223,   224,   259,   301,   302,   303,
    4232      140,   153,   154,   101,   140,   142,   101,   140,   101,   101,
    4233      140,   140,   131,   103,   155,   160,   164,   214,   262,   352,
    4234      126,   142,   142,    75,    78,    79,    80,   101,   103,   105,
    4235       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
    4236      123,   159,   142,   111,   116,   117,   113,   114,    81,    82,
    4237       83,    84,   118,   119,    85,    86,   112,   120,   121,    87,
    4238       88,   122,   123,   359,   101,   111,   331,   332,   333,   334,
    4239      335,   102,   108,   101,   335,   103,   336,   101,   335,   336,
    4240      126,   103,   111,   127,   214,   216,   347,   348,   356,   357,
    4241      104,   127,    67,   101,   103,   111,   305,   322,   323,   324,
    4242      325,   326,   327,   328,   329,   330,   336,   337,   338,   339,
    4243      340,   341,   342,   111,   356,   216,   127,   127,   111,   214,
    4244      216,   349,   259,   214,   336,   349,   259,   127,   126,   126,
    4245      126,   126,    65,   103,   105,   261,   265,   266,   267,   268,
    4246      269,   126,   126,   126,   126,   126,   126,   295,   102,   102,
    4247      102,   102,   102,   102,   102,   304,   317,   101,   264,   126,
    4248      196,   126,   295,   160,   263,   160,   263,   295,   278,   103,
    4249      127,   196,   297,   164,   126,   196,   214,   272,   278,   238,
    4250      239,   126,   101,   109,   111,   240,   242,   304,   305,   317,
    4251      335,   343,   344,   345,   346,   107,   237,   108,   124,   108,
    4252      124,   261,   236,   108,   358,   123,   246,   245,   216,   251,
    4253      252,   253,   256,   257,   102,   108,   164,   126,   111,   155,
    4254      126,   213,   216,   250,   348,   356,   289,   290,   101,   111,
    4255      322,   102,   108,   359,   261,   272,   101,   106,   261,   263,
    4256      272,   102,   108,   101,   102,   109,   262,   262,   103,   131,
    4257      137,   155,   263,   262,   126,   102,   108,   102,   101,   111,
    4258      343,   102,   108,   127,   155,   103,   131,   103,   136,   137,
    4259      126,   103,   131,   155,   155,   142,   142,   142,   143,   143,
    4260      144,   144,   145,   145,   145,   145,   146,   146,   147,   148,
    4261      149,   150,   151,   109,   160,   155,   126,   332,   333,   334,
    4262      216,   331,   298,   298,   155,   263,   126,   126,   258,   127,
    4263      216,   220,   126,   104,   356,    67,   129,   214,   336,   354,
    4264      104,   101,   126,   305,   323,   324,   325,   328,   338,   339,
    4265      340,   126,   216,   322,   326,   337,   101,   298,   341,   359,
    4266      298,   298,   359,   101,   298,   341,   298,   298,   298,   298,
    4267      336,   214,   347,   357,   259,   104,   108,   104,   108,   359,
    4268      214,   349,   359,   104,   247,   248,   249,   250,   247,   259,
    4269      127,   155,   126,   103,   261,   109,   108,   358,   265,   103,
    4270      109,   269,    28,   198,   199,   259,   247,   131,   295,   131,
    4271      297,   101,   335,   336,   101,   335,   336,   133,   111,   127,
    4272      164,   251,   102,   102,   102,   102,   102,   126,   104,   164,
    4273      196,   164,   101,   111,   127,   127,   124,   124,   103,   127,
    4274      305,   344,   345,   346,   154,   216,   343,   241,   242,   241,
    4275      298,   298,   261,   298,   107,   261,   107,   154,   358,   127,
    4276      127,   131,   211,   127,   127,   247,   101,   111,   356,   127,
    4277      107,   216,   273,   274,   127,   126,   126,   101,   127,   102,
    4278      302,   160,   161,   124,    75,   190,   191,   192,   102,   102,
    4279      126,   109,   102,   102,   102,   127,   155,   216,   106,   142,
    4280      157,   155,   156,   158,   104,   108,   127,   126,   126,   102,
    4281      108,   155,   126,   153,   109,   251,   102,   102,   102,   331,
    4282      251,   102,   104,   103,   111,   155,   155,   216,   127,   101,
    4283      101,   214,   354,   328,   251,   102,   102,   102,   102,   102,
    4284      102,   102,     7,   127,   216,   322,   326,   337,   126,   126,
    4285      359,   126,   126,   101,   127,   127,   127,   127,   264,   104,
    4286      127,   153,   154,   155,   296,   126,   265,   267,   107,   126,
    4287      200,   261,    38,    39,    41,    44,    45,    46,    47,    48,
    4288       49,    50,    51,    53,    56,   103,   131,   161,   162,   163,
    4289      164,   165,   166,   168,   169,   181,   183,   184,   189,   201,
    4290      294,    28,   127,   123,   264,   126,   126,   102,   104,   127,
    4291      127,    67,   164,   216,   102,   102,   126,   104,   102,   102,
    4292      102,   343,   240,   246,   107,   102,   108,   104,   104,   127,
    4293      216,   108,   359,   276,   102,   272,   204,   206,   214,   284,
    4294      285,   286,   287,   278,   102,   102,   101,   102,   109,   108,
    4295      155,   155,   104,   266,   108,   127,   158,   104,   131,   138,
    4296      139,   155,   137,   127,   138,   153,   157,   127,   101,   335,
    4297      336,   127,   214,   336,   349,   126,   127,   127,   127,   155,
    4298      104,   126,   126,   102,   127,   101,   335,   336,   101,   341,
    4299      101,   341,   336,   215,   104,     7,   111,   127,   155,   251,
    4300      251,   250,   254,   254,   255,   247,   102,   108,   108,   102,
    4301      104,    89,   115,   127,   127,   138,   265,   155,   108,   124,
    4302      201,   205,   216,   220,   101,   101,   162,   101,   101,   124,
    4303      131,   124,   131,   111,   131,   161,   101,   164,   124,   155,
    4304      126,   109,   124,   127,   126,   127,   200,   102,   155,   251,
    4305      251,   298,   336,   102,   104,   101,   106,   261,   261,   127,
    4306      101,   335,   336,   126,   102,   126,   127,   295,   107,   126,
    4307      127,   127,   102,   106,   154,   124,   190,   192,   108,   127,
    4308      358,   156,   104,   127,    78,   105,   108,   127,   127,   104,
    4309      127,   102,   126,   102,   214,   349,   104,   104,   104,   127,
    4310      247,   247,   102,   126,   126,   126,   155,   155,   127,   104,
    4311      127,   127,   127,   127,   102,   126,   126,   154,   154,   104,
    4312      104,   127,   127,   261,   216,   160,   160,    45,   160,   126,
    4313      124,   124,   160,   124,   124,   160,    54,    55,   185,   186,
    4314      187,   124,   127,   298,   166,   107,   124,   127,   127,   278,
    4315      236,   106,   104,   126,    89,   256,   257,   102,   285,   108,
    4316      124,   108,   124,   107,   283,   102,   102,   109,   158,   104,
    4317      107,   104,   103,   139,   103,   139,   139,   104,   104,   104,
    4318      251,   104,   127,   127,   251,   251,   251,   127,   127,   104,
    4319      104,   102,   102,   104,   108,    89,   250,    89,   127,   104,
    4320      104,   102,   102,   101,   102,   161,   182,   201,   124,   102,
    4321      101,   164,   187,    54,   104,   162,   102,   102,   102,   107,
    4322      236,   251,   106,   126,   126,   284,   124,    75,   193,   127,
    4323      109,   126,   126,   127,   102,   102,   127,   127,   127,   104,
    4324      104,   126,   127,   104,   162,    42,    43,   106,   172,   173,
    4325      174,   160,   162,   127,   102,   161,   106,   174,    89,   126,
    4326      101,   106,   261,   107,   127,   126,   259,   295,   107,   102,
    4327      108,   104,   155,   138,   138,   102,   102,   102,   102,   254,
    4328       40,   154,   170,   171,   296,   109,   126,   162,   172,   102,
    4329      124,   162,   124,   126,   102,   126,    89,   126,   236,   106,
    4330      102,   284,   124,    75,   109,   127,   127,   162,    89,   108,
    4331      109,   127,   194,   195,   201,   124,   161,   161,   194,   164,
    4332      188,   214,   352,   102,   126,   107,   236,   107,   155,   104,
    4333      104,   154,   170,   173,   175,   176,   126,   124,   173,   177,
    4334      178,   127,   101,   111,   295,   343,   131,   164,   188,   107,
    4335      101,   162,   167,   107,   173,   201,   161,    52,   167,   180,
    4336      107,   173,   102,   216,   127,   278,   162,   167,   124,   179,
    4337      180,   167,   180,   164,   102,   102,   179,   127,   164,   127
     4200      37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
     4201      76,    77,   101,   103,   111,   129,   132,   189,   201,   202,
     4202     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     4203     213,   214,   215,   216,   217,   218,   220,   221,   222,   223,
     4204     224,   225,   226,   227,   229,   230,   231,   232,   233,   234,
     4205     235,   243,   244,   270,   271,   279,   282,   288,   289,   291,
     4206     293,   294,   300,   305,   309,   310,   311,   312,   313,   314,
     4207     315,   316,   336,   353,   354,   355,   356,    65,   111,   131,
     4208     204,   206,   214,   216,   226,   230,   232,   271,    75,   101,
     4209     298,   299,   300,   298,   298,    65,    67,    68,    69,   130,
     4210     131,   260,   261,   280,   281,    67,    68,   261,   101,   291,
     4211     215,   216,   101,   111,   305,   310,   311,   312,   314,   315,
     4212     316,   126,   103,   207,   214,   216,   309,   313,   352,   353,
     4213     356,   357,   127,   123,   264,   106,   127,   164,    67,    68,
     4214     129,   259,   127,   127,   127,   108,   127,    67,   101,   111,
     4215     295,   304,   305,   306,   307,   308,   309,   313,   317,   318,
     4216     319,   320,   321,     3,    27,    71,   228,     3,     5,    67,
     4217      68,   103,   111,   206,   217,   221,   224,   233,   309,   313,
     4218     356,   204,   206,   216,   226,   230,   232,   271,   309,   313,
     4219      32,   222,   222,   217,   224,   127,   222,   217,   222,   217,
     4220     101,   106,   261,   106,   261,   222,   217,   108,   127,   127,
     4221       0,   126,   101,   164,   298,   298,   126,   103,   214,   216,
     4222     354,   259,   259,   216,   123,   101,   111,   295,   305,   309,
     4223     103,   111,   356,   292,   219,   300,   101,   276,   101,   101,
     4224     101,    36,    38,    59,    65,    69,    72,    73,    74,    75,
     4225      79,    80,    87,   101,   103,   110,   111,   112,   113,   114,
     4226     115,   128,   132,   133,   134,   135,   140,   141,   142,   143,
     4227     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
     4228     155,   157,   214,   263,   278,   352,   357,   216,   102,   102,
     4229     102,   102,   102,   102,   102,   103,   111,   127,   155,   206,
     4230     207,   213,   216,   220,   221,   226,   229,   230,   232,   249,
     4231     250,   254,   255,   256,   257,   271,   336,   348,   349,   350,
     4232     351,   356,   357,   126,   101,   309,   313,   356,   101,   108,
     4233     124,   103,   106,   111,   155,   265,   107,   126,   108,   124,
     4234     101,   108,   124,   108,   124,   108,   124,   298,   124,   305,
     4235     306,   307,   308,   318,   319,   320,   321,   216,   304,   317,
     4236      57,   297,   103,   298,   335,   336,   298,   298,   164,   126,
     4237     101,   298,   335,   298,   298,   216,   295,   101,   101,   215,
     4238     214,   216,   101,   126,   214,   352,   357,   164,   126,   259,
     4239     264,   206,   221,   309,   313,   164,   126,   280,   216,   226,
     4240     124,   216,   216,   126,    38,   103,   214,   236,   237,   238,
     4241     239,   352,   356,   106,   245,   261,   106,   216,   280,   124,
     4242     124,   291,   126,   131,   258,     3,   127,   196,   197,   211,
     4243     213,   216,   126,   297,   101,   297,   155,   305,   216,   101,
     4244     126,   259,   106,    32,    33,    34,   214,   272,   273,   275,
     4245     126,   121,   123,   277,   126,   217,   223,   224,   259,   301,
     4246     302,   303,   140,   153,   154,   101,   140,   142,   101,   140,
     4247     101,   101,   140,   140,   131,   103,   155,   160,   164,   214,
     4248     262,   352,   126,   142,   142,    75,    78,    79,    80,   101,
     4249     103,   105,    90,    91,    92,    93,    94,    95,    96,    97,
     4250      98,    99,   123,   159,   142,   111,   116,   117,   113,   114,
     4251      81,    82,    83,    84,   118,   119,    85,    86,   112,   120,
     4252     121,    87,    88,   122,   123,   359,   101,   111,   331,   332,
     4253     333,   334,   335,   102,   108,   101,   335,   103,   336,   101,
     4254     335,   336,   126,   103,   111,   127,   214,   216,   347,   348,
     4255     356,   357,   104,   127,    67,   101,   103,   111,   305,   322,
     4256     323,   324,   325,   326,   327,   328,   329,   330,   336,   337,
     4257     338,   339,   340,   341,   342,   111,   356,   216,   127,   127,
     4258     111,   214,   216,   349,   259,   214,   336,   349,   259,   127,
     4259     126,   126,   126,   126,    65,   103,   105,   261,   265,   266,
     4260     267,   268,   269,   126,   126,   126,   126,   126,   126,   295,
     4261     102,   102,   102,   102,   102,   102,   102,   304,   317,   101,
     4262     264,   126,   196,   126,   295,   160,   263,   160,   263,   295,
     4263     278,   103,   127,   196,   297,   164,   126,   196,   214,   272,
     4264     278,   238,   239,   126,   101,   109,   111,   240,   242,   304,
     4265     305,   317,   335,   343,   344,   345,   346,   107,   237,   108,
     4266     124,   108,   124,   261,   236,   108,   358,   123,   246,   245,
     4267     216,   251,   252,   253,   256,   257,   102,   108,   164,   126,
     4268     111,   155,   126,   213,   216,   250,   348,   356,   289,   290,
     4269     101,   111,   322,   102,   108,   359,   261,   272,   101,   106,
     4270     261,   263,   272,   102,   108,   101,   102,   109,   262,   262,
     4271     103,   131,   137,   155,   263,   262,   126,   102,   108,   102,
     4272     101,   111,   343,   102,   108,   127,   155,   103,   131,   103,
     4273     136,   137,   126,   103,   131,   155,   155,   142,   142,   142,
     4274     143,   143,   144,   144,   145,   145,   145,   145,   146,   146,
     4275     147,   148,   149,   150,   151,   109,   160,   155,   126,   332,
     4276     333,   334,   216,   331,   298,   298,   155,   263,   126,   126,
     4277     258,   127,   216,   220,   126,   104,   356,    67,   129,   214,
     4278     336,   354,   104,   101,   126,   305,   323,   324,   325,   328,
     4279     338,   339,   340,   126,   216,   322,   326,   337,   101,   298,
     4280     341,   359,   298,   298,   359,   101,   298,   341,   298,   298,
     4281     298,   298,   336,   214,   347,   357,   259,   104,   108,   104,
     4282     108,   359,   214,   349,   359,   104,   247,   248,   249,   250,
     4283     247,   259,   127,   155,   126,   103,   261,   109,   108,   358,
     4284     265,   103,   109,   269,    28,   198,   199,   259,   247,   131,
     4285     295,   131,   297,   101,   335,   336,   101,   335,   336,   133,
     4286     111,   127,   164,   251,   102,   102,   102,   102,   102,   126,
     4287     104,   164,   196,   164,   101,   111,   127,   127,   124,   124,
     4288     103,   127,   305,   344,   345,   346,   154,   216,   343,   241,
     4289     242,   241,   298,   298,   261,   298,   107,   261,   107,   154,
     4290     358,   127,   127,   131,   211,   127,   127,   247,   101,   111,
     4291     356,   127,   107,   216,   273,   274,   127,   126,   126,   101,
     4292     127,   102,   302,   160,   161,   124,    75,   190,   191,   192,
     4293     102,   102,   126,   109,   102,   102,   102,   127,   155,   216,
     4294     106,   142,   157,   155,   156,   158,   104,   108,   127,   126,
     4295     126,   102,   108,   155,   126,   153,   109,   251,   102,   102,
     4296     102,   331,   251,   102,   104,   103,   111,   155,   155,   216,
     4297     127,   101,   101,   214,   354,   328,   251,   102,   102,   102,
     4298     102,   102,   102,   102,     7,   127,   216,   322,   326,   337,
     4299     126,   126,   359,   126,   126,   101,   127,   127,   127,   127,
     4300     264,   104,   127,   153,   154,   155,   296,   126,   265,   267,
     4301     107,   126,   200,   261,    38,    39,    41,    44,    45,    46,
     4302      47,    48,    49,    50,    51,    53,    56,   103,   131,   161,
     4303     162,   163,   164,   165,   166,   168,   169,   181,   183,   184,
     4304     189,   201,   294,    28,   127,   123,   264,   126,   126,   102,
     4305     104,   127,   127,    67,   164,   216,   102,   102,   126,   104,
     4306     102,   102,   102,   343,   240,   246,   107,   102,   108,   104,
     4307     104,   127,   216,   108,   359,   276,   102,   272,   204,   206,
     4308     214,   284,   285,   286,   287,   278,   102,   102,   101,   102,
     4309     109,   108,   155,   155,   104,   266,   108,   127,   158,   104,
     4310     131,   138,   139,   155,   137,   127,   138,   153,   157,   127,
     4311     101,   335,   336,   127,   214,   336,   349,   126,   127,   127,
     4312     127,   155,   104,   126,   126,   102,   127,   101,   335,   336,
     4313     101,   341,   101,   341,   336,   215,   104,     7,   111,   127,
     4314     155,   251,   251,   250,   254,   254,   255,   247,   102,   108,
     4315     108,   102,   104,    89,   115,   127,   127,   138,   265,   155,
     4316     108,   124,   201,   205,   216,   220,   101,   101,   162,   101,
     4317     101,   124,   131,   124,   131,   111,   131,   161,   101,   164,
     4318     124,   155,   126,   109,   124,   127,   126,   127,   200,   102,
     4319     155,   251,   251,   298,   336,   102,   104,   101,   106,   261,
     4320     261,   127,   101,   335,   336,   126,   102,   126,   127,   295,
     4321     107,   126,   127,   127,   102,   106,   154,   124,   190,   192,
     4322     108,   127,   358,   156,   104,   127,    78,   105,   108,   127,
     4323     127,   104,   127,   102,   126,   102,   214,   349,   104,   104,
     4324     104,   127,   247,   247,   102,   126,   126,   126,   155,   155,
     4325     127,   104,   127,   127,   127,   127,   102,   126,   126,   154,
     4326     154,   104,   104,   127,   127,   261,   216,   160,   160,    45,
     4327     160,   126,   124,   124,   160,   124,   124,   160,    54,    55,
     4328     185,   186,   187,   124,   127,   298,   166,   107,   124,   127,
     4329     127,   278,   236,   106,   104,   126,    89,   256,   257,   102,
     4330     285,   108,   124,   108,   124,   107,   283,   102,   102,   109,
     4331     158,   104,   107,   104,   103,   139,   103,   139,   139,   104,
     4332     104,   104,   251,   104,   127,   127,   251,   251,   251,   127,
     4333     127,   104,   104,   102,   102,   104,   108,    89,   250,    89,
     4334     127,   104,   104,   102,   102,   101,   102,   161,   182,   201,
     4335     124,   102,   101,   164,   187,    54,   104,   162,   102,   102,
     4336     102,   107,   236,   251,   106,   126,   126,   284,   124,    75,
     4337     193,   127,   109,   126,   126,   127,   102,   102,   127,   127,
     4338     127,   104,   104,   126,   127,   104,   162,    42,    43,   106,
     4339     172,   173,   174,   160,   162,   127,   102,   161,   106,   174,
     4340      89,   126,   101,   106,   261,   107,   127,   126,   259,   295,
     4341     107,   102,   108,   104,   155,   138,   138,   102,   102,   102,
     4342     102,   254,    40,   154,   170,   171,   296,   109,   126,   162,
     4343     172,   102,   124,   162,   124,   126,   102,   126,    89,   126,
     4344     236,   106,   102,   284,   124,    75,   109,   127,   127,   162,
     4345      89,   108,   109,   127,   194,   195,   201,   124,   161,   161,
     4346     194,   164,   188,   214,   352,   102,   126,   107,   236,   107,
     4347     155,   104,   104,   154,   170,   173,   175,   176,   126,   124,
     4348     173,   177,   178,   127,   101,   111,   295,   343,   131,   164,
     4349     188,   107,   101,   162,   167,   107,   173,   201,   161,    52,
     4350     167,   180,   107,   173,   102,   216,   127,   278,   162,   167,
     4351     124,   179,   180,   167,   180,   164,   102,   102,   179,   127,
     4352     164,   127
    43384353};
    43394354
     
    67426757
    67436758/* Line 1806 of yacc.c  */
    6744 #line 1250 "parser.yy"
     6759#line 1249 "parser.yy"
    67456760    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    67466761    break;
     
    67496764
    67506765/* Line 1806 of yacc.c  */
    6751 #line 1252 "parser.yy"
     6766#line 1251 "parser.yy"
    67526767    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67536768    break;
     
    67566771
    67576772/* Line 1806 of yacc.c  */
    6758 #line 1257 "parser.yy"
     6773#line 1253 "parser.yy"
     6774    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6775    break;
     6776
     6777  case 305:
     6778
     6779/* Line 1806 of yacc.c  */
     6780#line 1255 "parser.yy"
     6781    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6782    break;
     6783
     6784  case 306:
     6785
     6786/* Line 1806 of yacc.c  */
     6787#line 1260 "parser.yy"
    67596788    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67606789    break;
    67616790
    6762   case 305:
    6763 
    6764 /* Line 1806 of yacc.c  */
    6765 #line 1259 "parser.yy"
     6791  case 307:
     6792
     6793/* Line 1806 of yacc.c  */
     6794#line 1262 "parser.yy"
    67666795    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67676796    break;
    67686797
    6769   case 306:
    6770 
    6771 /* Line 1806 of yacc.c  */
    6772 #line 1261 "parser.yy"
     6798  case 308:
     6799
     6800/* Line 1806 of yacc.c  */
     6801#line 1264 "parser.yy"
    67736802    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67746803    break;
    67756804
    6776   case 307:
    6777 
    6778 /* Line 1806 of yacc.c  */
    6779 #line 1263 "parser.yy"
     6805  case 309:
     6806
     6807/* Line 1806 of yacc.c  */
     6808#line 1266 "parser.yy"
    67806809    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67816810    break;
    67826811
    6783   case 308:
    6784 
    6785 /* Line 1806 of yacc.c  */
    6786 #line 1265 "parser.yy"
     6812  case 310:
     6813
     6814/* Line 1806 of yacc.c  */
     6815#line 1268 "parser.yy"
    67876816    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    67886817    break;
    67896818
    6790   case 309:
    6791 
    6792 /* Line 1806 of yacc.c  */
    6793 #line 1267 "parser.yy"
     6819  case 311:
     6820
     6821/* Line 1806 of yacc.c  */
     6822#line 1270 "parser.yy"
    67946823    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    67956824    break;
    67966825
    6797   case 310:
    6798 
    6799 /* Line 1806 of yacc.c  */
    6800 #line 1269 "parser.yy"
     6826  case 312:
     6827
     6828/* Line 1806 of yacc.c  */
     6829#line 1272 "parser.yy"
    68016830    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    68026831    break;
    68036832
    6804   case 311:
    6805 
    6806 /* Line 1806 of yacc.c  */
    6807 #line 1271 "parser.yy"
     6833  case 313:
     6834
     6835/* Line 1806 of yacc.c  */
     6836#line 1274 "parser.yy"
    68086837    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    68096838    break;
    68106839
    6811   case 312:
    6812 
    6813 /* Line 1806 of yacc.c  */
    6814 #line 1273 "parser.yy"
     6840  case 314:
     6841
     6842/* Line 1806 of yacc.c  */
     6843#line 1276 "parser.yy"
    68156844    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    68166845    break;
    68176846
    6818   case 313:
    6819 
    6820 /* Line 1806 of yacc.c  */
    6821 #line 1275 "parser.yy"
     6847  case 315:
     6848
     6849/* Line 1806 of yacc.c  */
     6850#line 1278 "parser.yy"
    68226851    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    68236852    break;
    68246853
    6825   case 314:
    6826 
    6827 /* Line 1806 of yacc.c  */
    6828 #line 1277 "parser.yy"
     6854  case 316:
     6855
     6856/* Line 1806 of yacc.c  */
     6857#line 1280 "parser.yy"
    68296858    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    68306859    break;
    68316860
    6832   case 315:
    6833 
    6834 /* Line 1806 of yacc.c  */
    6835 #line 1279 "parser.yy"
     6861  case 317:
     6862
     6863/* Line 1806 of yacc.c  */
     6864#line 1282 "parser.yy"
    68366865    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    68376866    break;
    68386867
    6839   case 317:
    6840 
    6841 /* Line 1806 of yacc.c  */
    6842 #line 1286 "parser.yy"
     6868  case 319:
     6869
     6870/* Line 1806 of yacc.c  */
     6871#line 1289 "parser.yy"
    68436872    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68446873    break;
    68456874
    6846   case 318:
    6847 
    6848 /* Line 1806 of yacc.c  */
    6849 #line 1288 "parser.yy"
     6875  case 320:
     6876
     6877/* Line 1806 of yacc.c  */
     6878#line 1291 "parser.yy"
    68506879    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68516880    break;
    68526881
    6853   case 319:
    6854 
    6855 /* Line 1806 of yacc.c  */
    6856 #line 1290 "parser.yy"
     6882  case 321:
     6883
     6884/* Line 1806 of yacc.c  */
     6885#line 1293 "parser.yy"
    68576886    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68586887    break;
    68596888
    6860   case 320:
    6861 
    6862 /* Line 1806 of yacc.c  */
    6863 #line 1292 "parser.yy"
     6889  case 322:
     6890
     6891/* Line 1806 of yacc.c  */
     6892#line 1295 "parser.yy"
    68646893    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68656894    break;
    68666895
    6867   case 322:
    6868 
    6869 /* Line 1806 of yacc.c  */
    6870 #line 1298 "parser.yy"
     6896  case 324:
     6897
     6898/* Line 1806 of yacc.c  */
     6899#line 1301 "parser.yy"
    68716900    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68726901    break;
    68736902
    6874   case 324:
    6875 
    6876 /* Line 1806 of yacc.c  */
    6877 #line 1305 "parser.yy"
     6903  case 326:
     6904
     6905/* Line 1806 of yacc.c  */
     6906#line 1308 "parser.yy"
    68786907    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68796908    break;
    68806909
    6881   case 325:
    6882 
    6883 /* Line 1806 of yacc.c  */
    6884 #line 1307 "parser.yy"
     6910  case 327:
     6911
     6912/* Line 1806 of yacc.c  */
     6913#line 1310 "parser.yy"
    68856914    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68866915    break;
    68876916
    6888   case 326:
    6889 
    6890 /* Line 1806 of yacc.c  */
    6891 #line 1309 "parser.yy"
     6917  case 328:
     6918
     6919/* Line 1806 of yacc.c  */
     6920#line 1312 "parser.yy"
    68926921    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68936922    break;
    68946923
    6895   case 327:
    6896 
    6897 /* Line 1806 of yacc.c  */
    6898 #line 1314 "parser.yy"
     6924  case 329:
     6925
     6926/* Line 1806 of yacc.c  */
     6927#line 1317 "parser.yy"
    68996928    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    69006929    break;
    69016930
    6902   case 328:
    6903 
    6904 /* Line 1806 of yacc.c  */
    6905 #line 1316 "parser.yy"
     6931  case 330:
     6932
     6933/* Line 1806 of yacc.c  */
     6934#line 1319 "parser.yy"
    69066935    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    69076936    break;
    69086937
    6909   case 329:
    6910 
    6911 /* Line 1806 of yacc.c  */
    6912 #line 1318 "parser.yy"
     6938  case 331:
     6939
     6940/* Line 1806 of yacc.c  */
     6941#line 1321 "parser.yy"
    69136942    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    69146943    break;
    69156944
    6916   case 330:
    6917 
    6918 /* Line 1806 of yacc.c  */
    6919 #line 1320 "parser.yy"
     6945  case 332:
     6946
     6947/* Line 1806 of yacc.c  */
     6948#line 1323 "parser.yy"
    69206949    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    69216950    break;
    69226951
    6923   case 332:
    6924 
    6925 /* Line 1806 of yacc.c  */
    6926 #line 1326 "parser.yy"
     6952  case 334:
     6953
     6954/* Line 1806 of yacc.c  */
     6955#line 1329 "parser.yy"
    69276956    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69286957    break;
    69296958
    6930   case 333:
    6931 
    6932 /* Line 1806 of yacc.c  */
    6933 #line 1328 "parser.yy"
     6959  case 335:
     6960
     6961/* Line 1806 of yacc.c  */
     6962#line 1331 "parser.yy"
    69346963    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69356964    break;
    69366965
    6937   case 334:
    6938 
    6939 /* Line 1806 of yacc.c  */
    6940 #line 1330 "parser.yy"
     6966  case 336:
     6967
     6968/* Line 1806 of yacc.c  */
     6969#line 1333 "parser.yy"
    69416970    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69426971    break;
    69436972
    6944   case 336:
    6945 
    6946 /* Line 1806 of yacc.c  */
    6947 #line 1336 "parser.yy"
     6973  case 338:
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1339 "parser.yy"
    69486977    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69496978    break;
    69506979
    6951   case 337:
    6952 
    6953 /* Line 1806 of yacc.c  */
    6954 #line 1338 "parser.yy"
     6980  case 339:
     6981
     6982/* Line 1806 of yacc.c  */
     6983#line 1341 "parser.yy"
    69556984    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69566985    break;
    69576986
    6958   case 339:
    6959 
    6960 /* Line 1806 of yacc.c  */
    6961 #line 1344 "parser.yy"
     6987  case 341:
     6988
     6989/* Line 1806 of yacc.c  */
     6990#line 1347 "parser.yy"
    69626991    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69636992    break;
    69646993
    6965   case 340:
    6966 
    6967 /* Line 1806 of yacc.c  */
    6968 #line 1346 "parser.yy"
     6994  case 342:
     6995
     6996/* Line 1806 of yacc.c  */
     6997#line 1349 "parser.yy"
    69696998    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69706999    break;
    69717000
    6972   case 341:
    6973 
    6974 /* Line 1806 of yacc.c  */
    6975 #line 1348 "parser.yy"
     7001  case 343:
     7002
     7003/* Line 1806 of yacc.c  */
     7004#line 1351 "parser.yy"
    69767005    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69777006    break;
    69787007
    6979   case 342:
    6980 
    6981 /* Line 1806 of yacc.c  */
    6982 #line 1353 "parser.yy"
     7008  case 344:
     7009
     7010/* Line 1806 of yacc.c  */
     7011#line 1356 "parser.yy"
    69837012    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69847013    break;
    69857014
    6986   case 343:
    6987 
    6988 /* Line 1806 of yacc.c  */
    6989 #line 1355 "parser.yy"
     7015  case 345:
     7016
     7017/* Line 1806 of yacc.c  */
     7018#line 1358 "parser.yy"
    69907019    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69917020    break;
    69927021
    6993   case 344:
    6994 
    6995 /* Line 1806 of yacc.c  */
    6996 #line 1357 "parser.yy"
     7022  case 346:
     7023
     7024/* Line 1806 of yacc.c  */
     7025#line 1360 "parser.yy"
    69977026    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69987027    break;
    69997028
    7000   case 347:
    7001 
    7002 /* Line 1806 of yacc.c  */
    7003 #line 1367 "parser.yy"
     7029  case 349:
     7030
     7031/* Line 1806 of yacc.c  */
     7032#line 1370 "parser.yy"
    70047033    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
    70057034    break;
    70067035
    7007   case 348:
    7008 
    7009 /* Line 1806 of yacc.c  */
    7010 #line 1369 "parser.yy"
     7036  case 350:
     7037
     7038/* Line 1806 of yacc.c  */
     7039#line 1372 "parser.yy"
    70117040    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
    70127041    break;
    70137042
    7014   case 349:
    7015 
    7016 /* Line 1806 of yacc.c  */
    7017 #line 1371 "parser.yy"
     7043  case 351:
     7044
     7045/* Line 1806 of yacc.c  */
     7046#line 1374 "parser.yy"
    70187047    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
    70197048    break;
    70207049
    7021   case 350:
    7022 
    7023 /* Line 1806 of yacc.c  */
    7024 #line 1373 "parser.yy"
     7050  case 352:
     7051
     7052/* Line 1806 of yacc.c  */
     7053#line 1376 "parser.yy"
    70257054    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
    70267055    break;
    70277056
    7028   case 351:
    7029 
    7030 /* Line 1806 of yacc.c  */
    7031 #line 1375 "parser.yy"
     7057  case 353:
     7058
     7059/* Line 1806 of yacc.c  */
     7060#line 1378 "parser.yy"
    70327061    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
    70337062    break;
    70347063
    7035   case 352:
    7036 
    7037 /* Line 1806 of yacc.c  */
    7038 #line 1377 "parser.yy"
     7064  case 354:
     7065
     7066/* Line 1806 of yacc.c  */
     7067#line 1380 "parser.yy"
    70397068    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
    70407069    break;
    70417070
    7042   case 353:
    7043 
    7044 /* Line 1806 of yacc.c  */
    7045 #line 1379 "parser.yy"
     7071  case 355:
     7072
     7073/* Line 1806 of yacc.c  */
     7074#line 1382 "parser.yy"
    70467075    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
    70477076    break;
    70487077
    7049   case 354:
    7050 
    7051 /* Line 1806 of yacc.c  */
    7052 #line 1382 "parser.yy"
     7078  case 356:
     7079
     7080/* Line 1806 of yacc.c  */
     7081#line 1385 "parser.yy"
    70537082    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
    70547083    break;
    70557084
    7056   case 355:
    7057 
    7058 /* Line 1806 of yacc.c  */
    7059 #line 1384 "parser.yy"
     7085  case 357:
     7086
     7087/* Line 1806 of yacc.c  */
     7088#line 1387 "parser.yy"
    70607089    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (13)].aggKey), (yyvsp[(10) - (13)].tok), (yyvsp[(4) - (13)].decl), (yyvsp[(8) - (13)].en), (yyvsp[(12) - (13)].decl) ); }
    70617090    break;
    70627091
    7063   case 356:
    7064 
    7065 /* Line 1806 of yacc.c  */
    7066 #line 1389 "parser.yy"
     7092  case 358:
     7093
     7094/* Line 1806 of yacc.c  */
     7095#line 1392 "parser.yy"
    70677096    { (yyval.aggKey) = DeclarationNode::Struct; }
    70687097    break;
    70697098
    7070   case 357:
    7071 
    7072 /* Line 1806 of yacc.c  */
    7073 #line 1391 "parser.yy"
     7099  case 359:
     7100
     7101/* Line 1806 of yacc.c  */
     7102#line 1394 "parser.yy"
    70747103    { (yyval.aggKey) = DeclarationNode::Union; }
    70757104    break;
    70767105
    7077   case 358:
    7078 
    7079 /* Line 1806 of yacc.c  */
    7080 #line 1396 "parser.yy"
     7106  case 360:
     7107
     7108/* Line 1806 of yacc.c  */
     7109#line 1399 "parser.yy"
    70817110    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    70827111    break;
    70837112
    7084   case 359:
    7085 
    7086 /* Line 1806 of yacc.c  */
    7087 #line 1398 "parser.yy"
     7113  case 361:
     7114
     7115/* Line 1806 of yacc.c  */
     7116#line 1401 "parser.yy"
    70887117    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7089     break;
    7090 
    7091   case 361:
    7092 
    7093 /* Line 1806 of yacc.c  */
    7094 #line 1404 "parser.yy"
    7095     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    70967118    break;
    70977119
     
    71067128
    71077129/* Line 1806 of yacc.c  */
    7108 #line 1413 "parser.yy"
     7130#line 1410 "parser.yy"
     7131    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7132    break;
     7133
     7134  case 367:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1416 "parser.yy"
    71097138    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    71107139    break;
    71117140
    7112   case 366:
    7113 
    7114 /* Line 1806 of yacc.c  */
    7115 #line 1415 "parser.yy"
     7141  case 368:
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1418 "parser.yy"
    71167145    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    71177146    break;
    71187147
    7119   case 367:
    7120 
    7121 /* Line 1806 of yacc.c  */
    7122 #line 1417 "parser.yy"
     7148  case 369:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1420 "parser.yy"
    71237152    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    71247153    break;
    71257154
    7126   case 368:
    7127 
    7128 /* Line 1806 of yacc.c  */
    7129 #line 1422 "parser.yy"
     7155  case 370:
     7156
     7157/* Line 1806 of yacc.c  */
     7158#line 1425 "parser.yy"
    71307159    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71317160    break;
    71327161
    7133   case 369:
    7134 
    7135 /* Line 1806 of yacc.c  */
    7136 #line 1424 "parser.yy"
     7162  case 371:
     7163
     7164/* Line 1806 of yacc.c  */
     7165#line 1427 "parser.yy"
    71377166    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71387167    break;
    71397168
    7140   case 370:
    7141 
    7142 /* Line 1806 of yacc.c  */
    7143 #line 1429 "parser.yy"
     7169  case 372:
     7170
     7171/* Line 1806 of yacc.c  */
     7172#line 1432 "parser.yy"
    71447173    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71457174    break;
    71467175
    7147   case 371:
    7148 
    7149 /* Line 1806 of yacc.c  */
    7150 #line 1431 "parser.yy"
     7176  case 373:
     7177
     7178/* Line 1806 of yacc.c  */
     7179#line 1434 "parser.yy"
    71517180    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71527181    break;
    71537182
    7154   case 372:
    7155 
    7156 /* Line 1806 of yacc.c  */
    7157 #line 1434 "parser.yy"
    7158     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7159     break;
    7160 
    7161   case 373:
     7183  case 374:
    71627184
    71637185/* Line 1806 of yacc.c  */
     
    71697191
    71707192/* Line 1806 of yacc.c  */
    7171 #line 1443 "parser.yy"
     7193#line 1440 "parser.yy"
     7194    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7195    break;
     7196
     7197  case 377:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1446 "parser.yy"
    71727201    { (yyval.en) = 0; }
    71737202    break;
    71747203
    7175   case 376:
    7176 
    7177 /* Line 1806 of yacc.c  */
    7178 #line 1445 "parser.yy"
     7204  case 378:
     7205
     7206/* Line 1806 of yacc.c  */
     7207#line 1448 "parser.yy"
    71797208    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71807209    break;
    71817210
    7182   case 377:
    7183 
    7184 /* Line 1806 of yacc.c  */
    7185 #line 1450 "parser.yy"
     7211  case 379:
     7212
     7213/* Line 1806 of yacc.c  */
     7214#line 1453 "parser.yy"
    71867215    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71877216    break;
    71887217
    7189   case 379:
    7190 
    7191 /* Line 1806 of yacc.c  */
    7192 #line 1459 "parser.yy"
     7218  case 381:
     7219
     7220/* Line 1806 of yacc.c  */
     7221#line 1462 "parser.yy"
    71937222    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71947223    break;
    71957224
    7196   case 380:
    7197 
    7198 /* Line 1806 of yacc.c  */
    7199 #line 1461 "parser.yy"
     7225  case 382:
     7226
     7227/* Line 1806 of yacc.c  */
     7228#line 1464 "parser.yy"
    72007229    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    72017230    break;
    72027231
    7203   case 381:
    7204 
    7205 /* Line 1806 of yacc.c  */
    7206 #line 1463 "parser.yy"
     7232  case 383:
     7233
     7234/* Line 1806 of yacc.c  */
     7235#line 1466 "parser.yy"
    72077236    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    72087237    break;
    72097238
    7210   case 382:
    7211 
    7212 /* Line 1806 of yacc.c  */
    7213 #line 1468 "parser.yy"
     7239  case 384:
     7240
     7241/* Line 1806 of yacc.c  */
     7242#line 1471 "parser.yy"
    72147243    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    72157244    break;
    72167245
    7217   case 383:
    7218 
    7219 /* Line 1806 of yacc.c  */
    7220 #line 1470 "parser.yy"
     7246  case 385:
     7247
     7248/* Line 1806 of yacc.c  */
     7249#line 1473 "parser.yy"
    72217250    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    72227251    break;
    72237252
    7224   case 384:
    7225 
    7226 /* Line 1806 of yacc.c  */
    7227 #line 1475 "parser.yy"
     7253  case 386:
     7254
     7255/* Line 1806 of yacc.c  */
     7256#line 1478 "parser.yy"
    72287257    { (yyval.en) = 0; }
    72297258    break;
    72307259
    7231   case 385:
    7232 
    7233 /* Line 1806 of yacc.c  */
    7234 #line 1477 "parser.yy"
     7260  case 387:
     7261
     7262/* Line 1806 of yacc.c  */
     7263#line 1480 "parser.yy"
    72357264    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72367265    break;
    72377266
    7238   case 386:
    7239 
    7240 /* Line 1806 of yacc.c  */
    7241 #line 1484 "parser.yy"
     7267  case 388:
     7268
     7269/* Line 1806 of yacc.c  */
     7270#line 1487 "parser.yy"
    72427271    { (yyval.decl) = 0; }
    72437272    break;
    72447273
    7245   case 390:
    7246 
    7247 /* Line 1806 of yacc.c  */
    7248 #line 1492 "parser.yy"
     7274  case 392:
     7275
     7276/* Line 1806 of yacc.c  */
     7277#line 1495 "parser.yy"
    72497278    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72507279    break;
    72517280
    7252   case 391:
    7253 
    7254 /* Line 1806 of yacc.c  */
    7255 #line 1494 "parser.yy"
     7281  case 393:
     7282
     7283/* Line 1806 of yacc.c  */
     7284#line 1497 "parser.yy"
    72567285    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72577286    break;
    72587287
    7259   case 392:
    7260 
    7261 /* Line 1806 of yacc.c  */
    7262 #line 1496 "parser.yy"
     7288  case 394:
     7289
     7290/* Line 1806 of yacc.c  */
     7291#line 1499 "parser.yy"
    72637292    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72647293    break;
    72657294
    7266   case 394:
    7267 
    7268 /* Line 1806 of yacc.c  */
    7269 #line 1505 "parser.yy"
     7295  case 396:
     7296
     7297/* Line 1806 of yacc.c  */
     7298#line 1508 "parser.yy"
    72707299    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72717300    break;
    72727301
    7273   case 395:
    7274 
    7275 /* Line 1806 of yacc.c  */
    7276 #line 1507 "parser.yy"
     7302  case 397:
     7303
     7304/* Line 1806 of yacc.c  */
     7305#line 1510 "parser.yy"
    72777306    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72787307    break;
    72797308
    7280   case 396:
    7281 
    7282 /* Line 1806 of yacc.c  */
    7283 #line 1509 "parser.yy"
     7309  case 398:
     7310
     7311/* Line 1806 of yacc.c  */
     7312#line 1512 "parser.yy"
    72847313    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72857314    break;
    72867315
    7287   case 398:
    7288 
    7289 /* Line 1806 of yacc.c  */
    7290 #line 1515 "parser.yy"
     7316  case 400:
     7317
     7318/* Line 1806 of yacc.c  */
     7319#line 1518 "parser.yy"
    72917320    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72927321    break;
    72937322
    7294   case 399:
    7295 
    7296 /* Line 1806 of yacc.c  */
    7297 #line 1520 "parser.yy"
     7323  case 401:
     7324
     7325/* Line 1806 of yacc.c  */
     7326#line 1523 "parser.yy"
    72987327    { (yyval.decl) = 0; }
    72997328    break;
    73007329
    7301   case 402:
    7302 
    7303 /* Line 1806 of yacc.c  */
    7304 #line 1527 "parser.yy"
     7330  case 404:
     7331
     7332/* Line 1806 of yacc.c  */
     7333#line 1530 "parser.yy"
    73057334    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    73067335    break;
    73077336
    7308   case 405:
    7309 
    7310 /* Line 1806 of yacc.c  */
    7311 #line 1534 "parser.yy"
     7337  case 407:
     7338
     7339/* Line 1806 of yacc.c  */
     7340#line 1537 "parser.yy"
    73127341    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73137342    break;
    73147343
    7315   case 406:
    7316 
    7317 /* Line 1806 of yacc.c  */
    7318 #line 1536 "parser.yy"
     7344  case 408:
     7345
     7346/* Line 1806 of yacc.c  */
     7347#line 1539 "parser.yy"
    73197348    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73207349    break;
    73217350
    7322   case 408:
    7323 
    7324 /* Line 1806 of yacc.c  */
    7325 #line 1546 "parser.yy"
    7326     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7327     break;
    7328 
    7329   case 409:
     7351  case 410:
    73307352
    73317353/* Line 1806 of yacc.c  */
     
    73347356    break;
    73357357
    7336   case 410:
    7337 
    7338 /* Line 1806 of yacc.c  */
    7339 #line 1551 "parser.yy"
     7358  case 411:
     7359
     7360/* Line 1806 of yacc.c  */
     7361#line 1552 "parser.yy"
     7362    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7363    break;
     7364
     7365  case 412:
     7366
     7367/* Line 1806 of yacc.c  */
     7368#line 1554 "parser.yy"
    73407369    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73417370    break;
    73427371
    7343   case 415:
    7344 
    7345 /* Line 1806 of yacc.c  */
    7346 #line 1561 "parser.yy"
     7372  case 417:
     7373
     7374/* Line 1806 of yacc.c  */
     7375#line 1564 "parser.yy"
    73477376    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73487377    break;
    73497378
    7350   case 417:
    7351 
    7352 /* Line 1806 of yacc.c  */
    7353 #line 1567 "parser.yy"
     7379  case 419:
     7380
     7381/* Line 1806 of yacc.c  */
     7382#line 1570 "parser.yy"
    73547383    {
    73557384                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73587387    break;
    73597388
    7360   case 418:
    7361 
    7362 /* Line 1806 of yacc.c  */
    7363 #line 1572 "parser.yy"
     7389  case 420:
     7390
     7391/* Line 1806 of yacc.c  */
     7392#line 1575 "parser.yy"
    73647393    {
    73657394                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73687397    break;
    73697398
    7370   case 420:
    7371 
    7372 /* Line 1806 of yacc.c  */
    7373 #line 1581 "parser.yy"
     7399  case 422:
     7400
     7401/* Line 1806 of yacc.c  */
     7402#line 1584 "parser.yy"
    73747403    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73757404    break;
    73767405
    7377   case 421:
    7378 
    7379 /* Line 1806 of yacc.c  */
    7380 #line 1590 "parser.yy"
     7406  case 423:
     7407
     7408/* Line 1806 of yacc.c  */
     7409#line 1593 "parser.yy"
    73817410    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73827411    break;
    73837412
    7384   case 422:
    7385 
    7386 /* Line 1806 of yacc.c  */
    7387 #line 1592 "parser.yy"
     7413  case 424:
     7414
     7415/* Line 1806 of yacc.c  */
     7416#line 1595 "parser.yy"
    73887417    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73897418    break;
    73907419
    7391   case 434:
    7392 
    7393 /* Line 1806 of yacc.c  */
    7394 #line 1617 "parser.yy"
     7420  case 436:
     7421
     7422/* Line 1806 of yacc.c  */
     7423#line 1620 "parser.yy"
    73957424    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73967425    break;
    73977426
    7398   case 438:
    7399 
    7400 /* Line 1806 of yacc.c  */
    7401 #line 1625 "parser.yy"
     7427  case 440:
     7428
     7429/* Line 1806 of yacc.c  */
     7430#line 1628 "parser.yy"
    74027431    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74037432    break;
    74047433
    7405   case 439:
    7406 
    7407 /* Line 1806 of yacc.c  */
    7408 #line 1630 "parser.yy"
     7434  case 441:
     7435
     7436/* Line 1806 of yacc.c  */
     7437#line 1633 "parser.yy"
    74097438    { (yyval.in) = 0; }
    74107439    break;
    74117440
    7412   case 440:
    7413 
    7414 /* Line 1806 of yacc.c  */
    7415 #line 1631 "parser.yy"
     7441  case 442:
     7442
     7443/* Line 1806 of yacc.c  */
     7444#line 1634 "parser.yy"
    74167445    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    74177446    break;
    74187447
    7419   case 441:
    7420 
    7421 /* Line 1806 of yacc.c  */
    7422 #line 1635 "parser.yy"
     7448  case 443:
     7449
     7450/* Line 1806 of yacc.c  */
     7451#line 1638 "parser.yy"
    74237452    { (yyval.in) = new InitializerNode((yyvsp[(1) - (1)].en)); }
    74247453    break;
    74257454
    7426   case 442:
    7427 
    7428 /* Line 1806 of yacc.c  */
    7429 #line 1636 "parser.yy"
     7455  case 444:
     7456
     7457/* Line 1806 of yacc.c  */
     7458#line 1639 "parser.yy"
    74307459    { (yyval.in) = new InitializerNode((yyvsp[(2) - (4)].in), true); }
    74317460    break;
    74327461
    7433   case 444:
    7434 
    7435 /* Line 1806 of yacc.c  */
    7436 #line 1641 "parser.yy"
     7462  case 446:
     7463
     7464/* Line 1806 of yacc.c  */
     7465#line 1644 "parser.yy"
    74377466    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74387467    break;
    74397468
    7440   case 445:
    7441 
    7442 /* Line 1806 of yacc.c  */
    7443 #line 1642 "parser.yy"
     7469  case 447:
     7470
     7471/* Line 1806 of yacc.c  */
     7472#line 1645 "parser.yy"
    74447473    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link((yyvsp[(3) - (3)].in)) ); }
    74457474    break;
    74467475
    7447   case 446:
    7448 
    7449 /* Line 1806 of yacc.c  */
    7450 #line 1644 "parser.yy"
     7476  case 448:
     7477
     7478/* Line 1806 of yacc.c  */
     7479#line 1647 "parser.yy"
    74517480    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators((yyvsp[(3) - (4)].en)) ) ); }
    74527481    break;
    74537482
    7454   case 448:
    7455 
    7456 /* Line 1806 of yacc.c  */
    7457 #line 1660 "parser.yy"
     7483  case 450:
     7484
     7485/* Line 1806 of yacc.c  */
     7486#line 1663 "parser.yy"
    74587487    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    74597488    break;
    74607489
    7461   case 450:
    7462 
    7463 /* Line 1806 of yacc.c  */
    7464 #line 1665 "parser.yy"
     7490  case 452:
     7491
     7492/* Line 1806 of yacc.c  */
     7493#line 1668 "parser.yy"
    74657494    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    74667495    break;
    74677496
    7468   case 451:
    7469 
    7470 /* Line 1806 of yacc.c  */
    7471 #line 1670 "parser.yy"
     7497  case 453:
     7498
     7499/* Line 1806 of yacc.c  */
     7500#line 1673 "parser.yy"
    74727501    { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    74737502    break;
    74747503
    7475   case 452:
    7476 
    7477 /* Line 1806 of yacc.c  */
    7478 #line 1674 "parser.yy"
     7504  case 454:
     7505
     7506/* Line 1806 of yacc.c  */
     7507#line 1677 "parser.yy"
    74797508    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74807509    break;
    74817510
    7482   case 453:
    7483 
    7484 /* Line 1806 of yacc.c  */
    7485 #line 1676 "parser.yy"
     7511  case 455:
     7512
     7513/* Line 1806 of yacc.c  */
     7514#line 1679 "parser.yy"
    74867515    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74877516    break;
    74887517
    7489   case 454:
    7490 
    7491 /* Line 1806 of yacc.c  */
    7492 #line 1678 "parser.yy"
     7518  case 456:
     7519
     7520/* Line 1806 of yacc.c  */
     7521#line 1681 "parser.yy"
    74937522    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en)); }
    74947523    break;
    74957524
    7496   case 455:
    7497 
    7498 /* Line 1806 of yacc.c  */
    7499 #line 1680 "parser.yy"
     7525  case 457:
     7526
     7527/* Line 1806 of yacc.c  */
     7528#line 1683 "parser.yy"
    75007529    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    75017530    break;
    75027531
    7503   case 457:
    7504 
    7505 /* Line 1806 of yacc.c  */
    7506 #line 1705 "parser.yy"
     7532  case 459:
     7533
     7534/* Line 1806 of yacc.c  */
     7535#line 1708 "parser.yy"
    75077536    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75087537    break;
    75097538
    7510   case 458:
    7511 
    7512 /* Line 1806 of yacc.c  */
    7513 #line 1707 "parser.yy"
     7539  case 460:
     7540
     7541/* Line 1806 of yacc.c  */
     7542#line 1710 "parser.yy"
    75147543    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75157544    break;
    75167545
    7517   case 459:
    7518 
    7519 /* Line 1806 of yacc.c  */
    7520 #line 1709 "parser.yy"
     7546  case 461:
     7547
     7548/* Line 1806 of yacc.c  */
     7549#line 1712 "parser.yy"
    75217550    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75227551    break;
    75237552
    7524   case 460:
    7525 
    7526 /* Line 1806 of yacc.c  */
    7527 #line 1714 "parser.yy"
     7553  case 462:
     7554
     7555/* Line 1806 of yacc.c  */
     7556#line 1717 "parser.yy"
    75287557    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75297558    break;
    75307559
    7531   case 461:
    7532 
    7533 /* Line 1806 of yacc.c  */
    7534 #line 1716 "parser.yy"
     7560  case 463:
     7561
     7562/* Line 1806 of yacc.c  */
     7563#line 1719 "parser.yy"
    75357564    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); }
    75367565    break;
    75377566
    7538   case 462:
    7539 
    7540 /* Line 1806 of yacc.c  */
    7541 #line 1718 "parser.yy"
     7567  case 464:
     7568
     7569/* Line 1806 of yacc.c  */
     7570#line 1721 "parser.yy"
    75427571    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75437572    break;
    75447573
    7545   case 464:
    7546 
    7547 /* Line 1806 of yacc.c  */
    7548 #line 1724 "parser.yy"
     7574  case 466:
     7575
     7576/* Line 1806 of yacc.c  */
     7577#line 1727 "parser.yy"
    75497578    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75507579    break;
    75517580
    7552   case 465:
    7553 
    7554 /* Line 1806 of yacc.c  */
    7555 #line 1729 "parser.yy"
     7581  case 467:
     7582
     7583/* Line 1806 of yacc.c  */
     7584#line 1732 "parser.yy"
    75567585    { typedefTable.addToEnclosingScope(*((yyvsp[(2) - (2)].tok)), TypedefTable::TD); }
    75577586    break;
    75587587
    7559   case 466:
    7560 
    7561 /* Line 1806 of yacc.c  */
    7562 #line 1731 "parser.yy"
     7588  case 468:
     7589
     7590/* Line 1806 of yacc.c  */
     7591#line 1734 "parser.yy"
    75637592    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75647593    break;
    75657594
    7566   case 468:
    7567 
    7568 /* Line 1806 of yacc.c  */
    7569 #line 1737 "parser.yy"
     7595  case 470:
     7596
     7597/* Line 1806 of yacc.c  */
     7598#line 1740 "parser.yy"
    75707599    { (yyval.tclass) = DeclarationNode::Type; }
    75717600    break;
    75727601
    7573   case 469:
    7574 
    7575 /* Line 1806 of yacc.c  */
    7576 #line 1739 "parser.yy"
     7602  case 471:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1742 "parser.yy"
    75777606    { (yyval.tclass) = DeclarationNode::Ftype; }
    75787607    break;
    75797608
    7580   case 470:
    7581 
    7582 /* Line 1806 of yacc.c  */
    7583 #line 1741 "parser.yy"
     7609  case 472:
     7610
     7611/* Line 1806 of yacc.c  */
     7612#line 1744 "parser.yy"
    75847613    { (yyval.tclass) = DeclarationNode::Dtype; }
    75857614    break;
    75867615
    7587   case 471:
    7588 
    7589 /* Line 1806 of yacc.c  */
    7590 #line 1746 "parser.yy"
     7616  case 473:
     7617
     7618/* Line 1806 of yacc.c  */
     7619#line 1749 "parser.yy"
    75917620    { (yyval.decl) = 0; }
    75927621    break;
    75937622
    7594   case 472:
    7595 
    7596 /* Line 1806 of yacc.c  */
    7597 #line 1748 "parser.yy"
     7623  case 474:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1751 "parser.yy"
    75987627    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    75997628    break;
    76007629
    7601   case 473:
    7602 
    7603 /* Line 1806 of yacc.c  */
    7604 #line 1753 "parser.yy"
     7630  case 475:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1756 "parser.yy"
    76057634    {
    76067635                        typedefTable.openContext( *((yyvsp[(2) - (5)].tok)) );
     
    76097638    break;
    76107639
    7611   case 474:
    7612 
    7613 /* Line 1806 of yacc.c  */
    7614 #line 1758 "parser.yy"
     7640  case 476:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1761 "parser.yy"
    76157644    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76167645    break;
    76177646
    7618   case 475:
    7619 
    7620 /* Line 1806 of yacc.c  */
    7621 #line 1760 "parser.yy"
     7647  case 477:
     7648
     7649/* Line 1806 of yacc.c  */
     7650#line 1763 "parser.yy"
    76227651    { (yyval.decl) = 0; }
    76237652    break;
    76247653
    7625   case 476:
    7626 
    7627 /* Line 1806 of yacc.c  */
    7628 #line 1765 "parser.yy"
     7654  case 478:
     7655
     7656/* Line 1806 of yacc.c  */
     7657#line 1768 "parser.yy"
    76297658    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    76307659    break;
    76317660
    7632   case 478:
    7633 
    7634 /* Line 1806 of yacc.c  */
    7635 #line 1768 "parser.yy"
     7661  case 480:
     7662
     7663/* Line 1806 of yacc.c  */
     7664#line 1771 "parser.yy"
    76367665    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link(new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    76377666    break;
    76387667
    7639   case 479:
    7640 
    7641 /* Line 1806 of yacc.c  */
    7642 #line 1770 "parser.yy"
     7668  case 481:
     7669
     7670/* Line 1806 of yacc.c  */
     7671#line 1773 "parser.yy"
    76437672    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link((yyvsp[(3) - (3)].en))); }
    76447673    break;
    76457674
    7646   case 480:
    7647 
    7648 /* Line 1806 of yacc.c  */
    7649 #line 1775 "parser.yy"
     7675  case 482:
     7676
     7677/* Line 1806 of yacc.c  */
     7678#line 1778 "parser.yy"
    76507679    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76517680    break;
    76527681
    7653   case 481:
    7654 
    7655 /* Line 1806 of yacc.c  */
    7656 #line 1777 "parser.yy"
     7682  case 483:
     7683
     7684/* Line 1806 of yacc.c  */
     7685#line 1780 "parser.yy"
    76577686    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76587687    break;
    76597688
    7660   case 482:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1779 "parser.yy"
     7689  case 484:
     7690
     7691/* Line 1806 of yacc.c  */
     7692#line 1782 "parser.yy"
    76647693    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76657694    break;
    76667695
    7667   case 483:
    7668 
    7669 /* Line 1806 of yacc.c  */
    7670 #line 1784 "parser.yy"
     7696  case 485:
     7697
     7698/* Line 1806 of yacc.c  */
     7699#line 1787 "parser.yy"
    76717700    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76727701    break;
    76737702
    7674   case 484:
    7675 
    7676 /* Line 1806 of yacc.c  */
    7677 #line 1786 "parser.yy"
     7703  case 486:
     7704
     7705/* Line 1806 of yacc.c  */
     7706#line 1789 "parser.yy"
    76787707    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76797708    break;
    76807709
    7681   case 485:
    7682 
    7683 /* Line 1806 of yacc.c  */
    7684 #line 1791 "parser.yy"
     7710  case 487:
     7711
     7712/* Line 1806 of yacc.c  */
     7713#line 1794 "parser.yy"
    76857714    {
    76867715                        typedefTable.addToEnclosingScope(*((yyvsp[(1) - (1)].tok)), TypedefTable::TD);
     
    76897718    break;
    76907719
    7691   case 486:
    7692 
    7693 /* Line 1806 of yacc.c  */
    7694 #line 1796 "parser.yy"
     7720  case 488:
     7721
     7722/* Line 1806 of yacc.c  */
     7723#line 1799 "parser.yy"
    76957724    {
    76967725                        typedefTable.addToEnclosingScope(*((yyvsp[(1) - (6)].tok)), TypedefTable::TG);
     
    76997728    break;
    77007729
    7701   case 487:
    7702 
    7703 /* Line 1806 of yacc.c  */
    7704 #line 1804 "parser.yy"
     7730  case 489:
     7731
     7732/* Line 1806 of yacc.c  */
     7733#line 1807 "parser.yy"
    77057734    {
    77067735                        typedefTable.addToEnclosingScope(*((yyvsp[(2) - (9)].tok)), TypedefTable::ID );
     
    77097738    break;
    77107739
    7711   case 488:
    7712 
    7713 /* Line 1806 of yacc.c  */
    7714 #line 1809 "parser.yy"
     7740  case 490:
     7741
     7742/* Line 1806 of yacc.c  */
     7743#line 1812 "parser.yy"
    77157744    {
    77167745                        typedefTable.enterContext( *((yyvsp[(2) - (8)].tok)) );
     
    77197748    break;
    77207749
    7721   case 489:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1814 "parser.yy"
     7750  case 491:
     7751
     7752/* Line 1806 of yacc.c  */
     7753#line 1817 "parser.yy"
    77257754    {
    77267755                        typedefTable.leaveContext();
     
    77307759    break;
    77317760
    7732   case 491:
    7733 
    7734 /* Line 1806 of yacc.c  */
    7735 #line 1824 "parser.yy"
     7761  case 493:
     7762
     7763/* Line 1806 of yacc.c  */
     7764#line 1827 "parser.yy"
    77367765    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77377766    break;
    77387767
    7739   case 494:
    7740 
    7741 /* Line 1806 of yacc.c  */
    7742 #line 1834 "parser.yy"
     7768  case 496:
     7769
     7770/* Line 1806 of yacc.c  */
     7771#line 1837 "parser.yy"
    77437772    {
    77447773                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77477776    break;
    77487777
    7749   case 495:
    7750 
    7751 /* Line 1806 of yacc.c  */
    7752 #line 1839 "parser.yy"
     7778  case 497:
     7779
     7780/* Line 1806 of yacc.c  */
     7781#line 1842 "parser.yy"
    77537782    {
    77547783                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77577786    break;
    77587787
    7759   case 496:
    7760 
    7761 /* Line 1806 of yacc.c  */
    7762 #line 1844 "parser.yy"
     7788  case 498:
     7789
     7790/* Line 1806 of yacc.c  */
     7791#line 1847 "parser.yy"
    77637792    {
    77647793                        typedefTable.addToEnclosingScope2( *((yyvsp[(5) - (5)].tok)), TypedefTable::ID );
     
    77677796    break;
    77687797
    7769   case 497:
    7770 
    7771 /* Line 1806 of yacc.c  */
    7772 #line 1852 "parser.yy"
     7798  case 499:
     7799
     7800/* Line 1806 of yacc.c  */
     7801#line 1855 "parser.yy"
    77737802    {
    77747803                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77777806    break;
    77787807
    7779   case 498:
    7780 
    7781 /* Line 1806 of yacc.c  */
    7782 #line 1857 "parser.yy"
     7808  case 500:
     7809
     7810/* Line 1806 of yacc.c  */
     7811#line 1860 "parser.yy"
    77837812    {
    77847813                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77877816    break;
    77887817
    7789   case 499:
    7790 
    7791 /* Line 1806 of yacc.c  */
    7792 #line 1867 "parser.yy"
     7818  case 501:
     7819
     7820/* Line 1806 of yacc.c  */
     7821#line 1870 "parser.yy"
    77937822    {}
    77947823    break;
    77957824
    7796   case 500:
    7797 
    7798 /* Line 1806 of yacc.c  */
    7799 #line 1869 "parser.yy"
     7825  case 502:
     7826
     7827/* Line 1806 of yacc.c  */
     7828#line 1872 "parser.yy"
    78007829    {
    78017830                        if ( theTree ) {
     
    78077836    break;
    78087837
    7809   case 502:
    7810 
    7811 /* Line 1806 of yacc.c  */
    7812 #line 1881 "parser.yy"
     7838  case 504:
     7839
     7840/* Line 1806 of yacc.c  */
     7841#line 1884 "parser.yy"
    78137842    { (yyval.decl) = ((yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    78147843    break;
    78157844
    7816   case 503:
    7817 
    7818 /* Line 1806 of yacc.c  */
    7819 #line 1886 "parser.yy"
     7845  case 505:
     7846
     7847/* Line 1806 of yacc.c  */
     7848#line 1889 "parser.yy"
    78207849    { (yyval.decl) = 0; }
    78217850    break;
    78227851
    7823   case 507:
    7824 
    7825 /* Line 1806 of yacc.c  */
    7826 #line 1894 "parser.yy"
     7852  case 509:
     7853
     7854/* Line 1806 of yacc.c  */
     7855#line 1897 "parser.yy"
    78277856    {}
    78287857    break;
    78297858
    7830   case 508:
    7831 
    7832 /* Line 1806 of yacc.c  */
    7833 #line 1896 "parser.yy"
     7859  case 510:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 1899 "parser.yy"
    78347863    {
    78357864                        linkageStack.push( linkage );
     
    78387867    break;
    78397868
    7840   case 509:
    7841 
    7842 /* Line 1806 of yacc.c  */
    7843 #line 1901 "parser.yy"
     7869  case 511:
     7870
     7871/* Line 1806 of yacc.c  */
     7872#line 1904 "parser.yy"
    78447873    {
    78457874                        linkage = linkageStack.top();
     
    78497878    break;
    78507879
    7851   case 510:
    7852 
    7853 /* Line 1806 of yacc.c  */
    7854 #line 1907 "parser.yy"
     7880  case 512:
     7881
     7882/* Line 1806 of yacc.c  */
     7883#line 1910 "parser.yy"
    78557884    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    78567885    break;
    78577886
    7858   case 512:
    7859 
    7860 /* Line 1806 of yacc.c  */
    7861 #line 1919 "parser.yy"
     7887  case 514:
     7888
     7889/* Line 1806 of yacc.c  */
     7890#line 1922 "parser.yy"
    78627891    {
    78637892                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78677896    break;
    78687897
    7869   case 513:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 1925 "parser.yy"
     7898  case 515:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 1928 "parser.yy"
    78737902    {
    78747903                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78787907    break;
    78797908
    7880   case 514:
    7881 
    7882 /* Line 1806 of yacc.c  */
    7883 #line 1934 "parser.yy"
     7909  case 516:
     7910
     7911/* Line 1806 of yacc.c  */
     7912#line 1937 "parser.yy"
    78847913    {
    78857914                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78897918    break;
    78907919
    7891   case 515:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 1940 "parser.yy"
     7920  case 517:
     7921
     7922/* Line 1806 of yacc.c  */
     7923#line 1943 "parser.yy"
    78957924    {
    78967925                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79007929    break;
    79017930
    7902   case 516:
    7903 
    7904 /* Line 1806 of yacc.c  */
    7905 #line 1946 "parser.yy"
     7931  case 518:
     7932
     7933/* Line 1806 of yacc.c  */
     7934#line 1949 "parser.yy"
    79067935    {
    79077936                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79117940    break;
    79127941
    7913   case 517:
    7914 
    7915 /* Line 1806 of yacc.c  */
    7916 #line 1952 "parser.yy"
     7942  case 519:
     7943
     7944/* Line 1806 of yacc.c  */
     7945#line 1955 "parser.yy"
    79177946    {
    79187947                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79227951    break;
    79237952
    7924   case 518:
    7925 
    7926 /* Line 1806 of yacc.c  */
    7927 #line 1958 "parser.yy"
     7953  case 520:
     7954
     7955/* Line 1806 of yacc.c  */
     7956#line 1961 "parser.yy"
    79287957    {
    79297958                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79337962    break;
    79347963
    7935   case 519:
    7936 
    7937 /* Line 1806 of yacc.c  */
    7938 #line 1966 "parser.yy"
     7964  case 521:
     7965
     7966/* Line 1806 of yacc.c  */
     7967#line 1969 "parser.yy"
    79397968    {
    79407969                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79447973    break;
    79457974
    7946   case 520:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 1972 "parser.yy"
     7975  case 522:
     7976
     7977/* Line 1806 of yacc.c  */
     7978#line 1975 "parser.yy"
    79507979    {
    79517980                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79557984    break;
    79567985
    7957   case 521:
    7958 
    7959 /* Line 1806 of yacc.c  */
    7960 #line 1980 "parser.yy"
     7986  case 523:
     7987
     7988/* Line 1806 of yacc.c  */
     7989#line 1983 "parser.yy"
    79617990    {
    79627991                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79667995    break;
    79677996
    7968   case 522:
    7969 
    7970 /* Line 1806 of yacc.c  */
    7971 #line 1986 "parser.yy"
     7997  case 524:
     7998
     7999/* Line 1806 of yacc.c  */
     8000#line 1989 "parser.yy"
    79728001    {
    79738002                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79778006    break;
    79788007
    7979   case 526:
    7980 
    7981 /* Line 1806 of yacc.c  */
    7982 #line 2001 "parser.yy"
     8008  case 528:
     8009
     8010/* Line 1806 of yacc.c  */
     8011#line 2004 "parser.yy"
    79838012    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
    79848013    break;
    79858014
    7986   case 539:
    7987 
    7988 /* Line 1806 of yacc.c  */
    7989 #line 2035 "parser.yy"
    7990     {}
    7991     break;
    7992 
    7993   case 540:
    7994 
    7995 /* Line 1806 of yacc.c  */
    7996 #line 2036 "parser.yy"
    7997     {}
    7998     break;
    7999 
    80008015  case 541:
    8001 
    8002 /* Line 1806 of yacc.c  */
    8003 #line 2037 "parser.yy"
    8004     {}
    8005     break;
    8006 
    8007   case 542:
    80088016
    80098017/* Line 1806 of yacc.c  */
     
    80128020    break;
    80138021
    8014   case 547:
    8015 
    8016 /* Line 1806 of yacc.c  */
    8017 #line 2081 "parser.yy"
     8022  case 542:
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2039 "parser.yy"
     8026    {}
     8027    break;
     8028
     8029  case 543:
     8030
     8031/* Line 1806 of yacc.c  */
     8032#line 2040 "parser.yy"
     8033    {}
     8034    break;
     8035
     8036  case 544:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2041 "parser.yy"
     8040    {}
     8041    break;
     8042
     8043  case 549:
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2084 "parser.yy"
    80188047    {
    80198048                        typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
     
    80228051    break;
    80238052
    8024   case 548:
    8025 
    8026 /* Line 1806 of yacc.c  */
    8027 #line 2086 "parser.yy"
     8053  case 550:
     8054
     8055/* Line 1806 of yacc.c  */
     8056#line 2089 "parser.yy"
    80288057    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80298058    break;
    80308059
    8031   case 549:
    8032 
    8033 /* Line 1806 of yacc.c  */
    8034 #line 2091 "parser.yy"
     8060  case 551:
     8061
     8062/* Line 1806 of yacc.c  */
     8063#line 2094 "parser.yy"
    80358064    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80368065    break;
    80378066
    8038   case 550:
    8039 
    8040 /* Line 1806 of yacc.c  */
    8041 #line 2093 "parser.yy"
     8067  case 552:
     8068
     8069/* Line 1806 of yacc.c  */
     8070#line 2096 "parser.yy"
    80428071    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80438072    break;
    80448073
    8045   case 551:
    8046 
    8047 /* Line 1806 of yacc.c  */
    8048 #line 2095 "parser.yy"
     8074  case 553:
     8075
     8076/* Line 1806 of yacc.c  */
     8077#line 2098 "parser.yy"
    80498078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80508079    break;
    80518080
    8052   case 552:
    8053 
    8054 /* Line 1806 of yacc.c  */
    8055 #line 2100 "parser.yy"
     8081  case 554:
     8082
     8083/* Line 1806 of yacc.c  */
     8084#line 2103 "parser.yy"
    80568085    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80578086    break;
    80588087
    8059   case 553:
    8060 
    8061 /* Line 1806 of yacc.c  */
    8062 #line 2102 "parser.yy"
     8088  case 555:
     8089
     8090/* Line 1806 of yacc.c  */
     8091#line 2105 "parser.yy"
    80638092    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80648093    break;
    80658094
    8066   case 554:
    8067 
    8068 /* Line 1806 of yacc.c  */
    8069 #line 2104 "parser.yy"
     8095  case 556:
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2107 "parser.yy"
    80708099    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80718100    break;
    80728101
    8073   case 555:
    8074 
    8075 /* Line 1806 of yacc.c  */
    8076 #line 2106 "parser.yy"
     8102  case 557:
     8103
     8104/* Line 1806 of yacc.c  */
     8105#line 2109 "parser.yy"
    80778106    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80788107    break;
    80798108
    8080   case 556:
    8081 
    8082 /* Line 1806 of yacc.c  */
    8083 #line 2111 "parser.yy"
     8109  case 558:
     8110
     8111/* Line 1806 of yacc.c  */
     8112#line 2114 "parser.yy"
    80848113    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80858114    break;
    80868115
    8087   case 557:
    8088 
    8089 /* Line 1806 of yacc.c  */
    8090 #line 2113 "parser.yy"
     8116  case 559:
     8117
     8118/* Line 1806 of yacc.c  */
     8119#line 2116 "parser.yy"
    80918120    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80928121    break;
    80938122
    8094   case 561:
    8095 
    8096 /* Line 1806 of yacc.c  */
    8097 #line 2129 "parser.yy"
     8123  case 563:
     8124
     8125/* Line 1806 of yacc.c  */
     8126#line 2132 "parser.yy"
    80988127    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80998128    break;
    81008129
    8101   case 562:
    8102 
    8103 /* Line 1806 of yacc.c  */
    8104 #line 2131 "parser.yy"
     8130  case 564:
     8131
     8132/* Line 1806 of yacc.c  */
     8133#line 2134 "parser.yy"
    81058134    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81068135    break;
    81078136
    8108   case 563:
    8109 
    8110 /* Line 1806 of yacc.c  */
    8111 #line 2133 "parser.yy"
     8137  case 565:
     8138
     8139/* Line 1806 of yacc.c  */
     8140#line 2136 "parser.yy"
    81128141    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81138142    break;
    81148143
    8115   case 564:
    8116 
    8117 /* Line 1806 of yacc.c  */
    8118 #line 2138 "parser.yy"
     8144  case 566:
     8145
     8146/* Line 1806 of yacc.c  */
     8147#line 2141 "parser.yy"
    81198148    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81208149    break;
    81218150
    8122   case 565:
    8123 
    8124 /* Line 1806 of yacc.c  */
    8125 #line 2140 "parser.yy"
     8151  case 567:
     8152
     8153/* Line 1806 of yacc.c  */
     8154#line 2143 "parser.yy"
    81268155    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81278156    break;
    81288157
    8129   case 566:
    8130 
    8131 /* Line 1806 of yacc.c  */
    8132 #line 2142 "parser.yy"
     8158  case 568:
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2145 "parser.yy"
    81338162    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81348163    break;
    81358164
    8136   case 567:
    8137 
    8138 /* Line 1806 of yacc.c  */
    8139 #line 2147 "parser.yy"
     8165  case 569:
     8166
     8167/* Line 1806 of yacc.c  */
     8168#line 2150 "parser.yy"
    81408169    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81418170    break;
    81428171
    8143   case 568:
    8144 
    8145 /* Line 1806 of yacc.c  */
    8146 #line 2149 "parser.yy"
     8172  case 570:
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2152 "parser.yy"
    81478176    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81488177    break;
    81498178
    8150   case 569:
    8151 
    8152 /* Line 1806 of yacc.c  */
    8153 #line 2151 "parser.yy"
     8179  case 571:
     8180
     8181/* Line 1806 of yacc.c  */
     8182#line 2154 "parser.yy"
    81548183    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81558184    break;
    81568185
    8157   case 573:
    8158 
    8159 /* Line 1806 of yacc.c  */
    8160 #line 2166 "parser.yy"
     8186  case 575:
     8187
     8188/* Line 1806 of yacc.c  */
     8189#line 2169 "parser.yy"
    81618190    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    81628191    break;
    81638192
    8164   case 574:
    8165 
    8166 /* Line 1806 of yacc.c  */
    8167 #line 2168 "parser.yy"
     8193  case 576:
     8194
     8195/* Line 1806 of yacc.c  */
     8196#line 2171 "parser.yy"
    81688197    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    81698198    break;
    81708199
    8171   case 575:
    8172 
    8173 /* Line 1806 of yacc.c  */
    8174 #line 2170 "parser.yy"
     8200  case 577:
     8201
     8202/* Line 1806 of yacc.c  */
     8203#line 2173 "parser.yy"
    81758204    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81768205    break;
    81778206
    8178   case 576:
    8179 
    8180 /* Line 1806 of yacc.c  */
    8181 #line 2175 "parser.yy"
     8207  case 578:
     8208
     8209/* Line 1806 of yacc.c  */
     8210#line 2178 "parser.yy"
    81828211    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81838212    break;
    81848213
    8185   case 577:
    8186 
    8187 /* Line 1806 of yacc.c  */
    8188 #line 2177 "parser.yy"
     8214  case 579:
     8215
     8216/* Line 1806 of yacc.c  */
     8217#line 2180 "parser.yy"
    81898218    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81908219    break;
    81918220
    8192   case 578:
    8193 
    8194 /* Line 1806 of yacc.c  */
    8195 #line 2179 "parser.yy"
     8221  case 580:
     8222
     8223/* Line 1806 of yacc.c  */
     8224#line 2182 "parser.yy"
    81968225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81978226    break;
    81988227
    8199   case 579:
    8200 
    8201 /* Line 1806 of yacc.c  */
    8202 #line 2184 "parser.yy"
     8228  case 581:
     8229
     8230/* Line 1806 of yacc.c  */
     8231#line 2187 "parser.yy"
    82038232    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82048233    break;
    82058234
    8206   case 580:
    8207 
    8208 /* Line 1806 of yacc.c  */
    8209 #line 2186 "parser.yy"
     8235  case 582:
     8236
     8237/* Line 1806 of yacc.c  */
     8238#line 2189 "parser.yy"
    82108239    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82118240    break;
    82128241
    8213   case 581:
    8214 
    8215 /* Line 1806 of yacc.c  */
    8216 #line 2188 "parser.yy"
     8242  case 583:
     8243
     8244/* Line 1806 of yacc.c  */
     8245#line 2191 "parser.yy"
    82178246    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82188247    break;
    82198248
    8220   case 586:
    8221 
    8222 /* Line 1806 of yacc.c  */
    8223 #line 2210 "parser.yy"
     8249  case 588:
     8250
     8251/* Line 1806 of yacc.c  */
     8252#line 2213 "parser.yy"
    82248253    {
    82258254                        typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
     
    82288257    break;
    82298258
    8230   case 587:
    8231 
    8232 /* Line 1806 of yacc.c  */
    8233 #line 2215 "parser.yy"
     8259  case 589:
     8260
     8261/* Line 1806 of yacc.c  */
     8262#line 2218 "parser.yy"
    82348263    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82358264    break;
    82368265
    8237   case 588:
    8238 
    8239 /* Line 1806 of yacc.c  */
    8240 #line 2220 "parser.yy"
     8266  case 590:
     8267
     8268/* Line 1806 of yacc.c  */
     8269#line 2223 "parser.yy"
    82418270    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82428271    break;
    82438272
    8244   case 589:
    8245 
    8246 /* Line 1806 of yacc.c  */
    8247 #line 2222 "parser.yy"
     8273  case 591:
     8274
     8275/* Line 1806 of yacc.c  */
     8276#line 2225 "parser.yy"
    82488277    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82498278    break;
    82508279
    8251   case 590:
    8252 
    8253 /* Line 1806 of yacc.c  */
    8254 #line 2224 "parser.yy"
     8280  case 592:
     8281
     8282/* Line 1806 of yacc.c  */
     8283#line 2227 "parser.yy"
    82558284    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82568285    break;
    82578286
    8258   case 591:
    8259 
    8260 /* Line 1806 of yacc.c  */
    8261 #line 2229 "parser.yy"
     8287  case 593:
     8288
     8289/* Line 1806 of yacc.c  */
     8290#line 2232 "parser.yy"
    82628291    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82638292    break;
    82648293
    8265   case 592:
    8266 
    8267 /* Line 1806 of yacc.c  */
    8268 #line 2231 "parser.yy"
     8294  case 594:
     8295
     8296/* Line 1806 of yacc.c  */
     8297#line 2234 "parser.yy"
    82698298    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82708299    break;
    82718300
    8272   case 593:
    8273 
    8274 /* Line 1806 of yacc.c  */
    8275 #line 2233 "parser.yy"
     8301  case 595:
     8302
     8303/* Line 1806 of yacc.c  */
     8304#line 2236 "parser.yy"
    82768305    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82778306    break;
    82788307
    8279   case 594:
    8280 
    8281 /* Line 1806 of yacc.c  */
    8282 #line 2235 "parser.yy"
     8308  case 596:
     8309
     8310/* Line 1806 of yacc.c  */
     8311#line 2238 "parser.yy"
    82838312    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82848313    break;
    82858314
    8286   case 595:
    8287 
    8288 /* Line 1806 of yacc.c  */
    8289 #line 2240 "parser.yy"
     8315  case 597:
     8316
     8317/* Line 1806 of yacc.c  */
     8318#line 2243 "parser.yy"
    82908319    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82918320    break;
    82928321
    8293   case 596:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2242 "parser.yy"
     8322  case 598:
     8323
     8324/* Line 1806 of yacc.c  */
     8325#line 2245 "parser.yy"
    82978326    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82988327    break;
    82998328
    8300   case 597:
    8301 
    8302 /* Line 1806 of yacc.c  */
    8303 #line 2244 "parser.yy"
     8329  case 599:
     8330
     8331/* Line 1806 of yacc.c  */
     8332#line 2247 "parser.yy"
    83048333    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83058334    break;
    83068335
    8307   case 602:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2261 "parser.yy"
     8336  case 604:
     8337
     8338/* Line 1806 of yacc.c  */
     8339#line 2264 "parser.yy"
    83118340    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83128341    break;
    83138342
    8314   case 603:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2263 "parser.yy"
     8343  case 605:
     8344
     8345/* Line 1806 of yacc.c  */
     8346#line 2266 "parser.yy"
    83188347    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83198348    break;
    83208349
    8321   case 604:
    8322 
    8323 /* Line 1806 of yacc.c  */
    8324 #line 2265 "parser.yy"
     8350  case 606:
     8351
     8352/* Line 1806 of yacc.c  */
     8353#line 2268 "parser.yy"
    83258354    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83268355    break;
    83278356
    8328   case 605:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2270 "parser.yy"
     8357  case 607:
     8358
     8359/* Line 1806 of yacc.c  */
     8360#line 2273 "parser.yy"
    83328361    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83338362    break;
    83348363
    8335   case 606:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2272 "parser.yy"
     8364  case 608:
     8365
     8366/* Line 1806 of yacc.c  */
     8367#line 2275 "parser.yy"
    83398368    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83408369    break;
    83418370
    8342   case 607:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2274 "parser.yy"
     8371  case 609:
     8372
     8373/* Line 1806 of yacc.c  */
     8374#line 2277 "parser.yy"
    83468375    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83478376    break;
    83488377
    8349   case 608:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2276 "parser.yy"
     8378  case 610:
     8379
     8380/* Line 1806 of yacc.c  */
     8381#line 2279 "parser.yy"
    83538382    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83548383    break;
    83558384
    8356   case 609:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2281 "parser.yy"
     8385  case 611:
     8386
     8387/* Line 1806 of yacc.c  */
     8388#line 2284 "parser.yy"
    83608389    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83618390    break;
    83628391
    8363   case 610:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2283 "parser.yy"
     8392  case 612:
     8393
     8394/* Line 1806 of yacc.c  */
     8395#line 2286 "parser.yy"
    83678396    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83688397    break;
    83698398
    8370   case 611:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2285 "parser.yy"
     8399  case 613:
     8400
     8401/* Line 1806 of yacc.c  */
     8402#line 2288 "parser.yy"
    83748403    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83758404    break;
    83768405
    8377   case 616:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2323 "parser.yy"
     8406  case 618:
     8407
     8408/* Line 1806 of yacc.c  */
     8409#line 2326 "parser.yy"
    83818410    {
    83828411                        typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
     
    83858414    break;
    83868415
    8387   case 617:
    8388 
    8389 /* Line 1806 of yacc.c  */
    8390 #line 2331 "parser.yy"
     8416  case 619:
     8417
     8418/* Line 1806 of yacc.c  */
     8419#line 2334 "parser.yy"
    83918420    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83928421    break;
    83938422
    8394   case 618:
    8395 
    8396 /* Line 1806 of yacc.c  */
    8397 #line 2333 "parser.yy"
     8423  case 620:
     8424
     8425/* Line 1806 of yacc.c  */
     8426#line 2336 "parser.yy"
    83988427    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83998428    break;
    84008429
    8401   case 619:
    8402 
    8403 /* Line 1806 of yacc.c  */
    8404 #line 2335 "parser.yy"
     8430  case 621:
     8431
     8432/* Line 1806 of yacc.c  */
     8433#line 2338 "parser.yy"
    84058434    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84068435    break;
    84078436
    8408   case 620:
    8409 
    8410 /* Line 1806 of yacc.c  */
    8411 #line 2340 "parser.yy"
     8437  case 622:
     8438
     8439/* Line 1806 of yacc.c  */
     8440#line 2343 "parser.yy"
    84128441    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84138442    break;
    84148443
    8415   case 621:
    8416 
    8417 /* Line 1806 of yacc.c  */
    8418 #line 2342 "parser.yy"
     8444  case 623:
     8445
     8446/* Line 1806 of yacc.c  */
     8447#line 2345 "parser.yy"
    84198448    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84208449    break;
    84218450
    8422   case 622:
    8423 
    8424 /* Line 1806 of yacc.c  */
    8425 #line 2347 "parser.yy"
     8451  case 624:
     8452
     8453/* Line 1806 of yacc.c  */
     8454#line 2350 "parser.yy"
    84268455    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84278456    break;
    84288457
    8429   case 623:
    8430 
    8431 /* Line 1806 of yacc.c  */
    8432 #line 2349 "parser.yy"
     8458  case 625:
     8459
     8460/* Line 1806 of yacc.c  */
     8461#line 2352 "parser.yy"
    84338462    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84348463    break;
    84358464
    8436   case 627:
    8437 
    8438 /* Line 1806 of yacc.c  */
    8439 #line 2369 "parser.yy"
     8465  case 629:
     8466
     8467/* Line 1806 of yacc.c  */
     8468#line 2372 "parser.yy"
    84408469    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84418470    break;
    84428471
    8443   case 628:
    8444 
    8445 /* Line 1806 of yacc.c  */
    8446 #line 2371 "parser.yy"
     8472  case 630:
     8473
     8474/* Line 1806 of yacc.c  */
     8475#line 2374 "parser.yy"
    84478476    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    84488477    break;
    84498478
    8450   case 629:
    8451 
    8452 /* Line 1806 of yacc.c  */
    8453 #line 2373 "parser.yy"
     8479  case 631:
     8480
     8481/* Line 1806 of yacc.c  */
     8482#line 2376 "parser.yy"
    84548483    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84558484    break;
    84568485
    8457   case 630:
    8458 
    8459 /* Line 1806 of yacc.c  */
    8460 #line 2375 "parser.yy"
     8486  case 632:
     8487
     8488/* Line 1806 of yacc.c  */
     8489#line 2378 "parser.yy"
    84618490    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84628491    break;
    84638492
    8464   case 631:
    8465 
    8466 /* Line 1806 of yacc.c  */
    8467 #line 2377 "parser.yy"
     8493  case 633:
     8494
     8495/* Line 1806 of yacc.c  */
     8496#line 2380 "parser.yy"
    84688497    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84698498    break;
    84708499
    8471   case 633:
    8472 
    8473 /* Line 1806 of yacc.c  */
    8474 #line 2383 "parser.yy"
     8500  case 635:
     8501
     8502/* Line 1806 of yacc.c  */
     8503#line 2386 "parser.yy"
    84758504    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84768505    break;
    84778506
    8478   case 634:
    8479 
    8480 /* Line 1806 of yacc.c  */
    8481 #line 2385 "parser.yy"
     8507  case 636:
     8508
     8509/* Line 1806 of yacc.c  */
     8510#line 2388 "parser.yy"
    84828511    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84838512    break;
    84848513
    8485   case 635:
    8486 
    8487 /* Line 1806 of yacc.c  */
    8488 #line 2387 "parser.yy"
     8514  case 637:
     8515
     8516/* Line 1806 of yacc.c  */
     8517#line 2390 "parser.yy"
    84898518    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84908519    break;
    84918520
    8492   case 636:
    8493 
    8494 /* Line 1806 of yacc.c  */
    8495 #line 2392 "parser.yy"
     8521  case 638:
     8522
     8523/* Line 1806 of yacc.c  */
     8524#line 2395 "parser.yy"
    84968525    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    84978526    break;
    84988527
    8499   case 637:
    8500 
    8501 /* Line 1806 of yacc.c  */
    8502 #line 2394 "parser.yy"
     8528  case 639:
     8529
     8530/* Line 1806 of yacc.c  */
     8531#line 2397 "parser.yy"
    85038532    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85048533    break;
    85058534
    8506   case 638:
    8507 
    8508 /* Line 1806 of yacc.c  */
    8509 #line 2396 "parser.yy"
     8535  case 640:
     8536
     8537/* Line 1806 of yacc.c  */
     8538#line 2399 "parser.yy"
    85108539    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85118540    break;
    85128541
    8513   case 639:
    8514 
    8515 /* Line 1806 of yacc.c  */
    8516 #line 2402 "parser.yy"
     8542  case 641:
     8543
     8544/* Line 1806 of yacc.c  */
     8545#line 2405 "parser.yy"
    85178546    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85188547    break;
    85198548
    8520   case 640:
    8521 
    8522 /* Line 1806 of yacc.c  */
    8523 #line 2404 "parser.yy"
     8549  case 642:
     8550
     8551/* Line 1806 of yacc.c  */
     8552#line 2407 "parser.yy"
    85248553    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
    85258554    break;
    85268555
    8527   case 642:
    8528 
    8529 /* Line 1806 of yacc.c  */
    8530 #line 2410 "parser.yy"
     8556  case 644:
     8557
     8558/* Line 1806 of yacc.c  */
     8559#line 2413 "parser.yy"
    85318560    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    85328561    break;
    85338562
    8534   case 643:
    8535 
    8536 /* Line 1806 of yacc.c  */
    8537 #line 2412 "parser.yy"
     8563  case 645:
     8564
     8565/* Line 1806 of yacc.c  */
     8566#line 2415 "parser.yy"
    85388567    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    85398568    break;
    85408569
    8541   case 644:
    8542 
    8543 /* Line 1806 of yacc.c  */
    8544 #line 2414 "parser.yy"
     8570  case 646:
     8571
     8572/* Line 1806 of yacc.c  */
     8573#line 2417 "parser.yy"
    85458574    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    85468575    break;
    85478576
    8548   case 645:
    8549 
    8550 /* Line 1806 of yacc.c  */
    8551 #line 2416 "parser.yy"
     8577  case 647:
     8578
     8579/* Line 1806 of yacc.c  */
     8580#line 2419 "parser.yy"
    85528581    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    85538582    break;
    85548583
    8555   case 649:
    8556 
    8557 /* Line 1806 of yacc.c  */
    8558 #line 2436 "parser.yy"
     8584  case 651:
     8585
     8586/* Line 1806 of yacc.c  */
     8587#line 2439 "parser.yy"
    85598588    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85608589    break;
    85618590
    8562   case 650:
    8563 
    8564 /* Line 1806 of yacc.c  */
    8565 #line 2438 "parser.yy"
     8591  case 652:
     8592
     8593/* Line 1806 of yacc.c  */
     8594#line 2441 "parser.yy"
    85668595    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85678596    break;
    85688597
    8569   case 651:
    8570 
    8571 /* Line 1806 of yacc.c  */
    8572 #line 2440 "parser.yy"
     8598  case 653:
     8599
     8600/* Line 1806 of yacc.c  */
     8601#line 2443 "parser.yy"
    85738602    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85748603    break;
    85758604
    8576   case 652:
    8577 
    8578 /* Line 1806 of yacc.c  */
    8579 #line 2442 "parser.yy"
     8605  case 654:
     8606
     8607/* Line 1806 of yacc.c  */
     8608#line 2445 "parser.yy"
    85808609    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85818610    break;
    85828611
    8583   case 653:
    8584 
    8585 /* Line 1806 of yacc.c  */
    8586 #line 2444 "parser.yy"
     8612  case 655:
     8613
     8614/* Line 1806 of yacc.c  */
     8615#line 2447 "parser.yy"
    85878616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85888617    break;
    85898618
    8590   case 655:
    8591 
    8592 /* Line 1806 of yacc.c  */
    8593 #line 2450 "parser.yy"
     8619  case 657:
     8620
     8621/* Line 1806 of yacc.c  */
     8622#line 2453 "parser.yy"
    85948623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85958624    break;
    85968625
    8597   case 656:
    8598 
    8599 /* Line 1806 of yacc.c  */
    8600 #line 2452 "parser.yy"
     8626  case 658:
     8627
     8628/* Line 1806 of yacc.c  */
     8629#line 2455 "parser.yy"
    86018630    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86028631    break;
    86038632
    8604   case 657:
    8605 
    8606 /* Line 1806 of yacc.c  */
    8607 #line 2454 "parser.yy"
     8633  case 659:
     8634
     8635/* Line 1806 of yacc.c  */
     8636#line 2457 "parser.yy"
    86088637    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86098638    break;
    86108639
    8611   case 658:
    8612 
    8613 /* Line 1806 of yacc.c  */
    8614 #line 2459 "parser.yy"
     8640  case 660:
     8641
     8642/* Line 1806 of yacc.c  */
     8643#line 2462 "parser.yy"
    86158644    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    86168645    break;
    86178646
    8618   case 659:
    8619 
    8620 /* Line 1806 of yacc.c  */
    8621 #line 2461 "parser.yy"
     8647  case 661:
     8648
     8649/* Line 1806 of yacc.c  */
     8650#line 2464 "parser.yy"
    86228651    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86238652    break;
    86248653
    8625   case 660:
    8626 
    8627 /* Line 1806 of yacc.c  */
    8628 #line 2463 "parser.yy"
     8654  case 662:
     8655
     8656/* Line 1806 of yacc.c  */
     8657#line 2466 "parser.yy"
    86298658    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86308659    break;
    86318660
    8632   case 662:
    8633 
    8634 /* Line 1806 of yacc.c  */
    8635 #line 2470 "parser.yy"
     8661  case 664:
     8662
     8663/* Line 1806 of yacc.c  */
     8664#line 2473 "parser.yy"
    86368665    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86378666    break;
    86388667
    8639   case 664:
    8640 
    8641 /* Line 1806 of yacc.c  */
    8642 #line 2482 "parser.yy"
     8668  case 666:
     8669
     8670/* Line 1806 of yacc.c  */
     8671#line 2485 "parser.yy"
    86438672    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86448673    break;
    86458674
    8646   case 665:
    8647 
    8648 /* Line 1806 of yacc.c  */
    8649 #line 2485 "parser.yy"
     8675  case 667:
     8676
     8677/* Line 1806 of yacc.c  */
     8678#line 2488 "parser.yy"
    86508679    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86518680    break;
    86528681
    8653   case 666:
    8654 
    8655 /* Line 1806 of yacc.c  */
    8656 #line 2487 "parser.yy"
     8682  case 668:
     8683
     8684/* Line 1806 of yacc.c  */
     8685#line 2490 "parser.yy"
    86578686    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    86588687    break;
    86598688
    8660   case 667:
    8661 
    8662 /* Line 1806 of yacc.c  */
    8663 #line 2490 "parser.yy"
     8689  case 669:
     8690
     8691/* Line 1806 of yacc.c  */
     8692#line 2493 "parser.yy"
    86648693    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    86658694    break;
    86668695
    8667   case 668:
    8668 
    8669 /* Line 1806 of yacc.c  */
    8670 #line 2492 "parser.yy"
     8696  case 670:
     8697
     8698/* Line 1806 of yacc.c  */
     8699#line 2495 "parser.yy"
    86718700    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    86728701    break;
    86738702
    8674   case 669:
    8675 
    8676 /* Line 1806 of yacc.c  */
    8677 #line 2494 "parser.yy"
     8703  case 671:
     8704
     8705/* Line 1806 of yacc.c  */
     8706#line 2497 "parser.yy"
    86788707    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    86798708    break;
    86808709
    8681   case 673:
    8682 
    8683 /* Line 1806 of yacc.c  */
    8684 #line 2513 "parser.yy"
     8710  case 675:
     8711
     8712/* Line 1806 of yacc.c  */
     8713#line 2516 "parser.yy"
    86858714    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86868715    break;
    86878716
    8688   case 674:
    8689 
    8690 /* Line 1806 of yacc.c  */
    8691 #line 2515 "parser.yy"
     8717  case 676:
     8718
     8719/* Line 1806 of yacc.c  */
     8720#line 2518 "parser.yy"
    86928721    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86938722    break;
    86948723
    8695   case 675:
    8696 
    8697 /* Line 1806 of yacc.c  */
    8698 #line 2517 "parser.yy"
     8724  case 677:
     8725
     8726/* Line 1806 of yacc.c  */
     8727#line 2520 "parser.yy"
    86998728    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87008729    break;
    87018730
    8702   case 676:
    8703 
    8704 /* Line 1806 of yacc.c  */
    8705 #line 2519 "parser.yy"
     8731  case 678:
     8732
     8733/* Line 1806 of yacc.c  */
     8734#line 2522 "parser.yy"
    87068735    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87078736    break;
    87088737
    8709   case 677:
    8710 
    8711 /* Line 1806 of yacc.c  */
    8712 #line 2521 "parser.yy"
     8738  case 679:
     8739
     8740/* Line 1806 of yacc.c  */
     8741#line 2524 "parser.yy"
    87138742    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87148743    break;
    87158744
    8716   case 679:
    8717 
    8718 /* Line 1806 of yacc.c  */
    8719 #line 2527 "parser.yy"
     8745  case 681:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2530 "parser.yy"
    87208749    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87218750    break;
    87228751
    8723   case 680:
    8724 
    8725 /* Line 1806 of yacc.c  */
    8726 #line 2529 "parser.yy"
     8752  case 682:
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2532 "parser.yy"
    87278756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87288757    break;
    87298758
    8730   case 681:
    8731 
    8732 /* Line 1806 of yacc.c  */
    8733 #line 2531 "parser.yy"
     8759  case 683:
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2534 "parser.yy"
    87348763    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87358764    break;
    87368765
    8737   case 682:
    8738 
    8739 /* Line 1806 of yacc.c  */
    8740 #line 2536 "parser.yy"
     8766  case 684:
     8767
     8768/* Line 1806 of yacc.c  */
     8769#line 2539 "parser.yy"
    87418770    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87428771    break;
    87438772
    8744   case 683:
    8745 
    8746 /* Line 1806 of yacc.c  */
    8747 #line 2538 "parser.yy"
     8773  case 685:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2541 "parser.yy"
    87488777    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87498778    break;
    87508779
    8751   case 686:
    8752 
    8753 /* Line 1806 of yacc.c  */
    8754 #line 2548 "parser.yy"
     8780  case 688:
     8781
     8782/* Line 1806 of yacc.c  */
     8783#line 2551 "parser.yy"
    87558784    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    87568785    break;
    87578786
    8758   case 689:
    8759 
    8760 /* Line 1806 of yacc.c  */
    8761 #line 2558 "parser.yy"
     8787  case 691:
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2561 "parser.yy"
    87628791    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87638792    break;
    87648793
    8765   case 690:
    8766 
    8767 /* Line 1806 of yacc.c  */
    8768 #line 2560 "parser.yy"
     8794  case 692:
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2563 "parser.yy"
    87698798    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87708799    break;
    87718800
    8772   case 691:
    8773 
    8774 /* Line 1806 of yacc.c  */
    8775 #line 2562 "parser.yy"
     8801  case 693:
     8802
     8803/* Line 1806 of yacc.c  */
     8804#line 2565 "parser.yy"
    87768805    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87778806    break;
    87788807
    8779   case 692:
    8780 
    8781 /* Line 1806 of yacc.c  */
    8782 #line 2564 "parser.yy"
     8808  case 694:
     8809
     8810/* Line 1806 of yacc.c  */
     8811#line 2567 "parser.yy"
    87838812    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87848813    break;
    87858814
    8786   case 693:
    8787 
    8788 /* Line 1806 of yacc.c  */
    8789 #line 2566 "parser.yy"
     8815  case 695:
     8816
     8817/* Line 1806 of yacc.c  */
     8818#line 2569 "parser.yy"
    87908819    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87918820    break;
    87928821
    8793   case 694:
    8794 
    8795 /* Line 1806 of yacc.c  */
    8796 #line 2568 "parser.yy"
     8822  case 696:
     8823
     8824/* Line 1806 of yacc.c  */
     8825#line 2571 "parser.yy"
    87978826    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87988827    break;
    87998828
    8800   case 695:
    8801 
    8802 /* Line 1806 of yacc.c  */
    8803 #line 2575 "parser.yy"
     8829  case 697:
     8830
     8831/* Line 1806 of yacc.c  */
     8832#line 2578 "parser.yy"
    88048833    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88058834    break;
    88068835
    8807   case 696:
    8808 
    8809 /* Line 1806 of yacc.c  */
    8810 #line 2577 "parser.yy"
     8836  case 698:
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2580 "parser.yy"
    88118840    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88128841    break;
    88138842
    8814   case 697:
    8815 
    8816 /* Line 1806 of yacc.c  */
    8817 #line 2579 "parser.yy"
     8843  case 699:
     8844
     8845/* Line 1806 of yacc.c  */
     8846#line 2582 "parser.yy"
    88188847    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88198848    break;
    88208849
    8821   case 698:
    8822 
    8823 /* Line 1806 of yacc.c  */
    8824 #line 2581 "parser.yy"
     8850  case 700:
     8851
     8852/* Line 1806 of yacc.c  */
     8853#line 2584 "parser.yy"
    88258854    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88268855    break;
    88278856
    8828   case 699:
    8829 
    8830 /* Line 1806 of yacc.c  */
    8831 #line 2583 "parser.yy"
     8857  case 701:
     8858
     8859/* Line 1806 of yacc.c  */
     8860#line 2586 "parser.yy"
    88328861    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88338862    break;
    88348863
    8835   case 700:
    8836 
    8837 /* Line 1806 of yacc.c  */
    8838 #line 2585 "parser.yy"
     8864  case 702:
     8865
     8866/* Line 1806 of yacc.c  */
     8867#line 2588 "parser.yy"
    88398868    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88408869    break;
    88418870
    8842   case 701:
    8843 
    8844 /* Line 1806 of yacc.c  */
    8845 #line 2587 "parser.yy"
     8871  case 703:
     8872
     8873/* Line 1806 of yacc.c  */
     8874#line 2590 "parser.yy"
    88468875    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88478876    break;
    88488877
    8849   case 702:
    8850 
    8851 /* Line 1806 of yacc.c  */
    8852 #line 2589 "parser.yy"
     8878  case 704:
     8879
     8880/* Line 1806 of yacc.c  */
     8881#line 2592 "parser.yy"
    88538882    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88548883    break;
    88558884
    8856   case 703:
    8857 
    8858 /* Line 1806 of yacc.c  */
    8859 #line 2591 "parser.yy"
     8885  case 705:
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2594 "parser.yy"
    88608889    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88618890    break;
    88628891
    8863   case 704:
    8864 
    8865 /* Line 1806 of yacc.c  */
    8866 #line 2593 "parser.yy"
     8892  case 706:
     8893
     8894/* Line 1806 of yacc.c  */
     8895#line 2596 "parser.yy"
    88678896    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88688897    break;
    88698898
    8870   case 705:
    8871 
    8872 /* Line 1806 of yacc.c  */
    8873 #line 2598 "parser.yy"
     8899  case 707:
     8900
     8901/* Line 1806 of yacc.c  */
     8902#line 2601 "parser.yy"
    88748903    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88758904    break;
    88768905
    8877   case 706:
    8878 
    8879 /* Line 1806 of yacc.c  */
    8880 #line 2600 "parser.yy"
     8906  case 708:
     8907
     8908/* Line 1806 of yacc.c  */
     8909#line 2603 "parser.yy"
    88818910    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88828911    break;
    88838912
    8884   case 707:
    8885 
    8886 /* Line 1806 of yacc.c  */
    8887 #line 2605 "parser.yy"
     8913  case 709:
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2608 "parser.yy"
    88888917    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    88898918    break;
    88908919
    8891   case 708:
    8892 
    8893 /* Line 1806 of yacc.c  */
    8894 #line 2607 "parser.yy"
     8920  case 710:
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2610 "parser.yy"
    88958924    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    88968925    break;
    88978926
    8898   case 710:
    8899 
    8900 /* Line 1806 of yacc.c  */
    8901 #line 2634 "parser.yy"
     8927  case 712:
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2637 "parser.yy"
    89028931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89038932    break;
    89048933
    8905   case 714:
    8906 
    8907 /* Line 1806 of yacc.c  */
    8908 #line 2645 "parser.yy"
     8934  case 716:
     8935
     8936/* Line 1806 of yacc.c  */
     8937#line 2648 "parser.yy"
    89098938    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89108939    break;
    89118940
    8912   case 715:
    8913 
    8914 /* Line 1806 of yacc.c  */
    8915 #line 2647 "parser.yy"
     8941  case 717:
     8942
     8943/* Line 1806 of yacc.c  */
     8944#line 2650 "parser.yy"
    89168945    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89178946    break;
    89188947
    8919   case 716:
    8920 
    8921 /* Line 1806 of yacc.c  */
    8922 #line 2649 "parser.yy"
     8948  case 718:
     8949
     8950/* Line 1806 of yacc.c  */
     8951#line 2652 "parser.yy"
    89238952    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89248953    break;
    89258954
    8926   case 717:
    8927 
    8928 /* Line 1806 of yacc.c  */
    8929 #line 2651 "parser.yy"
     8955  case 719:
     8956
     8957/* Line 1806 of yacc.c  */
     8958#line 2654 "parser.yy"
    89308959    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89318960    break;
    89328961
    8933   case 718:
    8934 
    8935 /* Line 1806 of yacc.c  */
    8936 #line 2653 "parser.yy"
     8962  case 720:
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2656 "parser.yy"
    89378966    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89388967    break;
    89398968
    8940   case 719:
    8941 
    8942 /* Line 1806 of yacc.c  */
    8943 #line 2655 "parser.yy"
     8969  case 721:
     8970
     8971/* Line 1806 of yacc.c  */
     8972#line 2658 "parser.yy"
    89448973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89458974    break;
    89468975
    8947   case 720:
    8948 
    8949 /* Line 1806 of yacc.c  */
    8950 #line 2662 "parser.yy"
     8976  case 722:
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2665 "parser.yy"
    89518980    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89528981    break;
    89538982
    8954   case 721:
    8955 
    8956 /* Line 1806 of yacc.c  */
    8957 #line 2664 "parser.yy"
     8983  case 723:
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2667 "parser.yy"
    89588987    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89598988    break;
    89608989
    8961   case 722:
    8962 
    8963 /* Line 1806 of yacc.c  */
    8964 #line 2666 "parser.yy"
     8990  case 724:
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2669 "parser.yy"
    89658994    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89668995    break;
    89678996
    8968   case 723:
    8969 
    8970 /* Line 1806 of yacc.c  */
    8971 #line 2668 "parser.yy"
     8997  case 725:
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2671 "parser.yy"
    89729001    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89739002    break;
    89749003
    8975   case 724:
    8976 
    8977 /* Line 1806 of yacc.c  */
    8978 #line 2670 "parser.yy"
     9004  case 726:
     9005
     9006/* Line 1806 of yacc.c  */
     9007#line 2673 "parser.yy"
    89799008    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89809009    break;
    89819010
    8982   case 725:
    8983 
    8984 /* Line 1806 of yacc.c  */
    8985 #line 2672 "parser.yy"
     9011  case 727:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2675 "parser.yy"
    89869015    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89879016    break;
    89889017
    8989   case 726:
    8990 
    8991 /* Line 1806 of yacc.c  */
    8992 #line 2677 "parser.yy"
     9018  case 728:
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2680 "parser.yy"
    89939022    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    89949023    break;
    89959024
    8996   case 727:
    8997 
    8998 /* Line 1806 of yacc.c  */
    8999 #line 2682 "parser.yy"
     9025  case 729:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2685 "parser.yy"
    90009029    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (7)].decl), 0 ); }
    90019030    break;
    90029031
    9003   case 728:
    9004 
    9005 /* Line 1806 of yacc.c  */
    9006 #line 2684 "parser.yy"
     9032  case 730:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2687 "parser.yy"
    90079036    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90089037    break;
    90099038
    9010   case 729:
    9011 
    9012 /* Line 1806 of yacc.c  */
    9013 #line 2686 "parser.yy"
     9039  case 731:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2689 "parser.yy"
    90149043    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90159044    break;
    90169045
    9017   case 732:
    9018 
    9019 /* Line 1806 of yacc.c  */
    9020 #line 2712 "parser.yy"
     9046  case 734:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2715 "parser.yy"
    90219050    { (yyval.en) = 0; }
    90229051    break;
    90239052
    9024   case 733:
    9025 
    9026 /* Line 1806 of yacc.c  */
    9027 #line 2714 "parser.yy"
     9053  case 735:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2717 "parser.yy"
    90289057    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90299058    break;
     
    90329061
    90339062/* Line 1806 of yacc.c  */
    9034 #line 9035 "Parser/parser.cc"
     9063#line 9064 "Parser/parser.cc"
    90359064      default: break;
    90369065    }
     
    92639292
    92649293/* Line 2067 of yacc.c  */
    9265 #line 2717 "parser.yy"
     9294#line 2720 "parser.yy"
    92669295
    92679296// ----end of grammar----
  • src/Parser/parser.h

    rea9b9d3 rb5b0907  
    252252        ExpressionNode *en;
    253253        DeclarationNode *decl;
    254         DeclarationNode::TyCon aggKey;
     254        DeclarationNode::Aggregate aggKey;
    255255        DeclarationNode::TypeClass tclass;
    256256        StatementNode *sn;
  • src/Parser/parser.yy

    rea9b9d3 rb5b0907  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 10 20:31:54 2015
    13 // Update Count     : 1040
     12// Last Modified On : Sat Jun 13 07:21:45 2015
     13// Update Count     : 1048
    1414//
    1515
     
    111111        ExpressionNode *en;
    112112        DeclarationNode *decl;
    113         DeclarationNode::TyCon aggKey;
     113        DeclarationNode::Aggregate aggKey;
    114114        DeclarationNode::TypeClass tclass;
    115115        StatementNode *sn;
     
    887887
    888888asm_operand:                                                                                    // GCC
    889         STRINGliteral '(' constant_expression ')'               {}
     889        STRINGliteral '(' constant_expression ')'       {}
    890890        ;
    891891
     
    12471247                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    12481248        | INLINE                                                                                        // C99
    1249                 // INLINE is essentially a storage class specifier for functions, and hence, belongs here.
    12501249                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    12511250        | FORTRAN                                                                                       // C99
    12521251                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     1252        | NORETURN                                                                                      // C11
     1253                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     1254        | THREADLOCAL                                                                           // C11
     1255                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    12531256        ;
    12541257
  • src/SymTab/Validate.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 17:19:35 2015
    13 // Update Count     : 22
     12// Last Modified On : Sat Jun 13 08:06:13 2015
     13// Update Count     : 26
    1414//
    1515
     
    4545#include "SynTree/Type.h"
    4646#include "SynTree/Statement.h"
     47#include "SynTree/TypeSubstitution.h"
    4748#include "Indexer.h"
    48 #include "SynTree/TypeSubstitution.h"
    4949#include "FixFunction.h"
    5050#include "ImplementationType.h"
     
    506506                if ( ! array->get_dimension() ) return;
    507507 
    508                 ObjectDecl *index = new ObjectDecl( indexName.newName(), Declaration::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 );
     508                ObjectDecl *index = new ObjectDecl( indexName.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 );
    509509                *out++ = new DeclStmt( noLabels, index );
    510510 
     
    544544                FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    545545 
    546                 ObjectDecl *returnVal = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
     546                ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
    547547                assignType->get_returnVals().push_back( returnVal );
    548548 
    549                 ObjectDecl *dstParam = new ObjectDecl( "_dst", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
     549                ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
    550550                assignType->get_parameters().push_back( dstParam );
    551551 
    552                 ObjectDecl *srcParam = new ObjectDecl( "_src", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
     552                ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
    553553                assignType->get_parameters().push_back( srcParam );
    554554
    555555                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    556556                // because each unit generates copies of the default routines for each aggregate.
    557                 FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? Declaration::NoStorageClass : Declaration::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
     557                FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
    558558                assignDecl->fixUniqueId();
    559559 
     
    587587                FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    588588 
    589                 ObjectDecl *returnVal = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
     589                ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
    590590                assignType->get_returnVals().push_back( returnVal );
    591591 
    592                 ObjectDecl *dstParam = new ObjectDecl( "_dst", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
     592                ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
    593593                assignType->get_parameters().push_back( dstParam );
    594594 
    595                 ObjectDecl *srcParam = new ObjectDecl( "_src", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
     595                ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
    596596                assignType->get_parameters().push_back( srcParam );
    597597 
    598598                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    599599                // because each unit generates copies of the default routines for each aggregate.
    600                 FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? Declaration::NoStorageClass : Declaration::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
     600                FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
    601601                assignDecl->fixUniqueId();
    602602 
     
    633633                TypeInstType *typeInst = new TypeInstType( Type::Qualifiers(), typeDecl->get_name(), false );
    634634                typeInst->set_baseType( typeDecl );
    635                 ObjectDecl *src = new ObjectDecl( "_src", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, typeInst->clone(), 0 );
    636                 ObjectDecl *dst = new ObjectDecl( "_dst", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), typeInst->clone() ), 0 );
     635                ObjectDecl *src = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst->clone(), 0 );
     636                ObjectDecl *dst = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), typeInst->clone() ), 0 );
    637637                if ( typeDecl->get_base() ) {
    638638                        stmts = new CompoundStmt( std::list< Label >() );
     
    643643                } // if
    644644                FunctionType *type = new FunctionType( Type::Qualifiers(), false );
    645                 type->get_returnVals().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
     645                type->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
    646646                type->get_parameters().push_back( dst );
    647647                type->get_parameters().push_back( src );
    648                 FunctionDecl *func = new FunctionDecl( "?=?", Declaration::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false );
     648                FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false );
    649649                declsToAdd.push_back( func );
    650650        }
  • src/SynTree/AggregateDecl.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Sun May 17 23:56:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:52:08 2015
    13 // Update Count     : 5
     12// Last Modified On : Sat Jun 13 08:12:49 2015
     13// Update Count     : 6
    1414//
    1515
     
    1919
    2020
    21 AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, Declaration::NoStorageClass, LinkageSpec::Cforall ) {
     21AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ) {
    2222}
    2323
  • src/SynTree/Declaration.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:18:35 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jun 13 08:07:20 2015
     13// Update Count     : 9
    1414//
    1515
     
    2222#include "utility.h"
    2323
    24 const char* Declaration::storageClassName[] = { "", "auto", "static", "extern", "register" }; 
    25 
    2624static UniqueId lastUniqueId = 0;
    2725typedef std::map< UniqueId, Declaration* > IdMapType;
    2826static IdMapType idMap;
    2927
    30 Declaration::Declaration( const std::string &name, StorageClass sc, LinkageSpec::Type linkage )
    31         : name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
     28Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
     29                : name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
    3230}
    3331
    3432Declaration::Declaration( const Declaration &other )
    35         : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
     33                : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
    3634}
    3735
     
    4442}
    4543
    46 /* static class method */
    4744Declaration *Declaration::declFromId( UniqueId id ) {
    4845        IdMapType::const_iterator i = idMap.find( id );
    49         if ( i != idMap.end() ) {
    50                 return i->second;
    51         } else {
    52                 return 0;
    53         } // if
     46        return i != idMap.end() ? i->second : 0;
    5447}
    5548
    56 /* static class method */
    5749void Declaration::dumpIds( std::ostream &os ) {
    5850        for ( IdMapType::const_iterator i = idMap.begin(); i != idMap.end(); ++i ) {
  • src/SynTree/Declaration.h

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 22:03:43 2015
    13 // Update Count     : 7
     12// Last Modified On : Fri Jun 12 23:55:26 2015
     13// Update Count     : 24
    1414//
    1515
     
    2121#include "Mutator.h"
    2222#include "Parser/LinkageSpec.h"
     23#include "Parser/ParseNode.h"
    2324
    2425class Declaration {
    2526  public:
    26         enum StorageClass { 
    27                 NoStorageClass,
    28                 Extern,
    29                 Static,
    30                 Auto,
    31                 Register,
    32                 Inline,
    33                 Fortran,
    34         };     
    35 
    36         Declaration( const std::string &name, StorageClass sc, LinkageSpec::Type linkage );
     27        Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
    3728        Declaration( const Declaration &other );
    3829        virtual ~Declaration();
     
    4031        const std::string &get_name() const { return name; }
    4132        void set_name( std::string newValue ) { name = newValue; }
    42         StorageClass get_storageClass() const { return storageClass; }
    43         void set_storageClass( StorageClass newValue ) { storageClass = newValue; }
     33        DeclarationNode::StorageClass get_storageClass() const { return storageClass; }
     34        void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; }
    4435        LinkageSpec::Type get_linkage() const { return linkage; }
    4536        void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; }
     
    5344        virtual void printShort( std::ostream &os, int indent = 0 ) const = 0;
    5445
    55         static const char* storageClassName[]; 
    56 
    5746        static void dumpIds( std::ostream &os );
    5847        static Declaration *declFromId( UniqueId id );
    5948  private:
    6049        std::string name;
    61         StorageClass storageClass;
     50        DeclarationNode::StorageClass storageClass;
    6251        LinkageSpec::Type linkage;
    6352        UniqueId uniqueId;
     
    6655class DeclarationWithType : public Declaration {
    6756  public:
    68         DeclarationWithType( const std::string &name, StorageClass sc, LinkageSpec::Type linkage );
     57        DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
    6958        DeclarationWithType( const DeclarationWithType &other );
    7059        virtual ~DeclarationWithType();
     
    8675        typedef DeclarationWithType Parent;
    8776  public:
    88         ObjectDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
     77        ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
    8978        ObjectDecl( const ObjectDecl &other );
    9079        virtual ~ObjectDecl();
     
    112101        typedef DeclarationWithType Parent;
    113102  public:
    114         FunctionDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline );
     103        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline );
    115104        FunctionDecl( const FunctionDecl &other );
    116105        virtual ~FunctionDecl();
     
    144133        typedef Declaration Parent;
    145134  public:
    146         NamedTypeDecl( const std::string &name, StorageClass sc, Type *type );
     135        NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type );
    147136        NamedTypeDecl( const TypeDecl &other );
    148137        virtual ~NamedTypeDecl();
     
    169158        enum Kind { Any, Dtype, Ftype };
    170159
    171         TypeDecl( const std::string &name, StorageClass sc, Type *type, Kind kind );
     160        TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind );
    172161        TypeDecl( const TypeDecl &other );
    173162
     
    185174        typedef NamedTypeDecl Parent;
    186175  public:
    187         TypedefDecl( const std::string &name, StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
     176        TypedefDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
    188177        TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
    189178
  • src/SynTree/DeclarationWithType.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:20:23 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jun 13 08:08:07 2015
     13// Update Count     : 3
    1414//
    1515
     
    1818#include "utility.h"
    1919
    20 DeclarationWithType::DeclarationWithType( const std::string &name, StorageClass sc, LinkageSpec::Type linkage )
     20DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
    2121                : Declaration( name, sc, linkage ) {
    2222}
  • src/SynTree/FunctionDecl.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:36:44 2015
    13 // Update Count     : 12
     12// Last Modified On : Sat Jun 13 08:12:20 2015
     13// Update Count     : 14
    1414//
    1515
     
    2121#include "utility.h"
    2222
    23 FunctionDecl::FunctionDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline )
     23FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline )
    2424                : Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ) {
    2525        // this is a brazen hack to force the function "main" to have C linkage
     
    6060                os << "inline ";
    6161        } // if
    62         if ( get_storageClass() != NoStorageClass ) {
    63                 os << storageClassName[ get_storageClass() ] << ' ';
     62        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
     63                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
    6464        } // if
    6565        if ( get_type() ) {
     
    9696                os << "inline ";
    9797        } // if
    98         if ( get_storageClass() != NoStorageClass ) {
    99                 os << storageClassName[ get_storageClass() ] << ' ';
     98        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
     99                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
    100100        } // if
    101101        if ( get_type() ) {
  • src/SynTree/NamedTypeDecl.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:36:09 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jun 13 08:13:55 2015
     13// Update Count     : 3
    1414//
    1515
     
    1818#include "utility.h"
    1919
    20 NamedTypeDecl::NamedTypeDecl( const std::string &name, StorageClass sc, Type *base )
     20NamedTypeDecl::NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *base )
    2121        : Parent( name, sc, LinkageSpec::Cforall ), base( base ) {}
    2222
     
    3939                os << get_name() << ": ";
    4040        } // if
    41         if ( get_storageClass() != NoStorageClass ) {
    42                 os << storageClassName[ get_storageClass() ] << ' ';
     41        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
     42                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
    4343        } // if
    4444        os << typeString();
     
    6363                os << get_name() << ": ";
    6464        } // if
    65         if ( get_storageClass() != NoStorageClass ) {
    66                 os << storageClassName[ get_storageClass() ] << ' ';
     65        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
     66                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
    6767        } // if
    6868        os << typeString();
  • src/SynTree/ObjectDecl.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 21:21:12 2015
    13 // Update Count     : 10
     12// Last Modified On : Sat Jun 13 08:10:16 2015
     13// Update Count     : 15
    1414//
    1515
     
    2020#include "utility.h"
    2121
    22 ObjectDecl::ObjectDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
     22ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
    2323        : Parent( name, sc, linkage ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
    2424}
     
    4343        } // if
    4444
    45         if ( get_storageClass() != NoStorageClass ) {
    46                 os << storageClassName[ get_storageClass() ] << ' ';
     45        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
     46                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
    4747        } // if
    4848
     
    7474        } // if
    7575
    76         if ( get_storageClass() != NoStorageClass ) {
    77                 os << storageClassName[ get_storageClass() ] << ' ';
     76        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
     77                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
    7878        } // if
    7979
  • src/SynTree/TypeDecl.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:02:11 2015
    13 // Update Count     : 1
     12// Last Modified On : Sat Jun 13 08:14:35 2015
     13// Update Count     : 2
    1414//
    1515
     
    1818#include "utility.h"
    1919
    20 TypeDecl::TypeDecl( const std::string &name, StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
     20TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
    2121}
    2222
  • src/Tests/Attributes.c

    rea9b9d3 rb5b0907  
     1// I Compile-time resolution
     2// =========================
     3//
     4// 1. an isolated name, where the argument is implicitly determined by the result context
     5//
     6//    @max
     7//
     8// 2. a direct application to a manifest type
     9//
     10//    @max( int )
     11//
     12// 3. constraining a type variable; the application is implicitly performed at the call site as in (2)
     13//
     14//    forall( type T | { T @max( T ); } ) T x( T t );
     15//
     16//
     17// II Run-time resolution
     18// ======================
     19//
     20// 1. an indirect reference, where the argument is implicitly determined by the result context
     21//
     22//    attr_var = &@max;
     23//    x = (*attr_var);
     24//
     25// 2. an indirect application to a manifest type
     26//
     27//    (*attr_var)( int )
     28//
     29// 3. a direct application to a type variable
     30//
     31//    @max( T )
     32//
     33// Under what circumstances can this be done at compile/link time?
     34//
     35//
     36// III Declaration forms
     37// =====================
     38//
     39// 1. monomorphic with implicit argument
     40//
     41//    int @max;
     42//
     43// 2. monomorphic with explicit argument
     44//
     45//    int @max( int );
     46//
     47// 3. polymorphic
     48//
     49//    forall( type T | constraint( T ) ) int @attr( T );
     50
    151int @max = 3;
    252
    353int main() {
    454    int x;
    5     type @type(type t);         // compiler intrinsic
     55    type @type(type t);                                                                 // compiler intrinsic
    656    type @widest(type t);
    7     @type(x) *y;                // gcc: typeof(x) *y;
    8     const @widest(double) *w;   // gcc: const typeof(x) *w;
    9     * @type(3 + 4) z;           // cfa declaration syntax
     57    @type(x) *y;                                                                                // gcc: typeof(x) *y;
     58    const @widest(double) *w;                                                   // gcc: const typeof(x) *w;
     59    * @type(3 + 4) z;                                                                   // cfa declaration syntax
    1060    y = @max;           
    1161    z = @max(x) + @size(int);
  • src/Tests/Expect-a/AsmName.txt

    rea9b9d3 rb5b0907  
    1 x: auto signed int
     1x: extern signed int
    22fred: function
    33    with parameters
  • src/Tests/Expect-a/Attributes.txt

    rea9b9d3 rb5b0907  
    1 Error at line 8 reading token "*"
     1Error at line 58 reading token "*"
  • src/Tests/Expect-a/Context.txt

    rea9b9d3 rb5b0907  
    5252
    5353
    54         Declaration of x: auto type
    55         Declaration of y: auto type
     54        Declaration of x: extern type
     55        Declaration of y: extern type
    5656          with assertions
    5757            instance of context has_r
  • src/Tests/Expect-a/Functions.txt

    rea9b9d3 rb5b0907  
    173173      CompoundStmt
    174174
    175 fII3: auto function
    176     with parameters
    177       i: signed int
    178     returning
    179       signed int
    180     with body
    181       CompoundStmt
    182 
    183 fII4: auto function
     175fII3: extern function
     176    with parameters
     177      i: signed int
     178    returning
     179      signed int
     180    with body
     181      CompoundStmt
     182
     183fII4: extern function
    184184    with parameters
    185185      i: signed int
     
    257257      CompoundStmt
    258258
    259 fO4: auto function
     259fO4: extern function
    260260      accepting unspecified arguments
    261261    returning
     
    268268      CompoundStmt
    269269
    270 fO5: auto function
     270fO5: extern function
    271271      accepting unspecified arguments
    272272    returning
  • src/Tests/Expect-a/TypeGenerator.txt

    rea9b9d3 rb5b0907  
    6565      signed int
    6666
    67 struct S1
    68     with parameters
    69       T: type
    70 
    71 struct S1
    72     with parameters
    73       T: type
    74 
    75     with members
    76       i: instance of type T (not function type)
    77 
    78 v1: instance of struct S1
    79   with parameters
    80     signed int
    81 
    82 p: pointer to instance of struct S1
    83   with parameters
    84     signed int
    85 
    8667struct S2
    8768    with parameters
     
    9172      i: instance of type T (not function type)
    9273
    93 v2: instance of struct S2
     74v1: instance of struct S3
     75  with parameters
     76    signed int
     77
     78p: pointer to instance of struct S3
     79  with parameters
     80    signed int
     81
     82struct S24
     83    with parameters
     84      T: type
     85
     86    with members
     87      i: instance of type T (not function type)
     88
     89v2: instance of struct S24
    9490  with parameters
    9591    signed int
  • src/Tests/Expect-e/AsmName.txt

    rea9b9d3 rb5b0907  
    1 x: auto signed int
     1x: extern signed int
    22fred: function
    33    with parameters
  • src/Tests/Expect-e/Attributes.txt

    rea9b9d3 rb5b0907  
    1 Error at line 8 reading token "*"
     1Error at line 58 reading token "*"
  • src/Tests/Expect-e/Context.txt

    rea9b9d3 rb5b0907  
    5454
    5555
    56         Declaration of x: auto type
     56        Declaration of x: extern type
    5757        Declaration of ?=?: automatically generated function
    5858            with parameters
     
    6262              instance of type x (not function type)
    6363
    64         Declaration of y: auto type
     64        Declaration of y: extern type
    6565          with assertions
    6666            instance of context has_r
  • src/Tests/Expect-e/Function.txt

    rea9b9d3 rb5b0907  
    245245
    246246
    247 cfa-cpp: GenPoly/Box.cc:398: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
     247cfa-cpp: GenPoly/Box.cc:401: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
    248248Aborted (core dumped)
  • src/Tests/Expect-e/TypeGenerator.txt

    rea9b9d3 rb5b0907  
    5353            Name: *?
    5454        ...to:
    55             Variable Expression: _dst: pointer to instance of struct S1
     55            Variable Expression: _dst: pointer to instance of struct S2
    5656    Member Expression, with field:
    5757      i: instance of type T (not function type)
    5858    from aggregate:
    59       Variable Expression: _src: instance of struct S1
     59      Variable Expression: _src: instance of struct S2
    6060
    6161Error: No reasonable alternatives for expression Applying untyped:
     
    6969            Name: *?
    7070        ...to:
    71             Variable Expression: _dst: pointer to instance of struct S2
     71            Variable Expression: _dst: pointer to instance of struct S24
    7272    Member Expression, with field:
    7373      i: instance of type T (not function type)
    7474    from aggregate:
    75       Variable Expression: _src: instance of struct S2
     75      Variable Expression: _src: instance of struct S24
    7676
    7777Error: No reasonable alternatives for expression Applying untyped:
  • src/Tests/Expect-f/Attributes.txt

    rea9b9d3 rb5b0907  
    1 Error at line 8 reading token "*"
     1Error at line 58 reading token "*"
  • src/Tests/Expect-f/TypeGenerator.txt

    rea9b9d3 rb5b0907  
    4747            Name: *?
    4848        ...to:
    49             Variable Expression: _dst: pointer to instance of struct S1
     49            Variable Expression: _dst: pointer to instance of struct S2
    5050    Member Expression, with field:
    5151      i: instance of type T (not function type)
    5252    from aggregate:
    53       Variable Expression: _src: instance of struct S1
     53      Variable Expression: _src: instance of struct S2
    5454
    5555Error: No reasonable alternatives for expression Applying untyped:
     
    6363            Name: *?
    6464        ...to:
    65             Variable Expression: _dst: pointer to instance of struct S2
     65            Variable Expression: _dst: pointer to instance of struct S24
    6666    Member Expression, with field:
    6767      i: instance of type T (not function type)
    6868    from aggregate:
    69       Variable Expression: _src: instance of struct S2
     69      Variable Expression: _src: instance of struct S24
    7070
    7171Error: No reasonable alternatives for expression Applying untyped:
  • src/Tests/Expect-r/Attributes.txt

    rea9b9d3 rb5b0907  
    1 Error at line 8 reading token "*"
     1Error at line 58 reading token "*"
  • src/Tests/Expect-r/Function.txt

    rea9b9d3 rb5b0907  
    49544954there are 1 alternatives before elimination
    49554955there are 1 alternatives after elimination
    4956 cfa-cpp: GenPoly/Box.cc:398: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
     4956cfa-cpp: GenPoly/Box.cc:401: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
    49574957Aborted (core dumped)
  • src/Tests/Expect-r/TypeGenerator.txt

    rea9b9d3 rb5b0907  
    610610decl is ?=?: automatically generated inline static function
    611611  with parameters
    612     _dst: pointer to instance of struct S1
    613     _src: instance of struct S1
     612    _dst: pointer to instance of struct S2
     613    _src: instance of struct S2
    614614  returning
    615     instance of struct S1
     615    instance of struct S2
    616616  with body
    617617    CompoundStmt
     
    627627                      Name: *?
    628628                  ...to:
    629                       Variable Expression: _dst: pointer to instance of struct S1
     629                      Variable Expression: _dst: pointer to instance of struct S2
    630630              Member Expression, with field:
    631631                i: instance of type T (not function type)
    632632              from aggregate:
    633                 Variable Expression: _src: instance of struct S1
    634 
    635               Return Statement, returning: Variable Expression: _src: instance of struct S1
     633                Variable Expression: _src: instance of struct S2
     634
     635              Return Statement, returning: Variable Expression: _src: instance of struct S2
    636636
    637637
     
    639639newExpr is Variable Expression: ?=?: inline static function
    640640    with parameters
    641       _dst: pointer to instance of struct S1
    642       _src: instance of struct S1
    643     returning
    644       instance of struct S1
     641      _dst: pointer to instance of struct S2
     642      _src: instance of struct S2
     643    returning
     644      instance of struct S2
    645645
    646646
     
    698698Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    699699    with parameters
    700       _dst: pointer to instance of struct S1
    701       _src: instance of struct S1
    702     returning
    703       instance of struct S1
     700      _dst: pointer to instance of struct S2
     701      _src: instance of struct S2
     702    returning
     703      instance of struct S2
    704704
    705705(types:
    706706    pointer to function
    707707        with parameters
    708           _dst: pointer to instance of struct S1
    709           _src: instance of struct S1
     708          _dst: pointer to instance of struct S2
     709          _src: instance of struct S2
    710710        returning
    711           instance of struct S1
     711          instance of struct S2
    712712
    713713)
     
    741741      Name: *?
    742742  ...to:
    743       Variable Expression: _dst: pointer to instance of struct S1
     743      Variable Expression: _dst: pointer to instance of struct S2
    744744(types:
    745745    lvalue instance of type T (not function type)
     
    757757        Name: *?
    758758    ...to:
    759         Variable Expression: _dst: pointer to instance of struct S1
     759        Variable Expression: _dst: pointer to instance of struct S2
    760760(types:
    761761    pointer to instance of type T (not function type)
     
    773773        Name: *?
    774774    ...to:
    775         Variable Expression: _dst: pointer to instance of struct S1
     775        Variable Expression: _dst: pointer to instance of struct S2
    776776(types:
    777777    pointer to instance of type T (not function type)
     
    783783  i: instance of type T (not function type)
    784784from aggregate:
    785   Variable Expression: _src: instance of struct S1
     785  Variable Expression: _src: instance of struct S2
    786786(types:
    787787    lvalue instance of type T (not function type)
     
    795795  i: instance of type T (not function type)
    796796from aggregate:
    797   Variable Expression: _src: instance of struct S1
     797  Variable Expression: _src: instance of struct S2
    798798(types:
    799799    lvalue instance of type T (not function type)
     
    824824        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    825825            with parameters
    826               _dst: pointer to instance of struct S1
    827               _src: instance of struct S1
     826              _dst: pointer to instance of struct S2
     827              _src: instance of struct S2
    828828            returning
    829               instance of struct S1
     829              instance of struct S2
    830830
    831831(types:
    832832            pointer to function
    833833                with parameters
    834                   _dst: pointer to instance of struct S1
    835                   _src: instance of struct S1
     834                  _dst: pointer to instance of struct S2
     835                  _src: instance of struct S2
    836836                returning
    837                   instance of struct S1
     837                  instance of struct S2
    838838
    839839)
    840840        Environment:
    841 formal type is pointer to instance of struct S1
     841formal type is pointer to instance of struct S2
    842842actual type is pointer to instance of type T (not function type)
    843843working on alternative:
     
    862862actual type is pointer to instance of type T (not function type)
    863863alternatives before prune:
    864 Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S1
    865 (types:
    866     lvalue instance of struct S1
     864Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S2
     865(types:
     866    lvalue instance of struct S2
    867867)
    868868Environment:
     
    872872alternatives before prune:
    873873Cost ( 0, 0, 0 ): Cast of:
    874   Variable Expression: _src: instance of struct S1
     874  Variable Expression: _src: instance of struct S2
    875875
    876876to:
    877   instance of struct S1
    878 (types:
    879     instance of struct S1
     877  instance of struct S2
     878(types:
     879    instance of struct S2
    880880)
    881881Environment:
     
    953953decl is ?=?: automatically generated inline static function
    954954  with parameters
    955     _dst: pointer to instance of struct S1
    956     _src: instance of struct S1
    957   returning
    958     instance of struct S1
    959   with body
    960     CompoundStmt
    961               Expression Statement:
    962           Applying untyped:
    963               Name: ?=?
    964           ...to:
    965               Address of:
    966                 Member Expression, with field:
    967                   i: instance of type T (not function type)
    968                 from aggregate:
    969                   Applying untyped:
    970                       Name: *?
    971                   ...to:
    972                       Variable Expression: _dst: pointer to instance of struct S1
    973               Member Expression, with field:
    974                 i: instance of type T (not function type)
    975               from aggregate:
    976                 Variable Expression: _src: instance of struct S1
    977 
    978               Return Statement, returning: Cast of:
    979   Variable Expression: _src: instance of struct S1
    980 
    981 to:
    982   instance of struct S1
    983 with environment:
    984   Types:
    985   Non-types:
    986 
    987 
    988 
    989 newExpr is Variable Expression: ?=?: inline static function
    990     with parameters
    991       _dst: pointer to instance of struct S1
    992       _src: instance of struct S1
    993     returning
    994       instance of struct S1
    995 
    996 
    997 decl is ?=?: automatically generated inline static function
    998   with parameters
    999955    _dst: pointer to instance of struct S2
    1000956    _src: instance of struct S2
     
    1020976                Variable Expression: _src: instance of struct S2
    1021977
    1022               Return Statement, returning: Variable Expression: _src: instance of struct S2
     978              Return Statement, returning: Cast of:
     979  Variable Expression: _src: instance of struct S2
     980
     981to:
     982  instance of struct S2
     983with environment:
     984  Types:
     985  Non-types:
    1023986
    1024987
     
    1030993    returning
    1031994      instance of struct S2
     995
     996
     997decl is ?=?: automatically generated inline static function
     998  with parameters
     999    _dst: pointer to instance of struct S24
     1000    _src: instance of struct S24
     1001  returning
     1002    instance of struct S24
     1003  with body
     1004    CompoundStmt
     1005              Expression Statement:
     1006          Applying untyped:
     1007              Name: ?=?
     1008          ...to:
     1009              Address of:
     1010                Member Expression, with field:
     1011                  i: instance of type T (not function type)
     1012                from aggregate:
     1013                  Applying untyped:
     1014                      Name: *?
     1015                  ...to:
     1016                      Variable Expression: _dst: pointer to instance of struct S24
     1017              Member Expression, with field:
     1018                i: instance of type T (not function type)
     1019              from aggregate:
     1020                Variable Expression: _src: instance of struct S24
     1021
     1022              Return Statement, returning: Variable Expression: _src: instance of struct S24
     1023
     1024
     1025
     1026newExpr is Variable Expression: ?=?: inline static function
     1027    with parameters
     1028      _dst: pointer to instance of struct S24
     1029      _src: instance of struct S24
     1030    returning
     1031      instance of struct S24
    10321032
    10331033
     
    10851085Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    10861086    with parameters
    1087       _dst: pointer to instance of struct S1
    1088       _src: instance of struct S1
    1089     returning
    1090       instance of struct S1
    1091 
    1092 (types:
    1093     pointer to function
    1094         with parameters
    1095           _dst: pointer to instance of struct S1
    1096           _src: instance of struct S1
    1097         returning
    1098           instance of struct S1
    1099 
    1100 )
    1101 Environment:
    1102 
    1103 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    1104     with parameters
    11051087      _dst: pointer to instance of struct S2
    11061088      _src: instance of struct S2
     
    11151097        returning
    11161098          instance of struct S2
     1099
     1100)
     1101Environment:
     1102
     1103Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     1104    with parameters
     1105      _dst: pointer to instance of struct S24
     1106      _src: instance of struct S24
     1107    returning
     1108      instance of struct S24
     1109
     1110(types:
     1111    pointer to function
     1112        with parameters
     1113          _dst: pointer to instance of struct S24
     1114          _src: instance of struct S24
     1115        returning
     1116          instance of struct S24
    11171117
    11181118)
     
    11461146      Name: *?
    11471147  ...to:
    1148       Variable Expression: _dst: pointer to instance of struct S2
     1148      Variable Expression: _dst: pointer to instance of struct S24
    11491149(types:
    11501150    lvalue instance of type T (not function type)
     
    11621162        Name: *?
    11631163    ...to:
    1164         Variable Expression: _dst: pointer to instance of struct S2
     1164        Variable Expression: _dst: pointer to instance of struct S24
    11651165(types:
    11661166    pointer to instance of type T (not function type)
     
    11781178        Name: *?
    11791179    ...to:
    1180         Variable Expression: _dst: pointer to instance of struct S2
     1180        Variable Expression: _dst: pointer to instance of struct S24
    11811181(types:
    11821182    pointer to instance of type T (not function type)
     
    11881188  i: instance of type T (not function type)
    11891189from aggregate:
    1190   Variable Expression: _src: instance of struct S2
     1190  Variable Expression: _src: instance of struct S24
    11911191(types:
    11921192    lvalue instance of type T (not function type)
     
    12001200  i: instance of type T (not function type)
    12011201from aggregate:
    1202   Variable Expression: _src: instance of struct S2
     1202  Variable Expression: _src: instance of struct S24
    12031203(types:
    12041204    lvalue instance of type T (not function type)
     
    12251225        Environment:
    12261226formal type is pointer to instance of type List1 (not function type)
     1227actual type is pointer to instance of type T (not function type)
     1228working on alternative:
     1229        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
     1230            with parameters
     1231              _dst: pointer to instance of struct S24
     1232              _src: instance of struct S24
     1233            returning
     1234              instance of struct S24
     1235
     1236(types:
     1237            pointer to function
     1238                with parameters
     1239                  _dst: pointer to instance of struct S24
     1240                  _src: instance of struct S24
     1241                returning
     1242                  instance of struct S24
     1243
     1244)
     1245        Environment:
     1246formal type is pointer to instance of struct S24
    12271247actual type is pointer to instance of type T (not function type)
    12281248working on alternative:
     
    12491269        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    12501270            with parameters
    1251               _dst: pointer to instance of struct S1
    1252               _src: instance of struct S1
    1253             returning
    1254               instance of struct S1
    1255 
    1256 (types:
    1257             pointer to function
    1258                 with parameters
    1259                   _dst: pointer to instance of struct S1
    1260                   _src: instance of struct S1
    1261                 returning
    1262                   instance of struct S1
    1263 
    1264 )
    1265         Environment:
    1266 formal type is pointer to instance of struct S1
    1267 actual type is pointer to instance of type T (not function type)
    1268 working on alternative:
    1269         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    1270             with parameters
    12711271              _dst: pointer to instance of struct __anonymous0
    12721272              _src: instance of struct __anonymous0
     
    12871287actual type is pointer to instance of type T (not function type)
    12881288alternatives before prune:
    1289 Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S2
    1290 (types:
    1291     lvalue instance of struct S2
     1289Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S24
     1290(types:
     1291    lvalue instance of struct S24
    12921292)
    12931293Environment:
     
    12971297alternatives before prune:
    12981298Cost ( 0, 0, 0 ): Cast of:
    1299   Variable Expression: _src: instance of struct S2
     1299  Variable Expression: _src: instance of struct S24
    13001300
    13011301to:
    1302   instance of struct S2
    1303 (types:
    1304     instance of struct S2
     1302  instance of struct S24
     1303(types:
     1304    instance of struct S24
    13051305)
    13061306Environment:
     
    14151415decl is ?=?: automatically generated inline static function
    14161416  with parameters
    1417     _dst: pointer to instance of struct S1
    1418     _src: instance of struct S1
    1419   returning
    1420     instance of struct S1
    1421   with body
    1422     CompoundStmt
    1423               Expression Statement:
    1424           Applying untyped:
    1425               Name: ?=?
    1426           ...to:
    1427               Address of:
    1428                 Member Expression, with field:
    1429                   i: instance of type T (not function type)
    1430                 from aggregate:
    1431                   Applying untyped:
    1432                       Name: *?
    1433                   ...to:
    1434                       Variable Expression: _dst: pointer to instance of struct S1
    1435               Member Expression, with field:
    1436                 i: instance of type T (not function type)
    1437               from aggregate:
    1438                 Variable Expression: _src: instance of struct S1
    1439 
    1440               Return Statement, returning: Cast of:
    1441   Variable Expression: _src: instance of struct S1
    1442 
    1443 to:
    1444   instance of struct S1
    1445 with environment:
    1446   Types:
    1447   Non-types:
    1448 
    1449 
    1450 
    1451 newExpr is Variable Expression: ?=?: inline static function
    1452     with parameters
    1453       _dst: pointer to instance of struct S1
    1454       _src: instance of struct S1
    1455     returning
    1456       instance of struct S1
    1457 
    1458 
    1459 decl is ?=?: automatically generated inline static function
    1460   with parameters
    14611417    _dst: pointer to instance of struct S2
    14621418    _src: instance of struct S2
     
    14991455    returning
    15001456      instance of struct S2
     1457
     1458
     1459decl is ?=?: automatically generated inline static function
     1460  with parameters
     1461    _dst: pointer to instance of struct S24
     1462    _src: instance of struct S24
     1463  returning
     1464    instance of struct S24
     1465  with body
     1466    CompoundStmt
     1467              Expression Statement:
     1468          Applying untyped:
     1469              Name: ?=?
     1470          ...to:
     1471              Address of:
     1472                Member Expression, with field:
     1473                  i: instance of type T (not function type)
     1474                from aggregate:
     1475                  Applying untyped:
     1476                      Name: *?
     1477                  ...to:
     1478                      Variable Expression: _dst: pointer to instance of struct S24
     1479              Member Expression, with field:
     1480                i: instance of type T (not function type)
     1481              from aggregate:
     1482                Variable Expression: _src: instance of struct S24
     1483
     1484              Return Statement, returning: Cast of:
     1485  Variable Expression: _src: instance of struct S24
     1486
     1487to:
     1488  instance of struct S24
     1489with environment:
     1490  Types:
     1491  Non-types:
     1492
     1493
     1494
     1495newExpr is Variable Expression: ?=?: inline static function
     1496    with parameters
     1497      _dst: pointer to instance of struct S24
     1498      _src: instance of struct S24
     1499    returning
     1500      instance of struct S24
    15011501
    15021502
     
    15721572Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    15731573    with parameters
    1574       _dst: pointer to instance of struct S1
    1575       _src: instance of struct S1
    1576     returning
    1577       instance of struct S1
    1578 
    1579 (types:
    1580     pointer to function
    1581         with parameters
    1582           _dst: pointer to instance of struct S1
    1583           _src: instance of struct S1
    1584         returning
    1585           instance of struct S1
    1586 
    1587 )
    1588 Environment:
    1589 
    1590 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    1591     with parameters
    15921574      _dst: pointer to instance of struct S2
    15931575      _src: instance of struct S2
     
    16021584        returning
    16031585          instance of struct S2
     1586
     1587)
     1588Environment:
     1589
     1590Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     1591    with parameters
     1592      _dst: pointer to instance of struct S24
     1593      _src: instance of struct S24
     1594    returning
     1595      instance of struct S24
     1596
     1597(types:
     1598    pointer to function
     1599        with parameters
     1600          _dst: pointer to instance of struct S24
     1601          _src: instance of struct S24
     1602        returning
     1603          instance of struct S24
    16041604
    16051605)
     
    17161716        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    17171717            with parameters
     1718              _dst: pointer to instance of struct S24
     1719              _src: instance of struct S24
     1720            returning
     1721              instance of struct S24
     1722
     1723(types:
     1724            pointer to function
     1725                with parameters
     1726                  _dst: pointer to instance of struct S24
     1727                  _src: instance of struct S24
     1728                returning
     1729                  instance of struct S24
     1730
     1731)
     1732        Environment:
     1733formal type is pointer to instance of struct S24
     1734actual type is pointer to instance of type T (not function type)
     1735working on alternative:
     1736        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
     1737            with parameters
    17181738              _dst: pointer to instance of struct S2
    17191739              _src: instance of struct S2
     
    17321752        Environment:
    17331753formal type is pointer to instance of struct S2
    1734 actual type is pointer to instance of type T (not function type)
    1735 working on alternative:
    1736         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    1737             with parameters
    1738               _dst: pointer to instance of struct S1
    1739               _src: instance of struct S1
    1740             returning
    1741               instance of struct S1
    1742 
    1743 (types:
    1744             pointer to function
    1745                 with parameters
    1746                   _dst: pointer to instance of struct S1
    1747                   _src: instance of struct S1
    1748                 returning
    1749                   instance of struct S1
    1750 
    1751 )
    1752         Environment:
    1753 formal type is pointer to instance of struct S1
    17541754actual type is pointer to instance of type T (not function type)
    17551755working on alternative:
     
    19291929decl is ?=?: automatically generated inline static function
    19301930  with parameters
    1931     _dst: pointer to instance of struct S1
    1932     _src: instance of struct S1
    1933   returning
    1934     instance of struct S1
    1935   with body
    1936     CompoundStmt
    1937               Expression Statement:
    1938           Applying untyped:
    1939               Name: ?=?
    1940           ...to:
    1941               Address of:
    1942                 Member Expression, with field:
    1943                   i: instance of type T (not function type)
    1944                 from aggregate:
    1945                   Applying untyped:
    1946                       Name: *?
    1947                   ...to:
    1948                       Variable Expression: _dst: pointer to instance of struct S1
    1949               Member Expression, with field:
    1950                 i: instance of type T (not function type)
    1951               from aggregate:
    1952                 Variable Expression: _src: instance of struct S1
    1953 
    1954               Return Statement, returning: Cast of:
    1955   Variable Expression: _src: instance of struct S1
    1956 
    1957 to:
    1958   instance of struct S1
    1959 with environment:
    1960   Types:
    1961   Non-types:
    1962 
    1963 
    1964 
    1965 newExpr is Variable Expression: ?=?: inline static function
    1966     with parameters
    1967       _dst: pointer to instance of struct S1
    1968       _src: instance of struct S1
    1969     returning
    1970       instance of struct S1
    1971 
    1972 
    1973 decl is ?=?: automatically generated inline static function
    1974   with parameters
    19751931    _dst: pointer to instance of struct S2
    19761932    _src: instance of struct S2
     
    20131969    returning
    20141970      instance of struct S2
     1971
     1972
     1973decl is ?=?: automatically generated inline static function
     1974  with parameters
     1975    _dst: pointer to instance of struct S24
     1976    _src: instance of struct S24
     1977  returning
     1978    instance of struct S24
     1979  with body
     1980    CompoundStmt
     1981              Expression Statement:
     1982          Applying untyped:
     1983              Name: ?=?
     1984          ...to:
     1985              Address of:
     1986                Member Expression, with field:
     1987                  i: instance of type T (not function type)
     1988                from aggregate:
     1989                  Applying untyped:
     1990                      Name: *?
     1991                  ...to:
     1992                      Variable Expression: _dst: pointer to instance of struct S24
     1993              Member Expression, with field:
     1994                i: instance of type T (not function type)
     1995              from aggregate:
     1996                Variable Expression: _src: instance of struct S24
     1997
     1998              Return Statement, returning: Cast of:
     1999  Variable Expression: _src: instance of struct S24
     2000
     2001to:
     2002  instance of struct S24
     2003with environment:
     2004  Types:
     2005  Non-types:
     2006
     2007
     2008
     2009newExpr is Variable Expression: ?=?: inline static function
     2010    with parameters
     2011      _dst: pointer to instance of struct S24
     2012      _src: instance of struct S24
     2013    returning
     2014      instance of struct S24
    20152015
    20162016
     
    21462146Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    21472147    with parameters
    2148       _dst: pointer to instance of struct S1
    2149       _src: instance of struct S1
    2150     returning
    2151       instance of struct S1
    2152 
    2153 (types:
    2154     pointer to function
    2155         with parameters
    2156           _dst: pointer to instance of struct S1
    2157           _src: instance of struct S1
    2158         returning
    2159           instance of struct S1
    2160 
    2161 )
    2162 Environment:
    2163 
    2164 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    2165     with parameters
    21662148      _dst: pointer to instance of struct S2
    21672149      _src: instance of struct S2
     
    21762158        returning
    21772159          instance of struct S2
     2160
     2161)
     2162Environment:
     2163
     2164Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     2165    with parameters
     2166      _dst: pointer to instance of struct S24
     2167      _src: instance of struct S24
     2168    returning
     2169      instance of struct S24
     2170
     2171(types:
     2172    pointer to function
     2173        with parameters
     2174          _dst: pointer to instance of struct S24
     2175          _src: instance of struct S24
     2176        returning
     2177          instance of struct S24
    21782178
    21792179)
     
    23282328        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    23292329            with parameters
     2330              _dst: pointer to instance of struct S24
     2331              _src: instance of struct S24
     2332            returning
     2333              instance of struct S24
     2334
     2335(types:
     2336            pointer to function
     2337                with parameters
     2338                  _dst: pointer to instance of struct S24
     2339                  _src: instance of struct S24
     2340                returning
     2341                  instance of struct S24
     2342
     2343)
     2344        Environment:
     2345formal type is pointer to instance of struct S24
     2346actual type is pointer to instance of type T (not function type)
     2347working on alternative:
     2348        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
     2349            with parameters
    23302350              _dst: pointer to instance of struct S2
    23312351              _src: instance of struct S2
     
    23442364        Environment:
    23452365formal type is pointer to instance of struct S2
    2346 actual type is pointer to instance of type T (not function type)
    2347 working on alternative:
    2348         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    2349             with parameters
    2350               _dst: pointer to instance of struct S1
    2351               _src: instance of struct S1
    2352             returning
    2353               instance of struct S1
    2354 
    2355 (types:
    2356             pointer to function
    2357                 with parameters
    2358                   _dst: pointer to instance of struct S1
    2359                   _src: instance of struct S1
    2360                 returning
    2361                   instance of struct S1
    2362 
    2363 )
    2364         Environment:
    2365 formal type is pointer to instance of struct S1
    23662366actual type is pointer to instance of type T (not function type)
    23672367working on alternative:
     
    25192519decl is ?=?: automatically generated inline static function
    25202520  with parameters
    2521     _dst: pointer to instance of struct S1
    2522     _src: instance of struct S1
    2523   returning
    2524     instance of struct S1
    2525   with body
    2526     CompoundStmt
    2527               Expression Statement:
    2528           Applying untyped:
    2529               Name: ?=?
    2530           ...to:
    2531               Address of:
    2532                 Member Expression, with field:
    2533                   i: instance of type T (not function type)
    2534                 from aggregate:
    2535                   Applying untyped:
    2536                       Name: *?
    2537                   ...to:
    2538                       Variable Expression: _dst: pointer to instance of struct S1
    2539               Member Expression, with field:
    2540                 i: instance of type T (not function type)
    2541               from aggregate:
    2542                 Variable Expression: _src: instance of struct S1
    2543 
    2544               Return Statement, returning: Cast of:
    2545   Variable Expression: _src: instance of struct S1
    2546 
    2547 to:
    2548   instance of struct S1
    2549 with environment:
    2550   Types:
    2551   Non-types:
    2552 
    2553 
    2554 
    2555 newExpr is Variable Expression: ?=?: inline static function
    2556     with parameters
    2557       _dst: pointer to instance of struct S1
    2558       _src: instance of struct S1
    2559     returning
    2560       instance of struct S1
    2561 
    2562 
    2563 decl is ?=?: automatically generated inline static function
    2564   with parameters
    25652521    _dst: pointer to instance of struct S2
    25662522    _src: instance of struct S2
     
    26032559    returning
    26042560      instance of struct S2
     2561
     2562
     2563decl is ?=?: automatically generated inline static function
     2564  with parameters
     2565    _dst: pointer to instance of struct S24
     2566    _src: instance of struct S24
     2567  returning
     2568    instance of struct S24
     2569  with body
     2570    CompoundStmt
     2571              Expression Statement:
     2572          Applying untyped:
     2573              Name: ?=?
     2574          ...to:
     2575              Address of:
     2576                Member Expression, with field:
     2577                  i: instance of type T (not function type)
     2578                from aggregate:
     2579                  Applying untyped:
     2580                      Name: *?
     2581                  ...to:
     2582                      Variable Expression: _dst: pointer to instance of struct S24
     2583              Member Expression, with field:
     2584                i: instance of type T (not function type)
     2585              from aggregate:
     2586                Variable Expression: _src: instance of struct S24
     2587
     2588              Return Statement, returning: Cast of:
     2589  Variable Expression: _src: instance of struct S24
     2590
     2591to:
     2592  instance of struct S24
     2593with environment:
     2594  Types:
     2595  Non-types:
     2596
     2597
     2598
     2599newExpr is Variable Expression: ?=?: inline static function
     2600    with parameters
     2601      _dst: pointer to instance of struct S24
     2602      _src: instance of struct S24
     2603    returning
     2604      instance of struct S24
    26052605
    26062606
     
    27362736Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    27372737    with parameters
    2738       _dst: pointer to instance of struct S1
    2739       _src: instance of struct S1
    2740     returning
    2741       instance of struct S1
    2742 
    2743 (types:
    2744     pointer to function
    2745         with parameters
    2746           _dst: pointer to instance of struct S1
    2747           _src: instance of struct S1
    2748         returning
    2749           instance of struct S1
    2750 
    2751 )
    2752 Environment:
    2753 
    2754 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    2755     with parameters
    27562738      _dst: pointer to instance of struct S2
    27572739      _src: instance of struct S2
     
    27662748        returning
    27672749          instance of struct S2
     2750
     2751)
     2752Environment:
     2753
     2754Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     2755    with parameters
     2756      _dst: pointer to instance of struct S24
     2757      _src: instance of struct S24
     2758    returning
     2759      instance of struct S24
     2760
     2761(types:
     2762    pointer to function
     2763        with parameters
     2764          _dst: pointer to instance of struct S24
     2765          _src: instance of struct S24
     2766        returning
     2767          instance of struct S24
    27682768
    27692769)
     
    29542954        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    29552955            with parameters
     2956              _dst: pointer to instance of struct S24
     2957              _src: instance of struct S24
     2958            returning
     2959              instance of struct S24
     2960
     2961(types:
     2962            pointer to function
     2963                with parameters
     2964                  _dst: pointer to instance of struct S24
     2965                  _src: instance of struct S24
     2966                returning
     2967                  instance of struct S24
     2968
     2969)
     2970        Environment:
     2971formal type is pointer to instance of struct S24
     2972actual type is pointer to pointer to instance of struct node
     2973with parameters
     2974  instance of type T (not function type)
     2975
     2976working on alternative:
     2977        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
     2978            with parameters
    29562979              _dst: pointer to instance of struct S2
    29572980              _src: instance of struct S2
     
    29702993        Environment:
    29712994formal type is pointer to instance of struct S2
    2972 actual type is pointer to pointer to instance of struct node
    2973 with parameters
    2974   instance of type T (not function type)
    2975 
    2976 working on alternative:
    2977         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
    2978             with parameters
    2979               _dst: pointer to instance of struct S1
    2980               _src: instance of struct S1
    2981             returning
    2982               instance of struct S1
    2983 
    2984 (types:
    2985             pointer to function
    2986                 with parameters
    2987                   _dst: pointer to instance of struct S1
    2988                   _src: instance of struct S1
    2989                 returning
    2990                   instance of struct S1
    2991 
    2992 )
    2993         Environment:
    2994 formal type is pointer to instance of struct S1
    29952995actual type is pointer to pointer to instance of struct node
    29962996with parameters
     
    31793179decl is ?=?: automatically generated inline static function
    31803180  with parameters
    3181     _dst: pointer to instance of struct S1
    3182     _src: instance of struct S1
    3183   returning
    3184     instance of struct S1
    3185   with body
    3186     CompoundStmt
    3187               Expression Statement:
    3188           Applying untyped:
    3189               Name: ?=?
    3190           ...to:
    3191               Address of:
    3192                 Member Expression, with field:
    3193                   i: instance of type T (not function type)
    3194                 from aggregate:
    3195                   Applying untyped:
    3196                       Name: *?
    3197                   ...to:
    3198                       Variable Expression: _dst: pointer to instance of struct S1
    3199               Member Expression, with field:
    3200                 i: instance of type T (not function type)
    3201               from aggregate:
    3202                 Variable Expression: _src: instance of struct S1
    3203 
    3204               Return Statement, returning: Cast of:
    3205   Variable Expression: _src: instance of struct S1
    3206 
    3207 to:
    3208   instance of struct S1
    3209 with environment:
    3210   Types:
    3211   Non-types:
    3212 
    3213 
    3214 
    3215 newExpr is Variable Expression: ?=?: inline static function
    3216     with parameters
    3217       _dst: pointer to instance of struct S1
    3218       _src: instance of struct S1
    3219     returning
    3220       instance of struct S1
    3221 
    3222 
    3223 decl is ?=?: automatically generated inline static function
    3224   with parameters
    32253181    _dst: pointer to instance of struct S2
    32263182    _src: instance of struct S2
     
    32633219    returning
    32643220      instance of struct S2
     3221
     3222
     3223decl is ?=?: automatically generated inline static function
     3224  with parameters
     3225    _dst: pointer to instance of struct S24
     3226    _src: instance of struct S24
     3227  returning
     3228    instance of struct S24
     3229  with body
     3230    CompoundStmt
     3231              Expression Statement:
     3232          Applying untyped:
     3233              Name: ?=?
     3234          ...to:
     3235              Address of:
     3236                Member Expression, with field:
     3237                  i: instance of type T (not function type)
     3238                from aggregate:
     3239                  Applying untyped:
     3240                      Name: *?
     3241                  ...to:
     3242                      Variable Expression: _dst: pointer to instance of struct S24
     3243              Member Expression, with field:
     3244                i: instance of type T (not function type)
     3245              from aggregate:
     3246                Variable Expression: _src: instance of struct S24
     3247
     3248              Return Statement, returning: Cast of:
     3249  Variable Expression: _src: instance of struct S24
     3250
     3251to:
     3252  instance of struct S24
     3253with environment:
     3254  Types:
     3255  Non-types:
     3256
     3257
     3258
     3259newExpr is Variable Expression: ?=?: inline static function
     3260    with parameters
     3261      _dst: pointer to instance of struct S24
     3262      _src: instance of struct S24
     3263    returning
     3264      instance of struct S24
    32653265
    32663266
     
    34413441Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    34423442    with parameters
    3443       _dst: pointer to instance of struct S1
    3444       _src: instance of struct S1
    3445     returning
    3446       instance of struct S1
    3447 
    3448 (types:
    3449     pointer to function
    3450         with parameters
    3451           _dst: pointer to instance of struct S1
    3452           _src: instance of struct S1
    3453         returning
    3454           instance of struct S1
    3455 
    3456 )
    3457 Environment:
    3458 
    3459 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    3460     with parameters
    34613443      _dst: pointer to instance of struct S2
    34623444      _src: instance of struct S2
     
    34713453        returning
    34723454          instance of struct S2
     3455
     3456)
     3457Environment:
     3458
     3459Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     3460    with parameters
     3461      _dst: pointer to instance of struct S24
     3462      _src: instance of struct S24
     3463    returning
     3464      instance of struct S24
     3465
     3466(types:
     3467    pointer to function
     3468        with parameters
     3469          _dst: pointer to instance of struct S24
     3470          _src: instance of struct S24
     3471        returning
     3472          instance of struct S24
    34733473
    34743474)
     
    36193619            Name: *?
    36203620        ...to:
    3621             Variable Expression: _dst: pointer to instance of struct S1
     3621            Variable Expression: _dst: pointer to instance of struct S2
    36223622    Member Expression, with field:
    36233623      i: instance of type T (not function type)
    36243624    from aggregate:
    3625       Variable Expression: _src: instance of struct S1
     3625      Variable Expression: _src: instance of struct S2
    36263626
    36273627Error: No reasonable alternatives for expression Applying untyped:
     
    36353635            Name: *?
    36363636        ...to:
    3637             Variable Expression: _dst: pointer to instance of struct S2
     3637            Variable Expression: _dst: pointer to instance of struct S24
    36383638    Member Expression, with field:
    36393639      i: instance of type T (not function type)
    36403640    from aggregate:
    3641       Variable Expression: _src: instance of struct S2
     3641      Variable Expression: _src: instance of struct S24
    36423642
    36433643Error: No reasonable alternatives for expression Applying untyped:
  • src/Tests/Expect-s/Attributes.txt

    rea9b9d3 rb5b0907  
    1 Error at line 8 reading token "*"
     1Error at line 58 reading token "*"
  • src/Tests/Expect-s/TypeGenerator.txt

    rea9b9d3 rb5b0907  
    44Adding type T
    55Adding function ?+?
     6--- Entering scope
     7--- Leaving scope containing
     8Adding function ?=?
    69--- Entering scope
    710--- Leaving scope containing
     
    3336Adding object p
    3437--- Leaving scope containing
    35 Adding fwd decl for struct S1
    36 --- Entering scope
    37 --- Entering scope
    38 --- Leaving scope containing
    39 Adding type T
    40 --- Leaving scope containing
    41 T
    42 Adding struct S1
    43 Adding fwd decl for struct S1
    44 --- Entering scope
    45 --- Entering scope
    46 --- Leaving scope containing
    47 Adding type T
    48 Adding object i
    49 --- Leaving scope containing
    50 T
    51 Adding struct S1
    52 --- Entering scope
    53 --- Leaving scope containing
    54 Adding object v1
    55 --- Entering scope
    56 --- Leaving scope containing
    57 Adding object p
    5838Adding fwd decl for struct S2
    5939--- Entering scope
     
    6545T
    6646Adding struct S2
     47Adding struct S3 from implicit forward declaration
     48--- Entering scope
     49--- Leaving scope containing
     50Adding object v1
     51--- Entering scope
     52--- Leaving scope containing
     53Adding object p
     54Adding fwd decl for struct S24
     55--- Entering scope
     56--- Entering scope
     57--- Leaving scope containing
     58Adding type T
     59Adding object i
     60--- Leaving scope containing
     61T
     62Adding struct S24
    6763--- Entering scope
    6864--- Leaving scope containing
  • src/Tests/Expect-v/AsmName.txt

    rea9b9d3 rb5b0907  
    1 x: auto signed int
     1x: extern signed int
    22fred: function
    33    with parameters
  • src/Tests/Expect-v/Attributes.txt

    rea9b9d3 rb5b0907  
    1 Error at line 8 reading token "*"
     1Error at line 58 reading token "*"
  • src/Tests/Expect-v/Context.txt

    rea9b9d3 rb5b0907  
    5454
    5555
    56         Declaration of x: auto type
     56        Declaration of x: extern type
    5757        Declaration of ?=?: automatically generated function
    5858            with parameters
     
    6262              instance of type x (not function type)
    6363
    64         Declaration of y: auto type
     64        Declaration of y: extern type
    6565          with assertions
    6666            instance of context has_r
  • src/Tests/Expect-v/Functions.txt

    rea9b9d3 rb5b0907  
    165165      CompoundStmt
    166166
    167 fII3: auto function
    168     with parameters
    169       i: signed int
    170     returning
    171       signed int
    172     with body
    173       CompoundStmt
    174 
    175 fII4: auto function
     167fII3: extern function
     168    with parameters
     169      i: signed int
     170    returning
     171      signed int
     172    with body
     173      CompoundStmt
     174
     175fII4: extern function
    176176    with parameters
    177177      i: signed int
     
    249249      CompoundStmt
    250250
    251 fO4: auto function
     251fO4: extern function
    252252      accepting unspecified arguments
    253253    returning
     
    260260      CompoundStmt
    261261
    262 fO5: auto function
     262fO5: extern function
    263263      accepting unspecified arguments
    264264    returning
  • src/Tests/Expect-v/TypeGenerator.txt

    rea9b9d3 rb5b0907  
    140140      signed int
    141141
    142 struct S1
    143     with parameters
    144       T: type
    145 
    146 struct S1
    147     with parameters
    148       T: type
    149 
    150     with members
    151       i: instance of type T (not function type)
    152 
    153 ?=?: automatically generated inline static function
    154     with parameters
    155       _dst: pointer to instance of struct S1
    156       _src: instance of struct S1
    157     returning
    158       instance of struct S1
    159     with body
    160       CompoundStmt
    161                   Expression Statement:
    162             Applying untyped:
    163                 Name: ?=?
    164             ...to:
    165                 Address of:
    166                   Member Expression, with field:
    167                     i: instance of type T (not function type)
    168                   from aggregate:
    169                     Applying untyped:
    170                         Name: *?
    171                     ...to:
    172                         Variable Expression: _dst: pointer to instance of struct S1
    173                 Member Expression, with field:
    174                   i: instance of type T (not function type)
    175                 from aggregate:
    176                   Variable Expression: _src: instance of struct S1
    177 
    178                   Return Statement, returning: Variable Expression: _src: instance of struct S1
    179 
    180 
    181 
    182 v1: instance of struct S1
    183   with parameters
    184     signed int
    185 
    186 p: pointer to instance of struct S1
    187   with parameters
    188     signed int
    189 
    190142struct S2
    191143    with parameters
     
    224176
    225177
    226 v2: instance of struct S2
     178v1: instance of struct S3
     179  with parameters
     180    signed int
     181
     182p: pointer to instance of struct S3
     183  with parameters
     184    signed int
     185
     186struct S24
     187    with parameters
     188      T: type
     189
     190    with members
     191      i: instance of type T (not function type)
     192
     193?=?: automatically generated inline static function
     194    with parameters
     195      _dst: pointer to instance of struct S24
     196      _src: instance of struct S24
     197    returning
     198      instance of struct S24
     199    with body
     200      CompoundStmt
     201                  Expression Statement:
     202            Applying untyped:
     203                Name: ?=?
     204            ...to:
     205                Address of:
     206                  Member Expression, with field:
     207                    i: instance of type T (not function type)
     208                  from aggregate:
     209                    Applying untyped:
     210                        Name: *?
     211                    ...to:
     212                        Variable Expression: _dst: pointer to instance of struct S24
     213                Member Expression, with field:
     214                  i: instance of type T (not function type)
     215                from aggregate:
     216                  Variable Expression: _src: instance of struct S24
     217
     218                  Return Statement, returning: Variable Expression: _src: instance of struct S24
     219
     220
     221
     222v2: instance of struct S24
    227223  with parameters
    228224    signed int
  • src/Tests/TypeGenerator.c

    rea9b9d3 rb5b0907  
    1111[int] h( * List1( int ) p );                                                    // new declaration syntax
    1212
    13 struct( type T ) S1;                                                                    // forward definition
    14 struct( type T ) S1 { T i; };                                                   // actual definition
    15 struct( int ) S1 v1, *p;                                                                // expansion and instantiation
    16 struct( type T )( int ) S2 { T i; } v2;                                 // actual definition, expansion and instantiation
     13struct( type T ) S2 { T i; };                                                   // actual definition
     14struct( int ) S3 v1, *p;                                                                // expansion and instantiation
     15struct( type T )( int ) S24 { T i; } v2;                                // actual definition, expansion and instantiation
    1716struct( type T )( int ) { T i; } v2;                                    // anonymous actual definition, expansion and instantiation
    1817
  • src/Tuples/AssignExpand.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:24:47 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jun 13 08:16:39 2015
     13// Update Count     : 4
    1414//
    1515
     
    2323#include "AssignExpand.h"
    2424
     25#include "Parser/ParseNode.h"
     26
    2527#include "SynTree/Type.h"
     28#include "SynTree/Declaration.h"
     29#include "SynTree/Expression.h"
    2630#include "SynTree/Statement.h"
    27 #include "SynTree/Expression.h"
    28 #include "SynTree/Declaration.h"
    2931
    3032namespace Tuples {
     
    100102                                        assert( rhsT->get_results().size() == 1 );
    101103                                        // declare temporaries
    102                                         ObjectDecl *lhs = new ObjectDecl( temporaryNamer.newName("_lhs_"), Declaration::NoStorageClass, LinkageSpec::Intrinsic, 0,
     104                                        ObjectDecl *lhs = new ObjectDecl( temporaryNamer.newName("_lhs_"), DeclarationNode::NoStorageClass, LinkageSpec::Intrinsic, 0,
    103105                                                                                                          lhsT->get_results().front(), 0 );
    104106                                        decls.push_back( new DeclStmt( std::list< Label >(), lhs ) );
    105                                         ObjectDecl *rhs = new ObjectDecl( temporaryNamer.newName("_rhs_"), Declaration::NoStorageClass, LinkageSpec::Intrinsic, 0,
     107                                        ObjectDecl *rhs = new ObjectDecl( temporaryNamer.newName("_rhs_"), DeclarationNode::NoStorageClass, LinkageSpec::Intrinsic, 0,
    106108                                                                                                          rhsT->get_results().front(), 0);
    107109                                        decls.push_back( new DeclStmt( std::list< Label >(), rhs ));
  • src/Tuples/FunctionChecker.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:59:55 2015
    13 // Update Count     : 3
     12// Last Modified On : Sat Jun 13 08:17:19 2015
     13// Update Count     : 4
    1414//
    1515
     
    7575                if ( applicationExpr->get_results().size() > 1 ) {
    7676                        for ( std::list< Type *>::iterator res = applicationExpr->get_results().begin(); res != applicationExpr->get_results().end(); res++ )
    77                                 temporaries.push_back( new ObjectDecl( nameGen->newName(),Declaration::Auto,LinkageSpec::AutoGen, 0, (*res )->clone(), 0 ) );
     77                                temporaries.push_back( new ObjectDecl( nameGen->newName(), DeclarationNode::Auto, LinkageSpec::AutoGen, 0, (*res )->clone(), 0 ) );
    7878
    7979                        assert( ! temporaries.empty() );
  • src/main.cc

    rea9b9d3 rb5b0907  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 11 11:06:04 2015
    13 // Update Count     : 69
     12// Last Modified On : Fri Jun 12 06:56:40 2015
     13// Update Count     : 70
    1414//
    1515
     
    5454        if ( errorp ) std::cerr << x << std::endl;
    5555
    56 void parse(FILE * input, LinkageSpec::Type t, bool shouldExit = false );
     56void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
    5757
    5858bool
     
    277277                        delete output;
    278278                } // if
    279 
    280279        } catch ( SemanticError &e ) {
    281280                if ( errorp ) {
     
    305304} // main
    306305
    307 void parse(FILE * input, LinkageSpec::Type linkage, bool shouldExit) {
     306void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {
    308307        Parser::get_parser().set_linkage( linkage );
    309308        Parser::get_parser().parse( input );
Note: See TracChangeset for help on using the changeset viewer.