[llvm-commits] [test-suite] r46444 - in /test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url: ./ Makefile headers.h medium_inputs packet.c packet.h packet_lengths.h search.c search.h url.c url.h utils.c utils.h

Chris Lattner sabre at nondot.org
Sun Jan 27 23:09:41 PST 2008


Author: lattner
Date: Mon Jan 28 01:09:41 2008
New Revision: 46444

URL: http://llvm.org/viewvc/llvm-project?rev=46444&view=rev
Log:
Add another program.  This seems to be miscompiled by llc.

Added:
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c
    test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile Mon Jan 28 01:09:41 2008
@@ -0,0 +1,14 @@
+LEVEL = ../../../..
+
+PROG     = netbench-url
+ifdef LARGE_PROBLEM_SIZE
+RUN_OPTIONS = $(PROJ_SRC_DIR)/medium_inputs 1400
+else
+ifdef SMALL_PROBLEM_SIZE
+RUN_OPTIONS = $(PROJ_SRC_DIR)/medium_inputs 100
+else
+RUN_OPTIONS = $(PROJ_SRC_DIR)/medium_inputs 900
+endif
+endif
+include $(LEVEL)/MultiSource/Makefile.multisrc
+

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,102 @@
+unsigned char headers[100][36] = { 
+{69, 0, 0, 60, 237, 188, 64, 0, 125, 6, 95, 223, 0, 1, 0, 1, 0, 2, 0, 1, 26, 32, 5, 119, 2, 141, 165, 39, 0, 0, 222, 220, 80, 24, 33, 209}, 
+{0, 114, 6, 43, 148, 0, 3, 0, 1, 0, 4, 0, 1, 11, 117, 24, 202, 0, 113, 219, 105, 32, 225, 253, 125, 80, 24, 31, 39, 58, 164, 222, 138, 1, 0, 162}, 
+{5, 0, 1, 18, 29, 26, 43, 14, 223, 211, 56, 0, 0, 228, 228, 80, 24, 254, 254, 58, 164, 222, 138, 1, 0, 164, 173, 69, 0, 0, 77, 18, 227, 64, 0, 123}, 
+{113, 220, 37, 80, 24, 63, 8, 58, 164, 222, 138, 2, 0, 166, 50, 69, 0, 0, 52, 156, 53, 64, 0, 122, 6, 12, 247, 0, 6, 0, 1, 0, 1, 0, 3, 5}, 
+{222, 138, 1, 0, 168, 49, 69, 0, 0, 74, 18, 228, 64, 0, 123, 6, 106, 136, 0, 4, 0, 1, 0, 7, 0, 1, 4, 139, 24, 202, 103, 113, 237, 12, 65, 209}, 
+{0, 5, 220, 142, 37, 64, 0, 124, 6, 117, 154, 0, 8, 0, 1, 0, 9, 0, 1, 26, 32, 13, 30, 132, 240, 181, 176, 41, 224, 24, 115, 128, 24, 68, 32, 58}, 
+{17, 6, 104, 0, 10, 0, 1, 0, 1, 0, 4, 105, 135, 105, 125, 0, 65, 19, 197, 58, 164, 222, 138, 2, 0, 173, 39, 58, 164, 222, 138, 1, 0, 174, 116, 69}, 
+{1, 0, 1, 0, 2, 0, 1, 26, 32, 5, 119, 2, 141, 165, 59, 0, 0, 222, 220, 80, 16, 33, 209, 58, 164, 222, 138, 1, 0, 174, 206, 69, 0, 5, 220, 142}, 
+{0, 1, 26, 32, 13, 30, 132, 240, 187, 88, 41, 224, 24, 115, 128, 16, 68, 32, 58, 164, 222, 138, 1, 0, 175, 149, 69, 0, 5, 220, 35, 112, 64, 0, 124, 6}, 
+{152, 99, 253, 0, 10, 2, 208, 80, 24, 33, 224, 58, 164, 222, 138, 1, 0, 176, 35, 69, 0, 2, 116, 239, 188, 64, 0, 125, 6, 91, 167, 0, 1, 0, 1, 0}, 
+{209, 58, 164, 222, 138, 2, 0, 176, 211, 69, 0, 0, 44, 89, 100, 64, 0, 121, 6, 170, 184, 0, 11, 0, 1, 0, 8, 0, 2, 0, 80, 5, 233, 133, 234, 167}, 
+{123, 6, 200, 231, 0, 8, 0, 2, 0, 11, 0, 1, 5, 233, 0, 80, 114, 12, 101, 163, 133, 234, 167, 179, 80, 16, 68, 112, 58, 164, 222, 138, 2, 0, 183, 194}, 
+{4, 0, 2, 26, 43, 193, 37, 1, 33, 115, 32, 26, 142, 226, 221, 80, 16, 254, 177, 58, 164, 222, 138, 1, 0, 184, 183, 69, 0, 5, 220, 98, 25, 64, 0, 124}, 
+{4, 198, 11, 125, 80, 16, 68, 112, 58, 164, 222, 138, 2, 0, 185, 228, 69, 0, 5, 220, 158, 203, 64, 0, 120, 6, 11, 223, 0, 12, 0, 1, 0, 4, 0, 2}, 
+{64, 0, 124, 6, 10, 243, 0, 1, 0, 5, 0, 13, 0, 1, 39, 14, 5, 254, 31, 143, 191, 155, 4, 198, 11, 125, 80, 24, 68, 112, 58, 164, 222, 138, 2, 0}, 
+{0, 2, 26, 43, 193, 37, 1, 33, 126, 136, 26, 142, 226, 221, 80, 24, 254, 177, 58, 164, 222, 138, 1, 0, 188, 136, 69, 0, 1, 98, 57, 58, 64, 0, 123, 6}, 
+{68, 112, 58, 164, 222, 138, 2, 0, 189, 229, 69, 16, 0, 120, 176, 81, 64, 0, 119, 6, 1, 133, 0, 14, 0, 1, 0, 8, 0, 3, 9, 196, 0, 25, 0, 159}, 
+{0, 192, 67, 69, 0, 0, 40, 17, 198, 64, 0, 122, 6, 19, 112, 0, 15, 0, 1, 0, 1, 0, 6, 4, 123, 18, 116, 1, 247, 207, 93, 231, 52, 1, 202, 80}, 
+{27, 64, 0, 124, 6, 8, 186, 0, 1, 0, 5, 0, 13, 0, 1, 39, 14, 5, 254, 31, 143, 195, 23, 4, 198, 11, 125, 80, 16, 68, 112, 58, 164, 222, 138, 1}, 
+{100, 1, 25, 65, 154, 24, 163, 112, 193, 80, 16, 34, 56, 58, 164, 222, 138, 1, 0, 204, 92, 69, 0, 5, 220, 188, 11, 64, 0, 125, 6, 96, 118, 0, 1, 0}, 
+{202, 1, 247, 207, 93, 80, 16, 68, 112, 58, 164, 222, 138, 1, 0, 205, 79, 69, 0, 5, 140, 187, 144, 64, 0, 125, 6, 24, 189, 0, 1, 0, 9, 0, 18, 0}, 
+{58, 164, 222, 138, 1, 0, 207, 51, 69, 0, 3, 164, 188, 12, 64, 0, 125, 6, 98, 173, 0, 1, 0, 6, 0, 15, 0, 1, 18, 116, 4, 123, 231, 52, 7, 126}, 
+{69, 0, 0, 40, 79, 64, 64, 0, 249, 6, 224, 29, 0, 4, 0, 2, 0, 12, 0, 1, 193, 37, 26, 43, 26, 142, 226, 221, 1, 33, 126, 136, 80, 16, 128, 0}, 
+{155, 0, 1, 0, 8, 0, 17, 0, 1, 4, 100, 26, 43, 24, 163, 118, 117, 1, 25, 65, 154, 80, 24, 254, 254, 58, 164, 222, 138, 1, 0, 213, 55, 69, 0, 5}, 
+{26, 43, 24, 163, 124, 41, 1, 25, 65, 154, 80, 24, 254, 254, 58, 164, 222, 138, 1, 0, 218, 4, 69, 0, 5, 220, 216, 118, 64, 0, 125, 6, 214, 155, 0, 1}, 
+{154, 80, 16, 254, 254, 58, 164, 222, 138, 1, 0, 226, 23, 69, 0, 0, 40, 104, 223, 64, 0, 56, 6, 142, 34, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238}, 
+{171, 64, 0, 118, 6, 60, 191, 0, 21, 0, 1, 0, 1, 0, 10, 241, 12, 206, 190, 129, 60, 126, 158, 251, 108, 252, 146, 128, 16, 68, 112, 58, 164, 222, 138, 2}, 
+{43, 193, 38, 1, 17, 190, 172, 26, 213, 223, 111, 80, 16, 254, 164, 58, 164, 222, 138, 2, 0, 244, 249, 69, 0, 0, 40, 116, 185, 64, 0, 117, 6, 235, 32, 0}, 
+{29, 160, 58, 164, 222, 138, 1, 0, 245, 184, 69, 0, 0, 40, 79, 65, 64, 0, 249, 6, 224, 28, 0, 4, 0, 2, 0, 12, 0, 1, 193, 36, 26, 43, 26, 104}, 
+{0, 5, 220, 161, 203, 64, 0, 120, 6, 8, 223, 0, 12, 0, 1, 0, 4, 0, 2, 26, 43, 193, 38, 1, 17, 196, 96, 26, 213, 223, 111, 80, 16, 254, 164, 58}, 
+{20, 26, 213, 223, 111, 80, 24, 254, 164, 58, 164, 222, 138, 2, 0, 250, 219, 69, 0, 0, 40, 18, 198, 64, 0, 122, 6, 18, 112, 0, 15, 0, 1, 0, 1, 0}, 
+{33, 64, 0, 61, 6, 109, 215, 0, 8, 0, 3, 0, 14, 0, 1, 0, 25, 9, 196, 30, 152, 194, 61, 0, 159, 146, 4, 80, 24, 96, 244, 58, 164, 222, 138, 2}, 
+{169, 0, 23, 0, 1, 0, 1, 0, 11, 0, 20, 7, 47, 9, 177, 105, 101, 2, 25, 246, 43, 128, 16, 68, 112, 58, 164, 222, 138, 1, 1, 6, 238, 69, 0, 5}, 
+{1, 18, 116, 4, 123, 231, 52, 10, 250, 1, 247, 207, 93, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 8, 80, 69, 0, 0, 40, 79, 66, 64, 0, 249, 6, 224}, 
+{20, 80, 16, 128, 0, 58, 164, 222, 138, 2, 1, 9, 40, 69, 0, 0, 40, 27, 226, 64, 0, 120, 6, 163, 224, 0, 24, 0, 1, 0, 4, 0, 3, 8, 154, 0}, 
+{138, 2, 1, 11, 15, 69, 0, 0, 52, 121, 162, 64, 0, 120, 6, 217, 168, 0, 23, 0, 1, 0, 1, 0, 11, 0, 20, 7, 47, 9, 177, 105, 101, 2, 25, 246}, 
+{69, 0, 0, 52, 84, 91, 64, 0, 120, 6, 127, 8, 0, 25, 0, 1, 0, 1, 0, 11, 0, 20, 7, 44, 109, 47, 0, 51, 2, 142, 167, 191, 128, 16, 68, 112}, 
+{0, 0, 143, 91, 251, 64, 0, 123, 6, 33, 44, 0, 7, 0, 1, 0, 4, 0, 1, 24, 202, 4, 139, 65, 209, 165, 21, 103, 113, 237, 46, 80, 24, 199, 50, 58}, 
+{1, 0, 6, 0, 15, 0, 1, 18, 116, 4, 123, 231, 52, 16, 174, 1, 247, 207, 93, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 17, 216, 69, 0, 5, 220, 68}, 
+{47, 0, 20, 2, 25, 246, 43, 9, 177, 105, 101, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 17, 254, 69, 0, 0, 40, 84, 92, 64, 0, 120, 6, 127, 19, 0}, 
+{219, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 20, 9, 69, 0, 0, 77, 18, 229, 64, 0, 123, 6, 106, 132, 0, 4, 0, 1, 0, 7, 0, 1, 4, 139, 24}, 
+{138, 2, 1, 20, 32, 69, 0, 0, 40, 195, 62, 64, 0, 117, 6, 196, 230, 0, 26, 0, 1, 0, 19, 0, 2, 7, 172, 0, 80, 17, 201, 176, 102, 125, 36, 102}, 
+{0, 1, 7, 47, 0, 20, 2, 26, 7, 71, 9, 177, 105, 101, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 24, 223, 69, 0, 0, 40, 229, 133, 64, 0, 116, 6}, 
+{32, 164, 222, 185, 140, 4, 58, 123, 13, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 29, 7, 69, 0, 5, 220, 70, 35, 64, 0, 125, 6, 130, 152, 0, 1, 0}, 
+{184, 219, 109, 47, 0, 51, 80, 24, 34, 56, 58, 164, 222, 138, 1, 1, 33, 141, 69, 0, 5, 220, 151, 94, 64, 0, 124, 6, 29, 148, 0, 1, 0, 13, 0, 28}, 
+{222, 185, 140, 80, 24, 33, 244, 58, 164, 222, 138, 1, 1, 33, 248, 69, 0, 5, 220, 71, 35, 64, 0, 125, 6, 129, 152, 0, 1, 0, 11, 0, 25, 0, 1, 7}, 
+{164, 222, 138, 2, 1, 35, 49, 69, 0, 0, 52, 61, 212, 64, 0, 116, 6, 159, 215, 0, 29, 0, 1, 0, 1, 0, 14, 26, 43, 15, 153, 212, 127, 67, 47, 61}, 
+{38, 69, 69, 0, 5, 220, 152, 94, 64, 0, 124, 6, 28, 148, 0, 1, 0, 13, 0, 28, 0, 1, 26, 32, 7, 119, 4, 58, 128, 193, 164, 222, 185, 140, 80, 16}, 
+{33, 64, 0, 124, 6, 20, 226, 0, 1, 0, 14, 0, 29, 0, 1, 15, 153, 26, 43, 61, 68, 188, 54, 212, 127, 67, 47, 80, 24, 34, 54, 58, 164, 222, 138, 1}, 
+{1, 0, 8, 0, 4, 15, 139, 26, 32, 0, 149, 18, 41, 4, 66, 205, 224, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 55, 121, 69, 0, 5, 220, 11, 70, 64}, 
+{97, 4, 75, 182, 240, 255, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 56, 21, 69, 0, 5, 220, 11, 71, 64, 0, 249, 6, 37, 6, 0, 20}, 
+{2, 1, 56, 252, 69, 0, 5, 220, 11, 72, 64, 0, 249, 6, 37, 5, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 182, 252, 103, 39, 105, 222, 147}, 
+{4, 0, 31, 0, 1, 26, 32, 15, 139, 4, 66, 205, 224, 0, 149, 18, 41, 80, 24, 33, 234, 58, 164, 222, 138, 2, 1, 57, 181, 69, 0, 5, 220, 11, 73, 64}, 
+{75, 183, 2, 27, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 58, 106, 69, 0, 5, 220, 11, 74, 64, 0, 249, 6, 37, 3, 0, 20, 0, 1}, 
+{56, 58, 164, 222, 138, 2, 1, 58, 242, 69, 0, 5, 220, 11, 75, 64, 0, 249, 6, 37, 2, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 13}, 
+{64, 0, 249, 6, 37, 1, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 19, 55, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 2, 1}, 
+{24, 34, 56, 58, 164, 222, 138, 2, 1, 60, 217, 69, 0, 5, 220, 11, 79, 64, 0, 249, 6, 36, 254, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75}, 
+{69, 0, 5, 220, 11, 80, 64, 0, 249, 6, 36, 253, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 42, 7, 39, 105, 222, 147, 80, 24, 34, 56}, 
+{1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 47, 187, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 62, 138, 69, 0, 0, 52, 19, 198, 64}, 
+{1, 247, 207, 93, 231, 52, 10, 250, 128, 16, 34, 56, 58, 164, 222, 138, 1, 1, 62, 191, 69, 0, 5, 220, 220, 107, 64, 0, 124, 6, 74, 24, 0, 8, 0, 4}, 
+{16, 33, 234, 58, 164, 222, 138, 2, 1, 63, 52, 69, 0, 5, 220, 11, 82, 64, 0, 249, 6, 36, 251, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75}, 
+{0, 5, 220, 142, 200, 64, 0, 252, 6, 177, 36, 0, 8, 0, 5, 0, 32, 0, 1, 201, 148, 0, 119, 225, 31, 71, 114, 81, 1, 252, 37, 80, 16, 34, 56, 58}, 
+{31, 77, 38, 81, 1, 252, 37, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 65, 4, 69, 0, 0, 52, 86, 7, 64, 0, 53, 6, 182, 104, 0, 33, 0, 1, 0}, 
+{112, 58, 164, 222, 138, 2, 1, 67, 146, 69, 0, 0, 40, 211, 16, 64, 0, 120, 6, 144, 214, 0, 34, 0, 1, 0, 1, 0, 16, 8, 110, 160, 230, 0, 93, 217}, 
+{104, 228, 64, 0, 56, 6, 142, 29, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 182, 252, 103, 80, 16, 192, 0, 58, 164, 222, 138}, 
+{22, 0, 2, 39, 14, 4, 141, 157, 116, 105, 70, 1, 152, 6, 61, 80, 24, 68, 112, 58, 164, 222, 138, 2, 1, 72, 231, 69, 0, 0, 40, 228, 156, 64, 0, 253}, 
+{94, 66, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 73, 45, 69, 0, 0, 40, 104, 230, 64, 0, 56, 6, 142, 27, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4}, 
+{69, 0, 0, 40, 117, 185, 64, 0, 117, 6, 234, 32, 0, 22, 0, 1, 0, 1, 0, 5, 7, 172, 39, 14, 0, 97, 50, 3, 57, 236, 31, 43, 80, 16, 34, 56}, 
+{64, 0, 56, 6, 142, 26, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 183, 19, 55, 80, 16, 192, 0, 58, 164, 222, 138, 2, 1}, 
+{179, 114, 12, 102, 221, 80, 24, 32, 254, 58, 164, 222, 138, 2, 1, 74, 8, 69, 0, 0, 40, 228, 157, 64, 0, 253, 6, 96, 3, 0, 32, 0, 1, 0, 8, 0}, 
+{64, 0, 125, 6, 96, 114, 0, 1, 0, 6, 0, 15, 0, 1, 18, 116, 4, 123, 231, 52, 22, 98, 1, 247, 207, 93, 80, 24, 68, 112, 58, 164, 222, 138, 1, 1}, 
+{19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 183, 24, 235, 80, 16, 192, 0, 58, 164, 222, 138, 2, 1, 75, 91, 69, 0, 5, 220, 11}, 
+{35, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 75, 188, 69, 0, 5, 220, 11, 84, 64, 0, 249, 6, 36, 249, 0, 20, 0, 1, 0, 19, 0}, 
+{1, 1, 76, 81, 69, 0, 5, 220, 142, 202, 64, 0, 252, 6, 177, 34, 0, 8, 0, 5, 0, 32, 0, 1, 201, 148, 0, 119, 225, 31, 94, 66, 81, 1, 252, 37}, 
+{110, 152, 238, 126, 216, 0, 93, 217, 25, 80, 16, 127, 218, 58, 164, 222, 138, 1, 1, 76, 211, 69, 0, 5, 220, 142, 203, 64, 0, 252, 6, 177, 33, 0, 8, 0}, 
+{69, 0, 5, 220, 11, 86, 64, 0, 249, 6, 36, 247, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 76, 63, 39, 105, 222, 147, 80, 24, 34, 56}, 
+{75, 183, 36, 83, 80, 16, 192, 0, 58, 164, 222, 138, 2, 1, 77, 171, 69, 0, 5, 220, 11, 87, 64, 0, 249, 6, 36, 246, 0, 20, 0, 1, 0, 19, 0, 1}, 
+{6, 36, 244, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 93, 91, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 79, 84, 69}, 
+{4, 75, 183, 99, 15, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 2, 1, 80, 23, 69, 0, 5, 220, 11, 91, 64, 0, 249, 6, 36, 242, 0, 20, 0}, 
+{34, 56, 58, 164, 222, 138, 1, 1, 80, 37, 69, 0, 0, 40, 104, 234, 64, 0, 56, 6, 142, 23, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105}, 
+{80, 207, 69, 0, 5, 220, 11, 92, 64, 0, 249, 6, 36, 241, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 110, 119, 39, 105, 222, 147, 80, 24}, 
+{6, 200, 60, 0, 35, 0, 1, 0, 4, 0, 4, 7, 110, 17, 80, 0, 238, 77, 101, 4, 141, 76, 110, 128, 16, 250, 0, 58, 164, 222, 138, 2, 1, 81, 107, 69}, 
+{247, 97, 4, 75, 183, 116, 43, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 1, 1, 81, 112, 69, 0, 5, 220, 13, 37, 64, 0, 124, 6, 77, 14, 0}, 
+{132, 140, 0, 93, 217, 25, 80, 16, 127, 218, 58, 164, 222, 138, 2, 1, 81, 248, 69, 0, 5, 220, 11, 94, 64, 0, 249, 6, 36, 239, 0, 20, 0, 1, 0, 19}, 
+{0, 5, 220, 98, 33, 64, 0, 124, 6, 241, 4, 0, 1, 0, 5, 0, 22, 0, 1, 39, 14, 7, 172, 57, 236, 35, 195, 0, 97, 50, 3, 80, 16, 68, 112, 58}, 
+{97, 4, 75, 183, 127, 147, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 83, 56, 69, 0, 4, 182, 91, 100, 64, 0, 121, 6, 164, 46, 0, 11}, 
+{168, 4, 114, 12, 102, 221, 80, 25, 32, 254, 58, 164, 222, 138, 2, 1, 83, 150, 69, 0, 5, 220, 11, 96, 64, 0, 249, 6, 36, 237, 0, 20, 0, 1, 0, 19}, 
+{20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 144, 175, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 2, 1, 85, 85, 69, 0, 5, 220, 11}, 
+{150, 99, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 85, 119, 69, 0, 0, 40, 228, 158, 64, 0, 253, 6, 96, 2, 0, 32, 0, 1, 0, 8}, 
+{6, 96, 1, 0, 32, 0, 1, 0, 8, 0, 5, 0, 119, 201, 148, 81, 1, 252, 37, 225, 31, 111, 94, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 87, 25, 69}, 
+{119, 0, 97, 50, 3, 80, 16, 68, 112, 58, 164, 222, 138, 2, 1, 87, 40, 69, 0, 5, 220, 11, 101, 64, 0, 249, 6, 36, 232, 0, 20, 0, 1, 0, 19, 0}, 
+{222, 138, 2, 1, 87, 148, 69, 0, 5, 220, 11, 102, 64, 0, 249, 6, 36, 231, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 167, 127, 39, 105}, 
+{103, 64, 0, 249, 6, 38, 206, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 173, 51, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 1}, 
+{31, 111, 94, 81, 1, 252, 37, 80, 24, 34, 56, 58, 164, 222, 138, 1, 1, 88, 245, 69, 0, 0, 40, 104, 236, 64, 0, 56, 6, 142, 21, 0, 19, 0, 1, 0}, 
+{89, 154, 69, 0, 0, 48, 44, 68, 64, 0, 119, 6, 194, 118, 0, 36, 0, 1, 0, 4, 0, 1, 6, 188, 24, 202, 3, 34, 61, 114, 0, 0, 0, 0, 112, 2}, 
+{0, 5, 220, 142, 206, 64, 0, 252, 6, 177, 30, 0, 8, 0, 5, 0, 32, 0, 1, 201, 148, 0, 119, 225, 31, 117, 18, 81, 1, 252, 37, 80, 16, 34, 56, 58}, 
+{37, 80, 24, 34, 56, 58, 164, 222, 138, 1, 1, 91, 66, 69, 0, 0, 40, 104, 237, 64, 0, 56, 6, 142, 20, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238}, 
+{238, 64, 0, 56, 6, 142, 19, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 183, 93, 91, 80, 16, 136, 224, 58, 164, 222, 138, 2}, 
+{35, 0, 1, 0, 4, 0, 4, 7, 110, 17, 80, 0, 238, 77, 101, 4, 141, 76, 110, 128, 16, 250, 0, 58, 164, 222, 138, 1, 1, 96, 85, 69, 0, 5, 220, 78}, 
+{110, 4, 141, 93, 138, 0, 238, 77, 101, 80, 16, 28, 167, 58, 164, 222, 138, 1, 1, 96, 176, 69, 0, 0, 40, 57, 60, 64, 0, 123, 6, 200, 228, 0, 8, 0} 
+};

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs Mon Jan 28 01:09:41 2008
@@ -0,0 +1,400 @@
+1(5), 70, 83, 63, 36, 38 
+2(9:50), 69, 34, 62, 45, 51, 76, 96, 78, 33 
+1(9), 38, 72, 32, 87, 81, 78, 37, 80, 97 
+2(9:50), 34, 67, 83, 33, 38, 41, 97, 68, 73 
+1(12), 93, 40, 62, 76, 45, 71, 74, 45, 68, 45, 98, 89 
+1(9), 33, 49, 39, 58, 94, 71, 79, 83, 57 
+2(11:100), 86, 58, 90, 56, 62, 50, 33, 48, 92, 99, 75 
+2(8:50), 66, 75, 73, 58, 86, 58, 68, 55 
+2(19:100), 34, 40, 86, 42, 85, 71, 76, 30, 70, 84, 52, 87, 51, 35, 95, 60, 42, 43, 76 
+1(7), 90, 82, 83, 92, 72, 79, 98 
+1(9), 68, 51, 80, 90, 55, 65, 56, 35, 66 
+1(16), 85, 71, 91, 46, 34, 59, 74, 68, 47, 99, 93, 73, 53, 88, 55, 42 
+1(9), 79, 55, 65, 74, 59, 68, 91, 96, 42 
+2(15:100), 70, 74, 80, 39, 74, 61, 72, 53, 67, 96, 67, 34, 49, 84, 46 
+1(7), 64, 80, 77, 30, 84, 30, 100 
+1(10), 91, 39, 52, 61, 88, 84, 50, 46, 83, 57 
+1(10), 57, 100, 53, 52, 44, 33, 72, 62, 50, 92 
+2(13:50), 71, 54, 38, 79, 63, 40, 87, 54, 93, 56, 70, 70, 76 
+1(8), 92, 91, 85, 42, 52, 69, 40, 94 
+1(19), 49, 72, 45, 90, 40, 70, 61, 83, 88, 80, 42, 100, 83, 99, 64, 99, 63, 48, 37 
+2(7:100), 64, 96, 78, 63, 78, 76, 100 
+1(10), 47, 87, 97, 40, 57, 36, 55, 55, 59, 92 
+1(20), 40, 39, 69, 63, 92, 41, 69, 49, 54, 68, 93, 44, 56, 49, 75, 68, 42, 30, 77, 37 
+1(6), 53, 71, 39, 100, 61, 78 
+1(10), 49, 59, 56, 95, 86, 83, 63, 51, 57, 89 
+1(7), 91, 39, 48, 70, 66, 93, 45 
+1(11), 65, 91, 50, 76, 98, 78, 82, 36, 52, 79, 66 
+1(11), 97, 95, 52, 52, 84, 52, 55, 74, 74, 50, 67 
+1(13), 93, 68, 50, 82, 68, 41, 39, 72, 70, 77, 34, 60, 47 
+1(9), 96, 63, 54, 97, 68, 75, 57, 73, 41 
+2(11:100), 77, 85, 76, 57, 82, 51, 94, 75, 50, 36, 56 
+1(16), 30, 89, 95, 88, 89, 38, 70, 68, 90, 45, 84, 94, 40, 33, 80, 96 
+1(10), 60, 89, 30, 95, 47, 73, 53, 85, 57, 54 
+1(8), 81, 59, 50, 42, 62, 95, 44, 35 
+1(7), 47, 65, 76, 76, 72, 32, 62 
+1(13), 38, 61, 99, 30, 76, 90, 68, 70, 39, 79, 63, 85, 90 
+1(18), 83, 45, 43, 83, 46, 47, 69, 87, 85, 91, 88, 66, 63, 53, 95, 75, 67, 83 
+1(9), 97, 93, 40, 42, 42, 39, 33, 76, 99 
+2(14:100), 71, 78, 47, 100, 97, 91, 94, 59, 91, 30, 49, 73, 51, 81 
+1(13), 61, 38, 46, 62, 55, 51, 87, 89, 69, 86, 72, 92, 49 
+2(8:100), 30, 47, 62, 93, 86, 30, 82, 42 
+1(14), 91, 93, 40, 62, 86, 63, 44, 85, 47, 39, 92, 84, 55, 35 
+2(8:100), 39, 67, 74, 42, 75, 60, 51, 73 
+1(7), 84, 68, 41, 59, 45, 41, 44 
+1(8), 38, 98, 81, 58, 35, 94, 85, 81 
+1(20), 70, 52, 57, 50, 89, 72, 54, 32, 39, 95, 51, 64, 38, 58, 83, 87, 74, 68, 63, 84 
+1(18), 61, 96, 66, 93, 38, 70, 83, 50, 30, 32, 32, 46, 65, 91, 93, 37, 41, 68 
+1(15), 74, 94, 92, 91, 42, 86, 87, 61, 75, 48, 95, 87, 31, 87, 93 
+1(14), 87, 98, 60, 90, 34, 68, 90, 44, 40, 65, 35, 77, 38, 79 
+1(7), 30, 84, 59, 64, 68, 86, 80 
+1(9), 58, 87, 70, 86, 77, 38, 88, 59, 62 
+1(8), 95, 97, 68, 53, 44, 100, 78, 46 
+1(10), 39, 64, 79, 45, 83, 71, 66, 33, 53, 68 
+1(10), 35, 61, 32, 97, 97, 32, 33, 46, 33, 73 
+2(10:100), 65, 48, 83, 63, 38, 92, 97, 75, 100, 65 
+1(12), 90, 31, 90, 69, 67, 44, 75, 83, 63, 84, 41, 62 
+1(10), 94, 36, 59, 42, 77, 98, 38, 33, 58, 95 
+1(5), 97, 88, 77, 63, 90 
+1(12), 39, 91, 68, 40, 99, 61, 39, 56, 66, 36, 36, 85 
+1(9), 75, 40, 83, 67, 30, 37, 79, 91, 92 
+1(7), 85, 44, 61, 55, 58, 86, 45 
+1(12), 54, 42, 42, 97, 66, 54, 91, 66, 81, 64, 74, 98 
+1(10), 54, 80, 95, 37, 58, 65, 65, 75, 63, 61 
+1(7), 75, 82, 33, 55, 55, 43, 52 
+2(9:50), 65, 87, 53, 60, 61, 86, 84, 92, 81 
+1(14), 95, 63, 54, 37, 34, 70, 66, 43, 40, 34, 91, 86, 31, 80 
+2(15:50), 87, 92, 95, 92, 78, 58, 89, 72, 73, 93, 84, 36, 35, 93, 87 
+1(13), 69, 61, 94, 41, 30, 62, 73, 82, 99, 40, 85, 65, 76 
+1(10), 42, 67, 99, 64, 98, 73, 63, 95, 37, 64 
+1(18), 67, 69, 50, 94, 65, 38, 82, 48, 40, 62, 54, 96, 30, 64, 73, 59, 41, 82 
+1(15), 100, 38, 92, 48, 91, 40, 73, 43, 81, 42, 34, 84, 98, 33, 54 
+1(11), 82, 35, 87, 58, 94, 63, 81, 62, 98, 37, 79 
+1(10), 38, 83, 39, 63, 95, 31, 30, 57, 88, 42 
+2(6:50), 94, 41, 65, 93, 54, 37 
+1(9), 86, 87, 77, 58, 49, 87, 91, 32, 66 
+1(6), 37, 84, 93, 80, 89, 90 
+2(7:50), 51, 36, 64, 33, 47, 89, 36 
+1(7), 77, 36, 44, 77, 69, 63, 69 
+1(15), 60, 60, 59, 76, 99, 47, 43, 55, 75, 81, 99, 52, 32, 51, 42 
+1(13), 98, 82, 75, 90, 71, 44, 67, 45, 56, 55, 63, 39, 36 
+1(15), 61, 33, 83, 47, 31, 35, 73, 53, 43, 50, 88, 73, 80, 35, 79 
+1(8), 62, 97, 58, 88, 42, 49, 46, 90 
+2(15:50), 84, 96, 48, 90, 66, 93, 58, 39, 58, 76, 37, 70, 82, 90, 56 
+1(11), 58, 86, 69, 52, 69, 53, 78, 42, 66, 58, 98 
+1(9), 83, 60, 76, 53, 58, 52, 39, 99, 100 
+1(13), 43, 75, 97, 31, 82, 66, 42, 31, 58, 44, 70, 67, 85 
+2(7:50), 60, 70, 85, 45, 59, 47, 53 
+1(9), 63, 60, 31, 53, 38, 61, 73, 42, 35 
+1(13), 33, 72, 59, 55, 93, 63, 43, 84, 41, 88, 56, 85, 70 
+1(5), 75, 63, 51, 34, 89 
+1(10), 85, 60, 72, 77, 88, 90, 61, 98, 41, 95 
+1(20), 54, 73, 84, 30, 90, 70, 63, 48, 91, 31, 82, 62, 90, 47, 39, 58, 67, 82, 30, 60 
+1(10), 79, 58, 41, 48, 82, 31, 71, 53, 44, 75 
+1(14), 34, 97, 93, 43, 71, 92, 53, 41, 63, 81, 76, 44, 40, 46 
+1(18), 33, 63, 93, 88, 96, 77, 55, 78, 32, 64, 35, 88, 46, 77, 57, 69, 57, 33 
+1(12), 46, 72, 85, 82, 85, 58, 39, 86, 58, 54, 95, 62 
+1(7), 33, 35, 98, 56, 93, 94, 60 
+1(11), 98, 93, 33, 68, 86, 55, 78, 63, 59, 60, 57 
+1(5), 30, 88, 45, 43, 79 
+1(10), 50, 48, 75, 59, 50, 91, 79, 82, 98, 52 
+1(19), 83, 71, 83, 73, 71, 76, 41, 99, 81, 46, 94, 99, 63, 79, 57, 47, 51, 55, 93 
+1(9), 31, 48, 68, 56, 30, 83, 91, 30, 37 
+1(8), 42, 95, 95, 31, 39, 33, 86, 51 
+1(7), 66, 77, 94, 51, 72, 71, 73 
+1(11), 36, 57, 99, 43, 55, 81, 96, 31, 49, 86, 89 
+1(13), 84, 38, 45, 40, 32, 46, 69, 38, 48, 37, 72, 63, 80 
+1(13), 81, 36, 77, 62, 77, 83, 56, 64, 38, 75, 71, 74, 42 
+2(8:50), 54, 78, 97, 36, 41, 63, 81, 59 
+1(7), 82, 35, 95, 87, 47, 68, 97 
+1(7), 35, 38, 36, 45, 50, 59, 57 
+1(15), 69, 90, 74, 87, 52, 76, 56, 68, 37, 84, 100, 56, 48, 80, 76 
+2(10:50), 60, 77, 73, 100, 62, 87, 30, 41, 87, 60 
+2(15:50), 100, 93, 94, 92, 82, 59, 72, 49, 91, 42, 43, 81, 49, 53, 47 
+1(14), 74, 74, 44, 37, 95, 73, 97, 40, 58, 73, 90, 69, 56, 75 
+1(9), 66, 40, 94, 69, 47, 70, 76, 93, 73 
+1(9), 50, 91, 31, 83, 55, 32, 35, 50, 52 
+1(17), 93, 35, 40, 51, 67, 99, 35, 65, 46, 87, 43, 74, 96, 99, 40, 48, 68 
+1(8), 65, 95, 97, 55, 65, 89, 80, 78 
+1(8), 31, 38, 96, 55, 82, 80, 51, 31 
+1(6), 64, 55, 76, 77, 96, 79 
+1(20), 34, 97, 59, 52, 67, 38, 66, 54, 31, 41, 45, 30, 99, 98, 47, 99, 71, 35, 80, 77 
+1(10), 50, 40, 56, 91, 72, 46, 97, 61, 31, 89 
+1(10), 74, 43, 50, 37, 99, 89, 85, 56, 81, 65 
+1(7), 95, 90, 88, 66, 78, 39, 88 
+1(10), 51, 52, 61, 72, 87, 48, 63, 39, 95, 63 
+2(12:100), 56, 59, 61, 32, 56, 67, 32, 86, 99, 64, 31, 81 
+2(10:100), 65, 56, 38, 74, 93, 98, 95, 44, 65, 50 
+1(10), 30, 69, 40, 39, 54, 99, 63, 60, 80, 51 
+1(14), 62, 80, 87, 68, 38, 60, 63, 35, 68, 30, 51, 69, 34, 64 
+1(15), 82, 56, 30, 57, 72, 52, 61, 56, 50, 66, 98, 96, 69, 61, 91 
+1(16), 31, 46, 44, 91, 99, 93, 48, 41, 32, 90, 64, 37, 95, 64, 41, 47 
+2(6:100), 51, 31, 73, 46, 98, 83 
+2(10:50), 47, 61, 99, 68, 35, 90, 36, 68, 85, 59 
+2(15:100), 72, 79, 55, 92, 50, 71, 70, 56, 76, 90, 83, 48, 62, 52, 33 
+1(14), 87, 89, 63, 53, 61, 62, 31, 80, 81, 47, 91, 33, 67, 47 
+1(8), 94, 70, 77, 48, 90, 85, 65, 45 
+1(20), 37, 91, 73, 62, 30, 44, 96, 45, 55, 82, 66, 98, 36, 56, 85, 85, 79, 80, 35, 66 
+1(19), 78, 46, 90, 74, 89, 68, 97, 64, 54, 41, 63, 38, 38, 35, 46, 30, 55, 31, 83 
+1(14), 67, 40, 80, 71, 95, 47, 44, 89, 48, 82, 99, 97, 46, 84 
+1(8), 63, 85, 85, 30, 96, 41, 63, 99 
+1(7), 50, 71, 87, 46, 41, 52, 30 
+1(10), 62, 64, 47, 33, 78, 93, 89, 80, 71, 88 
+1(10), 86, 76, 46, 98, 83, 53, 91, 81, 72, 59 
+1(13), 36, 67, 57, 85, 59, 82, 84, 71, 55, 53, 92, 47, 47 
+2(15:50), 85, 48, 63, 60, 40, 57, 86, 61, 52, 85, 69, 94, 77, 73, 93 
+1(11), 71, 75, 45, 97, 44, 82, 53, 81, 94, 81, 71 
+1(10), 38, 30, 35, 47, 86, 44, 58, 97, 91, 83 
+1(15), 69, 87, 40, 88, 57, 31, 90, 73, 47, 66, 74, 48, 97, 54, 93 
+1(16), 63, 61, 76, 83, 48, 51, 49, 66, 52, 50, 68, 36, 78, 54, 61, 51 
+1(16), 54, 73, 68, 94, 64, 72, 45, 78, 56, 45, 32, 64, 65, 73, 31, 46 
+1(4), 53, 45, 40, 31 
+1(12), 81, 64, 38, 77, 41, 37, 100, 43, 64, 34, 88, 38 
+1(14), 59, 65, 97, 35, 40, 78, 93, 92, 58, 46, 59, 94, 60, 60 
+1(8), 43, 44, 98, 64, 41, 32, 41, 49 
+1(8), 70, 72, 93, 64, 68, 85, 83, 82 
+1(7), 41, 59, 90, 34, 61, 78, 64 
+1(10), 80, 97, 34, 82, 35, 71, 68, 92, 58, 79 
+1(8), 58, 64, 67, 44, 50, 88, 91, 37 
+1(10), 47, 88, 46, 83, 51, 64, 43, 56, 66, 43 
+2(7:100), 39, 90, 59, 93, 42, 35, 79 
+2(6:100), 56, 35, 50, 52, 52, 33 
+1(7), 98, 88, 34, 50, 94, 47, 52 
+1(7), 91, 86, 67, 64, 53, 84, 64 
+1(16), 46, 69, 92, 54, 37, 93, 34, 96, 55, 70, 62, 36, 48, 32, 97, 67 
+1(14), 79, 45, 68, 46, 35, 97, 41, 50, 35, 75, 58, 49, 71, 56 
+1(6), 72, 75, 97, 45, 94, 64 
+1(12), 61, 45, 59, 53, 89, 76, 82, 73, 91, 83, 63, 45 
+1(14), 98, 71, 94, 64, 68, 34, 99, 99, 75, 53, 69, 48, 51, 84 
+2(10:100), 59, 91, 63, 100, 46, 86, 48, 34, 91, 49 
+1(5), 97, 79, 90, 50, 86 
+2(7:50), 71, 68, 64, 74, 77, 91, 85 
+1(12), 61, 65, 63, 78, 51, 94, 35, 32, 76, 91, 90, 83 
+1(11), 57, 98, 72, 57, 52, 46, 33, 64, 79, 60, 100 
+2(10:50), 63, 39, 79, 100, 68, 72, 42, 79, 67, 60 
+1(13), 32, 63, 96, 66, 30, 82, 42, 56, 80, 89, 67, 35, 58 
+1(13), 74, 70, 43, 90, 95, 76, 100, 67, 87, 63, 65, 85, 42 
+2(18:50), 61, 77, 65, 65, 50, 93, 77, 82, 30, 94, 45, 52, 84, 79, 38, 40, 90, 31 
+2(7:50), 30, 48, 68, 69, 70, 41, 91 
+1(7), 84, 40, 58, 34, 97, 33, 100 
+1(10), 93, 34, 61, 73, 78, 80, 65, 77, 37, 62 
+1(14), 86, 61, 44, 79, 86, 66, 71, 78, 38, 47, 97, 63, 75, 43 
+2(12:100), 78, 88, 64, 53, 55, 75, 84, 40, 68, 98, 31, 68 
+2(10:50), 43, 81, 54, 41, 40, 49, 71, 40, 69, 60 
+1(6), 52, 68, 31, 70, 75, 37 
+2(15:50), 49, 40, 97, 52, 40, 68, 48, 95, 80, 64, 97, 82, 91, 52, 95 
+1(13), 77, 47, 75, 60, 45, 47, 41, 36, 87, 47, 32, 70, 92 
+1(10), 84, 95, 53, 41, 33, 93, 67, 34, 81, 33 
+1(9), 37, 88, 45, 69, 85, 47, 35, 69, 80 
+1(11), 68, 76, 59, 89, 83, 32, 81, 48, 31, 94, 84 
+2(12:50), 72, 51, 43, 36, 60, 55, 63, 87, 37, 45, 32, 100 
+1(20), 99, 44, 71, 64, 37, 84, 47, 60, 99, 66, 63, 96, 84, 71, 43, 68, 99, 46, 83, 71 
+1(7), 45, 88, 81, 90, 81, 54, 42 
+2(9:50), 59, 77, 56, 94, 66, 73, 95, 75, 54 
+1(9), 74, 93, 31, 47, 76, 38, 54, 96, 81 
+1(10), 62, 73, 53, 53, 57, 30, 51, 54, 82, 54 
+1(11), 73, 72, 46, 79, 56, 56, 57, 53, 72, 58, 57 
+1(18), 41, 65, 87, 71, 75, 36, 67, 85, 70, 52, 71, 77, 91, 44, 33, 57, 75, 62 
+1(7), 63, 85, 88, 77, 78, 36, 56 
+1(12), 89, 69, 48, 53, 32, 85, 76, 93, 50, 49, 95, 90 
+2(12:50), 86, 39, 86, 70, 89, 57, 88, 95, 72, 96, 88, 43 
+2(10:100), 54, 49, 34, 52, 96, 94, 88, 31, 40, 72 
+1(8), 32, 66, 73, 78, 67, 86, 30, 64 
+1(12), 86, 31, 59, 61, 85, 67, 60, 98, 67, 58, 84, 79 
+1(10), 31, 49, 62, 40, 52, 44, 55, 39, 68, 68 
+1(8), 83, 81, 32, 74, 85, 47, 62, 62 
+1(10), 54, 33, 90, 98, 44, 69, 78, 82, 51, 90 
+2(7:50), 55, 30, 100, 90, 99, 70, 69 
+1(14), 34, 49, 68, 78, 99, 52, 62, 83, 63, 77, 30, 70, 74, 37 
+1(10), 60, 55, 78, 66, 52, 48, 40, 79, 74, 44 
+1(8), 59, 59, 65, 71, 42, 83, 61, 66 
+1(12), 41, 57, 40, 80, 83, 75, 88, 66, 65, 70, 61, 31 
+1(4), 60, 37, 53, 43 
+2(10:50), 68, 60, 62, 32, 93, 75, 35, 58, 63, 100 
+1(14), 43, 48, 59, 64, 42, 34, 95, 37, 82, 88, 75, 34, 85, 35 
+1(8), 80, 31, 36, 59, 32, 83, 38, 78 
+1(8), 76, 84, 74, 84, 98, 78, 66, 79 
+2(15:100), 32, 70, 36, 46, 85, 74, 43, 66, 43, 32, 61, 86, 58, 46, 43 
+1(12), 40, 58, 96, 48, 42, 40, 59, 81, 75, 52, 94, 32 
+1(17), 51, 100, 80, 54, 73, 51, 94, 62, 88, 99, 79, 51, 31, 68, 56, 60, 50 
+1(9), 68, 86, 87, 55, 95, 94, 43, 32, 59 
+2(16:50), 66, 31, 38, 86, 32, 79, 60, 72, 83, 57, 97, 41, 44, 95, 42, 75 
+1(8), 91, 56, 38, 44, 72, 62, 68, 65 
+1(5), 55, 57, 41, 57, 35 
+1(8), 35, 90, 48, 63, 43, 56, 92, 81 
+1(6), 92, 57, 61, 60, 30, 49 
+1(9), 72, 95, 80, 67, 93, 88, 93, 47, 58 
+1(8), 88, 50, 70, 89, 80, 44, 60, 55 
+1(7), 82, 48, 45, 88, 91, 67, 72 
+1(14), 81, 31, 44, 96, 30, 43, 66, 55, 71, 84, 77, 39, 55, 68 
+1(7), 81, 32, 88, 89, 31, 48, 93 
+1(12), 63, 58, 39, 73, 70, 96, 97, 93, 100, 56, 54, 30 
+2(12:50), 43, 56, 82, 83, 77, 66, 48, 100, 87, 68, 87, 93 
+1(8), 88, 46, 41, 39, 47, 38, 96, 86 
+1(10), 84, 99, 54, 97, 48, 41, 99, 47, 61, 81 
+1(7), 75, 79, 76, 52, 95, 46, 52 
+2(8:50), 89, 96, 76, 43, 62, 72, 45, 89 
+2(20:50), 88, 40, 85, 66, 73, 83, 94, 65, 98, 53, 71, 63, 36, 59, 61, 58, 60, 79, 52, 88 
+1(14), 81, 44, 93, 68, 76, 79, 83, 78, 100, 56, 90, 85, 54, 68 
+2(10:50), 94, 95, 72, 43, 80, 55, 58, 75, 73, 53 
+2(20:100), 94, 64, 48, 67, 66, 65, 33, 66, 40, 77, 94, 78, 96, 87, 60, 44, 56, 46, 94, 72 
+1(14), 68, 65, 92, 37, 87, 35, 59, 78, 88, 78, 63, 57, 53, 75 
+1(7), 41, 69, 60, 85, 83, 53, 67 
+1(15), 74, 87, 67, 48, 85, 70, 54, 42, 85, 93, 37, 58, 68, 97, 38 
+1(9), 48, 95, 75, 75, 34, 72, 51, 69, 94 
+1(6), 60, 95, 31, 57, 83, 93 
+2(15:50), 91, 36, 64, 60, 33, 53, 61, 87, 61, 40, 36, 45, 51, 72, 96 
+1(19), 33, 43, 81, 53, 76, 54, 95, 81, 71, 31, 68, 90, 86, 62, 98, 94, 44, 99, 43 
+1(10), 69, 48, 45, 95, 83, 62, 94, 90, 73, 89 
+1(11), 93, 69, 58, 70, 47, 89, 85, 32, 87, 98, 48 
+1(9), 86, 37, 95, 59, 87, 78, 95, 73, 63 
+1(13), 92, 92, 34, 35, 66, 81, 52, 48, 99, 76, 85, 58, 85 
+1(11), 85, 33, 80, 85, 89, 82, 66, 93, 92, 67, 63 
+1(5), 47, 71, 64, 53, 67 
+1(4), 31, 64, 48, 31 
+1(14), 51, 81, 41, 71, 77, 38, 65, 77, 51, 78, 74, 52, 35, 81 
+1(10), 50, 31, 58, 60, 99, 60, 88, 47, 56, 58 
+1(13), 60, 41, 86, 85, 91, 47, 100, 100, 69, 80, 89, 32, 94 
+1(10), 34, 95, 86, 73, 89, 73, 66, 78, 91, 46 
+1(7), 86, 74, 33, 83, 99, 31, 59 
+2(8:100), 80, 77, 40, 90, 41, 53, 35, 38 
+1(9), 83, 35, 52, 99, 57, 100, 83, 61, 61 
+1(7), 64, 64, 86, 72, 94, 44, 86 
+1(7), 74, 58, 43, 70, 41, 49, 99 
+1(16), 87, 61, 58, 60, 55, 41, 30, 44, 63, 87, 57, 63, 88, 51, 99, 67 
+1(10), 58, 52, 54, 43, 43, 49, 97, 44, 80, 53 
+2(9:100), 33, 94, 94, 30, 62, 83, 63, 94, 50 
+1(13), 49, 97, 68, 42, 32, 89, 97, 72, 46, 59, 41, 78, 98 
+1(10), 76, 97, 91, 59, 43, 30, 95, 70, 49, 56 
+1(20), 47, 42, 59, 81, 38, 97, 88, 71, 64, 31, 44, 63, 87, 87, 82, 54, 52, 67, 66, 72 
+1(10), 76, 53, 56, 72, 68, 88, 64, 88, 78, 60 
+1(10), 30, 46, 100, 55, 61, 77, 77, 81, 45, 48 
+1(12), 65, 84, 31, 33, 30, 63, 94, 66, 90, 47, 30, 39 
+1(10), 36, 78, 52, 43, 35, 44, 41, 34, 35, 96 
+2(9:50), 34, 100, 81, 39, 30, 59, 82, 66, 57 
+1(8), 35, 71, 55, 35, 48, 87, 91, 81 
+1(4), 63, 60, 96, 92 
+2(4:100), 35, 70, 91, 75 
+1(11), 32, 96, 90, 55, 37, 66, 55, 90, 73, 33, 50 
+1(11), 34, 58, 30, 93, 61, 45, 40, 95, 86, 68, 76 
+1(7), 72, 66, 59, 42, 94, 50, 67 
+1(7), 60, 43, 59, 83, 92, 59, 74 
+1(19), 45, 38, 64, 96, 71, 51, 46, 53, 32, 75, 32, 52, 59, 89, 34, 68, 35, 47, 30 
+1(11), 49, 94, 40, 67, 98, 96, 52, 73, 48, 41, 92 
+1(11), 62, 73, 30, 73, 43, 85, 96, 32, 99, 82, 80 
+1(15), 77, 34, 55, 94, 97, 74, 71, 88, 84, 33, 71, 63, 97, 58, 64 
+1(10), 92, 77, 93, 87, 37, 77, 43, 48, 65, 45 
+1(10), 68, 30, 100, 90, 74, 33, 42, 57, 77, 31 
+2(15:100), 73, 84, 39, 35, 60, 55, 65, 89, 77, 87, 58, 81, 67, 82, 36 
+1(13), 43, 91, 67, 50, 99, 42, 85, 32, 30, 51, 74, 88, 40 
+1(7), 30, 87, 97, 98, 81, 53, 56 
+1(7), 69, 100, 34, 75, 71, 80, 92 
+1(17), 41, 75, 58, 47, 48, 69, 45, 59, 87, 92, 99, 34, 45, 31, 59, 94, 90 
+2(5:100), 45, 76, 35, 97, 70 
+1(7), 87, 31, 48, 78, 87, 94, 54 
+1(15), 47, 66, 72, 82, 95, 99, 49, 33, 69, 53, 50, 69, 53, 44, 42 
+1(7), 38, 84, 44, 67, 64, 80, 42 
+1(10), 47, 79, 47, 90, 69, 54, 37, 55, 69, 44 
+1(13), 91, 45, 45, 74, 53, 52, 44, 61, 32, 51, 81, 70, 62 
+1(7), 85, 59, 67, 87, 37, 36, 36 
+2(8:100), 43, 97, 90, 73, 53, 88, 59, 37 
+1(15), 39, 74, 43, 63, 45, 53, 81, 88, 37, 66, 97, 87, 98, 47, 45 
+2(7:50), 98, 63, 89, 77, 49, 46, 68 
+1(14), 58, 47, 87, 86, 90, 60, 49, 43, 66, 36, 30, 67, 72, 85 
+2(10:100), 90, 89, 59, 54, 60, 77, 100, 62, 88, 48 
+1(12), 45, 44, 77, 90, 69, 83, 48, 41, 39, 97, 45, 60 
+1(8), 57, 100, 62, 37, 83, 37, 82, 45 
+2(16:100), 42, 64, 44, 32, 64, 82, 60, 47, 78, 41, 89, 46, 71, 58, 76, 56 
+1(8), 57, 50, 67, 75, 44, 63, 69, 55 
+1(10), 40, 81, 68, 30, 66, 83, 73, 71, 40, 89 
+1(7), 52, 35, 49, 59, 92, 84, 75 
+1(9), 89, 32, 55, 69, 47, 59, 81, 76, 54 
+2(4:100), 48, 86, 40, 75 
+1(14), 55, 83, 94, 46, 44, 35, 83, 92, 87, 45, 45, 100, 91, 96 
+1(14), 30, 74, 52, 49, 80, 75, 98, 87, 93, 80, 45, 88, 60, 40 
+1(7), 44, 94, 50, 56, 84, 84, 54 
+1(14), 81, 75, 58, 42, 36, 41, 53, 84, 99, 31, 81, 42, 80, 30 
+1(5), 39, 73, 37, 91, 53 
+1(6), 30, 36, 76, 57, 53, 77 
+1(7), 68, 81, 39, 74, 54, 61, 52 
+1(4), 34, 93, 73, 80 
+1(11), 99, 48, 62, 37, 41, 40, 69, 56, 47, 41, 35 
+1(11), 67, 41, 60, 69, 47, 34, 54, 92, 78, 79, 86 
+1(20), 70, 95, 55, 99, 84, 76, 100, 30, 59, 70, 93, 32, 89, 85, 57, 94, 73, 91, 94, 92 
+1(14), 59, 31, 80, 48, 79, 56, 51, 98, 31, 31, 84, 82, 85, 76 
+1(14), 48, 78, 80, 73, 77, 51, 86, 61, 65, 84, 40, 32, 43, 99 
+1(8), 47, 96, 49, 86, 70, 86, 77, 57 
+1(7), 31, 46, 46, 34, 69, 80, 95 
+1(6), 68, 64, 65, 31, 33, 78 
+1(20), 73, 66, 60, 81, 81, 37, 48, 59, 67, 41, 74, 68, 80, 30, 42, 97, 40, 35, 55, 32 
+1(8), 35, 36, 95, 79, 31, 64, 76, 58 
+1(9), 85, 97, 83, 41, 46, 66, 48, 30, 82 
+1(10), 58, 61, 50, 81, 64, 90, 58, 86, 96, 30 
+1(9), 100, 36, 61, 52, 41, 47, 55, 88, 70 
+1(14), 91, 89, 89, 83, 49, 48, 60, 98, 97, 84, 92, 49, 48, 45 
+1(11), 82, 89, 43, 37, 57, 61, 92, 30, 99, 100, 37 
+1(14), 49, 74, 78, 45, 100, 42, 77, 33, 69, 52, 32, 46, 30, 49 
+1(9), 87, 99, 48, 51, 82, 71, 38, 58, 30 
+1(7), 75, 65, 36, 47, 93, 36, 85 
+1(8), 61, 79, 69, 67, 68, 32, 71, 58 
+1(11), 60, 96, 42, 38, 71, 61, 55, 64, 79, 100, 66 
+1(17), 35, 72, 32, 65, 65, 75, 60, 53, 33, 40, 78, 92, 31, 81, 70, 99, 96 
+1(8), 71, 46, 39, 43, 30, 55, 91, 91 
+1(11), 54, 70, 83, 44, 92, 96, 34, 39, 97, 88, 74 
+1(16), 39, 41, 89, 71, 66, 100, 93, 72, 72, 84, 83, 73, 84, 93, 35, 74 
+1(7), 92, 43, 64, 38, 34, 86, 73 
+1(7), 61, 97, 47, 65, 63, 81, 95 
+1(7), 51, 46, 77, 93, 78, 44, 81 
+1(6), 33, 83, 81, 39, 65, 52 
+2(5:50), 49, 60, 72, 48, 31 
+1(12), 86, 38, 41, 81, 95, 93, 92, 55, 82, 74, 95, 93 
+2(9:100), 70, 63, 100, 93, 85, 100, 87, 86, 87 
+1(4), 63, 46, 69, 61 
+1(13), 38, 93, 90, 52, 76, 49, 76, 91, 46, 63, 87, 83, 81 
+1(8), 48, 33, 73, 39, 52, 81, 35, 48 
+1(10), 38, 64, 73, 98, 73, 81, 30, 52, 82, 40 
+1(15), 85, 71, 37, 82, 47, 78, 44, 70, 67, 92, 88, 76, 88, 86, 93 
+1(20), 31, 54, 63, 74, 92, 50, 34, 89, 37, 72, 49, 45, 80, 73, 81, 70, 88, 56, 69, 87 
+1(14), 70, 99, 51, 73, 99, 89, 52, 46, 82, 63, 41, 98, 60, 55 
+2(4:50), 34, 59, 58, 83 
+1(16), 77, 40, 34, 100, 86, 47, 38, 79, 100, 77, 42, 46, 33, 93, 65, 38 
+1(9), 57, 60, 80, 72, 63, 43, 80, 100, 61 
+1(10), 37, 89, 77, 38, 36, 72, 68, 34, 32, 57 
+1(4), 56, 74, 46, 57 
+1(8), 30, 42, 62, 38, 51, 75, 78, 58 
+1(9), 91, 81, 94, 78, 82, 71, 97, 66, 58 
+1(18), 33, 30, 91, 73, 54, 91, 61, 48, 39, 38, 71, 41, 84, 43, 99, 92, 71, 45 
+1(8), 41, 82, 75, 81, 44, 49, 55, 87 
+1(14), 92, 46, 87, 86, 52, 46, 55, 58, 91, 65, 91, 62, 52, 46 
+1(7), 36, 72, 59, 48, 40, 89, 42 
+2(10:100), 71, 95, 49, 66, 76, 67, 80, 62, 37, 40 
+1(7), 76, 30, 55, 76, 41, 95, 51 
+1(9), 57, 58, 35, 35, 48, 60, 45, 44, 57 
+1(4), 61, 32, 88, 60 
+1(10), 95, 76, 68, 87, 30, 50, 60, 62, 84, 63 
+1(17), 34, 100, 76, 96, 35, 75, 49, 46, 77, 38, 88, 71, 64, 50, 56, 82, 71 
+1(6), 58, 52, 34, 70, 97, 45 
+1(8), 92, 85, 52, 57, 46, 37, 42, 54 
+1(11), 46, 98, 39, 56, 48, 51, 47, 67, 78, 61, 76 
+1(11), 99, 71, 94, 90, 78, 99, 94, 60, 38, 41, 41 
+1(7), 39, 93, 79, 90, 75, 34, 72 
+2(10:50), 67, 59, 94, 99, 34, 70, 73, 30, 57, 40 
+1(7), 47, 74, 41, 93, 31, 63, 93 
+1(10), 64, 36, 81, 98, 31, 38, 33, 50, 38, 45 
+1(13), 60, 95, 93, 46, 64, 53, 76, 40, 59, 83, 100, 31, 47 
+1(13), 80, 42, 85, 44, 61, 89, 88, 48, 94, 65, 92, 85, 36 
+2(8:100), 83, 89, 58, 75, 84, 99, 33, 74 
+1(15), 87, 65, 75, 89, 70, 54, 72, 68, 51, 36, 36, 66, 54, 56, 69 
+2(7:50), 47, 65, 70, 95, 39, 54, 36 
+1(10), 33, 40, 67, 74, 98, 78, 69, 46, 80, 85 
+1(9), 76, 34, 31, 54, 85, 81, 99, 47, 72 
+1(14), 69, 100, 49, 64, 88, 89, 84, 85, 44, 44, 51, 40, 77, 96 
+2(8:50), 59, 42, 46, 63, 66, 48, 45, 38 
+1(11), 83, 48, 34, 36, 91, 68, 68, 31, 100, 51, 86 
+2(10:100), 35, 45, 65, 75, 95, 80, 69, 45, 51, 93 
+1(7), 30, 49, 84, 69, 48, 68, 68 
+1(9), 80, 44, 37, 35, 67, 64, 69, 100, 53 
+1(10), 49, 31, 74, 92, 87, 45, 66, 67, 47, 91 
+2(10:100), 68, 63, 71, 88, 75, 40, 32, 77, 91, 37 
+1(5), 50, 93, 72, 30, 55 
+1(6), 31, 67, 74, 91, 45, 99 

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,78 @@
+/*
+ * packet.c - Implementation of the packet interface
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful.  The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * You are welcome to use, share and improve this
+ * source file.  You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "packet_lengths.h"
+#include "headers.h"
+#include "packet.h"
+
+/* Traces automatically drop the TCP checksum and urgent pointer, so header is 36 bytes */
+#define HEADER_SIZE 36
+int packets_processed = 0;
+
+#ifdef CONSTANT_PACKET
+unsigned int packet_index = 0;
+#endif
+
+char *
+get_next_packet ()
+{
+  char *packet;
+  unsigned int packet_length;
+  
+  if (packets_processed == MAX_PACKETS)
+    {
+      fprintf (stderr, "All packets (%d) processed, recompile with larger MAX_PACKETS \n", MAX_PACKETS);
+      exit (1);
+    }
+  
+  packet_length = (packet_lengths[packets_processed]);
+  if (packet_length < 40)
+    {
+      /* Should never happen */
+      fprintf (stderr, "Packet not large enough, increasing the size\n");
+      packet_length = 40;
+    }
+
+#ifdef CONSTANT_PACKET
+  /* Packets are stored in a continuous chunk in the memory, just change the index... */
+  packet = &packets[packet_index];
+  packet_index += packet_length;
+#else
+  /* Have to call malloc to create packet memory */
+  if ((packet =  (char *) malloc (packet_length)) == NULL)
+    {
+      fprintf (stderr, "Not enough space to create packet data \n");
+      exit (1);
+    }
+
+  /* Copy the header information */
+  memcpy ((void *)packet, (void *)headers[packets_processed], HEADER_SIZE);
+#endif
+
+  packets_processed ++;
+  return packet;
+}
+
+/* For debugging purposes, to get the size of the packet_numberth packet */
+unsigned int 
+packet_size (unsigned int packet_number)
+{
+  if (packet_number == MAX_PACKETS)
+    return (packet_lengths[packets_processed]);
+  else return (packet_lengths[packet_number]);
+}

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,22 @@
+/*
+ * packet.h - Interface for reading packet information
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful.  The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * You are welcome to use, share and improve this
+ * source file.  You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+#define MAX_PACKETS 1500
+
+char *get_next_packet ();
+
+/* For testing...*/
+unsigned int packet_size (unsigned int);
+

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,10002 @@
+unsigned int packet_lengths[10000] = { 
+60, 
+1579, 
+274, 
+9552, 
+256, 
+56462, 
+26624, 
+256, 
+6688, 
+64768, 
+42206, 
+51431, 
+538, 
+2941, 
+31750, 
+6699, 
+15012, 
+17221, 
+124, 
+6465, 
+63439, 
+56970, 
+40, 
+256, 
+6307, 
+4350, 
+118, 
+9729, 
+15012, 
+56481, 
+54751, 
+61, 
+5888, 
+29700, 
+4224, 
+267, 
+52, 
+36699, 
+1536, 
+5122, 
+4164, 
+276, 
+1839, 
+57017, 
+27951, 
+35920, 
+35330, 
+17664, 
+124, 
+2048, 
+19382, 
+14588, 
+7936, 
+539, 
+42206, 
+63750, 
+14394, 
+1500, 
+4864, 
+53085, 
+59962, 
+56462, 
+9809, 
+42206, 
+16384, 
+551, 
+20496, 
+40, 
+14342, 
+3174, 
+32006, 
+256, 
+27102, 
+19537, 
+61054, 
+1500, 
+9299, 
+62464, 
+46947, 
+15012, 
+17664, 
+15360, 
+1099, 
+93, 
+56418, 
+19383, 
+29196, 
+256, 
+10089, 
+256, 
+24882, 
+513, 
+249, 
+24145, 
+17664, 
+56462, 
+6178, 
+56, 
+256, 
+36189, 
+60076, 
+35329, 
+40, 
+63271, 
+28730, 
+56462, 
+1216, 
+257, 
+46998, 
+257, 
+10440, 
+4864, 
+63271, 
+40, 
+282, 
+36563, 
+20504, 
+16384, 
+14394, 
+16384, 
+256, 
+56970, 
+8654, 
+47104, 
+1792, 
+10089, 
+17664, 
+47061, 
+15012, 
+56331, 
+4864, 
+20496, 
+36119, 
+123, 
+10089, 
+4128, 
+14394, 
+10344, 
+1262, 
+21328, 
+39115, 
+24655, 
+56477, 
+112, 
+10468, 
+11013, 
+26724, 
+58693, 
+44933, 
+35330, 
+1500, 
+4576, 
+1863, 
+42206, 
+44608, 
+12032, 
+4130, 
+35329, 
+38912, 
+44289, 
+22096, 
+47864, 
+47616, 
+13294, 
+14394, 
+56380, 
+63103, 
+62281, 
+42206, 
+13441, 
+37312, 
+19383, 
+15012, 
+31750, 
+29197, 
+15012, 
+1024, 
+261, 
+55, 
+63766, 
+114, 
+113, 
+34117, 
+43742, 
+19724, 
+6409, 
+52708, 
+4164, 
+35329, 
+17664, 
+125, 
+57375, 
+53064, 
+24645, 
+7351, 
+2120, 
+953, 
+2395, 
+53306, 
+514, 
+61, 
+51557, 
+222, 
+6177, 
+124, 
+4576, 
+45370, 
+56656, 
+2048, 
+60427, 
+514, 
+35329, 
+1024, 
+5127, 
+39448, 
+39276, 
+50787, 
+260, 
+35329, 
+19869, 
+260, 
+16794, 
+56321, 
+53760, 
+14080, 
+65055, 
+514, 
+514, 
+17664, 
+253, 
+1912, 
+2481, 
+20496, 
+1574, 
+8630, 
+37445, 
+30982, 
+282, 
+39489, 
+31515, 
+46405, 
+64513, 
+118, 
+256, 
+538, 
+65204, 
+16384, 
+12032, 
+6176, 
+42206, 
+1866, 
+43264, 
+6212, 
+304, 
+57289, 
+4576, 
+20521, 
+11470, 
+2048, 
+11834, 
+1500, 
+74, 
+51800, 
+23888, 
+697, 
+16384, 
+11264, 
+20485, 
+4890, 
+12422, 
+35330, 
+54459, 
+16384, 
+2048, 
+263, 
+222, 
+50512, 
+56416, 
+5137, 
+42206, 
+56970, 
+56951, 
+28741, 
+1024, 
+651, 
+35329, 
+5959, 
+10576, 
+56418, 
+2048, 
+5632, 
+774, 
+65297, 
+2816, 
+1839, 
+21140, 
+56970, 
+42994, 
+64133, 
+16384, 
+2048, 
+34560, 
+23957, 
+56970, 
+56370, 
+56832, 
+6760, 
+13518, 
+65024, 
+515, 
+18245, 
+53, 
+43008, 
+11034, 
+18702, 
+15012, 
+14402, 
+64197, 
+56489, 
+50899, 
+32006, 
+259, 
+50899, 
+42206, 
+14394, 
+63750, 
+48935, 
+56970, 
+249, 
+1099, 
+8760, 
+16384, 
+1099, 
+8760, 
+50432, 
+47180, 
+56970, 
+63750, 
+4864, 
+7493, 
+28443, 
+18768, 
+259, 
+32768, 
+5120, 
+6178, 
+40, 
+56, 
+27816, 
+56970, 
+16384, 
+12141, 
+20496, 
+40, 
+5120, 
+27102, 
+259, 
+16384, 
+5120, 
+26915, 
+35329, 
+353, 
+27951, 
+56970, 
+16384, 
+10089, 
+15012, 
+259, 
+11050, 
+44716, 
+4576, 
+8760, 
+17664, 
+5120, 
+10089, 
+39046, 
+56, 
+5120, 
+6178, 
+17664, 
+1032, 
+528, 
+25601, 
+15012, 
+17664, 
+16384, 
+27102, 
+15012, 
+56, 
+5632, 
+20504, 
+30726, 
+46848, 
+256, 
+27102, 
+14394, 
+259, 
+56, 
+4608, 
+5122, 
+56979, 
+56970, 
+14592, 
+5888, 
+3000, 
+58077, 
+52, 
+6400, 
+56656, 
+17664, 
+48325, 
+64000, 
+17218, 
+975, 
+16384, 
+7424, 
+6798, 
+37461, 
+15012, 
+61253, 
+16384, 
+8375, 
+28928, 
+8665, 
+259, 
+50699, 
+1012, 
+256, 
+3589, 
+20496, 
+259, 
+39106, 
+1287, 
+36604, 
+31856, 
+125, 
+1738, 
+256, 
+36615, 
+47917, 
+32784, 
+1039, 
+16468, 
+12362, 
+8760, 
+35329, 
+49250, 
+9728, 
+57004, 
+4421, 
+31238, 
+64000, 
+30550, 
+6394, 
+21061, 
+3840, 
+51463, 
+40381, 
+9216, 
+16384, 
+21313, 
+8760, 
+15012, 
+516, 
+59504, 
+1759, 
+5970, 
+15012, 
+56199, 
+4950, 
+15012, 
+576, 
+31910, 
+256, 
+6688, 
+67, 
+15012, 
+56970, 
+56383, 
+57358, 
+1836, 
+39106, 
+38970, 
+42206, 
+39807, 
+24912, 
+16384, 
+21912, 
+256, 
+26481, 
+20496, 
+56970, 
+59102, 
+17101, 
+65194, 
+50268, 
+16384, 
+56161, 
+35330, 
+35329, 
+17664, 
+651, 
+4157, 
+47429, 
+18949, 
+5221, 
+35329, 
+119, 
+3840, 
+18946, 
+17520, 
+260, 
+5632, 
+25547, 
+1275, 
+2048, 
+26981, 
+29319, 
+14394, 
+32512, 
+2816, 
+41897, 
+35330, 
+4580, 
+28218, 
+52, 
+1615, 
+3847, 
+651, 
+15012, 
+517, 
+1784, 
+263, 
+26915, 
+42206, 
+651, 
+24539, 
+19258, 
+261, 
+30214, 
+7312, 
+19960, 
+15012, 
+17664, 
+37307, 
+15012, 
+51918, 
+250, 
+6173, 
+30621, 
+3847, 
+56161, 
+6177, 
+60, 
+31750, 
+512, 
+26724, 
+51301, 
+24912, 
+35439, 
+10330, 
+3840, 
+2941, 
+17664, 
+256, 
+20504, 
+261, 
+1778, 
+4164, 
+15012, 
+17664, 
+249, 
+8708, 
+58596, 
+27984, 
+56970, 
+261, 
+1550, 
+11116, 
+3771, 
+20504, 
+10485, 
+2048, 
+56970, 
+32581, 
+31750, 
+2048, 
+13058, 
+2390, 
+56970, 
+256, 
+2390, 
+8665, 
+17664, 
+46001, 
+256, 
+17622, 
+517, 
+256, 
+7444, 
+127, 
+38213, 
+10407, 
+1032, 
+36421, 
+31238, 
+4950, 
+21562, 
+1572, 
+23993, 
+47681, 
+42206, 
+256, 
+36949, 
+44368, 
+518, 
+56456, 
+31245, 
+39248, 
+56970, 
+34629, 
+22518, 
+17622, 
+14160, 
+22737, 
+13560, 
+50843, 
+4130, 
+33228, 
+1681, 
+80, 
+29786, 
+18402, 
+31719, 
+1702, 
+35788, 
+35330, 
+1690, 
+31750, 
+2048, 
+51712, 
+22077, 
+518, 
+16384, 
+256, 
+1360, 
+6736, 
+8760, 
+17664, 
+1620, 
+263, 
+18968, 
+13388, 
+20496, 
+35329, 
+1866, 
+58077, 
+17664, 
+8760, 
+17664, 
+41, 
+24025, 
+42206, 
+17391, 
+58, 
+1769, 
+30214, 
+416, 
+13340, 
+56970, 
+118, 
+18949, 
+23888, 
+35329, 
+16384, 
+3840, 
+6760, 
+20496, 
+519, 
+124, 
+256, 
+56400, 
+53562, 
+17664, 
+124, 
+3072, 
+5146, 
+52, 
+1536, 
+7424, 
+1222, 
+263, 
+3328, 
+46874, 
+51, 
+27951, 
+4130, 
+42206, 
+519, 
+1500, 
+21153, 
+6178, 
+42206, 
+119, 
+16077, 
+58, 
+15283, 
+6144, 
+4164, 
+48197, 
+1024, 
+222, 
+22096, 
+1951, 
+16384, 
+26112, 
+5200, 
+17664, 
+53672, 
+4171, 
+124, 
+35608, 
+24539, 
+4164, 
+42206, 
+13562, 
+1024, 
+10496, 
+6307, 
+17520, 
+1500, 
+125, 
+5632, 
+8200, 
+46149, 
+5632, 
+28417, 
+56970, 
+20496, 
+52, 
+1679, 
+31845, 
+65278, 
+16384, 
+6346, 
+39130, 
+56970, 
+17680, 
+119, 
+2500, 
+300, 
+7832, 
+4171, 
+35329, 
+30470, 
+3584, 
+256, 
+43559, 
+56523, 
+15012, 
+22808, 
+124, 
+282, 
+40882, 
+2993, 
+42810, 
+17664, 
+4497, 
+10496, 
+56161, 
+51, 
+20496, 
+15012, 
+56645, 
+3840, 
+6699, 
+24912, 
+35329, 
+124, 
+20496, 
+17520, 
+17664, 
+31750, 
+282, 
+31488, 
+53880, 
+35329, 
+28730, 
+25951, 
+24912, 
+42206, 
+30726, 
+274, 
+520, 
+10496, 
+65024, 
+35329, 
+8760, 
+10324, 
+266, 
+655, 
+27951, 
+13136, 
+7814, 
+59311, 
+256, 
+9084, 
+20496, 
+56970, 
+17664, 
+30470, 
+2560, 
+56970, 
+41, 
+256, 
+49664, 
+4130, 
+521, 
+256, 
+10089, 
+521, 
+31750, 
+2048, 
+7426, 
+2395, 
+2384, 
+14829, 
+64256, 
+5381, 
+47334, 
+521, 
+1775, 
+8760, 
+1572, 
+8197, 
+8760, 
+39168, 
+47386, 
+15012, 
+62396, 
+1572, 
+14394, 
+56331, 
+5120, 
+27102, 
+36755, 
+3007, 
+256, 
+8760, 
+4864, 
+28607, 
+56970, 
+14342, 
+5120, 
+12032, 
+1500, 
+5120, 
+20970, 
+15012, 
+62475, 
+54, 
+10089, 
+47420, 
+56970, 
+26927, 
+7680, 
+2388, 
+56979, 
+13136, 
+50490, 
+36303, 
+256, 
+60696, 
+56970, 
+17664, 
+47616, 
+38827, 
+17664, 
+263, 
+45639, 
+47828, 
+256, 
+4130, 
+4107, 
+5120, 
+49878, 
+63750, 
+353, 
+8760, 
+521, 
+50432, 
+19968, 
+6208, 
+35329, 
+56331, 
+159, 
+56970, 
+2511, 
+48, 
+5343, 
+64551, 
+40, 
+1207, 
+22586, 
+60940, 
+56970, 
+16384, 
+30726, 
+54864, 
+17664, 
+99, 
+11013, 
+32730, 
+17680, 
+63750, 
+20496, 
+15012, 
+63673, 
+36578, 
+49400, 
+732, 
+159, 
+56970, 
+19428, 
+30197, 
+256, 
+61005, 
+15012, 
+266, 
+64006, 
+9216, 
+5122, 
+22934, 
+42206, 
+266, 
+17664, 
+80, 
+35329, 
+40, 
+118, 
+1035, 
+1058, 
+15012, 
+44869, 
+40, 
+31750, 
+50688, 
+256, 
+15012, 
+124, 
+9984, 
+8207, 
+60866, 
+522, 
+6699, 
+57199, 
+31494, 
+14030, 
+8079, 
+42206, 
+17664, 
+16384, 
+256, 
+51514, 
+34824, 
+32784, 
+43637, 
+11520, 
+7287, 
+21174, 
+47584, 
+256, 
+31502, 
+8760, 
+42206, 
+119, 
+20594, 
+13136, 
+2765, 
+120, 
+4160, 
+261, 
+2048, 
+1082, 
+32784, 
+522, 
+8582, 
+35608, 
+47616, 
+56478, 
+256, 
+3106, 
+46829, 
+17664, 
+522, 
+16384, 
+512, 
+4128, 
+124, 
+56951, 
+36154, 
+35329, 
+56342, 
+27904, 
+1163, 
+6166, 
+35329, 
+57793, 
+27238, 
+512, 
+24212, 
+56970, 
+37411, 
+1662, 
+256, 
+18178, 
+27951, 
+4130, 
+23715, 
+120, 
+4608, 
+6699, 
+655, 
+48384, 
+4351, 
+40, 
+48128, 
+263, 
+11017, 
+56656, 
+52480, 
+59604, 
+2096, 
+8464, 
+35330, 
+1557, 
+64065, 
+40283, 
+16384, 
+22914, 
+14416, 
+2984, 
+61238, 
+42206, 
+56410, 
+26297, 
+256, 
+5961, 
+7504, 
+267, 
+56970, 
+17664, 
+21607, 
+51716, 
+35330, 
+111, 
+40077, 
+27205, 
+6077, 
+28672, 
+34665, 
+2534, 
+35329, 
+256, 
+267, 
+28730, 
+59689, 
+6869, 
+35330, 
+17664, 
+16384, 
+768, 
+11780, 
+4130, 
+256, 
+11856, 
+42206, 
+43670, 
+115, 
+3072, 
+27951, 
+60752, 
+3086, 
+16384, 
+38144, 
+20816, 
+35329, 
+16384, 
+8080, 
+7931, 
+14301, 
+51716, 
+5325, 
+51525, 
+122, 
+260, 
+2941, 
+11482, 
+51542, 
+16849, 
+59216, 
+37888, 
+6178, 
+56901, 
+2048, 
+58077, 
+35330, 
+65525, 
+32262, 
+2816, 
+18871, 
+33053, 
+43, 
+655, 
+42206, 
+119, 
+15012, 
+3212, 
+16384, 
+58112, 
+17440, 
+8684, 
+2816, 
+6699, 
+64771, 
+15012, 
+35329, 
+3237, 
+256, 
+22709, 
+56970, 
+3262, 
+48, 
+252, 
+21251, 
+4288, 
+56970, 
+69, 
+52992, 
+256, 
+1165, 
+15283, 
+4130, 
+4096, 
+256, 
+11022, 
+42206, 
+40997, 
+19978, 
+15012, 
+32006, 
+5310, 
+42, 
+42206, 
+16384, 
+6912, 
+9473, 
+42206, 
+23365, 
+5632, 
+655, 
+12803, 
+15622, 
+50047, 
+28730, 
+17664, 
+11034, 
+525, 
+1612, 
+23376, 
+20496, 
+1686, 
+51, 
+269, 
+1500, 
+9984, 
+36839, 
+31245, 
+42206, 
+31750, 
+25858, 
+6774, 
+21840, 
+17664, 
+1500, 
+2388, 
+35329, 
+56901, 
+16384, 
+1642, 
+1360, 
+54751, 
+24561, 
+3072, 
+15012, 
+269, 
+47660, 
+87, 
+18032, 
+71, 
+80, 
+14596, 
+11017, 
+27142, 
+269, 
+17477, 
+1662, 
+25344, 
+2363, 
+42206, 
+5120, 
+14080, 
+5127, 
+65076, 
+49201, 
+125, 
+3328, 
+13294, 
+20496, 
+35329, 
+25214, 
+256, 
+11530, 
+42206, 
+1163, 
+6177, 
+2048, 
+58077, 
+20497, 
+3558, 
+1839, 
+35330, 
+4096, 
+63267, 
+33244, 
+51719, 
+40438, 
+42206, 
+17856, 
+59392, 
+576, 
+3632, 
+3637, 
+12288, 
+26704, 
+17446, 
+1662, 
+27461, 
+10446, 
+256, 
+42206, 
+14394, 
+45332, 
+31528, 
+49210, 
+17664, 
+29446, 
+39760, 
+56331, 
+1099, 
+35330, 
+27648, 
+8760, 
+26880, 
+31245, 
+51002, 
+63750, 
+369, 
+46976, 
+3048, 
+19386, 
+42206, 
+11264, 
+12711, 
+24752, 
+16384, 
+256, 
+8760, 
+56970, 
+1500, 
+23296, 
+12809, 
+27102, 
+35330, 
+36404, 
+494, 
+56979, 
+36270, 
+47734, 
+15012, 
+56462, 
+47751, 
+42206, 
+1639, 
+24836, 
+27102, 
+3397, 
+36266, 
+256, 
+336, 
+16001, 
+20736, 
+24836, 
+54016, 
+6178, 
+56970, 
+40, 
+1723, 
+20496, 
+41728, 
+6760, 
+56979, 
+65201, 
+16384, 
+56656, 
+58880, 
+6688, 
+20496, 
+15012, 
+10089, 
+526, 
+5888, 
+47785, 
+35330, 
+63750, 
+34599, 
+4129, 
+4864, 
+36524, 
+17520, 
+3909, 
+56, 
+256, 
+5122, 
+20496, 
+56970, 
+6869, 
+13830, 
+11008, 
+35330, 
+1360, 
+40263, 
+56420, 
+17330, 
+1163, 
+47819, 
+1024, 
+26877, 
+50501, 
+63744, 
+23957, 
+15012, 
+122, 
+1714, 
+256, 
+35091, 
+18757, 
+37573, 
+49920, 
+20496, 
+17664, 
+256, 
+21288, 
+20496, 
+256, 
+44368, 
+41, 
+52, 
+1280, 
+25773, 
+256, 
+32262, 
+32961, 
+41285, 
+1779, 
+256, 
+57017, 
+20504, 
+78, 
+17664, 
+3979, 
+42206, 
+44294, 
+35586, 
+15984, 
+33866, 
+7936, 
+62457, 
+15012, 
+256, 
+24389, 
+1539, 
+1024, 
+44201, 
+8011, 
+30265, 
+7232, 
+3840, 
+1792, 
+3630, 
+43870, 
+56971, 
+124, 
+18970, 
+538, 
+56971, 
+14661, 
+1662, 
+21504, 
+8661, 
+256, 
+256, 
+6346, 
+19728, 
+10478, 
+280, 
+6960, 
+56971, 
+30726, 
+35073, 
+256, 
+1024, 
+32784, 
+17664, 
+16384, 
+41, 
+58, 
+17664, 
+31494, 
+44544, 
+4351, 
+16384, 
+55552, 
+8760, 
+1686, 
+19761, 
+12803, 
+42206, 
+513, 
+1648, 
+27156, 
+42206, 
+513, 
+1653, 
+6869, 
+35585, 
+1500, 
+31750, 
+256, 
+13058, 
+17406, 
+16384, 
+65282, 
+257, 
+43008, 
+256, 
+11009, 
+34128, 
+314, 
+56432, 
+27331, 
+20496, 
+35585, 
+8976, 
+4864, 
+9478, 
+2466, 
+58, 
+48307, 
+538, 
+15012, 
+1622, 
+52584, 
+45294, 
+43870, 
+16384, 
+16640, 
+34628, 
+3085, 
+4130, 
+23109, 
+56576, 
+256, 
+27102, 
+56332, 
+4864, 
+15012, 
+31761, 
+256, 
+27102, 
+62021, 
+33982, 
+12071, 
+49862, 
+9263, 
+47927, 
+24645, 
+10089, 
+513, 
+48027, 
+10089, 
+513, 
+37888, 
+113, 
+56971, 
+51399, 
+31494, 
+5120, 
+63271, 
+56971, 
+16384, 
+31855, 
+20304, 
+10345, 
+27207, 
+24576, 
+63271, 
+20504, 
+257, 
+10345, 
+4432, 
+27102, 
+42206, 
+53061, 
+1024, 
+11524, 
+20496, 
+16896, 
+10429, 
+256, 
+1059, 
+20496, 
+489, 
+4537, 
+20496, 
+17664, 
+4864, 
+47373, 
+32069, 
+1368, 
+20504, 
+23598, 
+62621, 
+65286, 
+258, 
+63813, 
+49920, 
+256, 
+27102, 
+35586, 
+29702, 
+5120, 
+27102, 
+35585, 
+3122, 
+24576, 
+6178, 
+7443, 
+63750, 
+44294, 
+42206, 
+9603, 
+16384, 
+5120, 
+21504, 
+56979, 
+10924, 
+17664, 
+31494, 
+14862, 
+7620, 
+42206, 
+63750, 
+48053, 
+45062, 
+5120, 
+15012, 
+38783, 
+19200, 
+15757, 
+15012, 
+1719, 
+256, 
+51716, 
+33018, 
+258, 
+17664, 
+34560, 
+2466, 
+47427, 
+42206, 
+49668, 
+24576, 
+3072, 
+49350, 
+4130, 
+135, 
+1638, 
+1262, 
+36578, 
+11498, 
+51730, 
+39183, 
+680, 
+49152, 
+1765, 
+24576, 
+11290, 
+18334, 
+22570, 
+35586, 
+27973, 
+52, 
+1105, 
+42, 
+15012, 
+5239, 
+63750, 
+19387, 
+39846, 
+35586, 
+249, 
+16032, 
+56979, 
+35586, 
+10496, 
+59595, 
+36421, 
+256, 
+11017, 
+27102, 
+256, 
+10089, 
+28730, 
+120, 
+1099, 
+4154, 
+17664, 
+249, 
+289, 
+15012, 
+63750, 
+24836, 
+8760, 
+56332, 
+27102, 
+35585, 
+3157, 
+4864, 
+4130, 
+4864, 
+48235, 
+35585, 
+40, 
+24836, 
+52867, 
+14342, 
+512, 
+63271, 
+36078, 
+36208, 
+84, 
+1216, 
+41808, 
+733, 
+123, 
+353, 
+27102, 
+15012, 
+48197, 
+16384, 
+2048, 
+58298, 
+32736, 
+4864, 
+35585, 
+96, 
+841, 
+47696, 
+55621, 
+33828, 
+4864, 
+14394, 
+10746, 
+114, 
+353, 
+10089, 
+9190, 
+42239, 
+125, 
+512, 
+353, 
+37707, 
+35586, 
+17664, 
+1570, 
+280, 
+20480, 
+41770, 
+820, 
+13398, 
+1629, 
+45544, 
+43578, 
+31750, 
+12032, 
+20504, 
+31750, 
+256, 
+4327, 
+51, 
+15012, 
+853, 
+58077, 
+55866, 
+5445, 
+50552, 
+1755, 
+57, 
+10510, 
+14336, 
+48698, 
+17664, 
+41216, 
+8201, 
+11268, 
+53085, 
+56511, 
+48607, 
+39424, 
+7789, 
+4224, 
+16384, 
+25600, 
+43148, 
+259, 
+32837, 
+25242, 
+46860, 
+42222, 
+4164, 
+40, 
+16384, 
+31761, 
+256, 
+90, 
+63, 
+11119, 
+14394, 
+56971, 
+10264, 
+13760, 
+259, 
+124, 
+32662, 
+14336, 
+17520, 
+56508, 
+22272, 
+19968, 
+17664, 
+25626, 
+4129, 
+35585, 
+29446, 
+38981, 
+28730, 
+16384, 
+4432, 
+60808, 
+59042, 
+1003, 
+42013, 
+4129, 
+28741, 
+256, 
+10752, 
+123, 
+27951, 
+720, 
+1500, 
+31249, 
+21504, 
+11034, 
+27951, 
+52558, 
+42206, 
+13736, 
+361, 
+11008, 
+20496, 
+42206, 
+15012, 
+1024, 
+1410, 
+4164, 
+21802, 
+58769, 
+58962, 
+58077, 
+61572, 
+31750, 
+11911, 
+20239, 
+9285, 
+2366, 
+21646, 
+62522, 
+124, 
+27136, 
+35585, 
+38252, 
+3923, 
+901, 
+35585, 
+1362, 
+38400, 
+17664, 
+21639, 
+45326, 
+8760, 
+58539, 
+222, 
+1500, 
+20737, 
+35585, 
+47872, 
+56951, 
+56462, 
+2246, 
+35585, 
+256, 
+20496, 
+11077, 
+57631, 
+19678, 
+25773, 
+260, 
+16384, 
+1500, 
+1280, 
+40, 
+256, 
+25773, 
+15012, 
+8150, 
+2048, 
+62690, 
+44101, 
+8167, 
+260, 
+517, 
+256, 
+20504, 
+6725, 
+124, 
+56577, 
+28674, 
+42309, 
+1621, 
+65063, 
+8962, 
+17664, 
+56418, 
+2609, 
+58698, 
+6159, 
+64774, 
+18178, 
+1222, 
+118, 
+1327, 
+35585, 
+457, 
+49563, 
+252, 
+35074, 
+28730, 
+1333, 
+37378, 
+256, 
+36930, 
+10468, 
+508, 
+16384, 
+656, 
+6178, 
+1280, 
+64000, 
+22064, 
+21316, 
+10468, 
+8218, 
+1715, 
+2048, 
+56951, 
+25294, 
+1280, 
+1391, 
+37946, 
+31381, 
+125, 
+67, 
+4288, 
+1422, 
+121, 
+21333, 
+32768, 
+35586, 
+1703, 
+3088, 
+35585, 
+20104, 
+261, 
+16384, 
+1453, 
+517, 
+35585, 
+12421, 
+31750, 
+256, 
+2808, 
+58, 
+261, 
+29758, 
+222, 
+28730, 
+51055, 
+56832, 
+56971, 
+17664, 
+38656, 
+256, 
+2388, 
+39444, 
+42206, 
+2539, 
+124, 
+778, 
+6699, 
+12229, 
+22750, 
+35586, 
+16384, 
+256, 
+1360, 
+503, 
+6178, 
+1500, 
+1709, 
+4130, 
+262, 
+10340, 
+42206, 
+1566, 
+538, 
+44368, 
+46661, 
+8192, 
+56971, 
+3397, 
+1280, 
+24451, 
+59188, 
+15012, 
+262, 
+21353, 
+53187, 
+16568, 
+1536, 
+290, 
+32826, 
+1664, 
+27005, 
+39943, 
+65221, 
+8360, 
+5888, 
+31380, 
+26411, 
+262, 
+40, 
+32448, 
+25088, 
+53120, 
+50385, 
+12544, 
+1222, 
+56971, 
+47182, 
+31750, 
+8249, 
+24539, 
+15012, 
+282, 
+64212, 
+6159, 
+56971, 
+56518, 
+30470, 
+60269, 
+14394, 
+17664, 
+16384, 
+8704, 
+3847, 
+6345, 
+43600, 
+35585, 
+16384, 
+2048, 
+652, 
+65201, 
+17664, 
+13754, 
+15012, 
+1760, 
+8798, 
+28730, 
+42206, 
+1615, 
+256, 
+6346, 
+3605, 
+14394, 
+124, 
+29440, 
+33399, 
+20816, 
+1129, 
+31246, 
+228, 
+35586, 
+1923, 
+1500, 
+30726, 
+1836, 
+652, 
+57199, 
+31238, 
+1098, 
+28060, 
+5712, 
+42565, 
+41276, 
+15910, 
+1453, 
+33433, 
+4130, 
+35585, 
+16384, 
+39680, 
+80, 
+25951, 
+16794, 
+58181, 
+31494, 
+6699, 
+20496, 
+16384, 
+29319, 
+55990, 
+3106, 
+53683, 
+42206, 
+16384, 
+256, 
+45417, 
+65194, 
+17664, 
+15872, 
+11034, 
+10720, 
+58, 
+1774, 
+26724, 
+656, 
+7504, 
+35585, 
+16384, 
+1663, 
+1165, 
+29818, 
+35699, 
+4164, 
+8760, 
+135, 
+256, 
+42206, 
+14342, 
+52, 
+3589, 
+14333, 
+30001, 
+45970, 
+2369, 
+1091, 
+30080, 
+35586, 
+10365, 
+123, 
+6688, 
+1082, 
+23632, 
+15012, 
+2199, 
+10565, 
+56520, 
+49299, 
+8417, 
+15012, 
+56355, 
+45662, 
+12032, 
+80, 
+14394, 
+11333, 
+16384, 
+13568, 
+28820, 
+56971, 
+30726, 
+61175, 
+20496, 
+139, 
+42, 
+264, 
+2278, 
+32006, 
+106, 
+33796, 
+42206, 
+19484, 
+42206, 
+6207, 
+1536, 
+28496, 
+17664, 
+63750, 
+4864, 
+16794, 
+35586, 
+16384, 
+27015, 
+4130, 
+14394, 
+1500, 
+256, 
+27102, 
+256, 
+56979, 
+56971, 
+5120, 
+274, 
+6204, 
+53760, 
+48389, 
+6177, 
+52736, 
+25626, 
+19388, 
+7464, 
+32006, 
+61175, 
+15632, 
+521, 
+1776, 
+353, 
+521, 
+17664, 
+9163, 
+353, 
+15012, 
+48140, 
+61175, 
+14394, 
+19200, 
+256, 
+48458, 
+56971, 
+3211, 
+56979, 
+14736, 
+40, 
+14342, 
+256, 
+1262, 
+27102, 
+4164, 
+16384, 
+5120, 
+12041, 
+31087, 
+20496, 
+19489, 
+125, 
+45, 
+538, 
+44, 
+15012, 
+35586, 
+44, 
+301, 
+15012, 
+35586, 
+1334, 
+15012, 
+249, 
+4864, 
+1688, 
+35586, 
+1574, 
+4864, 
+49950, 
+256, 
+56979, 
+43589, 
+1574, 
+1216, 
+35408, 
+15012, 
+1677, 
+11034, 
+30550, 
+56971, 
+16384, 
+256, 
+353, 
+20857, 
+42206, 
+521, 
+31750, 
+8960, 
+13568, 
+40528, 
+42206, 
+17664, 
+124, 
+256, 
+49, 
+4224, 
+35586, 
+45469, 
+16384, 
+256, 
+51723, 
+28544, 
+2497, 
+16384, 
+14848, 
+2304, 
+6869, 
+265, 
+97, 
+11264, 
+17664, 
+4171, 
+35585, 
+22645, 
+59648, 
+1801, 
+24084, 
+56971, 
+27200, 
+2547, 
+521, 
+56971, 
+7439, 
+15012, 
+17664, 
+1361, 
+5122, 
+12329, 
+2015, 
+1572, 
+31750, 
+6699, 
+15005, 
+32080, 
+2581, 
+1622, 
+35952, 
+4112, 
+42206, 
+55552, 
+2609, 
+35393, 
+35585, 
+58949, 
+1649, 
+4888, 
+2467, 
+42206, 
+38144, 
+1208, 
+17218, 
+56971, 
+2633, 
+123, 
+4352, 
+2048, 
+656, 
+47184, 
+56971, 
+62208, 
+6798, 
+17664, 
+5248, 
+25620, 
+30214, 
+25601, 
+51514, 
+35585, 
+40, 
+39680, 
+25626, 
+2384, 
+8760, 
+31165, 
+30726, 
+40308, 
+15113, 
+28730, 
+35586, 
+30726, 
+538, 
+42206, 
+42206, 
+2747, 
+119, 
+63750, 
+6918, 
+6177, 
+56971, 
+2773, 
+45972, 
+1031, 
+13058, 
+42206, 
+56475, 
+965, 
+26724, 
+2048, 
+14665, 
+35585, 
+249, 
+2962, 
+35453, 
+35408, 
+35585, 
+122, 
+1762, 
+11034, 
+49664, 
+42206, 
+31750, 
+2481, 
+58118, 
+42206, 
+30533, 
+16384, 
+7351, 
+41728, 
+7789, 
+16223, 
+4531, 
+58, 
+29702, 
+1280, 
+6178, 
+253, 
+20737, 
+64518, 
+16925, 
+16384, 
+3584, 
+8080, 
+2986, 
+56418, 
+2048, 
+768, 
+16829, 
+32080, 
+1280, 
+21374, 
+17664, 
+1361, 
+12317, 
+49240, 
+2048, 
+8207, 
+50142, 
+20496, 
+16384, 
+19975, 
+6307, 
+6177, 
+523, 
+256, 
+1897, 
+6465, 
+17664, 
+13732, 
+2072, 
+5325, 
+523, 
+37278, 
+5325, 
+21573, 
+111, 
+47836, 
+56491, 
+125, 
+58819, 
+57567, 
+13312, 
+1077, 
+42206, 
+3072, 
+57304, 
+15012, 
+17664, 
+6346, 
+45417, 
+42206, 
+37892, 
+5781, 
+41797, 
+249, 
+4864, 
+33070, 
+3077, 
+15012, 
+249, 
+27005, 
+56979, 
+56971, 
+63750, 
+1099, 
+57199, 
+268, 
+30726, 
+31311, 
+50304, 
+17664, 
+120, 
+63271, 
+33506, 
+3101, 
+1500, 
+256, 
+6178, 
+56979, 
+5120, 
+56979, 
+17664, 
+4864, 
+31087, 
+14394, 
+6469, 
+9116, 
+19390, 
+11348, 
+14342, 
+256, 
+10846, 
+8760, 
+11716, 
+3254, 
+1024, 
+40167, 
+268, 
+9797, 
+6346, 
+55691, 
+33605, 
+1571, 
+61175, 
+56122, 
+22853, 
+256, 
+61175, 
+6175, 
+268, 
+57, 
+256, 
+48715, 
+15012, 
+376, 
+51712, 
+43066, 
+18820, 
+10345, 
+36137, 
+105, 
+33792, 
+8760, 
+17664, 
+96, 
+44, 
+7174, 
+26167, 
+13882, 
+5120, 
+10089, 
+8005, 
+1571, 
+15143, 
+56971, 
+1790, 
+15012, 
+43357, 
+353, 
+27102, 
+15012, 
+36373, 
+11154, 
+256, 
+5961, 
+20496, 
+4164, 
+35586, 
+24901, 
+116, 
+24576, 
+1091, 
+6380, 
+10810, 
+40, 
+3335, 
+901, 
+42206, 
+524, 
+12470, 
+124, 
+4608, 
+256, 
+56979, 
+15012, 
+268, 
+16384, 
+80, 
+19390, 
+24820, 
+13398, 
+3585, 
+58298, 
+58, 
+124, 
+36318, 
+55045, 
+124, 
+37889, 
+56971, 
+124, 
+2048, 
+17664, 
+10249, 
+44428, 
+17664, 
+22570, 
+5684, 
+1304, 
+122, 
+13568, 
+8192, 
+29204, 
+6177, 
+525, 
+15622, 
+256, 
+12218, 
+42206, 
+16384, 
+266, 
+26481, 
+49210, 
+31813, 
+16384, 
+256, 
+28999, 
+7201, 
+42206, 
+3373, 
+3648, 
+10392, 
+8758, 
+13991, 
+15745, 
+40859, 
+44289, 
+269, 
+52293, 
+5120, 
+20496, 
+364, 
+8576, 
+1500, 
+53454, 
+1288, 
+16829, 
+19795, 
+4130, 
+3430, 
+16559, 
+36352, 
+8197, 
+20504, 
+3435, 
+1500, 
+45568, 
+3271, 
+59255, 
+56971, 
+17664, 
+252, 
+36578, 
+1024, 
+15012, 
+1617, 
+63271, 
+4666, 
+17664, 
+15360, 
+2048, 
+14658, 
+35586, 
+1567, 
+31744, 
+10752, 
+19436, 
+1242, 
+32006, 
+282, 
+65050, 
+33070, 
+20504, 
+50471, 
+32000, 
+14394, 
+3277, 
+1099, 
+15012, 
+3281, 
+19390, 
+42206, 
+3284, 
+48829, 
+35586, 
+9077, 
+10089, 
+35586, 
+19390, 
+4164, 
+3545, 
+152, 
+6178, 
+16384, 
+45863, 
+16384, 
+1262, 
+15012, 
+56332, 
+24836, 
+37552, 
+269, 
+56, 
+353, 
+14394, 
+31750, 
+56971, 
+249, 
+27102, 
+3051, 
+20496, 
+16384, 
+10089, 
+55365, 
+1262, 
+29312, 
+40, 
+19200, 
+19391, 
+35586, 
+353, 
+58, 
+256, 
+28114, 
+3581, 
+48955, 
+3585, 
+99, 
+24836, 
+48967, 
+15012, 
+17664, 
+10089, 
+58949, 
+256, 
+22439, 
+35586, 
+62476, 
+4130, 
+17664, 
+9533, 
+512, 
+3602, 
+63750, 
+1677, 
+63271, 
+34874, 
+24663, 
+6699, 
+49152, 
+17165, 
+17956, 
+2048, 
+8981, 
+22586, 
+3840, 
+1032, 
+56413, 
+35585, 
+52, 
+6699, 
+15012, 
+1500, 
+124, 
+52992, 
+64204, 
+15012, 
+35586, 
+16384, 
+64071, 
+47880, 
+27102, 
+20504, 
+270, 
+16384, 
+34560, 
+35408, 
+62522, 
+3726, 
+10258, 
+7622, 
+25626, 
+43077, 
+31719, 
+4164, 
+10401, 
+35585, 
+56460, 
+135, 
+536, 
+38912, 
+19258, 
+77, 
+65483, 
+42055, 
+512, 
+526, 
+56971, 
+7878, 
+84, 
+13568, 
+18256, 
+46405, 
+19477, 
+14394, 
+124, 
+12218, 
+10136, 
+16384, 
+56, 
+15012, 
+17664, 
+25406, 
+4666, 
+17664, 
+15012, 
+252, 
+36677, 
+36578, 
+31750, 
+256, 
+10094, 
+58, 
+15012, 
+17664, 
+16384, 
+35586, 
+44680, 
+64000, 
+45568, 
+30017, 
+51959, 
+8424, 
+125, 
+11008, 
+61100, 
+17664, 
+120, 
+902, 
+63439, 
+35586, 
+2048, 
+17520, 
+22016, 
+2562, 
+42206, 
+256, 
+11780, 
+1059, 
+40, 
+125, 
+512, 
+24120, 
+6173, 
+9649, 
+1500, 
+13317, 
+124, 
+1654, 
+38144, 
+2048, 
+1024, 
+17856, 
+6160, 
+249, 
+902, 
+42206, 
+63439, 
+56972, 
+41, 
+26724, 
+96, 
+46661, 
+115, 
+512, 
+6688, 
+35997, 
+20496, 
+17664, 
+8192, 
+20504, 
+256, 
+17664, 
+47647, 
+35841, 
+1695, 
+1024, 
+7424, 
+17619, 
+4224, 
+15012, 
+56972, 
+10319, 
+1124, 
+28218, 
+512, 
+179, 
+256, 
+1597, 
+65082, 
+53, 
+256, 
+62006, 
+33920, 
+42206, 
+1500, 
+80, 
+50402, 
+1024, 
+43870, 
+20504, 
+124, 
+4096, 
+1098, 
+46112, 
+11988, 
+58, 
+122, 
+14848, 
+4096, 
+6960, 
+23376, 
+42206, 
+137, 
+1147, 
+31311, 
+56972, 
+60132, 
+125, 
+6688, 
+38162, 
+56972, 
+17664, 
+10086, 
+56972, 
+54853, 
+6699, 
+56972, 
+16384, 
+52, 
+13440, 
+20504, 
+35841, 
+31750, 
+8704, 
+4350, 
+10317, 
+16384, 
+8425, 
+20504, 
+16384, 
+19391, 
+42206, 
+71, 
+56979, 
+42206, 
+63750, 
+8760, 
+17664, 
+48719, 
+56972, 
+16384, 
+6178, 
+5120, 
+56333, 
+529, 
+61859, 
+35842, 
+1028, 
+10346, 
+19391, 
+42206, 
+56333, 
+1099, 
+42206, 
+56333, 
+256, 
+56979, 
+17664, 
+30470, 
+9998, 
+7504, 
+52172, 
+14394, 
+58693, 
+5120, 
+1222, 
+15012, 
+17664, 
+120, 
+24836, 
+6145, 
+45370, 
+31750, 
+15012, 
+12357, 
+14342, 
+25651, 
+56972, 
+20942, 
+38895, 
+42352, 
+43967, 
+15012, 
+343, 
+25343, 
+11034, 
+49206, 
+35842, 
+357, 
+249, 
+16763, 
+56972, 
+17664, 
+4130, 
+56972, 
+62208, 
+49240, 
+65188, 
+1573, 
+13882, 
+366, 
+256, 
+9729, 
+42042, 
+37707, 
+56972, 
+30464, 
+4864, 
+6869, 
+1283, 
+6394, 
+56972, 
+23350, 
+1360, 
+42885, 
+9631, 
+6346, 
+36684, 
+16472, 
+55065, 
+14394, 
+10346, 
+2469, 
+5712, 
+61545, 
+1024, 
+261, 
+49280, 
+47669, 
+30464, 
+42206, 
+25580, 
+56972, 
+118, 
+256, 
+6688, 
+4111, 
+15012, 
+257, 
+31750, 
+256, 
+6409, 
+11722, 
+26170, 
+476, 
+1500, 
+301, 
+6970, 
+23109, 
+56545, 
+31750, 
+25603, 
+42206, 
+256, 
+20484, 
+62522, 
+10372, 
+1624, 
+256, 
+3840, 
+6346, 
+20916, 
+524, 
+49920, 
+25626, 
+4224, 
+546, 
+31238, 
+2816, 
+51770, 
+58, 
+35842, 
+52, 
+6021, 
+256, 
+51463, 
+39272, 
+4351, 
+16384, 
+39272, 
+35842, 
+252, 
+512, 
+15012, 
+2048, 
+50000, 
+48186, 
+17664, 
+8304, 
+514, 
+56133, 
+56600, 
+51777, 
+47685, 
+16384, 
+6688, 
+4351, 
+34814, 
+1024, 
+14908, 
+6212, 
+56972, 
+7704, 
+18859, 
+19392, 
+19781, 
+1638, 
+45417, 
+6178, 
+42206, 
+30982, 
+1024, 
+13576, 
+51823, 
+29697, 
+42435, 
+28730, 
+32006, 
+1024, 
+260, 
+3328, 
+14394, 
+60, 
+3840, 
+55270, 
+58, 
+57755, 
+41984, 
+32031, 
+514, 
+56320, 
+16599, 
+59912, 
+56457, 
+9472, 
+2941, 
+124, 
+256, 
+6699, 
+36124, 
+754, 
+56614, 
+56972, 
+1280, 
+6869, 
+17664, 
+125, 
+2048, 
+1500, 
+15012, 
+1774, 
+6400, 
+64595, 
+35842, 
+249, 
+8760, 
+56333, 
+256, 
+6178, 
+23552, 
+56972, 
+16384, 
+4864, 
+8760, 
+1500, 
+19392, 
+35842, 
+249, 
+1099, 
+35841, 
+52745, 
+768, 
+27102, 
+20496, 
+17664, 
+53504, 
+353, 
+56979, 
+2304, 
+26373, 
+56979, 
+56333, 
+10089, 
+60741, 
+12289, 
+249, 
+8760, 
+17664, 
+159, 
+10089, 
+8784, 
+15012, 
+14413, 
+14342, 
+6346, 
+32736, 
+40, 
+46642, 
+20483, 
+42294, 
+20496, 
+17664, 
+1725, 
+256, 
+9697, 
+17664, 
+58624, 
+53031, 
+10346, 
+25936, 
+1500, 
+1642, 
+42206, 
+1537, 
+94, 
+4130, 
+20235, 
+20496, 
+17664, 
+36032, 
+1341, 
+17218, 
+56972, 
+17664, 
+252, 
+453, 
+26981, 
+58, 
+886, 
+4585, 
+9217, 
+20496, 
+892, 
+56950, 
+38336, 
+4164, 
+35841, 
+6409, 
+2452, 
+10328, 
+42206, 
+124, 
+159, 
+1165, 
+14658, 
+20496, 
+15012, 
+28485, 
+56, 
+57243, 
+8888, 
+40253, 
+27984, 
+58, 
+56972, 
+1624, 
+35841, 
+16384, 
+56, 
+417, 
+1262, 
+40214, 
+49494, 
+959, 
+1688, 
+720, 
+9029, 
+125, 
+256, 
+41434, 
+27005, 
+15012, 
+1291, 
+28999, 
+57308, 
+35842, 
+1280, 
+11072, 
+41434, 
+1776, 
+29161, 
+15012, 
+16894, 
+29958, 
+265, 
+56972, 
+19264, 
+51723, 
+516, 
+7453, 
+106, 
+8668, 
+27136, 
+8926, 
+42206, 
+16384, 
+62134, 
+282, 
+6688, 
+15012, 
+16384, 
+10752, 
+57199, 
+260, 
+6869, 
+17664, 
+1024, 
+56972, 
+18944, 
+27005, 
+6667, 
+19393, 
+28730, 
+17664, 
+47898, 
+35842, 
+25925, 
+16384, 
+1099, 
+39991, 
+43088, 
+15012, 
+16384, 
+61780, 
+20504, 
+56348, 
+5888, 
+282, 
+42, 
+15012, 
+1500, 
+256, 
+16666, 
+15012, 
+1500, 
+2048, 
+28447, 
+35842, 
+34304, 
+49502, 
+35842, 
+1500, 
+13312, 
+56979, 
+1500, 
+42206, 
+56333, 
+4130, 
+16384, 
+19393, 
+516, 
+256, 
+14394, 
+123, 
+61175, 
+56144, 
+256, 
+14394, 
+27219, 
+1098, 
+327, 
+1262, 
+4130, 
+56333, 
+256, 
+56979, 
+1482, 
+8918, 
+63271, 
+35842, 
+1557, 
+56979, 
+1262, 
+26724, 
+261, 
+22081, 
+36007, 
+1024, 
+60240, 
+6706, 
+27229, 
+50401, 
+3072, 
+56979, 
+8760, 
+42206, 
+5120, 
+55079, 
+38981, 
+2905, 
+56972, 
+16384, 
+20720, 
+35841, 
+16384, 
+40960, 
+6688, 
+56979, 
+3942, 
+56972, 
+628, 
+31750, 
+5120, 
+30466, 
+42160, 
+1099, 
+17025, 
+517, 
+30214, 
+256, 
+60473, 
+39604, 
+42206, 
+17664, 
+4352, 
+7168, 
+37892, 
+42206, 
+38725, 
+1538, 
+256, 
+20504, 
+17664, 
+125, 
+2560, 
+35079, 
+3976, 
+14394, 
+30211, 
+31750, 
+3051, 
+1688, 
+29568, 
+56972, 
+125, 
+78, 
+57, 
+6179, 
+39692, 
+8829, 
+282, 
+6177, 
+45125, 
+10402, 
+31750, 
+113, 
+20504, 
+1462, 
+56339, 
+62208, 
+51463, 
+11524, 
+20504, 
+15012, 
+124, 
+2048, 
+35152, 
+1500, 
+13568, 
+37889, 
+1518, 
+8218, 
+63627, 
+3840, 
+20496, 
+21573, 
+64204, 
+11032, 
+39846, 
+56972, 
+63750, 
+16641, 
+13882, 
+29253, 
+1777, 
+1285, 
+33253, 
+14394, 
+49221, 
+1539, 
+6699, 
+59392, 
+6240, 
+12488, 
+119, 
+1777, 
+1866, 
+149, 
+4129, 
+518, 
+40, 
+30981, 
+256, 
+56161, 
+14394, 
+35841, 
+1738, 
+37039, 
+8364, 
+41530, 
+123, 
+256, 
+370, 
+15012, 
+226, 
+16384, 
+6346, 
+4224, 
+42206, 
+34028, 
+1500, 
+61, 
+29568, 
+1764, 
+256, 
+6760, 
+1718, 
+10323, 
+14854, 
+47908, 
+51536, 
+49210, 
+4432, 
+30671, 
+6208, 
+262, 
+12357, 
+56460, 
+15646, 
+20496, 
+35841, 
+3942, 
+35841, 
+10422, 
+31494, 
+24416, 
+28730, 
+19731, 
+18949, 
+56972, 
+50555, 
+57519, 
+592, 
+212, 
+7983, 
+4272, 
+14978, 
+32730, 
+16384, 
+1612, 
+1287, 
+14658, 
+49210, 
+1579, 
+512, 
+9998, 
+8188, 
+17664, 
+25098, 
+39805, 
+84, 
+2213, 
+5200, 
+35842, 
+1500, 
+1759, 
+50459, 
+61572, 
+17664, 
+9728, 
+479, 
+15012, 
+56, 
+1453, 
+48175, 
+28218, 
+35842, 
+282, 
+49485, 
+16077, 
+57402, 
+1893, 
+1500, 
+256, 
+15012, 
+11264, 
+42028, 
+17518, 
+56972, 
+10475, 
+1759, 
+43507, 
+28218, 
+16384, 
+5120, 
+10089, 
+48197, 
+8894, 
+25851, 
+6213, 
+8890, 
+49787, 
+35842, 
+249, 
+39719, 
+519, 
+63750, 
+1099, 
+42206, 
+16384, 
+19394, 
+42206, 
+249, 
+56979, 
+17664, 
+63750, 
+19394, 
+63258, 
+35842, 
+1570, 
+49913, 
+17664, 
+35986, 
+717, 
+20504, 
+56972, 
+256, 
+36352, 
+1202, 
+56979, 
+6211, 
+40363, 
+10346, 
+1792, 
+5120, 
+80, 
+30145, 
+20496, 
+7424, 
+10089, 
+20504, 
+56972, 
+4864, 
+9729, 
+17232, 
+17664, 
+35830, 
+256, 
+3923, 
+49924, 
+57925, 
+717, 
+8760, 
+35842, 
+1574, 
+28218, 
+16384, 
+49951, 
+56972, 
+17664, 
+16384, 
+49958, 
+35841, 
+16384, 
+9342, 
+6380, 
+13882, 
+17664, 
+1601, 
+1262, 
+56378, 
+31238, 
+53, 
+61175, 
+49964, 
+1991, 
+29745, 
+2048, 
+15130, 
+20496, 
+8760, 
+519, 
+37445, 
+35808, 
+113, 
+2220, 
+1024, 
+49744, 
+35842, 
+16384, 
+10752, 
+63258, 
+14394, 
+59024, 
+17152, 
+57359, 
+63258, 
+35841, 
+17664, 
+20496, 
+263, 
+14342, 
+61175, 
+22608, 
+15012, 
+4677, 
+256, 
+9312, 
+31246, 
+6398, 
+2071, 
+124, 
+256, 
+20307, 
+15012, 
+119, 
+256, 
+3923, 
+28730, 
+17664, 
+6699, 
+6760, 
+122, 
+44032, 
+15360, 
+43889, 
+20496, 
+17664, 
+4306, 
+15104, 
+13689, 
+40, 
+13751, 
+256, 
+6688, 
+2128, 
+4350, 
+17664, 
+768, 
+4576, 
+49664, 
+56972, 
+40, 
+1650, 
+57199, 
+4350, 
+17664, 
+21598, 
+16566, 
+47461, 
+5840, 
+16384, 
+14592, 
+6688, 
+21402, 
+7789, 
+15012, 
+56493, 
+32006, 
+6688, 
+31901, 
+2213, 
+13341, 
+13568, 
+63032, 
+42206, 
+43883, 
+30470, 
+1280, 
+2222, 
+7673, 
+256, 
+6346, 
+11856, 
+1500, 
+57632, 
+55610, 
+49300, 
+122, 
+256, 
+8326, 
+252, 
+20496, 
+8960, 
+34560, 
+21407, 
+16384, 
+57017, 
+264, 
+35841, 
+2048, 
+8760, 
+9984, 
+19876, 
+56972, 
+13340, 
+37632, 
+8349, 
+39680, 
+33439, 
+6760, 
+35841, 
+20496, 
+42206, 
+47872, 
+4363, 
+36578, 
+49920, 
+31105, 
+42206, 
+17664, 
+512, 
+67, 
+265, 
+7424, 
+6960, 
+21306, 
+2360, 
+10754, 
+1556, 
+20485, 
+4164, 
+35842, 
+2377, 
+29446, 
+1629, 
+23710, 
+15012, 
+2386, 
+13859, 
+1754, 
+282, 
+14481, 
+720, 
+56972, 
+62080, 
+256, 
+8064, 
+15012, 
+15941, 
+355, 
+94, 
+42206, 
+29747, 
+16384, 
+17664, 
+20762, 
+11009, 
+56700, 
+33872, 
+45312, 
+20748, 
+62281, 
+8760, 
+15012, 
+40156, 
+16384, 
+256, 
+1024, 
+38162, 
+33251, 
+8250, 
+17664, 
+116, 
+2048, 
+27374, 
+20504, 
+35841, 
+1801, 
+15012, 
+256, 
+51112, 
+56576, 
+124, 
+256, 
+26724, 
+57361, 
+15012, 
+48402, 
+256, 
+6699, 
+24882, 
+15012, 
+5888, 
+2120, 
+19541, 
+32581, 
+52480, 
+50731, 
+6212, 
+35841, 
+117, 
+96, 
+652, 
+15012, 
+56530, 
+536, 
+4130, 
+29253, 
+45, 
+780, 
+15362, 
+28690, 
+124, 
+33441, 
+41384, 
+60474, 
+52, 
+1691, 
+256, 
+1880, 
+35841, 
+16384, 
+40, 
+35842, 
+266, 
+2048, 
+59728, 
+522, 
+16270, 
+8192, 
+22709, 
+20504, 
+15012, 
+17664, 
+118, 
+31716, 
+20496, 
+40, 
+1948, 
+1280, 
+49785, 
+2642, 
+30214, 
+6688, 
+30329, 
+58, 
+56972, 
+28216, 
+266, 
+31494, 
+51, 
+27951, 
+2668, 
+15012, 
+256, 
+61509, 
+256, 
+1839, 
+59985, 
+20496, 
+522, 
+32006, 
+56712, 
+2693, 
+17664, 
+31750, 
+40529, 
+35841, 
+20444, 
+15360, 
+58077, 
+60, 
+120, 
+1608, 
+5922, 
+63656, 
+522, 
+2048, 
+63656, 
+2395, 
+39676, 
+16384, 
+1723, 
+370, 
+55610, 
+1670, 
+3130, 
+29954, 
+20496, 
+15012, 
+16384, 
+4096, 
+37497, 
+8610, 
+13381, 
+16450, 
+8760, 
+2781, 
+56381, 
+2048, 
+8196, 
+40, 
+5658, 
+58298, 
+4127, 
+35841, 
+354, 
+96, 
+20487, 
+33251, 
+4164, 
+267, 
+17664, 
+26229, 
+1839, 
+52727, 
+48720, 
+28218, 
+56972, 
+2856, 
+64382, 
+2048, 
+28177, 
+50214, 
+28218, 
+14976, 
+51253, 
+62976, 
+6773, 
+20504, 
+64069, 
+1564, 
+44058, 
+33251, 
+6177, 
+34885, 
+16384, 
+6699, 
+56972, 
+17664, 
+16384, 
+44973, 
+52480, 
+2048, 
+717, 
+19395, 
+56972, 
+17664, 
+1098, 
+25773, 
+17828, 
+30145, 
+3808, 
+267, 
+44034, 
+11264, 
+65188, 
+1500, 
+124, 
+256, 
+6869, 
+27561, 
+16384, 
+512, 
+20496, 
+2927, 
+1500, 
+31750, 
+538, 
+62522, 
+17664, 
+16384, 
+2048, 
+2220, 
+49661, 
+4176, 
+44101, 
+28160, 
+27102, 
+1570, 
+49975, 
+16384, 
+18715, 
+523, 
+1567, 
+4864, 
+8760, 
+8842, 
+10089, 
+30277, 
+52727, 
+15684, 
+55877, 
+16384, 
+8836, 
+30146, 
+56972, 
+249, 
+40615, 
+4164, 
+35842, 
+1500, 
+1787, 
+49685, 
+19395, 
+1500, 
+794, 
+63271, 
+523, 
+31750, 
+4864, 
+10911, 
+16384, 
+4864, 
+8760, 
+40538, 
+56333, 
+2048, 
+52295, 
+4350, 
+34373, 
+19395, 
+42020, 
+249, 
+13576, 
+24290, 
+56, 
+52, 
+15872, 
+4130, 
+56972, 
+16384, 
+54528, 
+62976, 
+20496, 
+16384, 
+53, 
+1262, 
+33872, 
+16384, 
+18334, 
+9216, 
+45584, 
+2048, 
+353, 
+50141, 
+42206, 
+2999, 
+1716, 
+24832, 
+37707, 
+28218, 
+267, 
+60317, 
+45942, 
+24576, 
+265, 
+717, 
+17518, 
+523, 
+40, 
+57468, 
+1839, 
+56979, 
+3019, 
+5120, 
+8760, 
+16384, 
+42206, 
+3021, 
+42206, 
+2048, 
+15702, 
+267, 
+10279, 
+256, 
+31488, 
+56979, 
+35842, 
+16384, 
+1024, 
+27102, 
+6212, 
+17664, 
+51968, 
+51716, 
+48732, 
+35842, 
+35933, 
+5120, 
+63271, 
+4130, 
+35841, 
+10346, 
+28928, 
+282, 
+4164, 
+3043, 
+31494, 
+6175, 
+41595, 
+35842, 
+256, 
+52727, 
+27984, 
+267, 
+7168, 
+57375, 
+15332, 
+15012, 
+43772, 
+54274, 
+15012, 
+1617, 
+94, 
+45370, 
+49209, 
+6346, 
+94, 
+10713, 
+31238, 
+5325, 
+63813, 
+42206, 
+1759, 
+26724, 
+42, 
+35842, 
+13867, 
+10089, 
+9483, 
+15012, 
+17664, 
+1628, 
+4576, 
+370, 
+15012, 
+51904, 
+1964, 
+46160, 
+17664, 
+31238, 
+1280, 
+27005, 
+11008, 
+6398, 
+29958, 
+2816, 
+8356, 
+3923, 
+56972, 
+56401, 
+37888, 
+263, 
+46829, 
+4384, 
+49152, 
+359, 
+25850, 
+4115, 
+17664, 
+124, 
+4692, 
+4288, 
+40, 
+4576, 
+63258, 
+56972, 
+16384, 
+53, 
+11125, 
+6211, 
+17664, 
+20992, 
+35842, 
+27465, 
+524, 
+5640, 
+11012, 
+42206, 
+20452, 
+282, 
+4351, 
+124, 
+361, 
+17518, 
+10302, 
+39168, 
+28730, 
+60354, 
+2128, 
+15012, 
+32006, 
+31368, 
+8196, 
+21641, 
+3330, 
+113, 
+4637, 
+17518, 
+26693, 
+2048, 
+11201, 
+6398, 
+17664, 
+56972, 
+525, 
+1567, 
+11016, 
+20658, 
+58, 
+3356, 
+39767, 
+113, 
+11800, 
+22837, 
+42206, 
+17664, 
+27313, 
+8448, 
+1024, 
+12041, 
+8434, 
+38956, 
+35841, 
+16384, 
+2048, 
+20496, 
+42206, 
+31045, 
+2481, 
+48464, 
+14661, 
+123, 
+6699, 
+26981, 
+794, 
+21459, 
+28218, 
+123, 
+9984, 
+63258, 
+15012, 
+29745, 
+54, 
+6773, 
+924, 
+256, 
+30146, 
+20451, 
+3564, 
+256, 
+14394, 
+21048, 
+24064, 
+2855, 
+35842, 
+16384, 
+61175, 
+6178, 
+17664, 
+16384, 
+1099, 
+14394, 
+16384, 
+2220, 
+27102, 
+17664, 
+768, 
+15429, 
+8780, 
+525, 
+1676, 
+6773, 
+56972, 
+56, 
+56979, 
+42206, 
+3428, 
+16384, 
+6699, 
+63271, 
+6960, 
+32826, 
+56972, 
+14342, 
+4864, 
+14394, 
+56334, 
+2220, 
+27102, 
+42206, 
+628, 
+16384, 
+4864, 
+20496, 
+30221, 
+56458, 
+256, 
+49887, 
+6960, 
+6212, 
+35842, 
+16384, 
+16640, 
+21568, 
+56972, 
+27330, 
+256, 
+52727, 
+3463, 
+125, 
+256, 
+50409, 
+269, 
+16384, 
+717, 
+4677, 
+31761, 
+8081, 
+256, 
+8760, 
+36968, 
+63750, 
+52727, 
+37296, 
+1500, 
+1099, 
+6736, 
+56972, 
+8079, 
+6699, 
+49925, 
+50430, 
+56972, 
+3486, 
+32006, 
+4864, 
+15646, 
+19968, 
+4164, 
+269, 
+123, 
+20224, 
+28928, 
+2290, 
+717, 
+6736, 
+60395, 
+32863, 
+256, 
+49943, 
+21501, 
+35841, 
+17664, 
+6699, 
+45370, 
+12828, 
+49300, 
+56335, 
+17664, 
+125, 
+2048, 
+44058, 
+63660, 
+42206, 
+26110, 
+302, 
+20496, 
+42206, 
+54872, 
+56577, 
+35841, 
+1500, 
+31494, 
+5120, 
+2092, 
+6465, 
+56972, 
+126, 
+6918, 
+20496, 
+42206, 
+28928, 
+6869, 
+5267, 
+32006, 
+282, 
+41762, 
+20496, 
+35841, 
+17664, 
+45056, 
+388, 
+34798, 
+3574, 
+2048, 
+58298, 
+58781, 
+9984, 
+222, 
+35842, 
+124, 
+1885, 
+26481, 
+526, 
+17664, 
+56419, 
+1757, 
+1035, 
+36252, 
+50161, 
+270, 
+124, 
+256, 
+6145, 
+42214, 
+56972, 
+1760, 
+5632, 
+5120, 
+28730, 
+3644, 
+19373, 
+33624, 
+8760, 
+17664, 
+125, 
+15012, 
+21929, 
+17520, 
+1500, 
+1536, 
+5122, 
+6721, 
+65188, 
+16384, 
+1024, 
+59188, 
+15012, 
+56972, 
+256, 
+4224, 
+30214, 
+25936, 
+31290, 
+270, 
+125, 
+512, 
+16849, 
+20496, 
+526, 
+16384, 
+4625, 
+58596, 
+14394, 
+35841, 
+1720, 
+3840, 
+5961, 
+4130, 
+17664, 
+30055, 
+256, 
+4352, 
+11600, 
+4129, 
+270, 
+3772, 
+256, 
+28673, 
+4130, 
+46661, 
+48128, 
+1540, 
+42206, 
+256, 
+3924, 
+42464, 
+14394, 
+2373, 
+69, 
+3076, 
+42878, 
+21714, 
+47736, 
+56972, 
+1500, 
+27951, 
+65043, 
+1178, 
+4130, 
+19525, 
+1500, 
+16384, 
+6699, 
+2384, 
+42206, 
+16384, 
+1792, 
+35842, 
+64001, 
+15012, 
+20496, 
+59133, 
+6798, 
+55435, 
+15012, 
+25502, 
+2048, 
+20496, 
+3874, 
+2048, 
+63439, 
+527, 
+1759, 
+56577, 
+15012, 
+17664, 
+32262, 
+7168, 
+14658, 
+1436, 
+60051, 
+57359, 
+35841, 
+64518, 
+24882, 
+42206, 
+32006, 
+57199, 
+4129, 
+3902, 
+16384, 
+147, 
+295, 
+28730, 
+1500, 
+16384, 
+40529, 
+36729, 
+17792, 
+36656, 
+5781, 
+8659, 
+17664, 
+8760, 
+4531, 
+28416, 
+8400, 
+36098, 
+1500, 
+28416, 
+508, 
+1629, 
+34731, 
+40036, 
+4130, 
+56973, 
+3840, 
+55424, 
+10468, 
+97, 
+45240, 
+22031, 
+65082, 
+9925, 
+48224, 
+256, 
+1453, 
+41384, 
+65082, 
+45824, 
+57632, 
+56973, 
+16384, 
+508, 
+581, 
+16384, 
+13514, 
+6177, 
+13551, 
+6688, 
+15889, 
+42051, 
+52, 
+42206, 
+56463, 
+11008, 
+16384, 
+32466, 
+256, 
+1723, 
+56524, 
+20496, 
+56973, 
+60, 
+27951, 
+14661, 
+256, 
+36671, 
+1477, 
+50872, 
+4130, 
+8261, 
+1583, 
+43589, 
+16384, 
+20737, 
+17664, 
+8192, 
+6211, 
+16384, 
+256, 
+902, 
+30550, 
+42206, 
+40, 
+14238, 
+252, 
+44949, 
+56973, 
+12510, 
+1590, 
+11264, 
+53085, 
+47872, 
+15012, 
+3611, 
+8192, 
+256, 
+4864, 
+44949, 
+512, 
+50483, 
+42206, 
+32827, 
+8746, 
+50501, 
+31557, 
+24359, 
+51781, 
+1280, 
+36097, 
+63750, 
+263, 
+10089, 
+56973, 
+63750, 
+61175, 
+14394, 
+256, 
+10089, 
+31813, 
+35880, 
+14394, 
+10468, 
+24836, 
+8760, 
+3640, 
+8760, 
+38139, 
+256, 
+10089, 
+27102, 
+58192, 
+12613, 
+256, 
+63439, 
+36097, 
+64518, 
+20480, 
+33616, 
+16384, 
+31238, 
+361, 
+13542, 
+51258, 
+11012, 
+64549, 
+24084, 
+8760, 
+864, 
+58611, 
+17664, 
+8713, 
+19397, 
+20496, 
+1571, 
+50681, 
+8285, 
+42206, 
+187, 
+1631, 
+27102, 
+36098, 
+26317, 
+64549, 
+30544, 
+44357, 
+4864, 
+26724, 
+35863, 
+24836, 
+6211, 
+49733, 
+1032, 
+6992, 
+51813, 
+1024, 
+902, 
+15012, 
+282, 
+256, 
+26829, 
+37984, 
+14394, 
+36098, 
+8594, 
+216, 
+1216, 
+512, 
+42206, 
+10259, 
+13136, 
+60040, 
+5049, 
+1024, 
+90, 
+4130, 
+256, 
+2560, 
+201, 
+49210, 
+258, 
+15366, 
+512, 
+7148, 
+3664, 
+15012, 
+123, 
+7424, 
+51712, 
+56973, 
+40, 
+178, 
+7940, 
+28730, 
+257, 
+35747, 
+31750, 
+6912, 
+265, 
+902, 
+42206, 
+56973, 
+40074, 
+1297, 
+1193, 
+56656, 
+69, 
+1024, 
+31528, 
+36097, 
+13056, 
+34842, 
+17664, 
+2048, 
+3979, 
+27003, 
+58, 
+30054, 
+17664, 
+26880, 
+6688, 
+37090, 
+4159, 
+1500, 
+27398, 
+36578, 
+32350, 
+371, 
+36864, 
+1902, 
+60951, 
+15012, 
+10408, 
+10467, 
+388, 
+16384, 
+6224, 
+312, 
+256, 
+513, 
+11264, 
+46978, 
+35840, 
+56573, 
+30470, 
+25344, 
+26668, 
+59450, 
+16384, 
+52626, 
+20504, 
+4421, 
+56539, 
+6699, 
+260, 
+257, 
+40000, 
+1707, 
+15012, 
+124, 
+280, 
+513, 
+256, 
+1101, 
+40976, 
+36097, 
+16384, 
+256, 
+6145, 
+11600, 
+36097, 
+252, 
+953, 
+4351, 
+52, 
+7789, 
+58464, 
+59036, 
+256, 
+8192, 
+28485, 
+3584, 
+3075, 
+8760, 
+16384, 
+15685, 
+42206, 
+10447, 
+56973, 
+249, 
+10089, 
+1500, 
+19398, 
+27973, 
+4864, 
+42206, 
+13893, 
+19398, 
+56389, 
+1099, 
+56973, 
+256, 
+56979, 
+17664, 
+36875, 
+17664, 
+19398, 
+53829, 
+44175, 
+64920, 
+1099, 
+17664, 
+25424, 
+282, 
+1676, 
+1360, 
+37707, 
+4130, 
+56466, 
+35847, 
+1360, 
+14394, 
+56, 
+6175, 
+33955, 
+533, 
+353, 
+10534, 
+50854, 
+56973, 
+258, 
+14336, 
+50877, 
+514, 
+8670, 
+50983, 
+5120, 
+27003, 
+15012, 
+252, 
+1099, 
+514, 
+55296, 
+56979, 
+21573, 
+256, 
+15362, 
+16384, 
+1024, 
+43066, 
+55085, 
+7237, 
+37632, 
+57199, 
+249, 
+40984, 
+21867, 
+16384, 
+1712, 
+2816, 
+50436, 
+29523, 
+39366, 
+32826, 
+258, 
+1500, 
+61797, 
+14394, 
+36097, 
+576, 
+26660, 
+45922, 
+1885, 
+32043, 
+4130, 
+685, 
+56378, 
+256, 
+1144, 
+13032, 
+47133, 
+17664, 
+124, 
+137, 
+20485, 
+44945, 
+514, 
+51329, 
+122, 
+42, 
+51754, 
+1500, 
+29958, 
+256, 
+453, 
+24882, 
+36097, 
+5028, 
+74, 
+56656, 
+56463, 
+388, 
+4129, 
+64769, 
+11898, 
+258, 
+28296, 
+1248, 
+1753, 
+8192, 
+67, 
+8760, 
+799, 
+29190, 
+11268, 
+13058, 
+17664, 
+55552, 
+5122, 
+259, 
+32512, 
+260, 
+59245, 
+15012, 
+42206, 
+17664, 
+11520, 
+41472, 
+15012, 
+576, 
+14351, 
+3463, 
+20496, 
+15012, 
+10565, 
+16384, 
+32006, 
+42497, 
+3942, 
+36097, 
+256, 
+11018, 
+51712, 
+4227, 
+515, 
+13321, 
+31238, 
+6699, 
+40065, 
+63568, 
+1612, 
+282, 
+20341, 
+65278, 
+1500, 
+15130, 
+36097, 
+52, 
+253, 
+42829, 
+16976, 
+56463, 
+1280, 
+56833, 
+56654, 
+42206, 
+92, 
+50176, 
+948, 
+121, 
+256, 
+41256, 
+18178, 
+12032, 
+7228, 
+15012, 
+49705, 
+120, 
+256, 
+22906, 
+8760, 
+259, 
+29411, 
+29472, 
+42206, 
+2048, 
+15873, 
+15012, 
+17664, 
+50992, 
+55827, 
+1093, 
+32579, 
+35277, 
+1065, 
+20496, 
+6699, 
+6465, 
+16384, 
+20496, 
+57669, 
+256, 
+27102, 
+3714, 
+8760, 
+36098, 
+2048, 
+28455, 
+516, 
+50176, 
+19519, 
+2663, 
+249, 
+44, 
+51037, 
+56973, 
+1569, 
+1964, 
+27102, 
+36098, 
+24836, 
+14394, 
+56334, 
+50957, 
+17664, 
+10089, 
+40, 
+5120, 
+27102, 
+5878, 
+56419, 
+35819, 
+256, 
+353, 
+24882, 
+15012, 
+10347, 
+56979, 
+15012, 
+52, 
+125, 
+1262, 
+35579, 
+62277, 
+2048, 
+256, 
+353, 
+51117, 
+10347, 
+2220, 
+611, 
+31312, 
+1085, 
+3741, 
+19399, 
+36098, 
+117, 
+44032, 
+10089, 
+65278, 
+56339, 
+44032, 
+794, 
+28420, 
+20496, 
+42206, 
+31494, 
+1280, 
+1262, 
+657, 
+35623, 
+28218, 
+40, 
+43264, 
+27102, 
+17664, 
+65215, 
+2048, 
+657, 
+36354, 
+42206, 
+17664, 
+37153, 
+50031, 
+20496, 
+34555, 
+30468, 
+1957, 
+1130, 
+17664, 
+58615, 
+7168, 
+11125, 
+15360, 
+20496, 
+22016, 
+2220, 
+17518, 
+42206, 
+4165, 
+16384, 
+7164, 
+11008, 
+56973, 
+36098, 
+33954, 
+124, 
+41552, 
+55610, 
+24832, 
+90, 
+30147, 
+13392, 
+56973, 
+44058, 
+50071, 
+42206, 
+31494, 
+63744, 
+46181, 
+4154, 
+45381, 
+16384, 
+6699, 
+50087, 
+36097, 
+1500, 
+5093, 
+13576, 
+4422, 
+23203, 
+1500, 
+768, 
+11016, 
+31488, 
+23211, 
+40, 
+178, 
+53, 
+717, 
+4979, 
+42206, 
+1233, 
+17664, 
+41863, 
+256, 
+1092, 
+17218, 
+36097, 
+40, 
+16384, 
+1091, 
+6177, 
+40, 
+29440, 
+44058, 
+24539, 
+56973, 
+628, 
+31750, 
+1866, 
+4649, 
+36098, 
+17664, 
+32006, 
+50135, 
+63258, 
+56973, 
+256, 
+41552, 
+1272, 
+16384, 
+20496, 
+31494, 
+30017, 
+17520, 
+1282, 
+17664, 
+2048, 
+453, 
+20496, 
+54597, 
+16384, 
+94, 
+50157, 
+20496, 
+15012, 
+36097, 
+17664, 
+20790, 
+1761, 
+21248, 
+17408, 
+55599, 
+28218, 
+23406, 
+178, 
+50974, 
+20496, 
+56973, 
+17664, 
+56432, 
+28928, 
+1065, 
+63258, 
+11405, 
+28928, 
+8061, 
+20496, 
+56973, 
+13109, 
+32848, 
+1338, 
+40, 
+21353, 
+717, 
+17520, 
+42206, 
+27057, 
+56, 
+256, 
+302, 
+58, 
+56973, 
+36098, 
+40764, 
+178, 
+31488, 
+18809, 
+13392, 
+20241, 
+16384, 
+8758, 
+36097, 
+23806, 
+11012, 
+50205, 
+64080, 
+261, 
+1590, 
+1092, 
+15012, 
+53248, 
+8704, 
+63258, 
+52727, 
+56973, 
+32006, 
+256, 
+1092, 
+39366, 
+4164, 
+42206, 
+49989, 
+64006, 
+1024, 
+8322, 
+59717, 
+14336, 
+56577, 
+42206, 
+25503, 
+17518, 
+17664, 
+21670, 
+16384, 
+6688, 
+52727, 
+17520, 
+36098, 
+33814, 
+122, 
+1092, 
+17408, 
+34544, 
+2048, 
+30699, 
+28218, 
+40, 
+1603, 
+90, 
+52727, 
+20504, 
+42206, 
+11016, 
+4979, 
+517, 
+1024, 
+2220, 
+22742, 
+20496, 
+20805, 
+114, 
+10829, 
+6177, 
+4096, 
+7174, 
+8888, 
+4130, 
+17664, 
+31494, 
+17920, 
+2094, 
+20496, 
+15012, 
+6699, 
+12803, 
+53840, 
+56973, 
+1469, 
+1597, 
+8710, 
+20496, 
+56973, 
+17664, 
+31494, 
+2048, 
+9220, 
+1500, 
+20504, 
+56973, 
+12928, 
+6400, 
+47616, 
+44058, 
+1492, 
+17664, 
+40, 
+7095, 
+23331, 
+22018, 
+36097, 
+116, 
+6400, 
+45056, 
+717, 
+29492, 
+17518, 
+1507, 
+17664, 
+16384, 
+178, 
+282, 
+11125, 
+717, 
+28730, 
+31045, 
+273, 
+539, 
+62301, 
+14395, 
+24834, 
+517, 
+2220, 
+42206, 
+6699, 
+390, 
+17680, 
+37707, 
+1540, 
+1185, 
+31238, 
+42206, 
+1542, 
+200, 
+60527, 
+34039, 
+80, 
+717, 
+6160, 
+15012, 
+123, 
+17408, 
+43430, 
+33616, 
+36098, 
+40, 
+44288, 
+256, 
+42206, 
+52, 
+257, 
+717, 
+27907, 
+32768, 
+42206, 
+24328, 
+17408, 
+4979, 
+56973, 
+1649, 
+2048, 
+2220, 
+11125, 
+56477, 
+42206, 
+17664, 
+41472, 
+30148, 
+13045, 
+123, 
+8608, 
+30214, 
+59748, 
+56334, 
+5120, 
+4979, 
+1500, 
+256, 
+2220, 
+37707, 
+8665, 
+32006, 
+28928, 
+56973, 
+16384, 
+2560, 
+36115, 
+15012, 
+43561, 
+249, 
+5120, 
+6178, 
+19775, 
+3766, 
+14394, 
+36097, 
+16384, 
+123, 
+32512, 
+2048, 
+15303, 
+518, 
+17408, 
+408, 
+53829, 
+27444, 
+14336, 
+47616, 
+23377, 
+42206, 
+22592, 
+60547, 
+36608, 
+24063, 
+8589, 
+26407, 
+5725, 
+56973, 
+262, 
+40, 
+7069, 
+91, 
+56979, 
+13392, 
+20504, 
+36098, 
+26963, 
+10347, 
+7067, 
+58710, 
+518, 
+56334, 
+51719, 
+14394, 
+60553, 
+8583, 
+49152, 
+22341, 
+33792, 
+10089, 
+17989, 
+39168, 
+56, 
+63258, 
+1664, 
+56461, 
+24576, 
+1536, 
+63258, 
+34283, 
+256, 
+1262, 
+6736, 
+56973, 
+56464, 
+178, 
+2048, 
+13312, 
+36098, 
+1708, 
+2048, 
+717, 
+17518, 
+37861, 
+40, 
+32006, 
+15360, 
+13576, 
+38162, 
+30800, 
+65280, 
+15573, 
+45568, 
+53, 
+6773, 
+20496, 
+17518, 
+56973, 
+13354, 
+46206, 
+42752, 
+262, 
+1500, 
+8760, 
+10476, 
+1569, 
+16167, 
+20496, 
+17664, 
+3795, 
+10089, 
+59450, 
+53829, 
+123, 
+47616, 
+51238, 
+48256, 
+4164, 
+39749, 
+56, 
+113, 
+19400, 
+33115, 
+518, 
+57925, 
+2048, 
+24836, 
+23379, 
+17664, 
+16384, 
+4864, 
+6699, 
+8705, 
+717, 
+3942, 
+1730, 
+15576, 
+45, 
+4979, 
+56973, 
+55621, 
+16384, 
+256, 
+2220, 
+36786, 
+42206, 
+1739, 
+9073, 
+47917, 
+28730, 
+1742, 
+512, 
+13964, 
+36097, 
+31238, 
+11125, 
+25773, 
+1218, 
+3072, 
+42206, 
+58, 
+64518, 
+14336, 
+15012, 
+32006, 
+188, 
+50485, 
+45370, 
+34048, 
+17520, 
+14336, 
+57633, 
+16384, 
+188, 
+6773, 
+48186, 
+1775, 
+16384, 
+5712, 
+20496, 
+44058, 
+6736, 
+30789, 
+1500, 
+117, 
+58880, 
+36097, 
+15012, 
+58620, 
+2220, 
+23894, 
+17520, 
+47685, 
+252, 
+5225, 
+263, 
+40, 
+16384, 
+53, 
+11201, 
+23866, 
+15012, 
+36098, 
+7336, 
+28928, 
+282, 
+11012, 
+20737, 
+32006, 
+23443, 
+3229, 
+4164, 
+1830, 
+16384, 
+1566, 
+1024, 
+508, 
+10476, 
+1593, 
+49664, 
+8474, 
+50543, 
+6736, 
+14394, 
+36098, 
+120, 
+1024, 
+36352, 
+46860, 
+41474, 
+20496, 
+15012, 
+1853, 
+30982, 
+6145, 
+265, 
+263, 
+56832, 
+216, 
+11461, 
+28730, 
+36097, 
+13576, 
+1261, 
+20504, 
+42206, 
+125, 
+256, 
+29492, 
+65278, 
+17664, 
+16384, 
+256, 
+4350, 
+10390, 
+122, 
+1092, 
+4979, 
+56973, 
+26437, 
+1563, 
+12032, 
+15362, 
+32784, 
+14336, 
+50583, 
+25249, 
+1297, 
+768, 
+3051, 
+149, 
+42206, 
+50245, 
+16384, 
+54016, 
+13576, 
+8418, 
+28730, 
+37744, 
+28928, 
+1092, 
+30778, 
+36098, 
+46149, 
+17434, 
+6269, 
+17664, 
+31494, 
+56, 
+4346, 
+37035, 
+29746, 
+11013, 
+10839, 
+50615, 
+1940, 
+51269, 
+16384, 
+32006, 
+52224, 
+48128, 
+8375, 
+238, 
+4118, 
+42206, 
+44101, 
+628, 
+1245, 
+9112, 
+36097, 
+125, 
+39090, 
+40584, 
+56973, 
+45893, 
+32006, 
+51200, 
+45568, 
+11016, 
+23513, 
+52727, 
+17518, 
+263, 
+16384, 
+23808, 
+53, 
+15012, 
+36098, 
+17664, 
+31494, 
+12495, 
+20496, 
+43077, 
+768, 
+50043, 
+42206, 
+41797, 
+10382, 
+23515, 
+29492, 
+42206, 
+21760, 
+3610, 
+52304, 
+13927, 
+36098, 
+628, 
+48128, 
+282, 
+36097, 
+16384, 
+20496, 
+263, 
+32006, 
+1839, 
+25820, 
+64183, 
+256, 
+46860, 
+52727, 
+65410, 
+63258, 
+2050, 
+124, 
+44, 
+50693, 
+58, 
+3823, 
+123, 
+29696, 
+6688, 
+20496, 
+42206, 
+123, 
+29696, 
+38970, 
+20504, 
+56973, 
+10476, 
+1675, 
+178, 
+1092, 
+841, 
+6736, 
+56973, 
+4165, 
+62014, 
+17408, 
+31105, 
+42206, 
+628, 
+1601, 
+11008, 
+5781, 
+56973, 
+41474, 
+45381, 
+249, 
+44058, 
+23579, 
+54608, 
+52293, 
+31494, 
+74, 
+17408, 
+14242, 
+15012, 
+52549, 
+5120, 
+41474, 
+520, 
+1569, 
+57127, 
+60997, 
+63750, 
+51447, 
+42206, 
+42752, 
+51453, 
+17518, 
+27470, 
+27392, 
+56979, 
+36098, 
+27471, 
+26880, 
+92, 
+18338, 
+17664, 
+2053, 
+56979, 
+1500, 
+282, 
+56979, 
+27102, 
+63750, 
+45778, 
+8680, 
+264, 
+1569, 
+10089, 
+36098, 
+12101, 
+4864, 
+1099, 
+13392, 
+36098, 
+5120, 
+56979, 
+56973, 
+16384, 
+494, 
+36419, 
+8760, 
+3833, 
+768, 
+63271, 
+20496, 
+42206, 
+2156, 
+30150, 
+32730, 
+17664, 
+19864, 
+29492, 
+36097, 
+31494, 
+17792, 
+2165, 
+16514, 
+16384, 
+45312, 
+5120, 
+4164, 
+36097, 
+59248, 
+44058, 
+57332, 
+51584, 
+15012, 
+32940, 
+125, 
+1650, 
+41472, 
+4979, 
+17520, 
+36097, 
+1639, 
+13576, 
+50459, 
+41552, 
+2189, 
+49152, 
+1790, 
+26481, 
+42206, 
+37701, 
+17434, 
+30150, 
+58, 
+15012, 
+44493, 
+17408, 
+50807, 
+13392, 
+2202, 
+56973, 
+1500, 
+119, 
+25936, 
+40723, 
+768, 
+45904, 
+40872, 
+14394, 
+1024, 
+8760, 
+530, 
+43967, 
+32768, 
+17664, 
+28218, 
+36098, 
+16384, 
+1571, 
+10089, 
+44437, 
+1500, 
+25825, 
+1024, 
+353, 
+2500, 
+16077, 
+17518, 
+2226, 
+31494, 
+8760, 
+17664, 
+122, 
+31238, 
+1581, 
+6957, 
+8025, 
+6212, 
+56973, 
+11159, 
+44034, 
+717, 
+20504, 
+56973, 
+50842, 
+16384, 
+2246, 
+47843, 
+56973, 
+17664, 
+7824, 
+9216, 
+42914, 
+28730, 
+31883, 
+6346, 
+55925, 
+56871, 
+1500, 
+35840, 
+45568, 
+92, 
+15696, 
+58938, 
+13079, 
+9998, 
+35657, 
+42206, 
+17664, 
+53, 
+64990, 
+520, 
+192, 
+768, 
+31488, 
+56973, 
+62746, 
+33605, 
+256, 
+6699, 
+23866, 
+31105, 
+1500, 
+23866, 
+42206, 
+7936, 
+4363, 
+58, 
+2316, 
+17664, 
+40, 
+1563, 
+28928, 
+15872, 
+29492, 
+41552, 
+8760, 
+36097, 
+122, 
+28928, 
+63258, 
+42206, 
+10090, 
+123, 
+63152, 
+28928, 
+35588, 
+6166, 
+36098, 
+17664, 
+13095, 
+31238, 
+256, 
+6699, 
+4979, 
+20496, 
+17664, 
+56371, 
+14854, 
+768, 
+30150, 
+4130, 
+265, 
+13100, 
+1566, 
+1024, 
+22264, 
+42206, 
+17664, 
+6923, 
+256, 
+47500, 
+42368, 
+42206, 
+2387, 
+125, 
+7168, 
+717, 
+52727, 
+20504, 
+36098, 
+44101, 
+56540, 
+25783, 
+6699, 
+31488, 
+32784, 
+13329, 
+7174, 
+768, 
+6699, 
+4070, 
+55680, 
+2423, 
+7786, 
+4864, 
+794, 
+3924, 
+52727, 
+8504, 
+36097, 
+65280, 
+49697, 
+6736, 
+65082, 
+56526, 
+45568, 
+717, 
+6736, 
+36098, 
+40, 
+2220, 
+22018, 
+28730, 
+56371, 
+7168, 
+26496, 
+17518, 
+125, 
+768, 
+6699, 
+6773, 
+4164, 
+521, 
+29747, 
+124, 
+51914, 
+20496, 
+15012, 
+22528, 
+1536, 
+11016, 
+18432, 
+32325, 
+1280, 
+97, 
+60595, 
+8760, 
+2529, 
+28928, 
+60617, 
+63258, 
+2539, 
+16384, 
+2110, 
+4164, 
+2544, 
+256, 
+63258, 
+31750, 
+5781, 
+265, 
+9073, 
+30626, 
+63818, 
+768, 
+20915, 
+56973, 
+40, 
+6699, 
+56973, 
+4165, 
+16384, 
+6699, 
+34722, 
+52727, 
+6212, 
+266, 
+17856, 
+31494, 
+51726, 
+1166, 
+17520, 
+53061, 
+256, 
+416, 
+4409, 
+4129, 
+17664, 
+55552, 
+4568, 
+41, 
+11013, 
+6736, 
+65221, 
+54069, 
+51287, 
+33872, 
+33861, 
+16384, 
+63258, 
+20496, 
+36098, 
+538, 
+56973, 
+2048, 
+13576, 
+30151, 
+58, 
+60781, 
+3520, 
+6699, 
+20496, 
+2048, 
+3098, 
+15524, 
+17664, 
+58088, 
+53, 
+717, 
+20496, 
+42206, 
+18225, 
+17965, 
+6875, 
+256, 
+53, 
+54751, 
+17520, 
+56371, 
+1747, 
+44058, 
+51143, 
+17518, 
+6213, 
+40, 
+120, 
+1636, 
+6699, 
+10356, 
+51159, 
+14394, 
+2672, 
+56492, 
+31494, 
+51167, 
+17518, 
+56973, 
+25707, 
+1024, 
+52727, 
+20504, 
+56973, 
+56371, 
+1706, 
+3328, 
+51189, 
+38268, 
+17664, 
+53, 
+1098, 
+41474, 
+24656, 
+42206, 
+266, 
+50757, 
+125, 
+113, 
+11013, 
+2724, 
+1349, 
+1712, 
+11016, 
+1954, 
+46307, 
+40, 
+28177, 
+266, 
+32006, 
+28928, 
+22018, 
+56973, 
+2048, 
+16671, 
+36097, 
+123, 
+20487, 
+18688, 
+15012, 
+64774, 
+2999, 
+29952, 
+17518, 
+36097, 
+32006, 
+6699, 
+51239, 
+52727, 
+2782, 
+116, 
+28928, 
+13576, 
+63258, 
+8760, 
+59489, 
+61816, 
+60119, 
+37189, 
+96, 
+1360, 
+16290, 
+522, 
+29747, 
+2048, 
+29305, 
+15012, 
+63, 
+6736, 
+2309, 
+291, 
+20496, 
+5120, 
+45716, 
+43554, 
+15012, 
+2832, 
+33533, 
+2048, 
+15012, 
+32006, 
+768, 
+53, 
+32105, 
+6773, 
+6736, 
+7538, 
+15012, 
+17664, 
+16384, 
+57088, 
+53, 
+6699, 
+33251, 
+28730, 
+2861, 
+256, 
+2048, 
+7450, 
+17520, 
+36097, 
+124, 
+8029, 
+58, 
+44288, 
+256, 
+302, 
+6736, 
+65280, 
+43776, 
+2048, 
+1032, 
+60288, 
+31232, 
+179, 
+2193, 
+63258, 
+53120, 
+56973, 
+21371, 
+32006, 
+28928, 
+2048, 
+56973, 
+15920, 
+4148, 
+1861, 
+16384, 
+53, 
+58113, 
+11376, 
+22853, 
+56344, 
+124, 
+36724, 
+265, 
+64918, 
+56973, 
+267, 
+628, 
+16384, 
+31750, 
+11016, 
+612, 
+56973, 
+36097, 
+1562, 
+2048, 
+768, 
+1165, 
+41552, 
+42206, 
+17856, 
+30726, 
+30152, 
+20496, 
+6212, 
+36098, 
+53, 
+44058, 
+6798, 
+56973, 
+17664, 
+16384, 
+59868, 
+22018, 
+20496, 
+2977, 
+3072, 
+22665, 
+56419, 
+31721, 
+256, 
+772, 
+15012, 
+2213, 
+56973, 
+1500, 
+2053, 
+19633, 
+34373, 
+256, 
+28730, 
+36098, 
+2241, 
+2048, 
+51347, 
+36098, 
+31494, 
+3328, 
+13991, 
+57814, 
+31238, 
+51716, 
+6212, 
+56360, 
+1024, 
+56973, 
+27015, 
+18919, 
+256, 
+9217, 
+4163, 
+64518, 
+639, 
+44289, 
+42053, 
+11268, 
+37204, 
+20504, 
+15012, 
+34629, 
+28416, 
+63927, 
+65278, 
+49664, 
+1590, 
+40295, 
+13882, 
+50757, 
+13574, 
+28416, 
+15012, 
+30010, 
+16890, 
+30470, 
+222, 
+62544, 
+56973, 
+36097, 
+8182, 
+2048, 
+80, 
+15646, 
+3161, 
+8197, 
+62329, 
+17680, 
+20510, 
+47162, 
+4130, 
+42206, 
+24431, 
+124, 
+42638, 
+60, 
+27648, 
+51748, 
+17664, 
+58382, 
+4420, 
+56973, 
+63813, 
+8760, 
+30400, 
+41, 
+65278, 
+58, 
+179, 
+2193, 
+60131, 
+42206, 
+222, 
+4130, 
+17664, 
+1622, 
+1039, 
+52644, 
+15012, 
+30470, 
+1098, 
+62027, 
+4129, 
+42206, 
+44284, 
+8960, 
+17954, 
+34896, 
+15012, 
+36097, 
+17664, 
+118, 
+256, 
+25773, 
+31312, 
+256, 
+55717, 
+16384, 
+1024, 
+16208, 
+3318, 
+256, 
+6241, 
+269, 
+1758, 
+43776, 
+508, 
+118, 
+5380, 
+57, 
+24025, 
+3365, 
+3507, 
+61034, 
+94, 
+45893, 
+1675, 
+4864, 
+9160, 
+15012, 
+525, 
+24882, 
+42206, 
+269, 
+1500, 
+51, 
+4130, 
+269, 
+10320, 
+1024, 
+40699, 
+15012, 
+19600, 
+1024, 
+408, 
+30123, 
+36098, 
+36098, 
+23844, 
+36433, 
+44544, 
+1361, 
+42206, 
+4357, 
+4864, 
+22552, 
+20496, 
+56973, 
+16384, 
+37888, 
+3924, 
+42206, 
+40171, 
+48896, 
+56890, 
+24594, 
+58, 
+59717, 
+256, 
+61409, 
+35680, 
+3509, 
+32006, 
+9183, 
+222, 
+56973, 
+10412, 
+45824, 
+15788, 
+3533, 
+30726, 
+56973, 
+16965, 
+119, 
+5632, 
+256, 
+4727, 
+26075, 
+28730, 
+36097, 
+58718, 
+42206, 
+15012, 
+628, 
+33548, 
+6224, 
+3574, 
+16384, 
+14592, 
+17664, 
+54786, 
+50176, 
+11034, 
+29090, 
+3607, 
+10460, 
+12356, 
+4386, 
+15012, 
+270, 
+1695, 
+1124, 
+56951, 
+36098, 
+17664, 
+1601, 
+4864, 
+16134, 
+62464, 
+15012, 
+16384, 
+19626, 
+1685, 
+6346, 
+11782, 
+52618, 
+15012, 
+29446, 
+34560, 
+612, 
+50124, 
+15012, 
+31750, 
+711, 
+26075, 
+8760, 
+56973, 
+50106, 
+50124, 
+56973, 
+17664, 
+31750, 
+39424, 
+1836, 
+49325, 
+20496, 
+3700, 
+13568, 
+8204, 
+37707, 
+46661, 
+40, 
+29440, 
+256, 
+8375, 
+17390, 
+36097, 
+116, 
+20504, 
+56973, 
+17664, 
+6798, 
+526, 
+256, 
+17623, 
+42206, 
+41, 
+256, 
+27102, 
+8513, 
+17520, 
+63750, 
+49446, 
+36098, 
+8509, 
+276, 
+50929, 
+38400, 
+36422, 
+36098, 
+30726, 
+2491, 
+20496, 
+3864, 
+42206, 
+17664, 
+5081, 
+3072, 
+2309, 
+56979, 
+64000, 
+54032, 
+44, 
+6178, 
+27504, 
+276, 
+20496, 
+3805, 
+6346, 
+20496, 
+15012, 
+249, 
+14171, 
+58871, 
+256, 
+32665, 
+62789, 
+19402, 
+526, 
+19402, 
+36098, 
+10089, 
+51841, 
+38970, 
+3832, 
+256, 
+5854, 
+64621, 
+263, 
+17664, 
+6408, 
+56, 
+23704, 
+63546, 
+1500, 
+16384, 
+14598, 
+10034, 
+902, 
+527, 
+1500, 
+30214, 
+15360, 
+64918, 
+4872, 
+3885, 
+28229, 
+4864, 
+31056, 
+33605, 
+3884, 
+5632, 
+56973, 
+9450, 
+6346, 
+4130, 
+3890, 
+256, 
+38480, 
+4336, 
+42206, 
+17664, 
+4864, 
+201, 
+20480, 
+59969, 
+56974, 
+14598, 
+4864, 
+32336, 
+42206, 
+28928, 
+717, 
+717, 
+32896, 
+7257, 
+31494, 
+768, 
+6699, 
+18978, 
+63258, 
+40762, 
+9417, 
+56422, 
+28928, 
+50459, 
+51431, 
+36354, 
+27904, 
+45178, 
+12848, 
+48565, 
+4420, 
+35141, 
+24424, 
+17584, 
+14394, 
+17664, 
+30726, 
+53, 
+16077, 
+6736, 
+42206, 
+45125, 
+13238, 
+1565, 
+256, 
+6346, 
+20496, 
+15012, 
+24133, 
+29747, 
+1562, 
+3328, 
+264, 
+11144, 
+17520, 
+36354, 
+10477, 
+1646, 
+361, 
+30153, 
+52727, 
+106, 
+10477, 
+1745, 
+41474, 
+20504, 
+512, 
+1500, 
+25602, 
+1536, 
+1059, 
+4164, 
+36354, 
+57344, 
+6699, 
+25900, 
+13882, 
+63813, 
+16384, 
+30153, 
+52727, 
+36354, 
+1668, 
+13312, 
+63258, 
+6736, 
+166, 
+4353, 
+1360, 
+52727, 
+17518, 
+17664, 
+1756, 
+56885, 
+41474, 
+20504, 
+42206, 
+48602, 
+1326, 
+36354, 
+1500, 
+113, 
+2718, 
+54278, 
+4127, 
+16384, 
+1024, 
+41552, 
+15012, 
+30464, 
+42206, 
+2048, 
+291, 
+4164, 
+1500, 
+32444, 
+113, 
+6699, 
+15012, 
+512, 
+16384, 
+2220, 
+37006, 
+256, 
+123, 
+81, 
+30153, 
+54606, 
+19626, 
+17672, 
+50699, 
+256, 
+46307, 
+65082, 
+4164, 
+8343, 
+7749, 
+26501, 
+31494, 
+28164, 
+52727, 
+6177, 
+16384, 
+4352, 
+6346, 
+15012, 
+17664, 
+63750, 
+576, 
+40309, 
+45882, 
+60938, 
+768, 
+20496, 
+56974, 
+29747, 
+1570, 
+717, 
+57199, 
+56974, 
+122, 
+42608, 
+53840, 
+15012, 
+513, 
+56432, 
+2048, 
+63258, 
+7808, 
+60940, 
+194, 
+717, 
+42206, 
+15641, 
+17664, 
+16384, 
+113, 
+14658, 
+2105, 
+63258, 
+36353, 
+16384, 
+6739, 
+53, 
+30153, 
+44962, 
+4112, 
+29958, 
+256, 
+24025, 
+8760, 
+349, 
+369, 
+6736, 
+56974, 
+42012, 
+256, 
+717, 
+23376, 
+42206, 
+124, 
+54784, 
+10761, 
+28730, 
+56333, 
+30464, 
+46581, 
+63045, 
+40, 
+6177, 
+794, 
+65525, 
+17664, 
+16384, 
+63488, 
+51655, 
+28218, 
+36026, 
+10478, 
+179, 
+6760, 
+63258, 
+56974, 
+40, 
+7307, 
+2048, 
+16896, 
+20496, 
+257, 
+31750, 
+1112, 
+20496, 
+15012, 
+47334, 
+4608, 
+31105, 
+15012, 
+24812, 
+65024, 
+11195, 
+15012, 
+1500, 
+59833, 
+12357, 
+56546, 
+8448, 
+53328, 
+48, 
+8280, 
+7436, 
+52282, 
+21057, 
+620, 
+42206, 
+16384, 
+35610, 
+19565, 
+40, 
+12045, 
+44949, 
+17520, 
+258, 
+30408, 
+12288, 
+4224, 
+258, 
+17664, 
+16384, 
+1760, 
+58707, 
+8760, 
+12352, 
+1589, 
+256, 
+23267, 
+45370, 
+57858, 
+29190, 
+11201, 
+17664, 
+125, 
+514, 
+21076, 
+1542, 
+1049, 
+37023, 
+17664, 
+1760, 
+264, 
+19626, 
+36194, 
+42206, 
+40, 
+58118, 
+7760, 
+62413, 
+6699, 
+48720, 
+120, 
+280, 
+59250, 
+15012, 
+83, 
+256, 
+18964, 
+42206, 
+16384, 
+58298, 
+15872, 
+44189, 
+56974, 
+17681, 
+256, 
+22455, 
+752, 
+24832, 
+6688, 
+11366, 
+15012, 
+31246, 
+26192, 
+259, 
+17520, 
+63045, 
+6688, 
+23376, 
+17520, 
+798, 
+30726, 
+6760, 
+259, 
+119, 
+8192, 
+26915, 
+64069, 
+8192, 
+6178, 
+824, 
+14998, 
+17664, 
+10448, 
+6400, 
+31940, 
+42206, 
+1076, 
+34628, 
+8685, 
+17664, 
+58800, 
+2048, 
+848, 
+62522, 
+16384, 
+47939, 
+20496, 
+36353, 
+28906, 
+8199, 
+17520, 
+36353, 
+57126, 
+6688, 
+2562, 
+15012, 
+41570, 
+34560, 
+47627, 
+56974, 
+118, 
+27951, 
+13904, 
+42206, 
+1500, 
+16384, 
+11520, 
+6408, 
+36354, 
+1420, 
+198, 
+282, 
+56974, 
+1536, 
+58216, 
+17520, 
+259, 
+16384, 
+2239, 
+265, 
+1013, 
+28912, 
+53587, 
+31750, 
+2074, 
+42206, 
+1280, 
+6688, 
+6469, 
+45370, 
+64151, 
+53760, 
+17664, 
+1280, 
+123, 
+50880, 
+36353, 
+16584, 
+14848, 
+60162, 
+30716, 
+516, 
+29446, 
+32512, 
+1280, 
+30748, 
+22782, 
+47685, 
+59550, 
+7694, 
+3716, 
+28496, 
+16384, 
+1280, 
+5204, 
+36353, 
+16384, 
+8196, 
+8080, 
+36354, 
+36353, 
+30982, 
+1049, 
+12032, 
+58216, 
+260, 
+516, 
+52, 
+1543, 
+1500, 
+42206, 
+1139, 
+30470, 
+512, 
+58448, 
+10442, 
+35249, 
+35588, 
+14160, 
+4130, 
+6204, 
+119, 
+256, 
+1880, 
+47627, 
+42206, 
+41730, 
+1702, 
+42206, 
+16384, 
+261, 
+25773, 
+30726, 
+35078, 
+8720, 
+18944, 
+11831, 
+1024, 
+57017, 
+4224, 
+56974, 
+125, 
+12032, 
+657, 
+8576, 
+56514, 
+40, 
+8574, 
+516, 
+56515, 
+1024, 
+54751, 
+50899, 
+1291, 
+7936, 
+261, 
+68, 
+32006, 
+1024, 
+27005, 
+48289, 
+31824, 
+9657, 
+1545, 
+63271, 
+25940, 
+20496, 
+56333, 
+52, 
+39150, 
+20496, 
+17664, 
+35704, 
+256, 
+21760, 
+56974, 
+16384, 
+43520, 
+22785, 
+6212, 
+35141, 
+9318, 
+44949, 
+28594, 
+249, 
+3072, 
+2415, 
+14394, 
+16384, 
+4864, 
+6178, 
+56335, 
+56, 
+27102, 
+62021, 
+56335, 
+256, 
+8760, 
+56335, 
+256, 
+8760, 
+1500, 
+32768, 
+40, 
+65280, 
+9955, 
+4125, 
+249, 
+1353, 
+9235, 
+64000, 
+6178, 
+36354, 
+14342, 
+256, 
+292, 
+36353, 
+1675, 
+8720, 
+1675, 
+27102, 
+6398, 
+261, 
+40, 
+5120, 
+52654, 
+20496, 
+18714, 
+6178, 
+40, 
+57118, 
+33616, 
+17856, 
+24836, 
+6178, 
+56335, 
+353, 
+27102, 
+17664, 
+16384, 
+10089, 
+4351, 
+16384, 
+26880, 
+282, 
+37707, 
+15012, 
+16384, 
+126, 
+256, 
+4130, 
+56389, 
+27102, 
+4111, 
+10089, 
+3072, 
+56979, 
+56974, 
+30470, 
+54751, 
+53657, 
+256, 
+9998, 
+56979, 
+36353, 
+16384, 
+280, 
+64806, 
+40809, 
+3072, 
+5892, 
+17664, 
+9998, 
+63741, 
+44, 
+20224, 
+9472, 
+57049, 
+61, 
+1477, 
+20504, 
+27662, 
+15012, 
+57359, 
+45745, 
+31813, 
+26223, 
+1801, 
+15012, 
+1552, 
+31750, 
+56974, 
+52260, 
+282, 
+80, 
+10441, 
+52889, 
+6177, 
+11845, 
+16384, 
+6699, 
+15012, 
+518, 
+1536, 
+3979, 
+13737, 
+14394, 
+648, 
+2048, 
+17420, 
+4224, 
+24867, 
+40, 
+37100, 
+22552, 
+56400, 
+1500, 
+125, 
+23040, 
+3106, 
+49198, 
+8760, 
+33707, 
+63750, 
+1319, 
+18334, 
+33084, 
+28730, 
+17664, 
+24832, 
+19843, 
+4164, 
+58, 
+10382, 
+2048, 
+11012, 
+14394, 
+1500, 
+5122, 
+27392, 
+42206, 
+36354, 
+3471, 
+61035, 
+47500, 
+20504, 
+61, 
+256, 
+6823, 
+15012, 
+125, 
+56974, 
+1804, 
+55109, 
+6688, 
+24897, 
+519, 
+1605, 
+15012, 
+10490, 
+1024, 
+6688, 
+43967, 
+15012, 
+17664, 
+6400, 
+256, 
+31488, 
+39168, 
+263, 
+123, 
+256, 
+2718, 
+46515, 
+58, 
+56974, 
+31750, 
+92, 
+34560, 
+1297, 
+1857, 
+125, 
+15360, 
+65188, 
+42223, 
+37084, 
+62186, 
+15012, 
+196, 
+2048, 
+2292, 
+25100, 
+16384, 
+15320, 
+56974, 
+56507, 
+1024, 
+228, 
+1920, 
+21592, 
+256, 
+57453, 
+56420, 
+58, 
+20496, 
+56974, 
+16384, 
+42206, 
+35200, 
+58, 
+31750, 
+3072, 
+47500, 
+56974, 
+3840, 
+49325, 
+15012, 
+1759, 
+256, 
+1629, 
+42080, 
+17520, 
+263, 
+32433, 
+256, 
+1314, 
+20496, 
+63750, 
+19403, 
+56974, 
+63750, 
+52155, 
+519, 
+27102, 
+3956, 
+1836, 
+6178, 
+3959, 
+19403, 
+58727, 
+5120, 
+56979, 
+53, 
+52246, 
+519, 
+18688, 
+10089, 
+263, 
+16384, 
+52274, 
+56389, 
+256, 
+56979, 
+4421, 
+256, 
+45461, 
+20496, 
+16384, 
+256, 
+30541, 
+6469, 
+16637, 
+23621, 
+4864, 
+653, 
+8280, 
+27569, 
+35662, 
+29218, 
+20496, 
+10454, 
+16384, 
+256, 
+56103, 
+44101, 
+1694, 
+17426, 
+19404, 
+36353, 
+27973, 
+1585, 
+1112, 
+36353, 
+16384, 
+256, 
+36135, 
+653, 
+24912, 
+25668, 
+32000, 
+51463, 
+2539, 
+520, 
+43815, 
+28730, 
+10289, 
+1262, 
+25089, 
+520, 
+1500, 
+50688, 
+64080, 
+42206, 
+36353, 
+63750, 
+5122, 
+12106, 
+12368, 
+62479, 
+4864, 
+8760, 
+520, 
+13312, 
+6688, 
+56161, 
+20193, 
+42206, 
+24836, 
+23808, 
+36353, 
+17664, 
+22029, 
+1032, 
+56656, 
+1706, 
+34842, 
+56974, 
+46143, 
+16384, 
+1739, 
+78, 
+36578, 
+54166, 
+17664, 
+16384, 
+4158, 
+10240, 
+36353, 
+16384, 
+30174, 
+1358, 
+2256, 
+31238, 
+10496, 
+58382, 
+65278, 
+57344, 
+3335, 
+57458, 
+56302, 
+124, 
+536, 
+20421, 
+42206, 
+52800, 
+51463, 
+720, 
+56974, 
+15199, 
+256, 
+44750, 
+15012, 
+31494, 
+3072, 
+6699, 
+36353, 
+11373, 
+31246, 
+8250, 
+13565, 
+16529, 
+6212, 
+24832, 
+31105, 
+16529, 
+17520, 
+18757, 
+56822, 
+6144, 
+34033, 
+42206, 
+1500, 
+3840, 
+8708, 
+8080, 
+56974, 
+18718, 
+18947, 
+1222, 
+120, 
+295, 
+26724, 
+40, 
+14592, 
+1024, 
+4130, 
+53829, 
+1288, 
+256, 
+34960, 
+42206, 
+10260, 
+10496, 
+37678, 
+51452, 
+2393, 
+11333, 
+1611, 
+256, 
+58888, 
+56400, 
+32006, 
+27005, 
+3924, 
+56161, 
+17664, 
+10510, 
+58077, 
+55866, 
+10324, 
+30726, 
+6400, 
+5122, 
+62544, 
+56974, 
+34420, 
+13056, 
+11069, 
+56951, 
+42206, 
+36677, 
+31494, 
+6869, 
+17520, 
+1880, 
+6211, 
+96, 
+2481, 
+4164, 
+521, 
+14478, 
+2816, 
+263, 
+56848, 
+4130, 
+521, 
+4625, 
+26981, 
+8250, 
+92, 
+23808, 
+42206, 
+17664, 
+36226, 
+6212, 
+9808, 
+42206, 
+4224, 
+25157, 
+96, 
+6044, 
+36353, 
+32006, 
+2309, 
+59905, 
+29264, 
+56974, 
+25711, 
+32006, 
+53, 
+22096, 
+5953, 
+32429, 
+256, 
+51716, 
+266, 
+36987, 
+19404, 
+10560, 
+29446, 
+96, 
+11017, 
+13904, 
+17664, 
+1629, 
+40529, 
+17520, 
+7680, 
+9697, 
+15012, 
+64518, 
+508, 
+4164, 
+15012, 
+17664, 
+1459, 
+1631, 
+13294, 
+36353, 
+8192, 
+4666, 
+10565, 
+24467, 
+1372, 
+43967, 
+266, 
+29976, 
+36354, 
+7098, 
+42206, 
+8714, 
+21061, 
+124, 
+5888, 
+45, 
+2722, 
+125, 
+45147, 
+20504, 
+25157, 
+117, 
+1024, 
+6688, 
+222, 
+15012, 
+57099, 
+8760, 
+266, 
+2048, 
+56974, 
+44544, 
+19223, 
+48709, 
+8363, 
+490, 
+37289, 
+1620, 
+1099, 
+52383, 
+17664, 
+256, 
+27102, 
+56974, 
+249, 
+1099, 
+14394, 
+24462, 
+27102, 
+1712, 
+56979, 
+1735, 
+256, 
+10089, 
+56335, 
+1541, 
+64549, 
+10347, 
+51300, 
+266, 
+10347, 
+256, 
+56979, 
+36353, 
+49252, 
+35636, 
+5120, 
+1410, 
+56974, 
+124, 
+19405, 
+56974, 
+1631, 
+18461, 
+15012, 
+24460, 
+10089, 
+4164, 
+45137, 
+56979, 
+10324, 
+56951, 
+4351, 
+30726, 
+34048, 
+20496, 
+17664, 
+263, 
+61175, 
+8668, 
+17664, 
+9984, 
+61175, 
+48388, 
+27607, 
+10496, 
+4130, 
+2816, 
+1222, 
+522, 
+58812, 
+45824, 
+12122, 
+1500, 
+256, 
+15012, 
+16384, 
+25344, 
+25773, 
+6807, 
+361, 
+2539, 
+10320, 
+52926, 
+6269, 
+56463, 
+34665, 
+20496, 
+53336, 
+42206, 
+16384, 
+4130, 
+676, 
+5120, 
+27102, 
+1571, 
+52600, 
+56974, 
+16384, 
+1024, 
+10089, 
+848, 
+36353, 
+56, 
+256, 
+51796, 
+52608, 
+14394, 
+56327, 
+119, 
+30550, 
+5840, 
+12189, 
+123, 
+9984, 
+6869, 
+32768, 
+16384, 
+13568, 
+47373, 
+6177, 
+245, 
+56055, 
+4130, 
+22117, 
+52, 
+125, 
+6144, 
+20970, 
+36354, 
+46917, 
+16384, 
+41472, 
+369, 
+16529, 
+30719, 
+7424, 
+56974, 
+15012, 
+22863, 
+8192, 
+60672, 
+8682, 
+56974, 
+13541, 
+2962, 
+28060, 
+267, 
+17664, 
+86, 
+21872, 
+16794, 
+523, 
+16384, 
+256, 
+25858, 
+32826, 
+3017, 
+16384, 
+28928, 
+9984, 
+539, 
+56951, 
+14394, 
+41541, 
+11843, 
+280, 
+31056, 
+120, 
+292, 
+17664, 
+22784, 
+6212, 
+1500, 
+31238, 
+36354, 
+40307, 
+17664, 
+1280, 
+32792, 
+1368, 
+56974, 
+31636, 
+37632, 
+22096, 
+36354, 
+122, 
+768, 
+56974, 
+2309, 
+42206, 
+125, 
+256, 
+263, 
+52627, 
+53306, 
+17664, 
+40, 
+1657, 
+9984, 
+3293, 
+26481, 
+48, 
+124, 
+256, 
+51, 
+42206, 
+17664, 
+14374, 
+124, 
+6580, 
+14394, 
+26830, 
+124, 
+256, 
+238, 
+36354, 
+16384, 
+6346, 
+54096, 
+65082, 
+6725, 
+9984, 
+5658, 
+12032, 
+65082, 
+39234, 
+51, 
+20504, 
+17664, 
+30612, 
+263, 
+8230, 
+9040, 
+36353, 
+51591, 
+7024, 
+23267, 
+4130, 
+3203, 
+29446, 
+2048, 
+515, 
+36354, 
+22659, 
+31246, 
+32784, 
+524, 
+3072, 
+58, 
+17664, 
+1759, 
+256, 
+2048, 
+35664, 
+17664, 
+1768, 
+48888, 
+55632, 
+3251, 
+1586, 
+1273, 
+52638, 
+36353, 
+56340, 
+11520, 
+23893, 
+42206, 
+16384, 
+260, 
+33536, 
+27102, 
+42206, 
+581, 
+9817, 
+524, 
+30976, 
+8192, 
+8760, 
+21317, 
+16384, 
+63886, 
+17664, 
+256, 
+8760, 
+256, 
+56979, 
+40, 
+256, 
+44090, 
+58, 
+16384, 
+1099, 
+21328, 
+268, 
+249, 
+56979, 
+63750, 
+4130, 
+16384, 
+52788, 
+17664, 
+16637, 
+31750, 
+10089, 
+33872, 
+16384, 
+27102, 
+3311, 
+13446, 
+22844, 
+3318, 
+40, 
+56885, 
+25424, 
+57038, 
+6699, 
+13136, 
+120, 
+39680, 
+282, 
+11639, 
+14394, 
+8776, 
+10089, 
+65278, 
+63750, 
+1099, 
+525, 
+16384, 
+256, 
+658, 
+8760, 
+525, 
+7493, 
+40, 
+30982, 
+63271, 
+20496, 
+6645, 
+25858, 
+20496, 
+31750, 
+5632, 
+7444, 
+61193, 
+6160, 
+525, 
+17664, 
+124, 
+256, 
+9776, 
+57017, 
+42206, 
+249, 
+1083, 
+20504, 
+1500, 
+1675, 
+35920, 
+56974, 
+16384, 
+2158, 
+45370, 
+17358, 
+256, 
+6144, 
+525, 
+4352, 
+42206, 
+16384, 
+60, 
+18968, 
+292, 
+15012, 
+119, 
+6346, 
+34265, 
+51463, 
+24602, 
+56974, 
+18176, 
+37756, 
+53719, 
+38059, 
+40, 
+16384, 
+256, 
+30550, 
+56974, 
+3489, 
+30726, 
+9754, 
+57359, 
+22096, 
+42565, 
+50432, 
+40202, 
+34860, 
+525, 
+40, 
+1702, 
+256, 
+8710, 
+4164, 
+525, 
+2933, 
+44208, 
+17664, 
+125, 
+2816, 
+22552, 
+6212, 
+50757, 
+15959, 
+2640, 
+28730, 
+40, 
+14080, 
+2558, 
+42206, 
+1500, 
+6346, 
+20504, 
+525, 
+53, 
+40302, 
+20504, 
+44, 
+295, 
+6380, 
+32784, 
+270, 
+16384, 
+256, 
+30550, 
+56974, 
+1024, 
+37090, 
+56974, 
+17664, 
+538, 
+6212, 
+3629, 
+41984, 
+6699, 
+24897, 
+1500, 
+3441, 
+13136, 
+62522, 
+16384, 
+256, 
+6699, 
+3325, 
+55808, 
+38426, 
+10780, 
+15012, 
+20837, 
+63750, 
+256, 
+42108, 
+56400, 
+32262, 
+24836, 
+42206, 
+44101, 
+8274, 
+1216, 
+36353, 
+40773, 
+4352, 
+4130, 
+56974, 
+4608, 
+3925, 
+42206, 
+4098, 
+281, 
+35397, 
+19156, 
+12041, 
+8760, 
+27656, 
+8760, 
+65093, 
+4864, 
+27768, 
+1674, 
+57315, 
+36353, 
+17664, 
+5120, 
+10089, 
+14405, 
+13657, 
+4130, 
+3701, 
+14342, 
+3335, 
+10089, 
+17664, 
+62208, 
+53011, 
+526, 
+35570, 
+19407, 
+42206, 
+27664, 
+5120, 
+42206, 
+15012, 
+17664, 
+52331, 
+16384, 
+4864, 
+59906, 
+32826, 
+40, 
+52871, 
+256, 
+15226, 
+28496, 
+36354, 
+3740, 
+5895, 
+23040, 
+10089, 
+17664, 
+256, 
+56447, 
+46026, 
+42709, 
+10089, 
+36354, 
+31750, 
+256, 
+20069, 
+34874, 
+56336, 
+10089, 
+56974, 
+4864, 
+27102, 
+17520, 
+3770, 
+5122, 
+30550, 
+42206, 
+55498, 
+42752, 
+263, 
+21974, 
+36354, 
+29446, 
+37707, 
+3828, 
+117, 
+6688, 
+6178, 
+120, 
+4224, 
+20430, 
+17664, 
+38162, 
+8250, 
+2048, 
+9890, 
+17664, 
+20496, 
+527, 
+11201, 
+27264, 
+48384, 
+8665, 
+17664, 
+29629, 
+16384, 
+1215, 
+20496, 
+50490, 
+9754, 
+51796, 
+3771, 
+9552, 
+32006, 
+216, 
+36400, 
+37968, 
+36609, 
+16384, 
+6400, 
+282, 
+6177, 
+17664, 
+125, 
+54016, 
+1500, 
+25726, 
+37888, 
+14829, 
+56951, 
+512, 
+5304, 
+13824, 
+67, 
+512, 
+1024, 
+6736, 
+29923, 
+10374, 
+45, 
+14394, 
+512, 
+31101, 
+52399, 
+303, 
+31949, 
+6398, 
+131, 
+9984, 
+7983, 
+11439, 
+20504, 
+55621, 
+40, 
+43258, 
+512, 
+17664, 
+5120, 
+37461, 
+20496, 
+1545, 
+1129, 
+37461, 
+37278, 
+4164, 
+49466, 
+32006, 
+6400, 
+62413, 
+20496, 
+17664, 
+28928, 
+36609, 
+29850, 
+6688, 
+15270, 
+6177, 
+288, 
+124, 
+13824, 
+539, 
+15909, 
+44155, 
+20496, 
+36610, 
+44, 
+13574, 
+48189, 
+7077, 
+5120, 
+56975, 
+22022, 
+64266, 
+15012, 
+16384, 
+46860, 
+37495, 
+20504, 
+257, 
+13437, 
+2816, 
+6699, 
+15162, 
+359, 
+16384, 
+37707, 
+11201, 
+36609, 
+36771, 
+20487, 
+16112, 
+36609, 
+15012, 
+513, 
+124, 
+512, 
+22065, 
+38882, 
+16384, 
+20737, 
+26693, 
+16384, 
+9697, 
+513, 
+1731, 
+972, 
+2048, 
+14394, 
+17664, 
+52, 
+56979, 
+64295, 
+256, 
+53148, 
+36610, 
+8760, 
+16384, 
+4864, 
+28730, 
+122, 
+256, 
+40082, 
+36609, 
+4864, 
+42206, 
+16384, 
+16825, 
+58, 
+16384, 
+5120, 
+37707, 
+17664, 
+2304, 
+703, 
+58, 
+50787, 
+12439, 
+6177, 
+58655, 
+44024, 
+36609, 
+8840, 
+36610, 
+36471, 
+10023, 
+15012, 
+29253, 
+41984, 
+10089, 
+513, 
+124, 
+256, 
+31105, 
+10053, 
+64518, 
+3926, 
+42206, 
+40, 
+52224, 
+1839, 
+3926, 
+58939, 
+2117, 
+120, 
+51456, 
+4363, 
+2163, 
+42206, 
+4864, 
+1262, 
+27428, 
+42206, 
+32006, 
+256, 
+56975, 
+249, 
+11047, 
+1861, 
+4864, 
+14394, 
+31750, 
+6346, 
+2474, 
+257, 
+31729, 
+63271, 
+56975, 
+56, 
+24836, 
+58192, 
+16384, 
+11201, 
+60474, 
+17884, 
+26724, 
+514, 
+21061, 
+16384, 
+1540, 
+6688, 
+42206, 
+42206, 
+2907, 
+12800, 
+6699, 
+16640, 
+20496, 
+37189, 
+13312, 
+51723, 
+20504, 
+38213, 
+13482, 
+13312, 
+18871, 
+64581, 
+31750, 
+256, 
+6178, 
+63750, 
+42720, 
+4350, 
+53351, 
+2048, 
+33723, 
+53324, 
+36609, 
+21000, 
+50681, 
+563, 
+44288, 
+2159, 
+3926, 
+15012, 
+36610, 
+16384, 
+18688, 
+21504, 
+40960, 
+63382, 
+60229, 
+1760, 
+27005, 
+5707, 
+61765, 
+73, 
+1477, 
+39482, 
+34751, 
+5840, 
+56975, 
+40, 
+31105, 
+8760, 
+640, 
+17664, 
+11520, 
+8192, 
+1216, 
+14394, 
+36609, 
+17664, 
+15386, 
+7444, 
+38509, 
+56975, 
+47429, 
+16384, 
+4096, 
+256, 
+1242, 
+29187, 
+56975, 
+31750, 
+31105, 
+29815, 
+53529, 
+11264, 
+1086, 
+56975, 
+55154, 
+6688, 
+8218, 
+56975, 
+9541, 
+280, 
+58, 
+30726, 
+57199, 
+17664, 
+120, 
+21361, 
+42206, 
+51013, 
+14829, 
+58, 
+932, 
+5632, 
+658, 
+61008, 
+56975, 
+322, 
+256, 
+32105, 
+51, 
+658, 
+4130, 
+56975, 
+1591, 
+6400, 
+42051, 
+56442, 
+15012, 
+38213, 
+18835, 
+18423, 
+15012, 
+3535, 
+29952, 
+260, 
+16640, 
+20496, 
+31750, 
+192, 
+6699, 
+63588, 
+59786, 
+64817, 
+64570, 
+10576, 
+19145, 
+31494, 
+8760, 
+40, 
+19239, 
+1567, 
+19408, 
+259, 
+4191, 
+24576, 
+27102, 
+64000, 
+56336, 
+1911, 
+10089, 
+1500, 
+256, 
+27102, 
+24269, 
+8164, 
+35623, 
+515, 
+8160, 
+53450, 
+36610, 
+32006, 
+256, 
+27102, 
+15012, 
+14394, 
+17664, 
+56979, 
+56975, 
+9567, 
+24836, 
+16208, 
+36609, 
+56497, 
+38285, 
+24836, 
+26724, 
+886, 
+84, 
+353, 
+20496, 
+17664, 
+256, 
+63271, 
+19408, 
+36609, 
+1536, 
+256, 
+5241, 
+56979, 
+56975, 
+56, 
+4576, 
+19409, 
+909, 
+124, 
+256, 
+6699, 
+25658, 
+17232, 
+8672, 
+28955, 
+14592, 
+19409, 
+9285, 
+16384, 
+33041, 
+2885, 
+1567, 
+20263, 
+36610, 
+1500, 
+30726, 
+49, 
+53553, 
+259, 
+16384, 
+215, 
+353, 
+56975, 
+40, 
+29702, 
+21504, 
+353, 
+27951, 
+53551, 
+259, 
+14342, 
+3072, 
+46976, 
+948, 
+1719, 
+19798, 
+4129, 
+17664, 
+16384, 
+63827, 
+5241, 
+44950, 
+56975, 
+15012, 
+45862, 
+58880, 
+7905, 
+51269, 
+28957, 
+53562, 
+17520, 
+8448, 
+369, 
+40529, 
+56975, 
+24836, 
+55577, 
+259, 
+66, 
+22530, 
+259, 
+24576, 
+40976, 
+64000, 
+10323, 
+1760, 
+58192, 
+260, 
+124, 
+256, 
+20739, 
+14336, 
+28730, 
+1045, 
+48390, 
+2560, 
+46104, 
+17520, 
+15012, 
+56975, 
+1075, 
+56416, 
+16384, 
+16077, 
+20496, 
+56975, 
+13592, 
+17199, 
+42206, 
+17519, 
+117, 
+1727, 
+57065, 
+41, 
+31105, 
+20538, 
+1101, 
+33291, 
+1682, 
+2996, 
+28730, 
+10270, 
+124, 
+4864, 
+20739, 
+42910, 
+1125, 
+64669, 
+17025, 
+65188, 
+31238, 
+13056, 
+51815, 
+40381, 
+36610, 
+17664, 
+1590, 
+16896, 
+15012, 
+7168, 
+1368, 
+56951, 
+39738, 
+31870, 
+13338, 
+41984, 
+65201, 
+20858, 
+56975, 
+1500, 
+13304, 
+55552, 
+25759, 
+59392, 
+51823, 
+40529, 
+42206, 
+36609, 
+9436, 
+16384, 
+1024, 
+40556, 
+56975, 
+10752, 
+34602, 
+6178, 
+1199, 
+32262, 
+4608, 
+6346, 
+56951, 
+56975, 
+49253, 
+1500, 
+58112, 
+4130, 
+56975, 
+1230, 
+4352, 
+13136, 
+55610, 
+17664, 
+116, 
+6912, 
+43005, 
+56975, 
+1247, 
+15360, 
+40309, 
+53562, 
+42206, 
+22031, 
+56133, 
+78, 
+61776, 
+16384, 
+30550, 
+53561, 
+36610, 
+16384, 
+3098, 
+31105, 
+15012, 
+6699, 
+4300, 
+17664, 
+256, 
+3926, 
+1320, 
+249, 
+17688, 
+25705, 
+12561, 
+16384, 
+5888, 
+20739, 
+27400, 
+4130, 
+10320, 
+11034, 
+14394, 
+1500, 
+124, 
+1536, 
+4164, 
+17664, 
+53523, 
+2048, 
+46174, 
+15012, 
+256, 
+12963, 
+17939, 
+14049, 
+51, 
+36610, 
+17664, 
+10340, 
+282, 
+24008, 
+12032, 
+42206, 
+24812, 
+1630, 
+20496, 
+1388, 
+1774, 
+11008, 
+24008, 
+14394, 
+125, 
+955, 
+17520, 
+517, 
+17664, 
+1500, 
+31750, 
+1024, 
+1024, 
+6465, 
+8807, 
+30464, 
+5658, 
+8710, 
+56610, 
+261, 
+16384, 
+353, 
+23555, 
+20504, 
+4386, 
+2159, 
+17232, 
+53306, 
+16581, 
+123, 
+12032, 
+1024, 
+58298, 
+17767, 
+124, 
+256, 
+2128, 
+261, 
+256, 
+31105, 
+15012, 
+1500, 
+3328, 
+26932, 
+56975, 
+1499, 
+21729, 
+2816, 
+1028, 
+53725, 
+36610, 
+50176, 
+10089, 
+517, 
+1536, 
+1099, 
+517, 
+4238, 
+11264, 
+56975, 
+4240, 
+28607, 
+34885, 
+96, 
+65196, 
+63750, 
+56979, 
+10348, 
+4864, 
+20496, 
+56975, 
+32718, 
+29188, 
+58, 
+34065, 
+11264, 
+55202, 
+65535, 
+256, 
+57199, 
+47429, 
+19518, 
+45856, 
+1541, 
+32003, 
+1567, 
+53667, 
+28730, 
+17664, 
+8760, 
+5178, 
+31494, 
+4864, 
+8760, 
+4864, 
+6178, 
+22085, 
+24594, 
+56336, 
+8760, 
+5120, 
+10089, 
+53689, 
+42206, 
+7870, 
+18818, 
+6687, 
+11015, 
+31368, 
+32768, 
+27772, 
+65147, 
+36610, 
+33792, 
+53769, 
+42206, 
+249, 
+4864, 
+56979, 
+36677, 
+17664, 
+31494, 
+256, 
+22871, 
+36609, 
+113, 
+1099, 
+3463, 
+1589, 
+10348, 
+28928, 
+5120, 
+34663, 
+58298, 
+42206, 
+15987, 
+22393, 
+262, 
+49742, 
+13576, 
+11125, 
+1614, 
+17664, 
+10449, 
+2048, 
+6699, 
+11017, 
+64918, 
+36609, 
+51525, 
+19905, 
+32256, 
+5632, 
+717, 
+20496, 
+26189, 
+51200, 
+56979, 
+1565, 
+256, 
+717, 
+58298, 
+28218, 
+52, 
+7546, 
+4864, 
+6699, 
+15012, 
+11333, 
+120, 
+57746, 
+11125, 
+57017, 
+64000, 
+1657, 
+31750, 
+30720, 
+37651, 
+42, 
+8692, 
+23365, 
+21733, 
+52736, 
+51777, 
+15012, 
+1666, 
+17664, 
+1759, 
+538, 
+12032, 
+20496, 
+15012, 
+31494, 
+768, 
+263, 
+1105, 
+56975, 
+20504, 
+56372, 
+32006, 
+7424, 
+18237, 
+17518, 
+1622, 
+97, 
+6178, 
+42206, 
+1500, 
+123, 
+2220, 
+16290, 
+63741, 
+42206, 
+124, 
+30154, 
+51783, 
+20496, 
+17664, 
+16497, 
+2048, 
+8194, 
+1059, 
+17664, 
+31494, 
+28999, 
+34709, 
+11589, 
+16384, 
+28928, 
+35920, 
+52279, 
+40, 
+6655, 
+22018, 
+15012, 
+1750, 
+125, 
+16056, 
+22352, 
+17664, 
+123, 
+52727, 
+15012, 
+518, 
+16384, 
+1024, 
+7450, 
+17518, 
+40, 
+97, 
+6736, 
+42206, 
+16384, 
+1032, 
+4164, 
+40, 
+369, 
+42206, 
+252, 
+51839, 
+17680, 
+65376, 
+256, 
+22018, 
+20496, 
+14394, 
+17664, 
+120, 
+34816, 
+13576, 
+41913, 
+4130, 
+56975, 
+30533, 
+13382, 
+13576, 
+5122, 
+51, 
+5896, 
+56420, 
+25471, 
+11264, 
+18564, 
+4130, 
+14394, 
+36610, 
+9536, 
+124, 
+256, 
+17298, 
+4130, 
+13384, 
+256, 
+768, 
+36253, 
+41474, 
+20496, 
+28928, 
+41067, 
+47952, 
+28730, 
+13268, 
+16384, 
+1577, 
+4096, 
+44962, 
+15012, 
+1500, 
+768, 
+8192, 
+47010, 
+14394, 
+20049, 
+63233, 
+52727, 
+46328, 
+263, 
+13396, 
+19456, 
+6699, 
+1422, 
+20496, 
+26181, 
+16384, 
+53, 
+58249, 
+6212, 
+36609, 
+16384, 
+9998, 
+63258, 
+17520, 
+38411, 
+18432, 
+53, 
+290, 
+56975, 
+56372, 
+44058, 
+63258, 
+20496, 
+60692, 
+3072, 
+44058, 
+24602, 
+42206, 
+56, 
+3072, 
+12696, 
+8760, 
+1932, 
+17664, 
+33251, 
+1936, 
+5186, 
+1782, 
+11016, 
+3808, 
+28218, 
+120, 
+954, 
+31105, 
+4676, 
+628, 
+123, 
+20224, 
+53, 
+11034, 
+4350, 
+13407, 
+28928, 
+47105, 
+8760, 
+31494, 
+2048, 
+8888, 
+45882, 
+43904, 
+15012, 
+36609, 
+13412, 
+56576, 
+51, 
+20496, 
+42206, 
+17664, 
+16384, 
+256, 
+21504, 
+47105, 
+6212, 
+42206, 
+48112, 
+125, 
+28928, 
+4576, 
+50554, 
+16384, 
+2048, 
+51991, 
+52727, 
+519, 
+64774, 
+27102, 
+252, 
+24882, 
+42206, 
+1500, 
+7476, 
+256, 
+56979, 
+1500, 
+28928, 
+20011, 
+28730, 
+36677, 
+4864, 
+42206, 
+123, 
+67, 
+9998, 
+8760, 
+17218, 
+1500, 
+1099, 
+36609, 
+56372, 
+5120, 
+848, 
+42206, 
+14342, 
+14394, 
+2019, 
+5120, 
+30155, 
+58, 
+31494, 
+2048, 
+61175, 
+15012, 
+17664, 
+14342, 
+44058, 
+15012, 
+16384, 
+256, 
+263, 
+2048, 
+39760, 
+64518, 
+16072, 
+56336, 
+54055, 
+36610, 
+4864, 
+63718, 
+36609, 
+16384, 
+14394, 
+256, 
+27102, 
+40684, 
+42206, 
+53886, 
+55713, 
+17664, 
+26270, 
+353, 
+28730, 
+39749, 
+58835, 
+45111, 
+6760, 
+32006, 
+6699, 
+63271, 
+57215, 
+2059, 
+1623, 
+2220, 
+30155, 
+19410, 
+46650, 
+1631, 
+22257, 
+56144, 
+2064, 
+1500, 
+31494, 
+22018, 
+23866, 
+2048, 
+45, 
+46522, 
+60288, 
+9141, 
+40, 
+256, 
+8760, 
+56336, 
+19410, 
+42206, 
+1571, 
+10089, 
+17664, 
+11520, 
+56979, 
+61253, 
+13576, 
+12190, 
+20496, 
+14394, 
+36609, 
+27811, 
+113, 
+27102, 
+63258, 
+63546, 
+32387, 
+20496, 
+28218, 
+17664, 
+31750, 
+5127, 
+63258, 
+6736, 
+36609, 
+2124, 
+17664, 
+56329, 
+2220, 
+31923, 
+52727, 
+264, 
+1599, 
+7168, 
+11264, 
+12272, 
+36609, 
+45824, 
+2560, 
+256, 
+27465, 
+20504, 
+36609, 
+16384, 
+28928, 
+2048, 
+2220, 
+1313, 
+249, 
+19411, 
+6736, 
+56975, 
+123, 
+23296, 
+1262, 
+42326, 
+51329, 
+17824, 
+50254, 
+44058, 
+44374, 
+4131, 
+40773, 
+1561, 
+28928, 
+4864, 
+42206, 
+17664, 
+124, 
+28928, 
+11125, 
+50518, 
+36326, 
+62, 
+63258, 
+63258, 
+48664, 
+16384, 
+51354, 
+15757, 
+8760, 
+39237, 
+29748, 
+32006, 
+256, 
+6699, 
+30155, 
+717, 
+8672, 
+55049, 
+32006, 
+266, 
+62720, 
+15012, 
+57396, 
+1500, 
+1536, 
+6400, 
+11373, 
+30155, 
+17518, 
+520, 
+1024, 
+37762, 
+63258, 
+62591, 
+2220, 
+32442, 
+45381, 
+3648, 
+521, 
+17664, 
+56340, 
+6688, 
+32171, 
+41552, 
+63557, 
+1699, 
+58880, 
+17520, 
+36610, 
+44177, 
+6699, 
+6736, 
+15012, 
+40, 
+31761, 
+34473, 
+6688, 
+4176, 
+15012, 
+123, 
+9472, 
+17518, 
+36609, 
+40, 
+6050, 
+47828, 
+16568, 
+538, 
+8098, 
+15012, 
+14569, 
+41533, 
+1024, 
+6736, 
+15012, 
+32006, 
+768, 
+53, 
+64806, 
+40, 
+30726, 
+59136, 
+36610, 
+123, 
+256, 
+64848, 
+19915, 
+26268, 
+1629, 
+30156, 
+52727, 
+265, 
+125, 
+34048, 
+256, 
+53, 
+3865, 
+33872, 
+32006, 
+11125, 
+56979, 
+4164, 
+42206, 
+55877, 
+61173, 
+256, 
+6346, 
+659, 
+4164, 
+42206, 
+13381, 
+245, 
+13058, 
+52727, 
+20496, 
+30158, 
+40, 
+32000, 
+256, 
+3601, 
+42206, 
+14394, 
+36610, 
+1500, 
+50673, 
+11016, 
+41474, 
+20504, 
+15012, 
+265, 
+16384, 
+263, 
+303, 
+42206, 
+30976, 
+6400, 
+6688, 
+717, 
+15012, 
+36609, 
+1500, 
+1775, 
+16077, 
+521, 
+249, 
+58151, 
+2467, 
+113, 
+19411, 
+249, 
+26724, 
+265, 
+4336, 
+45568, 
+19411, 
+4164, 
+56975, 
+1500, 
+19411, 
+14394, 
+63750, 
+32592, 
+44869, 
+1561, 
+30156, 
+6178, 
+36610, 
+19411, 
+17520, 
+46324, 
+64273, 
+10496, 
+1262, 
+52727, 
+14394, 
+27205, 
+40940, 
+31855, 
+265, 
+4347, 
+24836, 
+4164, 
+1500, 
+5120, 
+37144, 
+19411, 
+42206, 
+10752, 
+23335, 
+41530, 
+56, 
+256, 
+717, 
+4351, 
+64, 
+34798, 
+53, 
+52295, 
+8603, 
+50496, 
+6178, 
+32006, 
+64, 
+30712, 
+8250, 
+18963, 
+35397, 
+1723, 
+41474, 
+31856, 
+2514, 
+27838, 
+6912, 
+717, 
+19411, 
+42206, 
+628, 
+35393, 
+3463, 
+10348, 
+11016, 
+52048, 
+2528, 
+16384, 
+29440, 
+11317, 
+4164, 
+58785, 
+10496, 
+30156, 
+13689, 
+17664, 
+7936, 
+2220, 
+7288, 
+56975, 
+40, 
+53, 
+51364, 
+15012, 
+16384, 
+659, 
+44058, 
+36610, 
+256, 
+14394, 
+27102, 
+4373, 
+1083, 
+13541, 
+41552, 
+65082, 
+124, 
+28928, 
+10089, 
+6736, 
+2570, 
+659, 
+4164, 
+266, 
+56, 
+7424, 
+44058, 
+56979, 
+20496, 
+1500, 
+1662, 
+10510, 
+15685, 
+52727, 
+42206, 
+23808, 
+2220, 
+12117, 
+30156, 
+522, 
+32006, 
+6912, 
+41474, 
+6212, 
+56975, 
+}; 

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,408 @@
+/*
+ * search.c - Searching routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ * 
+ *    Permission is granted to anyone to make or distribute copies
+ *    of this source code, either as received or modified, in any
+ *    medium, provided that all copyright notices, permission and
+ *    nonwarranty notices are preserved, and that the distributor
+ *    grants the recipient permission for further redistribution as
+ *    permitted by this document.
+ *
+ *    Permission is granted to distribute this file in compiled
+ *    or executable form under the same conditions that apply for
+ *    source code, provied that either:
+ *
+ *    A. it is accompanied by the corresponding machine-readable
+ *       source code,
+ *    B. it is accompanied by a written offer, with no time limit,
+ *       to give anyone a machine-readable copy of the corresponding
+ *       source code in return for reimbursement of the cost of
+ *       distribution.  This written offer must permit verbatim
+ *       duplication by anyone, or
+ *    C. it is distributed by someone who received only the
+ *       executable form, and is accompanied by a copy of the
+ *       written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them. 
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "utils.h"
+#include "search.h"
+#include "url.h"
+
+#define min(a, b) (a > b ? b : a)
+
+extern StrTreeNode *tree_head;
+
+int * 
+calculate_bm_table (char *pattern, int pattern_length) 
+{
+  int i;
+  int *returnval = (int *) malloc (sizeof(int) * CHAR_SIZE);
+
+  if (returnval == NULL)
+    fatal ("Not enough virtual memory \n");
+
+  for (i = 0; i < CHAR_SIZE; ++i)
+    returnval[i] = pattern_length;
+  
+  for (i = 0; i < pattern_length; ++i)
+    returnval[(unsigned char)pattern[i]] = pattern_length - i - 1;
+
+  return returnval;
+}
+
+
+/********************************************************************\
+* boyer_moore: Implements the Boyer-Moore al;gorithm to search the   *
+*              string x within string x. This is known to be one of  *
+*              the most efficient string search algorithms.          *
+*                                                                    *
+* Inputs:   Large and small pattern information                      *
+*           bmBc: the character table used for the algorithm,        *
+*           instead of generating it for every call, we generate the *
+*           table once in the creation and use it for every search.  *
+*                                                                    *
+* Returns:  The location of the match, -1 if no match                *
+\********************************************************************/
+int 
+boyer_moore (char *y, int n, char *x, int m, int *bmBc) 
+{
+  int j, k, shift;
+  
+  shift = m - 1;
+  j = 0;
+  /* while (j < n) */
+  /* Changed while-loop bound to prevent reading off the end of the array.
+   * -KF 2/2007 */
+  while (j + m - 1 < n)
+    {
+      k = bmBc[(unsigned char)y[j + m -1]];
+      /* while ((k !=  0) && (j < n)) */
+      /* Changed while-loop bound to prevent reading off the end of the array.
+       * -KF 2/2007 */
+      while ((k !=  0) && (j + k + m - 1 < n)) 
+	{
+	  j += k; 
+	  k = bmBc[(unsigned char)y[j + m -1]];
+	}
+      
+      if (memcmp(x, y + j, m - 1) == 0 && (j < n))
+	return(j);
+      j += shift; 
+    }
+  return -1;
+}
+
+struct rtentry *
+find_destination (char *packet, int packet_size)
+{
+  StrTreeNode *iterator = tree_head;
+
+  while (iterator)
+    {
+#ifdef DEBUG_2
+      fprintf (stderr, "Comparing to %s \n", iterator->common_pattern);
+#endif
+
+      /* If the packet contains the pattern at the header... */
+      if ((boyer_moore (packet, packet_size, iterator->common_pattern, iterator->common_pattern_length, iterator->bm_table) != -1))
+	{
+	  /* We found a common substring in the header, so look into the list... */
+	  PatternNode *list = iterator->list;
+	  while (list)
+	    {
+	      int search_result;      
+#ifdef DEBUG_2
+	      fprintf (stderr, "Inside comparing to %s \n", iterator->common_pattern);
+#endif
+	      if (list->search_depth == 0)
+		search_result = boyer_moore (packet, packet_size, list->pattern, list->pattern_length, list->bm_table);
+	      else
+		search_result = boyer_moore (packet, min(packet_size, list->search_depth), list->pattern, list->pattern_length, list->bm_table);
+	      
+	      if (search_result != -1)
+		{
+#ifdef DEBUG
+		  fprintf (stderr, "Found a packet \n");
+#endif
+		  /* An exact match */
+		  if (list->type == log)
+		    fprintf (list->logto, "Source: %x Destination %x \n", PACKET_SOURCE(packet), PACKET_DESTINATION(packet));
+		  return list->destination;
+		}
+	      list = list->below;
+	    }
+	}
+      iterator = iterator->next;
+    }
+
+  /* No match, no rule can be find for the packet... */
+  return NULL;
+}
+
+
+/********************************************************************\
+* Procedures to generate empty nodes.                                *
+\********************************************************************/
+PatternNode *
+NewPatternNode (int chainno, nodetype type, char *pattern, int pattern_length, int search_depth)
+{
+  PatternNode *returnval;
+
+  if ((returnval = (PatternNode *) malloc (sizeof (PatternNode))) == NULL)
+    fatal ("Run out of virtual memory \n");
+
+  returnval->chain_node_number = chainno;
+  returnval->type = type;
+  if ((returnval->pattern = (char *) malloc (pattern_length)) == NULL)
+    fatal ("Not enough virtual memory \n");
+  strncpy (returnval->pattern, pattern, pattern_length);
+  returnval->pattern_length = pattern_length;
+  returnval->search_depth = search_depth;
+  returnval->bm_table = calculate_bm_table (pattern, pattern_length);
+
+  return returnval;
+}
+
+StrTreeNode *
+NewStrTreeNode (int chainno, char *pattern, int pattern_length)
+{
+  StrTreeNode *returnval;
+
+  if ((returnval = (StrTreeNode *) malloc (sizeof (StrTreeNode))) == NULL)
+    fatal ("Run out of virtual memory \n");
+
+  returnval->chain_node_number = chainno;
+  if ((returnval->common_pattern = (char *) malloc (pattern_length)) == NULL)
+    fatal ("Not enough virtual memory \n");
+  strncpy (returnval->common_pattern, pattern, pattern_length);
+  returnval->common_pattern_length = pattern_length;
+  returnval->bm_table = calculate_bm_table (returnval->common_pattern, pattern_length);
+
+  return returnval;
+}
+
+
+/********************************************************************\
+* Find_lcs: A modified version of the boyer-moore algorithm to find  *
+*           the largest common substring                             *
+*                                                                    *
+* Inputs:   Large and small pattern information                      *
+*           lcssize: return value of the procedure                   *
+*                                                                    *
+* Returns:  The largest substring found                              *
+\********************************************************************/
+char *
+find_lcs (char *largepattern, int largepatternsize, char *smallpattern, int smallpatternsize, int *lcssize)
+{
+  char *sub_pattern = NULL;
+  char *exchanger;
+  int sub_pat_size = 0;
+  int j, k, shift, exchangersize;
+  int *bmBc;
+
+  /* Make sure the large is larger */
+  if (smallpatternsize > largepatternsize)
+    {
+      exchanger = smallpattern;
+      smallpattern = largepattern;
+      largepattern = exchanger;
+      exchangersize = smallpatternsize;
+      smallpatternsize = largepatternsize;
+      largepatternsize = exchangersize;
+    }
+  
+  bmBc = calculate_bm_table (smallpattern, smallpatternsize);
+
+  shift = 1;
+  j = 0;
+  k = bmBc[(unsigned char)largepattern[j + smallpatternsize -1]];
+  while (j < largepatternsize) 
+    {
+      j += k; 
+      k = bmBc[(unsigned char)largepattern[j + smallpatternsize -1]];
+      /* Unlike original BM we can not shift the whole subpattern */
+      if (k == smallpatternsize)
+	k = sub_pat_size + 1;
+      else
+	{
+	  /* Match in the characters, check how big the substring is */	    
+	  int first_char = j + smallpatternsize - 1;
+	  int temp_sub_size = 0;
+
+	  /* First move back to find the start of the partial match */
+	  while ((k < smallpatternsize) && (smallpattern[smallpatternsize - k - 1] == largepattern[first_char])) 
+	    {
+	      first_char--;
+	      k++;
+	    }
+	  k--;
+	  first_char++;
+
+	  /* Now move forward until there is a mismatch */
+	  while ((k >= 0) && (smallpattern[smallpatternsize - k - 1] == largepattern[first_char])) 
+	    {
+	      temp_sub_size++;
+	      k--;
+	      first_char++;
+	    }
+	  
+	  if (temp_sub_size > sub_pat_size)
+	    {
+	      sub_pat_size = temp_sub_size;
+	      sub_pattern = &largepattern[first_char - temp_sub_size];
+
+	      /* If it is equal to the small pattern, no need to continue */
+	      if (sub_pat_size == smallpatternsize)
+		{
+		  *lcssize = sub_pat_size;
+		  return sub_pattern;
+		}
+	    }
+
+	  k = 1;
+	}
+    }
+  *lcssize = sub_pat_size;
+  return sub_pattern;
+}
+
+void 
+insert_rule (char *pattern, int pattern_length, int depth)
+{
+  StrTreeNode *head_iterator = tree_head;
+  StrTreeNode *found_largestcommon = NULL;
+  unsigned int largest_common = 0;
+  char *sub_str;
+
+  /* First traverse all the headers finding the longest common substring */
+  while (head_iterator)
+    {
+      int temp_common;
+      char *temp_str = find_lcs (head_iterator->common_pattern, head_iterator->common_pattern_length, pattern, pattern_length, &temp_common);
+     
+#ifdef DEBUG_2
+      fprintf (stdout, "Compared %s to %s and found %s with size %d \n", head_iterator->common_pattern, pattern, temp_str, temp_common);
+#endif 
+     
+      if (temp_common > largest_common)
+	{
+	  largest_common = temp_common;
+	  found_largestcommon = head_iterator;
+	  sub_str = temp_str;
+	}
+      head_iterator = head_iterator->next;
+    }
+  
+  if (largest_common < MIN_COMMON_SIZE)
+    {
+      /* We have to create a new head */
+      PatternNode *new_node;
+      StrTreeNode *new_head;
+      
+      if (tree_head != NULL)
+	new_head = NewStrTreeNode (tree_head->chain_node_number + 1, pattern, pattern_length);
+      else
+	new_head = NewStrTreeNode (0, pattern, pattern_length);
+      
+      new_node = NewPatternNode (0, route, pattern, pattern_length, depth);
+      new_node->below = NULL;
+
+      new_head->list = new_node;
+      new_head->next = tree_head;
+      tree_head = new_head;
+    }
+  else
+    {
+      /* Found a header matching the common value that is large enough */
+      PatternNode *new_node;
+      
+      /* First change the head pattern (chunk it off) */
+      strncpy (found_largestcommon->common_pattern, sub_str, largest_common);
+      found_largestcommon->common_pattern_length = largest_common;
+      
+      /* Add the entry to the head list */
+      new_node = NewPatternNode (found_largestcommon->list->chain_node_number + 1, route, pattern, pattern_length, depth);
+      new_node->below = found_largestcommon->list;
+      found_largestcommon->list = new_node;
+    }  
+}
+
+void 
+db_init (char *file_name)
+{
+  FILE *pattern_file;
+  char line[BUF_SIZE];
+  char *reader;
+  int i;
+  char *pattern;
+
+
+  if ((pattern_file = fopen (file_name, "r")) == NULL)
+    fatal ("Can not open the input file\n");
+
+  /* Initialize the tree structure */
+  while (fgets (line, BUF_SIZE, pattern_file) != NULL)
+    {
+      int value;
+      int pattern_length, search_depth;
+
+      reader = line + 1;
+      switch (line[0])
+	{
+	case '1':
+	  sscanf (reader, "(%d)", &pattern_length);
+	  search_depth = 0;
+	  break;
+	case '2':
+	  sscanf (reader, "(%d:%d)", &pattern_length, &search_depth);
+	  break;
+	default:
+	  fatal ("unrecognized input line start: %c \n", line[0]);
+	}
+
+      if ((pattern = (char *) malloc (pattern_length + 1)) == NULL)
+	fatal ("Not enough virtual memory \n");
+      
+      for (i = 0; i < pattern_length; i++)
+	{
+	  while (*reader != ',')
+	    reader++;
+	  reader++;
+	  sscanf (reader, " %d", &value);
+	  pattern[i] = (char)value;
+#ifdef DEBUG_2	      
+	  fprintf (stdout, "Read value: %d \n", value);
+#endif  
+	}
+      
+      pattern[pattern_length] = '\0';
+
+#ifdef DEBUG_2
+      fprintf (stdout, "Pattern: %s, length: %d depth: %d, tree before: %x\n", pattern, pattern_length, search_depth, tree_head);
+#endif
+
+      insert_rule (pattern, pattern_length, search_depth);
+      
+#ifdef DEBUG_2
+      fprintf (stdout, "Tree after: %x\n", tree_head);
+#endif
+    }
+}

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,89 @@
+/*
+ * search.h - Searching routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ * 
+ *    Permission is granted to anyone to make or distribute copies
+ *    of this source code, either as received or modified, in any
+ *    medium, provided that all copyright notices, permission and
+ *    nonwarranty notices are preserved, and that the distributor
+ *    grants the recipient permission for further redistribution as
+ *    permitted by this document.
+ *
+ *    Permission is granted to distribute this file in compiled
+ *    or executable form under the same conditions that apply for
+ *    source code, provied that either:
+ *
+ *    A. it is accompanied by the corresponding machine-readable
+ *       source code,
+ *    B. it is accompanied by a written offer, with no time limit,
+ *       to give anyone a machine-readable copy of the corresponding
+ *       source code in return for reimbursement of the cost of
+ *       distribution.  This written offer must permit verbatim
+ *       duplication by anyone, or
+ *    C. it is distributed by someone who received only the
+ *       executable form, and is accompanied by a copy of the
+ *       written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them. 
+ */
+
+#ifdef LITTLE_ENDIAN
+#define PACKET_LENGTH(packet)	  (((unsigned char)packet[2] << 8) + (unsigned char)packet[3]) 
+#else
+#define PACKET_LENGTH(packet)	  (*(unsigned short *)&packet[2])
+#endif
+
+#define PACKET_SOURCE(packet)	  	  (*(unsigned int *)&packet[12])
+#define PACKET_DESTINATION(packet)	  (*(unsigned int *)&packet[16])
+
+#define BUF_SIZE 2048
+
+typedef enum _nodetype {log, route} nodetype;
+
+#define CHAR_SIZE 256
+
+/* Patterns are stored in a two-dimensional link. The headers contain
+   a common substring for all the patterns in the nodes stored in the
+   link below. The links contain the actual elements to be searched */
+
+typedef struct _PatternNode
+{
+  int chain_node_number;  /* Label */
+  
+  nodetype type;           /* log and route, or just route */
+  int proto;               /* protocol, currently not used */
+  FILE *logto;             /* log file in which to write packets which 
+			  match this rule, if the logging is activated. */
+  char *pattern;           /* pattern to search for */
+  int pattern_length;      /* Length of the pattern to be searched */
+  int search_depth;        /* Length of section to be searched */
+  int *bm_table;           /* BM Table used for searching */
+  struct rtentry *destination;   /* Where to forward packets falling for the rule */
+  struct _PatternNode *below;    /* The list ... */
+} PatternNode;
+
+
+typedef struct _StrTreeNode
+{
+  int chain_node_number;         /* Label */
+  char *common_pattern;          /* pattern to search for */
+  int common_pattern_length;     /* Length of the pattern to be searched */
+  int *bm_table;                 /* BM Table used for searching */
+  struct _StrTreeNode *next;     /* Next head in the list */
+  struct _PatternNode *list;     /* List of patterns for the head (common subpattern) */
+} StrTreeNode;
+
+int boyer_moore (char *, int, char *, int, int *); 
+struct rtentry *find_destination (char *, int);
+void db_init (char *);

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,146 @@
+/*
+ * url.c - Routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ * 
+ *
+ *    Permission is granted to anyone to make or distribute copies
+ *    of this source code, either as received or modified, in any
+ *    medium, provided that all copyright notices, permission and
+ *    nonwarranty notices are preserved, and that the distributor
+ *    grants the recipient permission for further redistribution as
+ *    permitted by this document.
+ *
+ *    Permission is granted to distribute this file in compiled
+ *    or executable form under the same conditions that apply for
+ *    source code, provied that either:
+ *
+ *    A. it is accompanied by the corresponding machine-readable
+ *       source code,
+ *    B. it is accompanied by a written offer, with no time limit,
+ *       to give anyone a machine-readable copy of the corresponding
+ *       source code in return for reimbursement of the cost of
+ *       distribution.  This written offer must permit verbatim
+ *       duplication by anyone, or
+ *    C. it is distributed by someone who received only the
+ *       executable form, and is accompanied by a copy of the
+ *       written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them. 
+ */
+
+#include <sys/param.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
+#include "packet.h"
+#include "utils.h"
+#include "search.h"
+#include "url.h"
+
+#define MAX_PACKET_SIZE 1500
+
+StrTreeNode *tree_head;
+
+long
+internet_checksum (addr, count)
+     unsigned short * addr;
+     int count;
+{
+  /* 
+   *  Compute Internet Checksum for "count" bytes
+   *  beginning at location "addr".
+   */
+  register unsigned long sum = 0;
+ 
+  while( count > 1 ) 
+    { 
+      sum+= ~((unsigned short)*addr++);
+      count -= 2;
+    }
+  
+  /*  Add left-over byte, if any */
+  if( count > 0 )
+    sum += * (unsigned char *) addr;
+  
+  /*  Fold 32-bit sum to 16 bits */
+  while (sum>>16)
+    sum = (sum & 0xffff) + (sum >> 16);
+  
+#ifdef LITTLE_ENDIAN
+  sum = ((sum >> 8) & 0xFF) + ((sum << 8) & 0xFF00);
+#endif
+
+  return sum; 
+} 
+
+/*************************************************\
+*                                                *
+* main: Initializes the string table             *
+*       Reads packets and compares them against  *
+*       the table                                *
+*                                                *
+\************************************************/
+int main (int argc, char **argv)
+{
+  struct rtentry *entry;
+  unsigned int num_packets, i;
+  char *packet;
+
+  if (argc != 3)
+    fatal ("Usage: url inputfilename #numberofpackets");
+
+  num_packets = atoi (argv[2]);  
+
+  /* Read the string information */
+  db_init(argv[1]);
+
+  fprintf (stdout, "URL table initialized, reading packets... \n");
+
+  /* The table is ready, now we get the packets... */
+  for (i = 0; i < num_packets; i++)
+    {
+      long original_checksum, checksum;
+      
+      packet = get_next_packet();
+      
+      /* We only have to check the checksum to make sure nothing is changed.. */
+#ifdef LITTLE_ENDIAN
+      original_checksum = ((unsigned char)packet[10] << 8) + (unsigned char)packet[11];
+#else
+      original_checksum = *(unsigned short *)&packet[10];
+#endif
+      packet[10] = 0;
+      packet[11] = 0;      
+      checksum = (internet_checksum ((unsigned short*)packet, 20)) & 0xFFFF;
+      
+      entry = find_destination (packet, packet_size (i));
+      
+      checksum = (internet_checksum ((unsigned short*)packet, 20)) & 0xFFFF;
+      packet[10] = (checksum & 0xFF00) >> 8;
+      packet[11] = checksum & 0xFF;
+      
+      /* We actually now have to check whether the entry is NULL and
+      if so forward the packet to a default destination, but we don't
+      have any interface anyway and find_destination always return
+      NULL (from different locations indicating a match for the
+      packet). So, we don't perform the checking and forwarding. These
+      are done in route application. */
+
+      /* Done for the packet... */
+    }
+  
+  fprintf (stderr, "URL finished for %d packets \n", num_packets);
+  return 0;
+}

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,43 @@
+/*
+ * url.h - Routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ * 
+ *    Permission is granted to anyone to make or distribute copies
+ *    of this source code, either as received or modified, in any
+ *    medium, provided that all copyright notices, permission and
+ *    nonwarranty notices are preserved, and that the distributor
+ *    grants the recipient permission for further redistribution as
+ *    permitted by this document.
+ *
+ *    Permission is granted to distribute this file in compiled
+ *    or executable form under the same conditions that apply for
+ *    source code, provied that either:
+ *
+ *    A. it is accompanied by the corresponding machine-readable
+ *       source code,
+ *    B. it is accompanied by a written offer, with no time limit,
+ *       to give anyone a machine-readable copy of the corresponding
+ *       source code in return for reimbursement of the cost of
+ *       distribution.  This written offer must permit verbatim
+ *       duplication by anyone, or
+ *    C. it is distributed by someone who received only the
+ *       executable form, and is accompanied by a copy of the
+ *       written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them. 
+ */
+
+#define MIN_COMMON_SIZE 3
+
+

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,32 @@
+/*
+ * utils.c - Some utility functions common to several applications
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful.  The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * You are welcome to use, share and improve this
+ * source file.  You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+
+#include <stdio.h>
+
+#ifdef __GNUC__
+void _fatal(char *file, char *func, int line, char *fmt, ...)
+#else
+void fatal(char *fmt, ...)
+#endif
+{
+  fprintf(stderr, "fatal: %s", fmt);
+#ifdef __GNUC__
+  fprintf(stderr, " [%s:%s, line %d]", func, file, line);
+#endif
+  fprintf(stderr, "\n");
+  exit(1);
+}
+

Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h?rev=46444&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,29 @@
+/*
+ * utils.h - Some utility functions common to several applications
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful.  The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use. 
+ * 
+ * You are welcome to use, share and improve this
+ * source file.  You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+
+#ifdef __GNUC__
+/* declare a fatal run-time error, calls fatal hook function */
+#define fatal(fmt, args...)	\
+  _fatal(__FILE__, __FUNCTION__, __LINE__, fmt, ## args)
+
+void
+_fatal(char *file, char *func, int line, char *fmt, ...)
+__attribute__ ((noreturn));
+#else 
+void fatal(char *fmt, ...);
+#endif
+
+





More information about the llvm-commits mailing list