From: Andrew Waterman Date: Thu, 5 May 2016 01:20:05 +0000 (-0700) Subject: speed up mt-matmul and spmv tests X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d9c32d288b69197814c4d5e0bae93da55649c377;p=riscv-tests.git speed up mt-matmul and spmv tests --- diff --git a/benchmarks/mt-matmul/dataset.h b/benchmarks/mt-matmul/dataset.h index b1d2092..72fbc28 100644 --- a/benchmarks/mt-matmul/dataset.h +++ b/benchmarks/mt-matmul/dataset.h @@ -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 diff --git a/benchmarks/mt-matmul/matmul_gendata.pl b/benchmarks/mt-matmul/matmul_gendata.pl index 13763ec..798d992 100755 --- a/benchmarks/mt-matmul/matmul_gendata.pl +++ b/benchmarks/mt-matmul/matmul_gendata.pl @@ -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 ); diff --git a/benchmarks/mt-matmul/mt-matmul.c b/benchmarks/mt-matmul/mt-matmul.c index 349e47e..9c68ada 100644 --- a/benchmarks/mt-matmul/mt-matmul.c +++ b/benchmarks/mt-matmul/mt-matmul.c @@ -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); diff --git a/benchmarks/spmv/dataset1.h b/benchmarks/spmv/dataset1.h index 4c871d5..52e49c5 100644 --- a/benchmarks/spmv/dataset1.h +++ b/benchmarks/spmv/dataset1.h @@ -1,11512 +1,6312 @@ -// 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 }; diff --git a/benchmarks/spmv/spmv_main.c b/benchmarks/spmv/spmv_main.c index 396b525..5232f68 100644 --- a/benchmarks/spmv/spmv_main.c +++ b/benchmarks/spmv/spmv_main.c @@ -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"