speed up mt-matmul and spmv tests
authorAndrew Waterman <waterman@cs.berkeley.edu>
Thu, 5 May 2016 01:20:05 +0000 (18:20 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Thu, 5 May 2016 01:20:05 +0000 (18:20 -0700)
benchmarks/mt-matmul/dataset.h
benchmarks/mt-matmul/matmul_gendata.pl
benchmarks/mt-matmul/mt-matmul.c
benchmarks/spmv/dataset1.h
benchmarks/spmv/spmv_main.c

index b1d2092181fa9987852b0a93af29cbdf24d5f0fb..72fbc28b4ac6f766c7310f4285a8da0cadbf62b5 100644 (file)
@@ -2,14 +2,13 @@
 
 #ifndef __DATASET_H
 #define __DATASET_H
+#define ARRAY_SIZE 256 
 
-#define ARRAY_SIZE 1024 
 
-#define DIM_SIZE 32 
+#define DIM_SIZE 16 
 
-typedef double data_t;
 
-static data_t input1_data[ARRAY_SIZE] = 
+typedef int data_t;static data_t input1_data[ARRAY_SIZE] = 
 {
     0,   3,   2,   0,   3,   1,   0,   3,   2,   3,   2,   0,   3,   3,   1,   2,   3,   0,   0,   1, 
     1,   1,   2,   3,   1,   2,   3,   1,   1,   3,   2,   2,   0,   1,   3,   2,   2,   2,   0,   0, 
@@ -23,46 +22,7 @@ static data_t input1_data[ARRAY_SIZE] =
     1,   2,   1,   3,   2,   2,   0,   1,   0,   0,   1,   2,   3,   3,   1,   0,   0,   0,   3,   1, 
     2,   3,   2,   3,   2,   0,   0,   0,   0,   0,   3,   1,   3,   0,   0,   0,   3,   1,   1,   1, 
     1,   2,   1,   2,   3,   2,   0,   0,   2,   2,   3,   0,   3,   0,   0,   3,   0,   3,   1,   3, 
-    3,   1,   1,   1,   2,   2,   1,   3,   0,   3,   3,   1,   0,   0,   3,   2,   1,   3,   3,   3, 
-    1,   0,   1,   1,   2,   1,   0,   1,   1,   2,   2,   3,   1,   2,   2,   2,   0,   1,   3,   3, 
-    3,   2,   2,   1,   0,   1,   2,   0,   1,   1,   1,   1,   2,   3,   2,   2,   3,   3,   0,   0, 
-    2,   0,   0,   0,   3,   0,   1,   0,   3,   0,   0,   0,   3,   0,   0,   2,   0,   2,   0,   0, 
-    2,   3,   2,   0,   0,   3,   3,   2,   1,   1,   0,   2,   0,   0,   3,   3,   2,   3,   3,   0, 
-    1,   0,   2,   2,   0,   3,   3,   1,   1,   0,   2,   3,   2,   1,   1,   0,   1,   2,   1,   2, 
-    2,   0,   0,   1,   0,   1,   1,   0,   1,   0,   2,   3,   3,   2,   0,   0,   1,   3,   0,   3, 
-    3,   0,   0,   0,   0,   3,   3,   1,   0,   0,   3,   3,   2,   1,   2,   1,   3,   3,   0,   1, 
-    3,   0,   2,   3,   1,   3,   3,   3,   3,   3,   0,   1,   1,   3,   0,   2,   2,   3,   1,   2, 
-    2,   2,   1,   3,   3,   0,   3,   0,   0,   2,   0,   2,   3,   0,   1,   3,   2,   2,   0,   0, 
-    2,   3,   0,   2,   2,   2,   3,   1,   0,   3,   3,   3,   3,   1,   0,   3,   3,   2,   0,   3, 
-    2,   0,   3,   0,   2,   0,   0,   2,   2,   1,   0,   2,   3,   1,   1,   1,   1,   2,   3,   3, 
-    3,   0,   0,   3,   3,   3,   2,   3,   3,   1,   2,   2,   3,   1,   2,   1,   1,   3,   0,   1, 
-    2,   0,   2,   0,   0,   1,   3,   2,   0,   1,   3,   2,   3,   3,   0,   0,   0,   1,   0,   3, 
-    3,   2,   2,   2,   1,   1,   2,   2,   1,   3,   2,   0,   1,   3,   2,   0,   2,   1,   3,   0, 
-    0,   0,   1,   3,   3,   2,   2,   2,   3,   1,   0,   0,   1,   1,   2,   1,   3,   1,   1,   2, 
-    2,   3,   2,   3,   0,   2,   3,   3,   0,   3,   0,   0,   1,   0,   0,   0,   1,   3,   1,   1, 
-    2,   3,   2,   1,   1,   2,   2,   2,   3,   0,   1,   1,   2,   1,   2,   0,   2,   3,   1,   3, 
-    0,   1,   1,   3,   0,   2,   3,   0,   1,   2,   3,   2,   0,   0,   3,   3,   2,   1,   1,   2, 
-    3,   0,   1,   1,   1,   1,   2,   0,   1,   2,   0,   1,   1,   1,   0,   1,   3,   2,   3,   1, 
-    0,   2,   1,   2,   1,   3,   3,   1,   0,   2,   2,   3,   1,   3,   1,   3,   0,   1,   0,   3, 
-    0,   3,   2,   0,   3,   3,   3,   0,   3,   2,   2,   2,   1,   3,   0,   0,   1,   1,   3,   0, 
-    1,   2,   1,   0,   0,   0,   3,   2,   2,   0,   0,   2,   1,   3,   0,   0,   3,   0,   0,   2, 
-    1,   1,   2,   2,   1,   3,   2,   2,   1,   1,   2,   1,   3,   2,   1,   1,   3,   0,   1,   3, 
-    3,   2,   2,   1,   0,   3,   2,   2,   2,   3,   0,   1,   3,   3,   2,   3,   0,   3,   2,   3, 
-    1,   1,   0,   0,   0,   2,   3,   0,   3,   0,   1,   1,   3,   1,   3,   2,   1,   1,   2,   1, 
-    3,   2,   0,   2,   1,   0,   2,   3,   2,   3,   2,   1,   2,   3,   0,   0,   1,   1,   0,   0, 
-    2,   1,   0,   1,   2,   2,   2,   2,   0,   3,   3,   1,   0,   0,   0,   0,   3,   1,   1,   0, 
-    0,   0,   0,   1,   2,   2,   1,   3,   0,   2,   3,   2,   3,   2,   2,   1,   2,   2,   3,   3, 
-    1,   3,   0,   2,   2,   3,   3,   1,   2,   2,   2,   3,   1,   1,   1,   0,   0,   0,   3,   0, 
-    1,   0,   3,   1,   1,   3,   0,   1,   2,   2,   0,   0,   3,   3,   3,   3,   2,   1,   0,   0, 
-    1,   0,   2,   0,   1,   1,   0,   0,   3,   3,   2,   1,   1,   1,   0,   1,   1,   2,   2,   1, 
-    1,   2,   0,   3,   1,   3,   1,   0,   3,   0,   3,   1,   1,   1,   0,   2,   0,   3,   1,   0, 
-    1,   0,   2,   0,   2,   3,   3,   3,   1,   2,   3,   2,   2,   0,   1,   1,   0,   3,   3,   1, 
-    3,   3,   2,   0,   2,   0,   2,   2,   3,   3,   3,   0,   2,   3,   3,   1,   3,   2,   2,   2, 
-    0,   2,   3,   0,   2,   0,   3,   2,   2,   1,   1,   0,   2,   2,   2,   0,   2,   2,   0,   1, 
-    3,   2,   1,   3,   2,   2,   0,   3,   3,   1,   2,   2,   0,   0,   3,   2,   1,   2,   2,   1, 
-    3,   1,   2,   0,   0,   1,   1,   2,   1,   3,   2,   2,   3,   0,   2,   1,   3,   2,   1,   3, 
-    2,   3,   3,   1,   2,   1,   2,   2,   0,   0,   0,   3,   0,   2,   3,   1,   0,   0,   2,   3, 
-    3,   2,   2,   1
+    3,   1,   1,   1,   2,   2,   1,   3,   0,   3,   3,   1,   0,   0,   3,   2
 };
 
 static data_t input2_data[ARRAY_SIZE] = 
@@ -79,103 +39,25 @@ static data_t input2_data[ARRAY_SIZE] =
     3,   3,   1,   3,   3,   0,   0,   2,   2,   0,   0,   0,   1,   0,   0,   1,   3,   0,   2,   1, 
     3,   2,   2,   1,   3,   2,   0,   1,   2,   2,   3,   2,   1,   1,   1,   1,   3,   0,   1,   3, 
     2,   2,   3,   1,   1,   2,   0,   2,   1,   1,   2,   3,   1,   0,   1,   0,   1,   1,   0,   0, 
-    2,   0,   3,   0,   3,   0,   3,   2,   2,   3,   3,   2,   1,   0,   2,   2,   1,   1,   0,   3, 
-    3,   2,   2,   0,   0,   3,   0,   1,   0,   0,   1,   2,   0,   1,   3,   0,   1,   2,   2,   0, 
-    0,   3,   0,   3,   0,   1,   1,   2,   0,   0,   0,   3,   0,   0,   2,   1,   1,   1,   0,   2, 
-    1,   3,   1,   2,   0,   3,   0,   3,   1,   3,   0,   0,   2,   2,   2,   2,   3,   3,   2,   1, 
-    2,   2,   1,   1,   2,   2,   2,   2,   0,   3,   0,   0,   2,   0,   1,   2,   0,   3,   2,   3, 
-    2,   0,   2,   1,   2,   1,   0,   2,   1,   1,   3,   2,   2,   3,   1,   0,   3,   3,   1,   0, 
-    3,   2,   2,   0,   0,   3,   0,   0,   2,   0,   3,   2,   3,   1,   1,   0,   0,   2,   3,   0, 
-    0,   1,   1,   1,   2,   1,   3,   2,   1,   3,   0,   1,   3,   3,   1,   1,   1,   1,   1,   1, 
-    0,   0,   2,   3,   2,   2,   2,   3,   2,   3,   1,   2,   3,   2,   2,   2,   0,   1,   3,   0, 
-    1,   1,   0,   1,   0,   1,   1,   3,   3,   1,   2,   2,   3,   2,   0,   2,   2,   0,   1,   3, 
-    0,   1,   3,   2,   1,   3,   3,   2,   0,   1,   3,   2,   0,   2,   1,   1,   0,   3,   0,   1, 
-    1,   1,   1,   1,   3,   0,   0,   1,   0,   2,   3,   1,   3,   0,   2,   1,   3,   0,   3,   0, 
-    3,   2,   2,   0,   0,   2,   1,   3,   3,   2,   3,   2,   2,   1,   2,   2,   3,   0,   3,   2, 
-    2,   0,   3,   2,   3,   2,   0,   0,   1,   2,   0,   0,   2,   0,   0,   3,   3,   2,   0,   0, 
-    3,   3,   0,   2,   3,   1,   0,   1,   0,   2,   1,   0,   2,   1,   0,   1,   0,   3,   0,   2, 
-    2,   3,   0,   0,   2,   1,   0,   1,   0,   0,   0,   2,   2,   3,   2,   0,   3,   3,   2,   1, 
-    0,   0,   3,   1,   2,   3,   3,   1,   0,   3,   1,   1,   0,   3,   3,   3,   2,   2,   2,   0, 
-    1,   2,   0,   3,   0,   1,   0,   1,   1,   0,   1,   2,   0,   3,   2,   0,   1,   2,   2,   0, 
-    2,   0,   0,   1,   0,   3,   0,   3,   2,   1,   1,   1,   1,   3,   2,   1,   1,   1,   1,   0, 
-    2,   1,   1,   3,   2,   0,   2,   1,   1,   0,   2,   2,   1,   3,   0,   2,   1,   0,   1,   2, 
-    0,   1,   3,   2,   3,   2,   1,   0,   2,   0,   2,   2,   3,   1,   1,   3,   2,   3,   2,   2, 
-    0,   2,   0,   0,   0,   3,   2,   0,   2,   2,   3,   3,   3,   2,   1,   2,   0,   0,   3,   0, 
-    2,   0,   3,   2,   2,   3,   0,   3,   2,   1,   2,   2,   1,   2,   0,   0,   3,   1,   2,   0, 
-    2,   3,   2,   2,   1,   1,   1,   3,   3,   3,   3,   3,   1,   3,   0,   1,   3,   2,   2,   1, 
-    0,   1,   1,   2,   1,   2,   3,   1,   2,   2,   1,   2,   1,   1,   0,   3,   3,   1,   1,   3, 
-    2,   0,   0,   1,   2,   0,   1,   3,   1,   0,   0,   2,   2,   3,   3,   0,   2,   3,   2,   1, 
-    1,   3,   0,   2,   2,   3,   3,   1,   2,   3,   3,   3,   1,   3,   0,   3,   1,   1,   2,   2, 
-    2,   1,   0,   3,   2,   3,   0,   2,   3,   2,   3,   1,   2,   3,   3,   1,   2,   1,   0,   0, 
-    0,   3,   3,   3,   3,   0,   3,   3,   3,   3,   2,   1,   0,   3,   0,   3,   2,   3,   1,   0, 
-    0,   1,   3,   1,   0,   2,   2,   3,   1,   0,   2,   1,   1,   3,   1,   1,   3,   1,   2,   1, 
-    0,   0,   3,   2,   1,   1,   1,   1,   3,   2,   1,   3,   3,   1,   0,   3,   1,   1,   2,   0, 
-    0,   0,   2,   3,   3,   2,   2,   3,   0,   2,   3,   1,   3,   3,   0,   2,   1,   2,   2,   2, 
-    1,   0,   1,   3,   2,   3,   1,   1,   2,   1,   1,   0,   0,   2,   3,   2,   1,   0,   3,   1, 
-    3,   0,   1,   1,   2,   2,   1,   3,   3,   1,   1,   0,   0,   3,   3,   0,   0,   0,   0,   0, 
-    3,   1,   3,   0,   0,   0,   3,   3,   2,   1,   3,   0,   1,   3,   1,   1,   1,   0,   1,   0, 
-    1,   2,   2,   2,   3,   3,   0,   2,   3,   2,   1,   3,   3,   1,   1,   3,   0,   3,   3,   2, 
-    1,   1,   2,   0,   3,   0,   1,   2,   1,   1,   0,   0,   1,   2,   2,   0,   3,   1,   1,   1, 
-    3,   3,   3,   1,   0,   3,   3,   2,   2,   2,   1,   2,   0,   1,   1,   3,   0,   3,   1,   0, 
-    2,   2,   0,   1,   2,   3,   2,   1,   2,   0,   3,   2,   1,   3,   0,   1,   2,   0,   3,   0, 
-    1,   1,   2,   1
+    2,   0,   3,   0,   3,   0,   3,   2,   2,   3,   3,   2,   1,   0,   2,   2
 };
 
 static data_t verify_data[ARRAY_SIZE] = 
 {
-   72,  75,  88, 101,  80,  88,  73,  75,  80,  81,  58,  75,  86,  65,  60,  80,  84,  83,  87,  83, 
-  108,  93,  85,  76,  72,  98,  79,  86,  80,  96,  91,  85,  72,  64,  70,  83,  68,  92,  51,  54, 
-   85,  85,  60,  58,  90,  64,  55,  69,  72,  48,  94,  77,  91,  83,  70,  69,  67,  77,  59,  50, 
-   67,  74,  77,  67,  67,  62,  72,  71,  68,  79,  54,  61,  67,  61,  55,  62,  78,  60,  53,  64, 
-   67,  69,  99,  68,  88,  60,  66,  63,  70,  62,  65,  50,  53,  66,  70,  72,  75,  78,  85,  95, 
-   71,  89,  70,  68,  86,  88,  58,  77,  84,  70,  65,  68,  73,  75,  91,  96, 105,  92,  76,  68, 
-   86,  69,  80,  59,  73,  83,  88,  75,  64,  63,  71,  99,  77,  77,  69,  55,  80,  73,  54,  73, 
-   87,  78,  60,  69,  65,  78,  86,  89,  95,  92,  63,  69,  89,  61,  80,  65,  70,  77,  89,  77, 
-   79,  79,  73,  92,  64,  81,  60,  78,  81,  80,  61,  63,  89,  65,  56,  83,  77,  65, 102,  70, 
-   98,  86,  96,  68,  72,  89,  73,  73,  70,  89,  84,  76,  48,  61,  63,  70,  70,  79,  50,  53, 
-   64,  63,  43,  51,  59,  62,  43,  63,  55,  77,  79,  74,  75,  74,  64,  44,  65,  69,  72,  66, 
-   54,  71,  74,  72,  69,  76,  68,  89,  94,  75,  65,  53,  85,  79,  65,  74,  82,  73,  58,  70, 
-   84,  77,  99,  72,  92,  84,  78,  62,  59,  83,  71,  74,  63,  85,  80,  78,  71,  72,  79,  83, 
-   73,  82,  60,  85,  76,  82,  60,  70,  82,  68,  54,  85,  84,  70,  86,  74, 100,  88,  98,  68, 
-   67,  87,  69,  73,  68,  88,  76,  71,  47,  43,  47,  80,  54,  65,  40,  37,  59,  53,  33,  48, 
-   62,  40,  36,  55,  36,  62,  53,  57,  70,  69,  45,  43,  53,  61,  42,  57,  56,  63,  51,  47, 
-   59,  75,  64,  89,  83,  75,  59,  75,  91,  92,  58,  64,  83,  74,  58,  60,  76,  66,  97,  69, 
-   90,  95,  92,  64,  78,  75,  77,  73,  65,  78,  82,  75,  47,  54,  59,  71,  59,  56,  53,  42, 
-   60,  55,  40,  51,  60,  46,  36,  59,  46,  57,  67,  43,  51,  53,  53,  38,  54,  56,  55,  48, 
-   41,  46,  63,  63,  80,  77,  89, 102,  89,  98,  74,  86,  98,  93,  63,  76,  98,  77,  48, 101, 
-   86,  88, 100,  82, 102,  90,  95,  75,  86, 103,  83,  98,  80, 104,  98,  86,  71,  74,  80,  90, 
-   86,  87,  73,  70,  81,  83,  55,  66,  90,  66,  58,  84,  77,  84,  93,  72,  99,  75,  85,  65, 
-   70,  89,  71,  82,  64,  79,  82,  80,  67,  73,  86, 101,  78,  97,  66,  64,  84,  80,  55,  64, 
-   79,  73,  51,  79,  89,  68,  94,  77, 109, 102,  82,  61,  66,  93,  88,  70,  82,  82,  85,  69, 
-   69,  72,  66,  97,  85,  90,  70,  59,  76,  89,  53,  56,  90,  79,  71,  64,  70,  67, 100,  92, 
-  106,  89,  83,  78,  73,  80,  70,  72,  65,  70,  92,  88,  57,  76,  55,  85,  66,  80,  61,  63, 
-   63,  78,  54,  58,  71,  73,  54,  63,  63,  62,  89,  76,  86,  81,  83,  54,  70,  81,  78,  64, 
-   56,  72,  74,  81,  75,  63,  68,  89,  65,  77,  58,  68,  75,  83,  52,  62,  82,  63,  55,  75, 
-   51,  70,  95,  66,  83,  77,  86,  61,  64,  77,  48,  70,  66,  82,  72,  75,  79,  71,  72,  89, 
-   78,  78,  66,  59,  91,  80,  55,  64,  79,  68,  54,  71,  67,  75,  87,  84, 100, 101,  76,  58, 
-   74,  82,  61,  74,  75,  97,  85,  79,  61,  55,  69,  68,  72,  65,  52,  64,  80,  73,  48,  54, 
-   71,  66,  42,  61,  66,  63,  92,  64,  85,  77,  73,  54,  74,  73,  76,  66,  62,  79,  85,  70, 
-   71,  84,  87,  81,  88,  86,  77,  77,  93,  88,  78,  71, 101,  89,  58,  84,  95,  81,  89,  97, 
-  104,  79,  83,  76,  90,  81,  91,  74,  70,  76,  91,  80,  51,  48,  56,  69,  47,  63,  54,  42, 
-   63,  63,  42,  52,  66,  56,  39,  59,  61,  52,  59,  63,  62,  68,  57,  35,  67,  58,  56,  52, 
-   61,  63,  60,  47,  85,  75,  89, 106,  88,  95,  74,  82, 107, 107,  64,  78,  98,  90,  62,  91, 
-   79,  87, 111,  84, 104, 106,  96,  68,  94,  99,  81,  89,  79, 105,  95,  86,  65,  63,  77,  89, 
-   66,  88,  56,  73,  82,  92,  41,  62,  85,  66,  50,  81,  57,  71,  77,  78,  86,  89,  77,  53, 
-   67,  78,  61,  63,  72,  82,  69,  66,  59,  46,  55,  70,  56,  64,  45,  50,  65,  64,  42,  56, 
-   78,  49,  51,  52,  38,  56,  72,  55,  73,  72,  61,  50,  63,  60,  47,  57,  55,  73,  53,  68, 
-   85,  88,  91,  96,  82,  89,  73,  76,  87,  86,  67,  69,  96,  84,  57,  89,  87,  89,  99,  88, 
-  104,  90,  85,  75,  88,  92,  85,  75,  74,  87, 103,  94,  55,  48,  56,  65,  72,  50,  45,  51, 
-   63,  62,  47,  57,  79,  53,  36,  63,  54,  68,  71,  59,  63,  61,  63,  41,  50,  73,  57,  59, 
-   56,  76,  73,  65,  61,  64,  61,  79,  53,  73,  57,  44,  61,  59,  59,  56,  81,  59,  49,  62, 
-   65,  55,  69,  72,  79,  70,  58,  57,  68,  61,  62,  50,  57,  60,  66,  66,  63,  77,  81,  89, 
-   85,  81,  76,  73,  78,  95,  59,  70,  81,  77,  46,  79,  78,  79,  83,  81,  84,  82,  85,  48, 
-   74,  85,  85,  74,  74,  80,  80,  74,  60,  76,  80,  97,  88,  93,  66,  66,  73,  84,  56,  70, 
-   90,  63,  58,  78,  73,  93,  90,  78,  94,  88,  82,  67,  85,  70,  81,  86,  74,  82,  88,  82, 
-   68,  73,  75,  91,  78,  97,  71,  66,  74,  85,  50,  59,  86,  77,  70,  74,  75,  74,  99,  82, 
-   99,  91,  86,  65,  80,  77,  72,  69,  60,  78,  90,  87,  79,  69,  74,  98,  70,  86,  81,  67, 
-   69,  78,  48,  65,  88,  70,  70,  70,  69,  72,  96,  90,  99,  82,  81,  76,  98,  73,  74,  71, 
-   69,  73,  94,  89
+   36,  44,  57,  50,  54,  36,  38,  46,  55,  25,  38,  34,  51,  30,  40,  32,  37,  34,  38,  52, 
+   51,  40,  28,  32,  41,  22,  26,  35,  49,  35,  42,  23,  26,  26,  33,  36,  52,  40,  45,  49, 
+   50,  34,  41,  35,  44,  25,  23,  23,  31,  29,  39,  46,  50,  36,  31,  32,  42,  32,  34,  41, 
+   44,  33,  43,  30,  31,  28,  39,  46,  50,  40,  35,  37,  43,  35,  33,  43,  43,  29,  37,  29, 
+   27,  22,  30,  33,  43,  31,  32,  25,  36,  31,  31,  29,  40,  28,  26,  22,  29,  42,  48,  51, 
+   65,  52,  43,  54,  63,  34,  42,  44,  56,  33,  38,  32,  26,  22,  23,  38,  49,  32,  26,  30, 
+   43,  22,  24,  27,  45,  24,  26,  17,  35,  35,  47,  51,  59,  59,  43,  42,  43,  28,  37,  43, 
+   56,  48,  36,  32,  28,  19,  28,  34,  46,  34,  28,  34,  45,  20,  29,  28,  50,  32,  26,  21, 
+   37,  38,  51,  50,  55,  45,  38,  49,  56,  28,  38,  40,  50,  29,  44,  26,  32,  35,  50,  43, 
+   53,  44,  41,  41,  34,  24,  35,  34,  39,  33,  34,  29,  21,  33,  31,  45,  48,  42,  27,  29, 
+   40,  17,  21,  32,  45,  30,  29,  26,  26,  27,  38,  33,  29,  31,  32,  31,  35,  25,  29,  29, 
+   34,  15,  25,  23,  34,  28,  44,  45,  41,  41,  37,  45,  45,  17,  34,  44,  46,  30,  43,  29, 
+   31,  36,  37,  50,  54,  44,  28,  40,  38,  22,  27,  28,  45,  32,  36,  22
 };
 
 
-#endif //__DATASET_H
+#endif //__DATASET_H
\ No newline at end of file
index 13763ec52f916562a31012d95360e5f700b50aa6..798d992ed98f77abcc537b4f50058faff39d059c 100755 (executable)
@@ -191,7 +191,7 @@ sub main()
   print "\n#define __DATASET_H";
   print "\n\#define ARRAY_SIZE ".($opts{"size"}*$opts{"size"})." \n\n";
   print "\n\#define DIM_SIZE ".$opts{"size"}." \n\n";
-  print "\ntypedef double data_t;";
+  print "\ntypedef int data_t;";
    
   printArray( "input1_data", \@values1 );
   printArray( "input2_data", \@values2 );
index 349e47e0fb07bbf8af9aad8f105de7d34a37baba..9c68adaf9e7937835fdd577cb98359d7913a052b 100644 (file)
@@ -55,7 +55,7 @@ void thread_entry(int cid, int nc)
 
    stats(matmul(cid, nc, DIM_SIZE, input1_data, input2_data, results_data); barrier(nc), DIM_SIZE/DIM_SIZE/DIM_SIZE);
  
-   int res = verifyDouble(ARRAY_SIZE, results_data, verify_data);
+   int res = verify(ARRAY_SIZE, results_data, verify_data);
 
 #ifdef DEBUG
    printArray("results:", ARRAY_SIZE, results_data);
index 4c871d58c33dd62627a748ee7d2e3ce52feed38e..52e49c5b75fd092aff865b1d255b6523f81cae31 100644 (file)
-// See LICENSE for license details.
-
 #define R 500
 #define C 500
