View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002526 | OpenFOAM | Bug | public | 2017-04-11 20:37 | 2017-09-02 17:04 |
Reporter | robertoribeiro | Assigned To | will | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | no change required | ||
Platform | Linux | OS | CentOS | OS Version | (please specify) |
Product Version | dev | ||||
Summary | 0002526: crash in interDyMFoam paralell with dynamicRefineFvMesh | ||||
Description | damBreakWithObstacle crashes at an arbitrary point in the simulation when using dynamicRefineFvMesh and interDyMFoam in parallel. This happens in a cluster with GCC+MVAPICH2 (also tried with ICC+IMPI). The output error is also not consistently the same, but the most frequent is the following: Courant Number mean: 0.0215234 max: 0.467355 Interface Courant Number mean: 0.00205386 max: 0.467355 deltaT = 0.000763889 Time = 0.219236 PIMPLE: iteration 1 Selected 78 cells for refinement out of 113778. Refined from 113778 to 114324 cells. Selected 52 split points out of a possible 10022. Unrefined from 114324 to 113960 cells. Execution time for mesh.update() = 0.34 s GAMG: Solving for pcorr, Initial residual = 1, Final residual = 4.39906e-05, No Iterations 9 time step continuity errors : sum local = 5.73634e-10, global = 1.57291e-10, cumulative = 9.06686e-06 MULES: Solving for alpha.water (...) time step continuity errors : sum local = 7.05031e-10, global = 2.8921e-11, cumulative = 9.78248e-06 ExecutionTime = 89.36 s ClockTime = 92 s Courant Number mean: 0.0216001 max: 0.468787 Interface Courant Number mean: 0.00201923 max: 0.468787 deltaT = 0.000763889 Time = 0.22 PIMPLE: iteration 1 Selected 71 cells for refinement out of 113960. [27] [27] [27] --> FOAM FATAL IO ERROR: [27] error in IOstream "IOstream" for operation operator>>(Istream&, List<T>&) : reading first token [27] [27] file: IOstream at line 0. [27] [27] From function void Foam::IOstream::fatalCheck(const char*) const [27] in file db/IOstreams/IOstreams/IOstream.C at line 109. [27] FOAM parallel run exiting [27] [cli_27]: aborting job: application called MPI_Abort(MPI_COMM_WORLD, 1) - process 27 I traced it down to the hexRef8::setRefinement call, specifically where we call syncTools::syncEdgeList. It seems like inconsistent data in the message buffer that crashes the token parsing. The message seems to be associated with interchanging information related with coupled processor patches. The inconsistency is possibly generated by the refinement, either on the current step or on the previous. I have enabled all the pertinent checks but none reported any problem. The error seems to be more frequent with higher processor counts. | ||||
Steps To Reproduce | The only required changes were to adjust the decomposeParDict to 32 processors and the Allrun to run in parallel. This was executed in a cluster with 16 cores per node, thus requiring two nodes which were connected with an infiniband network interface. | ||||
Tags | No tags attached. | ||||
|
Any ideas on this issue? I was able to reproduce it with 16 Procs too, though not so frequently. I've developing some features for OF addressing load balance with dynamic load, but this problem is critically blocking me Any help would be appreciated, Thank you |
|
I was able to force a printStack upon error, and got this (with the latest 2.4.x branch and 16 ranks in two nodes): Interface Courant Number mean: 0.00146512 max: 0.302876 Courant Number mean: 0.0139884 max: 0.381074 Time = 0.107 PIMPLE: iteration 1 Selected 8 cells for refinement out of 44273. Refined from 44273 to 44329 cells. Selected 7 split points out of a possible 1690. #0 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZN4Foam5error14safePrintStackERSo+0x23) [0x2b741e44e7e3] #1 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZNK4Foam8IOstream10fatalCheckEPKc+0x2c) [0x2b741df9b6ac] #2 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libincompressibleRASModels.so(_ZN4FoamrsIiEERNS_7IstreamES2_RNS_4ListIT_EE+0x64) [0x2b74197181d4] #3 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZN4Foam12globalPoints18receivePatchPointsEbRKNS_3MapIiEERKNS_4ListIiEERNS_14PstreamBuffersERNS_7HashSetIiNS_4HashIiEEEE+0x1b1) [0x2b741e205b21] #4 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZN4Foam12globalPoints21calculateSharedPointsERKNS_3MapIiEERKNS_4ListIiEEbb+0x37a) [0x2b741e204dca] #5 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZN4Foam12globalPointsC1ERKNS_8polyMeshERKNS_14PrimitivePatchINS_4faceENS_12IndirectListERKNS_5FieldINS_6VectorIdEEEES9_EEbb+0x209) [0x2b741e20b1c9] #6 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZNK4Foam14globalMeshData21calcGlobalPointSlavesEv+0x6c) [0x2b741e1dfc5c] #7 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZNK4Foam14globalMeshData17globalPointSlavesEv+0x1c) [0x2b741e1dfb4c] #8 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZNK4Foam14globalMeshData21calcPointConnectivityERNS_4ListINS1_INS_4PairIiEEEEEE+0x2a) [0x2b741e1df04a] #9 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZNK4Foam14globalMeshData20calcGlobalEdgeSlavesEv+0xac) [0x2b741e1dd74c] #10 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libOpenFOAM.so(_ZNK4Foam14globalMeshData19globalEdgeSlavesMapEv+0x1c) [0x2b741e1e154c] #11 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libdynamicMesh.so(_ZN4Foam9syncTools12syncEdgeListIiNS_7maxEqOpIiEENS_13mapDistribute9transformEEEvRKNS_8polyMeshERNS_4ListIT_EERKT0_RKSA_RKT1_+0x79) [0x2b741bd35fd9] #12 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libdynamicMesh.so(_ZNK4Foam11removeFaces13setRefinementERKNS_4ListIiEES4_S4_RNS_14polyTopoChangeE+0xd1d) [0x2b741bda664d] #13 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libdynamicMesh.so(_ZN4Foam7hexRef815setUnrefinementERKNS_4ListIiEERNS_14polyTopoChangeE+0x974) [0x2b741bd7ad64] #14 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libdynamicFvMesh.so(_ZN4Foam19dynamicRefineFvMesh8unrefineERKNS_4ListIiEE+0x60) [0x2b741c383d60] #15 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/lib/libdynamicFvMesh.so(_ZN4Foam19dynamicRefineFvMesh6updateEv+0x68a) [0x2b741c38254a] #16 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/bin/interDyMFoam() [0x429392] #17 /lib64/libc.so.6(__libc_start_main+0xfd) [0x34a9c1ed1d] #18 /work/01502/rri/work/openfoam/2.4.x/builds/dev-sandy-icc-impi/OpenFOAM-2.4.x/platforms/linux64IccDPOpt/bin/interDyMFoam() [0x426c69] [2] [2] [2] --> FOAM FATAL IO ERROR: [2] error in IOstream "IOstream" for operation operator>>(Istream&, List<T>&) : reading first token [2] [2] file: IOstream at line 0. [2] [2] From function IOstream::fatalCheck(const char*) const [2] in file db/IOstreams/IOstreams/IOstream.C at line 116. [2] FOAM parallel run exiting Eventually I also get the crash in the refine call |
|
I can't reproduce this. I'm running openmpi on 32 cores a single machine (no interconnect). Have you tried openmpi? Could you change the Allrun to run decomposePar -cellDist? Then if it fails we can then use the 0/cellDist field to do a manual decomposition to get an identical case and hopefully reliably reproduce the error. If you manage this, then please upload the 0/cellDist file. |
|
cellDist (87,815 bytes)
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: dev | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object cellDist; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 0 0 0 0]; internalField nonuniform List<scalar> 32256 ( 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 27 27 27 27 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 27 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 21 21 21 21 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 21 21 21 21 21 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 20 20 20 20 20 20 20 20 20 20 20 20 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 22 22 22 20 20 21 21 21 21 21 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 23 23 23 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 23 23 23 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 23 23 23 20 20 20 20 20 20 20 20 20 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 20 20 20 20 20 20 20 20 20 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 20 20 20 20 20 20 20 20 20 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 20 20 20 20 20 20 20 20 20 20 20 20 6 6 6 6 6 6 6 6 6 6 6 6 20 20 20 20 20 20 20 20 20 20 20 20 6 6 6 6 6 6 6 6 6 6 6 6 20 20 20 20 20 20 20 20 20 20 20 20 6 6 6 6 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 6 6 6 6 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 0 0 0 0 0 0 0 0 0 0 6 6 6 6 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 6 6 6 6 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 27 27 27 27 27 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 6 6 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 6 6 6 6 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 2 2 2 2 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 14 14 14 14 14 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 14 14 14 14 14 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 14 14 14 14 14 2 2 2 2 3 3 3 3 3 3 3 3 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 2 2 2 2 23 23 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 23 23 23 23 23 23 23 23 23 23 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 14 14 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 14 14 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 4 4 4 4 4 4 4 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 22 22 22 22 22 22 22 22 22 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 23 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 23 23 23 23 23 23 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 2 2 2 2 23 23 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 11 11 11 11 11 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 24 24 24 24 24 24 24 24 24 24 24 24 24 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 16 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 16 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 25 25 25 25 25 25 25 25 25 25 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 16 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 2 2 2 2 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 2 2 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 16 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 16 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 11 11 11 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 16 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 16 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 11 11 11 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 3 3 3 3 3 3 3 3 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 16 16 16 16 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 16 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 16 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 11 11 11 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 29 29 14 14 14 14 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 17 17 17 17 31 31 31 31 31 31 31 31 31 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 16 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 11 11 11 29 29 29 29 29 29 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 11 11 11 11 11 11 11 11 11 11 11 11 11 11 29 29 14 14 14 14 18 18 18 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 8 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 11 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 17 31 31 31 31 31 31 31 31 31 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 16 16 16 17 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 16 16 16 16 16 16 16 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 11 11 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 18 18 12 12 12 12 12 12 12 12 12 11 11 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 11 11 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 11 11 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 11 11 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 16 16 16 16 16 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 31 28 28 28 28 28 28 28 28 28 16 16 16 16 16 16 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 8 8 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 30 30 28 28 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 28 28 28 28 28 28 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 29 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 31 31 31 29 29 29 29 29 29 29 29 29 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 31 31 31 31 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 8 8 8 8 8 8 8 8 8 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 8 8 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 15 15 15 15 15 15 15 15 13 13 13 13 13 13 13 13 13 13 ) ; boundaryField { atmosphere { type calculated; value uniform 0; } walls { type calculated; value uniform 0; } } // ************************************************************************* // |
|
Done. Here is a link to the entire run with the logs: https://drive.google.com/file/d/0ByVQEnByzivXOHF3R3Z6Q1UxSGs/view?usp=sharing I got the same error with openmpi in a different system. |
|
I can't reproduce it, even with the same exact decomposition. I may just be clutching at straws, but if you put the following in the controlDict, does it still crash? OptimisationSwitches { commsType blocking; } |
|
I tried and a whole lot of stuff, like increasing MPI buffer with blocking comms, floatTransfers change, enabling and disabling tree comms, different compilers and MPI implementations, etc. In all these runs, I realized that the crash never happened with a single node, always with multiple nodes. However, it doesnt make sense to me that the problem is related with the interconnection and also I got the error in different systems. Do have any chance to run this on a cluster? Based on the printStack above and the error, can you have an idea and describe it on what the system is doing at that point? Thanks for all your help |
|
I can't tell just from the stack, no. The stack only tells us where the failure is happening. The code is doing a syncEdgeList, as you rightly figured out. This in turn requires some point data to be communicated, and it's during this that the failure actually happens. Why the failure happens, I don't know. Yes, we have got a little multi-node machine. I'll try running on it tomorrow. |
|
|
|
Looks like something is modifying an edge/face and that change isn't synchronised correctly so one of the processor patches has less faces/edges than its opposite number - this will cause an error when trying to find out connected points by walking through the processor faces. Attached is a version of dev interDyMFoam which has been compiled with FULLDEBUG and has some additional code to prevent protected cells (even though there probably aren't any in your case). Might at least give you a better backtrace. |
|
I've now tried it on 36 cores over 6 nodes, and it runs to completion. |
|
I think you're on your own. If you are willing, try a full debug build*, and turn on debug switches for globalPoints and globalMeshData. *i.e., put the line "export WM_COMPILE_OPTION=Debug" in your bashrc, then do a full clean and rebuild. |
|
Hi, quick question, any particular reason why multiple routine (fvMeshDistribute::distribute, etc ) force the use of nonBlocking comms by using, for instance, PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking)? Thank you |
|
In the report you say you are using "dev", but the messages suggest "2.4.x". Which version are you using? |
|
I tested both of them, the behavior was similar. I figured that this happened much more frequently with a particular cluster system with high number of nodes, which makes it harder to reproduce. |
|
The full case you put on google drive shows that you are using dev, but the commit hash in the logs (793a111bdfb7) doesn't match with anything in foundation dev. Are you using a different fork and/or have you made any changes to the code yourself? |
|
@robertoribeiro: Please re-open this report when you have some time to look further into this, given that you haven't answered to Will's question yet. |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-04-11 20:37 | robertoribeiro | New Issue | |
2017-04-11 20:51 | henry | Priority | high => normal |
2017-05-03 19:25 | robertoribeiro | Note Added: 0008077 | |
2017-05-03 19:44 | robertoribeiro | Note Added: 0008078 | |
2017-05-04 09:27 | will | Note Added: 0008081 | |
2017-05-04 15:08 | robertoribeiro | File Added: cellDist | |
2017-05-04 15:16 | robertoribeiro | Note Added: 0008086 | |
2017-05-04 17:31 | will | Note Added: 0008092 | |
2017-05-04 17:32 | will | Note Edited: 0008092 | |
2017-05-04 17:55 | robertoribeiro | Note Added: 0008093 | |
2017-05-04 18:19 | will | Note Added: 0008094 | |
2017-05-05 10:06 | MattijsJ | File Added: interDyMFoam_debug.tgz | |
2017-05-05 10:13 | MattijsJ | Note Added: 0008099 | |
2017-05-05 14:41 | will | Note Added: 0008101 | |
2017-05-05 14:59 | will | Note Added: 0008102 | |
2017-05-12 18:40 | robertoribeiro | Note Added: 0008146 | |
2017-06-01 08:36 | chris | Note Added: 0008200 | |
2017-06-01 11:39 | robertoribeiro | Note Added: 0008202 | |
2017-06-01 11:55 | will | Note Added: 0008203 | |
2017-09-02 17:04 | wyldckat | Assigned To | => will |
2017-09-02 17:04 | wyldckat | Status | new => closed |
2017-09-02 17:04 | wyldckat | Resolution | open => no change required |
2017-09-02 17:04 | wyldckat | Note Added: 0008673 |