From caa67668d0e5afa3cc3b1e98703e221a8e60c105 Mon Sep 17 00:00:00 2001 From: Auxilus Date: Tue, 9 Jul 2019 14:19:06 +0530 Subject: [PATCH] add c elegans model --- Makefile | 1 + src/brain.c | 1 + src/cbrain.c | 25 +- src/header.h | 6 +- src/models/conn.txt | 3954 +++++++++++++++++++++++++++++++++++++++++++ src/models/d.txt | 397 +++++ src/models/pp.rb | 12 + src/util.c | 23 + 8 files changed, 4406 insertions(+), 13 deletions(-) create mode 100644 src/models/conn.txt create mode 100644 src/models/d.txt create mode 100644 src/models/pp.rb diff --git a/Makefile b/Makefile index 299c964..a012c00 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ C_SOURCES = $(wildcard src/*.c) HEADERS = $(wildcard src/*.h) +HEADERS += $(wildcard src/models/*.h) OBJ = ${C_SOURCES:.c=.o} CFLAGS = -Wall CC=gcc diff --git a/src/brain.c b/src/brain.c index ad62e8b..76786d0 100644 --- a/src/brain.c +++ b/src/brain.c @@ -161,6 +161,7 @@ void neuron_fire(struct neuron* n, struct brain* b) for (int i = 0; i < p; i++) { assert(n->links[i] <= (b->nc - 1)); assert(n->wts[i]); + cbrain_print(4, "sending weight to %d\n", n->links[i]); b->neurons[n->links[i]]->nextstate += n->wts[i]; } } diff --git a/src/cbrain.c b/src/cbrain.c index ba875a9..9e33161 100644 --- a/src/cbrain.c +++ b/src/cbrain.c @@ -14,16 +14,21 @@ int main(int argc, char* argv[]) } int neurons_no = atoi(argv[1]); uint sleep_t; - sleep_t = (argc < 3) ? SLEEP_T : atoi(argv[2]); + sleep_t = (argc < 3) ? SLEEP_T : strtof(argv[2], NULL); - struct brain* b = brain_init((uint)neurons_no); - neuron_link_random(b); - cbrain_print(0, "%d neurons generated and randomly linked\n", neurons_no); - struct nthread* nt1 = thread_struct_new(0, neurons_no-1); - struct nthread* at = thread_struct_new(0, 0); - thread_create(nt1, b, 0, sleep_t); - thread_create(at, b, 1, sleep_t); - pthread_join(nt1->tid, NULL); - pthread_join(at->tid, NULL); + struct brain* b = parse_model_csv("src/models/conn.txt"); + + //struct brain* b = brain_init((uint)neurons_no); + //neuron_link_random(b); + cbrain_print(0, "%d neurons generated and randomly linked\n", b->nc); + neuron_fire(b->neurons[172], b); + neuron_fire(b->neurons[173], b); + neuron_update_range(0, 499, b); + //struct nthread* nt1 = thread_struct_new(0, neurons_no-1); + //thread_create(nt1, b, 0, sleep_t); + //struct nthread* at = thread_struct_new(0, 0); + //thread_create(at, b, 1, sleep_t); + //pthread_join(nt1->tid, NULL); + //pthread_join(at->tid, NULL); return 0; } diff --git a/src/header.h b/src/header.h index a78c930..c72f704 100644 --- a/src/header.h +++ b/src/header.h @@ -29,13 +29,12 @@ SOFTWARE. #include #include - /* control constants */ -#define DEBUG 1 +#define DEBUG 4 #define THRESHOLD 20 #define MAX_WT_DIFF 5 #define SLEEP_T 0 -#define MUTATE_PROB 0.0001 +#define MUTATE_PROB 0.00001 #define WEIGHT_MIN 1 #define WEIGHT_MAX 20 @@ -120,4 +119,5 @@ void save_brain(struct brain*, char*); struct brain* gen_brain(char*); int file_num_lines(char*); int cbrain_print(int, const char*, ...)__attribute__((format(printf, 2, 3))); +struct brain* parse_model_csv(char*); #endif diff --git a/src/models/conn.txt b/src/models/conn.txt new file mode 100644 index 0000000..ba6c8fa --- /dev/null +++ b/src/models/conn.txt @@ -0,0 +1,3954 @@ +0,1, 1 +0,4, 1 +0,12, 1 +0,13, 2 +0,43, 1 +0,54, 2 +0,55, 4 +0,56, 7 +0,57, 1 +0,58, 2 +0,59, 1 +0,67, 5 +0,112, 1 +0,179, 1 +0,189, 1 +0,190, 1 +0,197, 3 +0,199, 1 +0,245, 2 +1,0, 1 +1,5, 1 +1,12, 1 +1,13, 1 +1,44, 1 +1,53, 1 +1,55, 1 +1,56, 5 +1,57, 2 +1,59, 1 +1,66, 3 +1,180, 1 +1,189, 1 +1,198, 5 +1,200, 1 +1,204, 1 +1,244, 2 +2,0, 1 +2,3, 1 +2,16, 1 +2,53, 2 +2,54, 3 +2,59, 1 +2,69, 1 +2,70, 1 +2,80, 1 +2,82, 1 +2,111, 1 +2,125, 1 +2,131, 1 +2,304, 1 +2,149, 1 +2,185, 1 +2,192, 1 +2,194, 5 +2,195, 3 +2,196, 2 +2,203, 1 +2,204, 1 +2,207, 2 +2,217, 1 +2,219, 1 +2,231, 1 +2,235, 1 +2,239, 1 +2,250, 1 +3,1, 1 +3,2, 2 +3,22, 1 +3,53, 5 +3,54, 1 +3,58, 2 +3,60, 1 +3,67, 1 +3,68, 1 +3,68, 1 +3,69, 1 +3,83, 1 +3,111, 1 +3,112, 1 +3,150, 2 +3,181, 1 +3,194, 7 +3,195, 4 +3,196, 1 +3,208, 2 +3,224, 1 +4,0, 1 +4,0, 1 +4,20, 12 +4,51, 5 +4,153, 1 +4,185, 15 +4,194, 1 +4,201, 2 +4,240, 2 +5,1, 1 +5,1, 1 +5,11, 1 +5,19, 1 +5,21, 8 +5,44, 1 +5,52, 4 +5,75, 1 +5,178, 1 +5,186, 16 +5,195, 3 +5,201, 3 +5,239, 1 +5,241, 2 +5,253, 1 +6,7, 1 +6,10, 6 +6,12, 7 +6,13, 1 +6,22, 2 +6,40, 3 +6,43, 2 +6,53, 2 +6,54, 3 +6,55, 2 +6,57, 1 +6,58, 4 +6,58, 1 +6,66, 1 +6,67, 3 +6,74, 2 +6,153, 1 +6,153, 1 +6,199, 1 +6,217, 1 +7,6, 1 +7,11, 10 +7,13, 10 +7,40, 1 +7,44, 3 +7,54, 2 +7,55, 1 +7,56, 2 +7,57, 5 +7,58, 2 +7,67, 1 +7,77, 3 +7,150, 1 +7,170, 1 +7,189, 1 +7,190, 1 +8,9, 1 +8,12, 1 +8,17, 1 +8,18, 7 +9,8, 1 +9,13, 1 +9,19, 13 +9,40, 1 +10,0, 1 +10,11, 1 +10,12, 10 +10,14, 2 +10,20, 1 +10,40, 3 +10,41, 1 +10,43, 1 +10,45, 2 +10,49, 3 +10,72, 1 +10,77, 1 +10,113, 1 +10,192, 1 +10,217, 1 +11,1, 1 +11,5, 1 +11,7, 2 +11,10, 1 +11,13, 14 +11,21, 1 +11,40, 1 +11,42, 1 +11,46, 2 +11,73, 1 +11,73, 1 +11,76, 1 +11,77, 3 +11,193, 2 +12,8, 1 +12,18, 1 +12,40, 1 +12,53, 2 +12,55, 5 +12,110, 1 +12,111, 1 +12,182, 1 +12,188, 4 +12,192, 1 +12,195, 1 +12,195, 3 +12,197, 2 +12,198, 13 +12,198, 1 +12,203, 1 +12,221, 2 +12,222, 2 +12,243, 4 +13,9, 1 +13,54, 1 +13,56, 3 +13,59, 1 +13,95, 1 +13,110, 2 +13,182, 1 +13,185, 1 +13,187, 4 +13,194, 3 +13,197, 16 +13,197, 1 +13,198, 1 +13,202, 1 +13,204, 1 +13,221, 1 +13,242, 3 +13,244, 1 +13,270, 3 +14,10, 5 +14,23, 1 +14,41, 2 +14,49, 2 +14,56, 2 +14,57, 1 +14,58, 1 +14,60, 1 +14,61, 4 +14,62, 1 +14,64, 2 +14,65, 1 +14,66, 1 +14,179, 1 +14,192, 1 +14,235, 1 +14,240, 1 +15,11, 5 +15,42, 2 +15,48, 2 +15,50, 3 +15,58, 1 +15,61, 1 +15,62, 1 +15,113, 1 +15,114, 2 +15,152, 1 +15,176, 1 +15,193, 1 +15,218, 1 +16,2, 1 +16,9, 5 +16,17, 2 +16,39, 3 +16,42, 1 +16,42, 1 +16,52, 1 +16,52, 1 +16,78, 3 +16,187, 1 +16,188, 2 +17,8, 4 +17,9, 1 +17,10, 2 +17,12, 2 +17,16, 2 +17,39, 1 +17,40, 1 +17,41, 1 +17,51, 1 +17,52, 1 +17,79, 3 +17,187, 2 +17,191, 1 +18,19, 1 +18,20, 13 +18,72, 3 +18,76, 1 +18,77, 1 +18,114, 1 +18,185, 7 +18,187, 4 +18,197, 1 +19,5, 1 +19,18, 1 +19,21, 8 +19,73, 1 +19,113, 1 +19,186, 6 +19,188, 2 +19,198, 1 +20,10, 3 +20,12, 2 +20,13, 8 +20,21, 2 +20,39, 1 +20,41, 1 +20,43, 1 +20,60, 5 +20,108, 1 +20,185, 8 +20,194, 1 +20,197, 4 +20,238, 9 +20,240, 7 +20,273, 1 +21,11, 1 +21,12, 8 +21,13, 1 +21,20, 2 +21,42, 1 +21,44, 1 +21,59, 4 +21,60, 1 +21,73, 1 +21,108, 1 +21,186, 7 +21,198, 4 +21,239, 5 +21,241, 3 +21,243, 1 +22,2, 1 +22,53, 1 +22,59, 2 +22,60, 1 +22,191, 1 +22,208, 1 +23,58, 1 +23,59, 1 +23,71, 1 +23,80, 6 +23,82, 3 +23,84, 2 +23,170, 2 +23,171, 1 +23,181, 1 +23,206, 1 +23,217, 1 +23,228, 1 +24,71, 1 +24,81, 5 +24,83, 1 +24,85, 1 +24,171, 3 +24,205, 1 +24,230, 1 +25,223, 3 +25,239, 2 +25,239, 1 +25,244, 1 +26,3, 1 +26,220, 1 +26,224, 2 +26,238, 2 +26,243, 1 +26,244, 1 +27,53, 1 +27,54, 3 +27,55, 3 +27,55, 1 +27,56, 4 +27,57, 1 +27,58, 1 +27,66, 1 +27,68, 2 +27,69, 1 +27,78, 2 +27,79, 2 +27,171, 2 +27,177, 1 +27,177, 7 +27,178, 9 +27,185, 3 +27,186, 1 +27,194, 2 +27,195, 1 +27,252, 1 +28,53, 3 +28,54, 2 +28,86, 2 +28,304, 3 +28,307, 3 +28,351, 3 +28,354, 4 +28,263, 1 +28,287, 5 +28,292, 1 +29,53, 1 +29,54, 1 +29,318, 3 +29,319, 2 +29,365, 3 +29,366, 2 +30,320, 1 +30,321, 1 +30,322, 1 +30,323, 1 +30,367, 1 +30,368, 1 +30,369, 1 +30,370, 1 +30,155, 1 +30,156, 1 +30,156, 2 +30,291, 2 +31,87, 1 +31,95, 1 +31,102, 1 +31,306, 3 +31,307, 2 +31,353, 3 +31,354, 3 +31,264, 2 +31,292, 10 +32,53, 2 +32,54, 1 +32,87, 1 +32,88, 1 +32,102, 1 +32,308, 3 +32,309, 3 +32,355, 3 +32,356, 3 +32,265, 2 +32,292, 1 +32,293, 15 +33,34, 1 +33,88, 1 +33,310, 2 +33,311, 2 +33,357, 3 +33,358, 2 +33,294, 11 +34,53, 1 +34,54, 1 +34,103, 1 +34,310, 2 +34,313, 3 +34,357, 2 +34,360, 3 +34,267, 1 +34,295, 9 +35,53, 1 +35,54, 1 +35,56, 1 +35,90, 2 +35,312, 3 +35,313, 2 +35,359, 3 +35,360, 2 +35,268, 1 +35,296, 13 +36,53, 6 +36,54, 5 +36,55, 2 +36,56, 2 +36,312, 2 +36,315, 3 +36,359, 2 +36,362, 3 +37,53, 4 +37,54, 3 +37,314, 2 +37,317, 3 +37,361, 2 +37,364, 3 +38,53, 4 +38,54, 1 +38,54, 1 +38,109, 7 +38,316, 2 +38,319, 3 +38,363, 2 +38,366, 3 +39,5, 1 +39,10, 3 +39,12, 7 +39,13, 2 +39,18, 13 +39,19, 6 +39,76, 4 +39,77, 1 +39,186, 1 +40,8, 1 +40,9, 2 +40,10, 1 +40,11, 3 +40,12, 2 +40,13, 10 +40,18, 2 +40,19, 14 +40,73, 1 +40,76, 1 +40,77, 1 +41,10, 9 +41,12, 3 +41,17, 1 +41,17, 1 +41,20, 1 +41,49, 1 +42,11, 10 +42,13, 2 +42,16, 1 +42,19, 1 +42,21, 1 +43,0, 1 +43,0, 1 +43,4, 3 +43,10, 7 +43,12, 5 +43,20, 1 +43,44, 1 +43,49, 1 +43,53, 2 +43,55, 6 +43,57, 2 +43,58, 2 +43,185, 4 +43,189, 2 +43,197, 1 +43,199, 1 +43,217, 1 +44,1, 2 +44,1, 1 +44,5, 2 +44,11, 10 +44,13, 3 +44,21, 1 +44,43, 1 +44,50, 1 +44,54, 5 +44,56, 3 +44,57, 5 +44,58, 1 +44,60, 3 +44,114, 1 +44,178, 1 +44,186, 2 +44,190, 2 +44,218, 2 +44,218, 1 +45,10, 2 +45,12, 1 +45,18, 2 +45,20, 1 +45,40, 1 +45,46, 1 +45,49, 2 +45,76, 1 +45,77, 1 +45,187, 1 +46,10, 1 +46,11, 3 +46,11, 2 +46,13, 1 +46,39, 2 +46,44, 1 +46,45, 1 +46,76, 1 +46,77, 1 +47,48, 1 +47,49, 4 +47,113, 1 +47,114, 1 +47,179, 14 +48,47, 1 +48,50, 4 +48,114, 1 +48,180, 13 +49,10, 11 +49,12, 2 +49,14, 2 +49,50, 1 +49,179, 5 +49,217, 1 +50,11, 11 +50,15, 1 +50,44, 1 +50,49, 1 +50,73, 1 +50,85, 1 +50,180, 4 +50,193, 1 +50,218, 1 +51,17, 1 +51,52, 1 +51,53, 3 +51,58, 1 +51,59, 3 +51,74, 1 +51,185, 5 +51,187, 9 +52,16, 1 +52,19, 1 +52,51, 1 +52,54, 1 +52,60, 4 +52,75, 1 +52,186, 6 +52,188, 13 +52,253, 1 +53,28, 3 +53,29, 2 +53,29, 1 +53,30, 4 +53,31, 1 +53,32, 1 +53,32, 2 +53,33, 1 +53,34, 3 +53,34, 1 +53,35, 1 +53,36, 8 +53,36, 6 +53,37, 5 +53,37, 4 +53,38, 8 +53,38, 4 +53,54, 2 +53,54, 5 +53,56, 1 +53,57, 1 +53,64, 1 +53,66, 2 +53,86, 2 +53,86, 2 +53,87, 2 +53,87, 2 +53,88, 6 +53,89, 7 +53,89, 3 +53,90, 7 +53,90, 1 +53,91, 11 +53,91, 10 +53,92, 2 +53,92, 2 +53,93, 4 +53,94, 3 +53,99, 2 +53,100, 1 +53,100, 3 +53,111, 1 +53,135, 1 +53,135, 1 +53,170, 10 +53,170, 2 +53,171, 6 +53,171, 5 +53,177, 1 +53,198, 3 +53,225, 4 +53,227, 1 +53,229, 1 +53,254, 1 +53,257, 1 +53,258, 3 +53,259, 5 +53,259, 1 +53,260, 6 +53,260, 1 +53,261, 2 +53,262, 1 +53,262, 4 +53,263, 2 +53,263, 1 +53,264, 2 +53,264, 1 +53,265, 3 +53,265, 5 +53,266, 4 +53,266, 6 +53,267, 2 +53,268, 9 +53,268, 10 +53,269, 7 +53,269, 1 +53,280, 5 +54,3, 1 +54,28, 1 +54,28, 2 +54,29, 1 +54,29, 1 +54,30, 6 +54,31, 2 +54,32, 1 +54,32, 1 +54,33, 1 +54,34, 1 +54,34, 1 +54,35, 2 +54,35, 1 +54,36, 3 +54,36, 5 +54,37, 6 +54,37, 3 +54,38, 5 +54,38, 1 +54,53, 1 +54,53, 5 +54,55, 1 +54,57, 1 +54,58, 2 +54,59, 2 +54,60, 2 +54,86, 2 +54,86, 6 +54,87, 2 +54,87, 2 +54,88, 3 +54,88, 2 +54,89, 6 +54,89, 2 +54,90, 2 +54,90, 5 +54,91, 11 +54,91, 2 +54,92, 3 +54,93, 8 +54,93, 1 +54,94, 2 +54,97, 1 +54,99, 1 +54,99, 2 +54,100, 5 +54,135, 1 +54,136, 3 +54,157, 1 +54,158, 1 +54,170, 7 +54,171, 5 +54,171, 3 +54,194, 1 +54,197, 2 +54,198, 1 +54,225, 1 +54,226, 3 +54,226, 3 +54,227, 1 +54,255, 1 +54,256, 1 +54,259, 4 +54,259, 1 +54,260, 8 +54,260, 7 +54,261, 1 +54,262, 2 +54,263, 5 +54,263, 2 +54,264, 2 +54,264, 3 +54,265, 1 +54,265, 3 +54,266, 3 +54,266, 2 +54,267, 4 +54,268, 12 +54,268, 4 +54,269, 6 +54,280, 4 +54,291, 2 +55,27, 1 +55,29, 1 +55,32, 1 +55,33, 1 +55,34, 1 +55,35, 1 +55,36, 2 +55,38, 1 +55,53, 7 +55,54, 7 +55,56, 1 +55,56, 3 +55,57, 1 +55,58, 2 +55,59, 1 +55,60, 2 +55,70, 1 +55,97, 1 +55,98, 1 +55,99, 1 +55,100, 2 +55,101, 2 +55,108, 1 +55,176, 1 +55,187, 1 +55,188, 1 +55,191, 1 +55,229, 1 +55,236, 1 +55,259, 1 +55,262, 1 +55,267, 1 +55,270, 1 +55,271, 2 +55,272, 2 +55,273, 1 +55,273, 3 +55,275, 1 +55,276, 1 +55,277, 1 +55,278, 2 +55,279, 7 +55,280, 1 +55,283, 1 +56,28, 1 +56,29, 1 +56,32, 1 +56,33, 1 +56,34, 1 +56,35, 1 +56,35, 1 +56,36, 1 +56,36, 2 +56,53, 6 +56,54, 7 +56,55, 1 +56,55, 3 +56,90, 1 +56,95, 3 +56,96, 1 +56,97, 1 +56,98, 1 +56,99, 1 +56,100, 1 +56,101, 1 +56,102, 1 +56,108, 1 +56,114, 1 +56,175, 2 +56,187, 1 +56,188, 1 +56,191, 2 +56,236, 1 +56,264, 1 +56,268, 1 +56,269, 1 +56,269, 1 +56,271, 1 +56,272, 1 +56,273, 1 +56,274, 1 +56,275, 1 +56,277, 2 +56,278, 2 +56,279, 3 +56,280, 6 +56,288, 1 +56,293, 1 +57,1, 2 +57,28, 1 +57,29, 1 +57,30, 2 +57,33, 1 +57,34, 1 +57,53, 13 +57,54, 19 +57,71, 2 +57,86, 1 +57,87, 1 +57,88, 4 +57,89, 1 +57,90, 1 +57,93, 1 +57,111, 1 +57,112, 1 +57,135, 1 +57,170, 1 +57,225, 1 +57,226, 1 +57,227, 1 +57,265, 1 +58,0, 2 +58,6, 1 +58,29, 1 +58,34, 1 +58,53, 16 +58,54, 15 +58,55, 1 +58,57, 2 +58,66, 2 +58,86, 2 +58,87, 1 +58,88, 1 +58,89, 1 +58,90, 2 +58,93, 1 +58,94, 1 +58,98, 1 +58,110, 1 +58,112, 1 +58,135, 2 +58,169, 1 +58,225, 1 +58,226, 3 +58,227, 1 +58,260, 1 +58,262, 1 +58,263, 2 +58,266, 1 +59,28, 1 +59,53, 12 +59,54, 7 +59,60, 1 +59,86, 5 +59,87, 1 +59,88, 3 +59,89, 1 +59,171, 1 +59,182, 1 +59,197, 2 +59,198, 3 +59,210, 1 +59,214, 1 +59,225, 6 +59,226, 7 +59,227, 3 +59,258, 5 +59,263, 3 +59,292, 1 +59,293, 1 +60,28, 3 +60,31, 2 +60,32, 1 +60,53, 7 +60,54, 16 +60,58, 1 +60,59, 1 +60,86, 5 +60,87, 3 +60,88, 1 +60,97, 1 +60,197, 3 +60,198, 2 +60,209, 1 +60,210, 1 +60,214, 1 +60,225, 2 +60,226, 3 +60,227, 3 +60,258, 1 +60,262, 1 +60,263, 2 +60,264, 1 +60,265, 1 +61,55, 1 +61,56, 2 +61,62, 7 +61,62, 23 +61,63, 1 +61,64, 2 +61,64, 2 +61,65, 4 +61,65, 3 +61,66, 1 +61,67, 1 +61,70, 1 +61,113, 1 +61,334, 1 +61,335, 1 +61,158, 1 +61,175, 2 +61,179, 1 +61,180, 1 +61,180, 1 +61,270, 1 +62,47, 1 +62,49, 1 +62,55, 1 +62,56, 5 +62,61, 1 +62,61, 23 +62,64, 2 +62,64, 2 +62,65, 1 +62,65, 1 +62,66, 1 +62,67, 1 +62,114, 1 +62,337, 2 +62,384, 2 +62,179, 1 +62,284, 1 +62,289, 1 +63,54, 3 +63,55, 1 +63,56, 2 +63,58, 1 +63,59, 1 +63,60, 1 +63,61, 1 +63,66, 1 +63,70, 1 +63,93, 1 +63,159, 2 +63,170, 1 +63,176, 1 +63,178, 1 +63,180, 1 +63,182, 1 +63,192, 1 +63,193, 1 +63,260, 1 +64,5, 3 +64,55, 1 +64,56, 1 +64,57, 1 +64,61, 1 +64,61, 2 +64,62, 3 +64,62, 2 +64,65, 1 +64,65, 1 +64,66, 3 +64,75, 1 +64,162, 1 +64,178, 2 +64,179, 1 +64,180, 2 +64,198, 1 +64,201, 3 +64,239, 1 +64,241, 2 +64,287, 1 +65,6, 1 +65,7, 2 +65,27, 2 +65,55, 2 +65,56, 1 +65,58, 1 +65,61, 2 +65,61, 3 +65,62, 1 +65,62, 1 +65,64, 1 +65,64, 1 +65,67, 4 +65,175, 1 +65,177, 3 +65,194, 1 +65,201, 4 +65,238, 1 +65,240, 1 +66,53, 2 +66,54, 1 +66,55, 1 +66,56, 4 +66,57, 1 +66,58, 2 +66,59, 1 +66,62, 1 +66,64, 2 +66,67, 4 +66,114, 1 +66,166, 2 +66,170, 1 +66,170, 1 +66,171, 2 +66,171, 3 +66,176, 1 +66,193, 1 +66,202, 1 +66,202, 1 +67,53, 1 +67,54, 1 +67,55, 3 +67,56, 1 +67,57, 1 +67,58, 3 +67,60, 3 +67,66, 1 +67,66, 4 +67,170, 2 +67,170, 1 +67,171, 4 +67,180, 1 +67,226, 1 +68,3, 1 +68,27, 2 +68,55, 1 +68,59, 2 +68,60, 1 +68,69, 2 +68,71, 1 +68,108, 1 +68,157, 3 +68,158, 1 +68,174, 1 +68,177, 1 +68,178, 1 +68,182, 2 +68,189, 1 +68,190, 1 +68,194, 1 +68,197, 2 +68,198, 1 +68,216, 1 +68,222, 1 +68,233, 1 +68,238, 1 +68,239, 1 +68,241, 1 +68,243, 1 +68,270, 4 +68,271, 1 +69,2, 1 +69,27, 1 +69,68, 2 +69,80, 1 +69,333, 1 +69,177, 6 +69,179, 1 +69,189, 1 +69,195, 1 +69,197, 2 +69,198, 2 +69,208, 1 +69,215, 1 +69,221, 1 +69,238, 1 +69,238, 1 +69,239, 2 +69,241, 1 +69,242, 1 +69,243, 2 +70,59, 1 +70,62, 1 +70,87, 1 +70,102, 1 +70,107, 2 +70,109, 1 +70,110, 9 +70,114, 1 +70,333, -5 +70,380, -5 +70,174, 1 +70,178, 1 +70,183, 1 +70,225, 5 +70,226, 4 +70,227, 3 +70,290, 4 +71,3, 1 +71,23, 1 +71,24, 1 +71,55, 6 +71,56, 6 +71,57, 2 +71,67, 1 +71,80, 3 +71,81, 2 +71,86, 1 +71,170, 4 +71,171, 5 +71,175, 1 +71,181, 3 +71,191, 1 +71,236, 1 +71,258, 2 +72,0, 1 +72,8, 5 +72,10, 1 +72,18, 1 +72,20, 10 +72,39, 4 +72,41, 1 +72,73, 1 +72,74, 1 +73,5, 3 +73,9, 7 +73,11, 1 +73,19, 2 +73,21, 7 +73,21, 1 +73,39, 1 +73,40, 2 +73,52, 1 +73,72, 1 +73,75, 1 +73,193, 2 +73,195, 1 +73,201, 2 +74,4, 9 +74,13, 1 +74,20, 9 +74,51, 1 +74,55, 1 +74,75, 1 +74,185, 3 +74,217, 1 +74,238, 1 +75,5, 4 +75,21, 4 +75,42, 1 +75,44, 2 +75,52, 1 +75,56, 2 +75,74, 1 +75,186, 1 +75,189, 1 +75,201, 2 +75,218, 1 +75,241, 1 +76,10, 2 +76,11, 4 +76,12, 1 +76,13, 1 +76,18, 10 +76,39, 1 +76,53, 1 +76,77, 1 +76,185, 3 +77,11, 1 +77,13, 4 +77,18, 4 +77,19, 9 +77,39, 1 +77,42, 1 +77,76, 5 +78,12, 1 +78,54, 1 +78,59, 1 +78,60, 4 +78,79, 1 +78,79, 1 +78,186, 5 +78,187, 1 +78,188, 7 +78,194, 1 +78,195, 4 +78,195, 1 +78,201, 1 +79,18, 1 +79,53, 1 +79,59, 2 +79,78, 1 +79,185, 5 +79,187, 4 +79,194, 5 +79,194, 1 +79,201, 1 +80,2, 3 +80,64, 1 +80,67, 1 +80,113, 1 +80,175, 2 +80,176, 2 +80,221, 1 +80,246, 1 +81,3, 1 +81,24, 1 +81,53, 3 +81,64, 1 +81,66, 2 +81,114, 4 +81,170, 1 +81,175, 2 +81,176, 1 +81,228, 1 +81,247, 1 +82,60, 5 +82,123, 4 +82,149, 2 +82,151, 6 +82,151, 1 +82,187, 2 +82,189, 1 +82,190, 2 +82,196, 1 +82,199, 2 +82,202, 1 +82,209, 3 +82,217, 4 +82,220, 4 +82,231, 1 +82,239, 1 +82,246, 2 +82,250, 4 +82,254, 2 +83,59, 6 +83,81, 1 +83,124, 5 +83,126, 1 +83,150, 8 +83,152, 5 +83,152, 2 +83,188, 1 +83,189, 4 +83,190, 3 +83,196, 1 +83,202, 1 +83,205, 1 +83,210, 2 +83,218, 1 +83,219, 4 +83,220, 1 +83,230, 1 +83,239, 1 +83,247, 1 +83,251, 2 +83,255, 1 +84,6, 1 +84,60, 3 +84,127, 2 +84,326, 1 +84,149, 4 +84,153, 6 +84,153, 1 +84,189, 7 +84,190, 4 +84,196, 1 +84,199, 1 +84,205, 4 +84,219, 1 +84,232, 1 +84,248, 2 +85,42, 1 +85,59, 5 +85,128, 1 +85,134, 2 +85,374, 1 +85,150, 7 +85,154, 3 +85,154, 1 +85,189, 2 +85,190, 2 +85,196, 1 +85,200, 1 +85,203, 1 +85,206, 2 +85,220, 2 +85,233, 2 +85,249, 1 +86,53, 2 +86,54, 6 +86,89, 1 +86,102, 4 +86,307, 8 +86,354, 8 +86,226, 2 +86,227, 3 +86,287, 17 +86,292, 1 +87,31, 1 +87,32, 1 +87,53, 2 +87,54, 2 +87,102, 1 +87,306, 2 +87,307, 1 +87,308, 2 +87,309, 2 +87,353, 2 +87,354, 2 +87,355, 2 +87,356, 2 +87,226, 1 +87,258, 2 +87,287, 2 +87,292, 11 +87,293, 5 +88,33, 1 +88,33, 1 +88,54, 2 +88,89, 2 +88,97, 1 +88,103, 1 +88,308, 5 +88,309, 5 +88,311, 5 +88,355, 5 +88,356, 5 +88,358, 5 +88,293, 25 +88,294, 6 +89,53, 3 +89,54, 2 +89,86, 1 +89,88, 1 +89,97, 1 +89,97, 1 +89,103, 1 +89,310, 4 +89,311, 4 +89,313, 5 +89,357, 4 +89,358, 4 +89,360, 5 +89,277, 1 +89,294, 12 +89,295, 15 +90,35, 2 +90,53, 1 +90,54, 5 +90,98, 1 +90,312, 5 +90,313, 4 +90,359, 5 +90,360, 4 +90,264, 1 +90,265, 2 +90,295, 1 +90,296, 16 +91,53, 10 +91,54, 2 +91,310, 6 +91,311, 4 +91,312, 4 +91,313, 4 +91,315, 4 +91,357, 4 +91,358, 4 +91,359, 4 +91,360, 4 +91,362, 4 +91,294, 4 +91,295, 3 +91,296, 3 +92,53, 2 +92,314, 4 +92,316, 4 +92,317, 4 +92,361, 4 +92,363, 4 +92,364, 4 +93,54, 1 +93,94, 1 +93,316, 4 +93,318, 4 +93,319, 4 +93,363, 4 +93,365, 4 +93,366, 4 +94,93, 1 +94,107, 1 +94,318, 4 +94,320, 4 +94,321, 4 +94,322, 4 +94,323, 4 +94,365, 4 +94,367, 4 +94,368, 4 +94,369, 4 +94,370, 4 +94,155, 1 +94,163, 1 +94,191, 1 +94,291, 1 +95,13, 1 +95,28, 1 +95,31, 1 +95,32, 1 +95,56, 3 +95,96, 1 +95,98, 1 +95,102, 10 +95,108, 1 +95,306, 1 +95,307, 1 +95,353, 1 +95,354, 1 +95,191, 1 +95,202, 1 +95,274, 1 +95,275, 1 +95,287, 21 +95,292, 15 +95,293, 1 +96,56, 1 +96,88, 5 +96,95, 1 +96,97, 6 +96,103, 2 +96,308, 3 +96,309, 3 +96,310, 3 +96,311, 3 +96,355, 3 +96,356, 3 +96,357, 3 +96,358, 3 +96,270, 2 +96,293, 23 +96,294, 14 +96,295, 1 +97,33, 1 +97,34, 1 +97,55, 1 +97,56, 1 +97,89, 1 +97,96, 6 +97,98, 1 +97,103, 4 +97,104, 10 +97,310, 3 +97,311, 3 +97,312, 4 +97,313, 3 +97,357, 3 +97,358, 3 +97,359, 4 +97,360, 3 +97,294, 9 +97,295, 26 +97,296, 7 +98,55, 1 +98,56, 1 +98,95, 1 +98,97, 1 +98,104, 3 +98,312, 2 +98,313, 2 +98,315, 2 +98,359, 2 +98,360, 2 +98,362, 2 +98,273, 1 +98,275, 1 +98,296, 13 +99,54, 2 +99,55, 1 +99,56, 1 +99,314, 2 +99,316, 2 +99,317, 2 +99,361, 2 +99,363, 2 +99,364, 2 +100,53, 3 +100,55, 2 +100,56, 1 +100,316, 2 +100,318, 2 +100,319, 2 +100,363, 2 +100,365, 2 +100,366, 2 +101,55, 2 +101,56, 1 +101,318, 2 +101,320, 2 +101,321, 2 +101,322, 2 +101,323, 2 +101,365, 2 +101,367, 2 +101,368, 2 +101,369, 2 +101,370, 2 +101,291, 2 +102,56, 1 +102,87, 2 +102,103, 1 +102,306, -4 +102,307, -4 +102,308, -5 +102,309, -4 +102,353, -4 +102,354, -4 +102,355, -5 +102,356, -4 +102,287, 4 +102,292, 1 +102,292, 2 +103,88, 1 +103,102, 1 +103,104, 2 +103,308, -4 +103,310, -5 +103,311, -4 +103,355, -4 +103,357, -5 +103,358, -4 +103,293, 1 +103,294, 1 +103,294, 2 +104,103, 2 +104,105, 1 +104,310, -5 +104,312, -6 +104,313, -5 +104,357, -5 +104,359, -6 +104,360, -5 +105,104, 1 +105,312, -5 +105,314, -5 +105,315, -5 +105,359, -5 +105,361, -5 +105,362, -5 +105,283, 1 +105,298, 1 +106,316, -5 +106,317, -5 +106,319, -5 +106,363, -5 +106,364, -5 +106,366, -5 +106,279, 1 +106,288, 1 +106,299, 1 +107,318, -5 +107,320, -5 +107,321, -5 +107,322, -5 +107,323, -5 +107,365, -5 +107,367, -5 +107,368, -5 +107,369, -5 +107,370, -5 +108,20, 3 +108,27, 4 +108,51, 1 +108,52, 1 +108,53, 3 +108,54, 1 +108,55, 1 +108,55, 1 +108,56, 1 +108,59, 9 +108,60, 5 +108,95, 1 +108,96, 1 +108,97, 2 +108,98, 1 +108,99, 1 +108,100, 2 +108,101, 1 +108,157, 3 +108,170, 3 +108,170, 1 +108,171, 1 +108,181, 3 +108,181, 2 +108,185, 1 +108,186, 1 +108,198, 1 +108,201, 3 +108,222, 1 +108,223, 1 +108,224, 1 +108,225, 1 +108,238, 3 +108,239, 2 +108,240, 3 +108,241, 2 +108,261, 1 +108,262, 1 +108,270, 1 +108,272, 2 +109,38, 7 +109,70, 5 +109,70, 1 +109,93, 2 +109,107, 3 +109,110, 3 +109,395, -5 +109,155, 1 +109,163, 1 +109,177, 1 +109,269, 1 +109,280, 1 +110,12, 1 +110,12, 1 +110,13, 3 +110,13, 2 +110,53, 5 +110,54, 7 +110,55, 1 +110,68, 2 +110,69, 1 +110,70, 9 +110,177, 2 +110,178, 13 +110,182, 1 +110,187, 1 +110,188, 1 +110,194, 5 +110,195, 5 +110,215, 2 +110,216, 4 +110,269, 1 +110,287, 5 +110,288, 4 +111,2, 2 +111,3, 2 +111,12, 1 +111,13, 2 +111,53, 14 +111,53, 1 +111,54, 17 +111,55, 4 +111,56, 5 +111,57, 6 +111,57, 1 +111,58, 13 +111,108, 1 +111,112, 1 +111,112, 2 +111,196, 1 +112,3, 1 +112,13, 1 +112,53, 12 +112,54, 5 +112,55, 5 +112,56, 1 +112,57, 10 +112,57, 1 +112,58, 1 +112,58, 1 +112,59, 4 +112,60, 2 +112,67, 1 +112,108, 1 +112,111, 2 +112,111, 2 +112,170, 2 +112,270, 1 +113,10, 1 +113,20, 2 +113,21, 1 +113,43, 1 +113,44, 2 +113,48, 1 +113,49, 1 +113,58, 2 +113,61, 6 +113,66, 1 +113,74, 1 +113,75, 2 +113,114, 3 +113,114, 1 +113,396, 7 +113,192, 3 +113,197, 2 +113,226, 2 +113,285, 3 +114,12, 1 +114,13, 1 +114,20, 1 +114,21, 1 +114,34, 1 +114,43, 2 +114,58, 1 +114,61, 1 +114,66, 1 +114,70, 1 +114,74, 1 +114,81, 1 +114,90, 1 +114,91, 1 +114,113, 1 +114,113, 1 +114,396, 6 +114,176, 1 +114,176, 1 +114,180, 1 +114,193, 4 +114,218, 1 +114,225, 1 +114,227, 1 +114,266, 1 +114,282, 3 +114,283, 1 +114,294, 2 +115,116, 1 +115,119, 1 +115,121, 1 +115,199, 1 +115,200, 1 +116,115, 1 +116,119, 1 +116,121, 1 +116,199, 1 +116,200, 1 +117,115, 1 +117,116, 1 +117,137, 2 +117,137, 2 +118,115, 1 +118,116, 1 +118,137, 2 +118,137, 2 +119,137, 2 +119,137, 2 +119,138, 1 +119,138, 1 +119,139, 1 +119,139, 1 +120,117, 5 +120,118, 5 +120,121, 2 +120,137, 2 +120,137, 2 +121,115, 3 +121,115, 1 +121,116, 2 +121,116, 1 +121,137, 1 +121,137, 1 +121,143, 1 +121,143, 1 +121,146, 2 +121,146, 2 +122,117, 2 +122,118, 2 +122,119, 1 +122,142, 1 +122,143, 2 +122,147, 2 +122,148, 2 +123,124, 1 +123,125, 1 +123,300, 1 +123,301, 1 +123,303, 2 +123,149, 1 +123,181, 1 +123,196, 1 +123,199, 2 +123,206, 1 +123,209, 4 +123,214, 1 +123,254, 1 +124,123, 1 +124,126, 1 +124,347, 4 +124,348, 3 +124,150, 1 +124,200, 5 +124,210, 5 +124,214, 1 +125,60, 2 +125,123, 1 +125,123, 1 +125,127, 1 +125,300, 3 +125,302, 3 +125,304, 4 +125,324, 3 +125,326, 3 +125,205, 5 +125,207, 1 +125,208, 3 +125,209, 4 +125,210, 2 +125,213, 1 +126,59, 1 +126,60, 1 +126,124, 1 +126,124, 1 +126,128, 1 +126,347, 3 +126,349, 3 +126,371, 3 +126,373, 3 +126,205, 3 +126,206, 2 +126,207, 4 +126,208, 2 +126,209, 1 +126,210, 4 +126,212, 2 +126,219, 1 +126,253, 2 +127,125, 1 +127,125, 1 +127,128, 1 +127,324, 5 +127,325, 4 +127,199, 4 +127,205, 5 +127,211, 1 +127,256, 1 +128,126, 1 +128,126, 1 +128,127, 1 +128,132, 1 +128,134, 1 +128,371, 5 +128,372, 5 +128,200, 6 +128,206, 10 +128,213, 1 +129,51, 1 +129,123, 7 +129,151, 2 +129,187, 1 +129,199, 10 +129,212, 4 +129,213, 3 +129,246, 3 +130,83, 1 +130,124, 7 +130,190, 1 +130,200, 11 +130,211, 1 +130,212, 2 +130,213, 2 +130,214, 1 +130,247, 3 +131,2, 2 +131,59, 1 +131,125, 1 +131,151, 5 +131,153, 8 +131,189, 1 +131,196, 7 +131,207, 3 +131,208, 1 +131,213, 2 +131,214, 2 +131,217, 1 +131,252, 2 +132,3, 1 +132,126, 1 +132,128, 1 +132,150, 1 +132,152, 2 +132,154, 7 +132,196, 6 +132,207, 1 +132,212, 2 +132,214, 1 +132,218, 1 +132,251, 1 +132,253, 1 +133,79, 1 +133,127, 7 +133,131, 1 +133,153, 1 +133,185, 1 +133,196, 2 +133,199, 11 +133,212, 1 +133,213, 4 +133,214, 1 +133,248, 3 +134,128, 6 +134,154, 1 +134,186, 2 +134,196, 3 +134,200, 15 +134,212, 3 +134,213, 2 +134,214, 3 +134,249, 4 +134,253, 1 +135,53, 5 +135,53, 1 +135,54, 6 +135,57, 4 +135,58, 2 +135,66, 1 +135,161, 1 +135,165, 1 +135,175, 1 +135,181, 1 +135,183, 1 +136,53, 3 +136,54, 7 +136,57, 1 +136,58, 3 +136,67, 1 +136,166, 1 +136,169, 1 +136,171, 3 +136,181, 1 +136,181, 1 +136,183, 1 +137,117, 2 +137,118, 2 +137,119, 1 +137,120, 1 +138,115, 3 +138,116, 3 +138,119, 2 +138,119, 1 +138,139, 1 +138,143, 1 +138,146, 2 +138,146, 2 +139,115, 3 +139,116, 3 +139,119, 2 +139,119, 1 +139,140, 1 +139,141, 1 +139,143, 1 +139,146, 2 +139,146, 2 +140,115, 4 +140,116, 4 +140,120, 2 +140,121, 3 +140,122, 1 +140,137, 1 +140,137, 1 +140,141, 1 +140,144, 1 +140,145, 1 +140,146, 1 +140,146, 1 +140,147, 2 +140,148, 3 +141,115, 4 +141,116, 4 +141,119, 2 +141,120, 6 +141,121, 3 +141,122, 1 +141,137, 1 +141,137, 1 +141,140, 1 +141,144, 1 +141,145, 1 +141,146, 1 +141,146, 1 +141,147, 2 +141,148, 3 +142,119, 1 +142,121, 13 +142,122, 2 +142,122, 1 +142,138, 1 +142,139, 1 +142,142, 6 +142,143, 1 +142,147, 1 +142,148, 1 +143,121, 3 +143,121, 1 +143,122, 1 +143,137, 1 +143,137, 1 +143,138, 2 +143,139, 2 +143,143, 4 +144,115, 3 +144,116, 3 +144,117, 1 +144,118, 1 +144,119, 1 +144,137, 1 +144,137, 1 +144,138, 2 +144,139, 2 +145,115, 3 +145,116, 3 +145,119, 1 +145,137, 1 +145,137, 1 +145,138, 2 +145,139, 2 +146,115, 1 +146,116, 1 +146,119, 1 +146,120, 1 +146,121, 2 +146,137, 1 +146,138, 2 +146,139, 2 +146,140, 1 +146,141, 1 +146,144, 2 +146,145, 2 +147,115, 1 +147,116, 2 +147,117, 6 +147,118, 6 +147,119, 2 +147,120, 3 +147,121, 2 +147,122, 2 +147,140, 1 +147,140, 1 +147,141, 1 +147,141, 1 +148,115, 2 +148,116, 2 +148,117, 6 +148,118, 6 +148,119, 2 +148,120, 3 +148,121, 2 +148,122, 2 +148,140, 1 +148,140, 1 +148,141, 1 +148,141, 1 +149,60, 21 +149,82, 3 +149,84, 4 +149,123, 1 +149,127, 2 +149,150, 2 +149,187, 8 +149,194, 1 +149,205, 7 +149,207, 2 +149,209, 1 +149,212, 2 +149,242, 3 +149,243, 4 +149,245, 4 +149,254, 1 +150,59, 16 +150,83, 1 +150,85, 6 +150,124, 2 +150,124, 1 +150,128, 1 +150,132, 1 +150,149, 2 +150,188, 10 +150,195, 1 +150,206, 10 +150,207, 3 +150,210, 3 +150,213, 2 +150,243, 1 +150,244, 4 +150,245, 3 +151,82, 1 +151,187, 2 +151,190, 1 +151,194, 1 +151,206, 4 +151,209, 1 +151,236, 3 +151,250, 1 +152,83, 2 +152,188, 2 +152,189, 1 +152,190, 1 +152,195, 1 +152,196, 1 +152,205, 3 +152,210, 1 +152,220, 1 +152,237, 2 +152,251, 1 +153,6, 1 +153,84, 1 +153,127, 1 +153,133, 1 +153,187, 1 +153,189, 1 +153,194, 1 +153,196, 1 +153,199, 1 +153,205, 1 +153,210, 4 +153,234, 3 +153,250, 1 +154,85, 1 +154,128, 1 +154,188, 1 +154,190, 1 +154,195, 1 +154,196, 2 +154,200, 2 +154,206, 1 +154,209, 4 +154,213, 1 +154,235, 4 +154,251, 1 +155,30, 1 +155,94, 1 +155,94, 1 +155,107, 1 +155,320, 2 +155,176, 1 +155,291, 3 +156,30, 2 +156,345, 1 +156,391, 1 +156,191, 2 +156,291, 2 +157,68, 6 +157,108, 24 +157,158, 1 +157,158, 3 +157,171, 1 +157,174, 2 +157,174, 1 +157,181, 2 +157,269, 1 +157,289, 1 +158,68, 16 +158,108, 35 +158,157, 3 +158,170, 1 +158,171, 1 +158,174, 1 +158,268, 1 +158,299, 1 +159,58, 1 +159,61, 3 +159,63, 5 +159,64, 1 +159,65, 1 +159,108, 2 +159,160, 5 +159,160, 2 +159,161, 5 +159,162, 5 +159,179, 2 +160,63, 3 +160,65, 1 +160,93, 1 +160,108, 1 +160,159, 6 +160,159, 2 +160,161, 1 +160,162, 5 +160,177, 3 +160,179, 2 +161,53, 9 +161,54, 6 +161,57, 1 +161,162, 1 +161,162, 3 +161,170, 13 +161,261, 1 +162,53, 7 +162,54, 7 +162,57, 1 +162,58, 1 +162,61, 1 +162,64, 1 +162,93, 1 +162,161, 1 +162,161, 3 +162,170, 6 +162,171, 3 +162,261, 2 +163,53, 1 +163,94, 7 +163,94, 1 +163,108, 6 +163,135, 1 +163,164, 1 +163,165, 1 +163,170, 2 +163,261, 2 +163,261, 1 +164,65, 1 +164,94, 2 +164,108, 8 +164,136, 1 +164,163, 1 +164,163, 1 +164,171, 8 +164,171, 1 +164,261, 1 +164,261, 1 +165,113, 1 +165,135, 1 +165,163, 1 +165,170, 1 +166,35, 1 +166,53, 4 +166,54, 1 +166,57, 1 +166,58, 4 +166,108, 5 +166,114, 1 +166,136, 1 +166,157, 2 +166,158, 3 +166,170, 2 +166,171, 1 +166,181, 2 +167,221, 5 +167,240, 6 +168,222, 4 +168,241, 6 +169,53, 8 +169,54, 11 +169,57, 7 +169,58, 6 +169,63, 1 +169,136, 1 +169,175, 1 +169,177, 4 +170,28, 1 +170,53, 1 +170,53, 2 +170,54, 4 +170,55, 5 +170,56, 12 +170,57, 5 +170,58, 2 +170,59, 2 +170,60, 1 +170,66, 3 +170,66, 1 +170,67, 1 +170,67, 1 +170,87, 1 +170,90, 1 +170,91, 1 +170,96, 3 +170,97, 4 +170,98, 3 +170,99, 2 +170,100, 2 +170,101, 3 +170,108, 4 +170,108, 1 +170,165, 1 +170,171, 2 +170,171, 5 +170,191, 5 +170,202, 2 +170,236, 2 +170,271, 2 +170,271, 1 +170,272, 1 +170,274, 1 +170,275, 1 +170,276, 1 +170,277, 2 +170,279, 1 +170,280, 2 +171,27, 1 +171,31, 1 +171,53, 7 +171,53, 5 +171,54, 7 +171,54, 3 +171,55, 8 +171,56, 6 +171,57, 5 +171,58, 1 +171,59, 1 +171,60, 1 +171,66, 3 +171,70, 1 +171,94, 1 +171,96, 1 +171,97, 3 +171,98, 4 +171,99, 1 +171,100, 2 +171,101, 1 +171,111, 1 +171,136, 1 +171,157, 1 +171,157, 1 +171,164, 1 +171,166, 1 +171,170, 3 +171,170, 5 +171,172, 1 +171,181, 1 +171,183, 2 +171,184, 1 +171,184, 1 +171,191, 5 +171,237, 2 +171,268, 2 +171,269, 1 +171,271, 1 +171,275, 3 +171,277, 2 +171,278, 3 +171,279, 1 +172,53, 6 +172,54, 6 +172,106, 1 +172,170, 1 +172,171, 6 +172,288, 1 +173,53, 6 +173,54, 9 +173,108, 3 +173,170, 13 +173,171, 10 +173,172, 1 +173,269, 1 +174,68, 11 +174,70, 1 +174,71, 1 +174,108, 3 +174,157, 7 +174,157, 1 +174,158, 8 +174,158, 1 +174,170, 2 +174,181, 1 +175,53, 2 +175,56, 1 +175,56, 2 +175,57, 3 +175,58, 3 +175,59, 1 +175,62, 1 +175,63, 1 +175,66, 5 +175,67, 5 +175,70, 2 +175,80, 1 +175,81, 2 +175,102, 2 +175,332, 3 +175,169, 1 +175,170, 1 +175,176, 5 +175,180, 1 +175,182, 1 +175,183, 1 +175,192, 1 +176,53, 2 +176,55, 1 +176,56, 2 +176,58, 1 +176,59, 3 +176,66, 4 +176,67, 1 +176,70, 2 +176,80, 1 +176,81, 2 +176,104, 1 +176,114, 1 +176,114, 1 +176,335, 1 +176,336, 2 +176,169, 2 +176,170, 1 +176,175, 1 +176,182, 2 +176,183, 2 +176,282, 1 +176,283, 1 +176,290, 1 +176,296, 1 +176,297, 1 +177,0, 1 +177,27, 1 +177,27, 7 +177,53, 1 +177,53, 1 +177,54, 1 +177,55, 5 +177,56, 6 +177,58, 2 +177,60, 1 +177,65, 1 +177,68, 1 +177,69, 6 +177,110, 2 +177,160, 3 +177,169, 4 +177,171, 3 +177,178, 1 +177,182, 1 +177,194, 2 +177,291, 2 +177,293, 1 +178,5, 1 +178,27, 2 +178,27, 9 +178,44, 1 +178,53, 1 +178,54, 2 +178,55, 4 +178,56, 5 +178,64, 3 +178,68, 1 +178,70, 4 +178,103, 1 +178,110, 1 +178,110, 13 +178,170, 4 +178,171, 7 +178,177, 1 +178,180, 1 +178,186, 2 +178,195, 1 +178,198, 1 +178,218, 1 +178,294, 1 +178,295, 1 +179,0, 1 +179,10, 3 +179,47, 1 +179,49, 4 +179,49, 5 +179,113, 2 +179,180, 2 +179,217, 1 +180,1, 1 +180,11, 7 +180,40, 1 +180,50, 4 +180,50, 4 +180,55, 1 +180,61, 1 +180,62, 1 +180,70, 1 +180,73, 2 +180,102, 1 +180,110, 1 +180,114, 1 +180,175, 1 +180,179, 2 +180,182, 1 +180,193, 1 +180,287, 1 +181,0, 1 +181,23, 1 +181,35, 1 +181,55, 4 +181,56, 4 +181,66, 3 +181,67, 2 +181,68, 1 +181,94, 1 +181,96, 1 +181,97, 1 +181,108, 1 +181,108, 2 +181,123, 1 +181,124, 1 +181,127, 1 +181,128, 1 +181,135, 1 +181,136, 1 +181,157, 1 +181,158, 1 +181,166, 2 +181,171, 1 +181,199, 3 +181,200, 3 +181,225, 1 +181,246, 1 +182,12, 2 +182,12, 1 +182,13, 4 +182,13, 1 +182,68, 7 +182,68, 2 +182,69, 7 +182,70, 2 +182,110, 2 +182,177, 1 +182,187, 1 +182,188, 1 +182,194, 2 +182,195, 3 +182,196, 1 +182,214, 1 +182,215, 2 +182,216, 3 +182,239, 1 +183,66, 1 +183,171, 2 +183,182, 2 +183,184, 1 +183,261, 1 +184,54, 1 +184,58, 1 +184,171, 1 +184,171, 1 +184,182, 1 +184,261, 1 +185,84, 1 +185,186, 1 +185,203, 2 +185,204, 4 +185,205, 12 +185,206, 7 +185,207, 6 +185,208, 6 +185,209, 9 +185,210, 11 +185,230, 2 +185,242, 8 +185,243, 10 +185,244, 6 +185,245, 11 +186,85, 1 +186,126, 1 +186,185, 4 +186,203, 1 +186,205, 10 +186,206, 11 +186,207, 3 +186,208, 8 +186,209, 12 +186,210, 10 +186,222, 1 +186,230, 1 +186,231, 1 +186,232, 1 +186,242, 7 +186,243, 7 +186,244, 13 +186,245, 7 +187,13, 2 +187,51, 1 +187,53, 1 +187,55, 1 +187,56, 1 +187,56, 1 +187,58, 1 +187,59, 1 +187,60, 5 +187,79, 1 +187,151, 2 +187,153, 1 +187,182, 1 +187,185, 3 +187,187, 1 +187,188, 3 +187,194, 1 +187,230, 1 +187,232, 1 +187,234, 1 +187,236, 1 +187,237, 1 +187,238, 1 +187,242, 1 +187,245, 2 +187,245, 2 +188,12, 1 +188,21, 1 +188,54, 2 +188,55, 1 +188,56, 1 +188,59, 3 +188,60, 1 +188,78, 1 +188,152, 2 +188,154, 1 +188,182, 1 +188,186, 2 +188,187, 3 +188,188, 1 +188,195, 1 +188,195, 1 +188,196, 1 +188,231, 1 +188,233, 1 +188,235, 1 +188,237, 1 +188,239, 1 +188,242, 1 +188,242, 1 +188,243, 1 +188,244, 2 +189,1, 1 +189,43, 2 +189,53, 5 +189,54, 6 +189,68, 1 +189,69, 1 +189,69, 1 +189,75, 1 +189,197, 1 +189,198, 3 +189,204, 1 +189,216, 1 +189,238, 2 +189,242, 3 +189,243, 3 +189,245, 1 +190,1, 1 +190,44, 2 +190,53, 5 +190,54, 5 +190,68, 1 +190,239, 1 +190,242, 4 +190,243, 3 +190,244, 2 +190,245, 1 +191,22, 1 +191,31, 1 +191,55, 1 +191,56, 2 +191,91, 3 +191,94, 1 +191,95, 1 +191,102, 4 +191,103, 4 +191,104, 3 +191,313, -1 +191,320, -2 +191,156, 2 +191,291, 1 +191,295, 1 +192,23, 2 +192,55, 10 +192,56, 1 +192,63, 1 +192,65, 1 +192,67, 2 +192,177, 3 +192,197, 4 +192,287, 1 +193,44, 2 +193,55, 1 +193,56, 17 +193,61, 1 +193,63, 1 +193,64, 1 +193,66, 1 +193,67, 2 +193,114, 1 +193,170, 1 +193,171, 1 +193,178, 4 +193,198, 4 +193,200, 1 +194,13, 3 +194,21, 1 +194,25, 1 +194,27, 2 +194,59, 1 +194,60, 1 +194,68, 1 +194,69, 2 +194,79, 1 +194,79, 1 +194,110, 1 +194,149, 1 +194,151, 1 +194,153, 1 +194,187, 1 +194,187, 1 +194,195, 3 +194,201, 2 +194,212, 1 +194,215, 1 +194,220, 3 +194,254, 1 +194,256, 1 +194,273, 1 +194,287, 2 +195,12, 3 +195,26, 1 +195,27, 1 +195,60, 2 +195,68, 4 +195,69, 1 +195,69, 1 +195,78, 1 +195,150, 1 +195,152, 1 +195,154, 1 +195,188, 1 +195,188, 1 +195,194, 3 +195,201, 1 +195,219, 4 +195,255, 1 +195,257, 1 +196,5, 1 +196,20, 4 +196,21, 4 +196,52, 1 +196,79, 1 +196,82, 1 +196,82, 1 +196,83, 1 +196,83, 1 +196,84, 1 +196,84, 1 +196,85, 1 +196,85, 1 +196,111, 1 +196,131, 2 +196,132, 1 +196,151, 4 +196,152, 2 +196,152, 1 +196,153, 1 +196,154, 6 +196,185, 10 +196,186, 8 +196,187, 5 +196,188, 4 +196,199, 4 +196,200, 6 +196,213, 2 +196,214, 1 +196,257, 1 +197,13, 1 +197,18, 1 +197,53, 1 +197,54, 2 +197,55, 2 +197,56, 3 +197,59, 2 +197,60, 3 +197,351, 2 +197,375, 2 +197,187, 1 +197,202, 1 +197,207, 1 +197,208, 1 +197,216, 1 +197,222, 1 +197,223, 3 +197,224, 2 +197,243, 5 +197,244, 1 +198,1, 1 +198,12, 4 +198,12, 1 +198,19, 1 +198,53, 2 +198,53, 3 +198,54, 1 +198,55, 2 +198,56, 5 +198,59, 3 +198,60, 2 +198,66, 1 +198,68, 1 +198,304, 1 +198,306, 1 +198,328, 1 +198,330, 1 +198,188, 1 +198,202, 1 +198,202, 1 +198,207, 3 +198,208, 1 +198,215, 1 +198,216, 1 +198,223, 3 +198,224, 3 +198,242, 2 +198,243, 4 +199,151, 1 +199,152, 1 +199,211, 1 +200,151, 1 +200,152, 1 +200,211, 1 +201,9, 1 +201,20, 3 +201,21, 5 +201,51, 1 +201,75, 1 +201,78, 1 +201,79, 1 +201,79, 1 +201,108, 2 +201,113, 1 +201,177, 1 +201,185, 5 +201,186, 1 +201,194, 1 +201,252, 5 +201,253, 1 +202,13, 1 +202,59, 7 +202,60, 7 +202,66, 1 +202,68, 1 +202,69, 4 +202,70, 2 +202,83, 1 +202,84, 2 +202,85, 1 +202,95, 1 +202,150, 1 +202,187, 3 +202,188, 5 +202,197, 1 +202,197, 1 +202,198, 4 +202,198, 1 +202,205, 1 +202,207, 2 +202,208, 4 +202,242, 1 +202,243, 2 +202,243, 1 +202,244, 1 +202,245, 1 +202,257, 1 +203,12, 1 +203,375, -1 +203,376, -1 +203,378, -2 +203,185, 1 +203,186, 1 +203,204, 2 +203,207, 2 +203,222, 3 +203,229, 2 +203,233, 2 +203,243, 1 +203,244, 1 +204,13, 1 +204,328, -1 +204,329, -1 +204,331, -1 +204,374, -1 +204,376, -1 +204,185, 2 +204,186, 1 +204,203, 2 +204,205, 1 +204,208, 1 +204,210, 1 +204,214, 1 +204,221, 2 +204,229, 2 +204,232, 2 +204,242, 2 +204,245, 2 +204,245, 2 +205,347, 1 +205,348, 1 +205,349, 1 +205,350, 1 +205,354, 2 +205,371, 1 +205,153, 1 +205,207, 1 +205,209, 1 +205,210, 7 +205,242, 1 +206,300, 1 +206,301, 1 +206,302, 2 +206,303, 1 +206,350, 1 +206,371, 1 +206,372, 1 +206,154, 1 +206,209, 12 +206,210, 1 +206,222, 1 +206,243, 1 +206,254, 1 +207,302, 1 +207,304, 2 +207,347, 1 +207,349, 1 +207,324, 1 +207,371, 1 +207,373, 1 +207,375, 2 +207,377, 1 +207,150, 2 +207,185, 4 +207,186, 3 +207,205, 1 +207,206, 1 +207,208, 3 +207,209, 1 +207,213, 1 +207,215, 1 +208,68, 1 +208,302, 1 +208,304, 1 +208,351, 1 +208,326, 1 +208,328, 1 +208,185, 3 +208,186, 7 +208,198, 2 +208,202, 1 +208,205, 1 +208,207, 1 +208,210, 1 +209,60, 1 +209,347, 1 +209,327, 1 +209,371, 1 +209,372, 1 +209,373, 1 +209,374, 1 +209,375, 1 +209,376, 1 +209,378, 1 +209,151, 1 +209,205, 1 +209,206, 6 +209,207, 1 +209,210, 1 +209,223, 1 +209,244, 1 +210,59, 1 +210,60, 1 +210,300, 1 +210,324, 1 +210,325, 1 +210,326, 1 +210,327, 1 +210,328, 1 +210,329, 1 +210,331, 1 +210,374, 1 +210,376, 1 +210,378, 1 +210,152, 1 +210,205, 4 +210,206, 1 +210,208, 1 +210,209, 1 +210,224, 1 +210,235, 1 +210,237, 1 +210,245, 1 +211,127, 1 +211,325, -2 +211,327, -2 +211,329, -2 +211,372, -2 +211,374, -2 +211,187, 1 +211,188, 1 +211,199, 1 +211,200, 1 +211,214, 2 +212,347, -3 +212,349, -3 +212,371, -3 +212,373, -3 +212,194, 1 +212,214, 1 +213,300, -5 +213,302, -5 +213,324, -5 +213,214, 1 +214,59, 1 +214,60, 1 +214,123, 1 +214,124, 1 +214,301, -1 +214,303, -1 +214,305, -1 +214,348, -1 +214,350, -1 +214,211, 2 +214,212, 1 +214,213, 1 +214,243, 1 +215,68, 4 +215,69, 4 +215,349, 1 +215,371, 1 +215,373, 1 +215,182, 1 +215,195, 1 +215,208, 3 +215,218, 1 +215,251, 1 +216,68, 3 +216,69, 3 +216,207, 2 +217,0, 1 +217,6, 1 +217,13, 1 +217,23, 1 +217,25, 1 +217,43, 1 +217,43, 1 +217,49, 1 +217,53, 1 +217,56, 2 +217,59, 2 +217,74, 1 +217,82, 1 +217,131, 1 +217,304, 2 +217,328, 2 +217,191, 1 +217,207, 1 +217,208, 3 +217,209, 3 +217,219, 3 +217,220, 1 +217,232, 1 +217,236, 2 +217,237, 1 +217,240, 1 +217,252, 1 +217,252, 1 +218,1, 1 +218,15, 1 +218,26, 1 +218,44, 1 +218,44, 1 +218,50, 1 +218,54, 1 +218,56, 1 +218,57, 1 +218,60, 3 +218,66, 1 +218,75, 1 +218,132, 1 +218,351, 1 +218,375, 1 +218,377, 1 +218,201, 1 +218,207, 4 +218,208, 2 +218,210, 5 +218,220, 1 +218,253, 1 +218,253, 1 +219,347, 2 +219,349, 3 +219,371, 2 +219,208, 1 +219,217, 3 +219,237, 1 +220,300, 2 +220,302, 2 +220,304, 2 +220,324, 2 +220,213, 1 +220,217, 1 +220,218, 1 +221,12, 1 +221,53, 6 +221,197, 3 +221,198, 6 +221,218, 1 +221,238, 1 +222,13, 1 +222,54, 3 +222,149, 1 +222,197, 4 +222,198, 5 +222,206, 1 +222,215, 1 +222,217, 1 +223,12, 1 +223,25, 1 +223,53, 16 +223,150, 1 +223,197, 2 +223,198, 12 +223,209, 1 +223,216, 2 +223,241, 3 +223,243, 8 +224,54, 13 +224,197, 5 +224,198, 2 +224,210, 1 +224,240, 2 +224,242, 6 +225,53, 4 +225,262, 1 +225,262, 3 +225,263, 2 +225,264, 1 +226,54, 3 +226,86, 2 +226,87, 1 +227,53, 1 +227,54, 1 +227,86, 3 +228,23, 2 +228,53, 1 +228,54, 3 +228,59, 1 +228,111, 1 +228,190, 1 +228,202, 3 +228,215, 1 +228,229, 1 +229,6, 1 +229,12, 2 +229,53, 2 +229,53, 1 +229,55, 6 +229,55, 1 +229,56, 4 +229,108, 3 +229,190, 1 +229,203, 2 +229,204, 2 +229,219, 2 +229,220, 1 +229,228, 1 +229,236, 1 +230,187, 1 +231,188, 1 +232,187, 1 +233,188, 1 +234,187, 1 +234,236, 1 +235,14, 1 +235,188, 1 +235,237, 1 +236,55, 1 +236,56, 1 +236,187, 1 +236,229, 1 +236,234, 1 +237,187, 1 +237,188, 1 +237,219, 1 +237,235, 1 +238,54, 1 +238,68, 1 +238,69, 1 +238,347, 2 +238,348, 2 +238,349, 2 +238,350, 2 +238,352, 3 +238,187, 1 +238,211, 3 +238,221, 1 +238,224, 1 +239,25, 1 +239,53, 1 +239,68, 1 +239,69, 2 +239,301, 1 +239,302, 1 +239,303, 1 +239,305, 2 +239,350, 1 +239,354, 1 +239,188, 1 +239,211, 4 +239,223, 3 +240,324, 1 +240,325, 1 +240,326, 1 +240,327, 1 +240,328, 1 +240,329, 1 +240,331, 1 +240,167, 1 +240,214, 5 +240,221, 3 +240,224, 2 +241,68, 1 +241,69, 1 +241,371, 1 +241,372, 1 +241,373, 1 +241,374, 1 +241,376, 1 +241,377, 1 +241,214, 3 +241,222, 4 +241,223, 3 +242,303, 1 +242,305, 1 +242,307, 1 +242,348, 1 +242,349, 1 +242,350, 1 +242,351, 1 +242,352, 1 +242,353, 1 +242,325, 1 +242,327, 1 +242,185, 1 +242,186, 1 +242,187, 1 +242,188, 1 +242,202, 1 +242,205, 1 +242,245, 2 +243,303, 1 +243,304, 1 +243,305, 1 +243,307, 1 +243,350, 1 +243,352, 1 +243,372, 1 +243,185, 2 +243,186, 1 +243,188, 1 +243,202, 1 +243,206, 1 +243,287, 1 +244,326, 1 +244,329, 1 +244,372, 1 +244,373, 1 +244,374, 1 +244,376, 1 +244,181, 1 +244,185, 3 +244,186, 8 +244,188, 2 +244,202, 1 +244,203, 1 +244,203, 1 +244,206, 1 +244,209, 1 +244,243, 4 +244,245, 1 +245,325, 1 +245,326, 1 +245,327, 1 +245,377, 1 +245,185, 7 +245,186, 5 +245,187, 2 +245,204, 1 +245,204, 2 +245,205, 1 +245,210, 1 +245,242, 2 +245,244, 1 +245,270, 1 +246,123, 2 +246,301, 2 +246,302, 2 +246,303, 2 +246,199, 3 +246,212, 1 +247,124, 1 +247,347, 3 +247,348, 2 +247,349, 3 +247,200, 3 +247,210, 1 +247,211, 1 +247,213, 1 +247,255, 1 +248,324, 2 +248,325, 2 +248,326, 3 +248,327, 2 +248,199, 3 +248,212, 1 +248,213, 1 +248,214, 2 +249,126, 1 +249,371, 2 +249,372, 2 +249,373, 2 +249,374, 2 +249,200, 3 +249,209, 1 +249,213, 2 +249,214, 2 +250,55, 1 +250,82, 1 +250,125, 1 +250,151, 1 +250,153, 1 +250,190, 1 +250,206, 1 +250,232, 1 +250,239, 1 +250,252, 2 +251,1, 1 +251,56, 1 +251,83, 1 +251,126, 3 +251,132, 1 +251,152, 1 +251,154, 1 +251,190, 1 +251,207, 1 +251,208, 1 +251,215, 1 +251,233, 2 +251,238, 1 +251,253, 4 +252,43, 1 +252,51, 5 +252,55, 1 +252,59, 4 +252,67, 1 +252,185, 8 +252,189, 1 +252,194, 3 +252,217, 2 +252,217, 1 +253,52, 4 +253,55, 1 +253,56, 2 +253,60, 2 +253,132, 1 +253,154, 1 +253,186, 3 +253,195, 2 +253,200, 3 +253,208, 1 +253,218, 1 +253,218, 1 +253,233, 1 +254,53, 1 +254,60, 2 +254,187, 1 +254,194, 1 +254,206, 4 +254,209, 6 +254,242, 1 +254,243, 1 +255,54, 1 +255,59, 2 +255,60, 2 +255,188, 1 +255,195, 1 +255,205, 3 +255,210, 5 +255,242, 4 +256,54, 1 +256,56, 1 +256,60, 5 +256,127, 1 +256,185, 1 +256,187, 2 +256,194, 1 +256,196, 1 +256,202, 1 +256,205, 4 +256,210, 2 +256,237, 1 +256,245, 4 +257,53, 1 +257,53, 1 +257,59, 6 +257,128, 1 +257,186, 1 +257,188, 1 +257,195, 1 +257,206, 6 +257,209, 4 +257,235, 1 +257,236, 1 +257,244, 3 +258,53, 3 +258,87, 2 +258,102, 9 +258,330, 3 +258,331, 3 +258,377, 3 +258,378, 3 +258,287, 2 +259,53, 1 +259,54, 1 +259,340, 5 +259,341, 5 +259,387, 5 +259,388, 5 +260,53, 1 +260,54, 7 +260,107, 10 +260,342, 5 +260,343, 5 +260,389, 5 +260,390, 5 +260,176, 2 +260,271, 1 +260,290, 4 +261,30, 2 +261,54, 1 +261,93, 3 +261,94, 5 +261,101, 4 +261,107, 2 +261,135, 2 +261,344, 5 +261,345, 5 +261,346, 5 +261,391, 5 +261,392, 5 +261,393, 5 +261,394, 5 +261,163, 1 +261,164, 1 +261,170, 2 +261,171, 3 +261,260, 1 +261,272, 1 +261,290, 3 +261,291, 11 +262,53, 1 +262,53, 4 +262,102, 13 +262,330, 5 +262,333, 5 +262,377, 5 +262,380, 5 +262,225, 3 +262,263, 2 +262,270, 2 +262,287, 2 +262,287, 1 +262,292, 8 +262,292, 3 +263,28, 1 +263,53, 1 +263,54, 2 +263,102, 18 +263,103, 11 +263,332, 5 +263,333, 5 +263,335, 5 +263,379, 5 +263,380, 5 +263,382, 5 +263,225, 2 +263,264, 1 +263,292, 3 +263,293, 3 +264,31, 2 +264,53, 1 +264,54, 3 +264,57, 1 +264,90, 1 +264,103, 21 +264,334, 6 +264,335, 6 +264,381, 6 +264,382, 6 +264,225, 1 +264,274, 2 +264,294, 3 +265,32, 2 +265,53, 5 +265,54, 3 +265,90, 2 +265,103, 5 +265,104, 13 +265,334, 5 +265,337, 5 +265,381, 5 +265,384, 5 +265,295, 2 +266,53, 6 +266,54, 2 +266,104, 24 +266,336, 5 +266,337, 5 +266,383, 5 +266,384, 5 +266,276, 2 +266,295, 1 +266,296, 2 +267,34, 1 +267,53, 2 +267,54, 4 +267,104, 3 +267,105, 12 +267,336, 4 +267,338, 4 +267,339, 4 +267,383, 4 +267,385, 4 +267,386, 4 +267,396, 4 +267,274, 1 +267,297, 9 +268,35, 1 +268,53, 10 +268,54, 4 +268,56, 1 +268,105, 21 +268,338, 6 +268,339, 6 +268,385, 6 +268,386, 6 +268,158, 1 +268,171, 2 +268,268, 1 +268,269, 1 +268,277, 1 +268,279, 1 +268,279, 3 +268,280, 3 +268,297, 5 +268,298, 5 +268,298, 1 +269,53, 1 +269,56, 1 +269,105, 3 +269,106, 15 +269,109, 1 +269,110, 1 +269,338, 5 +269,341, 5 +269,385, 5 +269,388, 5 +269,171, 1 +269,182, 1 +269,279, 6 +269,279, 1 +269,280, 4 +269,297, 1 +269,299, 10 +270,13, 1 +270,55, 1 +270,68, 4 +270,96, 2 +270,102, 1 +270,108, 1 +270,330, 1 +270,331, 1 +270,377, 1 +270,378, 1 +270,197, 2 +270,215, 2 +270,221, 9 +270,222, 2 +270,225, 1 +270,245, 1 +270,258, 3 +270,263, 1 +270,273, 4 +270,287, 3 +270,292, 1 +271,55, 2 +271,56, 1 +271,68, 1 +271,107, 9 +271,342, 5 +271,343, 5 +271,389, 5 +271,390, 5 +271,170, 1 +271,182, 1 +271,289, 1 +271,290, 2 +272,55, 2 +272,56, 1 +272,107, 7 +272,344, 5 +272,345, 5 +272,346, 5 +272,391, 5 +272,392, 5 +272,393, 5 +272,394, 5 +272,171, 1 +272,261, 1 +272,261, 1 +273,55, 3 +273,56, 1 +273,98, 1 +273,102, 20 +273,103, 1 +273,330, 4 +273,332, 4 +273,333, 4 +273,335, 4 +273,377, 4 +273,379, 4 +273,380, 4 +273,382, 4 +273,194, 1 +273,262, 1 +273,270, 4 +273,274, 1 +273,276, 1 +273,278, 2 +273,282, 1 +273,292, 9 +273,293, 3 +274,56, 1 +274,95, 1 +274,103, 37 +274,334, 6 +274,335, 6 +274,337, 6 +274,381, 6 +274,382, 6 +274,384, 6 +274,264, 1 +274,267, 1 +274,273, 1 +275,55, 1 +275,56, 1 +275,95, 1 +275,98, 1 +275,103, 6 +275,104, 16 +275,334, 5 +275,337, 5 +275,381, 5 +275,384, 5 +275,276, 1 +276,55, 1 +276,104, 27 +276,336, 6 +276,337, 6 +276,383, 6 +276,384, 6 +276,273, 1 +276,275, 1 +276,277, 1 +276,296, 7 +277,55, 1 +277,56, 2 +277,89, 1 +277,105, 30 +277,338, 6 +277,339, 6 +277,385, 6 +277,386, 6 +277,396, 6 +277,268, 1 +277,276, 1 +277,278, 1 +277,296, 1 +277,297, 8 +278,55, 2 +278,56, 2 +278,105, 2 +278,338, 5 +278,385, 5 +278,273, 2 +279,55, 7 +279,56, 3 +279,106, 30 +279,340, 5 +279,341, 5 +279,343, 5 +279,387, 5 +279,388, 5 +279,390, 5 +279,268, 3 +279,269, 9 +279,269, 1 +279,280, 3 +279,280, 3 +279,288, 1 +279,299, 10 +280,53, 5 +280,54, 4 +280,55, 1 +280,56, 6 +280,106, 8 +280,109, 1 +280,340, 6 +280,343, 6 +280,387, 6 +280,390, 6 +280,170, 2 +280,268, 3 +280,269, 4 +280,279, 1 +280,279, 3 +280,288, 5 +281,70, 2 +281,102, 7 +281,103, 6 +281,104, 6 +281,110, 1 +281,396, 6 +281,182, 2 +281,282, 3 +281,282, 6 +281,283, 1 +281,283, 2 +281,287, 4 +281,287, 1 +281,292, 1 +281,293, 1 +281,294, 2 +281,295, 5 +281,296, 1 +282,98, 1 +282,102, 6 +282,103, 4 +282,104, 9 +282,110, 1 +282,396, 10 +282,171, 1 +282,180, 1 +282,182, 2 +282,281, 4 +282,281, 6 +282,283, 4 +282,283, 2 +282,287, 2 +282,292, 2 +282,294, 5 +282,295, 5 +282,296, 1 +283,70, 1 +283,102, 2 +283,103, 4 +283,104, 5 +283,105, 12 +283,105, 1 +283,110, 1 +283,114, 1 +283,396, 11 +283,176, 1 +283,178, 1 +283,180, 4 +283,281, 2 +283,281, 2 +283,282, 1 +283,282, 2 +283,284, 1 +283,285, 2 +283,287, 1 +283,292, 1 +283,293, 1 +283,294, 2 +283,295, 4 +283,296, 4 +283,297, 5 +284,55, 1 +284,62, 1 +284,65, 1 +284,396, 7 +284,281, 1 +284,283, 4 +284,283, 1 +284,285, 1 +284,285, 1 +285,61, 1 +285,62, 1 +285,110, 2 +285,113, 1 +285,396, 2 +285,150, 1 +285,182, 1 +285,250, 3 +285,283, 1 +285,283, 2 +285,284, 1 +285,284, 1 +286,396, 1 +287,102, 1 +287,102, 4 +287,110, 5 +287,328, -3 +287,331, -3 +287,375, -3 +287,378, -3 +287,192, 1 +287,194, 2 +287,243, 1 +287,258, 2 +287,262, 1 +287,281, 1 +287,292, 7 +288,56, 1 +288,106, 1 +288,106, 1 +288,110, 4 +288,340, -6 +288,343, -6 +288,387, -6 +288,390, -6 +288,280, 2 +288,299, 5 +289,54, 2 +289,342, -6 +289,343, -6 +289,389, -6 +289,390, -6 +289,260, 1 +289,271, 1 +290,342, -3 +290,344, -3 +290,389, -3 +290,392, -3 +290,260, 3 +290,261, 2 +290,271, 1 +290,272, 1 +291,54, 2 +291,344, -6 +291,345, -6 +291,346, -6 +291,391, -6 +291,392, -6 +291,393, -6 +291,394, -6 +291,170, 1 +291,171, 1 +291,177, 2 +291,261, 1 +292,28, 1 +292,102, 1 +292,102, 2 +292,330, -5 +292,333, -5 +292,377, -5 +292,380, -5 +292,262, 6 +292,262, 3 +292,273, 3 +292,287, 7 +292,293, 2 +293,332, -5 +293,335, -6 +293,379, -5 +293,382, -5 +293,177, 1 +293,263, 2 +293,273, 2 +293,292, 2 +293,294, 1 +294,103, 2 +294,334, -6 +294,335, -6 +294,381, -6 +294,382, -6 +294,178, 1 +294,293, 1 +294,295, 1 +295,54, 1 +295,337, -13 +295,384, -13 +295,178, 1 +295,265, 2 +295,275, 2 +295,294, 1 +295,296, 2 +296,53, 1 +296,336, -5 +296,337, -5 +296,339, -5 +296,383, -5 +296,384, -5 +296,386, -5 +296,266, 1 +296,276, 2 +296,295, 2 +296,297, 1 +297,338, -5 +297,339, -5 +297,385, -5 +297,386, -5 +297,396, -5 +297,269, 1 +297,296, 1 +298,105, 1 +298,105, 1 +298,338, -12 +298,385, -12 +298,268, 4 +298,268, 1 +299,340, -7 +299,341, -7 +299,387, -7 +299,388, -7 +299,158, 1 +299,288, 5 diff --git a/src/models/d.txt b/src/models/d.txt new file mode 100644 index 0000000..f85529a --- /dev/null +++ b/src/models/d.txt @@ -0,0 +1,397 @@ +ADAL 0 +ADAR 1 +ADEL 2 +ADER 3 +ADFL 4 +ADFR 5 +ADLL 6 +ADLR 7 +AFDL 8 +AFDR 9 +AIAL 10 +AIAR 11 +AIBL 12 +AIBR 13 +AIML 14 +AIMR 15 +AINL 16 +AINR 17 +AIYL 18 +AIYR 19 +AIZL 20 +AIZR 21 +ALA 22 +ALML 23 +ALMR 24 +ALNL 25 +ALNR 26 +AQR 27 +AS1 28 +AS10 29 +AS11 30 +AS2 31 +AS3 32 +AS4 33 +AS5 34 +AS6 35 +AS7 36 +AS8 37 +AS9 38 +ASEL 39 +ASER 40 +ASGL 41 +ASGR 42 +ASHL 43 +ASHR 44 +ASIL 45 +ASIR 46 +ASJL 47 +ASJR 48 +ASKL 49 +ASKR 50 +AUAL 51 +AUAR 52 +AVAL 53 +AVAR 54 +AVBL 55 +AVBR 56 +AVDL 57 +AVDR 58 +AVEL 59 +AVER 60 +AVFL 61 +AVFR 62 +AVG 63 +AVHL 64 +AVHR 65 +AVJL 66 +AVJR 67 +AVKL 68 +AVKR 69 +AVL 70 +AVM 71 +AWAL 72 +AWAR 73 +AWBL 74 +AWBR 75 +AWCL 76 +AWCR 77 +BAGL 78 +BAGR 79 +BDUL 80 +BDUR 81 +CEPDL 82 +CEPDR 83 +CEPVL 84 +CEPVR 85 +DA1 86 +DA2 87 +DA3 88 +DA4 89 +DA5 90 +DA6 91 +DA7 92 +DA8 93 +DA9 94 +DB1 95 +DB2 96 +DB3 97 +DB4 98 +DB5 99 +DB6 100 +DB7 101 +DD1 102 +DD2 103 +DD3 104 +DD4 105 +DD5 106 +DD6 107 +DVA 108 +DVB 109 +DVC 110 +FLPL 111 +FLPR 112 +HSNL 113 +HSNR 114 +I1L 115 +I1R 116 +I2L 117 +I2R 118 +I3 119 +I4 120 +I5 121 +I6 122 +IL1DL 123 +IL1DR 124 +IL1L 125 +IL1R 126 +IL1VL 127 +IL1VR 128 +IL2DL 129 +IL2DR 130 +IL2L 131 +IL2R 132 +IL2VL 133 +IL2VR 134 +LUAL 135 +LUAR 136 +M1 137 +M2L 138 +M2R 139 +M3L 140 +M3R 141 +M4 142 +M5 143 +MCL 144 +MCR 145 +MI 146 +NSML 147 +NSMR 148 +OLLL 149 +OLLR 150 +OLQDL 151 +OLQDR 152 +OLQVL 153 +OLQVR 154 +PDA 155 +PDB 156 +PDEL 157 +PDER 158 +PHAL 159 +PHAR 160 +PHBL 161 +PHBR 162 +PHCL 163 +PHCR 164 +PLML 165 +PLMR 166 +PLNL 167 +PLNR 168 +PQR 169 +PVCL 170 +PVCR 171 +PVDL 172 +PVDR 173 +PVM 174 +PVNL 175 +PVNR 176 +PVPL 177 +PVPR 178 +PVQL 179 +PVQR 180 +PVR 181 +PVT 182 +PVWL 183 +PVWR 184 +RIAL 185 +RIAR 186 +RIBL 187 +RIBR 188 +RICL 189 +RICR 190 +RID 191 +RIFL 192 +RIFR 193 +RIGL 194 +RIGR 195 +RIH 196 +RIML 197 +RIMR 198 +RIPL 199 +RIPR 200 +RIR 201 +RIS 202 +RIVL 203 +RIVR 204 +RMDDL 205 +RMDDR 206 +RMDL 207 +RMDR 208 +RMDVL 209 +RMDVR 210 +RMED 211 +RMEL 212 +RMER 213 +RMEV 214 +RMFL 215 +RMFR 216 +RMGL 217 +RMGR 218 +RMHL 219 +RMHR 220 +SAADL 221 +SAADR 222 +SAAVL 223 +SAAVR 224 +SABD 225 +SABVL 226 +SABVR 227 +SDQL 228 +SDQR 229 +SIADL 230 +SIADR 231 +SIAVL 232 +SIAVR 233 +SIBDL 234 +SIBDR 235 +SIBVL 236 +SIBVR 237 +SMBDL 238 +SMBDR 239 +SMBVL 240 +SMBVR 241 +SMDDL 242 +SMDDR 243 +SMDVL 244 +SMDVR 245 +URADL 246 +URADR 247 +URAVL 248 +URAVR 249 +URBL 250 +URBR 251 +URXL 252 +URXR 253 +URYDL 254 +URYDR 255 +URYVL 256 +URYVR 257 +VA1 258 +VA10 259 +VA11 260 +VA12 261 +VA2 262 +VA3 263 +VA4 264 +VA5 265 +VA6 266 +VA7 267 +VA8 268 +VA9 269 +VB1 270 +VB10 271 +VB11 272 +VB2 273 +VB3 274 +VB4 275 +VB5 276 +VB6 277 +VB7 278 +VB8 279 +VB9 280 +VC1 281 +VC2 282 +VC3 283 +VC4 284 +VC5 285 +VC6 286 +VD1 287 +VD10 288 +VD11 289 +VD12 290 +VD13 291 +VD2 292 +VD3 293 +VD4 294 +VD5 295 +VD6 296 +VD7 297 +VD8 298 +VD9 299 +MDL01 300 +MDL02 301 +MDL03 302 +MDL04 303 +MDL05 304 +MDL06 305 +MDL07 306 +MDL08 307 +MDL09 308 +MDL10 309 +MDL11 310 +MDL12 311 +MDL13 312 +MDL14 313 +MDL15 314 +MDL16 315 +MDL17 316 +MDL18 317 +MDL19 318 +MDL20 319 +MDL21 320 +MDL22 321 +MDL23 322 +MDL24 323 +MVL01 324 +MVL02 325 +MVL03 326 +MVL04 327 +MVL05 328 +MVL06 329 +MVL07 330 +MVL08 331 +MVL09 332 +MVL10 333 +MVL11 334 +MVL12 335 +MVL13 336 +MVL14 337 +MVL15 338 +MVL16 339 +MVL17 340 +MVL18 341 +MVL19 342 +MVL20 343 +MVL21 344 +MVL22 345 +MVL23 346 +MDR01 347 +MDR02 348 +MDR03 349 +MDR04 350 +MDR05 351 +MDR06 352 +MDR07 353 +MDR08 354 +MDR09 355 +MDR10 356 +MDR11 357 +MDR12 358 +MDR13 359 +MDR14 360 +MDR15 361 +MDR16 362 +MDR17 363 +MDR18 364 +MDR19 365 +MDR20 366 +MDR21 367 +MDR22 368 +MDR23 369 +MDR24 370 +MVR01 371 +MVR02 372 +MVR03 373 +MVR04 374 +MVR05 375 +MVR06 376 +MVR07 377 +MVR08 378 +MVR09 379 +MVR10 380 +MVR11 381 +MVR12 382 +MVR13 383 +MVR14 384 +MVR15 385 +MVR16 386 +MVR17 387 +MVR18 388 +MVR19 389 +MVR20 390 +MVR21 391 +MVR22 392 +MVR23 393 +MVR24 394 +MANAL 395 +MVULVA 396 diff --git a/src/models/pp.rb b/src/models/pp.rb new file mode 100644 index 0000000..2de8d3f --- /dev/null +++ b/src/models/pp.rb @@ -0,0 +1,12 @@ +f = File.open("d.txt", "r").read +d = File.open("conn.txt", "r").read +f.each_line do |line| + name = line.split(" ")[0] + val = line.split(" ")[1] + + #puts "#{name} #{val}" + d.gsub!(/, #{name},/,","+val+",") + d.gsub!(/^#{name},/,val+",") +end +puts d +File.open("dd.txt", "w") {|file| file.puts d} diff --git a/src/util.c b/src/util.c index 14a076f..eb1e4e8 100644 --- a/src/util.c +++ b/src/util.c @@ -94,3 +94,26 @@ int cbrain_print(int level, const char* str, ...) } return 0; } + +struct brain* parse_model_csv(char* file) +{ + struct brain* b = brain_init(500); + FILE* f = fopen(file, "r"); + if (f == NULL) { + printf("failed to load file %s\n", file); + exit(1); + } + char line[64]; + + while (fgets(line, sizeof(line), f)) { + char* token = strtok(line, "£"); + int src = atoi(strtok(line, ",")); + int dst = atoi(strtok(NULL, ",")); + int wt = atoi(strtok(NULL, ",")); + cbrain_print(1, "adding neuron link %d -> %d : %d\n", src, dst, wt); + neuron_link(b->neurons[src], b->neurons[dst], wt); + token++; + } + fclose(f); + return b; +}