-#define NNZ 4998
-const double val[4998] = {
-  644,
-  344,
-  346,
-  101,
-  553,
-  823,
-  33,
-  274,
-  179,
-  575,
-  529,
-  820,
-  652,
-  401,
-  887,
-  736,
-  660,
-  728,
-  65,
-  230,
-  664,
-  131,
-  819,
-  499,
-  450,
-  11,
-  958,
+#define NNZ 2399
+const double val[2399] = {
+  566,
+  508,
+  850,
+  780,
+  944,
+  598,
+  772,
+  880,
+  764,
+  656,
+  138,
+  757,
+  929,
+  234,
+  168,
+  629,
+  639,
+  434,
+  849,
+  793,
+  203,
+  811,
+  250,
+  770,
+  322,
   535,
-  468,
-  748,
-  539,
-  494,
-  469,
-  834,
-  733,
-  509,
-  86,
-  824,
-  771,
-  546,
-  662,
-  184,
-  541,
-  344,
-  329,
-  986,
-  910,
-  166,
-  784,
-  131,
-  120,
-  75,
-  346,
-  172,
-  710,
-  601,
-  777,
-  51,
-  282,
-  395,
-  375,
-  379,
-  551,
-  843,
-  278,
-  259,
-  304,
-  988,
-  975,
-  125,
-  719,
-  193,
-  18,
-  245,
-  754,
-  585,
-  228,
-  852,
-  840,
-  888,
-  711,
-  960,
-  674,
-  523,
-  339,
-  737,
-  796,
-  607,
-  394,
-  219,
-  370,
-  854,
-  353,
-  195,
-  624,
-  951,
+  826,
+  609,
+  899,
+  926,
+  211,
   755,
-  64,
-  825,
-  145,
-  296,
-  456,
-  585,
-  884,
-  242,
-  484,
-  902,
-  884,
-  224,
+  900,
+  691,
+  386,
+  821,
+  454,
+  791,
+  849,
+  256,
+  821,
+  29,
+  679,
+  944,
+  55,
   689,
+  453,
+  631,
+  799,
+  854,
+  545,
+  97,
+  337,
+  258,
+  695,
+  667,
+  581,
+  104,
+  491,
+  517,
+  761,
+  369,
+  316,
+  42,
+  86,
+  432,
+  954,
+  736,
+  333,
   321,
-  578,
-  835,
-  891,
-  347,
-  273,
-  285,
-  415,
-  586,
-  402,
-  890,
-  414,
-  723,
-  717,
-  383,
-  530,
-  993,
-  884,
-  887,
-  246,
-  219,
-  61,
-  845,
-  430,
-  636,
-  773,
+  184,
+  920,
+  258,
+  949,
+  604,
+  907,
+  70,
+  453,
+  796,
+  102,
+  3,
+  105,
   371,
-  63,
-  596,
-  492,
-  976,
-  253,
-  92,
-  744,
-  465,
-  848,
-  967,
-  529,
-  646,
-  802,
-  363,
-  30,
-  789,
-  312,
+  388,
+  153,
+  908,
+  176,
+  567,
+  334,
+  973,
+  911,
+  323,
+  681,
+  300,
+  265,
+  711,
+  871,
+  870,
+  463,
+  969,
+  535,
+  688,
+  276,
+  908,
+  384,
+  988,
+  256,
+  416,
+  258,
+  523,
+  80,
+  911,
+  241,
   191,
-  155,
-  220,
-  394,
-  527,
-  392,
-  207,
-  832,
-  930,
-  687,
-  874,
-  306,
-  805,
-  233,
-  97,
-  348,
-  616,
-  309,
-  99,
-  341,
-  862,
-  6,
-  524,
-  995,
-  786,
-  696,
-  81,
-  517,
-  428,
-  663,
-  895,
-  469,
-  619,
-  620,
-  941,
-  351,
-  285,
-  229,
-  808,
-  18,
-  986,
-  824,
-  764,
-  481,
-  519,
-  524,
-  815,
-  910,
+  411,
+  127,
+  894,
+  259,
+  664,
+  129,
+  609,
+  146,
+  763,
+  109,
+  369,
+  881,
   878,
-  436,
-  810,
-  597,
-  418,
-  64,
-  354,
-  17,
-  72,
-  465,
-  387,
-  445,
-  89,
-  721,
-  75,
-  921,
-  948,
-  725,
-  236,
-  710,
-  456,
-  993,
-  451,
-  336,
-  223,
-  766,
-  86,
-  927,
-  70,
-  402,
-  435,
-  314,
-  666,
-  420,
-  755,
-  145,
-  676,
-  122,
-  573,
-  213,
-  309,
-  697,
-  383,
-  430,
-  805,
-  192,
-  567,
-  192,
-  212,
-  81,
-  431,
-  467,
-  323,
+  224,
+  635,
+  498,
+  460,
+  363,
+  481,
+  222,
+  761,
+  489,
+  753,
   62,
-  55,
-  30,
-  973,
-  532,
-  773,
-  960,
-  120,
-  670,
-  207,
-  906,
-  560,
-  265,
+  261,
+  389,
+  351,
+  189,
+  319,
+  557,
+  5,
+  485,
+  806,
+  119,
+  366,
+  85,
+  123,
+  918,
+  66,
+  205,
+  786,
+  313,
+  555,
+  22,
+  760,
+  904,
+  255,
+  912,
+  950,
+  676,
+  342,
+  736,
+  251,
+  170,
+  923,
+  790,
+  312,
+  716,
+  648,
+  57,
+  676,
+  972,
+  250,
+  215,
+  792,
+  798,
+  915,
+  61,
+  381,
   897,
-  812,
-  434,
-  943,
-  818,
-  658,
-  773,
-  227,
+  686,
+  568,
+  393,
+  969,
+  893,
+  205,
+  721,
+  684,
+  38,
+  667,
+  704,
+  750,
+  364,
+  123,
+  158,
+  892,
+  306,
   409,
-  787,
-  676,
-  752,
-  717,
+  188,
+  394,
+  554,
+  602,
+  59,
+  9,
+  987,
+  897,
+  332,
+  873,
+  770,
+  632,
+  434,
+  598,
+  599,
+  207,
+  211,
+  410,
+  768,
+  708,
+  462,
   687,
-  841,
-  813,
-  545,
-  34,
-  851,
-  457,
-  838,
-  856,
-  392,
-  287,
-  99,
+  300,
+  864,
+  839,
   183,
-  86,
-  614,
-  616,
-  36,
-  852,
-  136,
-  632,
-  67,
-  349,
-  309,
-  117,
-  590,
-  884,
-  763,
-  69,
-  921,
-  323,
-  28,
-  714,
-  416,
-  661,
-  380,
+  21,
+  282,
+  990,
+  578,
+  952,
+  42,
+  149,
+  235,
+  777,
+  156,
+  568,
+  400,
   783,
-  182,
-  580,
+  238,
+  390,
+  108,
+  422,
+  392,
+  414,
+  338,
+  524,
+  535,
+  893,
+  160,
+  163,
+  798,
+  836,
+  662,
+  181,
+  946,
+  774,
+  113,
+  438,
+  721,
+  631,
+  577,
+  739,
+  62,
+  928,
+  523,
+  352,
+  603,
+  974,
+  291,
+  47,
+  875,
+  260,
+  754,
+  13,
+  890,
+  989,
+  104,
+  22,
+  36,
+  803,
+  39,
+  241,
+  95,
+  589,
+  603,
   230,
-  678,
-  35,
-  68,
-  938,
-  886,
-  408,
-  327,
-  77,
-  514,
-  866,
-  66,
-  228,
-  981,
-  9,
-  932,
-  270,
+  471,
+  978,
   617,
-  373,
-  822,
-  118,
-  231,
-  812,
-  982,
-  242,
-  937,
-  889,
-  502,
-  483,
-  956,
-  196,
-  857,
-  697,
-  481,
-  346,
-  326,
-  394,
-  569,
-  697,
-  900,
-  718,
-  88,
-  82,
-  278,
-  930,
-  643,
-  964,
-  808,
-  991,
-  124,
-  521,
-  159,
-  119,
-  684,
-  311,
-  232,
-  356,
-  648,
-  501,
-  502,
-  405,
-  148,
-  407,
-  439,
-  389,
-  355,
-  713,
-  936,
-  57,
-  377,
-  428,
-  68,
-  678,
-  432,
-  23,
+  603,
+  652,
+  21,
+  755,
+  294,
+  753,
+  609,
+  494,
+  93,
+  387,
+  243,
+  128,
+  777,
   636,
-  149,
-  78,
-  885,
-  648,
-  741,
-  168,
-  551,
+  303,
+  665,
+  761,
+  355,
+  611,
+  605,
   627,
-  619,
-  287,
-  199,
-  533,
-  71,
-  297,
-  920,
-  667,
-  958,
-  963,
-  532,
-  1,
-  256,
-  378,
-  820,
-  287,
-  278,
-  785,
-  382,
-  321,
-  602,
-  756,
+  834,
+  616,
+  59,
+  109,
+  268,
+  638,
+  117,
+  338,
+  89,
+  95,
+  4,
+  64,
+  575,
+  300,
+  783,
+  453,
   878,
-  752,
-  986,
-  267,
-  19,
-  550,
-  634,
-  594,
-  404,
-  791,
-  125,
-  189,
-  399,
-  154,
-  736,
-  937,
-  734,
-  831,
-  163,
-  254,
-  391,
-  683,
-  525,
-  928,
-  455,
-  127,
-  91,
-  373,
-  722,
-  663,
-  532,
-  745,
-  601,
-  238,
-  812,
-  972,
-  256,
-  422,
-  195,
-  437,
-  339,
-  149,
-  881,
-  777,
+  939,
+  984,
+  338,
+  344,
+  138,
+  291,
+  440,
+  748,
+  277,
+  628,
+  511,
+  894,
   68,
-  611,
-  633,
-  196,
-  500,
-  464,
-  119,
-  375,
+  412,
+  958,
   540,
-  659,
-  463,
-  922,
-  646,
-  132,
-  620,
-  369,
-  117,
-  611,
-  817,
-  906,
-  725,
-  746,
-  807,
-  855,
-  561,
-  549,
+  672,
+  935,
+  316,
+  519,
   4,
-  503,
-  944,
-  258,
-  460,
-  511,
-  378,
-  331,
-  247,
-  941,
-  180,
-  345,
-  671,
-  909,
-  766,
-  250,
-  268,
-  948,
-  766,
-  923,
-  309,
-  426,
-  523,
-  144,
-  421,
-  765,
-  767,
-  224,
-  496,
-  680,
-  337,
-  494,
-  345,
-  402,
-  727,
-  114,
-  377,
-  27,
-  285,
-  703,
-  606,
-  921,
-  212,
   613,
-  910,
-  865,
-  258,
-  502,
-  382,
-  906,
-  353,
-  550,
-  219,
-  251,
-  751,
-  731,
+  501,
+  908,
+  984,
   820,
-  644,
-  522,
-  380,
-  442,
-  257,
-  565,
-  14,
-  941,
-  123,
-  172,
-  722,
-  997,
-  121,
-  528,
-  826,
-  546,
-  797,
-  143,
-  698,
-  232,
-  529,
-  747,
-  355,
-  594,
-  663,
+  424,
+  726,
+  592,
+  526,
   869,
-  970,
-  506,
-  472,
-  406,
-  544,
-  730,
-  460,
-  738,
-  475,
-  242,
-  768,
-  937,
-  489,
-  46,
-  470,
-  563,
-  276,
-  867,
-  470,
-  376,
-  113,
-  350,
-  738,
-  953,
-  131,
-  714,
-  896,
-  454,
+  330,
+  419,
   28,
-  84,
-  440,
-  37,
-  508,
-  964,
-  541,
-  900,
-  914,
-  530,
-  289,
-  251,
-  559,
-  27,
-  240,
-  945,
-  530,
-  503,
-  791,
-  737,
-  958,
-  400,
-  765,
-  656,
-  887,
-  832,
-  423,
-  950,
-  19,
-  855,
-  522,
-  415,
-  662,
-  672,
-  929,
-  581,
-  190,
-  703,
-  983,
   540,
-  278,
-  226,
-  182,
-  441,
-  693,
-  617,
-  110,
-  728,
-  886,
-  499,
-  705,
-  953,
-  914,
-  222,
-  939,
-  365,
-  129,
+  143,
+  279,
+  79,
+  712,
+  760,
+  306,
+  806,
   507,
-  647,
-  291,
-  464,
-  588,
-  380,
-  73,
-  701,
-  186,
-  550,
-  513,
-  374,
-  583,
-  329,
-  235,
-  431,
-  989,
-  41,
-  337,
-  369,
-  481,
-  996,
-  283,
-  632,
-  200,
-  697,
-  638,
-  93,
-  284,
-  858,
-  323,
-  627,
-  82,
-  685,
-  538,
-  389,
-  356,
-  881,
+  807,
+  716,
+  729,
+  163,
+  151,
+  256,
+  873,
   90,
-  940,
-  974,
-  907,
-  854,
-  998,
-  135,
-  103,
-  85,
-  961,
-  406,
-  916,
-  205,
+  374,
+  89,
+  122,
+  819,
+  253,
+  961,
+  62,
   208,
-  46,
-  912,
-  909,
-  476,
-  992,
-  131,
-  846,
-  620,
-  571,
-  408,
-  462,
-  863,
-  99,
-  462,
-  33,
-  614,
-  107,
-  909,
-  59,
-  487,
-  888,
-  563,
-  30,
-  132,
-  195,
-  382,
-  349,
-  233,
-  90,
-  556,
-  443,
-  452,
-  821,
-  686,
-  891,
-  424,
+  830,
+  365,
+  231,
+  905,
+  961,
+  340,
+  928,
+  911,
+  83,
+  118,
+  864,
+  310,
+  699,
+  138,
+  221,
+  928,
+  130,
+  775,
+  425,
+  783,
+  519,
+  852,
+  187,
+  795,
+  772,
+  627,
+  709,
+  81,
   264,
-  595,
-  693,
-  314,
-  938,
-  392,
-  105,
-  668,
-  896,
-  278,
-  59,
-  935,
-  598,
-  796,
-  323,
-  755,
-  707,
-  19,
-  415,
-  34,
-  72,
-  217,
-  912,
-  27,
-  510,
-  716,
-  598,
-  147,
-  809,
-  0,
-  897,
-  13,
-  684,
-  132,
-  269,
-  458,
-  594,
-  471,
-  768,
-  948,
-  70,
-  288,
-  468,
-  796,
-  128,
-  939,
-  516,
+  359,
+  149,
+  692,
+  178,
+  247,
+  51,
+  869,
+  30,
+  659,
+  190,
+  494,
+  80,
+  531,
   883,
-  685,
-  175,
-  300,
-  974,
-  777,
-  172,
-  865,
-  602,
-  476,
-  82,
+  557,
   170,
-  519,
-  438,
-  820,
-  426,
-  274,
-  120,
-  412,
-  203,
-  770,
-  953,
-  864,
-  881,
-  891,
-  793,
-  602,
-  48,
-  433,
-  774,
-  133,
-  914,
-  548,
-  696,
-  419,
-  841,
-  154,
+  759,
   331,
-  75,
-  774,
-  307,
-  689,
-  360,
-  235,
-  822,
-  545,
-  77,
-  571,
-  192,
-  712,
-  877,
-  732,
-  92,
-  842,
-  607,
-  150,
-  494,
-  565,
-  70,
-  107,
-  794,
-  459,
-  310,
-  115,
-  34,
-  938,
-  722,
-  498,
-  748,
-  297,
-  995,
-  592,
-  369,
-  625,
-  803,
-  270,
-  250,
-  941,
-  984,
-  472,
-  662,
-  824,
-  667,
-  195,
-  518,
-  122,
-  648,
-  796,
-  961,
-  590,
-  585,
-  98,
-  931,
-  819,
-  755,
-  25,
-  560,
-  693,
+  588,
+  939,
+  953,
+  407,
+  453,
+  223,
+  919,
+  147,
+  666,
+  165,
+  204,
+  924,
+  178,
   361,
-  964,
-  391,
-  279,
-  23,
-  198,
-  473,
-  792,
-  87,
-  149,
-  969,
+  766,
+  455,
+  232,
+  86,
+  194,
+  536,
+  942,
   671,
-  367,
-  140,
-  421,
-  260,
-  652,
-  44,
-  419,
-  564,
-  72,
-  710,
-  671,
-  880,
-  350,
-  399,
-  984,
-  851,
-  790,
-  80,
-  763,
-  350,
+  595,
   420,
-  657,
-  374,
-  354,
-  523,
-  994,
-  927,
-  738,
-  263,
-  462,
-  693,
-  442,
-  280,
-  924,
-  700,
-  7,
-  971,
+  543,
+  490,
+  570,
+  547,
+  273,
+  465,
+  776,
+  845,
+  753,
+  591,
+  22,
+  320,
+  569,
+  964,
+  701,
+  483,
+  100,
+  757,
+  514,
+  850,
+  50,
+  451,
+  993,
+  79,
+  79,
+  790,
+  410,
+  409,
+  494,
+  245,
+  881,
+  676,
+  484,
+  821,
+  183,
+  45,
+  343,
+  76,
+  423,
+  855,
+  188,
+  16,
+  355,
+  159,
+  255,
+  705,
   147,
-  254,
-  597,
-  698,
-  905,
-  541,
-  279,
-  83,
-  552,
-  469,
-  518,
-  582,
-  662,
-  78,
-  433,
-  903,
-  471,
-  767,
+  400,
+  997,
+  264,
+  831,
+  644,
+  390,
+  395,
+  485,
+  457,
+  879,
+  478,
+  900,
+  187,
+  699,
+  559,
+  681,
+  947,
+  137,
+  637,
+  150,
+  700,
+  729,
   166,
-  356,
+  120,
+  325,
+  841,
+  956,
+  74,
+  576,
+  532,
+  396,
+  157,
+  327,
+  601,
+  707,
+  681,
+  813,
   593,
-  502,
-  354,
-  481,
-  124,
-  660,
-  170,
-  871,
-  804,
+  452,
+  45,
+  936,
+  466,
+  706,
+  546,
+  265,
+  769,
+  71,
+  862,
   37,
-  487,
-  355,
-  732,
-  109,
-  848,
-  106,
-  593,
-  430,
-  622,
-  946,
-  296,
-  270,
-  385,
-  180,
-  309,
-  981,
-  122,
-  54,
-  193,
-  469,
-  141,
-  453,
-  223,
+  764,
+  111,
+  468,
+  844,
+  693,
+  740,
+  128,
+  19,
+  579,
+  894,
+  928,
+  160,
+  787,
+  438,
+  814,
+  274,
+  675,
+  128,
+  451,
+  626,
+  879,
+  931,
+  894,
+  57,
+  181,
+  839,
+  121,
+  728,
+  410,
+  793,
+  292,
+  566,
+  472,
+  893,
+  579,
+  986,
+  159,
+  585,
   34,
+  485,
+  279,
+  634,
+  353,
+  626,
+  504,
+  574,
+  19,
+  54,
+  489,
+  829,
+  768,
   246,
-  479,
-  587,
-  577,
-  684,
-  694,
-  751,
-  508,
-  790,
-  369,
-  924,
-  371,
-  961,
-  852,
-  961,
-  999,
-  819,
-  64,
-  707,
-  879,
-  743,
-  94,
-  969,
-  838,
-  365,
-  100,
-  603,
-  788,
-  597,
-  426,
-  207,
-  936,
-  968,
-  390,
-  831,
-  423,
-  428,
-  771,
-  498,
-  838,
-  18,
-  944,
-  789,
-  124,
-  917,
-  645,
-  878,
-  963,
-  896,
-  825,
-  141,
-  989,
-  341,
-  567,
-  400,
-  194,
-  902,
-  94,
-  177,
-  527,
-  498,
-  175,
-  470,
-  651,
-  870,
-  482,
-  892,
-  884,
-  564,
-  601,
-  905,
-  151,
-  605,
-  910,
-  573,
-  164,
-  863,
-  64,
-  292,
-  799,
-  547,
-  648,
-  979,
-  738,
-  85,
-  155,
-  596,
-  744,
-  993,
-  232,
-  55,
-  20,
-  751,
-  473,
-  463,
-  768,
-  802,
-  334,
-  343,
-  923,
-  194,
-  812,
-  439,
-  482,
-  100,
-  629,
-  271,
-  430,
-  451,
-  946,
-  206,
-  254,
-  174,
-  307,
-  119,
-  611,
-  462,
-  126,
-  433,
-  377,
-  57,
-  974,
+  421,
+  116,
+  267,
+  801,
+  299,
+  279,
+  397,
+  331,
+  396,
+  11,
+  80,
+  682,
+  752,
+  101,
+  832,
+  673,
+  521,
   42,
-  78,
-  808,
-  659,
-  471,
-  275,
-  305,
-  423,
-  954,
-  47,
-  914,
-  361,
+  883,
+  663,
   905,
-  947,
-  579,
-  874,
-  671,
-  120,
-  206,
-  717,
-  57,
-  381,
-  438,
-  708,
-  983,
   284,
-  217,
-  453,
-  396,
-  852,
-  20,
-  827,
-  260,
-  705,
-  321,
-  553,
-  690,
-  695,
-  327,
-  193,
-  851,
-  958,
-  247,
-  587,
-  634,
-  895,
-  566,
-  977,
-  513,
-  397,
-  764,
-  879,
-  609,
-  359,
-  359,
-  824,
-  262,
-  826,
-  653,
-  739,
-  233,
-  11,
-  508,
-  861,
-  619,
-  97,
-  880,
+  218,
+  59,
   888,
-  627,
-  481,
-  48,
-  424,
-  197,
-  347,
+  86,
+  623,
+  878,
+  117,
+  157,
+  70,
   309,
-  950,
-  928,
-  122,
-  889,
-  102,
-  169,
-  657,
-  15,
-  139,
-  9,
-  25,
-  101,
-  787,
-  472,
-  847,
-  403,
-  333,
-  684,
-  506,
-  519,
-  950,
-  522,
-  330,
+  877,
+  803,
+  529,
+  666,
+  274,
+  192,
+  667,
   558,
-  842,
-  632,
-  60,
-  424,
-  792,
-  892,
-  970,
-  937,
-  735,
-  957,
-  143,
-  224,
-  332,
-  204,
-  576,
-  182,
-  974,
-  902,
-  486,
-  540,
-  536,
-  665,
-  712,
-  9,
-  613,
-  672,
-  430,
-  175,
-  571,
-  317,
-  280,
+  938,
+  383,
+  542,
+  237,
+  377,
+  674,
+  783,
+  638,
   609,
-  917,
-  90,
-  901,
-  427,
-  964,
-  636,
-  927,
-  974,
-  376,
-  213,
-  699,
-  263,
-  457,
-  45,
-  118,
-  858,
-  450,
-  811,
-  555,
-  104,
-  525,
-  237,
-  290,
-  330,
-  225,
-  162,
-  498,
-  305,
-  567,
-  64,
+  419,
   359,
-  444,
-  445,
-  112,
-  583,
-  933,
-  817,
-  2,
-  510,
-  912,
-  760,
-  125,
-  313,
-  233,
-  455,
-  479,
-  271,
-  513,
+  309,
+  53,
+  65,
+  277,
+  526,
+  853,
+  659,
+  263,
+  280,
+  332,
+  940,
+  336,
+  748,
   645,
-  286,
-  452,
-  877,
-  972,
-  489,
-  55,
-  43,
-  188,
+  227,
+  475,
+  945,
+  924,
+  845,
+  253,
+  798,
+  49,
+  241,
+  761,
+  379,
+  423,
+  680,
+  837,
+  116,
+  378,
+  416,
+  553,
+  802,
+  839,
+  339,
+  424,
+  40,
+  101,
+  744,
+  934,
+  119,
+  217,
+  478,
+  850,
   998,
-  739,
-  929,
-  520,
-  504,
-  875,
-  388,
-  196,
-  764,
-  238,
-  730,
-  907,
-  872,
-  667,
-  468,
-  896,
-  273,
-  30,
-  860,
-  978,
-  24,
-  799,
-  367,
-  435,
-  737,
-  788,
-  846,
-  697,
-  335,
-  261,
-  799,
-  603,
-  887,
-  437,
-  931,
-  200,
-  991,
-  872,
-  796,
-  872,
-  259,
-  888,
-  581,
-  174,
-  60,
-  626,
-  846,
-  53,
-  309,
-  261,
-  26,
-  648,
-  468,
-  962,
-  198,
-  358,
+  513,
   320,
-  823,
-  769,
-  522,
-  237,
-  990,
-  651,
-  121,
+  966,
+  306,
+  774,
+  442,
+  417,
+  646,
+  652,
+  15,
+  637,
+  199,
+  653,
+  516,
+  380,
+  983,
+  281,
+  196,
+  973,
+  604,
+  378,
+  824,
+  773,
+  835,
+  724,
+  450,
+  321,
+  446,
   778,
-  635,
-  571,
-  700,
-  339,
-  946,
-  649,
-  741,
-  48,
-  311,
-  468,
-  958,
-  65,
-  79,
-  64,
-  492,
-  884,
-  403,
-  360,
-  523,
-  821,
-  717,
-  597,
-  324,
-  400,
-  594,
-  64,
-  521,
-  54,
-  520,
-  434,
-  474,
-  434,
-  729,
-  477,
-  167,
+  935,
+  296,
+  752,
+  27,
+  824,
+  933,
+  145,
+  708,
+  691,
+  433,
+  627,
   511,
-  174,
-  325,
-  621,
-  696,
-  999,
-  769,
-  430,
-  419,
-  102,
-  89,
-  833,
-  283,
   619,
-  859,
-  96,
-  912,
-  530,
-  245,
-  976,
-  701,
-  961,
-  977,
-  796,
-  230,
-  437,
-  640,
-  770,
-  644,
-  141,
-  308,
-  863,
-  335,
-  974,
-  743,
-  334,
-  127,
-  349,
-  385,
-  915,
-  286,
-  3,
-  906,
-  326,
-  117,
-  802,
-  501,
-  683,
-  274,
-  158,
-  132,
-  199,
-  691,
-  991,
-  174,
-  573,
-  610,
-  307,
-  434,
-  30,
-  332,
-  664,
-  774,
-  118,
-  719,
-  663,
-  969,
-  179,
-  296,
-  396,
-  209,
-  993,
-  479,
-  722,
-  113,
-  985,
-  855,
-  123,
-  555,
-  352,
-  190,
-  613,
-  614,
-  155,
-  709,
-  745,
-  668,
-  48,
-  820,
-  685,
-  43,
-  656,
-  62,
-  256,
-  854,
-  969,
-  476,
-  533,
-  255,
-  472,
-  592,
-  865,
-  547,
-  12,
-  840,
-  919,
-  913,
-  685,
-  45,
-  339,
-  745,
-  658,
-  112,
-  628,
-  750,
-  890,
+  415,
+  263,
   680,
-  618,
-  655,
-  155,
-  346,
-  142,
-  815,
-  447,
-  165,
-  33,
-  727,
-  988,
-  408,
-  565,
-  661,
-  538,
-  899,
-  687,
-  940,
-  87,
-  287,
-  390,
-  399,
-  942,
-  499,
-  334,
-  939,
-  143,
-  756,
-  661,
-  976,
-  168,
-  159,
-  919,
-  899,
-  8,
-  574,
-  884,
-  707,
-  124,
-  598,
-  222,
-  726,
-  899,
-  897,
-  481,
-  520,
-  92,
-  796,
-  371,
-  464,
-  287,
-  679,
-  636,
-  766,
-  961,
-  116,
-  895,
-  404,
-  353,
-  918,
-  813,
-  513,
-  447,
-  968,
-  3,
-  164,
-  396,
-  310,
-  426,
-  803,
-  469,
-  660,
-  332,
-  7,
-  873,
-  562,
-  270,
-  252,
-  210,
-  480,
-  489,
-  554,
-  992,
-  940,
-  459,
-  347,
-  1,
-  949,
-  546,
-  642,
-  797,
-  746,
-  761,
-  220,
-  821,
-  268,
-  107,
-  302,
+  880,
+  201,
+  700,
+  440,
+  579,
+  545,
+  445,
   483,
-  429,
-  515,
-  138,
-  973,
-  220,
-  694,
-  231,
-  75,
-  367,
-  161,
-  595,
-  40,
-  3,
-  772,
-  656,
-  46,
-  898,
-  664,
-  689,
-  74,
-  273,
-  612,
-  376,
-  662,
-  717,
-  467,
-  909,
-  85,
-  474,
-  922,
-  796,
-  257,
-  816,
-  413,
-  20,
-  736,
-  730,
-  857,
-  848,
-  293,
-  44,
-  652,
-  803,
-  915,
-  48,
-  569,
-  869,
-  661,
-  949,
-  79,
-  692,
-  552,
-  717,
-  337,
-  473,
-  874,
-  490,
-  864,
-  33,
-  51,
-  892,
-  333,
-  36,
-  305,
-  697,
-  411,
-  317,
-  243,
-  689,
-  128,
-  287,
-  947,
-  13,
-  709,
-  768,
-  630,
-  916,
-  963,
-  68,
-  464,
-  329,
-  381,
-  849,
-  568,
-  397,
-  124,
-  434,
-  859,
-  820,
-  845,
-  715,
-  716,
-  311,
-  431,
-  24,
-  929,
-  597,
-  529,
-  818,
-  81,
-  790,
-  784,
-  559,
-  353,
-  678,
-  118,
-  869,
-  941,
-  99,
-  606,
-  435,
-  76,
-  987,
-  652,
-  539,
-  749,
-  460,
-  946,
-  344,
-  6,
-  577,
-  444,
-  696,
-  75,
-  214,
-  157,
-  598,
-  467,
-  633,
-  283,
-  911,
-  78,
-  325,
-  725,
-  766,
-  546,
-  868,
-  85,
-  294,
-  581,
-  712,
-  752,
-  44,
-  165,
-  510,
-  985,
-  727,
-  323,
-  471,
-  870,
-  149,
-  238,
-  533,
-  411,
-  307,
-  260,
-  398,
-  106,
-  136,
-  131,
-  608,
-  629,
-  407,
-  846,
-  161,
-  386,
-  911,
-  531,
-  946,
-  508,
-  432,
-  489,
-  872,
-  810,
-  684,
-  343,
-  966,
-  409,
-  360,
-  503,
-  370,
-  701,
-  462,
-  113,
-  18,
-  245,
-  25,
-  804,
-  403,
-  723,
-  891,
-  647,
-  326,
-  387,
-  22,
-  334,
-  336,
-  803,
-  317,
-  32,
-  364,
-  553,
-  382,
-  749,
-  278,
-  819,
-  568,
-  413,
-  855,
-  430,
-  283,
-  772,
-  32,
-  442,
-  759,
-  145,
-  173,
-  101,
-  460,
-  278,
-  456,
-  900,
-  643,
-  41,
-  183,
-  489,
-  833,
-  545,
-  619,
-  341,
-  414,
-  557,
-  998,
-  678,
-  301,
-  206,
-  336,
-  852,
-  266,
-  516,
-  845,
-  334,
-  90,
-  270,
-  718,
-  170,
-  436,
-  363,
-  779,
-  761,
-  43,
-  118,
-  531,
-  368,
-  676,
-  7,
-  791,
-  115,
+  499,
+  953,
+  518,
+  77,
+  237,
+  980,
   923,
-  507,
-  649,
-  164,
-  116,
-  429,
-  516,
-  185,
-  160,
-  246,
-  888,
-  572,
-  767,
-  104,
-  692,
-  907,
-  500,
-  673,
-  160,
-  432,
-  449,
-  683,
-  959,
-  147,
-  79,
-  232,
-  853,
-  852,
-  898,
-  946,
-  475,
-  133,
-  640,
-  57,
-  324,
-  19,
-  172,
-  781,
-  178,
-  461,
-  875,
-  875,
-  730,
-  660,
-  418,
-  925,
-  113,
-  867,
-  362,
-  930,
-  17,
-  113,
-  346,
-  213,
-  301,
-  169,
-  807,
-  513,
-  349,
-  547,
-  409,
-  353,
-  389,
-  187,
-  877,
-  629,
-  472,
-  230,
-  515,
   809,
-  781,
-  981,
-  723,
-  992,
-  203,
-  987,
-  977,
-  135,
-  375,
-  656,
-  138,
-  972,
-  270,
-  656,
-  106,
-  620,
-  201,
-  630,
-  820,
-  707,
-  365,
-  825,
-  677,
-  815,
-  35,
-  201,
-  493,
-  518,
-  843,
-  75,
-  107,
-  581,
-  215,
-  831,
-  364,
-  554,
-  855,
-  123,
-  23,
-  825,
-  306,
-  408,
-  776,
-  99,
-  443,
-  866,
-  615,
-  597,
-  327,
-  574,
-  844,
-  493,
-  89,
-  563,
-  458,
-  55,
-  632,
-  771,
-  397,
-  373,
-  599,
-  347,
-  25,
-  333,
-  878,
-  326,
-  744,
-  68,
-  74,
-  824,
-  776,
-  920,
-  22,
-  166,
-  639,
-  692,
-  59,
-  123,
-  531,
-  276,
-  660,
-  772,
-  994,
-  200,
-  551,
-  693,
-  323,
-  14,
-  128,
-  157,
-  896,
-  936,
-  552,
-  148,
-  569,
-  796,
-  509,
-  342,
-  77,
-  194,
-  903,
-  815,
-  207,
-  488,
-  607,
-  733,
-  547,
-  481,
-  171,
-  709,
-  908,
-  741,
-  594,
-  518,
-  507,
-  42,
-  65,
-  322,
-  230,
-  736,
-  183,
-  443,
-  2,
-  362,
-  140,
-  746,
-  86,
-  367,
-  64,
-  746,
-  935,
-  976,
-  475,
-  404,
-  217,
-  237,
-  217,
-  915,
-  457,
-  913,
-  879,
-  671,
-  852,
-  196,
-  919,
-  855,
-  722,
-  398,
-  747,
-  543,
-  101,
-  816,
-  786,
-  129,
-  232,
-  959,
-  244,
-  936,
-  630,
-  362,
-  260,
-  112,
-  825,
-  363,
-  921,
-  178,
-  275,
-  498,
-  600,
-  843,
-  716,
-  949,
-  274,
-  371,
-  232,
-  524,
-  726,
-  355,
-  588,
-  248,
-  939,
-  639,
-  453,
-  660,
-  843,
-  244,
-  838,
-  747,
-  7,
-  963,
-  228,
-  409,
-  75,
-  251,
-  127,
-  878,
-  366,
-  293,
-  231,
-  973,
-  281,
-  753,
-  496,
-  843,
-  913,
-  934,
-  724,
-  618,
-  267,
-  798,
-  364,
-  613,
-  451,
-  447,
-  218,
-  886,
-  648,
-  886,
-  830,
-  259,
-  239,
-  879,
-  99,
-  279,
-  819,
-  439,
-  974,
+  532,
   877,
-  118,
-  306,
-  730,
-  200,
-  47,
-  736,
-  914,
-  829,
-  232,
-  739,
-  660,
-  170,
-  210,
-  284,
-  494,
-  544,
-  855,
-  411,
-  833,
-  547,
-  372,
-  348,
-  662,
-  810,
-  417,
-  278,
-  305,
-  562,
-  335,
-  688,
-  969,
-  437,
-  221,
-  613,
-  848,
-  384,
-  326,
-  350,
-  213,
-  730,
-  970,
-  446,
-  868,
-  920,
-  543,
-  953,
-  383,
-  421,
-  653,
-  85,
-  3,
-  551,
-  843,
-  963,
-  122,
-  533,
-  577,
-  535,
-  168,
-  12,
-  995,
-  666,
-  724,
-  457,
-  150,
-  417,
-  733,
-  464,
-  754,
-  86,
-  398,
-  755,
-  4,
-  76,
-  552,
-  87,
-  767,
-  193,
-  690,
-  504,
-  534,
-  748,
-  207,
-  245,
-  593,
-  61,
-  997,
-  358,
-  602,
-  420,
-  541,
-  98,
-  723,
-  185,
-  476,
-  469,
-  349,
-  843,
-  773,
-  374,
-  223,
-  868,
-  576,
-  998,
-  482,
-  321,
-  979,
-  316,
-  845,
-  400,
-  420,
-  30,
-  289,
-  42,
-  752,
-  986,
-  595,
-  999,
-  715,
-  763,
-  305,
-  209,
-  492,
-  335,
-  747,
-  505,
-  52,
-  829,
-  840,
-  814,
-  356,
-  836,
-  882,
-  300,
-  992,
-  830,
-  367,
-  856,
-  451,
-  971,
-  388,
-  874,
-  48,
-  970,
-  576,
-  731,
-  330,
-  258,
-  99,
-  606,
-  881,
-  687,
-  193,
-  67,
-  890,
-  705,
-  847,
-  222,
-  553,
-  910,
-  201,
-  303,
-  973,
-  927,
-  669,
-  234,
-  641,
-  983,
-  232,
-  590,
-  315,
-  72,
-  546,
-  971,
-  922,
-  40,
-  400,
-  604,
-  81,
-  145,
-  391,
-  508,
-  250,
-  935,
-  144,
-  206,
-  241,
-  858,
-  36,
-  844,
-  750,
-  563,
-  869,
-  417,
-  102,
-  659,
-  990,
-  906,
-  999,
-  950,
-  512,
-  558,
-  486,
-  639,
-  290,
-  391,
-  111,
   965,
-  325,
-  17,
-  848,
-  3,
-  529,
-  591,
-  898,
-  566,
-  352,
-  381,
-  301,
-  167,
-  749,
-  543,
-  720,
-  752,
-  975,
-  785,
-  185,
-  267,
-  32,
-  576,
-  95,
-  6,
-  772,
-  109,
-  609,
-  83,
-  889,
-  370,
-  986,
-  988,
-  514,
-  237,
-  596,
-  763,
-  7,
-  625,
-  238,
-  472,
-  245,
-  812,
-  532,
-  452,
-  862,
-  596,
-  490,
-  345,
-  796,
-  610,
-  44,
-  340,
-  815,
-  848,
-  860,
-  795,
-  504,
-  382,
-  497,
-  897,
-  833,
-  64,
-  328,
-  345,
-  812,
-  4,
-  314,
-  807,
-  397,
-  32,
-  762,
-  129,
-  620,
-  88,
-  561,
-  900,
-  995,
-  757,
-  808,
-  131,
-  336,
-  617,
-  977,
-  2,
-  943,
-  382,
-  250,
-  114,
-  920,
-  374,
-  192,
-  205,
-  64,
-  374,
-  628,
-  632,
-  166,
-  204,
-  780,
-  281,
-  205,
-  55,
-  393,
-  942,
-  33,
-  845,
-  959,
-  484,
-  992,
-  863,
-  799,
-  937,
-  222,
-  945,
-  165,
-  121,
-  140,
-  694,
-  350,
-  677,
-  703,
-  409,
-  851,
-  795,
-  889,
-  70,
-  730,
-  838,
-  982,
-  30,
-  231,
-  637,
-  892,
-  585,
-  511,
-  521,
-  639,
-  134,
-  324,
-  696,
-  801,
-  422,
-  218,
-  32,
-  499,
-  359,
-  132,
-  573,
-  971,
-  756,
-  412,
-  498,
-  514,
-  138,
-  134,
-  14,
-  440,
-  421,
-  391,
-  214,
-  517,
-  160,
-  127,
-  265,
-  575,
-  996,
-  640,
-  153,
-  900,
-  104,
-  962,
-  540,
-  363,
-  431,
-  301,
-  978,
-  859,
-  167,
-  378,
-  401,
-  159,
-  109,
-  63,
-  5,
-  804,
-  541,
-  341,
-  723,
-  937,
-  599,
-  46,
-  220,
-  514,
-  62,
-  0,
-  983,
-  889,
-  803,
   865,
-  727,
-  473,
-  886,
-  887,
-  140,
-  64,
-  532,
-  677,
-  309,
-  585,
-  748,
-  131,
-  515,
-  35,
-  699,
-  451,
-  952,
-  978,
-  863,
-  779,
-  422,
-  8,
-  345,
-  388,
-  789,
-  455,
-  11,
-  150,
-  396,
-  709,
-  561,
-  982,
-  737,
-  405,
-  37,
-  117,
-  67,
-  38,
-  50,
-  406,
-  468,
-  642,
-  442,
-  339,
-  685,
-  405,
-  475,
-  964,
-  953,
-  680,
-  252,
-  694,
-  251,
-  17,
-  173,
-  260,
-  236,
-  929,
-  956,
-  85,
-  996,
-  570,
-  836,
-  657,
-  34,
-  498,
-  72,
-  641,
-  823,
-  248,
-  662,
-  82,
-  516,
-  714,
-  862,
-  358,
-  27,
-  904,
-  297,
-  591,
-  163,
-  201,
-  871,
-  129,
-  390,
-  489,
-  432,
-  195,
-  141,
-  571,
-  324,
-  809,
-  531,
-  929,
-  639,
-  977,
-  182,
-  501,
-  724,
-  983,
-  978,
-  138,
-  698,
-  128,
-  47,
-  388,
-  100,
-  879,
-  491,
-  297,
-  658,
-  280,
-  811,
-  594,
-  884,
-  535,
-  290,
-  186,
-  791,
-  788,
-  892,
-  531,
-  384,
-  77,
-  364,
-  903,
-  814,
-  415,
-  986,
-  201,
-  348,
-  371,
-  288,
-  296,
-  684,
-  785,
-  339,
-  941,
-  951,
-  924,
-  175,
-  82,
-  776,
-  866,
-  643,
-  383,
-  448,
-  485,
-  828,
-  714,
-  36,
-  955,
-  942,
-  794,
-  660,
-  631,
-  861,
-  329,
-  21,
-  777,
-  73,
-  963,
-  421,
-  625,
-  119,
-  271,
-  446,
-  307,
-  596,
-  433,
-  147,
-  759,
-  12,
-  705,
-  96,
-  1,
-  177,
-  980,
-  631,
-  664,
-  48,
-  52,
-  661,
-  972,
-  206,
-  335,
-  971,
-  801,
-  464,
-  505,
-  127,
-  803,
-  431,
-  247,
-  819,
-  941,
-  73,
-  345,
-  37,
-  849,
-  420,
-  179,
-  70,
-  830,
-  518,
-  241,
-  159,
-  73,
-  201,
-  276,
-  636,
-  370,
-  898,
-  741,
-  756,
-  509,
-  712,
-  652,
-  809,
-  856,
-  689,
-  517,
-  146,
-  439,
-  408,
-  88,
-  665,
-  338,
-  643,
-  580,
-  246,
-  200,
-  801,
-  704,
-  833,
-  979,
-  609,
-  445,
-  631,
-  351,
-  669,
-  659,
-  364,
-  600,
-  486,
-  759,
-  175,
-  679,
-  320,
-  190,
-  227,
-  144,
-  462,
-  528,
-  577,
-  436,
-  185,
-  451,
-  779,
-  6,
-  121,
-  51,
-  380,
-  219,
-  910,
-  604,
-  27,
-  19,
-  544,
-  524,
-  550,
-  711,
-  99,
-  967,
-  514,
-  638,
-  215,
-  463,
-  873,
-  264,
-  227,
-  912,
-  5,
-  550,
-  825,
-  302,
-  704,
-  131,
-  725,
-  596,
-  934,
-  827,
-  119,
-  58,
-  810,
-  519,
-  824,
-  650,
-  229,
-  538,
-  937,
-  495,
-  886,
-  884,
-  54,
-  562,
-  379,
-  984,
-  386,
-  994,
-  869,
-  667,
-  132,
-  287,
-  34,
-  340,
-  999,
-  108,
-  835,
-  202,
-  72,
-  670,
-  654,
-  879,
-  56,
-  237,
-  918,
-  95,
-  353,
-  807,
-  662,
-  828,
-  126,
-  451,
-  269,
-  402,
-  243,
-  648,
-  698,
-  626,
-  787,
-  611,
-  817,
-  909,
-  712,
-  783,
-  334,
-  215,
-  236,
-  548,
-  606,
-  677,
-  775,
-  206,
-  342,
-  220,
-  610,
-  177,
-  739,
-  256,
-  391,
-  374,
-  79,
-  333,
-  620,
-  301,
-  917,
-  950,
-  188,
-  415,
-  812,
-  703,
-  989,
-  446,
-  112,
-  9,
-  233,
-  587,
-  990,
-  266,
-  356,
-  20,
-  821,
-  255,
-  596,
-  304,
-  378,
-  63,
-  367,
-  400,
-  236,
-  388,
-  830,
-  916,
-  799,
-  49,
-  70,
-  159,
-  900,
-  411,
-  271,
-  409,
-  917,
-  685,
-  46,
-  479,
-  205,
-  404,
-  885,
-  672,
-  14,
-  675,
-  211,
-  38,
-  60,
-  772,
-  822,
-  311,
-  767,
-  124,
-  963,
-  208,
-  167,
-  546,
-  936,
-  93,
-  856,
-  796,
-  202,
-  119,
-  308,
-  381,
-  456,
-  634,
-  799,
-  711,
-  184,
-  634,
-  702,
-  641,
-  7,
-  378,
-  369,
-  965,
-  124,
-  656,
-  232,
-  745,
-  918,
-  952,
-  345,
-  55,
-  556,
-  420,
-  863,
-  811,
-  659,
-  389,
-  758,
-  905,
-  810,
-  720,
-  419,
-  137,
-  513,
-  992,
-  977,
-  856,
-  552,
-  396,
-  710,
-  516,
-  516,
-  212,
-  388,
-  515,
-  484,
-  805,
-  19,
-  169,
-  666,
-  431,
-  723,
-  708,
-  124,
-  736,
-  664,
-  613,
-  274,
-  447,
-  670,
-  558,
-  939,
-  206,
-  460,
-  490,
-  48,
-  845,
-  421,
-  621,
-  666,
-  599,
-  681,
-  602,
-  399,
-  411,
-  698,
-  411,
-  87,
-  858,
-  146,
-  992,
-  701,
-  503,
-  370,
-  239,
-  744,
-  648,
-  861,
-  156,
-  74,
-  896,
-  484,
-  701,
-  424,
-  614,
-  602,
-  213,
-  312,
-  61,
-  815,
-  635,
-  553,
-  689,
-  506,
-  694,
-  644,
-  251,
-  80,
-  247,
-  336,
-  521,
-  777,
-  307,
-  947,
-  413,
-  961,
-  636,
-  244,
-  264,
-  812,
-  515,
-  157,
-  779,
-  971,
-  267,
-  743,
-  922,
-  155,
-  869,
-  877,
-  942,
-  388,
-  172,
-  955,
-  501,
-  47,
-  708,
-  591,
-  287,
-  537,
-  148,
-  717,
-  712,
-  732,
-  805,
-  744,
-  557,
-  165,
-  622,
-  108,
-  93,
-  280,
-  318,
-  393,
-  237,
-  583,
-  917,
-  802,
-  464,
-  330,
-  526,
-  748,
-  26,
-  640,
-  357,
-  866,
-  919,
-  563,
-  313,
-  365,
-  996,
-  706,
-  815,
-  840,
-  705,
-  896,
-  435,
-  993,
-  954,
-  161,
-  619,
-  764,
-  385,
-  173,
-  498,
-  482,
-  330,
-  925,
-  429,
-  630,
-  803,
-  915,
-  509,
-  920,
-  85,
-  110,
-  826,
-  139,
-  891,
-  394,
-  81,
-  137,
-  878,
-  182,
-  946,
-  286,
-  210,
-  623,
-  64,
-  289,
-  41,
-  426,
-  205,
-  951,
-  682,
-  511,
-  698,
-  466,
-  166,
-  225,
-  976,
-  895,
-  39,
-  577,
-  974,
-  141,
-  236,
-  99,
-  903,
-  17,
-  429,
-  728,
-  543,
-  119,
-  480,
-  610,
-  586,
-  722,
-  126,
-  974,
-  657,
-  357,
-  86,
-  420,
-  586,
-  698,
-  675,
-  506,
-  682,
-  71,
-  932,
-  182,
-  394,
-  193,
-  896,
-  554,
-  947,
-  64,
-  291,
-  962,
-  816,
-  602,
-  730,
-  561,
-  175,
-  275,
-  719,
-  913,
-  955,
-  242,
-  521,
-  554,
-  921,
-  599,
-  164,
-  778,
-  780,
-  209,
-  272,
-  618,
-  343,
-  132,
-  65,
-  705,
-  927,
-  295,
-  570,
-  489,
-  179,
-  651,
-  638,
-  63,
-  904,
-  432,
-  701,
-  729,
-  709,
-  466,
-  231,
-  344,
-  440,
-  200,
-  352,
-  101,
-  524,
-  189,
-  464,
-  408,
-  648,
-  655,
-  981,
-  795,
-  244,
-  189,
-  80,
-  837,
-  674,
-  982,
-  545,
-  898,
-  687,
-  573,
-  952,
-  64,
-  277,
-  944,
-  129,
-  388,
-  894,
-  831,
-  19,
-  395,
-  135,
-  329,
-  581,
-  101,
-  911,
-  794,
-  445,
-  443,
-  642,
-  106,
-  735,
-  281,
-  582,
-  783,
-  246,
-  815,
-  273,
-  74,
-  818,
-  545,
-  661,
-  903,
-  438,
-  806,
-  513,
-  862,
-  964,
-  846,
-  582,
-  734,
-  968,
-  341,
-  531,
-  369,
-  214,
-  804,
-  317,
-  547,
-  681,
-  390,
-  150,
-  836,
-  144,
-  240,
-  216,
-  77,
-  511,
-  370,
-  815,
-  751,
-  904,
-  922,
-  872,
-  463,
-  195,
-  784,
-  706,
-  701,
-  9,
-  787,
-  800,
-  652,
-  577,
-  818,
-  647,
-  900,
-  78,
-  256,
-  218,
-  371,
-  901,
-  606,
-  160,
-  482,
-  846,
-  428,
-  287,
-  243,
-  214,
-  347,
-  943,
-  128,
-  623,
-  809,
-  381,
-  463,
-  229,
-  367,
-  898,
-  507,
-  253,
-  384,
-  968,
-  972,
-  340,
-  807,
-  193,
-  397,
-  945,
-  267,
-  163,
-  886,
-  728,
-  503,
-  516,
-  928,
-  516,
-  626,
-  142,
-  470,
-  632,
-  437,
-  470,
-  659,
-  651,
-  290,
-  55,
-  790,
-  582,
-  746,
-  974,
-  218,
-  906,
-  79,
-  338,
-  794,
-  859,
-  648,
-  691,
-  913,
-  627,
-  43,
-  668,
-  96,
-  252,
-  668,
-  901,
-  329,
-  142,
-  172,
-  33,
-  968,
-  377,
-  525,
-  241,
-  546,
-  88,
-  625,
-  435,
-  237,
-  242,
-  907,
-  835,
-  47,
-  78,
-  869,
-  523,
-  882,
-  794,
-  224,
-  586,
-  500,
-  704,
-  162,
-  735,
-  358,
-  542,
-  946,
-  657,
-  986,
-  96,
-  375,
-  109,
-  663,
-  740,
-  278,
-  514,
-  338,
-  626,
-  914,
-  468,
-  498,
-  694,
-  46,
-  315,
-  949,
-  100,
-  590,
-  527,
-  673,
-  550,
-  236,
-  426,
-  610,
-  876,
-  454,
-  570,
-  706,
-  225,
-  20,
-  434,
-  536,
-  983,
-  559,
-  893,
-  343,
-  894,
-  981,
-  526,
-  478,
-  606,
-  634,
-  422,
-  176,
-  238,
-  840,
-  915,
-  754,
-  248,
-  294,
-  825,
-  786,
-  899,
-  175,
-  79,
-  71,
-  244,
-  338,
-  545,
-  371,
-  882,
-  143,
-  814,
-  396,
-  229,
-  689,
-  229,
-  914,
-  627,
-  686,
-  937,
-  332,
-  966,
-  779,
-  430,
-  883,
-  605,
-  140,
-  102,
-  624,
-  710,
-  114,
-  117,
-  833,
-  349,
-  334,
-  453,
-  150,
-  859,
-  649,
-  135,
-  330,
-  645,
-  830,
-  983,
-  597,
-  992,
-  631,
-  658,
-  350,
-  806,
-  476,
-  567,
-  278,
-  976,
-  642,
-  967,
-  792,
-  585,
-  775,
-  778,
-  348,
-  538,
-  788,
-  592,
-  843,
-  983,
-  500,
-  416,
-  604,
-  21,
-  881,
-  224,
-  5,
-  350,
-  54,
-  26,
-  37,
-  323,
-  942,
-  848,
-  918,
-  804,
-  587,
-  724,
-  577,
-  671,
-  619,
-  798,
-  322,
-  643,
-  589,
-  370,
-  850,
-  184,
-  274,
-  45,
-  218,
-  398,
-  998,
-  332,
-  701,
-  974,
-  365,
-  433,
-  415,
-  560,
-  698,
-  699,
-  242,
-  537,
-  107,
-  921,
-  807,
-  409,
-  640,
-  523,
-  249,
-  903,
-  874,
-  262,
-  45,
-  378,
-  65,
-  441,
-  877,
-  221,
-  550,
-  752,
-  429,
-  277,
-  823,
-  573,
-  173,
-  570,
-  873,
-  237,
-  804,
-  552,
-  159,
-  798,
-  606,
-  961,
-  184,
-  788,
-  796,
-  752,
-  839,
-  986,
-  73,
-  564,
-  572,
-  83,
-  205,
-  440,
-  416,
-  821,
-  859,
-  627,
-  621,
-  422,
-  765,
-  601,
-  756,
-  350,
-  607,
-  757,
-  992,
-  393,
-  865,
-  393,
-  208,
-  495,
-  613,
-  348,
-  858,
-  362,
-  801,
-  318,
-  171,
-  180,
-  959,
-  179,
-  667,
-  410,
-  383,
-  290,
-  325,
-  648,
-  102,
-  912,
-  828,
-  434,
-  240,
-  438,
-  120,
-  45,
-  768,
-  204,
-  32,
-  40,
-  425,
-  240,
-  354,
-  562,
-  717,
-  799,
-  358,
-  89,
-  690,
-  967,
-  985,
-  308,
-  485,
-  335,
-  324,
-  486,
-  494,
-  3,
-  28,
-  704,
-  347,
-  223,
-  421,
-  513,
-  904,
-  831,
-  152,
-  628,
-  300,
-  98,
-  108,
-  646,
-  496,
-  417,
-  168,
-  83,
-  776,
-  815,
-  774,
-  413,
-  748,
-  150,
-  452,
-  215,
-  112,
-  115,
-  780,
-  148,
-  102,
-  568,
-  51,
-  783,
-  606,
-  981,
-  30,
-  94,
-  548,
-  513,
-  16,
-  992,
-  599,
-  210,
-  296,
-  560,
-  434,
-  599,
-  999,
-  942,
-  459,
-  559,
-  88,
-  192,
-  929,
-  976,
-  576,
-  58,
-  691,
-  317,
-  941,
-  247,
-  772,
-  461,
-  403,
-  114,
-  578,
-  868,
-  217,
-  550,
-  925,
-  472,
-  795,
-  838,
-  293,
-  770,
-  376,
-  233,
-  404,
-  319,
-  171,
-  742,
-  314,
-  491,
-  407,
-  369,
-  8,
-  873,
-  923,
-  743,
-  36,
-  904,
-  381,
-  363,
-  563,
-  5,
-  371,
-  285,
-  244,
-  513,
-  340,
-  148,
-  17,
-  584,
-  581,
-  944,
-  369,
-  22,
-  584,
-  294,
-  601,
-  853,
-  343,
-  209,
-  97,
-  391,
-  614,
-  329,
-  154,
-  564,
-  350,
-  963,
-  861,
-  361,
-  302,
-  389,
-  383,
-  605,
-  884,
-  340,
-  217,
-  177,
-  554,
-  884,
-  3,
-  396,
-  203,
-  355,
-  320,
-  296,
-  308,
-  274,
-  541,
-  796,
-  823,
-  129,
-  363,
-  567,
-  67,
-  118,
-  469,
-  366,
-  416,
-  218,
-  787,
-  466,
-  126,
-  640,
-  724,
-  817,
-  245,
-  795,
-  786,
-  311,
-  894,
-  867,
-  839,
-  904,
-  809,
-  763,
-  934,
-  237,
-  904,
-  554,
-  109,
-  841,
-  96,
-  19,
-  318,
-  695,
-  456,
-  644,
-  244,
-  18,
-  779,
-  432,
-  122,
-  488,
-  231,
-  601,
-  663,
-  996,
-  135,
-  933,
-  142,
-  351,
-  902,
-  924,
-  738,
-  442,
-  498,
-  44,
-  399,
-  130,
-  584,
-  664,
-  555,
-  648,
-  134,
-  219,
-  444,
-  788,
-  483,
-  541,
-  931,
-  485,
-  571,
-  97,
-  406,
-  688,
-  319,
-  251,
-  187,
-  83,
-  873,
-  800,
-  295,
-  917,
-  573,
-  243,
-  487,
-  132,
-  290,
-  233,
-  814,
-  322,
-  592,
-  683,
-  22,
-  748,
-  36,
-  286,
-  114,
-  960,
-  231,
-  816,
-  327,
-  827,
-  125,
-  64,
-  626,
-  237,
-  224,
-  210,
-  140,
-  850,
-  413,
-  343,
-  811,
-  597,
-  22,
-  517,
-  954,
-  107,
-  423,
-  528,
-  201,
-  457,
-  396,
-  108,
-  303,
-  602,
-  807,
-  998,
-  907,
-  161,
-  592,
-  710,
-  626,
-  504,
-  476,
-  219,
-  195,
-  803,
-  168,
-  579,
-  847,
-  156,
-  479,
-  493,
-  780,
-  788,
-  647,
-  598,
-  560,
-  882,
-  402,
-  851,
-  730,
-  155,
-  56,
-  593,
-  436,
-  446,
-  50,
-  255,
-  388,
-  162,
-  377,
-  189,
-  587,
-  695,
-  357,
-  852,
-  821,
-  198,
-  754,
-  185,
-  646,
-  854,
-  804,
-  47,
-  950,
-  524,
-  11,
-  8,
-  523,
-  902,
-  449,
-  912,
-  638,
-  204,
-  185,
-  694,
-  48,
-  179,
-  506,
-  815,
-  650,
-  47,
-  552,
-  57,
-  19,
-  405,
-  668,
-  753,
-  156,
-  98,
-  474,
-  937,
-  168,
-  516,
-  248,
-  242,
-  159,
-  259,
-  454,
-  673,
-  9,
-  779,
-  160,
-  177,
-  880,
-  144,
-  617,
-  398,
-  951,
-  102,
-  210,
-  41,
-  423,
-  725,
-  208,
-  981,
-  984,
-  525,
-  844,
-  108,
-  507,
-  420,
-  707,
-  582,
-  102,
-  585,
-  270,
-  16,
-  41,
-  740,
-  724,
-  853,
-  878,
-  924,
-  35,
-  172,
-  302,
-  308,
-  861,
-  453,
-  909,
-  339,
-  31,
-  961,
-  735,
-  286,
-  717,
-  157,
-  853,
-  741,
-  649,
-  234,
-  735,
-  415,
-  3,
-  461,
-  718,
-  818,
-  930,
-  734,
-  385,
-  779,
-  921,
-  831,
-  980,
-  950,
-  692,
-  563,
-  954,
-  363,
-  889,
-  120,
-  407,
-  53,
-  700,
-  930,
-  8,
-  40,
-  867,
-  286,
-  294,
-  798,
-  328,
-  191,
-  341,
-  182,
-  389,
-  73,
-  338,
-  203,
-  1,
-  480,
-  187,
-  420,
-  169,
-  387,
-  417,
-  332,
-  546,
-  403,
-  281,
-  608,
-  778,
-  298,
-  888,
-  873,
-  54,
-  898,
-  228,
-  222,
-  934,
-  371,
-  775,
-  455,
-  605,
-  95,
-  846,
-  143,
-  301,
-  750,
-  801,
-  815,
-  255,
-  570,
-  995,
-  755,
-  304,
-  502,
-  744,
-  436,
-  863,
-  272,
-  694,
-  777,
-  154,
-  855,
-  885,
-  883,
-  416,
-  91,
-  680,
-  660,
-  386,
-  0,
-  413,
-  842,
-  507,
-  262,
-  841,
-  277,
-  615,
-  273,
-  116,
-  987,
-  399,
-  48,
-  772,
-  29,
-  290,
-  731,
-  142,
-  744,
-  991,
-  630,
-  479,
-  530,
-  606,
-  628,
-  728,
-  582,
-  711,
-  546,
-  640,
-  654,
-  171,
-  394,
-  211,
-  916,
-  503,
-  640,
-  384,
-  85,
-  702,
-  997,
-  577,
-  226,
-  6,
-  173,
-  643,
-  909,
-  595,
-  559,
-  718,
-  268,
-  215,
-  89,
-  326,
-  861,
-  859,
-  253,
-  855,
-  119,
-  959,
-  707,
-  32,
-  344,
-  229,
-  820,
-  406,
-  328,
-  236,
-  185,
-  185,
-  849,
-  944,
-  686,
-  419,
-  857,
-  143,
-  711,
-  156,
-  766,
-  591,
-  29,
-  236,
-  590,
-  826,
-  284,
-  200,
-  911,
-  299,
-  332,
-  581,
-  785,
-  331,
-  162,
-  347,
-  574,
-  108,
-  187,
-  568,
-  563,
-  983,
-  525,
-  662,
-  679,
-  560,
-  745,
-  870,
-  244,
-  367,
-  264,
-  427,
-  998,
-  82,
-  761,
-  276,
-  703,
-  125,
-  853,
-  241,
-  461,
-  460,
-  607,
-  767,
-  785,
-  815,
-  563,
-  878,
-  669,
-  932,
-  522,
-  391,
-  961,
-  115,
-  455,
-  795,
-  905,
-  306,
-  914,
-  999,
-  791,
-  401,
-  894,
-  804,
-  760,
-  96,
-  768,
-  874,
-  630,
-  100,
-  894,
-  941,
-  458,
-  792,
-  162,
-  880,
-  971,
-  440,
-  34,
-  509,
-  112,
-  585,
-  294,
-  470,
-  413,
-  229,
-  429,
-  622,
-  445,
-  82,
-  195,
-  409,
-  173,
-  418,
-  299,
-  762,
-  57,
-  637,
-  485,
-  187,
-  477,
-  218,
-  301,
-  7,
-  66,
-  101,
-  112,
-  20,
-  35,
-  882,
-  595,
-  580,
-  898,
-  303,
-  490,
-  122,
-  668,
-  984,
-  281,
-  89,
-  982,
-  700,
-  770,
-  144,
-  163,
-  485,
-  172,
-  266,
-  987,
-  37,
-  309,
-  282,
-  137,
-  196,
-  980,
-  204,
-  393,
-  325,
-  613,
-  991,
-  244,
-  208,
-  834,
-  902,
-  329,
-  667,
-  890,
-  902,
-  938,
-  441,
-  248,
-  985,
-  872,
-  380,
-  435,
-  865,
-  460,
-  303,
-  765,
-  768,
-  828,
-  44,
-  995,
-  364,
-  214,
-  397,
-  480,
-  880,
-  555,
-  982,
-  422,
-  262,
-  467,
-  655,
-  2,
-  145,
-  177,
-  703,
-  931,
-  990,
-  298,
-  331,
-  927,
-  114,
-  184,
-  647,
-  969,
-  398,
-  582,
-  419,
-  795,
-  320,
-  103,
-  807,
-  267,
-  124,
-  991,
-  97,
-  566,
-  119,
-  493,
-  491,
-  886,
-  803,
-  387,
-  906,
-  601,
-  775,
-  700,
-  560,
-  984,
-  206,
-  393,
-  475,
-  648,
-  584,
-  792,
-  543,
-  624,
-  213,
-  106,
-  606,
-  391,
-  621,
-  527,
-  112,
-  50,
-  118,
-  745,
-  734,
-  600,
-  285,
-  401,
-  567,
-  490,
-  709,
-  529,
-  93,
-  681,
-  373,
-  576,
-  66,
-  413,
-  427,
-  987,
-  261,
-  80,
-  710,
-  910,
-  65,
-  413,
-  210,
-  871,
-  420,
-  688,
-  181,
-  371,
-  708,
-  628,
-  270,
-  279,
-  253,
-  11,
-  429,
-  805,
-  968,
-  181,
-  205,
-  841,
-  246,
-  103,
-  798,
-  431,
-  562,
-  695,
-  168,
-  763,
-  788,
-  779,
-  793,
-  149,
-  801,
-  403,
-  247,
-  983,
-  696,
-  321,
-  818,
-  572,
-  584,
-  355,
-  272,
-  158,
-  325,
-  786,
-  852,
-  484,
-  425,
-  899,
-  505,
-  423,
-  934,
-  456,
-  376,
-  999,
-  546,
-  722,
-  441,
-  734,
-  372,
-  964,
-  565,
-  833,
-  899,
-  55,
-  66,
-  319,
-  102,
-  750,
-  168,
-  319,
-  734,
-  245,
-  481,
-  218,
-  127,
-  939,
-  878,
-  210,
-  693,
-  129,
-  364,
-  590,
-  780,
-  814,
-  45,
-  411,
-  504,
-  520,
-  74,
-  376,
-  714,
-  249,
-  342,
-  790,
-  428,
-  140,
-  814,
-  658,
-  571,
-  850,
-  997,
-  49,
-  723,
-  694,
-  116,
-  535,
-  58,
-  353,
-  671,
-  523,
-  498,
-  522,
-  866,
-  378,
-  970,
-  334,
-  714,
-  519,
-  878,
-  456,
-  544,
-  948,
-  314,
-  237,
-  368,
-  448,
-  470,
-  366,
-  672,
-  485,
-  83,
-  675,
-  395,
-  12,
-  548,
-  785,
-  534,
-  40,
-  71,
-  895,
-  378,
-  724,
-  531,
-  675,
-  104,
-  609,
-  820,
-  980,
-  931,
-  359,
-  113,
-  435,
-  974,
-  671,
-  423,
-  131,
-  454,
-  60,
-  78,
-  274,
-  858,
-  188,
-  681,
-  427,
-  440,
-  622,
-  995,
-  90,
-  873,
-  170,
-  237,
-  27,
-  908,
-  959,
-  292,
-  735,
-  673,
-  277,
-  647,
-  972,
-  275,
-  344,
-  790,
-  767,
-  704,
-  845,
-  78,
-  865,
-  869,
-  172,
-  681,
-  315,
-  258,
-  626,
-  898,
-  776,
-  254,
-  362,
-  734,
-  750,
-  835,
-  920,
-  518,
-  503,
-  33,
-  418,
-  505,
-  570,
-  177,
-  691,
-  142,
-  129,
-  199,
-  244,
-  991,
-  152,
-  971,
-  529,
-  426,
-  585,
-  297,
-  526,
-  217,
-  742,
-  428,
-  876,
-  297,
-  508,
-  9,
-  884,
-  175,
-  584,
-  535,
-  247,
-  526,
-  745,
-  181,
-  320,
-  558,
-  601,
-  84,
-  806,
-  62,
-  345,
-  940,
-  89,
-  194,
-  840,
-  506,
-  112,
-  431,
-  552,
-  678,
-  421,
-  83,
-  366,
-  698,
-  30,
-  891,
-  284,
-  983,
-  337,
-  252,
-  244,
-  786,
-  451,
-  266,
-  243,
-  612,
-  13,
-  759,
-  247,
-  815,
-  955,
-  603,
-  727,
-  691,
-  722,
-  202,
-  878,
-  249,
-  30,
-  763,
-  563,
-  303,
-  637,
-  284,
-  439,
-  890,
-  835,
-  211,
-  732,
-  418,
-  27,
-  615,
-  807,
-  215,
-  663,
-  510,
-  114,
-  353,
-  573,
-  248,
-  153,
-  605,
-  310,
-  144,
-  94,
-  691,
-  219,
-  714,
-  691,
-  276,
-  838,
-  687,
-  260,
-  90,
-  826,
-  966,
-  630,
-  415,
-  265,
-  310,
-  696,
-  279,
-  392,
-  862,
-  532,
-  698,
-  448,
-  205,
-  434,
-  153,
-  212,
-  149,
-  970,
-  66,
-  850,
-  553,
-  739,
-  319,
-  616,
-  16,
-  101,
-  600,
-  845,
-  226,
-  848,
-  921,
-  625,
-  239,
-  414,
-  822,
-  217,
-  527,
-  12,
-  458,
-  835,
-  420,
-  584,
-  335,
-  98,
-  347,
-  975,
-  432,
-  966,
-  138,
-  454,
-  523,
-  660,
-  171,
-  75,
-  50,
-  734,
-  110,
-  584,
-  368,
-  406
-};
-const int idx[4998] = {
-  34,
-  56,
-  132,
-  163,
-  256,
-  260,
-  418,
-  431,
-  466,
-  494,
-  497,
-  49,
-  64,
-  103,
-  165,
-  225,
-  330,
-  339,
-  469,
-  478,
-  494,
-  497,
-  9,
-  28,
-  82,
-  111,
-  155,
-  282,
-  365,
-  451,
-  453,
-  461,
-  49,
-  74,
-  81,
-  241,
-  349,
-  355,
-  448,
-  473,
-  51,
-  59,
-  122,
-  258,
-  283,
-  381,
-  18,
-  50,
-  193,
-  227,
-  257,
-  356,
-  467,
-  1,
-  32,
-  43,
-  61,
-  81,
-  210,
-  245,
-  298,
-  362,
-  373,
-  442,
-  18,
-  133,
-  163,
-  211,
-  230,
-  279,
-  326,
-  387,
-  408,
-  472,
-  60,
-  94,
-  143,
-  246,
-  262,
-  297,
-  309,
-  324,
-  327,
-  351,
-  361,
-  371,
-  380,
-  455,
-  463,
-  25,
-  80,
-  126,
-  128,
-  173,
-  217,
-  220,
-  233,
-  242,
-  293,
-  348,
-  413,
-  447,
-  125,
-  163,
-  179,
-  217,
-  342,
-  346,
-  352,
-  389,
-  434,
-  493,
-  18,
-  26,
-  182,
-  220,
-  226,
-  263,
-  332,
-  340,
-  403,
-  1,
-  24,
-  27,
-  71,
-  127,
-  140,
-  263,
-  374,
-  380,
-  424,
-  426,
-  231,
-  237,
-  243,
-  319,
-  353,
-  431,
-  437,
-  441,
-  35,
-  91,
-  233,
-  271,
-  272,
-  292,
-  381,
-  83,
-  117,
-  121,
-  149,
-  152,
-  159,
-  412,
-  484,
-  489,
-  63,
-  164,
-  170,
-  311,
-  32,
-  68,
-  82,
-  91,
-  115,
-  120,
-  201,
-  236,
-  252,
-  275,
-  390,
-  437,
-  20,
-  46,
-  72,
-  77,
-  80,
-  108,
-  118,
-  150,
-  249,
-  282,
-  384,
-  458,
-  486,
-  28,
-  70,
-  77,
-  78,
-  100,
-  261,
-  311,
-  318,
-  394,
-  465,
-  469,
-  489,
-  21,
-  159,
-  250,
-  386,
-  478,
-  57,
-  70,
-  180,
-  217,
-  276,
-  285,
-  291,
-  303,
-  312,
-  318,
-  370,
-  371,
-  426,
-  477,
-  86,
-  122,
-  128,
-  292,
-  309,
-  314,
-  335,
-  421,
-  422,
-  427,
-  452,
-  480,
-  488,
-  45,
-  97,
-  98,
-  106,
-  302,
-  364,
-  437,
-  7,
-  96,
-  100,
-  130,
-  174,
-  307,
-  89,
-  317,
-  354,
-  390,
-  406,
-  498,
-  61,
-  64,
-  130,
-  268,
-  312,
-  349,
-  480,
-  9,
-  47,
-  104,
-  169,
-  170,
-  315,
-  399,
-  437,
-  444,
-  469,
-  117,
-  183,
-  192,
-  225,
-  265,
-  371,
-  43,
-  81,
-  123,
-  224,
-  257,
-  285,
-  321,
-  329,
-  338,
-  436,
-  446,
-  475,
-  11,
-  23,
-  141,
-  163,
-  268,
-  398,
-  408,
-  416,
-  430,
-  8,
-  84,
-  318,
-  389,
-  443,
-  488,
-  8,
-  53,
-  149,
-  172,
-  226,
-  308,
-  362,
-  466,
-  9,
-  12,
-  32,
-  114,
-  134,
-  226,
-  240,
-  393,
-  138,
-  153,
-  202,
-  216,
-  227,
-  322,
-  358,
-  369,
-  396,
-  427,
-  455,
-  490,
-  22,
-  85,
-  118,
-  181,
-  237,
-  321,
-  338,
-  348,
-  480,
-  0,
-  5,
-  9,
-  12,
-  119,
-  163,
-  226,
-  231,
-  246,
-  259,
-  383,
-  419,
-  451,
-  144,
-  146,
-  174,
-  225,
-  309,
-  366,
-  368,
-  395,
-  456,
-  117,
-  157,
-  169,
-  178,
-  221,
-  229,
-  244,
-  255,
-  285,
-  296,
-  328,
-  358,
-  375,
-  429,
-  454,
-  468,
-  473,
-  13,
-  18,
-  84,
-  202,
-  211,
-  370,
-  425,
-  441,
-  456,
-  45,
-  174,
-  177,
-  219,
-  234,
-  304,
-  309,
-  319,
-  418,
-  39,
-  69,
-  161,
-  190,
-  277,
-  289,
-  319,
-  340,
-  365,
-  429,
-  486,
-  74,
-  130,
-  175,
-  280,
-  306,
-  326,
-  443,
-  450,
-  457,
-  487,
-  497,
-  25,
-  45,
-  138,
-  275,
-  277,
-  288,
-  388,
-  398,
-  459,
-  461,
-  463,
-  8,
-  52,
-  59,
-  70,
-  90,
-  98,
-  153,
-  171,
-  237,
-  422,
-  468,
-  1,
-  43,
-  83,
-  119,
-  222,
-  251,
-  325,
-  375,
-  391,
-  498,
-  29,
-  37,
-  73,
-  77,
-  93,
-  95,
-  115,
-  128,
-  162,
-  282,
-  349,
-  376,
-  381,
-  434,
-  444,
-  449,
-  51,
-  116,
-  142,
-  292,
-  310,
-  331,
-  392,
-  417,
-  143,
-  261,
-  307,
-  368,
-  377,
-  386,
-  0,
-  156,
-  159,
-  170,
-  179,
-  226,
-  230,
-  274,
-  374,
-  386,
-  439,
-  464,
-  108,
-  117,
-  120,
-  180,
-  191,
-  230,
-  250,
-  264,
-  278,
-  286,
-  291,
-  306,
-  309,
-  363,
-  404,
-  427,
-  443,
-  451,
-  10,
-  13,
-  26,
-  39,
-  49,
-  69,
-  115,
-  210,
-  226,
-  262,
-  348,
-  380,
-  416,
-  418,
-  38,
-  85,
-  170,
-  179,
-  180,
-  221,
-  325,
-  460,
-  65,
-  249,
-  276,
-  448,
-  449,
-  474,
-  99,
-  124,
-  407,
-  411,
-  423,
-  438,
-  440,
-  41,
-  52,
-  152,
-  226,
-  229,
-  400,
-  408,
-  415,
-  450,
-  81,
-  102,
-  116,
-  138,
-  145,
-  169,
-  180,
-  213,
-  224,
-  262,
-  268,
-  312,
-  344,
-  356,
-  454,
-  28,
-  40,
-  82,
-  110,
-  143,
-  175,
-  241,
-  251,
-  286,
-  360,
-  424,
-  450,
-  18,
-  94,
-  127,
-  144,
-  153,
-  227,
-  237,
-  282,
-  300,
-  385,
-  395,
-  396,
-  424,
-  453,
-  115,
-  121,
-  212,
-  221,
-  246,
-  258,
-  358,
-  370,
-  426,
-  30,
-  78,
-  88,
-  137,
-  288,
-  380,
-  384,
-  391,
-  392,
-  9,
-  110,
-  196,
-  312,
-  356,
-  419,
-  40,
-  52,
-  106,
-  171,
-  213,
-  253,
-  278,
-  364,
-  367,
-  375,
-  460,
-  474,
-  488,
-  490,
-  3,
-  14,
-  115,
-  260,
-  414,
-  490,
-  25,
-  52,
-  98,
-  102,
-  109,
-  146,
-  160,
-  168,
-  205,
-  235,
-  332,
-  390,
-  400,
-  75,
-  146,
-  209,
-  262,
-  276,
-  307,
-  330,
-  337,
-  384,
-  401,
-  404,
-  433,
-  498,
-  19,
-  44,
-  58,
-  101,
-  136,
-  155,
-  314,
-  349,
-  383,
-  400,
-  463,
-  472,
-  473,
-  103,
-  274,
-  322,
-  370,
-  375,
-  416,
-  445,
-  480,
-  67,
-  152,
-  228,
-  238,
-  298,
-  303,
-  324,
-  400,
-  419,
-  442,
-  455,
-  474,
-  22,
-  40,
-  70,
-  101,
-  116,
-  221,
-  244,
-  276,
-  286,
-  328,
-  337,
-  379,
-  417,
-  428,
-  480,
-  22,
-  101,
-  168,
-  222,
-  239,
-  290,
-  404,
-  482,
-  18,
-  54,
-  242,
-  289,
-  303,
-  358,
-  388,
-  409,
-  486,
-  499,
-  14,
-  102,
-  240,
-  261,
-  441,
-  475,
-  86,
-  103,
-  115,
-  126,
-  203,
-  216,
-  280,
-  335,
-  368,
-  449,
-  15,
-  111,
-  325,
-  352,
-  365,
-  377,
-  420,
-  449,
-  454,
-  492,
-  76,
-  87,
-  139,
-  166,
-  179,
-  186,
-  368,
-  376,
-  434,
-  176,
-  190,
-  192,
-  214,
-  225,
-  229,
-  274,
-  300,
-  313,
-  321,
-  324,
-  455,
-  468,
-  494,
-  48,
-  79,
-  148,
-  178,
-  282,
-  333,
-  433,
-  0,
-  23,
-  44,
-  49,
-  227,
-  249,
-  389,
-  397,
-  402,
-  439,
-  461,
-  16,
-  63,
-  68,
-  81,
-  100,
-  109,
-  138,
-  139,
-  210,
-  231,
-  277,
-  304,
-  124,
-  266,
-  329,
-  358,
-  388,
-  407,
-  482,
-  24,
-  55,
-  63,
-  111,
-  249,
-  21,
-  61,
-  105,
-  146,
-  243,
-  274,
-  362,
-  396,
-  487,
-  64,
-  85,
-  130,
-  228,
-  359,
-  404,
-  446,
-  487,
-  2,
-  13,
-  60,
-  74,
-  127,
-  181,
-  209,
-  308,
-  410,
-  418,
-  110,
-  206,
-  207,
-  227,
-  264,
-  301,
-  325,
-  370,
-  382,
-  395,
-  398,
-  436,
-  56,
-  91,
-  134,
-  192,
-  206,
-  219,
-  222,
-  300,
-  403,
-  482,
-  30,
-  168,
-  210,
-  234,
-  260,
-  330,
-  340,
-  350,
-  498,
-  21,
-  116,
-  317,
-  318,
-  336,
-  433,
-  487,
-  494,
-  497,
-  75,
-  127,
-  268,
-  287,
-  385,
-  407,
-  446,
-  484,
-  157,
-  207,
-  256,
-  363,
-  472,
-  484,
-  11,
-  116,
-  124,
-  137,
-  175,
-  471,
-  71,
-  74,
-  132,
-  180,
-  297,
-  355,
-  363,
-  382,
-  469,
-  84,
-  119,
-  239,
-  339,
-  437,
-  8,
-  45,
-  83,
-  110,
-  141,
-  211,
-  224,
-  269,
-  271,
-  344,
-  444,
-  449,
-  488,
-  13,
-  53,
-  76,
-  219,
-  235,
-  243,
-  292,
-  317,
-  381,
-  494,
-  85,
-  120,
-  121,
-  162,
-  181,
-  192,
-  219,
-  242,
-  247,
-  293,
-  306,
-  484,
-  47,
-  53,
-  202,
-  223,
-  238,
-  284,
-  323,
-  394,
-  395,
-  53,
-  58,
-  61,
-  72,
-  73,
-  138,
-  146,
-  216,
-  291,
-  25,
-  39,
-  100,
-  184,
-  222,
-  239,
-  287,
-  331,
-  438,
-  24,
-  40,
-  48,
-  76,
-  91,
-  119,
-  142,
-  143,
-  156,
-  258,
-  332,
-  398,
-  493,
-  25,
-  63,
-  228,
-  313,
-  339,
-  363,
-  385,
-  90,
-  109,
-  124,
-  159,
-  229,
-  478,
-  24,
-  38,
-  98,
-  131,
-  225,
-  265,
-  293,
-  339,
-  422,
-  18,
-  51,
-  76,
-  170,
-  348,
-  390,
-  437,
-  41,
-  47,
-  303,
-  309,
-  317,
-  347,
-  352,
-  407,
-  149,
-  219,
-  242,
-  254,
-  304,
-  339,
-  483,
-  488,
-  42,
-  81,
-  97,
-  100,
-  103,
-  221,
-  288,
-  369,
-  423,
-  434,
-  19,
-  98,
-  208,
-  240,
-  248,
-  349,
-  486,
-  495,
-  1,
-  12,
-  100,
-  134,
-  181,
-  186,
-  226,
-  246,
-  284,
-  335,
-  384,
-  450,
-  67,
-  95,
-  101,
-  207,
-  215,
-  217,
-  245,
-  254,
-  300,
-  325,
-  384,
-  400,
-  430,
-  14,
-  21,
-  36,
-  39,
-  74,
-  145,
-  173,
-  190,
-  240,
-  343,
-  364,
-  374,
-  385,
-  426,
-  451,
-  490,
-  495,
-  76,
-  87,
-  89,
-  102,
-  150,
-  285,
-  464,
-  494,
-  3,
-  88,
-  152,
-  173,
-  229,
-  284,
-  290,
-  303,
-  411,
-  468,
-  165,
-  167,
-  193,
-  199,
-  209,
-  295,
-  302,
-  322,
-  362,
-  365,
-  455,
-  462,
-  142,
-  155,
-  205,
-  248,
-  255,
-  271,
-  275,
-  18,
-  68,
-  130,
-  180,
-  207,
-  284,
-  286,
-  299,
-  346,
-  379,
-  383,
-  478,
-  21,
-  60,
-  63,
-  168,
-  171,
-  220,
-  273,
-  279,
-  308,
-  324,
-  327,
-  355,
-  490,
-  88,
-  103,
-  136,
-  252,
-  274,
-  310,
-  320,
-  369,
-  391,
-  407,
-  18,
-  48,
-  52,
-  81,
-  99,
-  116,
-  140,
-  156,
-  176,
-  183,
-  186,
-  224,
-  45,
-  172,
-  318,
-  411,
-  428,
-  496,
-  11,
-  12,
-  44,
-  85,
-  144,
-  175,
-  214,
-  242,
-  342,
-  344,
-  383,
-  426,
-  446,
-  491,
-  495,
-  46,
-  59,
-  77,
-  147,
-  175,
-  192,
-  314,
-  315,
-  329,
-  342,
-  393,
-  405,
-  440,
-  45,
-  59,
-  66,
-  108,
-  184,
-  199,
-  211,
-  234,
-  283,
-  343,
-  388,
-  476,
-  25,
-  54,
-  162,
-  164,
-  232,
-  287,
-  358,
-  439,
-  467,
-  15,
-  30,
-  66,
-  72,
-  106,
-  156,
-  172,
-  309,
-  311,
-  343,
-  350,
-  453,
-  468,
-  89,
-  175,
-  232,
-  308,
-  326,
-  426,
-  496,
-  42,
-  58,
-  128,
-  157,
-  349,
-  352,
-  408,
-  328,
-  24,
-  35,
-  37,
-  77,
-  81,
-  143,
-  202,
-  230,
-  282,
-  371,
-  382,
-  392,
-  407,
-  470,
-  489,
-  64,
-  65,
-  76,
-  89,
-  189,
-  200,
-  224,
-  384,
-  388,
-  391,
-  36,
-  213,
-  225,
-  231,
-  256,
-  260,
-  283,
-  343,
-  372,
-  488,
-  34,
-  137,
-  220,
-  292,
-  335,
-  344,
-  361,
-  382,
-  495,
-  111,
-  235,
-  249,
-  254,
-  259,
-  301,
-  326,
-  409,
-  465,
-  252,
-  301,
-  433,
-  452,
-  468,
-  109,
-  216,
-  252,
-  284,
-  409,
-  419,
-  486,
-  9,
-  44,
-  64,
-  66,
-  94,
-  161,
-  162,
-  323,
-  469,
-  18,
-  43,
-  61,
-  193,
-  238,
-  247,
-  394,
-  469,
-  483,
-  0,
-  68,
-  96,
-  245,
-  372,
-  406,
-  419,
-  485,
-  31,
-  223,
-  227,
-  261,
-  274,
-  278,
-  281,
-  304,
-  396,
-  466,
-  26,
-  45,
-  76,
-  202,
-  203,
-  247,
-  317,
-  334,
-  345,
-  359,
-  408,
-  487,
-  83,
-  114,
-  151,
-  199,
-  200,
-  246,
-  336,
-  464,
-  482,
-  86,
-  92,
-  190,
-  217,
-  286,
-  328,
-  332,
-  370,
-  373,
-  437,
-  46,
-  114,
-  188,
-  236,
-  290,
-  292,
-  294,
-  323,
-  335,
-  345,
-  367,
-  401,
-  444,
-  480,
-  1,
-  164,
-  217,
-  257,
-  305,
-  379,
-  186,
-  365,
-  441,
-  481,
-  486,
-  12,
-  192,
-  226,
-  1,
-  2,
-  67,
-  107,
-  225,
-  52,
-  124,
-  241,
-  270,
-  278,
-  317,
-  357,
-  371,
-  417,
-  427,
-  449,
-  453,
-  489,
-  73,
-  173,
-  174,
-  188,
-  189,
-  242,
-  291,
-  314,
-  360,
-  92,
-  118,
-  135,
-  152,
-  182,
-  210,
-  215,
-  228,
-  230,
-  263,
-  353,
-  398,
-  489,
-  28,
-  36,
-  157,
-  159,
-  226,
-  238,
-  312,
-  423,
-  427,
-  7,
-  24,
-  79,
-  171,
-  223,
-  256,
-  483,
-  24,
-  31,
-  38,
-  70,
-  179,
-  239,
-  259,
-  292,
-  307,
-  312,
-  359,
-  367,
-  386,
-  417,
-  451,
-  476,
-  15,
-  64,
-  101,
-  164,
-  168,
-  174,
-  271,
-  317,
-  370,
-  390,
-  433,
-  61,
-  62,
-  71,
-  302,
-  447,
-  105,
-  134,
-  151,
-  165,
-  254,
-  283,
-  366,
-  380,
-  5,
-  57,
-  71,
-  72,
-  105,
-  117,
-  159,
-  167,
-  253,
-  376,
-  409,
-  463,
-  0,
-  71,
-  119,
-  184,
-  211,
-  255,
-  317,
-  330,
-  342,
-  446,
-  489,
-  497,
-  39,
-  80,
-  250,
-  251,
-  271,
-  285,
-  314,
-  322,
-  355,
-  406,
-  460,
-  17,
-  20,
-  38,
-  175,
-  180,
-  273,
-  280,
-  322,
-  354,
-  369,
-  420,
-  429,
-  433,
-  444,
-  464,
-  21,
-  33,
-  73,
-  93,
-  94,
-  125,
-  126,
-  133,
-  143,
-  217,
-  356,
-  406,
-  31,
-  61,
-  189,
-  226,
-  235,
-  249,
-  256,
-  275,
-  302,
-  360,
-  427,
-  64,
-  270,
-  388,
-  417,
-  446,
-  69,
-  71,
-  113,
-  214,
-  272,
-  337,
-  402,
-  406,
-  414,
-  453,
-  468,
-  147,
-  148,
-  184,
-  221,
-  228,
-  264,
-  322,
-  344,
-  352,
-  455,
-  11,
-  88,
-  118,
-  167,
-  169,
-  304,
-  353,
-  6,
-  191,
-  239,
-  333,
-  456,
-  457,
-  460,
-  469,
-  499,
-  59,
-  94,
-  143,
-  144,
-  168,
-  439,
-  461,
-  69,
-  100,
-  217,
-  237,
-  263,
-  269,
-  462,
-  474,
-  488,
-  3,
-  20,
-  33,
-  62,
-  83,
-  134,
-  150,
-  168,
-  192,
-  198,
-  215,
-  234,
-  275,
-  324,
-  370,
-  383,
-  388,
-  401,
-  439,
-  3,
-  81,
-  145,
-  156,
-  284,
-  388,
-  405,
-  406,
-  435,
-  50,
-  88,
-  148,
-  200,
-  290,
-  301,
-  325,
-  24,
-  141,
-  145,
-  188,
-  205,
-  234,
-  326,
-  353,
-  355,
-  391,
-  412,
-  462,
-  494,
-  58,
-  63,
-  77,
-  117,
-  246,
-  249,
-  277,
-  325,
-  356,
-  375,
-  384,
-  430,
-  483,
-  44,
-  166,
-  212,
-  258,
-  269,
-  310,
-  358,
-  368,
-  371,
-  413,
-  448,
-  477,
-  489,
-  499,
-  56,
-  105,
-  154,
-  366,
-  369,
-  398,
-  409,
-  436,
-  464,
-  187,
-  223,
-  344,
-  427,
-  440,
-  31,
-  116,
-  126,
-  140,
-  150,
-  177,
-  246,
-  323,
-  336,
-  355,
-  403,
-  475,
-  484,
-  16,
-  71,
-  202,
-  214,
-  252,
-  311,
-  318,
-  393,
-  399,
-  433,
-  498,
-  13,
-  132,
-  207,
-  214,
-  268,
-  277,
-  322,
-  415,
-  485,
-  92,
-  131,
-  201,
-  277,
-  299,
-  388,
-  419,
-  450,
-  458,
-  115,
-  188,
-  236,
-  334,
-  417,
-  31,
-  34,
-  54,
-  61,
-  90,
-  127,
-  244,
-  368,
-  398,
-  420,
-  45,
-  84,
-  124,
-  162,
-  192,
-  287,
-  334,
-  348,
-  354,
-  358,
-  386,
-  480,
-  497,
-  28,
-  74,
-  98,
-  130,
-  207,
-  377,
-  460,
-  62,
-  244,
-  280,
-  305,
-  385,
-  397,
-  434,
-  2,
-  46,
-  71,
-  170,
-  183,
-  445,
-  63,
-  69,
-  100,
-  120,
-  127,
-  130,
-  154,
-  160,
-  350,
-  384,
-  396,
-  401,
-  404,
-  21,
-  39,
-  91,
-  202,
-  238,
-  255,
-  277,
-  341,
-  345,
-  347,
-  381,
-  443,
-  53,
-  131,
-  156,
-  173,
-  245,
-  347,
-  359,
-  387,
-  404,
-  449,
-  462,
-  493,
-  33,
-  38,
-  51,
-  56,
-  87,
-  132,
-  256,
-  261,
-  270,
-  295,
-  411,
-  439,
-  2,
-  23,
-  82,
-  149,
-  179,
-  196,
-  217,
-  240,
-  260,
-  328,
-  332,
-  350,
-  416,
-  422,
-  425,
-  438,
-  494,
-  30,
-  61,
-  97,
-  209,
-  211,
-  283,
-  288,
-  344,
-  429,
-  441,
-  25,
-  55,
-  92,
-  120,
-  214,
-  264,
-  289,
-  396,
-  409,
-  432,
-  4,
-  27,
-  39,
-  66,
-  140,
-  177,
-  212,
-  246,
-  332,
-  356,
-  382,
-  480,
-  0,
-  42,
-  48,
-  154,
-  170,
-  214,
-  219,
-  261,
-  459,
-  476,
-  495,
-  60,
-  140,
-  171,
-  333,
-  343,
-  375,
-  383,
-  405,
-  119,
-  130,
-  167,
-  207,
-  316,
-  373,
-  399,
-  442,
-  32,
-  91,
-  281,
-  289,
-  404,
-  415,
-  469,
-  115,
-  182,
-  301,
-  312,
-  350,
-  359,
-  414,
-  419,
-  7,
-  49,
-  181,
-  191,
-  203,
-  299,
-  311,
-  467,
-  477,
-  7,
-  57,
-  171,
-  199,
-  232,
-  240,
-  254,
-  284,
-  361,
-  411,
-  430,
-  478,
-  154,
-  186,
-  216,
-  277,
-  466,
-  76,
-  187,
-  196,
-  198,
-  222,
-  368,
-  125,
-  164,
-  194,
-  299,
-  315,
-  361,
-  374,
-  433,
-  445,
-  471,
-  19,
-  116,
-  158,
-  168,
-  189,
-  312,
-  340,
-  373,
-  425,
-  453,
-  492,
-  92,
-  96,
-  275,
-  332,
-  346,
-  401,
-  436,
-  451,
-  499,
-  5,
-  35,
-  55,
-  64,
-  107,
-  121,
-  142,
-  233,
-  234,
-  264,
-  280,
-  296,
-  307,
-  333,
-  5,
-  24,
-  80,
-  87,
-  90,
-  232,
-  294,
-  346,
-  355,
-  358,
-  404,
-  445,
-  87,
-  102,
-  176,
-  270,
-  283,
-  286,
-  408,
-  31,
-  101,
-  247,
-  430,
-  434,
-  456,
-  43,
-  47,
-  102,
-  115,
-  146,
-  183,
-  206,
-  207,
-  264,
-  268,
-  329,
-  365,
-  491,
-  497,
-  183,
-  187,
-  214,
-  366,
-  382,
-  86,
-  106,
-  174,
-  179,
-  197,
-  277,
-  305,
-  416,
-  463,
-  67,
-  77,
-  110,
-  136,
-  223,
-  240,
-  324,
-  339,
-  393,
-  451,
-  1,
-  81,
-  82,
-  99,
-  200,
-  271,
-  298,
-  420,
-  491,
-  21,
-  57,
-  60,
-  158,
-  182,
-  188,
-  328,
-  338,
-  484,
-  290,
-  380,
-  405,
-  413,
-  480,
-  48,
-  73,
-  139,
-  157,
-  298,
-  358,
-  435,
-  4,
-  29,
-  65,
-  169,
-  339,
-  364,
-  473,
-  486,
-  33,
-  47,
-  160,
-  212,
-  223,
-  273,
-  304,
-  354,
-  364,
-  444,
-  481,
-  1,
-  22,
-  83,
-  160,
-  275,
-  296,
-  324,
-  332,
-  357,
-  369,
-  380,
-  467,
-  28,
-  198,
-  256,
-  272,
-  319,
-  357,
-  480,
-  122,
-  185,
-  202,
-  252,
-  277,
-  329,
-  403,
-  408,
-  445,
-  492,
-  80,
-  138,
-  221,
-  239,
-  371,
-  406,
-  413,
-  481,
-  495,
-  63,
-  127,
-  145,
-  172,
-  316,
-  338,
-  412,
-  414,
-  419,
-  430,
-  444,
-  482,
-  29,
-  144,
-  161,
-  276,
-  333,
-  362,
-  366,
-  464,
-  48,
-  84,
-  118,
-  144,
-  209,
-  240,
-  329,
-  376,
-  408,
-  411,
-  454,
-  456,
-  102,
-  231,
-  234,
-  255,
-  262,
-  281,
-  307,
-  54,
-  87,
-  179,
-  223,
-  293,
-  325,
-  331,
-  335,
-  344,
-  417,
-  481,
-  489,
-  1,
-  9,
-  55,
-  86,
-  120,
-  244,
-  287,
-  396,
-  427,
-  452,
-  79,
-  107,
-  187,
-  248,
-  258,
-  262,
-  329,
-  360,
-  474,
-  480,
-  482,
-  6,
-  61,
-  122,
-  163,
-  184,
-  261,
-  387,
-  494,
-  16,
-  38,
-  78,
-  125,
-  165,
-  264,
-  347,
-  352,
-  443,
-  6,
-  223,
-  243,
-  307,
-  371,
-  398,
-  32,
-  46,
-  97,
-  121,
-  162,
-  221,
-  251,
-  256,
-  304,
-  320,
-  371,
-  386,
-  440,
-  441,
-  463,
-  474,
-  60,
-  85,
-  131,
-  139,
-  142,
-  146,
-  227,
-  240,
-  255,
-  260,
-  271,
-  280,
-  282,
-  376,
-  390,
-  10,
-  157,
-  196,
-  197,
-  231,
-  356,
-  374,
-  388,
-  422,
-  487,
-  83,
-  223,
-  264,
-  315,
-  364,
-  428,
-  492,
-  23,
-  60,
-  73,
-  75,
-  85,
-  102,
-  109,
-  172,
-  193,
-  257,
-  286,
+  597,
+  773,
+  378,
+  177,
+  101,
+  899,
+  448,
+  430,
+  217,
+  403,
+  21,
+  837,
+  410,
+  345,
+  606,
+  373,
+  179,
+  310,
+  634,
+  894,
+  512,
+  289,
+  946,
+  243,
+  725,
+  458,
+  680,
+  579,
   304,
-  370,
-  379,
-  402,
-  434,
-  465,
-  481,
-  3,
-  65,
-  232,
-  290,
-  299,
-  353,
+  199,
+  721,
+  22,
+  452,
+  761,
+  945,
+  547,
   418,
-  425,
+  137,
+  209,
+  622,
+  174,
+  468,
+  223,
+  525,
+  84,
+  470,
+  266,
+  812,
+  950,
+  18,
+  983,
+  319,
+  843,
+  423,
+  862,
+  469,
+  957,
+  919,
+  387,
+  900,
+  382,
+  561,
+  337,
+  711,
+  352,
+  206,
+  737,
+  412,
+  40,
+  17,
+  851,
+  825,
+  910,
+  839,
+  207,
+  879,
+  588,
+  77,
+  867,
+  255,
+  577,
+  1,
+  609,
   473,
-  0,
-  16,
-  194,
-  274,
-  300,
-  365,
-  388,
-  407,
-  50,
-  144,
-  157,
-  228,
-  286,
-  298,
-  379,
-  15,
-  33,
-  51,
-  123,
+  88,
+  249,
+  491,
+  180,
+  594,
+  872,
+  870,
+  528,
+  68,
+  31,
+  208,
+  854,
+  190,
+  32,
   200,
-  215,
-  241,
+  225,
+  322,
+  869,
+  425,
+  62,
+  653,
+  919,
+  138,
+  246,
+  501,
+  995,
+  133,
+  852,
+  903,
+  694,
+  482,
+  818,
+  820,
+  922,
+  839,
+  870,
+  391,
+  880,
+  478,
+  602,
+  774,
+  989,
+  139,
+  457,
+  114,
   282,
-  303,
-  28,
-  69,
-  87,
-  152,
-  154,
-  254,
-  268,
-  275,
-  411,
-  443,
-  28,
+  632,
+  245,
+  452,
+  987,
+  920,
+  134,
+  94,
+  409,
+  124,
+  389,
+  36,
+  434,
+  885,
+  486,
+  269,
+  510,
+  487,
+  644,
+  122,
+  773,
+  13,
+  326,
+  369,
+  252,
+  407,
+  599,
+  182,
+  319,
   229,
-  305,
-  328,
+  684,
+  895,
+  760,
+  703,
+  982,
+  282,
+  645,
+  835,
   415,
-  448,
-  26,
-  66,
-  97,
-  118,
-  192,
-  203,
-  223,
-  343,
-  360,
-  121,
-  150,
-  187,
-  192,
-  248,
-  260,
-  478,
-  487,
-  96,
-  132,
-  133,
-  167,
-  187,
-  214,
-  219,
-  321,
-  389,
-  465,
-  31,
-  39,
+  182,
+  792,
+  681,
+  113,
+  659,
+  312,
+  998,
+  954,
+  655,
+  588,
+  3,
+  268,
+  125,
+  832,
+  346,
+  832,
+  972,
+  488,
+  709,
+  491,
+  913,
+  441,
+  187,
+  177,
+  90,
+  55,
+  959,
+  126,
+  73,
+  409,
+  606,
+  732,
+  985,
+  833,
+  381,
+  542,
+  559,
+  375,
+  829,
   50,
-  77,
-  113,
-  147,
-  212,
-  333,
-  367,
-  8,
-  102,
-  242,
-  275,
-  341,
-  352,
-  455,
+  432,
+  549,
+  996,
+  517,
   3,
-  20,
-  27,
-  117,
-  156,
-  182,
-  226,
-  234,
-  272,
-  311,
+  366,
+  33,
+  737,
+  451,
+  111,
+  380,
+  362,
+  884,
+  511,
+  199,
+  262,
+  647,
+  531,
+  717,
+  810,
+  675,
+  946,
+  614,
+  425,
+  282,
+  31,
+  436,
+  695,
+  701,
+  653,
+  629,
+  284,
+  109,
+  237,
+  909,
+  269,
+  495,
+  386,
+  327,
+  620,
+  947,
+  782,
+  663,
+  471,
+  818,
+  517,
+  768,
+  494,
+  249,
+  815,
+  725,
+  822,
+  614,
+  324,
+  22,
+  675,
+  118,
+  143,
+  929,
+  498,
+  368,
+  469,
+  482,
+  964,
+  554,
+  999,
+  265,
+  686,
+  782,
+  754,
+  247,
+  125,
+  960,
+  808,
+  788,
+  647,
+  623,
+  615,
+  727,
+  573,
+  813,
+  200,
+  371,
+  141,
+  733,
+  450,
+  515,
+  940,
+  304,
+  13,
+  522,
+  489,
+  948,
+  906,
+  529,
+  500,
+  98,
+  719,
+  174,
+  269,
+  170,
+  609,
+  789,
+  169,
+  645,
+  514,
+  438,
+  254,
+  103,
+  938,
+  306,
+  608,
   367,
-  370,
-  389,
-  421,
-  117,
-  127,
-  234,
-  236,
-  315,
-  322,
-  350,
-  402,
-  407,
-  57,
-  100,
-  213,
-  361,
+  889,
+  667,
+  621,
+  276,
+  346,
+  736,
+  210,
+  13,
+  356,
+  914,
   377,
-  82,
-  120,
+  613,
+  714,
+  949,
+  386,
+  770,
+  738,
+  310,
+  382,
+  145,
+  163,
+  470,
+  34,
+  855,
+  951,
+  672,
+  192,
+  942,
+  936,
+  429,
+  906,
+  378,
   159,
-  201,
-  206,
+  665,
+  208,
+  223,
+  575,
+  977,
+  937,
+  81,
+  24,
+  484,
+  941,
+  128,
+  544,
+  811,
+  905,
+  110,
+  707,
+  806,
+  996,
+  509,
+  283,
+  493,
+  846,
+  466,
+  356,
+  807,
+  993,
+  616,
+  790,
+  163,
+  7,
+  931,
+  661,
+  353,
+  499,
+  186,
+  309,
+  107,
+  556,
+  104,
+  702,
+  61,
+  963,
   255,
-  286,
-  338,
-  389,
-  496,
-  27,
+  279,
+  454,
+  941,
+  817,
+  447,
+  786,
+  788,
+  372,
+  919,
+  14,
+  113,
   41,
-  50,
+  412,
+  744,
+  372,
+  282,
+  648,
+  248,
+  484,
+  830,
+  104,
+  742,
+  425,
+  802,
+  216,
+  561,
+  103,
+  781,
+  602,
+  201,
+  317,
+  408,
+  461,
+  91,
+  691,
+  168,
+  850,
+  935,
+  171,
+  929,
+  482,
+  790,
+  701,
+  81,
+  556,
+  85,
+  342,
+  703,
   99,
-  151,
-  165,
-  222,
-  434,
-  453,
-  473,
+  937,
+  556,
+  14,
+  203,
+  974,
+  200,
+  145,
+  276,
+  408,
+  174,
+  573,
+  775,
+  893,
+  448,
+  21,
+  389,
+  813,
+  62,
+  134,
+  911,
+  119,
+  138,
+  201,
+  200,
+  105,
   0,
-  13,
-  15,
-  96,
-  224,
-  277,
-  387,
-  399,
-  401,
-  413,
-  434,
-  61,
-  68,
-  366,
-  400,
-  437,
-  465,
-  477,
-  482,
-  6,
+  958,
+  439,
+  635,
+  723,
+  930,
+  361,
+  745,
+  251,
+  608,
+  179,
+  19,
+  170,
+  405,
+  461,
+  643,
+  517,
+  379,
+  481,
+  899,
+  896,
+  396,
+  675,
+  536,
+  978,
+  513,
+  459,
+  454,
+  704,
+  398,
+  5,
+  786,
   45,
-  123,
-  200,
-  271,
-  292,
-  315,
-  355,
-  357,
-  365,
-  368,
-  384,
-  392,
-  430,
-  471,
-  487,
-  12,
-  30,
-  33,
-  98,
-  180,
-  263,
-  373,
-  43,
-  46,
-  49,
-  130,
+  843,
+  674,
+  758,
+  919,
+  250,
+  655,
+  980,
+  789,
+  55,
+  467,
+  459,
+  284,
+  1,
+  951,
+  447,
+  729,
+  756,
+  581,
+  992,
+  961,
+  744,
+  531,
+  169,
+  484,
+  346,
+  289,
+  18,
   143,
-  158,
-  166,
-  184,
-  239,
-  278,
-  295,
-  314,
-  337,
-  374,
-  407,
-  499,
-  16,
-  94,
-  108,
-  109,
-  121,
-  141,
-  142,
-  156,
-  213,
+  653,
+  221,
+  669,
+  537,
+  565,
+  552,
+  874,
+  502,
   352,
-  123,
-  153,
-  228,
-  325,
-  365,
-  401,
-  418,
-  473,
-  475,
-  74,
-  88,
-  90,
-  115,
-  233,
-  349,
-  366,
-  384,
+  458,
+  183,
+  975,
+  521,
+  272,
+  336,
+  930,
+  129,
+  678,
+  670,
+  821,
+  692,
   463,
-  482,
-  18,
-  51,
-  112,
-  172,
-  245,
-  303,
-  471,
-  499,
-  1,
-  9,
-  66,
-  70,
-  112,
-  128,
-  201,
-  209,
-  243,
-  266,
-  280,
-  307,
-  369,
-  406,
-  408,
-  422,
+  175,
+  958,
+  110,
+  393,
+  123,
+  174,
+  768,
+  70,
+  942,
+  237,
+  787,
+  788,
+  462,
   471,
-  86,
-  105,
-  150,
-  167,
-  172,
-  198,
+  160,
+  526,
+  579,
+  835,
+  889,
+  764,
+  878,
+  532,
+  151,
+  390,
+  607,
+  272,
+  49,
+  166,
+  399,
+  950,
+  566,
+  866,
+  446,
+  188,
+  552,
+  984,
+  530,
+  711,
+  541,
+  357,
+  30,
+  212,
+  675,
+  750,
+  746,
+  67,
+  55,
+  184,
+  788,
+  27,
+  314,
+  650,
+  403,
+  24,
+  72,
+  872,
+  260,
+  313,
+  446,
+  235,
+  275,
+  422,
+  727,
+  779,
+  192,
   215,
-  222,
-  232,
-  273,
-  309,
-  344,
-  347,
-  387,
-  406,
-  425,
-  441,
-  466,
-  34,
-  75,
   92,
-  119,
-  154,
+  534,
+  619,
+  192,
+  502,
+  139,
+  125,
+  921,
+  953,
+  463,
+  909,
+  961,
+  191,
+  281,
+  619,
+  978,
+  221,
+  841,
+  540,
+  959,
+  422,
+  610,
+  323,
+  162,
+  642,
+  817,
+  961,
+  699,
+  955,
+  341,
+  480,
   379,
-  439,
-  464,
-  476,
-  13,
-  41,
-  57,
-  92,
-  132,
+  28,
+  150,
+  386,
+  447,
+  871,
+  491,
+  632,
+  759,
+  785,
+  827,
+  50,
+  877,
+  771,
+  397,
+  67,
+  827,
+  448,
+  627,
+  85,
+  830,
+  646,
+  353,
+  304,
+  671,
+  963,
+  764,
+  58,
+  136,
+  838,
+  597,
+  932,
+  212,
+  558,
   276,
-  281,
+  73,
+  926,
+  403,
+  946,
+  268,
+  779,
+  559,
+  887,
+  213,
+  436,
+  529,
+  929,
+  295,
+  76,
+  78,
+  982,
+  105,
+  688,
+  420,
+  105,
+  815,
+  572,
+  172,
+  584,
+  412,
+  314,
+  219,
+  182,
+  238,
+  789,
+  877,
+  844,
+  62,
+  124,
+  711,
+  787,
+  315,
+  954,
   296,
-  380,
-  437,
-  442,
-  39,
-  61,
-  108,
-  133,
-  194,
-  197,
-  251,
-  266,
-  279,
-  289,
-  316,
-  318,
-  383,
-  384,
-  441,
-  460,
-  19,
-  20,
-  50,
-  51,
-  59,
-  107,
-  152,
-  159,
-  189,
-  221,
-  287,
-  342,
-  357,
   453,
-  131,
-  156,
-  198,
-  298,
-  318,
-  373,
-  424,
-  433,
+  842,
+  681,
+  282,
+  945,
+  132,
+  695,
+  443,
+  837,
+  92,
+  545,
+  363,
+  253,
+  515,
+  341,
+  409,
+  817,
+  578,
+  868,
+  542,
+  805,
+  508,
+  987,
+  286,
+  451,
+  157,
   58,
-  135,
-  151,
-  233,
-  283,
-  285,
-  319,
-  424,
-  19,
-  198,
-  270,
-  332,
-  396,
-  450,
-  458,
-  3,
-  11,
-  103,
-  120,
-  188,
-  285,
-  319,
-  435,
-  495,
+  126,
+  707,
+  874,
+  501,
+  982,
+  986,
+  382,
+  41,
+  829,
+  616,
+  895,
+  505,
+  627,
+  795,
+  555,
+  774,
+  968,
+  377,
+  762,
+  317,
+  742,
+  635,
+  481,
+  850,
+  989,
+  438,
+  72,
+  210,
+  611,
+  451,
+  521,
+  454,
+  85,
+  277,
+  797,
+  147,
+  31,
   74,
-  104,
-  122,
-  125,
-  149,
-  163,
-  172,
+  621,
+  119,
   180,
-  227,
-  232,
-  248,
-  308,
-  354,
-  357,
-  413,
-  465,
-  93,
-  95,
-  103,
-  124,
-  160,
-  164,
-  231,
-  242,
-  285,
-  331,
-  410,
-  435,
-  27,
-  42,
-  148,
-  333,
-  351,
-  383,
-  454,
-  153,
-  161,
-  209,
-  227,
+  571,
   234,
-  459,
-  469,
-  14,
-  45,
-  155,
-  163,
-  193,
-  223,
-  279,
-  300,
-  353,
-  405,
-  471,
-  499,
-  0,
-  71,
-  153,
-  168,
-  182,
-  218,
-  220,
-  264,
-  336,
+  358,
+  131,
+  70,
+  857,
+  330,
+  438,
   379,
-  414,
-  436,
-  443,
-  38,
-  126,
-  144,
-  146,
-  163,
-  168,
-  174,
-  199,
+  166,
+  33,
+  920,
+  139,
+  316,
+  776,
+  266,
+  284,
+  247,
+  949,
+  689,
+  857,
+  534,
+  355,
+  648,
   302,
-  307,
-  343,
-  385,
-  396,
-  448,
-  21,
-  22,
-  161,
-  236,
-  349,
-  381,
-  26,
-  32,
-  92,
-  94,
-  102,
-  105,
-  109,
-  176,
-  259,
-  260,
-  267,
+  840,
+  847,
+  958,
+  2,
+  602,
+  455,
+  372,
+  229,
+  370,
+  417,
+  221,
+  792,
+  91,
+  217,
+  154,
+  508,
+  45,
+  317,
+  33,
+  819,
+  48,
+  243,
+  601,
   291,
-  320,
-  385,
-  387,
-  450,
-  457,
-  485,
-  26,
-  115,
-  188,
+  613,
+  242,
+  333,
+  505,
+  537,
+  301,
+  299,
+  466,
+  927,
+  92,
+  775,
+  212,
+  985,
+  173,
+  32,
+  595,
+  643,
+  416,
+  911,
+  959,
+  252,
+  832,
+  808,
+  907,
+  761,
+  548,
+  551,
+  664,
+  728,
+  190,
+  280,
+  384,
+  822,
+  715,
+  834,
+  191,
+  437,
+  241,
+  529,
+  268,
+  38,
+  151,
+  14,
+  269,
+  679,
+  357,
+  110,
   200,
+  393,
+  837,
   212,
-  219,
-  234,
-  276,
-  311,
-  418,
-  420,
-  474,
-  476,
-  29,
-  60,
-  235,
-  262,
-  304,
-  458,
-  490,
-  499,
-  164,
-  252,
-  276,
-  299,
-  302,
-  445,
-  494,
-  30,
-  243,
-  255,
-  338,
-  373,
-  382,
-  390,
-  29,
-  33,
-  39,
-  55,
-  112,
-  217,
-  267,
-  329,
-  467,
   46,
-  54,
-  58,
-  69,
-  76,
-  109,
+  336,
+  193,
+  291,
+  985,
+  975,
+  524,
+  149,
+  599,
+  424,
+  141,
+  729,
+  703,
+  238,
+  589,
+  660,
+  263,
+  319,
+  946,
+  238,
+  368,
+  728,
+  660,
+  168,
+  66,
+  679,
+  500,
+  359,
+  281,
+  159,
+  189,
+  608,
+  793,
   204,
-  224,
-  344,
-  345,
-  399,
-  429,
-  6,
-  9,
-  54,
-  129,
-  186,
-  219,
-  258,
-  259,
-  264,
-  328,
-  348,
-  385,
-  410,
-  447,
+  706,
+  72,
+  77,
+  660,
+  751,
   38,
-  55,
-  191,
-  209,
-  222,
-  237,
-  258,
-  287,
-  309,
-  318,
-  397,
-  415,
-  7,
-  60,
-  96,
-  150,
-  189,
-  198,
+  154,
+  437,
+  76,
+  264,
+  859,
+  216,
+  156,
+  983,
+  886,
+  802,
+  924,
+  144,
+  995,
+  643,
+  614,
+  295,
+  229,
+  125,
+  29,
+  106,
+  625,
+  27,
   203,
-  213,
-  248,
-  290,
-  378,
-  436,
-  489,
-  78,
-  140,
-  158,
-  293,
-  404,
-  420,
+  327,
+  995,
+  123,
+  975,
+  379,
+  576,
+  258,
+  186,
+  545,
+  719,
+  530,
+  832,
+  867,
+  144,
+  146,
+  619,
+  623,
+  110,
+  218,
+  779,
+  481,
+  281,
+  826,
+  771,
+  569,
+  907,
+  342,
+  317,
+  353,
+  5,
+  360,
+  421,
+  70,
+  130,
+  42,
+  514,
+  648,
+  409,
+  909,
+  401,
+  487,
+  72,
+  580,
+  4,
+  76,
+  515,
+  382,
+  64,
+  193,
+  212,
+  20,
+  604,
+  478,
+  901,
+  784,
+  277,
+  761,
+  681,
   429,
-  449,
-  225,
-  271,
-  293,
-  319,
+  470,
+  57,
+  648,
+  609,
+  997,
+  71,
+  745,
+  876,
+  41,
+  946,
+  522,
   339,
-  482,
-  24,
-  51,
-  101,
-  116,
-  155,
-  0,
-  1,
-  15,
-  32,
-  35,
-  105,
-  119,
-  148,
-  210,
-  212,
-  301,
-  307,
-  442,
+  247,
+  221,
+  962,
+  110,
+  844,
+  679,
+  416,
+  522,
+  429,
+  767,
+  5,
+  819,
   450,
-  24,
-  153,
-  195,
-  210,
-  222,
-  243,
-  246,
-  326,
-  386,
+  66,
+  644,
+  722,
+  937,
+  539,
+  977,
+  727,
+  846,
+  973,
+  391,
+  699,
+  656,
+  496,
+  444,
+  173,
+  415,
+  717,
+  463,
+  935,
+  954,
+  248,
   450,
-  451,
-  460,
-  13,
-  68,
-  105,
-  121,
-  219,
+  892,
+  733,
+  537,
+  434,
+  920,
+  671,
   223,
-  268,
-  285,
-  4,
-  18,
-  48,
-  54,
-  146,
-  174,
-  176,
-  225,
-  243,
-  379,
-  463,
-  486,
-  27,
-  70,
-  73,
-  85,
-  151,
-  364,
-  377,
-  408,
-  410,
-  41,
-  77,
-  153,
-  165,
-  185,
-  202,
-  206,
-  272,
-  331,
+  891,
+  252,
+  313,
+  122,
+  393,
+  156,
+  131,
+  595,
+  81,
+  71,
+  936,
+  906,
+  590,
+  187,
+  810,
+  812,
+  639,
+  626,
+  233,
+  335,
   341,
-  397,
-  407,
-  459,
-  477,
+  253,
+  956,
+  363,
+  995,
+  971,
+  810,
+  478,
+  206,
+  382,
+  874,
+  580,
+  308,
+  178,
+  734,
+  834,
+  576,
+  938,
+  126,
+  877,
+  939,
+  274,
+  793,
+  364,
+  64,
+  347,
+  470,
+  975,
+  22,
+  14,
+  297,
+  674,
+  400,
   8,
-  30,
-  35,
-  36,
-  44,
-  45,
-  88,
-  137,
+  274,
+  842,
+  128,
+  102,
+  183,
+  978,
+  687,
+  614,
+  545,
+  770,
+  18,
+  353,
+  892,
+  301,
+  327,
+  497,
+  271,
+  822,
+  509,
+  154,
+  588,
+  543,
+  561,
+  632,
+  90,
+  413,
+  29,
+  462,
+  925,
+  667,
   203,
-  342,
+  846,
+  271,
+  353,
+  647,
+  434,
+  888,
+  392,
+  82,
+  445,
+  865,
+  709,
+  515,
+  382,
+  799,
+  672,
+  975,
+  466,
+  482,
+  168,
+  10,
+  150,
+  317,
+  606,
+  550,
+  166,
+  672,
+  522,
+  968,
+  605,
+  945,
+  949,
+  506,
+  353,
+  905,
+  660,
+  906,
+  490,
+  74,
+  493,
+  82,
+  47,
+  526,
+  850,
+  257,
+  308,
+  227,
   343,
-  361,
-  441,
-  446,
-  447,
-  34,
-  64,
-  169,
-  182,
-  190,
-  191,
-  200,
-  201,
-  244,
-  252,
-  256,
-  291,
-  373,
-  405,
-  446,
-  7,
-  40,
-  63,
-  81,
-  96,
-  156,
-  164,
-  169,
+  95,
+  260,
+  539,
+  593,
+  197,
+  304,
+  384,
+  589,
   179,
-  237,
-  259,
-  305,
-  314,
+  553,
+  389,
+  851,
+  731,
+  831,
+  711,
+  357,
+  554,
+  982,
+  2,
+  351,
+  879,
+  42,
   400,
-  425,
-  433,
-  473,
-  3,
-  65,
-  119,
-  126,
-  305,
-  313,
-  420,
-  430,
-  56,
-  123,
-  169,
-  231,
-  245,
-  264,
+  205,
+  228,
+  328,
+  820,
+  275,
+  850,
+  320,
+  253,
+  621,
+  873,
+  842,
+  846,
+  108,
+  180,
+  300,
+  514,
+  658,
+  211,
+  373,
   301,
-  448,
-  459,
-  466,
+  202,
+  930,
+  489,
+  581,
+  815,
+  175,
+  738,
+  551,
+  711,
+  609,
+  343,
+  606,
+  123,
+  411,
+  851,
+  207,
+  742,
+  296,
+  741,
+  184,
+  175,
+  497,
+  32,
+  550,
+  37,
+  970,
+  526,
+  430,
+  575,
+  242,
+  934,
+  283,
+  965,
+  561,
+  702,
+  750,
+  902,
+  964,
+  711,
+  92,
+  670,
+  243,
+  188,
+  481,
+  460,
+  556,
+  886,
+  890,
+  502,
   473,
-  115,
-  117,
-  197,
-  284,
+  8,
+  288,
+  57,
   356,
-  446,
-  34,
-  63,
-  94,
-  98,
-  136,
-  152,
-  214,
-  252,
-  309,
-  342,
-  411,
-  425,
-  468,
-  483,
-  82,
-  124,
-  170,
-  187,
-  200,
-  228,
-  278,
-  305,
-  469,
-  54,
-  71,
-  170,
-  270,
-  331,
-  450,
-  494,
-  496,
-  86,
+  721,
+  112,
+  817,
+  282,
+  123,
+  680,
+  344,
+  21,
+  935,
+  60,
+  287,
+  444,
+  267,
+  30,
+  447,
+  310,
+  922,
+  284,
+  442,
+  651,
+  454,
+  924,
+  771,
+  611,
+  852,
+  986,
+  367,
+  399,
   115,
-  182,
-  199,
-  221,
-  309,
-  320,
-  377,
-  406,
-  419,
-  434,
-  489,
-  491,
-  19,
-  26,
+  370,
+  326,
+  765,
+  323,
+  640,
+  906,
+  242,
+  526,
+  876,
+  899,
+  624,
+  166,
+  796,
+  252,
+  431,
+  99,
+  626,
+  870,
+  928,
+  935,
+  229,
+  286,
+  20,
+  648,
+  539,
+  533,
+  379,
+  64,
+  179,
+  317,
+  896,
+  293,
   144,
-  220,
+  971,
+  401,
+  720,
+  986,
+  286,
   277,
-  327,
-  349,
-  395,
-  421,
-  439,
+  828,
+  671,
+  66,
+  566,
+  461,
+  847,
+  904,
+  318,
+  59,
+  621,
+  958,
+  590,
+  905,
+  849,
+  718,
+  338,
+  342,
+  730,
+  22,
+  944,
+  544,
+  25,
+  348,
+  39,
+  719,
+  705,
+  596,
+  908,
+  805,
+  594,
   7,
-  17,
-  150,
-  199,
-  282,
-  308,
-  418,
-  434,
-  488,
-  489,
-  24,
-  48,
-  129,
-  175,
+  47,
+  744,
+  148,
   177,
-  210,
-  219,
-  225,
-  309,
-  381,
-  396,
-  447,
-  452,
-  461,
-  86,
-  118,
-  208,
-  213,
-  241,
-  268,
-  291,
-  389,
-  412,
-  1,
-  5,
-  72,
-  133,
-  171,
-  212,
-  215,
-  239,
-  263,
-  292,
-  302,
-  384,
+  476,
+  866,
+  849,
+  88,
+  246,
+  438,
+  523,
+  156,
+  886,
+  758,
+  605,
   39,
-  56,
-  80,
-  161,
+  209,
+  29,
+  678,
+  98,
+  879,
+  286,
+  447,
+  105,
+  832,
+  303,
   190,
-  229,
-  233,
+  164,
+  969,
+  222,
+  995,
+  331,
+  492,
+  399,
+  824,
+  14,
+  405,
+  831,
+  597,
+  670,
+  857,
+  120,
+  873,
+  171,
+  890,
+  905,
+  637,
+  115,
+  605,
+  336,
+  114,
+  828,
+  284,
+  303,
+  883,
+  158,
+  494,
+  153,
+  549,
+  232,
+  556,
+  695,
+  58,
+  29,
+  504,
+  252,
+  77,
+  35,
+  646,
+  137,
+  448,
+  400,
+  468,
   237,
-  238,
-  266,
-  321,
-  323,
+  258,
+  857,
+  150,
+  981,
+  756,
+  616,
+  138,
+  188,
+  386,
+  721,
+  370,
+  71,
+  911,
+  73,
+  967,
+  568,
+  504,
+  164,
+  770,
+  100,
+  179,
+  753,
+  551,
+  67,
+  657,
+  652,
+  243,
+  444,
+  398,
+  865,
+  772,
+  427,
   338,
-  34,
-  96,
-  122,
+  592,
+  63,
+  536,
+  519,
+  721,
+  83,
+  212,
+  451,
+  148,
+  117,
+  98,
+  888,
+  61,
+  734,
+  672,
+  502,
+  723,
+  783,
+  345,
+  338,
+  740,
+  909,
+  505,
+  839,
+  975,
+  654,
+  804,
+  611,
+  69,
+  11,
+  523,
+  629,
+  404,
+  856,
+  620,
+  442,
+  578,
+  574,
+  149,
+  135,
+  970,
+  938,
+  492,
+  713,
+  886,
+  639,
+  454,
+  376,
+  594,
+  374,
+  530,
+  634,
   168,
-  209,
-  242,
-  255,
-  310,
-  362,
-  365,
-  421,
-  445,
-  313,
-  349,
-  379,
-  489,
-  59,
-  88,
-  91,
-  163,
-  221,
-  259,
+  566,
+  809,
   268,
-  311,
-  415,
-  26,
-  76,
-  121,
-  132,
-  238,
-  318,
-  350,
-  358,
-  380,
-  409,
-  41,
-  71,
-  79,
-  114,
-  212,
-  281,
+  110,
+  766,
+  381,
+  754,
+  592,
+  582,
+  283,
+  0,
+  298,
+  246,
+  854,
+  1,
+  663,
+  430,
+  801,
+  700,
+  519,
+  357,
+  169,
+  8,
+  136,
+  246,
+  613,
   300,
-  360,
-  393,
-  499,
-  197,
-  289,
-  374,
-  389,
-  437,
-  471,
-  83,
-  111,
-  133,
-  218,
+  148,
+  884,
+  563,
+  392,
+  99,
+  846,
+  824,
+  322,
+  293,
   341,
-  368,
-  376,
-  412,
+  555,
+  193,
+  718,
+  570,
+  822,
+  222,
+  854,
+  12,
+  226,
+  16,
+  516,
+  920,
+  639,
+  838,
+  670,
+  529,
+  485,
+  959,
+  912,
+  543,
+  706,
+  877,
+  863,
+  852,
+  351,
+  912,
+  640,
+  705,
+  697,
+  687,
+  241,
+  287,
+  290,
+  930,
+  964,
+  1
+};
+const int idx[2399] = {
+  220,
+  336,
+  347,
+  422,
+  44,
+  128,
+  145,
+  234,
+  259,
+  315,
+  64,
+  103,
+  378,
   469,
-  45,
-  93,
-  106,
-  124,
+  477,
+  33,
+  108,
+  126,
+  173,
   196,
-  325,
-  365,
-  474,
-  59,
-  102,
-  174,
-  177,
-  244,
-  332,
-  475,
-  32,
-  40,
-  146,
-  198,
-  254,
-  359,
-  401,
-  431,
-  471,
-  24,
+  328,
+  331,
+  52,
   55,
-  212,
-  363,
+  109,
+  306,
+  337,
+  412,
+  443,
   364,
-  378,
-  381,
-  447,
-  4,
+  456,
+  487,
+  496,
+  299,
+  23,
+  259,
+  67,
+  196,
+  409,
   51,
-  108,
-  129,
-  152,
-  208,
-  260,
-  321,
-  452,
+  77,
+  147,
+  301,
+  362,
+  26,
+  106,
+  239,
+  39,
+  81,
+  118,
+  187,
+  290,
+  339,
+  395,
+  443,
+  36,
+  45,
+  195,
+  210,
+  244,
+  273,
+  22,
+  92,
+  215,
+  306,
+  364,
+  66,
+  216,
+  5,
   25,
-  127,
-  203,
-  248,
-  253,
-  405,
-  408,
-  449,
-  472,
-  63,
-  97,
+  145,
+  171,
+  330,
+  401,
+  412,
+  75,
+  148,
+  180,
+  204,
+  231,
+  432,
+  443,
+  100,
+  232,
+  400,
+  467,
+  114,
+  284,
+  300,
+  330,
+  370,
+  49,
   135,
-  197,
-  358,
+  183,
+  191,
+  268,
+  423,
+  491,
+  104,
+  280,
+  393,
+  442,
+  443,
+  461,
+  136,
+  175,
+  205,
+  216,
+  466,
+  5,
+  85,
+  429,
+  491,
+  0,
+  36,
+  78,
+  95,
+  161,
+  169,
+  219,
+  231,
+  250,
+  336,
+  341,
   360,
-  404,
-  438,
-  41,
-  42,
-  229,
+  495,
+  59,
+  134,
+  213,
+  319,
+  409,
+  93,
+  104,
   256,
-  280,
-  282,
-  321,
-  332,
-  337,
-  345,
-  391,
-  97,
+  223,
+  226,
+  8,
+  115,
   185,
-  221,
-  264,
-  269,
-  367,
-  406,
-  414,
-  3,
-  40,
-  53,
-  62,
-  72,
-  210,
-  343,
-  389,
-  406,
-  496,
-  16,
-  33,
-  230,
-  259,
-  271,
-  274,
-  283,
-  346,
-  361,
-  376,
-  383,
-  470,
-  3,
-  44,
-  73,
-  109,
-  142,
-  176,
-  179,
-  317,
-  329,
-  332,
-  367,
-  416,
-  436,
-  462,
-  475,
-  482,
-  152,
-  168,
-  211,
-  228,
-  292,
+  216,
+  320,
+  399,
+  461,
+  14,
+  60,
+  87,
+  93,
+  134,
+  170,
   391,
-  418,
-  445,
-  163,
-  338,
-  365,
-  388,
-  454,
+  399,
+  416,
+  455,
   3,
-  73,
-  100,
-  131,
-  156,
-  162,
-  176,
-  266,
-  415,
-  432,
-  453,
-  63,
-  75,
-  131,
-  207,
-  214,
-  234,
-  243,
-  252,
-  272,
-  298,
-  382,
-  415,
-  433,
-  41,
-  90,
-  194,
-  202,
-  280,
+  86,
+  99,
   304,
-  406,
-  423,
-  433,
-  466,
-  107,
-  113,
-  137,
-  173,
-  177,
-  229,
-  285,
-  355,
-  466,
+  471,
+  488,
+  0,
+  102,
+  132,
+  179,
+  303,
+  312,
+  313,
+  320,
+  389,
+  279,
   473,
-  60,
-  65,
-  99,
-  106,
-  130,
-  143,
-  233,
-  291,
-  292,
-  295,
-  393,
-  427,
-  449,
-  487,
-  30,
-  110,
-  112,
-  119,
-  145,
-  221,
-  230,
-  341,
-  427,
-  23,
-  88,
-  309,
-  330,
-  336,
-  340,
-  366,
-  462,
-  463,
-  2,
-  54,
-  57,
-  110,
-  288,
-  339,
+  180,
+  303,
+  310,
+  326,
+  7,
+  136,
+  239,
+  256,
+  276,
   350,
-  371,
-  373,
+  21,
+  32,
+  79,
+  209,
+  270,
+  314,
+  463,
+  87,
+  134,
+  188,
+  212,
+  418,
+  13,
+  76,
+  124,
+  179,
   409,
-  419,
-  465,
-  474,
-  11,
-  72,
-  110,
-  181,
-  211,
-  326,
-  373,
-  38,
-  63,
-  182,
-  295,
-  306,
-  310,
-  421,
+  411,
+  19,
+  299,
+  207,
+  266,
+  329,
   468,
-  498,
-  3,
-  41,
-  132,
-  159,
-  163,
-  182,
-  190,
-  230,
-  275,
-  285,
-  311,
+  29,
+  45,
+  265,
+  310,
+  384,
+  429,
+  480,
+  191,
+  347,
+  61,
+  66,
+  219,
+  228,
+  277,
+  289,
+  308,
+  402,
+  409,
+  133,
   382,
-  448,
-  482,
-  494,
-  11,
-  17,
-  23,
-  50,
-  71,
-  135,
-  169,
-  254,
-  307,
+  488,
+  18,
+  310,
+  439,
+  206,
+  257,
+  290,
+  356,
+  443,
+  43,
+  140,
+  184,
+  187,
+  278,
+  286,
+  341,
+  354,
+  126,
+  201,
+  208,
+  239,
+  454,
+  485,
+  40,
+  87,
+  222,
+  367,
+  398,
+  457,
+  299,
+  423,
+  440,
+  44,
+  115,
+  126,
+  147,
+  291,
+  411,
+  64,
+  480,
+  1,
+  67,
+  80,
+  91,
+  163,
+  239,
+  42,
   350,
-  393,
-  472,
-  37,
-  125,
-  131,
-  161,
-  276,
-  496,
-  28,
+  361,
+  427,
+  67,
+  169,
+  270,
+  15,
+  44,
+  223,
+  378,
+  452,
+  471,
+  31,
+  67,
+  274,
+  292,
+  457,
+  58,
   107,
   183,
-  234,
-  240,
+  222,
+  347,
+  407,
+  27,
+  65,
+  84,
+  208,
   273,
-  291,
-  332,
   385,
-  423,
-  490,
-  20,
-  89,
-  128,
-  317,
-  337,
-  353,
-  427,
-  1,
-  139,
-  170,
-  182,
-  198,
-  228,
-  247,
-  252,
-  336,
-  361,
-  365,
-  374,
-  418,
-  460,
-  199,
-  216,
-  237,
-  242,
-  262,
-  379,
-  394,
-  396,
-  449,
-  219,
-  267,
-  289,
-  301,
-  311,
-  358,
-  413,
-  433,
-  50,
-  51,
-  124,
-  158,
-  159,
-  258,
-  287,
-  337,
-  361,
-  467,
-  490,
-  36,
-  92,
+  441,
+  43,
   97,
-  162,
-  184,
-  267,
+  226,
   305,
-  309,
-  371,
-  486,
-  49,
-  66,
+  360,
+  492,
+  26,
   88,
-  107,
-  195,
-  225,
-  272,
-  300,
-  368,
-  469,
-  473,
-  484,
-  20,
-  84,
-  95,
-  423,
+  284,
+  369,
+  476,
+  21,
+  48,
+  478,
+  230,
+  312,
+  409,
+  475,
+  42,
+  53,
+  78,
+  259,
+  268,
+  489,
+  3,
+  37,
   60,
-  63,
   141,
-  148,
+  132,
   150,
-  169,
-  200,
-  390,
-  414,
-  493,
-  218,
-  237,
-  271,
-  374,
-  407,
-  425,
-  439,
-  444,
-  41,
-  50,
-  187,
-  199,
-  262,
+  157,
+  328,
   353,
-  86,
-  97,
-  115,
-  155,
-  197,
-  273,
-  286,
-  291,
-  307,
-  315,
-  332,
-  370,
-  438,
-  476,
-  487,
-  498,
-  60,
-  66,
-  85,
-  108,
-  117,
-  122,
-  139,
-  169,
-  173,
-  234,
-  269,
-  343,
-  346,
-  433,
-  438,
+  357,
+  422,
+  466,
+  480,
+  154,
+  455,
+  295,
+  411,
+  249,
+  320,
+  359,
+  381,
+  401,
   451,
-  469,
-  480,
-  482,
-  16,
-  33,
-  42,
-  86,
-  95,
+  210,
+  231,
+  253,
+  323,
+  330,
+  5,
+  55,
+  79,
+  105,
+  298,
+  496,
+  160,
+  229,
+  425,
+  30,
+  63,
+  115,
+  129,
+  280,
+  458,
+  31,
+  68,
+  254,
+  360,
+  420,
+  490,
+  2,
   172,
-  200,
-  216,
-  295,
-  303,
-  362,
-  408,
-  409,
-  428,
-  460,
-  476,
-  497,
-  67,
-  83,
-  142,
-  156,
-  192,
-  306,
-  389,
-  421,
-  444,
-  59,
-  72,
+  180,
+  209,
+  223,
   228,
-  229,
-  295,
-  348,
-  351,
-  391,
+  265,
+  357,
+  369,
+  380,
+  443,
+  453,
+  483,
+  36,
+  110,
+  129,
+  135,
+  246,
+  305,
+  36,
+  211,
+  239,
+  254,
   392,
-  452,
+  403,
+  494,
+  255,
+  332,
+  485,
+  110,
+  360,
+  498,
+  0,
+  11,
+  37,
+  106,
+  182,
+  308,
+  14,
+  41,
+  75,
+  218,
+  256,
+  259,
+  294,
   462,
-  58,
-  91,
-  364,
-  366,
+  218,
+  231,
+  248,
+  392,
+  427,
+  21,
+  234,
+  406,
+  29,
+  171,
+  248,
+  255,
+  352,
+  34,
+  57,
+  122,
+  173,
+  254,
+  308,
   380,
-  433,
-  446,
-  488,
+  393,
+  278,
   28,
-  45,
+  62,
+  129,
+  296,
+  455,
+  474,
+  15,
+  47,
+  128,
+  133,
+  300,
+  390,
+  459,
+  468,
+  35,
+  48,
   70,
-  96,
-  109,
-  197,
-  204,
-  206,
-  207,
-  230,
-  313,
-  396,
-  407,
-  121,
-  149,
-  205,
-  216,
-  258,
-  283,
-  355,
-  375,
+  287,
+  299,
+  318,
+  22,
+  108,
+  171,
+  195,
+  460,
+  496,
+  188,
+  21,
+  31,
+  86,
+  338,
+  420,
+  422,
+  486,
+  495,
+  245,
+  445,
+  22,
+  85,
+  92,
+  337,
+  381,
+  387,
   7,
-  28,
-  116,
-  169,
-  182,
-  216,
-  219,
-  229,
-  235,
-  276,
-  325,
+  9,
+  231,
+  425,
+  430,
+  56,
+  196,
+  344,
+  354,
+  377,
+  91,
+  107,
+  177,
+  221,
+  295,
+  321,
+  5,
+  35,
+  48,
+  90,
+  290,
+  432,
   447,
-  42,
-  80,
-  88,
+  51,
+  322,
+  324,
+  364,
+  482,
+  59,
+  303,
+  334,
+  444,
+  450,
+  55,
+  125,
+  319,
+  380,
+  394,
+  431,
+  82,
+  112,
+  157,
+  187,
+  261,
+  326,
+  347,
+  366,
+  18,
+  124,
+  490,
+  8,
+  218,
+  291,
+  35,
+  132,
+  322,
+  425,
   147,
-  174,
-  203,
-  223,
+  150,
   242,
-  324,
-  382,
-  432,
-  445,
+  472,
+  186,
+  195,
+  201,
+  216,
+  251,
+  458,
   33,
-  108,
-  237,
-  314,
-  409,
-  421,
-  443,
-  49,
-  87,
-  189,
-  210,
-  237,
-  242,
-  391,
-  444,
-  38,
+  46,
+  153,
+  297,
+  298,
+  311,
+  322,
+  399,
+  426,
   65,
-  96,
-  163,
-  224,
-  225,
-  241,
-  269,
+  230,
+  9,
+  32,
+  69,
+  391,
+  70,
+  126,
+  147,
+  222,
+  86,
+  261,
+  412,
+  183,
+  474,
+  110,
+  125,
+  172,
+  185,
+  402,
+  363,
+  403,
+  462,
+  40,
   274,
-  298,
-  328,
-  348,
-  35,
-  45,
+  386,
+  449,
+  333,
+  340,
+  421,
+  424,
+  410,
+  30,
+  86,
+  262,
+  374,
+  23,
   72,
-  75,
+  9,
+  47,
+  86,
+  93,
+  286,
+  304,
+  402,
+  420,
+  118,
+  265,
+  276,
+  283,
+  455,
+  20,
+  36,
+  391,
+  115,
+  137,
+  305,
+  334,
+  10,
+  188,
+  237,
+  271,
+  393,
+  422,
+  497,
+  21,
+  30,
+  99,
   109,
+  175,
+  198,
+  467,
+  3,
+  19,
+  63,
+  82,
   115,
-  145,
-  171,
-  191,
-  262,
-  319,
-  328,
-  435,
-  26,
-  48,
-  81,
-  118,
-  164,
-  192,
-  351,
+  149,
+  265,
+  24,
+  151,
+  217,
+  252,
+  307,
+  421,
+  146,
+  333,
   381,
-  400,
-  13,
-  101,
-  102,
-  109,
-  220,
-  308,
+  434,
+  32,
   311,
-  403,
-  451,
-  72,
-  104,
-  130,
-  138,
-  180,
-  196,
-  299,
-  327,
-  353,
-  467,
-  17,
-  30,
-  39,
-  62,
-  88,
+  361,
+  93,
   142,
-  189,
-  234,
-  246,
-  351,
-  404,
-  409,
-  3,
-  111,
-  133,
-  171,
-  266,
-  292,
-  337,
-  388,
-  425,
-  427,
-  121,
-  211,
-  293,
-  313,
-  317,
-  437,
-  6,
-  17,
-  46,
-  54,
-  122,
-  130,
-  266,
-  297,
+  152,
   395,
-  439,
-  56,
-  64,
-  146,
-  165,
-  168,
-  272,
-  293,
-  355,
-  425,
-  486,
-  1,
-  22,
-  45,
-  265,
-  290,
-  323,
-  459,
-  473,
-  482,
-  5,
-  67,
-  90,
-  106,
-  270,
-  315,
-  4,
-  9,
-  20,
-  110,
-  119,
-  143,
-  188,
-  207,
-  266,
-  276,
+  422,
+  467,
+  91,
+  181,
+  244,
+  294,
+  332,
+  390,
+  97,
+  177,
   296,
+  323,
   428,
-  445,
-  462,
-  44,
-  48,
-  151,
-  259,
-  260,
-  285,
-  315,
-  321,
-  366,
-  405,
-  420,
-  496,
-  36,
-  38,
-  45,
-  51,
-  176,
-  241,
-  332,
-  341,
-  355,
-  357,
-  385,
-  409,
-  85,
-  233,
-  250,
-  377,
-  495,
-  42,
+  27,
   215,
-  250,
-  329,
-  341,
-  355,
-  451,
-  493,
-  496,
-  36,
+  318,
+  66,
+  193,
+  216,
+  333,
+  416,
+  127,
+  171,
+  209,
+  219,
+  333,
+  377,
+  401,
+  9,
+  103,
+  129,
+  135,
+  290,
+  438,
+  33,
+  107,
+  221,
+  351,
+  392,
+  406,
+  91,
+  170,
+  182,
+  313,
+  419,
+  465,
+  28,
+  74,
+  175,
+  231,
+  270,
+  30,
+  34,
+  240,
+  253,
+  63,
+  133,
+  337,
+  369,
+  416,
+  255,
+  445,
   145,
-  159,
-  212,
-  297,
-  370,
-  426,
+  350,
+  416,
+  183,
+  257,
+  414,
+  136,
+  164,
+  255,
+  300,
+  434,
+  438,
   447,
-  464,
-  14,
+  60,
+  157,
+  396,
+  412,
+  25,
+  343,
+  42,
+  105,
+  361,
+  472,
   34,
-  35,
   74,
-  75,
-  123,
-  128,
-  138,
-  147,
-  160,
-  225,
-  315,
-  343,
-  351,
-  354,
-  371,
-  426,
+  136,
   436,
-  27,
-  173,
-  249,
-  327,
-  337,
-  364,
-  441,
-  454,
-  489,
-  117,
-  128,
-  137,
-  200,
-  217,
-  238,
-  314,
-  353,
-  403,
-  462,
-  11,
-  101,
-  156,
-  195,
-  259,
-  299,
-  331,
-  400,
-  34,
-  64,
-  102,
-  208,
-  255,
-  301,
-  324,
-  333,
-  366,
-  412,
+  474,
+  94,
+  177,
+  205,
+  225,
+  227,
+  319,
   23,
-  28,
-  38,
-  95,
-  101,
-  133,
-  198,
-  318,
-  354,
-  385,
-  447,
-  35,
-  71,
-  139,
-  196,
-  240,
-  363,
-  371,
-  427,
-  35,
-  132,
-  162,
-  206,
-  238,
-  366,
-  382,
+  245,
+  383,
   426,
-  445,
-  455,
-  478,
-  21,
-  120,
+  31,
+  190,
+  215,
+  228,
+  324,
+  416,
+  7,
+  12,
+  260,
+  470,
+  13,
+  290,
+  9,
+  44,
+  117,
+  166,
   186,
-  209,
-  239,
-  265,
-  313,
-  476,
-  497,
-  26,
-  74,
-  90,
-  111,
-  146,
-  351,
-  10,
-  144,
-  192,
+  260,
+  361,
+  372,
+  224,
+  241,
+  369,
+  1,
+  87,
+  297,
+  457,
+  29,
+  98,
+  118,
+  158,
+  226,
+  286,
+  74,
+  167,
   241,
-  264,
-  314,
-  331,
-  337,
-  405,
-  431,
-  465,
-  466,
-  493,
-  10,
-  56,
-  93,
-  137,
-  145,
-  160,
-  191,
-  199,
-  248,
-  324,
-  355,
-  362,
-  414,
-  472,
-  483,
-  16,
-  30,
-  34,
+  328,
+  370,
+  412,
+  454,
+  1,
   37,
-  80,
-  92,
-  97,
-  103,
-  179,
   183,
-  206,
+  228,
+  311,
   336,
-  338,
-  402,
-  25,
-  38,
-  66,
-  119,
+  345,
+  413,
+  430,
+  446,
+  211,
+  327,
+  375,
+  84,
+  195,
+  219,
+  430,
+  447,
+  195,
+  384,
+  50,
+  93,
+  224,
+  349,
+  479,
+  6,
+  56,
+  105,
+  118,
+  170,
+  286,
+  468,
+  466,
+  153,
+  224,
+  240,
+  400,
+  444,
+  63,
+  158,
   196,
-  222,
-  238,
-  371,
-  389,
-  390,
-  417,
-  425,
-  450,
+  237,
+  284,
+  296,
+  405,
+  407,
+  480,
+  26,
+  56,
+  233,
+  428,
+  370,
+  398,
   491,
-  493,
-  20,
-  51,
-  181,
-  196,
-  242,
-  435,
-  479,
-  55,
-  71,
-  295,
-  382,
-  476,
-  9,
-  66,
-  76,
+  159,
   184,
-  186,
-  197,
-  295,
-  313,
-  320,
-  395,
-  413,
-  429,
-  6,
-  16,
-  23,
-  51,
-  133,
-  137,
-  168,
-  186,
-  200,
-  213,
-  274,
+  488,
+  131,
+  134,
+  138,
   276,
-  301,
-  340,
-  395,
-  463,
-  33,
-  174,
-  304,
-  483,
-  171,
-  253,
-  265,
-  288,
-  296,
-  316,
-  365,
+  344,
   372,
-  443,
-  76,
+  428,
+  494,
+  269,
+  486,
   136,
+  139,
+  163,
+  201,
+  253,
+  272,
+  374,
+  398,
+  487,
+  307,
+  375,
+  487,
+  168,
+  284,
+  346,
+  420,
+  451,
+  134,
+  175,
+  284,
+  88,
+  105,
+  286,
+  448,
+  96,
+  117,
+  177,
+  240,
+  285,
+  325,
+  455,
+  51,
+  228,
+  298,
+  421,
+  150,
+  433,
   182,
+  362,
+  410,
+  58,
+  262,
+  352,
+  439,
+  43,
+  70,
+  134,
+  278,
+  152,
   210,
-  221,
-  233,
-  263,
-  329,
-  339,
-  398,
-  428,
-  450,
-  454,
-  3,
-  55,
-  140,
-  146,
-  203,
-  206,
-  207,
-  249,
-  276,
-  430,
-  466,
-  483,
-  190,
+  283,
+  310,
+  333,
+  334,
+  469,
+  20,
+  42,
+  69,
   222,
-  224,
+  283,
+  320,
+  330,
+  376,
+  218,
+  285,
+  413,
+  434,
+  5,
+  175,
+  180,
+  265,
+  440,
+  474,
+  241,
+  255,
+  377,
+  479,
+  307,
+  317,
+  457,
+  0,
   232,
-  360,
-  421,
-  458,
-  473,
-  498,
-  117,
-  120,
-  123,
-  168,
-  181,
-  197,
-  227,
-  234,
-  315,
-  372,
-  425,
-  459,
-  484,
-  38,
-  71,
-  90,
-  189,
-  340,
   342,
-  370,
+  496,
+  25,
+  292,
+  105,
+  169,
+  208,
+  300,
+  439,
+  21,
+  65,
+  120,
+  249,
+  273,
+  191,
+  302,
+  376,
+  56,
+  92,
+  240,
+  371,
   391,
-  395,
-  418,
-  86,
-  174,
-  201,
-  355,
+  446,
+  489,
+  84,
+  241,
+  322,
+  473,
+  475,
+  16,
+  92,
+  214,
+  239,
+  50,
+  158,
+  175,
+  452,
+  51,
   360,
-  401,
-  478,
-  59,
-  163,
-  249,
-  350,
+  25,
+  39,
+  90,
+  99,
+  133,
   408,
-  409,
-  81,
-  83,
-  113,
+  491,
+  430,
+  12,
+  64,
+  76,
+  189,
+  481,
+  128,
+  306,
+  442,
+  77,
+  276,
+  337,
+  356,
+  380,
+  389,
+  445,
+  61,
+  158,
+  194,
+  445,
+  303,
+  398,
   143,
-  279,
-  289,
-  470,
-  473,
-  17,
+  163,
+  199,
+  343,
+  236,
+  246,
+  340,
+  382,
+  446,
   38,
-  43,
-  47,
-  106,
+  154,
+  196,
+  202,
+  266,
+  367,
+  369,
+  117,
+  136,
+  250,
+  272,
+  413,
+  481,
+  0,
+  199,
+  205,
+  412,
+  39,
+  177,
   198,
-  257,
-  350,
-  373,
-  389,
+  369,
+  448,
+  91,
+  153,
+  167,
+  187,
+  203,
+  265,
+  328,
+  218,
+  222,
+  261,
+  413,
+  419,
+  447,
+  128,
+  228,
+  498,
+  0,
+  148,
+  198,
+  486,
+  497,
+  50,
+  398,
   457,
-  462,
-  494,
-  10,
-  22,
-  69,
+  283,
+  460,
+  43,
+  116,
+  246,
+  248,
+  305,
+  447,
+  106,
+  131,
+  317,
+  126,
+  199,
+  235,
+  293,
+  34,
   108,
-  172,
-  273,
-  348,
-  370,
-  373,
-  391,
-  419,
-  495,
+  226,
+  3,
+  108,
+  129,
+  155,
+  174,
+  162,
+  239,
+  490,
+  124,
+  214,
+  346,
+  469,
+  497,
+  274,
+  316,
+  122,
+  144,
+  149,
+  290,
+  337,
+  362,
+  371,
+  466,
+  67,
+  248,
+  276,
+  332,
+  360,
+  387,
+  405,
+  31,
+  56,
+  65,
+  90,
+  200,
+  64,
+  176,
+  203,
+  215,
+  236,
+  240,
+  337,
+  383,
+  198,
+  411,
+  431,
+  36,
+  90,
+  350,
+  356,
+  497,
+  33,
+  120,
+  130,
+  183,
+  409,
+  493,
+  8,
+  35,
+  254,
+  277,
+  321,
+  341,
+  388,
+  423,
   497,
-  0,
-  73,
-  102,
-  104,
   143,
-  157,
-  180,
-  190,
-  241,
-  247,
-  330,
-  374,
-  378,
-  433,
-  474,
-  34,
-  38,
+  163,
+  391,
+  446,
+  492,
+  9,
+  270,
+  42,
   52,
-  73,
-  140,
-  184,
-  247,
-  259,
-  268,
-  353,
-  406,
-  468,
-  23,
-  29,
-  96,
-  114,
+  116,
+  396,
+  456,
+  478,
+  491,
   143,
-  198,
-  283,
-  295,
-  416,
-  476,
-  51,
-  285,
-  394,
+  148,
+  286,
+  328,
+  384,
+  35,
+  127,
+  351,
+  452,
   7,
-  28,
-  62,
-  85,
-  244,
-  301,
-  376,
-  387,
-  460,
-  481,
-  61,
-  76,
-  117,
-  131,
-  140,
-  175,
-  219,
-  254,
+  46,
   259,
-  275,
-  353,
-  392,
-  394,
-  395,
-  441,
-  499,
-  8,
-  12,
-  126,
-  190,
+  35,
+  290,
+  370,
+  420,
+  104,
+  258,
+  278,
+  340,
+  481,
+  169,
+  264,
+  368,
+  232,
+  471,
+  1,
+  135,
+  211,
+  152,
+  174,
+  177,
+  187,
   292,
-  360,
-  460,
-  98,
+  411,
+  430,
+  461,
+  4,
+  92,
+  205,
+  237,
   247,
-  262,
-  271,
-  290,
-  301,
-  353,
-  408,
-  450,
+  333,
+  53,
+  91,
+  289,
+  334,
+  425,
+  491,
+  118,
+  175,
+  490,
+  36,
+  361,
+  33,
+  186,
+  213,
+  471,
+  3,
+  73,
+  163,
+  409,
+  235,
+  384,
+  410,
+  470,
   480,
+  59,
+  469,
+  97,
+  344,
+  372,
+  33,
+  107,
+  179,
+  397,
+  470,
+  291,
+  340,
+  361,
+  385,
+  25,
+  111,
+  158,
+  331,
+  471,
+  28,
+  87,
+  307,
+  69,
+  105,
+  159,
+  284,
+  311,
+  312,
+  359,
+  465,
+  17,
+  133,
+  302,
+  324,
+  274,
+  325,
+  421,
+  252,
+  4,
+  96,
+  409,
+  206,
+  246,
+  288,
+  58,
+  81,
+  150,
+  226,
+  232,
+  380,
+  168,
+  229,
+  367,
+  210,
+  248,
+  405,
+  420,
+  163,
+  212,
+  320,
+  340,
+  448,
+  68,
+  222,
+  439,
+  494,
+  70,
+  94,
+  116,
+  471,
+  284,
+  380,
+  13,
+  26,
+  120,
+  276,
+  394,
+  432,
+  492,
+  281,
+  297,
+  300,
+  355,
+  29,
+  32,
+  156,
+  182,
+  467,
+  203,
+  234,
+  420,
+  429,
+  210,
+  224,
+  248,
+  273,
+  326,
+  349,
+  37,
+  202,
+  377,
+  380,
   43,
-  124,
-  171,
-  316,
-  413,
-  12,
-  43,
-  115,
-  147,
+  55,
+  139,
+  141,
+  170,
+  232,
+  292,
+  322,
+  77,
+  214,
+  241,
+  279,
+  326,
+  18,
+  46,
+  55,
+  107,
   227,
+  238,
+  250,
+  146,
+  168,
+  402,
+  444,
+  459,
+  487,
+  495,
+  6,
+  121,
+  256,
+  303,
+  457,
+  461,
+  69,
+  122,
+  193,
+  204,
   240,
-  255,
-  300,
-  335,
-  378,
-  380,
-  397,
+  347,
+  412,
+  418,
+  476,
+  169,
+  187,
+  400,
+  97,
+  290,
+  364,
+  394,
+  153,
+  184,
+  187,
+  9,
+  13,
+  65,
+  89,
+  120,
+  221,
+  484,
   6,
+  120,
+  180,
+  419,
   15,
-  23,
-  64,
-  78,
-  132,
-  227,
-  321,
-  385,
-  413,
-  461,
-  2,
-  53,
-  74,
   86,
-  115,
-  136,
-  154,
-  261,
-  370,
-  383,
+  104,
+  193,
+  276,
+  324,
+  437,
+  443,
+  62,
+  97,
+  193,
+  288,
+  315,
+  318,
+  414,
+  24,
+  170,
+  189,
+  196,
+  216,
+  228,
+  270,
+  420,
+  214,
+  407,
   466,
-  22,
-  122,
-  163,
-  198,
-  200,
-  240,
-  263,
-  294,
+  2,
+  77,
+  127,
+  188,
+  230,
+  310,
+  464,
+  469,
+  80,
+  204,
+  138,
+  171,
+  252,
+  424,
+  0,
+  95,
   363,
+  395,
   408,
-  499,
-  27,
-  53,
-  71,
-  102,
-  133,
-  236,
-  261,
-  368,
-  434,
-  472,
-  34,
-  79,
-  163,
-  176,
+  430,
+  96,
+  143,
+  289,
+  97,
+  183,
+  341,
+  399,
+  460,
+  84,
+  243,
+  498,
+  28,
+  65,
+  77,
+  84,
+  139,
+  147,
+  171,
+  214,
+  256,
+  348,
+  408,
+  444,
+  449,
+  457,
+  120,
+  342,
+  38,
+  217,
+  465,
+  8,
+  212,
+  268,
+  346,
+  486,
+  491,
+  49,
+  77,
+  90,
   222,
-  273,
-  330,
-  352,
+  291,
+  383,
+  130,
+  405,
+  431,
+  473,
+  78,
+  290,
+  351,
+  189,
+  304,
+  498,
+  336,
+  10,
+  219,
+  257,
+  402,
+  437,
+  65,
+  69,
+  168,
+  198,
+  65,
+  241,
+  242,
+  290,
+  360,
+  402,
+  254,
+  256,
+  398,
+  407,
+  66,
+  97,
+  164,
+  222,
+  316,
+  390,
+  429,
+  24,
+  81,
+  133,
+  207,
+  313,
+  67,
+  108,
+  204,
+  303,
+  494,
+  43,
+  194,
+  198,
+  285,
+  294,
+  347,
+  356,
+  394,
+  83,
+  92,
+  147,
+  167,
+  386,
+  20,
+  225,
   400,
-  10,
-  61,
-  95,
-  144,
   172,
-  204,
-  227,
-  301,
-  312,
-  331,
-  103,
-  259,
-  272,
-  295,
-  332,
-  139,
-  175,
-  191,
+  363,
+  99,
+  64,
+  373,
+  377,
+  6,
+  63,
+  206,
+  107,
+  149,
   230,
+  428,
+  41,
+  56,
+  77,
+  78,
+  311,
+  413,
+  476,
+  477,
+  81,
+  130,
+  145,
+  167,
+  247,
+  416,
+  56,
   289,
-  295,
-  298,
+  339,
+  27,
+  47,
+  132,
+  309,
+  392,
+  36,
+  55,
+  73,
   352,
-  370,
-  383,
-  401,
-  421,
-  79,
-  117,
-  135,
-  153,
-  180,
-  203,
-  283,
-  365,
-  420,
-  92,
-  104,
-  113,
-  124,
-  138,
-  158,
-  288,
-  318,
-  381,
-  484,
-  13,
-  16,
-  72,
-  96,
-  135,
-  138,
-  259,
-  297,
+  358,
+  25,
+  58,
   352,
-  469,
-  4,
-  27,
-  219,
-  225,
-  250,
-  255,
-  290,
-  329,
   430,
-  448,
-  96,
-  119,
-  169,
-  177,
-  181,
-  207,
-  236,
-  267,
-  286,
-  342,
-  370,
-  373,
-  411,
-  414,
-  422,
-  463,
-  478,
-  52,
-  60,
-  112,
-  220,
-  254,
-  257,
-  331,
-  382,
-  391,
-  488,
-  93,
+  58,
   171,
-  179,
-  227,
-  356,
-  376,
-  381,
-  424,
-  426,
+  221,
+  334,
+  379,
+  453,
+  288,
+  479,
+  109,
+  134,
+  143,
+  174,
+  285,
+  313,
+  468,
+  495,
+  258,
+  289,
+  334,
+  382,
+  483,
+  46,
+  136,
+  264,
+  417,
+  458,
   36,
-  126,
-  200,
-  280,
-  383,
-  402,
-  407,
-  472,
-  489,
-  497,
-  53,
-  62,
+  59,
   88,
-  101,
-  130,
-  167,
+  173,
+  310,
+  316,
+  354,
+  471,
+  46,
+  225,
+  262,
+  335,
+  364,
+  468,
+  121,
+  341,
+  349,
+  7,
+  14,
+  21,
+  99,
+  135,
+  142,
+  207,
+  209,
+  272,
+  294,
+  456,
+  491,
+  208,
+  248,
+  321,
+  43,
+  129,
+  188,
+  362,
+  191,
+  279,
+  294,
+  307,
+  324,
+  362,
+  140,
+  422,
+  56,
+  169,
   188,
+  232,
+  328,
+  449,
+  14,
+  134,
+  369,
+  375,
+  48,
+  164,
+  224,
+  260,
+  20,
+  93,
+  157,
+  219,
+  262,
+  274,
+  362,
+  473,
+  484,
+  103,
+  125,
+  140,
+  174,
+  175,
   191,
-  285,
-  320,
-  339,
-  384,
-  436,
+  226,
+  358,
+  408,
+  450,
+  20,
+  94,
+  289,
+  310,
+  311,
+  448,
   478,
+  36,
+  175,
+  185,
+  337,
+  391,
+  48,
+  72,
+  184,
+  233,
+  345,
   485,
-  11,
-  12,
-  143,
-  154,
-  227,
-  230,
-  300,
-  307,
-  326,
-  483,
-  28,
-  70,
-  110,
-  358,
-  468,
-  55,
-  104,
-  111,
-  122,
-  179,
-  204,
-  206,
-  236,
-  292,
-  403,
-  410,
-  426,
-  465,
-  10,
-  204,
-  291,
-  390,
-  394,
-  497,
-  25,
-  47,
-  152,
-  190,
-  328,
-  329,
+  231,
+  242,
   339,
-  365,
-  367,
-  378,
+  451,
+  456,
+  152,
+  158,
+  398,
+  458,
+  488,
+  151,
+  240,
+  357,
+  1,
+  33,
+  139,
+  141,
+  177,
+  223,
+  289,
+  479,
+  90,
+  115,
+  461,
+  480,
+  24,
+  26,
+  44,
+  72,
+  213,
+  361,
+  445,
   34,
-  36,
-  67,
-  136,
-  216,
-  259,
-  358,
-  408,
-  419,
-  450,
+  119,
+  470,
+  19,
+  56,
+  405,
+  464,
+  47,
+  112,
+  163,
+  235,
+  342,
   462,
-  499,
-  42,
-  48,
-  187,
+  103,
   192,
-  286,
-  291,
-  297,
-  368,
-  396,
+  225,
+  23,
+  458,
+  68,
+  270,
+  363,
   422,
-  423,
-  90,
-  121,
-  202,
-  254,
+  427,
+  449,
+  450,
+  477,
+  105,
+  131,
+  139,
+  198,
+  212,
+  413,
+  429,
+  435,
+  43,
   278,
-  335,
+  19,
+  113,
+  192,
+  327,
+  347,
+  44,
+  67,
+  160,
+  225,
+  263,
+  330,
+  344,
+  158,
+  274,
+  303,
+  317,
+  350,
+  379,
+  409,
+  33,
+  53,
+  217,
+  273,
+  304,
+  352,
+  461,
+  495,
+  101,
+  168,
+  370,
+  395,
+  458,
+  156,
+  301,
+  319,
+  324,
+  347,
+  73,
+  127,
+  253,
+  272,
+  128,
+  212,
+  237,
+  257,
+  351,
+  77,
+  106,
+  216,
+  270,
+  368,
+  371,
+  400,
+  223,
+  355,
+  384,
+  30,
+  268,
+  307,
+  368,
+  79,
+  300,
+  317,
+  327,
+  15,
+  376,
+  31,
+  80,
+  160,
+  206,
+  227,
+  103,
+  231,
+  435,
+  481,
+  499,
+  182,
+  186,
+  189,
+  442,
+  7,
+  59,
+  65,
+  117,
+  225,
+  298,
+  304,
+  364,
+  457,
+  489,
+  186,
+  198,
+  265,
+  309,
   336,
-  430,
-  453,
-  475,
-  490,
-  35,
+  391,
+  457,
+  314,
+  418,
+  81,
+  133,
+  186,
+  190,
+  227,
+  258,
+  277,
+  419,
+  492,
+  82,
+  222,
+  239,
+  315,
   71,
-  76,
-  129,
-  136,
-  210,
-  218,
-  396,
-  411,
-  428,
-  460,
-  38,
-  79,
-  98,
-  158,
-  217,
-  237,
-  401,
-  484,
-  35,
-  88,
-  103,
-  212,
+  92,
+  122,
+  220,
+  252,
+  272,
+  311,
+  391,
   433,
-  2,
-  197,
-  206,
-  215,
+  97,
+  137,
   244,
-  338,
-  21,
-  24,
+  267,
+  426,
+  34,
+  202,
+  234,
+  426,
+  428,
+  51,
+  109,
+  267,
+  377,
+  382,
+  107,
+  166,
+  203,
+  337,
+  0,
+  127,
+  247,
+  404,
+  64,
+  94,
+  373,
+  430,
+  448,
+  17,
+  37,
   57,
-  111,
-  116,
+  102,
+  352,
+  354,
+  114,
+  174,
+  193,
+  241,
+  284,
+  74,
+  94,
   213,
-  251,
-  274,
+  238,
+  475,
+  476,
+  140,
+  247,
+  280,
+  302,
   328,
-  432,
-  483,
-  489,
-  4,
-  78,
-  89,
-  107,
-  132,
-  176,
-  204,
-  207,
-  246,
-  282,
-  294,
-  420,
-  473,
-  34,
   49,
-  89,
-  93,
-  116,
-  140,
-  162,
-  267,
-  327,
-  356,
-  357,
-  369,
-  13,
-  37,
-  59,
-  79,
-  183,
-  292,
-  295,
-  321,
-  473,
-  1,
-  141,
   197,
-  309,
-  324,
-  356,
+  201,
+  222,
+  280,
+  457,
+  167,
+  445,
+  465,
+  478,
+  499,
+  25,
+  215,
+  438,
+  8,
+  129,
+  153,
+  171,
+  316,
+  328,
+  158,
+  215,
+  303,
+  328,
+  353,
+  479,
+  62,
+  251,
+  271,
+  4,
+  119,
+  262,
+  303,
+  311,
+  405,
+  419,
+  277,
   461,
-  497,
-  31,
-  77,
-  138,
-  149,
-  200,
+  236,
+  248,
+  445,
+  15,
+  108,
   227,
-  245,
-  246,
-  261,
-  318,
-  350,
-  450,
-  452,
-  14,
-  43,
-  50,
-  118,
-  255,
-  348,
-  444,
-  489,
-  22,
-  53,
+  309,
+  362,
+  378,
+  424,
   78,
-  121,
-  225,
-  274,
+  94,
+  109,
+  118,
+  124,
+  247,
+  253,
+  315,
+  478,
+  13,
+  154,
+  170,
+  331,
+  365,
+  386,
+  264,
+  268,
   300,
-  317,
-  324,
-  343,
-  374,
-  390,
-  404,
-  462,
-  473,
-  490,
-  42,
-  149,
-  191,
-  341,
-  362,
+  305,
+  429,
+  463,
+  499,
+  52,
+  105,
+  135,
+  181,
+  111,
+  156,
+  183,
+  231,
+  350,
+  388,
+  461,
+  291,
+  360,
+  80,
+  106,
+  138,
+  197,
+  242,
+  255,
+  260,
   381,
-  463,
-  55,
+  415,
+  447,
+  499,
+  41,
+  266,
+  341,
+  391,
+  410,
+  448,
+  495,
+  58,
+  146,
+  286,
+  351,
+  419,
+  436,
+  464,
+  483,
+  251,
+  252,
+  444,
+  492,
+  184,
+  200,
+  57,
+  75,
+  170,
+  186,
+  187,
+  275,
+  314,
+  364,
+  407,
+  162,
+  173,
+  232,
+  211,
+  355,
+  445,
+  448,
+  308,
+  98,
+  280,
+  397,
+  431,
+  112,
+  122,
+  157,
+  209,
+  338,
+  388,
+  429,
+  112,
+  213,
+  349,
+  470,
+  69,
   70,
-  77,
-  79,
+  119,
+  222,
+  251,
+  453,
+  81,
+  173,
+  482,
+  105,
+  147,
+  10,
+  229,
+  462,
+  467,
+  98,
+  421,
+  479,
+  203,
+  498,
+  499,
   93,
-  126,
+  130,
   142,
-  166,
-  192,
-  202,
-  222,
-  440,
-  457,
-  489,
-  496,
-  128,
+  270,
+  278,
+  336,
+  419,
+  73,
   134,
+  142,
   177,
-  292,
-  295,
-  305,
-  325,
-  361,
-  362,
-  447,
-  0,
-  5,
-  188,
-  264,
-  270,
-  310,
-  333,
-  344,
-  5,
-  19,
-  126,
-  207,
-  270,
+  192,
+  335,
+  490,
+  45,
+  140,
+  143,
+  195,
   274,
-  345,
-  498,
-  15,
-  55,
+  284,
+  324,
   56,
-  64,
-  96,
+  94,
+  171,
+  28,
+  135,
+  258,
+  277,
+  284,
+  333,
+  370,
+  421,
+  432,
+  465,
+  31,
+  46,
+  222,
+  331,
+  387,
+  432,
+  18,
+  56,
+  82,
+  95,
+  258,
+  261,
+  356,
+  378,
+  484,
+  60,
+  285,
+  298,
+  347,
+  0,
+  200,
+  307,
+  372,
+  2,
+  89,
+  201,
+  291,
+  298,
+  382,
+  455,
+  121,
+  145,
+  155,
+  47,
+  226,
+  236,
+  396,
+  398,
+  137,
+  311,
+  381,
+  429,
+  45,
+  109,
+  141,
+  173,
+  207,
+  464,
+  471,
+  499,
+  37,
+  45,
+  268,
+  447,
+  496,
+  41,
+  163,
+  387,
+  484,
+  30,
+  48,
+  91,
+  146,
+  261,
+  313,
+  401,
+  11,
+  78,
   122,
+  144,
+  450,
+  499,
+  75,
+  82,
+  131,
+  218,
+  257,
+  285,
+  294,
+  362,
+  442,
+  213,
+  255,
+  291,
+  492,
+  63,
+  80,
+  282,
+  418,
+  1,
+  60,
+  87,
+  102,
+  111,
+  180,
+  272,
+  281,
+  324,
+  380,
+  458,
+  185,
+  216,
+  475,
+  12,
+  62,
+  109,
   143,
   195,
-  215,
-  295,
-  313,
-  320,
-  444,
-  449,
-  476,
-  483,
-  88,
+  257,
+  271,
+  324,
+  385,
+  410,
+  226,
+  330,
+  404,
+  54,
   158,
-  256,
-  311,
-  356,
-  395,
-  407,
-  14,
-  18,
-  22,
-  68,
-  71,
-  108,
-  168,
-  170,
-  172,
-  206,
-  207,
+  374,
+  221,
+  320,
   340,
-  395,
-  397,
-  435,
-  19,
-  77,
-  153,
-  166,
-  415,
-  22,
-  83,
-  173,
-  247,
-  289,
-  324,
-  417,
-  430,
-  10,
-  152,
-  160,
-  170,
-  203,
-  284,
-  287,
-  395,
-  497,
-  37,
-  68,
-  96,
-  135,
-  201,
-  305,
-  457,
-  465,
   86,
-  90,
-  175,
-  183,
-  198,
-  214,
-  233,
-  280,
-  60,
-  113,
-  141,
-  150,
-  494,
-  17,
-  54,
-  65,
-  72,
   93,
-  137,
-  145,
-  150,
-  238,
-  264,
-  333,
-  356,
-  373,
-  440,
-  446,
-  37,
-  43,
-  143,
-  156,
-  169,
   236,
-  257,
-  351,
-  365,
-  369,
-  374,
-  381,
-  395,
-  456,
-  19,
-  58,
-  138,
-  194,
-  285,
-  426,
-  446,
-  450,
-  491,
-  492,
-  201,
-  312,
-  385,
-  412,
-  484,
-  56,
-  76,
-  103,
-  210,
-  213,
-  214,
-  359,
-  384,
+  94,
   159,
-  191,
-  195,
-  251,
-  295,
+  238,
+  242,
+  318,
   356,
-  378,
-  399,
-  416,
-  418,
-  441,
-  3,
-  19,
-  63,
-  125,
+  40,
+  75,
+  168,
+  211,
+  294,
+  32,
+  164,
+  174,
   198,
-  214,
-  254,
-  291,
-  297,
-  326,
-  331,
-  342,
-  371,
-  465,
-  466,
+  421,
+  13,
+  102,
+  314,
+  379,
+  418,
+  439,
+  485,
+  6,
+  53,
+  104,
+  123,
+  208,
+  436,
+  452,
+  59,
   141,
-  162,
-  181,
-  253,
-  281,
-  413,
-  417,
-  444,
-  474,
-  31,
+  204,
+  402,
+  498,
   134,
-  212,
-  281,
-  343,
-  354,
-  428,
-  493,
-  27,
-  135,
-  147,
-  169,
-  186,
-  199,
-  223,
-  225,
-  230,
-  251,
-  462,
-  170,
-  201,
-  215,
-  235,
-  278,
+  335,
+  429,
+  240,
+  391,
+  461,
+  14,
+  16,
+  46,
+  371,
   376,
-  394,
-  71,
-  162,
-  173,
-  241,
-  263,
-  309,
   37,
-  54,
-  99,
-  118,
   172,
-  188,
+  227,
+  343,
+  397,
+  435,
+  39,
+  136,
+  202,
+  262,
+  339,
+  445,
+  474,
+  145,
+  272,
+  342,
+  121,
+  127,
+  12,
+  125,
+  155,
+  186,
   234,
-  256,
-  450,
-  38,
-  55,
-  98,
-  101,
-  110,
-  151,
-  182,
-  304,
-  306,
-  376,
-  378,
-  400,
-  409
-};
-const double x[500] = {
-  353,
-  528,
-  855,
-  623,
-  693,
-  26,
-  928,
-  283,
-  710,
-  154,
+  64,
+  96,
+  97,
+  108,
+  213,
+  350,
+  410,
+  485,
+  35,
+  56,
+  57,
+  167,
+  169,
+  399,
+  478,
+  60,
+  103,
+  307,
+  92,
+  104,
+  150,
+  211,
+  260,
+  8,
+  64,
+  73,
+  222,
+  273,
   423,
+  179,
+  184,
+  190,
   193,
-  627,
-  362,
+  265,
   271,
-  632,
-  502,
-  254,
-  655,
-  589,
-  809,
-  858,
-  427,
-  70,
   305,
-  618,
-  419,
-  16,
-  840,
-  389,
-  773,
-  270,
-  546,
-  455,
-  278,
-  647,
-  926,
-  882,
-  158,
-  785,
-  620,
-  56,
-  154,
-  592,
-  293,
-  496,
-  810,
-  429,
-  509,
-  562,
-  26,
-  981,
-  21,
-  849,
-  374,
-  495,
-  549,
+  318,
+  344,
+  14,
+  75,
   124,
-  687,
-  137,
-  719,
-  232,
-  690,
-  616,
-  824,
-  46,
-  712,
-  650,
-  223,
-  868,
-  576,
-  707,
-  999,
-  883,
-  551,
-  159,
-  306,
+  317,
+  343,
+  404,
+  4,
+  141,
+  167,
+  212,
+  496
+};
+const double x[500] = {
+  737,
+  519,
+  538,
+  486,
+  557,
+  31,
+  651,
   101,
-  618,
-  194,
-  787,
-  488,
-  395,
-  970,
-  29,
-  260,
-  223,
-  605,
-  682,
-  293,
-  208,
-  5,
-  947,
-  244,
-  126,
-  692,
-  95,
-  888,
-  776,
-  502,
-  375,
-  237,
-  176,
-  730,
-  837,
-  407,
-  757,
-  772,
-  365,
-  21,
-  250,
-  938,
-  804,
-  940,
-  859,
-  945,
-  173,
-  215,
-  72,
-  331,
-  339,
-  880,
-  874,
-  375,
-  920,
-  254,
-  675,
-  614,
-  19,
-  570,
-  850,
-  93,
-  200,
-  960,
-  276,
-  332,
-  218,
-  895,
-  270,
-  922,
-  220,
-  44,
-  566,
-  330,
-  645,
-  834,
-  129,
-  926,
-  265,
-  78,
-  975,
-  822,
-  300,
+  310,
+  729,
+  721,
+  164,
+  577,
+  411,
+  104,
+  891,
+  988,
+  370,
+  788,
+  898,
+  576,
+  674,
+  7,
+  10,
+  91,
+  253,
+  9,
+  54,
+  105,
+  36,
+  799,
+  188,
+  651,
+  92,
+  766,
   394,
-  731,
-  917,
-  89,
-  136,
+  8,
+  823,
+  242,
+  334,
+  639,
+  462,
+  111,
+  847,
+  919,
+  681,
+  392,
+  657,
+  358,
+  203,
+  453,
+  897,
+  965,
+  316,
+  759,
   894,
-  441,
-  681,
-  144,
+  893,
+  44,
+  743,
+  736,
+  970,
+  473,
+  229,
+  120,
+  485,
+  174,
+  405,
+  514,
+  984,
+  200,
+  723,
   867,
-  157,
-  759,
-  432,
-  830,
-  252,
-  929,
-  784,
-  702,
+  259,
+  997,
+  191,
+  340,
+  75,
+  763,
+  579,
+  216,
+  154,
+  331,
+  338,
+  184,
+  786,
+  56,
+  235,
+  880,
+  810,
+  544,
+  522,
+  358,
+  219,
+  566,
+  632,
+  422,
+  636,
+  760,
+  657,
+  117,
+  138,
+  228,
+  163,
+  336,
   572,
-  753,
-  887,
-  697,
-  437,
-  409,
+  722,
+  438,
+  280,
+  234,
+  454,
+  967,
+  148,
+  325,
+  142,
+  790,
+  3,
+  497,
+  770,
+  936,
+  101,
+  696,
+  108,
+  255,
+  140,
+  320,
   29,
-  999,
-  445,
-  532,
-  189,
-  326,
-  729,
+  36,
+  228,
+  468,
+  24,
+  183,
+  844,
+  513,
+  856,
+  102,
+  9,
+  526,
+  50,
   73,
-  478,
-  428,
-  713,
-  627,
-  240,
-  540,
-  25,
-  932,
-  406,
+  366,
+  599,
+  246,
+  662,
+  473,
+  651,
+  568,
+  575,
+  972,
+  352,
+  341,
+  897,
+  15,
+  73,
+  764,
+  768,
+  879,
+  886,
+  906,
+  718,
+  621,
+  529,
+  282,
+  339,
+  165,
+  137,
+  999,
+  215,
+  33,
   639,
-  472,
-  544,
-  763,
-  4,
-  695,
-  69,
-  37,
-  802,
-  351,
-  865,
-  169,
-  17,
-  439,
-  844,
-  65,
-  857,
-  193,
-  404,
-  337,
-  307,
-  208,
-  591,
-  658,
-  515,
-  761,
+  999,
+  906,
+  210,
+  62,
+  655,
+  996,
+  675,
+  552,
+  333,
+  176,
+  426,
+  891,
+  638,
+  571,
+  715,
+  18,
+  708,
+  795,
+  26,
+  31,
+  250,
+  18,
+  949,
+  183,
+  968,
+  394,
+  580,
+  766,
+  686,
   162,
-  528,
-  15,
-  34,
-  416,
-  831,
-  937,
-  67,
-  495,
-  765,
-  288,
-  408,
-  517,
-  35,
-  813,
-  112,
-  632,
-  61,
-  465,
-  357,
-  626,
-  284,
-  276,
-  632,
-  323,
-  661,
-  840,
-  864,
-  880,
-  928,
-  268,
-  703,
-  170,
-  30,
-  628,
-  850,
-  450,
-  807,
-  758,
-  810,
-  128,
-  992,
-  760,
-  603,
-  34,
-  910,
+  134,
+  185,
+  943,
+  919,
+  577,
+  539,
+  180,
+  750,
+  285,
+  591,
+  881,
+  381,
+  118,
+  852,
+  696,
+  617,
+  941,
+  767,
+  592,
+  650,
+  74,
+  961,
+  881,
+  891,
+  71,
+  905,
+  575,
+  598,
+  523,
+  477,
+  561,
+  948,
+  762,
+  570,
+  773,
+  146,
+  894,
+  203,
+  610,
+  471,
+  669,
+  189,
+  473,
+  650,
+  606,
+  385,
+  288,
+  360,
+  648,
+  115,
+  836,
+  139,
+  530,
+  248,
+  331,
+  286,
+  849,
+  812,
+  356,
   884,
-  937,
-  737,
-  521,
-  61,
-  394,
+  33,
+  57,
+  147,
+  297,
+  826,
+  916,
+  581,
   0,
-  504,
-  868,
-  85,
+  918,
+  81,
+  12,
+  956,
+  309,
+  550,
+  15,
+  243,
   294,
-  997,
-  251,
-  532,
-  499,
-  596,
-  594,
+  893,
+  290,
+  227,
+  826,
+  843,
+  789,
   744,
-  606,
-  709,
-  928,
+  494,
+  742,
+  643,
+  126,
+  861,
+  444,
   506,
-  397,
-  988,
-  689,
-  161,
-  654,
+  417,
+  215,
+  246,
+  9,
+  244,
+  283,
+  595,
+  635,
+  494,
+  612,
+  737,
+  311,
+  896,
+  834,
+  222,
+  121,
+  595,
+  680,
+  309,
   729,
-  238,
-  869,
-  298,
-  817,
-  571,
-  887,
-  2,
-  137,
-  593,
-  651,
-  529,
-  34,
-  452,
+  263,
+  142,
+  804,
+  262,
+  343,
+  179,
+  649,
+  118,
+  360,
+  536,
+  669,
+  429,
+  359,
   667,
-  32,
-  189,
-  734,
-  121,
-  473,
-  675,
-  594,
-  264,
-  492,
-  402,
-  437,
-  640,
-  141,
-  528,
-  351,
-  740,
-  326,
-  613,
-  640,
-  50,
-  104,
-  433,
-  613,
-  470,
-  125,
+  313,
   671,
-  81,
-  155,
-  209,
-  69,
-  856,
-  999,
+  506,
+  951,
+  461,
+  291,
+  359,
+  237,
+  727,
   143,
-  601,
-  991,
-  458,
-  120,
-  169,
-  839,
-  667,
-  566,
-  119,
-  713,
-  943,
-  646,
-  559,
-  755,
-  223,
-  436,
-  15,
-  768,
-  580,
-  416,
-  906,
-  118,
-  738,
-  583,
-  112,
-  65,
-  150,
-  933,
-  54,
-  901,
-  102,
-  733,
-  357,
-  505,
-  155,
-  723,
-  210,
-  142,
-  413,
-  768,
-  602,
-  614,
-  268,
-  485,
+  968,
+  769,
+  97,
+  842,
+  752,
+  803,
+  299,
+  154,
+  384,
+  23,
+  567,
+  339,
+  778,
+  492,
+  116,
+  320,
+  967,
+  526,
+  66,
+  761,
+  908,
+  345,
+  885,
+  193,
+  894,
+  547,
+  124,
+  18,
+  254,
+  947,
+  192,
+  111,
+  384,
+  204,
+  338,
+  574,
+  749,
+  816,
+  717,
+  457,
+  353,
+  163,
+  979,
+  896,
   679,
-  330,
-  110,
-  819,
-  11,
-  116,
-  90,
-  615,
-  327,
-  131,
-  351,
-  275,
-  121,
-  77,
-  465,
-  831,
-  617,
-  663,
+  342,
+  932,
+  100,
+  216,
+  531,
+  320,
+  122,
+  594,
+  956,
+  638,
+  450,
+  733,
+  643,
+  293,
+  891,
+  633,
+  901,
+  815,
+  676,
+  307,
+  144,
+  286,
+  106,
+  182,
+  605,
+  575,
+  129,
+  390,
+  212,
+  843,
+  225,
+  544,
+  468,
+  203,
+  223,
+  862,
+  795,
+  36,
+  348,
+  743,
+  528,
+  904,
+  126,
+  802,
+  82,
+  156,
+  369,
+  986,
+  332,
+  977,
+  570,
+  421,
+  345,
+  401,
+  480,
+  63,
+  518,
+  667,
+  31,
+  909,
+  552,
+  994,
   314,
-  519,
+  891,
+  642,
+  439,
+  132,
   670,
-  39,
-  705,
+  402,
+  263,
+  140,
+  549,
+  905,
+  712,
+  299,
+  986,
   86,
-  201,
-  619,
-  746,
-  736,
-  813,
-  138,
-  186,
-  693,
-  538,
+  709,
+  786,
+  47,
+  679,
+  864,
+  13,
+  140,
+  659,
+  479,
+  838,
+  988,
+  846,
+  855,
+  367,
+  935,
+  657,
+  453,
+  400,
+  851,
+  749,
+  500,
+  673,
+  523,
+  708,
+  568,
+  76,
+  18,
+  589,
+  689,
+  195,
+  504,
+  402,
+  835,
+  705,
+  187,
+  615,
+  482,
   160,
-  244,
-  257,
-  997,
-  751,
-  157,
-  512,
-  253,
-  536,
-  433,
-  87,
-  333,
-  881,
-  784,
-  102,
-  1,
-  809,
-  456,
-  425,
-  783,
-  839,
-  55,
-  78,
-  51,
-  481,
-  310,
-  416,
-  518,
-  816,
-  605,
-  130,
-  100,
-  999,
-  727,
-  24,
+  609,
   761,
-  45,
-  579,
-  103,
-  856,
-  304,
-  691,
-  957,
-  120,
-  250,
-  941,
-  59,
-  411,
-  976,
-  420,
-  799,
-  227,
-  692,
-  842,
-  677,
-  763,
-  660,
-  292,
-  702,
-  560,
-  27,
-  138,
-  41,
-  75,
-  694,
-  577,
-  101,
-  92,
-  9,
-  959,
-  33,
-  11,
-  248,
-  515,
-  290,
-  742,
-  858,
+  907,
   294,
-  900,
-  107,
-  567,
-  890
+  538,
+  545
 };
-const int ptr[501] = {
-  0,
-  11,
-  22,
-  32,
-  40,
-  46,
-  53,
-  64,
-  74,
-  89,
-  102,
-  112,
-  121,
-  132,
-  140,
-  147,
-  156,
-  160,
-  172,
-  185,
-  197,
-  202,
-  216,
-  229,
-  236,
-  242,
-  248,
-  255,
-  265,
-  271,
+const int ptr[501] = {
+  0,
+  4,
+  8,
+  10,
+  15,
+  22,
+  29,
+  33,
+  34,
+  36,
+  39,
+  44,
+  44,
+  47,
+  55,
+  61,
+  66,
+  68,
+  75,
+  82,
+  86,
+  91,
+  98,
+  104,
+  109,
+  113,
+  126,
+  131,
+  134,
+  136,
+  143,
+  153,
+  159,
+  168,
+  170,
+  174,
+  176,
+  180,
+  187,
+  192,
+  198,
+  200,
+  204,
+  211,
+  213,
+  222,
+  225,
+  228,
+  233,
+  241,
+  247,
+  253,
+  256,
+  262,
+  264,
+  270,
+  274,
+  277,
   283,
-  292,
-  298,
-  306,
-  314,
-  326,
-  335,
+  288,
+  294,
+  301,
+  307,
+  312,
+  315,
+  319,
+  325,
+  329,
+  332,
+  338,
+  340,
+  342,
   348,
-  357,
+  353,
+  359,
+  362,
+  366,
+  368,
   374,
-  383,
-  392,
+  387,
+  393,
+  400,
   403,
-  414,
+  406,
+  412,
+  420,
   425,
-  436,
-  446,
+  428,
+  433,
+  441,
+  442,
+  448,
+  456,
   462,
-  470,
-  476,
-  488,
-  506,
-  520,
-  528,
-  534,
-  541,
-  550,
-  565,
-  577,
-  591,
-  600,
-  609,
+  468,
+  469,
+  477,
+  479,
+  485,
+  490,
+  495,
+  501,
+  508,
+  513,
+  518,
+  524,
+  532,
+  535,
+  538,
+  542,
+  546,
+  552,
+  561,
+  563,
+  567,
+  571,
+  574,
+  576,
+  581,
+  584,
+  588,
+  592,
+  593,
+  597,
+  599,
+  607,
+  612,
   615,
-  629,
-  635,
-  648,
-  661,
-  674,
-  682,
-  694,
-  709,
+  619,
+  626,
+  633,
+  640,
+  646,
+  650,
+  653,
+  659,
+  665,
+  670,
+  673,
+  678,
+  685,
+  691,
+  697,
+  703,
+  708,
+  712,
   717,
-  727,
-  733,
-  743,
+  719,
+  722,
+  725,
+  732,
+  736,
+  738,
+  742,
+  747,
   753,
-  762,
-  776,
-  783,
-  794,
-  806,
+  757,
+  763,
+  767,
+  769,
+  769,
+  777,
+  780,
+  784,
+  790,
+  797,
+  807,
+  810,
   813,
-  818,
-  827,
+  815,
+  817,
+  822,
+  829,
+  830,
   835,
-  845,
-  857,
-  867,
+  844,
+  848,
+  851,
+  854,
+  862,
+  864,
+  873,
   876,
-  885,
-  893,
+  881,
+  884,
+  888,
+  895,
   899,
-  905,
-  914,
+  901,
+  904,
+  908,
+  912,
   919,
-  932,
-  942,
-  954,
+  927,
+  931,
+  937,
+  941,
+  944,
+  948,
+  950,
+  955,
+  960,
   963,
-  972,
-  981,
-  994,
+  970,
+  975,
+  979,
+  983,
+  985,
+  992,
+  993,
+  998,
   1001,
-  1007,
-  1016,
+  1008,
+  1012,
+  1014,
+  1018,
   1023,
-  1031,
-  1039,
-  1049,
-  1057,
+  1030,
+  1036,
+  1040,
+  1045,
+  1052,
+  1058,
+  1061,
+  1066,
   1069,
-  1082,
-  1099,
-  1107,
+  1071,
+  1077,
+  1080,
+  1084,
+  1087,
+  1090,
+  1092,
+  1095,
+  1100,
+  1102,
+  1110,
   1117,
-  1129,
-  1136,
-  1148,
-  1161,
-  1171,
+  1122,
+  1130,
+  1133,
+  1138,
+  1142,
+  1144,
+  1146,
+  1153,
+  1158,
+  1160,
+  1167,
+  1172,
+  1176,
+  1179,
   1183,
-  1189,
+  1188,
+  1191,
+  1193,
+  1196,
   1204,
-  1217,
+  1210,
+  1216,
+  1219,
+  1221,
+  1225,
   1229,
-  1238,
-  1251,
-  1258,
-  1265,
-  1266,
-  1281,
+  1234,
+  1236,
+  1239,
+  1244,
+  1248,
+  1253,
+  1256,
+  1264,
+  1268,
+  1271,
+  1272,
+  1275,
+  1278,
+  1284,
+  1287,
   1291,
-  1301,
-  1310,
-  1319,
-  1324,
-  1331,
-  1340,
+  1296,
+  1300,
+  1304,
+  1306,
+  1313,
+  1317,
+  1322,
+  1326,
+  1332,
+  1336,
+  1344,
   1349,
-  1357,
-  1367,
-  1379,
+  1356,
+  1363,
+  1368,
+  1369,
+  1378,
+  1381,
+  1385,
   1388,
-  1398,
-  1412,
-  1418,
-  1423,
-  1426,
-  1431,
-  1444,
+  1395,
+  1399,
+  1407,
+  1414,
+  1422,
+  1425,
+  1433,
+  1435,
+  1438,
+  1439,
+  1445,
+  1448,
+  1450,
   1453,
-  1466,
+  1456,
+  1470,
+  1472,
   1475,
-  1482,
+  1481,
+  1487,
+  1491,
+  1494,
+  1497,
   1498,
-  1509,
-  1514,
-  1522,
+  1503,
+  1507,
+  1513,
+  1517,
+  1524,
+  1529,
   1534,
-  1546,
-  1557,
-  1572,
-  1584,
-  1595,
+  1542,
+  1547,
+  1550,
+  1550,
+  1552,
+  1553,
+  1556,
+  1559,
+  1563,
+  1571,
+  1577,
+  1580,
+  1585,
+  1590,
+  1594,
+  1598,
   1600,
-  1611,
-  1621,
+  1602,
+  1610,
+  1615,
+  1620,
   1628,
+  1634,
   1637,
-  1644,
-  1653,
-  1672,
-  1681,
-  1688,
-  1701,
-  1714,
+  1649,
+  1652,
+  1656,
+  1662,
+  1664,
+  1670,
+  1674,
+  1678,
+  1687,
+  1697,
+  1704,
+  1709,
+  1715,
+  1720,
+  1725,
   1728,
-  1737,
-  1742,
-  1755,
-  1766,
-  1775,
-  1784,
-  1789,
-  1799,
-  1812,
-  1819,
-  1826,
-  1832,
-  1845,
-  1857,
-  1869,
-  1881,
-  1898,
-  1908,
-  1918,
-  1930,
-  1941,
+  1736,
+  1740,
+  1747,
+  1750,
+  1754,
+  1760,
+  1763,
+  1765,
+  1773,
+  1781,
+  1783,
+  1788,
+  1795,
+  1802,
+  1810,
+  1815,
+  1820,
+  1824,
+  1829,
+  1836,
+  1839,
+  1843,
+  1847,
+  1849,
+  1854,
+  1859,
+  1863,
+  1873,
+  1880,
+  1882,
+  1891,
+  1895,
+  1899,
+  1904,
+  1909,
+  1914,
+  1919,
+  1923,
+  1927,
+  1932,
+  1938,
+  1943,
   1949,
-  1957,
-  1964,
-  1972,
-  1981,
-  1993,
-  1998,
-  2004,
-  2014,
-  2025,
-  2034,
+  1954,
+  1960,
+  1965,
+  1968,
+  1974,
+  1980,
+  1983,
+  1990,
+  1992,
+  1995,
+  2002,
+  2011,
+  2017,
+  2024,
+  2028,
+  2035,
+  2037,
   2048,
-  2060,
+  2055,
+  2063,
   2067,
-  2073,
-  2087,
-  2092,
+  2069,
+  2078,
+  2081,
+  2085,
+  2086,
+  2090,
+  2097,
   2101,
-  2111,
-  2120,
+  2107,
+  2110,
+  2112,
+  2116,
+  2119,
+  2122,
   2129,
-  2134,
-  2141,
-  2149,
-  2160,
-  2172,
+  2136,
+  2143,
+  2146,
+  2156,
+  2162,
+  2171,
+  2175,
   2179,
+  2186,
   2189,
+  2194,
   2198,
-  2210,
-  2218,
-  2230,
+  2206,
+  2211,
+  2215,
+  2222,
+  2228,
   2237,
-  2249,
+  2241,
+  2245,
+  2256,
   2259,
-  2270,
+  2269,
+  2272,
+  2275,
   2278,
+  2279,
+  2281,
   2287,
-  2293,
-  2309,
-  2324,
-  2334,
-  2341,
-  2359,
+  2292,
+  2297,
+  2304,
+  2311,
+  2316,
+  2319,
+  2322,
+  2327,
+  2333,
+  2340,
+  2343,
+  2345,
+  2350,
+  2358,
+  2365,
+  2365,
   2368,
-  2376,
-  2383,
-  2392,
-  2402,
-  2408,
-  2417,
-  2425,
-  2435,
-  2444,
-  2451,
-  2465,
-  2474,
-  2479,
-  2489,
-  2499,
-  2510,
-  2518,
-  2534,
-  2541,
-  2557,
-  2567,
-  2576,
-  2586,
-  2594,
-  2611,
-  2629,
-  2638,
-  2649,
-  2665,
-  2679,
-  2687,
-  2695,
-  2702,
-  2711,
-  2727,
-  2739,
-  2746,
-  2753,
-  2765,
-  2778,
-  2792,
-  2798,
-  2816,
-  2829,
-  2837,
-  2844,
-  2851,
-  2860,
-  2872,
-  2886,
-  2898,
-  2911,
-  2919,
-  2925,
-  2930,
-  2944,
-  2956,
-  2964,
-  2976,
-  2985,
-  2999,
-  3014,
-  3029,
-  3046,
-  3054,
-  3065,
-  3071,
-  3085,
-  3094,
-  3102,
-  3115,
-  3125,
-  3135,
-  3149,
-  3158,
-  3170,
-  3183,
-  3195,
-  3199,
-  3208,
-  3218,
-  3228,
-  3234,
-  3243,
-  3251,
-  3258,
-  3267,
-  3275,
-  3284,
-  3293,
-  3301,
-  3312,
-  3320,
-  3330,
-  3342,
-  3358,
-  3366,
-  3371,
-  3382,
-  3395,
-  3405,
-  3415,
-  3429,
-  3438,
-  3447,
-  3460,
-  3467,
-  3476,
-  3491,
-  3503,
-  3509,
-  3520,
-  3527,
-  3541,
-  3550,
-  3558,
-  3569,
-  3579,
-  3591,
-  3595,
-  3605,
-  3613,
-  3619,
-  3635,
-  3654,
-  3671,
-  3680,
-  3691,
-  3699,
-  3712,
-  3720,
-  3732,
-  3744,
-  3751,
-  3759,
-  3771,
-  3784,
-  3793,
-  3802,
-  3812,
-  3824,
-  3834,
-  3840,
-  3850,
-  3860,
-  3869,
-  3875,
-  3889,
-  3901,
-  3913,
-  3918,
-  3927,
-  3936,
-  3954,
-  3963,
-  3973,
-  3981,
-  3991,
-  4002,
-  4010,
-  4021,
-  4030,
-  4036,
-  4049,
-  4064,
-  4078,
-  4093,
-  4100,
-  4105,
-  4117,
-  4133,
-  4137,
-  4146,
-  4159,
-  4171,
-  4180,
-  4193,
-  4203,
-  4210,
-  4216,
-  4224,
-  4237,
-  4250,
-  4265,
-  4277,
-  4287,
-  4290,
-  4300,
-  4316,
-  4323,
-  4333,
-  4338,
-  4350,
-  4361,
-  4372,
-  4383,
-  4393,
-  4402,
-  4412,
-  4417,
-  4429,
-  4438,
-  4448,
-  4458,
-  4468,
-  4485,
-  4495,
-  4504,
-  4514,
-  4529,
-  4539,
-  4544,
-  4557,
-  4563,
-  4573,
-  4585,
-  4596,
-  4607,
-  4618,
-  4626,
-  4631,
-  4637,
-  4649,
-  4662,
-  4674,
-  4683,
-  4691,
-  4704,
-  4712,
-  4728,
-  4735,
-  4750,
-  4760,
-  4768,
-  4776,
-  4792,
-  4799,
-  4814,
-  4819,
-  4827,
-  4836,
-  4844,
-  4852,
-  4857,
-  4872,
-  4886,
-  4896,
-  4901,
-  4909,
-  4920,
-  4935,
-  4944,
-  4952,
-  4963,
-  4970,
-  4976,
-  4985,
-  4998
+  2373,
+  2379,
+  2388,
+  2394,
+  2399
 };
 const double verify_data[500] = {
-  1751892,
-  4022164,
-  2995301,
-  1936186,
-  2246564,
-  1202307,
-  2403226,
-  1665245,
-  5460723,
-  2991420,
-  3189946,
-  2005088,
-  2579979,
-  2016203,
-  2065819,
-  1993671,
-  851952,
-  2135521,
-  3528253,
-  2792868,
-  1075529,
-  2502885,
-  3364671,
-  2066539,
-  1126092,
-  850035,
-  802328,
-  2264690,
-  2378605,
-  4461773,
-  1329616,
-  312081,
-  1746678,
-  2141730,
-  2744934,
-  1367783,
-  3595144,
-  2432898,
-  4071407,
-  1302967,
-  1652018,
-  2211899,
-  3912143,
-  2373635,
-  2666922,
-  2038278,
-  4698422,
-  1954640,
-  1563508,
-  2694611,
-  3827590,
-  5206087,
-  1870941,
-  966474,
-  2645084,
-  2531376,
-  3163745,
-  3967912,
-  3292737,
-  2492971,
-  2883924,
-  1528423,
-  3145472,
-  1625261,
-  2200485,
-  3632184,
-  3178738,
-  1893515,
-  3126495,
-  3348716,
-  1528265,
-  3525430,
-  1008772,
-  2181826,
-  1833788,
-  3009546,
-  3850859,
-  1929502,
-  1305357,
-  3389808,
-  2443621,
-  914320,
-  3097972,
-  3175599,
-  1918158,
-  1956635,
-  1197144,
-  3283923,
-  2362512,
-  2914914,
-  1519627,
-  1082679,
-  1779165,
-  1459222,
-  2562841,
-  3792210,
-  3315753,
-  2428061,
-  1900458,
-  2028141,
-  2355412,
-  1292213,
-  1657778,
-  4938329,
-  2347809,
-  1922563,
-  2178935,
-  3429211,
-  1904099,
-  3797974,
-  4230001,
-  4774548,
-  1692473,
-  2457473,
-  2131820,
-  2246792,
-  3107036,
-  2656237,
-  3099219,
-  2499844,
-  2118926,
-  2890550,
-  3012532,
-  4213593,
-  2060214,
-  3903181,
-  2016912,
-  1140389,
-  4680,
-  2876480,
-  1234517,
-  2373109,
-  1792007,
-  2735030,
-  639171,
-  916044,
-  2224239,
-  3146731,
-  739354,
-  2583186,
-  3583728,
-  2421324,
-  3028482,
-  2592653,
-  2321744,
-  122903,
-  1482609,
-  2463478,
-  2661306,
-  1865018,
-  1835144,
-  2248110,
-  1343097,
-  3672393,
-  2587367,
-  1636239,
-  2104489,
-  2804393,
-  3800231,
-  2717304,
-  3257716,
-  3054647,
-  2495991,
-  1415149,
-  3084172,
-  1994685,
-  954071,
-  1957822,
-  1297275,
-  2084477,
-  5911038,
-  2566905,
-  1296529,
-  2975518,
-  4786414,
-  4556733,
-  982088,
-  1150776,
-  1646590,
-  2140085,
-  2241812,
-  1322324,
-  1390654,
-  1994451,
-  3063562,
-  2938663,
-  831619,
-  2398209,
-  3238091,
-  3546592,
-  2816082,
-  2597318,
-  4012074,
-  2281778,
-  2335358,
-  2686566,
-  2327944,
-  1705695,
-  2384479,
-  1179412,
-  1992230,
-  1416632,
-  2817471,
-  1387997,
-  1825629,
-  2633212,
-  2854174,
-  1316538,
-  3318034,
-  2605299,
-  1813554,
-  748564,
-  2719292,
-  733866,
-  3685554,
-  2644942,
-  1581429,
-  2519177,
-  1406937,
-  2571958,
-  1036663,
-  3105668,
-  2899062,
-  822910,
-  3023464,
-  1517572,
-  3695365,
-  1576120,
-  2679724,
-  2340800,
-  2461794,
-  1442615,
-  3277667,
-  1551164,
-  2304202,
-  1765246,
-  4648243,
-  4695139,
-  3015121,
-  784265,
-  4854308,
-  1612748,
-  2023149,
-  2677811,
-  1891837,
-  2386603,
-  1303948,
-  1246705,
-  3997369,
-  1795004,
-  1868899,
-  1915102,
-  2277702,
-  3086432,
-  1091596,
-  1325425,
-  2700950,
-  2713785,
-  2580723,
-  3320788,
-  2169754,
-  2987529,
-  1820551,
-  1096402,
-  2820334,
-  3653130,
-  3944932,
-  2661607,
-  1875359,
-  1985688,
-  4170507,
-  2697623,
-  1240240,
-  1565958,
-  1687827,
-  2909302,
-  4076509,
-  3669438,
-  1654204,
-  990589,
-  1871143,
-  2555426,
-  3194652,
-  806454,
-  4579598,
-  3818316,
-  1862530,
-  1621008,
-  1213914,
-  2387732,
-  2656075,
-  5016017,
-  1483839,
-  2590576,
-  1911599,
-  1808891,
-  1727178,
-  3593503,
-  3426809,
-  1966443,
-  2615395,
-  1977162,
-  2814727,
-  4347284,
-  2571418,
-  4336262,
-  2380488,
-  3176855,
-  2075237,
-  3073444,
-  2268286,
-  2778827,
-  2533675,
-  2075240,
-  1739479,
-  3343874,
-  1213649,
-  3400144,
-  3390958,
-  4350901,
-  807565,
-  1723230,
-  2880274,
-  1846068,
-  1797277,
-  3535845,
-  1817421,
-  763905,
-  2975099,
-  1885669,
-  2520346,
-  2673876,
-  1965064,
-  1840927,
-  1479284,
-  2479045,
-  4854652,
-  3371227,
-  1602463,
-  1064398,
-  4303279,
-  2014749,
-  2088115,
-  4643355,
-  2423573,
-  2486594,
-  2015285,
-  2865268,
-  1567515,
-  3091645,
-  2650208,
-  2257731,
-  1828360,
-  3038495,
-  1456526,
-  4139422,
-  1860654,
-  2119333,
-  3560316,
-  2195765,
-  2965846,
-  1558436,
-  2201930,
-  1368838,
-  2280143,
-  6722772,
-  4966973,
-  3816690,
-  3063525,
-  3303821,
-  942869,
-  3048634,
-  2607825,
-  2846487,
-  3062389,
-  1204358,
-  1587952,
-  1407524,
-  3481628,
-  1683145,
-  670695,
-  2652500,
-  2063266,
-  3256247,
-  2228455,
-  3169118,
-  2068041,
-  3336492,
-  648877,
-  2914647,
-  2398692,
-  2468827,
-  466982,
-  1350452,
-  2494059,
-  3884284,
-  2176018,
-  1971822,
-  1717729,
-  2285788,
-  2457787,
-  2585558,
-  2001380,
-  1574379,
-  1896149,
-  2954717,
-  3571138,
-  4547560,
-  3121350,
-  911837,
-  2191633,
-  2590573,
-  3983511,
-  1138220,
-  1489367,
-  2480956,
-  3092304,
-  2007316,
-  2627569,
-  1961734,
-  1404827,
-  2016109,
-  3155800,
-  2035916,
-  1981052,
-  3740896,
-  3647095,
-  3554375,
-  657851,
-  2060326,
-  3239738,
-  2510830,
-  3003505,
-  1293641,
-  2819722,
-  2461229,
-  4391164,
-  2381527,
-  3609051,
-  2225837,
-  2269809,
-  1794757,
-  5429892,
-  2122459,
-  3549547,
-  2159187,
-  2055078,
-  2863249,
-  2624453,
-  1682530,
-  1966234,
-  4732670,
-  2420234,
-  1126780,
-  4198630,
-  873578,
-  1472698,
-  4399047,
-  2373444,
-  3046576,
-  2946567,
-  1499502,
-  1196441,
-  785704,
-  3074204,
-  3127393,
-  2310407,
-  3555659,
-  729185,
-  2534506,
-  881530,
-  3913703,
-  1712814,
-  3391585,
-  1623517,
-  1629315,
-  1290503,
-  3135796,
-  2543727,
-  3671833,
-  1144358,
-  3571303,
-  1517907,
-  1728666,
-  1346738,
-  1521662,
-  3214189,
-  3185014,
-  3308145,
-  1175588,
-  1908736,
-  2065913,
-  3720352,
-  1718329,
-  1846629,
-  2752115,
-  1254780,
-  1638702,
-  2435264,
-  1935295
+  1636962,
+  1714376,
+  142636,
+  1151015,
+  1672341,
+  2790420,
+  1447201,
+  422892,
+  30953,
+  1030287,
+  1335188,
+  0,
+  605334,
+  2278445,
+  858848,
+  245423,
+  950882,
+  705076,
+  1312024,
+  1084284,
+  1837558,
+  1201746,
+  2360392,
+  1488940,
+  688178,
+  2632122,
+  1481444,
+  660854,
+  346453,
+  982949,
+  1400599,
+  1093225,
+  2856372,
+  1078398,
+  1074402,
+  579548,
+  1820752,
+  2638601,
+  2072665,
+  749887,
+  687788,
+  478788,
+  1482258,
+  1207317,
+  1397243,
+  794364,
+  1002505,
+  1651686,
+  1028801,
+  1189726,
+  1513197,
+  1214956,
+  738475,
+  633771,
+  1207042,
+  680857,
+  899314,
+  2277406,
+  773143,
+  1986687,
+  907216,
+  907940,
+  1539019,
+  1043338,
+  681730,
+  219905,
+  1397298,
+  2184201,
+  1537202,
+  266744,
+  563005,
+  1827909,
+  1105928,
+  2286680,
+  887533,
+  343193,
+  238910,
+  1678393,
+  2600003,
+  417502,
+  1551071,
+  798273,
+  398719,
+  2056881,
+  1296314,
+  917292,
+  190534,
+  882078,
+  1979139,
+  50621,
+  1048185,
+  1967771,
+  1911887,
+  1895897,
+  23343,
+  2658748,
+  285864,
+  1027049,
+  975769,
+  2488413,
+  832738,
+  844130,
+  1379856,
+  1785889,
+  2463463,
+  782430,
+  982466,
+  609500,
+  706251,
+  1981399,
+  1861430,
+  2146667,
+  250104,
+  1166284,
+  1295022,
+  189599,
+  855191,
+  1005718,
+  969658,
+  707377,
+  561273,
+  86496,
+  717937,
+  97767,
+  1893638,
+  779229,
+  429727,
+  99564,
+  1863565,
+  2267656,
+  950026,
+  780700,
+  581248,
+  393282,
+  2134865,
+  1244700,
+  1894843,
+  954212,
+  1439102,
+  779512,
+  1459287,
+  881497,
+  2202043,
+  1447401,
+  1249637,
+  765168,
+  488244,
+  837127,
+  1236555,
+  2281259,
+  1995666,
+  25783,
+  534020,
+  1486259,
+  1268571,
+  875283,
+  744594,
+  1410335,
+  757320,
+  0,
+  1922627,
+  399058,
+  1490594,
+  1475527,
+  1587557,
+  1695667,
+  644546,
+  536038,
+  224304,
+  414120,
+  2029077,
+  3930385,
+  377416,
+  1059074,
+  1960417,
+  1439575,
+  368749,
+  460183,
+  2479302,
+  105204,
+  1426355,
+  649313,
+  2194338,
+  918200,
+  1591449,
+  2229266,
+  434520,
+  684504,
+  1009270,
+  222922,
+  600674,
+  1011867,
+  1321434,
+  836127,
+  2493805,
+  1448674,
+  1269364,
+  1304961,
+  98554,
+  2423810,
+  1570229,
+  302458,
+  2806045,
+  1534004,
+  1463827,
+  1085011,
+  120989,
+  1701753,
+  110302,
+  938429,
+  1186733,
+  2255246,
+  425960,
+  376311,
+  341394,
+  1061333,
+  2025091,
+  522270,
+  598604,
+  1000824,
+  2254049,
+  1857539,
+  346425,
+  1345187,
+  550497,
+  1251096,
+  943720,
+  681558,
+  555972,
+  779590,
+  299796,
+  1445763,
+  459865,
+  774572,
+  489448,
+  2407693,
+  1574903,
+  1630452,
+  1907397,
+  555045,
+  1902494,
+  1172223,
+  142555,
+  445864,
+  1376151,
+  1200389,
+  327553,
+  1548402,
+  1106503,
+  888650,
+  41081,
+  1245270,
+  845610,
+  1232215,
+  387441,
+  434475,
+  1204003,
+  1333189,
+  1672468,
+  567827,
+  11392,
+  631046,
+  1299298,
+  719608,
+  714169,
+  362247,
+  1308257,
+  530903,
+  398202,
+  885445,
+  2606806,
+  1354354,
+  438760,
+  194928,
+  712863,
+  1010340,
+  2245646,
+  376041,
+  876890,
+  1683404,
+  955032,
+  1065455,
+  925034,
+  1731713,
+  1152271,
+  2093865,
+  1221433,
+  629438,
+  2054936,
+  2643313,
+  1322567,
+  1492288,
+  1844514,
+  1802382,
+  871,
+  1350044,
+  967406,
+  756881,
+  574442,
+  1295864,
+  1815978,
+  2822668,
+  2201377,
+  2729436,
+  616018,
+  2318346,
+  332717,
+  289665,
+  97812,
+  1881483,
+  1003188,
+  702530,
+  409314,
+  645118,
+  3645947,
+  723792,
+  503126,
+  1609036,
+  1647277,
+  587437,
+  735899,
+  666552,
+  27354,
+  1045106,
+  397951,
+  1087090,
+  1173872,
+  1629962,
+  1334261,
+  1855668,
+  2856970,
+  1341188,
+  336968,
+  0,
+  521349,
+  53118,
+  881926,
+  154917,
+  942966,
+  1237636,
+  820836,
+  579583,
+  1436861,
+  2025006,
+  634434,
+  829152,
+  298073,
+  205380,
+  1622350,
+  1171051,
+  848451,
+  2417009,
+  2016092,
+  390510,
+  2721874,
+  359761,
+  309038,
+  1061522,
+  297026,
+  1311767,
+  305305,
+  854945,
+  1773244,
+  2656339,
+  896058,
+  1069160,
+  1552917,
+  1421821,
+  440874,
+  216699,
+  1654864,
+  521705,
+  807422,
+  1242602,
+  1329872,
+  308130,
+  526463,
+  27937,
+  1450630,
+  1621987,
+  799154,
+  1378289,
+  2519996,
+  1149046,
+  579937,
+  1841561,
+  1895047,
+  1009234,
+  1922198,
+  2570006,
+  409696,
+  442495,
+  277484,
+  979605,
+  1392287,
+  1023715,
+  1881778,
+  2432703,
+  2297384,
+  542451,
+  1368100,
+  833048,
+  1038108,
+  742376,
+  1542317,
+  2230186,
+  1249077,
+  884020,
+  1286059,
+  1102407,
+  1651393,
+  1787846,
+  1370154,
+  2734166,
+  2935249,
+  447485,
+  736859,
+  828966,
+  1547038,
+  765990,
+  1427773,
+  255456,
+  134871,
+  1597546,
+  2173052,
+  1187286,
+  2364828,
+  1220233,
+  1760369,
+  75080,
+  2799969,
+  1363310,
+  2347168,
+  272279,
+  33698,
+  1192053,
+  342501,
+  356092,
+  136578,
+  1701048,
+  2216796,
+  1340150,
+  1852854,
+  580862,
+  407410,
+  1860346,
+  200649,
+  954363,
+  955621,
+  2234154,
+  2007706,
+  646339,
+  2712491,
+  1259244,
+  2368138,
+  1550431,
+  1160903,
+  987838,
+  650293,
+  833228,
+  368144,
+  1998925,
+  1733716,
+  1050000,
+  1061635,
+  1144649,
+  1260205,
+  851043,
+  1417512,
+  2826918,
+  1059350,
+  1522135,
+  1039943,
+  703837,
+  1035006,
+  19505,
+  211545,
+  1461101,
+  1238659,
+  1414306,
+  1151385,
+  2169011,
+  1101116,
+  1118290,
+  335296,
+  1502266,
+  1405699,
+  1762457,
+  530338,
+  246108,
+  484583,
+  2164048,
+  1614511,
+  0,
+  1446940,
+  575450,
+  2043329,
+  2057251,
+  774670,
+  1084124
 };
index 396b5259361d9f0af56c50f9f857572b532ac51e..5232f68159a76e7911227e187bca95f64ea06608 100644 (file)
@@ -1,7 +1,7 @@
 // See LICENSE for license details.
 
 //**************************************************************************
-// Double-precision general matrix multiplication benchmark
+// Double-precision sparse matrix-vector multiplication benchmark
 //--------------------------------------------------------------------------
 
 #include "util.h"