/******************************************************************************* * Copyright 2004-2018 Intel Corporation. * * This software and the related documents are Intel copyrighted materials, and * your use of them is governed by the express license under which they were * provided to you (License). Unless the License provides otherwise, you may not * use, modify, copy, publish, distribute, disclose or transmit this software or * the related documents without Intel's prior written permission. * * This software and the related documents are provided as is, with no express * or implied warranties, other than those that are expressly stated in the * License. *******************************************************************************/ /* * Content : Intel(R) MKL PARDISO C example * ******************************************************************************** */ /* -------------------------------------------------------------------- */ /* Example program to show the use of the "PARDISO" routine */ /* on symmetric linear systems */ /* -------------------------------------------------------------------- */ /* This program can be downloaded from the following site: */ /* www.pardiso-project.org */ /* */ /* (C) Olaf Schenk, Department of Computer Science, */ /* University of Basel, Switzerland. */ /* Email: olaf.schenk@unibas.ch */ /* gcc -m64 -w -I"/nfs/optimi/usr/sw/intel-2019/compilers_and_libraries_2019.0.117/linux/mkl/include" \ pardiso_sym_c.c -Wl,--start-group \ "/nfs/optimi/usr/sw/intel-2019/compilers_and_libraries_2019.0.117/linux/mkl/lib/intel64/libmkl_intel_lp64.a" \ "/nfs/optimi/usr/sw/intel-2019/compilers_and_libraries_2019.0.117/linux/mkl/lib/intel64/libmkl_gnu_thread.a" \ "/nfs/optimi/usr/sw/intel-2019/compilers_and_libraries_2019.0.117/linux/mkl/lib/intel64/libmkl_core.a" \ -Wl,--end-group -L"/nfs/optimi/usr/sw/intel-2019/compilers_and_libraries_2019.0.117/linux/mkl/../compiler/lib/intel64" -liomp5 -lpthread -lm -ldl */ /* -------------------------------------------------------------------- */ #include #include #include #include "mkl_pardiso.h" #include "mkl_types.h" MKL_INT main (void) { /* Internal solver memory pointer pt, */ /* 32-bit: int pt[64]; 64-bit: long int pt[64] */ /* or void *pt[64] should be OK on both architectures */ void *pt[64]; /* Pardiso control parameters. */ MKL_INT maxfct, mnum, phase, error, msglvl; /* Auxiliary variables. */ MKL_INT i; double ddum; /* Double dummy */ MKL_INT idum; /* Integer dummy. */ /* -------------------------------------------------------------------- */ /* .. Setup Pardiso control parameters. */ /* -------------------------------------------------------------------- */ maxfct = 1; mnum = 1; msglvl = 0; MKL_INT nrhs = 1; /* the matrix used */ MKL_INT mtype = -2; MKL_INT n = 2038; double a[4824] = {1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -0.0451596, 1, 1, 1, 1, 1, 1, -0.0463704, 1, 1, 1, 1, 1, 1, -0.0214765, 1, 1, 1, 1, 1, 1, -0.0416383, 1, 1, 1, 1, 1, 1, -0.0486147, 1, 1, 1, 1, 1, 1, -0.0233058, 1, 1, 1, 1, 1, 1, -0.024338, 1, 1, 1, 1, 1, 1, -0.0433198, 1, 1, 1, 1, 1, 1, -0.0240349, 1, 1, 1, 1, 1, 1, -0.0448148, 1, 1, 1, 1, 1, 1, -0.0230147, 1, 1, 1, 1, 1, 1, -0.0239536, 1, 1, 1, 1, 1, 1, -1, 0.566305, 1, 1, -1, 0.765711, 1, 1, -1, 0.773045, 1, 1, -1, 0.613519, 1, 1, 0.566305, -1, 1, 1, -1, 0.660342, 1, 1, -1, 0.695226, 1, 1, -1, 0.807054, 1, 1, -1, 0.683875, 1, 1, -1, 0.830525, 1, 1, -1, 0.778537, 1, 1, -1, 0.86915, 1, 1, -1, 0.734956, 1, 1, -1, 0.96655, 1, 1, 0.765711, -1, 1, 1, 0.660342, -1, 1, 1, -1, 0.96853, 1, 1, -1, 0.784691, 1, 1, -1, 0.786113, 1, 1, 0.830525, -1, 1, 1, -1, 0.919692, 1, 1, -1, 0.816486, 1, 1, -1, 0.816462, 1, 1, -1, 0.835949, 1, 1, 0.778537, -1, 1, 1, 0.919692, -1, 1, 1, -1, 0.868361, 1, 1, -1, 0.823607, 1, 1, -1, 0.776114, 1, 1, 0.773045, -1, 1, 1, 0.695226, -1, 1, 1, 0.96853, -1, 1, 1, -1, 0.748346, 1, 1, -1, 0.784551, 1, 1, 0.807054, -1, 1, 1, -1, 0.794388, 1, 1, -1, 0.809491, 1, 1, -1, 0.757728, 1, 1, 0.613519, -1, 1, 1, 0.784691, -1, 1, 1, 0.816486, -1, 1, 1, 0.868361, -1, 1, 1, 0.748346, -1, 1, 1, 0.683875, -1, 1, 1, 0.86915, -1, 1, 1, 0.786113, -1, 1, 1, 0.816462, -1, 1, 1, 0.823607, -1, 1, 1, 0.784551, -1, 1, 1, 0.794388, -1, 1, 1, -1, 0.686617, 1, 1, -1, 0.879525, 1, 1, 0.734956, -1, 1, 1, 0.809491, -1, 1, 1, 0.686617, -1, 1, 1, -1, 0.758372, 1, 1, 0.96655, -1, 1, 1, 0.835949, -1, 1, 1, 0.776114, -1, 1, 1, 0.757728, -1, 1, 1, 0.879525, -1, 1, 1, 0.758372, -1, 1, 1, -1, 0.570795, 1, 1, -1, 0.788108, 1, 1, -1, 0.785029, 1, 1, -1, 0.626666, 1, 1, 0.570795, -1, 1, 1, -1, 0.67917, 1, 1, -1, 0.700631, 1, 1, -1, 0.806149, 1, 1, -1, 0.688798, 1, 1, -1, 0.839331, 1, 1, -1, 0.79878, 1, 1, -1, 0.880744, 1, 1, -1, 0.731325, 1, 1, -1, 0.966397, 1, 1, 0.788108, -1, 1, 1, 0.67917, -1, 1, 1, -1, 0.984442, 1, 1, -1, 0.779707, 1, 1, -1, 0.776209, 1, 1, 0.839331, -1, 1, 1, -1, 0.915529, 1, 1, -1, 0.818858, 1, 1, -1, 0.833105, 1, 1, -1, 0.842864, 1, 1, 0.79878, -1, 1, 1, 0.915529, -1, 1, 1, -1, 0.886656, 1, 1, -1, 0.839451, 1, 1, -1, 0.767222, 1, 1, 0.785029, -1, 1, 1, 0.700631, -1, 1, 1, 0.984442, -1, 1, 1, -1, 0.761563, 1, 1, -1, 0.793041, 1, 1, 0.806149, -1, 1, 1, -1, 0.785122, 1, 1, -1, 0.796329, 1, 1, -1, 0.749242, 1, 1, 0.626666, -1, 1, 1, 0.779707, -1, 1, 1, 0.818858, -1, 1, 1, 0.886656, -1, 1, 1, 0.761563, -1, 1, 1, 0.688798, -1, 1, 1, 0.880744, -1, 1, 1, 0.776209, -1, 1, 1, 0.833105, -1, 1, 1, 0.839451, -1, 1, 1, 0.793041, -1, 1, 1, 0.785122, -1, 1, 1, -1, 0.678378, 1, 1, -1, 0.878016, 1, 1, 0.731325, -1, 1, 1, 0.796329, -1, 1, 1, 0.678378, -1, 1, 1, -1, 0.752101, 1, 1, 0.966397, -1, 1, 1, 0.842864, -1, 1, 1, 0.767222, -1, 1, 1, 0.749242, -1, 1, 1, 0.878016, -1, 1, 1, 0.752101, -1, 1, 1, -1, 0.579012, 1, 1, -1, 0.761502, 1, 1, -1, 0.78353, 1, 1, -1, 0.62294, 1, 1, 0.579012, -1, 1, 1, -1, 0.6547, 1, 1, -1, 0.709276, 1, 1, -1, 0.800444, 1, 1, -1, 0.674967, 1, 1, -1, 0.834655, 1, 1, -1, 0.787217, 1, 1, -1, 0.874971, 1, 1, -1, 0.726131, 1, 1, -1, 0.992713, 1, 1, 0.761502, -1, 1, 1, 0.6547, -1, 1, 1, -1, 0.956366, 1, 1, -1, 0.769933, 1, 1, -1, 0.795087, 1, 1, 0.834655, -1, 1, 1, -1, 0.931358, 1, 1, -1, 0.833359, 1, 1, -1, 0.832967, 1, 1, -1, 0.819036, 1, 1, 0.787217, -1, 1, 1, 0.931358, -1, 1, 1, -1, 0.869336, 1, 1, -1, 0.829817, 1, 1, -1, 0.788443, 1, 1, 0.78353, -1, 1, 1, 0.709276, -1, 1, 1, 0.956366, -1, 1, 1, -1, 0.753468, 1, 1, -1, 0.79913, 1, 1, 0.800444, -1, 1, 1, -1, 0.794589, 1, 1, -1, 0.796888, 1, 1, -1, 0.770917, 1, 1, 0.62294, -1, 1, 1, 0.769933, -1, 1, 1, 0.833359, -1, 1, 1, 0.869336, -1, 1, 1, 0.753468, -1, 1, 1, 0.674967, -1, 1, 1, 0.874971, -1, 1, 1, 0.795087, -1, 1, 1, 0.832967, -1, 1, 1, 0.829817, -1, 1, 1, 0.79913, -1, 1, 1, 0.794589, -1, 1, 1, -1, 0.681793, 1, 1, -1, 0.858281, 1, 1, 0.726131, -1, 1, 1, 0.796888, -1, 1, 1, 0.681793, -1, 1, 1, -1, 0.761854, 1, 1, 0.992713, -1, 1, 1, 0.819036, -1, 1, 1, 0.788443, -1, 1, 1, 0.770917, -1, 1, 1, 0.858281, -1, 1, 1, 0.761854, -1, 1, 1, -1, 0.565036, 1, 1, -1, 0.776194, 1, 1, -1, 0.778573, 1, 1, -1, 0.615783, 1, 1, 0.565036, -1, 1, 1, -1, 0.672424, 1, 1, -1, 0.70227, 1, 1, -1, 0.798701, 1, 1, -1, 0.671367, 1, 1, -1, 0.843205, 1, 1, -1, 0.796255, 1, 1, -1, 0.876108, 1, 1, -1, 0.745004, 1, 1, -1, 0.985687, 1, 1, 0.776194, -1, 1, 1, 0.672424, -1, 1, 1, -1, 0.969378, 1, 1, -1, 0.790596, 1, 1, -1, 0.791851, 1, 1, 0.843205, -1, 1, 1, -1, 0.937472, 1, 1, -1, 0.823358, 1, 1, -1, 0.839989, 1, 1, -1, 0.835957, 1, 1, 0.796255, -1, 1, 1, 0.937472, -1, 1, 1, -1, 0.881104, 1, 1, -1, 0.819302, 1, 1, -1, 0.779478, 1, 1, 0.778573, -1, 1, 1, 0.70227, -1, 1, 1, 0.969378, -1, 1, 1, -1, 0.74162, 1, 1, -1, 0.77987, 1, 1, 0.798701, -1, 1, 1, -1, 0.778504, 1, 1, -1, 0.785282, 1, 1, -1, 0.761072, 1, 1, 0.615783, -1, 1, 1, 0.790596, -1, 1, 1, 0.823358, -1, 1, 1, 0.881104, -1, 1, 1, 0.74162, -1, 1, 1, 0.671367, -1, 1, 1, 0.876108, -1, 1, 1, 0.791851, -1, 1, 1, 0.839989, -1, 1, 1, 0.819302, -1, 1, 1, 0.77987, -1, 1, 1, 0.778504, -1, 1, 1, -1, 0.670547, 1, 1, -1, 0.867457, 1, 1, 0.745004, -1, 1, 1, 0.785282, -1, 1, 1, 0.670547, -1, 1, 1, -1, 0.743454, 1, 1, 0.985687, -1, 1, 1, 0.835957, -1, 1, 1, 0.779478, -1, 1, 1, 0.761072, -1, 1, 1, 0.867457, -1, 1, 1, 0.743454, -1, 1, 1, -1, 0.57605, 1, 1, -1, 0.775874, 1, 1, -1, 0.776645, 1, 1, -1, 0.623482, 1, 1, 0.57605, -1, 1, 1, -1, 0.661758, 1, 1, -1, 0.695309, 1, 1, -1, 0.811931, 1, 1, -1, 0.675195, 1, 1, -1, 0.836902, 1, 1, -1, 0.798008, 1, 1, -1, 0.8717, 1, 1, -1, 0.716916, 1, 1, -1, 0.970335, 1, 1, 0.775874, -1, 1, 1, 0.661758, -1, 1, 1, -1, 0.974467, 1, 1, -1, 0.781483, 1, 1, -1, 0.784423, 1, 1, 0.836902, -1, 1, 1, -1, 0.916624, 1, 1, -1, 0.831043, 1, 1, -1, 0.846726, 1, 1, -1, 0.835498, 1, 1, 0.798008, -1, 1, 1, 0.916624, -1, 1, 1, -1, 0.886912, 1, 1, -1, 0.820407, 1, 1, -1, 0.772092, 1, 1, 0.776645, -1, 1, 1, 0.695309, -1, 1, 1, 0.974467, -1, 1, 1, -1, 0.736418, 1, 1, -1, 0.784821, 1, 1, 0.811931, -1, 1, 1, -1, 0.769014, 1, 1, -1, 0.805813, 1, 1, -1, 0.767257, 1, 1, 0.623482, -1, 1, 1, 0.781483, -1, 1, 1, 0.831043, -1, 1, 1, 0.886912, -1, 1, 1, 0.736418, -1, 1, 1, 0.675195, -1, 1, 1, 0.8717, -1, 1, 1, 0.784423, -1, 1, 1, 0.846726, -1, 1, 1, 0.820407, -1, 1, 1, 0.784821, -1, 1, 1, 0.769014, -1, 1, 1, -1, 0.678874, 1, 1, -1, 0.885836, 1, 1, 0.716916, -1, 1, 1, 0.805813, -1, 1, 1, 0.678874, -1, 1, 1, -1, 0.744093, 1, 1, 0.970335, -1, 1, 1, 0.835498, -1, 1, 1, 0.772092, -1, 1, 1, 0.767257, -1, 1, 1, 0.885836, -1, 1, 1, 0.744093, -1, 1, 1, -1, 0.566044, 1, 1, -1, 0.782056, 1, 1, -1, 0.773429, 1, 1, -1, 0.62623, 1, 1, 0.566044, -1, 1, 1, -1, 0.655034, 1, 1, -1, 0.695083, 1, 1, -1, 0.795757, 1, 1, -1, 0.679669, 1, 1, -1, 0.854202, 1, 1, -1, 0.799405, 1, 1, -1, 0.857312, 1, 1, -1, 0.732941, 1, 1, -1, 0.992515, 1, 1, 0.782056, -1, 1, 1, 0.655034, -1, 1, 1, -1, 0.948397, 1, 1, -1, 0.794768, 1, 1, -1, 0.778846, 1, 1, 0.854202, -1, 1, 1, -1, 0.93473, 1, 1, -1, 0.806613, 1, 1, -1, 0.820122, 1, 1, -1, 0.831229, 1, 1, 0.799405, -1, 1, 1, 0.93473, -1, 1, 1, -1, 0.870869, 1, 1, -1, 0.82706, 1, 1, -1, 0.792124, 1, 1, 0.773429, -1, 1, 1, 0.695083, -1, 1, 1, 0.948397, -1, 1, 1, -1, 0.74442, 1, 1, -1, 0.790525, 1, 1, 0.795757, -1, 1, 1, -1, 0.772736, 1, 1, -1, 0.799883, 1, 1, -1, 0.76265, 1, 1, 0.62623, -1, 1, 1, 0.794768, -1, 1, 1, 0.806613, -1, 1, 1, 0.870869, -1, 1, 1, 0.74442, -1, 1, 1, 0.679669, -1, 1, 1, 0.857312, -1, 1, 1, 0.778846, -1, 1, 1, 0.820122, -1, 1, 1, 0.82706, -1, 1, 1, 0.790525, -1, 1, 1, 0.772736, -1, 1, 1, -1, 0.667294, 1, 1, -1, 0.869743, 1, 1, 0.732941, -1, 1, 1, 0.799883, -1, 1, 1, 0.667294, -1, 1, 1, -1, 0.746495, 1, 1, 0.992515, -1, 1, 1, 0.831229, -1, 1, 1, 0.792124, -1, 1, 1, 0.76265, -1, 1, 1, 0.869743, -1, 1, 1, 0.746495, -1, 1, 1, -1, 0.577181, 1, 1, -1, 0.76349, 1, 1, -1, 0.772306, 1, 1, -1, 0.608309, 1, 1, 0.577181, -1, 1, 1, -1, 0.679036, 1, 1, -1, 0.693635, 1, 1, -1, 0.818913, 1, 1, -1, 0.676997, 1, 1, -1, 0.857454, 1, 1, -1, 0.799787, 1, 1, -1, 0.880282, 1, 1, -1, 0.735309, 1, 1, -1, 0.974651, 1, 1, 0.76349, -1, 1, 1, 0.679036, -1, 1, 1, -1, 0.954659, 1, 1, -1, 0.783433, 1, 1, -1, 0.789827, 1, 1, 0.857454, -1, 1, 1, -1, 0.931336, 1, 1, -1, 0.820523, 1, 1, -1, 0.830258, 1, 1, -1, 0.814954, 1, 1, 0.799787, -1, 1, 1, 0.931336, -1, 1, 1, -1, 0.899119, 1, 1, -1, 0.810386, 1, 1, -1, 0.774018, 1, 1, 0.772306, -1, 1, 1, 0.693635, -1, 1, 1, 0.954659, -1, 1, 1, -1, 0.746253, 1, 1, -1, 0.797401, 1, 1, 0.818913, -1, 1, 1, -1, 0.779955, 1, 1, -1, 0.80959, 1, 1, -1, 0.769913, 1, 1, 0.608309, -1, 1, 1, 0.783433, -1, 1, 1, 0.820523, -1, 1, 1, 0.899119, -1, 1, 1, 0.746253, -1, 1, 1, 0.676997, -1, 1, 1, 0.880282, -1, 1, 1, 0.789827, -1, 1, 1, 0.830258, -1, 1, 1, 0.810386, -1, 1, 1, 0.797401, -1, 1, 1, 0.779955, -1, 1, 1, -1, 0.679645, 1, 1, -1, 0.870228, 1, 1, 0.735309, -1, 1, 1, 0.80959, -1, 1, 1, 0.679645, -1, 1, 1, -1, 0.752807, 1, 1, 0.974651, -1, 1, 1, 0.814954, -1, 1, 1, 0.774018, -1, 1, 1, 0.769913, -1, 1, 1, 0.870228, -1, 1, 1, 0.752807, -1, 1, 1, -1, 0.580613, 1, 1, -1, 0.789851, 1, 1, -1, 0.775621, 1, 1, -1, 0.618553, 1, 1, 0.580613, -1, 1, 1, -1, 0.670382, 1, 1, -1, 0.707316, 1, 1, -1, 0.805408, 1, 1, -1, 0.670465, 1, 1, -1, 0.85734, 1, 1, -1, 0.79739, 1, 1, -1, 0.869424, 1, 1, -1, 0.73162, 1, 1, -1, 0.973912, 1, 1, 0.789851, -1, 1, 1, 0.670382, -1, 1, 1, -1, 0.94823, 1, 1, -1, 0.793108, 1, 1, -1, 0.802149, 1, 1, 0.85734, -1, 1, 1, -1, 0.917546, 1, 1, -1, 0.828914, 1, 1, -1, 0.816907, 1, 1, -1, 0.825347, 1, 1, 0.79739, -1, 1, 1, 0.917546, -1, 1, 1, -1, 0.884083, 1, 1, -1, 0.832478, 1, 1, -1, 0.769821, 1, 1, 0.775621, -1, 1, 1, 0.707316, -1, 1, 1, 0.94823, -1, 1, 1, -1, 0.740139, 1, 1, -1, 0.796991, 1, 1, 0.805408, -1, 1, 1, -1, 0.768563, 1, 1, -1, 0.78602, 1, 1, -1, 0.7521, 1, 1, 0.618553, -1, 1, 1, 0.793108, -1, 1, 1, 0.828914, -1, 1, 1, 0.884083, -1, 1, 1, 0.740139, -1, 1, 1, 0.670465, -1, 1, 1, 0.869424, -1, 1, 1, 0.802149, -1, 1, 1, 0.816907, -1, 1, 1, 0.832478, -1, 1, 1, 0.796991, -1, 1, 1, 0.768563, -1, 1, 1, -1, 0.670166, 1, 1, -1, 0.868974, 1, 1, 0.73162, -1, 1, 1, 0.78602, -1, 1, 1, 0.670166, -1, 1, 1, -1, 0.741282, 1, 1, 0.973912, -1, 1, 1, 0.825347, -1, 1, 1, 0.769821, -1, 1, 1, 0.7521, -1, 1, 1, 0.868974, -1, 1, 1, 0.741282, -1, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -10000, 1, 1, -0.995903, 1, 1, -0.99504, 1, 1, -0.9984, 1, 1, -0.991901, 1, 1, -0.990367, 1, 1, -0.996287, 1, 1, -0.99212, 1, 1, -0.996418, 1, 1, -0.991478, 1, 1, -0.999447, 1, 1, -0.994641, 1, 1, -0.996903, 1, 1, 1, -0.995903, 1, 1, 1, -0.99504, 1, 1, 1, -0.9984, 1, 1, 1, -0.991901, 1, 1, 1, -0.990367, 1, 1, 1, -0.996287, 1, 1, 1, -0.99212, 1, 1, 1, -0.996418, 1, 1, 1, -0.991478, 1, 1, 1, -0.999447, 1, 1, 1, -0.994641, 1, 1, 1, -0.996903, 1, 1, 1, -0.995903, 1, 1, 1, -0.99504, 1, 1, 1, -0.9984, 1, 1, 1, -0.991901, 1, 1, 1, -0.990367, 1, 1, 1, -0.996287, 1, 1, 1, -0.99212, 1, 1, 1, -0.996418, 1, 1, 1, -0.991478, 1, 1, 1, -0.999447, 1, 1, 1, -0.994641, 1, 1, 1, -0.996903, 1, 1, 1, -0.995903, 1, 1, 1, -0.99504, 1, 1, 1, -0.9984, 1, 1, 1, -0.991901, 1, 1, 1, -0.990367, 1, 1, 1, -0.996287, 1, 1, 1, -0.99212, 1, 1, 1, -0.996418, 1, 1, 1, -0.991478, 1, 1, 1, -0.999447, 1, 1, 1, -0.994641, 1, 1, 1, -0.996903, 1, 1, 1, -0.995903, 1, 1, 1, -0.99504, 1, 1, 1, -0.9984, 1, 1, 1, -0.991901, 1, 1, 1, -0.990367, 1, 1, 1, -0.996287, 1, 1, 1, -0.99212, 1, 1, 1, -0.996418, 1, 1, 1, -0.991478, 1, 1, 1, -0.999447, 1, 1, 1, -0.994641, 1, 1, 1, -0.996903, 1, 1, 1, -0.995903, 1, 1, 1, -0.99504, 1, 1, 1, -0.9984, 1, 1, 1, -0.991901, 1, 1, 1, -0.990367, 1, 1, 1, -0.996287, 1, 1, 1, -0.99212, 1, 1, 1, -0.996418, 1, 1, 1, -0.991478, 1, 1, 1, -0.999447, 1, 1, 1, -0.994641, 1, 1, 1, -0.996903, 1, 1, 1, -0.995903, 1, 1, 1, -0.99504, 1, 1, 1, -0.9984, 1, 1, 1, -0.991901, 1, 1, 1, -0.990367, 1, 1, 1, -0.996287, 1, 1, 1, -0.99212, 1, 1, 1, -0.996418, 1, 1, 1, -0.991478, 1, 1, 1, -0.999447, 1, 1, 1, -0.994641, 1, 1, 1, -0.996903, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, -0.880036, -1, 2, -0.885704, -1, 2, -0.892085, -1, 2, -0.892378, -1, 2, -0.895238, -1, 2, -0.894748, -1, 2, -0.898062, -1, 2, -0.894092, -1, 2, -0.889307, -1, 2, -0.890657, -1, 2, -0.897427, -1, 2, -0.892459, -1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 2, 1.10545, 1, 2, 1.11817, 1, 2, 1.11764, 1, 2, 1.12227, 1, 2, 1.10215, 1, 2, 1.11125, 1, 2, 1.10664, 1, 2, 1.12125, 1, 2, 1.11949, 1, 2, 1.10462, 1, 2, 1.1033, 1, 2, 1.11256, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; MKL_INT ja[4824] = {1, 1074, 1159, 1255, 2, 1159, 1256, 3, 1074, 1160, 1257, 4, 1160, 1258, 5, 1074, 1161, 1259, 6, 1161, 1260, 7, 1074, 1162, 1261, 8, 1162, 1262, 9, 1074, 1163, 1263, 10, 1163, 1264, 11, 1074, 1164, 1265, 12, 1164, 1266, 13, 1074, 1165, 1267, 14, 1165, 1268, 15, 1074, 1166, 1269, 16, 1166, 1270, 17, 1074, 1167, 1271, 18, 1167, 1272, 19, 1074, 1168, 1273, 20, 1168, 1274, 21, 1074, 1169, 1275, 22, 1169, 1276, 23, 1074, 1170, 1277, 24, 1170, 1278, 25, 1074, 1171, 1279, 26, 1171, 1280, 27, 1074, 1172, 1281, 28, 1172, 1282, 29, 1074, 1173, 1283, 30, 1173, 1284, 31, 1074, 1174, 1285, 32, 1174, 1286, 33, 1074, 1175, 1287, 34, 1175, 1288, 35, 1074, 1176, 1289, 36, 1176, 1290, 37, 1074, 1177, 1291, 38, 1177, 1292, 39, 1074, 1178, 1293, 40, 1178, 1294, 41, 1074, 1179, 1295, 42, 1179, 1296, 43, 1074, 1180, 1297, 44, 1180, 1298, 45, 1074, 1181, 1299, 46, 1181, 1300, 47, 1074, 1182, 1301, 48, 1182, 1302, 49, 1074, 1183, 1303, 50, 1183, 1304, 51, 1074, 1184, 1305, 52, 1184, 1306, 53, 1074, 1185, 1307, 54, 1185, 1308, 55, 1074, 1186, 1309, 56, 1186, 1310, 57, 1074, 1187, 1311, 58, 1187, 1312, 59, 1074, 1188, 1313, 60, 1188, 1314, 61, 1074, 1189, 1315, 62, 1189, 1316, 63, 1074, 1190, 1317, 64, 1190, 1318, 65, 1074, 1191, 1319, 66, 1191, 1320, 67, 1074, 1192, 1321, 68, 1192, 1322, 69, 1074, 1193, 1323, 70, 1193, 1324, 71, 1074, 1194, 1325, 72, 1194, 1326, 73, 1074, 1195, 1327, 74, 1195, 1328, 75, 1074, 1196, 1329, 76, 1196, 1330, 77, 1074, 1197, 1331, 78, 1197, 1332, 79, 1074, 1198, 1333, 80, 1198, 1334, 81, 1074, 1199, 1335, 82, 1199, 1336, 83, 1074, 1200, 1337, 84, 1200, 1338, 85, 1074, 1201, 1339, 86, 1201, 1340, 87, 1074, 1202, 1341, 88, 1202, 1342, 89, 1074, 1203, 1343, 90, 1203, 1344, 91, 1074, 1204, 1345, 92, 1204, 1346, 93, 1074, 1205, 1347, 94, 1205, 1348, 95, 1074, 1206, 1349, 96, 1206, 1350, 97, 1074, 1207, 1351, 98, 1207, 1352, 99, 1074, 1208, 1353, 100, 1208, 1354, 101, 1074, 1209, 1355, 102, 1209, 1356, 103, 1074, 1210, 1357, 104, 1210, 1358, 105, 1074, 1211, 1359, 106, 1211, 1360, 107, 1074, 1212, 1361, 108, 1212, 1362, 109, 1074, 1213, 1363, 110, 1213, 1364, 111, 1074, 1214, 1365, 112, 1214, 1366, 113, 1074, 1215, 1367, 114, 1215, 1368, 115, 1074, 1216, 1369, 116, 1216, 1370, 117, 1074, 1217, 1371, 118, 1217, 1372, 119, 1074, 1218, 1373, 120, 1218, 1374, 121, 1074, 1219, 1375, 122, 1219, 1376, 123, 1074, 1220, 1377, 124, 1220, 1378, 125, 1074, 1221, 1379, 126, 1221, 1380, 127, 1074, 1222, 1381, 128, 1222, 1382, 129, 1074, 1223, 1383, 130, 1223, 1384, 131, 1074, 1224, 1385, 132, 1224, 1386, 133, 1074, 1225, 1387, 134, 1225, 1388, 135, 1074, 1226, 1389, 136, 1226, 1390, 137, 1074, 1227, 1391, 138, 1227, 1392, 139, 1074, 1228, 1393, 140, 1228, 1394, 141, 1074, 1229, 1395, 142, 1229, 1396, 143, 1074, 1230, 1397, 144, 1230, 1398, 145, 1074, 1231, 1399, 146, 1231, 1400, 147, 1074, 1232, 1401, 148, 1232, 1402, 149, 1074, 1233, 1403, 150, 1233, 1404, 151, 1074, 1234, 1405, 152, 1234, 1406, 153, 1074, 1235, 1407, 154, 1235, 1408, 155, 1074, 1236, 1409, 156, 1236, 1410, 157, 1074, 1237, 1411, 158, 1237, 1412, 159, 1074, 1238, 1413, 160, 1238, 1414, 161, 1074, 1239, 1415, 162, 1239, 1416, 163, 1074, 1240, 1417, 164, 1240, 1418, 165, 1074, 1241, 1419, 166, 1241, 1420, 167, 1074, 1242, 1421, 168, 1242, 1422, 169, 1074, 1243, 1423, 170, 1243, 1424, 171, 1074, 1244, 1425, 172, 1244, 1426, 173, 1074, 1245, 1427, 174, 1245, 1428, 175, 1074, 1246, 1429, 176, 1246, 1430, 177, 1074, 1247, 1431, 178, 1247, 1432, 179, 1074, 1248, 1433, 180, 1248, 1434, 181, 1074, 1249, 1435, 182, 1249, 1436, 183, 1074, 1250, 1437, 184, 1250, 1438, 185, 1074, 1251, 1439, 186, 1251, 1440, 187, 1074, 1252, 1441, 188, 1252, 1442, 189, 1074, 1253, 1443, 190, 1253, 1444, 191, 1074, 1254, 1445, 192, 1254, 1446, 193, 1159, 1160, 1543, 194, 1159, 1162, 1544, 195, 1159, 1165, 1545, 196, 1159, 1167, 1546, 197, 1159, 1160, 1547, 198, 1160, 1162, 1548, 199, 1160, 1165, 1549, 200, 1160, 1166, 1550, 201, 1160, 1168, 1551, 202, 1161, 1163, 1552, 203, 1161, 1164, 1553, 204, 1161, 1168, 1554, 205, 1161, 1169, 1555, 206, 1161, 1170, 1556, 207, 1159, 1162, 1557, 208, 1160, 1162, 1558, 209, 1162, 1165, 1559, 210, 1162, 1167, 1560, 211, 1162, 1168, 1561, 212, 1161, 1163, 1562, 213, 1163, 1164, 1563, 214, 1163, 1167, 1564, 215, 1163, 1168, 1565, 216, 1163, 1170, 1566, 217, 1161, 1164, 1567, 218, 1163, 1164, 1568, 219, 1164, 1167, 1569, 220, 1164, 1168, 1570, 221, 1164, 1170, 1571, 222, 1159, 1165, 1572, 223, 1160, 1165, 1573, 224, 1162, 1165, 1574, 225, 1165, 1167, 1575, 226, 1165, 1168, 1576, 227, 1160, 1166, 1577, 228, 1166, 1168, 1578, 229, 1166, 1169, 1579, 230, 1166, 1170, 1580, 231, 1159, 1167, 1581, 232, 1162, 1167, 1582, 233, 1163, 1167, 1583, 234, 1164, 1167, 1584, 235, 1165, 1167, 1585, 236, 1160, 1168, 1586, 237, 1161, 1168, 1587, 238, 1162, 1168, 1588, 239, 1163, 1168, 1589, 240, 1164, 1168, 1590, 241, 1165, 1168, 1591, 242, 1166, 1168, 1592, 243, 1168, 1169, 1593, 244, 1168, 1170, 1594, 245, 1161, 1169, 1595, 246, 1166, 1169, 1596, 247, 1168, 1169, 1597, 248, 1169, 1170, 1598, 249, 1161, 1170, 1599, 250, 1163, 1170, 1600, 251, 1164, 1170, 1601, 252, 1166, 1170, 1602, 253, 1168, 1170, 1603, 254, 1169, 1170, 1604, 255, 1171, 1172, 1605, 256, 1171, 1174, 1606, 257, 1171, 1177, 1607, 258, 1171, 1179, 1608, 259, 1171, 1172, 1609, 260, 1172, 1174, 1610, 261, 1172, 1177, 1611, 262, 1172, 1178, 1612, 263, 1172, 1180, 1613, 264, 1173, 1175, 1614, 265, 1173, 1176, 1615, 266, 1173, 1180, 1616, 267, 1173, 1181, 1617, 268, 1173, 1182, 1618, 269, 1171, 1174, 1619, 270, 1172, 1174, 1620, 271, 1174, 1177, 1621, 272, 1174, 1179, 1622, 273, 1174, 1180, 1623, 274, 1173, 1175, 1624, 275, 1175, 1176, 1625, 276, 1175, 1179, 1626, 277, 1175, 1180, 1627, 278, 1175, 1182, 1628, 279, 1173, 1176, 1629, 280, 1175, 1176, 1630, 281, 1176, 1179, 1631, 282, 1176, 1180, 1632, 283, 1176, 1182, 1633, 284, 1171, 1177, 1634, 285, 1172, 1177, 1635, 286, 1174, 1177, 1636, 287, 1177, 1179, 1637, 288, 1177, 1180, 1638, 289, 1172, 1178, 1639, 290, 1178, 1180, 1640, 291, 1178, 1181, 1641, 292, 1178, 1182, 1642, 293, 1171, 1179, 1643, 294, 1174, 1179, 1644, 295, 1175, 1179, 1645, 296, 1176, 1179, 1646, 297, 1177, 1179, 1647, 298, 1172, 1180, 1648, 299, 1173, 1180, 1649, 300, 1174, 1180, 1650, 301, 1175, 1180, 1651, 302, 1176, 1180, 1652, 303, 1177, 1180, 1653, 304, 1178, 1180, 1654, 305, 1180, 1181, 1655, 306, 1180, 1182, 1656, 307, 1173, 1181, 1657, 308, 1178, 1181, 1658, 309, 1180, 1181, 1659, 310, 1181, 1182, 1660, 311, 1173, 1182, 1661, 312, 1175, 1182, 1662, 313, 1176, 1182, 1663, 314, 1178, 1182, 1664, 315, 1180, 1182, 1665, 316, 1181, 1182, 1666, 317, 1183, 1184, 1667, 318, 1183, 1186, 1668, 319, 1183, 1189, 1669, 320, 1183, 1191, 1670, 321, 1183, 1184, 1671, 322, 1184, 1186, 1672, 323, 1184, 1189, 1673, 324, 1184, 1190, 1674, 325, 1184, 1192, 1675, 326, 1185, 1187, 1676, 327, 1185, 1188, 1677, 328, 1185, 1192, 1678, 329, 1185, 1193, 1679, 330, 1185, 1194, 1680, 331, 1183, 1186, 1681, 332, 1184, 1186, 1682, 333, 1186, 1189, 1683, 334, 1186, 1191, 1684, 335, 1186, 1192, 1685, 336, 1185, 1187, 1686, 337, 1187, 1188, 1687, 338, 1187, 1191, 1688, 339, 1187, 1192, 1689, 340, 1187, 1194, 1690, 341, 1185, 1188, 1691, 342, 1187, 1188, 1692, 343, 1188, 1191, 1693, 344, 1188, 1192, 1694, 345, 1188, 1194, 1695, 346, 1183, 1189, 1696, 347, 1184, 1189, 1697, 348, 1186, 1189, 1698, 349, 1189, 1191, 1699, 350, 1189, 1192, 1700, 351, 1184, 1190, 1701, 352, 1190, 1192, 1702, 353, 1190, 1193, 1703, 354, 1190, 1194, 1704, 355, 1183, 1191, 1705, 356, 1186, 1191, 1706, 357, 1187, 1191, 1707, 358, 1188, 1191, 1708, 359, 1189, 1191, 1709, 360, 1184, 1192, 1710, 361, 1185, 1192, 1711, 362, 1186, 1192, 1712, 363, 1187, 1192, 1713, 364, 1188, 1192, 1714, 365, 1189, 1192, 1715, 366, 1190, 1192, 1716, 367, 1192, 1193, 1717, 368, 1192, 1194, 1718, 369, 1185, 1193, 1719, 370, 1190, 1193, 1720, 371, 1192, 1193, 1721, 372, 1193, 1194, 1722, 373, 1185, 1194, 1723, 374, 1187, 1194, 1724, 375, 1188, 1194, 1725, 376, 1190, 1194, 1726, 377, 1192, 1194, 1727, 378, 1193, 1194, 1728, 379, 1195, 1196, 1729, 380, 1195, 1198, 1730, 381, 1195, 1201, 1731, 382, 1195, 1203, 1732, 383, 1195, 1196, 1733, 384, 1196, 1198, 1734, 385, 1196, 1201, 1735, 386, 1196, 1202, 1736, 387, 1196, 1204, 1737, 388, 1197, 1199, 1738, 389, 1197, 1200, 1739, 390, 1197, 1204, 1740, 391, 1197, 1205, 1741, 392, 1197, 1206, 1742, 393, 1195, 1198, 1743, 394, 1196, 1198, 1744, 395, 1198, 1201, 1745, 396, 1198, 1203, 1746, 397, 1198, 1204, 1747, 398, 1197, 1199, 1748, 399, 1199, 1200, 1749, 400, 1199, 1203, 1750, 401, 1199, 1204, 1751, 402, 1199, 1206, 1752, 403, 1197, 1200, 1753, 404, 1199, 1200, 1754, 405, 1200, 1203, 1755, 406, 1200, 1204, 1756, 407, 1200, 1206, 1757, 408, 1195, 1201, 1758, 409, 1196, 1201, 1759, 410, 1198, 1201, 1760, 411, 1201, 1203, 1761, 412, 1201, 1204, 1762, 413, 1196, 1202, 1763, 414, 1202, 1204, 1764, 415, 1202, 1205, 1765, 416, 1202, 1206, 1766, 417, 1195, 1203, 1767, 418, 1198, 1203, 1768, 419, 1199, 1203, 1769, 420, 1200, 1203, 1770, 421, 1201, 1203, 1771, 422, 1196, 1204, 1772, 423, 1197, 1204, 1773, 424, 1198, 1204, 1774, 425, 1199, 1204, 1775, 426, 1200, 1204, 1776, 427, 1201, 1204, 1777, 428, 1202, 1204, 1778, 429, 1204, 1205, 1779, 430, 1204, 1206, 1780, 431, 1197, 1205, 1781, 432, 1202, 1205, 1782, 433, 1204, 1205, 1783, 434, 1205, 1206, 1784, 435, 1197, 1206, 1785, 436, 1199, 1206, 1786, 437, 1200, 1206, 1787, 438, 1202, 1206, 1788, 439, 1204, 1206, 1789, 440, 1205, 1206, 1790, 441, 1207, 1208, 1791, 442, 1207, 1210, 1792, 443, 1207, 1213, 1793, 444, 1207, 1215, 1794, 445, 1207, 1208, 1795, 446, 1208, 1210, 1796, 447, 1208, 1213, 1797, 448, 1208, 1214, 1798, 449, 1208, 1216, 1799, 450, 1209, 1211, 1800, 451, 1209, 1212, 1801, 452, 1209, 1216, 1802, 453, 1209, 1217, 1803, 454, 1209, 1218, 1804, 455, 1207, 1210, 1805, 456, 1208, 1210, 1806, 457, 1210, 1213, 1807, 458, 1210, 1215, 1808, 459, 1210, 1216, 1809, 460, 1209, 1211, 1810, 461, 1211, 1212, 1811, 462, 1211, 1215, 1812, 463, 1211, 1216, 1813, 464, 1211, 1218, 1814, 465, 1209, 1212, 1815, 466, 1211, 1212, 1816, 467, 1212, 1215, 1817, 468, 1212, 1216, 1818, 469, 1212, 1218, 1819, 470, 1207, 1213, 1820, 471, 1208, 1213, 1821, 472, 1210, 1213, 1822, 473, 1213, 1215, 1823, 474, 1213, 1216, 1824, 475, 1208, 1214, 1825, 476, 1214, 1216, 1826, 477, 1214, 1217, 1827, 478, 1214, 1218, 1828, 479, 1207, 1215, 1829, 480, 1210, 1215, 1830, 481, 1211, 1215, 1831, 482, 1212, 1215, 1832, 483, 1213, 1215, 1833, 484, 1208, 1216, 1834, 485, 1209, 1216, 1835, 486, 1210, 1216, 1836, 487, 1211, 1216, 1837, 488, 1212, 1216, 1838, 489, 1213, 1216, 1839, 490, 1214, 1216, 1840, 491, 1216, 1217, 1841, 492, 1216, 1218, 1842, 493, 1209, 1217, 1843, 494, 1214, 1217, 1844, 495, 1216, 1217, 1845, 496, 1217, 1218, 1846, 497, 1209, 1218, 1847, 498, 1211, 1218, 1848, 499, 1212, 1218, 1849, 500, 1214, 1218, 1850, 501, 1216, 1218, 1851, 502, 1217, 1218, 1852, 503, 1219, 1220, 1853, 504, 1219, 1222, 1854, 505, 1219, 1225, 1855, 506, 1219, 1227, 1856, 507, 1219, 1220, 1857, 508, 1220, 1222, 1858, 509, 1220, 1225, 1859, 510, 1220, 1226, 1860, 511, 1220, 1228, 1861, 512, 1221, 1223, 1862, 513, 1221, 1224, 1863, 514, 1221, 1228, 1864, 515, 1221, 1229, 1865, 516, 1221, 1230, 1866, 517, 1219, 1222, 1867, 518, 1220, 1222, 1868, 519, 1222, 1225, 1869, 520, 1222, 1227, 1870, 521, 1222, 1228, 1871, 522, 1221, 1223, 1872, 523, 1223, 1224, 1873, 524, 1223, 1227, 1874, 525, 1223, 1228, 1875, 526, 1223, 1230, 1876, 527, 1221, 1224, 1877, 528, 1223, 1224, 1878, 529, 1224, 1227, 1879, 530, 1224, 1228, 1880, 531, 1224, 1230, 1881, 532, 1219, 1225, 1882, 533, 1220, 1225, 1883, 534, 1222, 1225, 1884, 535, 1225, 1227, 1885, 536, 1225, 1228, 1886, 537, 1220, 1226, 1887, 538, 1226, 1228, 1888, 539, 1226, 1229, 1889, 540, 1226, 1230, 1890, 541, 1219, 1227, 1891, 542, 1222, 1227, 1892, 543, 1223, 1227, 1893, 544, 1224, 1227, 1894, 545, 1225, 1227, 1895, 546, 1220, 1228, 1896, 547, 1221, 1228, 1897, 548, 1222, 1228, 1898, 549, 1223, 1228, 1899, 550, 1224, 1228, 1900, 551, 1225, 1228, 1901, 552, 1226, 1228, 1902, 553, 1228, 1229, 1903, 554, 1228, 1230, 1904, 555, 1221, 1229, 1905, 556, 1226, 1229, 1906, 557, 1228, 1229, 1907, 558, 1229, 1230, 1908, 559, 1221, 1230, 1909, 560, 1223, 1230, 1910, 561, 1224, 1230, 1911, 562, 1226, 1230, 1912, 563, 1228, 1230, 1913, 564, 1229, 1230, 1914, 565, 1231, 1232, 1915, 566, 1231, 1234, 1916, 567, 1231, 1237, 1917, 568, 1231, 1239, 1918, 569, 1231, 1232, 1919, 570, 1232, 1234, 1920, 571, 1232, 1237, 1921, 572, 1232, 1238, 1922, 573, 1232, 1240, 1923, 574, 1233, 1235, 1924, 575, 1233, 1236, 1925, 576, 1233, 1240, 1926, 577, 1233, 1241, 1927, 578, 1233, 1242, 1928, 579, 1231, 1234, 1929, 580, 1232, 1234, 1930, 581, 1234, 1237, 1931, 582, 1234, 1239, 1932, 583, 1234, 1240, 1933, 584, 1233, 1235, 1934, 585, 1235, 1236, 1935, 586, 1235, 1239, 1936, 587, 1235, 1240, 1937, 588, 1235, 1242, 1938, 589, 1233, 1236, 1939, 590, 1235, 1236, 1940, 591, 1236, 1239, 1941, 592, 1236, 1240, 1942, 593, 1236, 1242, 1943, 594, 1231, 1237, 1944, 595, 1232, 1237, 1945, 596, 1234, 1237, 1946, 597, 1237, 1239, 1947, 598, 1237, 1240, 1948, 599, 1232, 1238, 1949, 600, 1238, 1240, 1950, 601, 1238, 1241, 1951, 602, 1238, 1242, 1952, 603, 1231, 1239, 1953, 604, 1234, 1239, 1954, 605, 1235, 1239, 1955, 606, 1236, 1239, 1956, 607, 1237, 1239, 1957, 608, 1232, 1240, 1958, 609, 1233, 1240, 1959, 610, 1234, 1240, 1960, 611, 1235, 1240, 1961, 612, 1236, 1240, 1962, 613, 1237, 1240, 1963, 614, 1238, 1240, 1964, 615, 1240, 1241, 1965, 616, 1240, 1242, 1966, 617, 1233, 1241, 1967, 618, 1238, 1241, 1968, 619, 1240, 1241, 1969, 620, 1241, 1242, 1970, 621, 1233, 1242, 1971, 622, 1235, 1242, 1972, 623, 1236, 1242, 1973, 624, 1238, 1242, 1974, 625, 1240, 1242, 1975, 626, 1241, 1242, 1976, 627, 1243, 1244, 1977, 628, 1243, 1246, 1978, 629, 1243, 1249, 1979, 630, 1243, 1251, 1980, 631, 1243, 1244, 1981, 632, 1244, 1246, 1982, 633, 1244, 1249, 1983, 634, 1244, 1250, 1984, 635, 1244, 1252, 1985, 636, 1245, 1247, 1986, 637, 1245, 1248, 1987, 638, 1245, 1252, 1988, 639, 1245, 1253, 1989, 640, 1245, 1254, 1990, 641, 1243, 1246, 1991, 642, 1244, 1246, 1992, 643, 1246, 1249, 1993, 644, 1246, 1251, 1994, 645, 1246, 1252, 1995, 646, 1245, 1247, 1996, 647, 1247, 1248, 1997, 648, 1247, 1251, 1998, 649, 1247, 1252, 1999, 650, 1247, 1254, 2000, 651, 1245, 1248, 2001, 652, 1247, 1248, 2002, 653, 1248, 1251, 2003, 654, 1248, 1252, 2004, 655, 1248, 1254, 2005, 656, 1243, 1249, 2006, 657, 1244, 1249, 2007, 658, 1246, 1249, 2008, 659, 1249, 1251, 2009, 660, 1249, 1252, 2010, 661, 1244, 1250, 2011, 662, 1250, 1252, 2012, 663, 1250, 1253, 2013, 664, 1250, 1254, 2014, 665, 1243, 1251, 2015, 666, 1246, 1251, 2016, 667, 1247, 1251, 2017, 668, 1248, 1251, 2018, 669, 1249, 1251, 2019, 670, 1244, 1252, 2020, 671, 1245, 1252, 2021, 672, 1246, 1252, 2022, 673, 1247, 1252, 2023, 674, 1248, 1252, 2024, 675, 1249, 1252, 2025, 676, 1250, 1252, 2026, 677, 1252, 1253, 2027, 678, 1252, 1254, 2028, 679, 1245, 1253, 2029, 680, 1250, 1253, 2030, 681, 1252, 1253, 2031, 682, 1253, 1254, 2032, 683, 1245, 1254, 2033, 684, 1247, 1254, 2034, 685, 1248, 1254, 2035, 686, 1250, 1254, 2036, 687, 1252, 1254, 2037, 688, 1253, 1254, 2038, 689, 1074, 1159, 690, 1074, 1160, 691, 1074, 1161, 692, 1074, 1162, 693, 1074, 1163, 694, 1074, 1164, 695, 1074, 1165, 696, 1074, 1166, 697, 1074, 1167, 698, 1074, 1168, 699, 1074, 1169, 700, 1074, 1170, 701, 1074, 1171, 702, 1074, 1172, 703, 1074, 1173, 704, 1074, 1174, 705, 1074, 1175, 706, 1074, 1176, 707, 1074, 1177, 708, 1074, 1178, 709, 1074, 1179, 710, 1074, 1180, 711, 1074, 1181, 712, 1074, 1182, 713, 1074, 1183, 714, 1074, 1184, 715, 1074, 1185, 716, 1074, 1186, 717, 1074, 1187, 718, 1074, 1188, 719, 1074, 1189, 720, 1074, 1190, 721, 1074, 1191, 722, 1074, 1192, 723, 1074, 1193, 724, 1074, 1194, 725, 1074, 1195, 726, 1074, 1196, 727, 1074, 1197, 728, 1074, 1198, 729, 1074, 1199, 730, 1074, 1200, 731, 1074, 1201, 732, 1074, 1202, 733, 1074, 1203, 734, 1074, 1204, 735, 1074, 1205, 736, 1074, 1206, 737, 1074, 1207, 738, 1074, 1208, 739, 1074, 1209, 740, 1074, 1210, 741, 1074, 1211, 742, 1074, 1212, 743, 1074, 1213, 744, 1074, 1214, 745, 1074, 1215, 746, 1074, 1216, 747, 1074, 1217, 748, 1074, 1218, 749, 1074, 1219, 750, 1074, 1220, 751, 1074, 1221, 752, 1074, 1222, 753, 1074, 1223, 754, 1074, 1224, 755, 1074, 1225, 756, 1074, 1226, 757, 1074, 1227, 758, 1074, 1228, 759, 1074, 1229, 760, 1074, 1230, 761, 1074, 1231, 762, 1074, 1232, 763, 1074, 1233, 764, 1074, 1234, 765, 1074, 1235, 766, 1074, 1236, 767, 1074, 1237, 768, 1074, 1238, 769, 1074, 1239, 770, 1074, 1240, 771, 1074, 1241, 772, 1074, 1242, 773, 1074, 1243, 774, 1074, 1244, 775, 1074, 1245, 776, 1074, 1246, 777, 1074, 1247, 778, 1074, 1248, 779, 1074, 1249, 780, 1074, 1250, 781, 1074, 1251, 782, 1074, 1252, 783, 1074, 1253, 784, 1074, 1254, 785, 1075, 1447, 786, 1076, 1448, 787, 1077, 1449, 788, 1078, 1450, 789, 1079, 1451, 790, 1080, 1452, 791, 1081, 1453, 792, 1082, 1454, 793, 1083, 1455, 794, 1084, 1456, 795, 1085, 1457, 796, 1086, 1458, 797, 1075, 1087, 1459, 798, 1076, 1088, 1460, 799, 1077, 1089, 1461, 800, 1078, 1090, 1462, 801, 1079, 1091, 1463, 802, 1080, 1092, 1464, 803, 1081, 1093, 1465, 804, 1082, 1094, 1466, 805, 1083, 1095, 1467, 806, 1084, 1096, 1468, 807, 1085, 1097, 1469, 808, 1086, 1098, 1470, 809, 1087, 1099, 1471, 810, 1088, 1100, 1472, 811, 1089, 1101, 1473, 812, 1090, 1102, 1474, 813, 1091, 1103, 1475, 814, 1092, 1104, 1476, 815, 1093, 1105, 1477, 816, 1094, 1106, 1478, 817, 1095, 1107, 1479, 818, 1096, 1108, 1480, 819, 1097, 1109, 1481, 820, 1098, 1110, 1482, 821, 1099, 1111, 1483, 822, 1100, 1112, 1484, 823, 1101, 1113, 1485, 824, 1102, 1114, 1486, 825, 1103, 1115, 1487, 826, 1104, 1116, 1488, 827, 1105, 1117, 1489, 828, 1106, 1118, 1490, 829, 1107, 1119, 1491, 830, 1108, 1120, 1492, 831, 1109, 1121, 1493, 832, 1110, 1122, 1494, 833, 1111, 1123, 1495, 834, 1112, 1124, 1496, 835, 1113, 1125, 1497, 836, 1114, 1126, 1498, 837, 1115, 1127, 1499, 838, 1116, 1128, 1500, 839, 1117, 1129, 1501, 840, 1118, 1130, 1502, 841, 1119, 1131, 1503, 842, 1120, 1132, 1504, 843, 1121, 1133, 1505, 844, 1122, 1134, 1506, 845, 1123, 1135, 1507, 846, 1124, 1136, 1508, 847, 1125, 1137, 1509, 848, 1126, 1138, 1510, 849, 1127, 1139, 1511, 850, 1128, 1140, 1512, 851, 1129, 1141, 1513, 852, 1130, 1142, 1514, 853, 1131, 1143, 1515, 854, 1132, 1144, 1516, 855, 1133, 1145, 1517, 856, 1134, 1146, 1518, 857, 1135, 1147, 1519, 858, 1136, 1148, 1520, 859, 1137, 1149, 1521, 860, 1138, 1150, 1522, 861, 1139, 1151, 1523, 862, 1140, 1152, 1524, 863, 1141, 1153, 1525, 864, 1142, 1154, 1526, 865, 1143, 1155, 1527, 866, 1144, 1156, 1528, 867, 1145, 1157, 1529, 868, 1146, 1158, 1530, 869, 1147, 1531, 870, 1148, 1532, 871, 1149, 1533, 872, 1150, 1534, 873, 1151, 1535, 874, 1152, 1536, 875, 1153, 1537, 876, 1154, 1538, 877, 1155, 1539, 878, 1156, 1540, 879, 1157, 1541, 880, 1158, 1542, 881, 1159, 882, 1160, 883, 1161, 884, 1162, 885, 1163, 886, 1164, 887, 1165, 888, 1166, 889, 1167, 890, 1168, 891, 1169, 892, 1170, 893, 1075, 1171, 894, 1076, 1172, 895, 1077, 1173, 896, 1078, 1174, 897, 1079, 1175, 898, 1080, 1176, 899, 1081, 1177, 900, 1082, 1178, 901, 1083, 1179, 902, 1084, 1180, 903, 1085, 1181, 904, 1086, 1182, 905, 1087, 1183, 906, 1088, 1184, 907, 1089, 1185, 908, 1090, 1186, 909, 1091, 1187, 910, 1092, 1188, 911, 1093, 1189, 912, 1094, 1190, 913, 1095, 1191, 914, 1096, 1192, 915, 1097, 1193, 916, 1098, 1194, 917, 1099, 1195, 918, 1100, 1196, 919, 1101, 1197, 920, 1102, 1198, 921, 1103, 1199, 922, 1104, 1200, 923, 1105, 1201, 924, 1106, 1202, 925, 1107, 1203, 926, 1108, 1204, 927, 1109, 1205, 928, 1110, 1206, 929, 1111, 1207, 930, 1112, 1208, 931, 1113, 1209, 932, 1114, 1210, 933, 1115, 1211, 934, 1116, 1212, 935, 1117, 1213, 936, 1118, 1214, 937, 1119, 1215, 938, 1120, 1216, 939, 1121, 1217, 940, 1122, 1218, 941, 1123, 1219, 942, 1124, 1220, 943, 1125, 1221, 944, 1126, 1222, 945, 1127, 1223, 946, 1128, 1224, 947, 1129, 1225, 948, 1130, 1226, 949, 1131, 1227, 950, 1132, 1228, 951, 1133, 1229, 952, 1134, 1230, 953, 1135, 1231, 954, 1136, 1232, 955, 1137, 1233, 956, 1138, 1234, 957, 1139, 1235, 958, 1140, 1236, 959, 1141, 1237, 960, 1142, 1238, 961, 1143, 1239, 962, 1144, 1240, 963, 1145, 1241, 964, 1146, 1242, 965, 1147, 1243, 966, 1148, 1244, 967, 1149, 1245, 968, 1150, 1246, 969, 1151, 1247, 970, 1152, 1248, 971, 1153, 1249, 972, 1154, 1250, 973, 1155, 1251, 974, 1156, 1252, 975, 1157, 1253, 976, 1158, 1254, 977, 1159, 978, 1160, 979, 1161, 980, 1162, 981, 1163, 982, 1164, 983, 1165, 984, 1166, 985, 1167, 986, 1168, 987, 1169, 988, 1170, 989, 1075, 1171, 990, 1076, 1172, 991, 1077, 1173, 992, 1078, 1174, 993, 1079, 1175, 994, 1080, 1176, 995, 1081, 1177, 996, 1082, 1178, 997, 1083, 1179, 998, 1084, 1180, 999, 1085, 1181, 1000, 1086, 1182, 1001, 1087, 1183, 1002, 1088, 1184, 1003, 1089, 1185, 1004, 1090, 1186, 1005, 1091, 1187, 1006, 1092, 1188, 1007, 1093, 1189, 1008, 1094, 1190, 1009, 1095, 1191, 1010, 1096, 1192, 1011, 1097, 1193, 1012, 1098, 1194, 1013, 1099, 1195, 1014, 1100, 1196, 1015, 1101, 1197, 1016, 1102, 1198, 1017, 1103, 1199, 1018, 1104, 1200, 1019, 1105, 1201, 1020, 1106, 1202, 1021, 1107, 1203, 1022, 1108, 1204, 1023, 1109, 1205, 1024, 1110, 1206, 1025, 1111, 1207, 1026, 1112, 1208, 1027, 1113, 1209, 1028, 1114, 1210, 1029, 1115, 1211, 1030, 1116, 1212, 1031, 1117, 1213, 1032, 1118, 1214, 1033, 1119, 1215, 1034, 1120, 1216, 1035, 1121, 1217, 1036, 1122, 1218, 1037, 1123, 1219, 1038, 1124, 1220, 1039, 1125, 1221, 1040, 1126, 1222, 1041, 1127, 1223, 1042, 1128, 1224, 1043, 1129, 1225, 1044, 1130, 1226, 1045, 1131, 1227, 1046, 1132, 1228, 1047, 1133, 1229, 1048, 1134, 1230, 1049, 1135, 1231, 1050, 1136, 1232, 1051, 1137, 1233, 1052, 1138, 1234, 1053, 1139, 1235, 1054, 1140, 1236, 1055, 1141, 1237, 1056, 1142, 1238, 1057, 1143, 1239, 1058, 1144, 1240, 1059, 1145, 1241, 1060, 1146, 1242, 1061, 1147, 1243, 1062, 1148, 1244, 1063, 1149, 1245, 1064, 1150, 1246, 1065, 1151, 1247, 1066, 1152, 1248, 1067, 1153, 1249, 1068, 1154, 1250, 1069, 1155, 1251, 1070, 1156, 1252, 1071, 1157, 1253, 1072, 1158, 1254, 1073, 1074, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038}; MKL_INT ia[2038 + 1] = {1, 5, 8, 12, 15, 19, 22, 26, 29, 33, 36, 40, 43, 47, 50, 54, 57, 61, 64, 68, 71, 75, 78, 82, 85, 89, 92, 96, 99, 103, 106, 110, 113, 117, 120, 124, 127, 131, 134, 138, 141, 145, 148, 152, 155, 159, 162, 166, 169, 173, 176, 180, 183, 187, 190, 194, 197, 201, 204, 208, 211, 215, 218, 222, 225, 229, 232, 236, 239, 243, 246, 250, 253, 257, 260, 264, 267, 271, 274, 278, 281, 285, 288, 292, 295, 299, 302, 306, 309, 313, 316, 320, 323, 327, 330, 334, 337, 341, 344, 348, 351, 355, 358, 362, 365, 369, 372, 376, 379, 383, 386, 390, 393, 397, 400, 404, 407, 411, 414, 418, 421, 425, 428, 432, 435, 439, 442, 446, 449, 453, 456, 460, 463, 467, 470, 474, 477, 481, 484, 488, 491, 495, 498, 502, 505, 509, 512, 516, 519, 523, 526, 530, 533, 537, 540, 544, 547, 551, 554, 558, 561, 565, 568, 572, 575, 579, 582, 586, 589, 593, 596, 600, 603, 607, 610, 614, 617, 621, 624, 628, 631, 635, 638, 642, 645, 649, 652, 656, 659, 663, 666, 670, 673, 677, 681, 685, 689, 693, 697, 701, 705, 709, 713, 717, 721, 725, 729, 733, 737, 741, 745, 749, 753, 757, 761, 765, 769, 773, 777, 781, 785, 789, 793, 797, 801, 805, 809, 813, 817, 821, 825, 829, 833, 837, 841, 845, 849, 853, 857, 861, 865, 869, 873, 877, 881, 885, 889, 893, 897, 901, 905, 909, 913, 917, 921, 925, 929, 933, 937, 941, 945, 949, 953, 957, 961, 965, 969, 973, 977, 981, 985, 989, 993, 997, 1001, 1005, 1009, 1013, 1017, 1021, 1025, 1029, 1033, 1037, 1041, 1045, 1049, 1053, 1057, 1061, 1065, 1069, 1073, 1077, 1081, 1085, 1089, 1093, 1097, 1101, 1105, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137, 1141, 1145, 1149, 1153, 1157, 1161, 1165, 1169, 1173, 1177, 1181, 1185, 1189, 1193, 1197, 1201, 1205, 1209, 1213, 1217, 1221, 1225, 1229, 1233, 1237, 1241, 1245, 1249, 1253, 1257, 1261, 1265, 1269, 1273, 1277, 1281, 1285, 1289, 1293, 1297, 1301, 1305, 1309, 1313, 1317, 1321, 1325, 1329, 1333, 1337, 1341, 1345, 1349, 1353, 1357, 1361, 1365, 1369, 1373, 1377, 1381, 1385, 1389, 1393, 1397, 1401, 1405, 1409, 1413, 1417, 1421, 1425, 1429, 1433, 1437, 1441, 1445, 1449, 1453, 1457, 1461, 1465, 1469, 1473, 1477, 1481, 1485, 1489, 1493, 1497, 1501, 1505, 1509, 1513, 1517, 1521, 1525, 1529, 1533, 1537, 1541, 1545, 1549, 1553, 1557, 1561, 1565, 1569, 1573, 1577, 1581, 1585, 1589, 1593, 1597, 1601, 1605, 1609, 1613, 1617, 1621, 1625, 1629, 1633, 1637, 1641, 1645, 1649, 1653, 1657, 1661, 1665, 1669, 1673, 1677, 1681, 1685, 1689, 1693, 1697, 1701, 1705, 1709, 1713, 1717, 1721, 1725, 1729, 1733, 1737, 1741, 1745, 1749, 1753, 1757, 1761, 1765, 1769, 1773, 1777, 1781, 1785, 1789, 1793, 1797, 1801, 1805, 1809, 1813, 1817, 1821, 1825, 1829, 1833, 1837, 1841, 1845, 1849, 1853, 1857, 1861, 1865, 1869, 1873, 1877, 1881, 1885, 1889, 1893, 1897, 1901, 1905, 1909, 1913, 1917, 1921, 1925, 1929, 1933, 1937, 1941, 1945, 1949, 1953, 1957, 1961, 1965, 1969, 1973, 1977, 1981, 1985, 1989, 1993, 1997, 2001, 2005, 2009, 2013, 2017, 2021, 2025, 2029, 2033, 2037, 2041, 2045, 2049, 2053, 2057, 2061, 2065, 2069, 2073, 2077, 2081, 2085, 2089, 2093, 2097, 2101, 2105, 2109, 2113, 2117, 2121, 2125, 2129, 2133, 2137, 2141, 2145, 2149, 2153, 2157, 2161, 2165, 2169, 2173, 2177, 2181, 2185, 2189, 2193, 2197, 2201, 2205, 2209, 2213, 2217, 2221, 2225, 2229, 2233, 2237, 2241, 2245, 2249, 2253, 2257, 2261, 2265, 2269, 2273, 2277, 2281, 2285, 2289, 2293, 2297, 2301, 2305, 2309, 2313, 2317, 2321, 2325, 2329, 2333, 2337, 2341, 2345, 2349, 2353, 2357, 2361, 2365, 2369, 2373, 2377, 2381, 2385, 2389, 2393, 2397, 2401, 2405, 2409, 2413, 2417, 2421, 2425, 2429, 2433, 2437, 2441, 2445, 2449, 2453, 2457, 2461, 2465, 2469, 2473, 2477, 2481, 2485, 2489, 2493, 2497, 2501, 2505, 2509, 2513, 2517, 2521, 2525, 2529, 2533, 2537, 2541, 2545, 2549, 2553, 2557, 2561, 2565, 2569, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 2601, 2605, 2609, 2613, 2617, 2621, 2625, 2629, 2633, 2637, 2641, 2645, 2649, 2653, 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, 2681, 2684, 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, 2717, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2888, 2891, 2894, 2897, 2900, 2903, 2906, 2909, 2912, 2915, 2918, 2921, 2924, 2927, 2930, 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957, 2960, 2963, 2966, 2969, 2972, 2975, 2978, 2981, 2985, 2989, 2993, 2997, 3001, 3005, 3009, 3013, 3017, 3021, 3025, 3029, 3033, 3037, 3041, 3045, 3049, 3053, 3057, 3061, 3065, 3069, 3073, 3077, 3081, 3085, 3089, 3093, 3097, 3101, 3105, 3109, 3113, 3117, 3121, 3125, 3129, 3133, 3137, 3141, 3145, 3149, 3153, 3157, 3161, 3165, 3169, 3173, 3177, 3181, 3185, 3189, 3193, 3197, 3201, 3205, 3209, 3213, 3217, 3221, 3225, 3229, 3233, 3237, 3241, 3245, 3249, 3253, 3257, 3261, 3265, 3269, 3272, 3275, 3278, 3281, 3284, 3287, 3290, 3293, 3296, 3299, 3302, 3305, 3307, 3309, 3311, 3313, 3315, 3317, 3319, 3321, 3323, 3325, 3327, 3329, 3332, 3335, 3338, 3341, 3344, 3347, 3350, 3353, 3356, 3359, 3362, 3365, 3368, 3371, 3374, 3377, 3380, 3383, 3386, 3389, 3392, 3395, 3398, 3401, 3404, 3407, 3410, 3413, 3416, 3419, 3422, 3425, 3428, 3431, 3434, 3437, 3440, 3443, 3446, 3449, 3452, 3455, 3458, 3461, 3464, 3467, 3470, 3473, 3476, 3479, 3482, 3485, 3488, 3491, 3494, 3497, 3500, 3503, 3506, 3509, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536, 3539, 3542, 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566, 3569, 3572, 3575, 3578, 3581, 3583, 3585, 3587, 3589, 3591, 3593, 3595, 3597, 3599, 3601, 3603, 3605, 3608, 3611, 3614, 3617, 3620, 3623, 3626, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, 3653, 3656, 3659, 3662, 3665, 3668, 3671, 3674, 3677, 3680, 3683, 3686, 3689, 3692, 3695, 3698, 3701, 3704, 3707, 3710, 3713, 3716, 3719, 3722, 3725, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, 3761, 3764, 3767, 3770, 3773, 3776, 3779, 3782, 3785, 3788, 3791, 3794, 3797, 3800, 3803, 3806, 3809, 3812, 3815, 3818, 3821, 3824, 3827, 3830, 3833, 3836, 3839, 3842, 3845, 3848, 3851, 3854, 3857, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, 3870, 3871, 3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905, 3906, 3907, 3908, 3909, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918, 3919, 3920, 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, 3930, 3931, 3932, 3933, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, 3954, 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990, 3991, 3992, 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, 4073, 4074, 4075, 4076, 4077, 4078, 4079, 4080, 4081, 4082, 4083, 4084, 4085, 4086, 4087, 4088, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097, 4098, 4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145, 4146, 4147, 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, 4159, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173, 4174, 4175, 4176, 4177, 4178, 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195, 4196, 4197, 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349, 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381, 4382, 4383, 4384, 4385, 4386, 4387, 4388, 4389, 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397, 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, 4459, 4460, 4461, 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626, 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, 4684, 4685, 4686, 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4694, 4695, 4696, 4697, 4698, 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747, 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, 4797, 4798, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819, 4820, 4821, 4822, 4823, 4824}; int perm[2038] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; MKL_INT iparm[64] = {1, 2, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, // todo setting iparm[23] = 1 has no effect with iparm[10] = 1 and iparm[12] = 1 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // iparm[30] = 1; double b[2038] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; double x[2038]; /* -------------------------------------------------------------------- */ /* .. Initialize the internal solver memory pointer. This is only */ /* necessary for the FIRST call of the PARDISO solver. */ /* -------------------------------------------------------------------- */ for ( i = 0; i < 64; i++ ) { pt[i] = 0; } /* -------------------------------------------------------------------- */ /* .. Reordering and Symbolic Factorization. This step also allocates */ /* all memory that is necessary for the factorization. */ /* -------------------------------------------------------------------- */ phase = 12; PARDISO (pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, perm, &nrhs, iparm, &msglvl, &ddum, &ddum, &error); if ( error != 0 ) { printf ("\nERROR during symbolic factorization: %d", error); exit (1); } printf ("\nReordering completed ... "); printf ("\nNumber of nonzeros in factors = %d", iparm[17]); printf ("\nNumber of factorization MFLOPS = %d", iparm[18]); /* -------------------------------------------------------------------- */ /* .. Numerical factorization. */ /* -------------------------------------------------------------------- */ // phase = 22; // PARDISO (pt, &maxfct, &mnum, &mtype, &phase, // &n, a, ia, ja, perm, &nrhs, iparm, &msglvl, &ddum, &ddum, &error); // if ( error != 0 ) // { // printf ("\nERROR during numerical factorization: %d", error); // exit (2); // } // printf ("\nFactorization completed ... "); /* -------------------------------------------------------------------- */ /* .. Back substitution and iterative refinement. */ /* -------------------------------------------------------------------- */ phase = 33; /* Set right hand side to one. */ for ( i = 0; i < n; i++ ) { b[i] = 1; } MKL_INT iparm2[64] = {1, 2, 1, 0, 0, 0, 0, 5, 0, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, // todo setting iparm[23] = 1 has no effect with iparm[10] = 1 and iparm[12] = 1 2, 0, 0, 0, 0, 0, 1, 0, // set iparm[30] = 1 0, 0, 0, 0, 0, 0, 0, 0, // todo pardiso sets iparm[33] to -1 ? 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; for(int i = 0; i < 64; ++i) if(iparm[i] != iparm2[i]) printf("\n iparm[%d] is different: iparm[%d] = %d != %d = iparm2[%d]", i, i, iparm[i], iparm2[i], i ); PARDISO (pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, perm, &nrhs, iparm2, &msglvl, b, x, &error); if ( error != 0 ) { printf ("\nERROR during solution: %d", error); exit (3); } printf ("\nSolve completed ... "); printf ("\nThe solution of the system is: "); printf ("\n"); /* -------------------------------------------------------------------- */ /* .. Termination and release of memory. */ /* -------------------------------------------------------------------- */ phase = -1; /* Release internal memory. */ PARDISO (pt, &maxfct, &mnum, &mtype, &phase, &n, &ddum, ia, ja, perm, &nrhs, iparm, &msglvl, &ddum, &ddum, &error); printf("done\n"); return 0; }