From b9d33911e29573e2b8c07852bf643bba702c57cc Mon Sep 17 00:00:00 2001 From: Michael Krabbe Borregaard Date: Mon, 4 Dec 2023 14:20:32 +0100 Subject: [PATCH 1/5] Ignore DS_Store files (on mac) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 95731a5..8a9b75c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /Manifest.toml /docs/Manifest.toml /docs/build/ +.DS_Store From 706710f8acad5120ad92811122e59172adc40356 Mon Sep 17 00:00:00 2001 From: Michael Krabbe Borregaard Date: Mon, 4 Dec 2023 14:20:50 +0100 Subject: [PATCH 2/5] add utility functions ported from R --- src/maxnet.jl | 10 +++++++--- src/utils.jl | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 src/utils.jl diff --git a/src/maxnet.jl b/src/maxnet.jl index 6bf02f2..f6effc9 100644 --- a/src/maxnet.jl +++ b/src/maxnet.jl @@ -1,5 +1,9 @@ -module maxnet - -# Write your package code here. +module MaxNet +using Lasso +using StatsModels +using Missings +include("utils.jl") +include("terms.jl") +include("maxnet_function.jl") end diff --git a/src/utils.jl b/src/utils.jl new file mode 100644 index 0000000..63afcca --- /dev/null +++ b/src/utils.jl @@ -0,0 +1,22 @@ +function hinge(x, nknots = 50) + mi, ma = extrema(x) + k = range(mi, ma, length = nknots) + lh = hingeval.(x, k[1:end-1]', [ma]) + rh = hingeval.(x, [mi], k[2:end]') + [lh rh] +end +hingeval(x, mi, ma) = clamp((x - mi) / (ma - mi), 0, 1) + +function thresholds(x, nknots = 50) + k = range(extrema(x)..., length = nknots + 2)[2:nknots + 1] + Int.(x .>= k') +end +thresholdval(x, knot) = Int.(x .>= knot) + +categorical(x) = Int.(x .== unique(x)') +categoricalval(x, category) = Int.(x .== category) + +function thresholds(x, nknots = 50) + k = range(extrema(x)..., length = nknots + 2)[2:nknots + 1] + Int.(x .>= k') +end \ No newline at end of file From 7cf9eca8279e5006d26c53c7dde3b261fd266cbd Mon Sep 17 00:00:00 2001 From: Michael Krabbe Borregaard Date: Mon, 4 Dec 2023 14:22:44 +0100 Subject: [PATCH 3/5] add a basic test (does not work yet) --- data/bradypus.tsv | 1117 +++++++++++++++++++++++++++++++++++++++++++++ test/runtests.jl | 11 + 2 files changed, 1128 insertions(+) create mode 100644 data/bradypus.tsv diff --git a/data/bradypus.tsv b/data/bradypus.tsv new file mode 100644 index 0000000..c2737d5 --- /dev/null +++ b/data/bradypus.tsv @@ -0,0 +1,1117 @@ +"presence" "cld6190_ann" "dtr6190_ann" "ecoreg" "frs6190_ann" "h_dem" "pre6190_ann" "pre6190_l1" "pre6190_l10" "pre6190_l4" "pre6190_l7" "tmn6190_ann" "tmp6190_ann" "tmx6190_ann" "vap6190_ann" +1 76 104 "10" 2 121 46 84 41 54 3 192 266 337 279 +1 76 104 "10" 2 121 46 84 40 54 3 192 266 337 279 +1 57 114 "10" 1 211 65 129 56 58 34 140 244 321 221 +1 57 112 "10" 3 363 36 71 33 27 13 135 229 307 202 +1 57 113 "10" 3 303 39 77 35 29 15 134 229 306 202 +1 58 111 "10" 0 166 54 107 48 45 23 156 252 326 235 +1 57 110 "8" 0 430 33 61 30 29 15 153 245 326 217 +1 77 82 "10" 0 12 60 69 24 96 42 229 275 335 306 +1 83 86 "10" 0 23 58 96 30 95 25 220 271 328 301 +1 82 85 "10" 0 32 62 84 39 98 29 224 272 328 300 +1 77 95 "10" 0 47 70 72 50 92 69 211 264 318 298 +1 82 85 "10" 0 34 61 85 39 98 29 224 272 328 300 +1 82 90 "10" 0 34 61 78 54 94 29 216 268 324 306 +1 66 93 "10" 1 29 33 51 42 28 18 167 243 319 252 +1 81 99 "10" 0 46 56 80 23 103 26 203 264 327 295 +1 75 86 "10" 0 7 76 116 20 138 49 222 268 325 301 +1 76 91 "10" 0 48 54 70 20 99 27 217 267 331 294 +1 79 92 "10" 0 19 65 75 17 120 56 221 270 332 305 +1 76 94 "10" 0 101 55 63 17 101 31 207 264 326 295 +1 77 94 "10" 0 91 55 67 23 89 27 211 268 330 305 +1 76 93 "10" 0 17 55 64 19 98 30 208 264 327 297 +1 71 92 "10" 0 16 55 64 17 102 30 212 265 329 294 +1 66 92 "10" 0 10 55 61 15 105 35 213 266 329 292 +1 77 94 "10" 0 35 55 64 20 96 29 208 265 327 299 +1 77 94 "10" 0 31 55 66 22 91 28 209 267 329 302 +1 78 100 "10" 0 6 66 108 26 120 31 212 268 330 306 +1 77 99 "10" 0 1 68 110 28 119 36 213 268 329 304 +1 77 99 "10" 0 3 67 109 27 120 33 213 268 329 306 +1 75 95 "10" 3 771 42 79 42 29 15 108 195 274 179 +1 82 96 "10" 0 86 74 96 81 97 39 206 260 316 302 +1 74 98 "10" 1 1366 78 45 120 77 76 156 212 269 214 +1 68 103 "10" 2 1569 65 32 95 86 49 138 192 250 171 +1 64 87 "6" 0 1 55 16 88 43 71 217 266 319 283 +1 69 94 "10" 0 281 71 22 105 75 83 191 242 296 256 +1 55 105 "10" 1 181 34 5 59 30 41 207 272 340 287 +1 51 115 "8" 3 173 45 9 84 51 41 190 259 333 264 +1 51 117 "2" 3 89 46 8 94 53 35 177 248 322 241 +1 82 84 "10" 4 121 174 152 210 178 151 207 252 300 274 +1 72 87 "6" 1 4 116 46 231 72 118 204 252 307 275 +1 82 88 "10" 2 64 180 145 191 173 193 204 252 301 273 +1 84 79 "10" 3 92 196 163 238 188 178 217 259 305 290 +1 70 87 "10" 0 5 94 27 187 55 111 210 259 311 279 +1 64 86 "10" 1 147 64 18 116 43 79 211 258 311 275 +1 61 99 "10" 0 152 48 8 61 48 75 212 269 332 284 +1 57 104 "10" 0 21 40 4 72 32 54 221 281 353 290 +1 68 95 "10" 0 153 65 23 98 57 82 199 253 309 265 +1 77 96 "10" 10 189 33 16 48 48 25 89 146 202 135 +1 76 97 "10" 0 77 80 26 65 79 141 214 267 338 288 +1 45 76 "2" 3 21 14 3 48 6 0 220 276 332 268 +1 75 94 "8" 7 489 108 24 118 139 168 156 211 273 201 +1 81 94 "10" 1 89 98 112 92 131 71 196 248 301 252 +1 64 102 "10" 0 136 57 31 88 77 47 203 264 322 265 +1 69 102 "10" 2 314 41 17 64 58 37 146 208 268 200 +1 80 108 "10" 0 179 83 53 83 108 94 202 265 329 268 +1 80 105 "10" 0 191 85 55 86 111 94 196 258 320 262 +1 63 100 "10" 1 31 70 20 128 83 60 216 268 324 281 +1 59 100 "10" 0 204 32 5 50 26 39 213 272 338 287 +1 58 103 "2" 0 120 33 6 55 28 40 209 271 339 284 +1 77 89 "10" 1 95 115 79 155 116 106 196 243 295 254 +1 76 88 "10" 1 37 122 83 167 119 113 200 247 298 259 +1 54 105 "10" 1 206 96 58 147 35 133 181 242 317 252 +1 55 110 "10" 5 994 117 82 158 78 138 133 203 271 206 +1 59 98 "10" 0 36 115 97 131 59 179 194 252 323 273 +1 56 108 "10" 4 815 114 84 147 79 136 144 212 280 218 +1 56 107 "10" 2 247 82 15 163 59 84 175 238 308 253 +1 73 153 "8" 25 828 20 27 15 39 4 102 193 280 169 +1 82 102 "10" 0 177 65 103 27 117 29 187 247 306 243 +1 79 123 "10" 1 42 41 97 2 86 4 184 258 329 239 +1 82 115 "10" 4 165 61 113 20 117 20 173 241 306 230 +1 82 119 "10" 0 304 101 85 97 134 101 181 251 316 250 +1 80 139 "10" 22 997 79 68 78 107 73 115 194 273 185 +1 82 118 "10" 14 561 70 116 33 131 28 152 220 286 212 +1 45 105 "4" 4 986 46 20 80 12 75 138 211 281 203 +1 60 89 "6" 0 2 126 116 136 69 191 205 258 320 283 +1 47 85 "10" 2 275 76 46 95 24 140 187 242 302 251 +1 52 94 "10" 0 195 88 65 111 19 168 183 245 308 266 +1 57 89 "6" 0 4 106 88 109 28 208 185 247 308 286 +1 54 98 "10" 3 43 84 48 119 68 87 173 234 297 243 +1 55 95 "6" 2 15 83 47 119 67 92 180 238 300 252 +1 54 95 "10" 4 16 79 32 135 58 77 168 226 288 233 +1 54 100 "10" 3 91 81 51 107 70 96 173 235 300 248 +1 53 96 "10" 1 242 81 53 106 66 88 187 246 309 256 +1 57 68 "10" 1 30 75 19 120 32 94 217 259 310 283 +1 58 70 "10" 1 26 79 23 126 35 99 216 259 310 283 +1 59 72 "10" 1 69 79 25 127 36 99 216 259 311 283 +1 58 70 "10" 1 26 79 23 126 35 99 216 259 310 283 +1 58 67 "10" 1 105 77 26 119 34 100 215 256 307 280 +1 61 84 "10" 2 1274 50 15 86 37 63 208 255 307 270 +1 65 83 "10" 1 135 72 18 147 40 85 206 253 305 271 +1 62 81 "10" 1 47 62 16 123 35 73 211 257 308 275 +1 61 81 "10" 1 13 56 15 106 34 67 213 259 310 276 +1 64 80 "10" 1 882 81 10 195 30 96 213 259 312 278 +1 65 84 "10" 1 151 71 18 141 42 85 207 254 306 272 +1 58 73 "10" 1 17 67 23 110 32 81 215 260 313 281 +1 57 68 "10" 1 30 75 19 120 32 94 217 259 310 283 +1 59 70 "10" 2 632 75 39 111 37 96 210 253 305 273 +1 56 73 "10" 0 50 54 12 96 24 63 215 262 314 281 +1 58 74 "8" 0 2 65 22 109 31 78 215 260 314 281 +1 76 121 "10" 0 187 64 64 62 75 60 191 258 327 249 +1 80 107 "10" 0 144 84 74 76 108 96 202 263 323 274 +1 79 97 "10" 0 107 78 86 69 99 60 208 264 321 286 +1 81 102 "10" 0 121 65 82 62 89 39 206 267 327 284 +1 80 98 "10" 0 102 75 86 71 104 52 207 262 318 292 +1 80 97 "10" 0 100 74 87 70 104 51 207 262 319 292 +1 79 98 "10" 0 108 76 84 67 102 61 208 264 320 286 +1 81 102 "10" 0 120 65 82 62 89 40 206 267 326 284 +1 81 111 "10" 0 142 50 59 55 65 23 198 266 331 275 +1 79 112 "10" 0 192 53 62 56 67 30 202 267 332 268 +1 80 109 "10" 0 158 50 61 59 60 19 195 264 327 273 +1 71 108 "10" 1 147 85 39 69 95 131 198 256 326 269 +1 71 106 "10" 1 73 85 41 68 96 128 201 259 328 275 +1 68 115 "10" 2 993 74 16 66 64 144 184 250 335 238 +1 67 109 "10" 1 1234 29 4 41 17 50 165 237 305 230 +1 66 106 "2" 0 19 30 11 36 25 48 184 253 317 249 +1 64 98 "2" 2 1043 28 8 39 16 47 156 222 280 211 +1 62 103 "10" 0 39 53 23 87 64 49 218 280 339 279 +0 81 96 "10" 0 101 71 92 70 97 41 209 264 320 300 +0 80 105 "10" 7 2133 53 44 65 63 44 115 173 230 164 +0 54 100 "10" 0 215 40 43 48 45 21 129 227 313 212 +0 65 123 "9" 10 615 40 82 39 35 4 138 242 320 226 +0 69 99 "10" 0 80 33 50 43 31 19 165 243 317 248 +0 40 170 "5" 68 304 8 11 14 9 4 -10 153 333 89 +0 69 116 "9" 0 578 37 68 41 23 12 115 216 304 183 +0 58 98 "10" 0 230 49 33 72 18 77 172 249 324 271 +0 69 117 "10" 0 888 32 69 38 23 3 127 225 310 211 +0 73 109 "9" 1 663 42 82 45 27 11 107 207 283 179 +0 59 98 "9" 1 18 57 3 54 38 129 218 273 353 256 +0 78 124 "10" 4 382 59 96 58 71 2 166 252 334 274 +0 82 95 "10" 1 100 61 88 58 89 16 203 265 326 301 +0 52 112 "2" 34 1221 3 6 2 2 1 99 172 243 129 +0 66 121 "9" 0 437 47 96 50 42 1 164 257 344 243 +0 54 158 "12" 166 5016 9 24 2 5 0 -42 73 169 51 +0 65 105 "2" 2 656 21 22 1 53 11 197 264 336 224 +0 44 147 "12" 142 4458 13 36 8 3 3 -73 57 171 25 +0 67 115 "9" 0 247 34 64 28 52 1 191 269 356 244 +0 76 115 "10" 7 1109 41 60 46 33 27 75 179 271 159 +0 62 54 "13" 99 18 42 44 37 48 39 -3 53 116 62 +0 79 101 "10" 1 100 56 94 53 70 8 194 265 333 291 +0 75 108 "10" 0 302 62 94 68 68 20 176 254 321 267 +0 51 130 "5" 119 1218 4 2 3 6 3 -31 89 236 57 +0 75 86 "10" 2 212 64 76 12 113 58 212 258 319 280 +0 55 90 "8" 0 48 35 14 44 18 46 167 251 324 248 +0 54 109 "10" 0 754 82 32 146 27 105 190 253 331 267 +0 75 111 "10" 2 295 46 85 40 68 2 187 263 342 265 +0 57 126 "8" 17 1783 33 60 31 22 7 101 196 275 139 +0 73 129 "10" 2 300 58 99 59 54 0 158 254 340 263 +0 51 159 "12" 146 3989 8 23 4 2 0 -51 83 190 47 +0 65 110 "2" 3 574 21 27 8 43 12 187 258 332 207 +0 75 113 "10" 3 219 49 86 44 70 2 186 262 341 270 +0 68 90 "10" 1 105 69 78 24 90 78 209 257 321 230 +0 35 129 "12" 166 3538 4 5 1 0 4 -69 33 140 12 +0 47 161 "10" 108 2006 15 40 9 9 1 -36 118 229 78 +0 55 90 "8" 0 63 35 13 43 17 47 168 250 323 249 +0 66 108 "10" 2 634 87 18 82 58 176 184 243 316 233 +0 72 78 "10" 1 66 76 103 10 132 66 221 263 321 289 +0 62 121 "9" 0 610 45 93 52 38 3 145 245 324 215 +0 81 105 "10" 1 199 61 97 67 72 15 184 259 322 289 +0 51 115 "5" 50 40 5 3 3 6 6 15 126 251 77 +0 45 145 "5" 56 166 6 5 8 5 5 11 149 312 84 +0 81 103 "10" 1 201 62 101 68 75 14 189 261 324 294 +0 65 121 "10" 1 444 37 69 41 25 11 120 225 313 191 +0 60 70 "13" 107 1 13 13 10 16 13 -16 56 137 58 +0 69 129 "9" 3 489 48 89 51 45 1 152 255 340 249 +0 52 125 "5" 39 66 20 20 21 23 15 24 138 288 112 +0 79 122 "10" 5 396 59 95 57 76 3 171 252 333 279 +0 55 107 "2" 39 1194 1 3 0 0 0 88 162 235 126 +0 58 107 "9" 3 349 43 46 53 45 24 115 217 305 205 +0 81 91 "10" 0 49 68 81 55 95 48 213 266 319 304 +0 55 91 "10" 3 244 72 52 120 48 46 174 242 302 253 +0 72 81 "10" 0 1 83 124 16 158 51 223 268 321 299 +0 74 99 "10" 12 894 29 11 47 39 28 154 216 271 201 +0 71 116 "9" 5 404 36 66 26 57 1 176 257 342 246 +0 64 128 "9" 0 301 35 70 29 30 5 151 257 341 241 +0 75 126 "10" 2 328 59 99 57 57 1 161 254 343 269 +0 36 116 "12" 200 4156 4 3 2 0 7 -89 5 108 5 +0 50 100 "4" 2 713 63 24 70 24 114 146 218 296 213 +0 55 151 "12" 143 4492 6 19 0 1 0 -28 79 166 50 +0 49 142 "8" 3 166 17 37 16 16 2 77 220 353 161 +0 82 105 "10" 5 200 57 98 31 106 12 193 257 324 290 +0 83 88 "10" 0 31 62 85 48 96 24 218 270 328 304 +0 66 117 "10" 4 516 49 54 58 45 39 91 197 298 179 +0 54 92 "8" 0 78 35 13 43 17 49 166 250 323 250 +0 63 118 "9" 0 573 39 84 45 24 4 140 236 311 206 +0 52 134 "8" 0 148 19 36 16 23 3 100 229 348 172 +0 75 93 "10" 0 116 80 28 76 86 128 212 264 334 283 +0 62 104 "2" 0 383 12 23 3 24 2 186 258 335 204 +0 76 89 "10" 1 75 59 66 13 113 48 218 266 328 291 +0 67 107 "10" 1 100 41 75 10 86 5 202 272 351 259 +0 52 130 "5" 133 1158 10 3 5 10 14 -34 80 226 59 +0 54 128 "10" 5 1192 21 48 13 19 2 92 204 297 153 +0 62 111 "10" 0 161 49 95 41 40 14 171 262 335 252 +0 71 105 "10" 0 102 42 73 13 85 8 201 270 342 273 +0 74 105 "10" 1 138 45 83 39 51 3 193 267 339 277 +0 74 127 "10" 1 457 56 96 59 60 1 166 257 342 270 +0 64 108 "9" 1 1050 42 89 44 38 1 152 238 314 203 +0 62 86 "10" 1 64 77 78 33 84 110 212 260 319 233 +0 75 108 "10" 0 191 59 92 64 68 15 177 256 323 273 +0 42 165 "5" 63 250 9 13 14 9 3 -5 153 332 91 +0 40 141 "9" 39 982 16 34 14 12 3 17 163 304 106 +0 62 122 "9" 0 725 36 86 43 21 3 128 230 308 202 +0 79 91 "10" 1 103 57 81 27 89 27 215 269 330 307 +0 40 162 "5" 50 370 11 17 15 10 4 -1 163 335 107 +0 70 100 "10" 0 49 47 77 10 101 14 208 271 340 273 +0 48 131 "9" 1 88 29 42 29 39 8 96 218 339 185 +0 73 99 "10" 6 602 44 51 50 33 38 90 183 277 173 +0 54 109 "9" 0 153 37 52 45 40 14 147 246 335 217 +0 44 151 "5" 83 495 4 4 6 4 4 -15 127 294 72 +0 79 97 "10" 0 92 84 70 79 110 88 206 262 319 287 +0 73 105 "10" 0 154 49 85 45 55 8 189 267 337 273 +0 81 95 "10" 1 82 78 91 79 101 50 203 258 313 298 +0 74 77 "10" 0 5 84 126 10 166 53 226 269 321 299 +0 77 107 "10" 3 200 55 95 54 67 5 181 259 331 280 +0 52 147 "8" 45 4112 15 35 10 8 0 23 151 249 98 +0 39 157 "5" 75 1176 8 13 9 6 4 -13 136 299 85 +0 63 121 "9" 3 780 45 90 48 35 5 140 238 313 214 +0 61 119 "9" 0 877 30 66 35 17 1 139 236 308 193 +0 64 119 "2" 1 660 21 37 19 22 1 157 237 307 195 +0 57 173 "12" 144 3960 13 36 7 5 1 -48 95 207 56 +0 73 112 "9" 2 287 43 79 35 63 2 185 263 345 259 +0 77 126 "10" 13 645 33 38 43 43 15 151 228 299 212 +0 53 86 "3" 103 225 41 30 27 42 60 -28 56 152 60 +0 40 169 "5" 64 326 9 12 15 9 4 -7 156 335 93 +0 63 127 "9" 6 778 37 76 39 38 0 147 240 331 206 +0 57 94 "10" 1 295 47 16 21 45 101 211 262 325 242 +0 63 113 "2" 2 335 22 42 8 43 4 191 266 345 212 +0 74 152 "12" 63 3880 27 22 30 42 18 42 125 210 112 +0 63 98 "10" 0 1067 74 33 115 100 59 191 243 297 248 +0 72 162 "10" 34 1731 18 22 15 35 3 78 172 266 141 +0 64 114 "10" 3 610 51 52 59 49 44 93 196 299 177 +0 50 105 "5" 16 5 28 29 32 28 20 57 165 292 146 +0 70 83 "10" 1 287 35 39 31 39 31 170 233 291 227 +0 68 106 "2" 1 603 20 33 12 22 6 156 230 297 197 +0 57 172 "12" 135 3767 16 41 10 6 2 -40 100 210 61 +0 52 96 "10" 1 232 39 42 49 50 19 125 222 314 207 +0 39 155 "5" 63 1559 11 30 8 6 2 -11 146 279 94 +0 60 143 "10" 123 3419 26 57 23 21 5 -5 99 186 79 +0 46 112 "9" 0 57 38 51 44 54 17 114 220 333 195 +0 82 95 "10" 1 77 74 95 71 99 40 205 261 316 304 +0 35 122 "12" 181 3916 3 3 1 0 5 -78 19 122 8 +0 51 162 "12" 135 3893 5 15 1 1 0 -41 94 202 56 +0 59 96 "10" 1 106 57 49 42 48 79 203 259 319 265 +0 44 116 "5" 4 46 32 39 37 41 15 81 197 326 168 +0 74 126 "10" 4 292 52 88 58 64 1 168 256 342 274 +0 64 75 "10" 0 9 63 71 29 62 89 223 266 316 261 +0 76 88 "10" 1 173 65 78 14 119 56 219 265 326 294 +0 60 85 "13" 125 225 10 9 8 13 12 -37 49 144 42 +0 81 99 "10" 0 64 60 103 22 116 21 208 266 329 303 +0 81 102 "10" 0 100 63 98 56 92 9 197 263 332 297 +0 68 77 "2" 0 1 31 29 2 86 14 218 269 321 272 +0 47 142 "5" 35 161 20 28 24 18 5 24 169 321 128 +0 48 116 "9" 0 118 49 47 56 62 40 108 216 331 192 +0 73 96 "10" 0 52 59 45 38 77 76 215 267 326 285 +0 82 98 "10" 0 100 70 98 72 92 34 204 263 320 302 +0 57 152 "12" 185 4032 19 44 12 13 1 -52 61 153 46 +0 63 109 "9" 0 206 28 57 18 45 4 206 277 361 235 +0 46 118 "11" 9 46 27 40 32 30 10 66 183 315 158 +0 66 109 "10" 0 358 37 63 47 30 12 124 220 301 185 +0 59 120 "2" 0 450 23 51 23 18 0 155 249 326 193 +0 55 141 "10" 37 1188 20 57 9 11 2 21 166 278 130 +0 64 112 "9" 3 1082 42 91 44 39 1 153 239 320 209 +0 83 101 "10" 0 198 64 93 66 85 27 199 262 321 299 +0 67 78 "10" 0 5 80 113 12 140 64 223 265 322 291 +0 79 103 "10" 0 172 80 48 80 107 96 199 259 321 267 +0 63 84 "10" 0 182 75 80 43 70 97 209 258 314 269 +0 73 109 "10" 0 180 56 86 60 65 12 173 255 325 265 +0 70 96 "10" 1 753 23 41 25 22 8 151 223 291 205 +0 53 102 "8" 1 29 36 12 49 22 52 159 247 324 247 +0 44 144 "8" 8 110 18 38 17 17 2 62 208 346 157 +0 80 106 "10" 2 92 64 99 57 94 9 194 260 332 295 +0 51 105 "10" 4 928 41 5 102 41 23 166 235 298 232 +0 46 121 "5" 11 29 29 40 34 31 13 61 178 316 150 +0 63 112 "8" 0 80 30 61 28 29 8 164 260 338 251 +0 77 124 "8" 3 363 18 44 0 35 0 170 247 321 223 +0 47 161 "8" 61 2500 10 27 7 4 0 -5 141 251 86 +0 49 131 "8" 12 381 19 48 13 14 1 61 199 319 155 +0 57 63 "13" 89 266 21 18 17 26 25 2 64 135 62 +0 60 93 "10" 1 207 55 34 21 60 98 211 261 324 231 +0 75 124 "10" 1 193 59 99 56 61 2 165 256 340 272 +0 65 93 "9" 0 74 61 6 61 52 124 217 271 348 279 +0 53 137 "8" 5 409 23 45 12 30 2 93 225 329 174 +0 75 92 "10" 0 6 72 111 23 125 47 219 268 328 301 +0 45 159 "12" 174 3949 8 25 4 0 1 -94 45 154 15 +0 59 97 "5" 126 161 5 5 4 7 6 -39 62 172 48 +0 42 164 "5" 66 301 7 8 11 6 3 -6 149 326 85 +0 44 119 "9" 1 43 33 45 36 46 11 91 206 329 183 +0 43 144 "8" 12 88 20 40 18 20 4 55 200 338 152 +0 71 99 "10" 2 609 27 47 32 25 13 153 229 300 221 +0 64 109 "9" 1 918 42 83 51 38 3 130 220 294 184 +0 61 102 "9" 2 560 74 14 69 40 149 187 244 309 235 +0 43 158 "5" 47 385 14 25 18 12 4 2 163 327 116 +0 46 85 "10" 1 111 64 38 92 20 106 194 251 311 256 +0 53 97 "8" 0 190 37 12 42 18 52 162 249 324 252 +0 62 115 "9" 0 856 41 90 44 28 4 128 230 303 199 +0 57 102 "10" 0 25 60 6 123 52 66 222 279 349 286 +0 64 91 "10" 3 611 46 43 47 38 45 94 182 275 166 +0 48 130 "5" 20 96 25 38 28 24 9 46 173 311 149 +0 43 119 "11" 3 23 30 41 34 39 12 79 200 327 174 +0 68 110 "9" 2 1212 41 88 40 23 6 99 195 276 185 +0 62 116 "10" 2 830 35 13 47 8 65 148 237 325 223 +0 80 117 "10" 4 215 59 91 52 82 6 180 255 331 287 +0 55 100 "10" 0 103 32 14 30 15 63 204 263 329 258 +0 68 82 "2" 0 114 26 26 1 70 11 211 265 321 259 +0 82 89 "10" 0 29 63 74 49 95 40 220 270 325 304 +0 56 95 "9" 0 32 47 2 43 27 112 220 275 350 263 +0 54 118 "10" 4 237 44 51 51 55 30 105 210 317 200 +0 74 86 "10" 2 87 46 65 47 37 31 117 201 286 193 +0 76 97 "10" 0 1 70 111 27 121 40 215 268 328 303 +0 81 91 "10" 0 34 63 69 45 93 48 220 270 325 300 +0 62 124 "9" 0 649 38 87 45 22 4 127 230 306 202 +0 81 105 "10" 0 200 59 80 65 76 20 197 265 327 287 +0 58 91 "10" 0 57 40 23 45 20 68 209 266 320 277 +0 77 93 "10" 0 224 55 65 21 94 29 211 266 328 300 +0 53 103 "10" 0 70 36 14 45 22 56 156 247 324 246 +0 47 123 "9" 0 71 33 44 38 42 15 112 228 341 198 +0 43 156 "5" 47 545 16 32 18 13 4 6 163 314 115 +0 74 94 "10" 0 101 95 85 76 109 109 204 257 313 290 +0 72 104 "10" 2 1268 54 38 81 70 35 166 222 282 213 +0 76 98 "10" 0 82 69 106 28 119 36 212 267 326 301 +0 43 147 "12" 144 3198 11 31 7 2 2 -74 55 169 23 +0 79 97 "10" 0 101 74 86 67 102 52 207 263 319 291 +0 60 116 "10" 60 972 70 121 75 61 36 94 174 246 146 +0 51 98 "9" 1 71 37 44 42 45 19 136 232 322 216 +0 57 172 "12" 150 4144 12 32 6 5 1 -47 94 203 59 +0 44 137 "3" 124 1447 25 8 18 18 50 -33 79 225 59 +0 74 94 "10" 1 248 77 21 84 101 114 205 260 329 273 +0 79 101 "10" 0 102 82 57 79 109 95 204 262 322 277 +0 59 122 "10" 80 2414 60 107 63 52 29 69 154 231 128 +0 57 110 "2" 0 132 31 4 40 14 64 202 267 342 259 +0 75 100 "10" 8 913 44 86 44 31 14 93 188 264 172 +0 40 121 "3" 64 189 26 8 21 19 51 25 113 233 106 +0 80 106 "10" 1 204 59 84 43 86 13 196 263 332 300 +0 40 136 "5" 18 404 14 33 11 9 3 43 189 328 127 +0 49 107 "5" 15 27 29 34 34 29 19 58 167 297 144 +0 63 110 "2" 0 402 27 54 19 41 3 203 275 358 229 +0 50 97 "4" 1 2102 88 41 104 38 161 160 229 303 232 +0 81 96 "10" 0 101 61 90 58 88 12 199 264 328 299 +0 60 98 "10" 0 319 44 20 43 29 75 198 255 314 250 +0 78 103 "10" 0 155 53 92 52 60 10 189 266 333 286 +0 77 109 "10" 6 1627 61 62 96 77 20 110 170 232 158 +0 75 84 "6" 0 1 78 103 10 156 56 219 266 322 294 +0 56 71 "13" 87 94 29 25 22 33 36 -8 63 144 62 +0 80 107 "10" 1 223 58 82 40 86 14 196 262 331 299 +0 80 95 "10" 1 100 79 91 75 103 58 203 258 312 297 +0 40 135 "5" 14 337 13 31 9 7 3 49 195 335 133 +0 71 95 "10" 1 98 80 74 60 97 92 201 255 312 287 +0 78 109 "10" 3 178 58 97 56 72 4 178 257 331 280 +0 52 132 "5" 49 169 25 31 26 25 16 22 141 294 124 +0 72 110 "10" 0 200 53 86 56 65 9 174 258 329 263 +0 58 105 "9" 2 335 42 46 53 45 23 118 219 305 206 +0 42 147 "5" 44 755 16 35 16 13 4 12 161 304 109 +0 43 136 "9" 5 67 25 41 26 29 5 72 203 337 169 +0 61 103 "2" 0 393 15 25 5 25 1 194 263 336 203 +0 79 86 "10" 1 39 55 74 21 90 44 223 270 329 294 +0 52 100 "5" 16 10 26 27 31 27 21 55 162 284 147 +0 47 138 "5" 56 169 5 5 7 5 4 10 142 299 80 +0 82 103 "10" 0 186 63 97 67 77 20 191 261 323 297 +0 58 113 "10" 0 339 42 84 38 31 16 154 248 324 229 +0 63 68 "13" 117 171 13 13 10 15 11 -19 51 129 58 +0 72 127 "10" 0 241 55 98 58 53 1 166 260 346 265 +0 39 112 "13" 52 266 28 5 18 18 65 38 119 230 112 +0 59 101 "10" 0 194 69 7 138 58 83 214 271 339 279 +0 41 113 "3" 64 413 25 9 19 20 44 27 109 221 107 +0 58 104 "10" 0 13 39 4 70 31 54 220 280 352 290 +0 72 112 "10" 0 617 41 81 45 27 10 111 213 288 182 +0 71 95 "10" 3 2926 29 5 39 38 45 87 144 206 133 +0 74 117 "9" 4 313 37 68 22 65 2 178 258 339 260 +0 79 93 "10" 0 45 70 78 52 94 61 210 263 316 300 +0 68 118 "8" 0 116 1 0 0 2 0 148 232 326 193 +0 43 161 "5" 62 185 8 10 13 6 4 -1 152 329 89 +0 50 117 "10" 2 211 45 44 52 58 33 108 213 325 194 +0 50 95 "5" 10 20 28 30 33 28 19 65 168 290 146 +0 53 169 "12" 180 3747 4 13 0 0 0 -64 76 184 45 +0 53 105 "8" 0 116 37 12 43 22 57 155 246 324 249 +0 72 161 "12" 144 4002 21 34 21 23 3 -49 57 149 56 +0 46 82 "10" 1 234 53 50 94 18 48 190 251 308 259 +0 47 109 "9" 0 59 37 50 42 47 18 123 226 333 198 +0 38 139 "5" 28 569 13 30 10 9 3 29 177 322 117 +0 57 110 "9" 0 150 30 3 40 15 62 203 267 343 258 +0 72 115 "9" 2 191 35 63 19 64 2 180 260 342 258 +0 80 115 "10" 0 175 79 69 73 103 80 194 262 326 263 +0 68 112 "10" 0 612 38 82 35 24 7 120 220 307 212 +0 62 129 "9" 1 743 38 90 39 22 5 100 217 297 197 +0 77 92 "10" 0 1 66 86 18 118 54 220 270 332 303 +0 75 88 "10" 0 4 74 113 20 133 49 221 268 326 301 +0 47 99 "4" 2 323 56 30 75 19 95 158 229 302 221 +0 48 160 "8" 93 3726 8 22 4 3 0 -22 117 225 69 +0 46 137 "9" 3 63 25 42 26 30 5 80 211 344 172 +0 81 97 "10" 0 100 61 93 58 84 11 196 264 328 297 +0 60 126 "8" 0 282 31 60 28 23 7 148 249 335 228 +0 60 89 "2" 0 41 42 51 3 110 11 218 272 331 270 +0 77 117 "10" 1 145 62 101 60 74 3 175 258 337 281 +0 66 124 "9" 3 309 38 70 41 47 0 171 259 350 232 +0 66 82 "2" 5 617 1 3 1 1 0 116 182 259 162 +0 80 124 "10" 4 301 56 92 55 79 3 170 252 332 278 +0 80 101 "10" 0 129 77 85 68 95 66 206 265 322 280 +0 49 93 "9" 0 62 36 49 45 47 20 138 232 323 212 +0 64 122 "9" 3 597 44 91 45 34 4 146 248 326 229 +0 62 116 "9" 0 484 40 80 40 34 10 148 246 322 227 +0 75 90 "10" 1 194 54 52 15 91 54 214 262 327 281 +0 80 105 "10" 0 142 83 76 75 106 91 203 263 322 276 +0 51 104 "8" 0 5 38 15 61 24 48 159 245 322 249 +0 61 118 "9" 1 913 42 87 50 32 5 127 227 299 201 +0 68 94 "10" 0 19 34 48 44 35 24 171 244 316 251 +0 65 91 "10" 0 13 55 60 15 106 35 215 267 330 291 +0 40 166 "5" 70 373 6 8 10 6 2 -10 147 325 83 +0 60 99 "10" 1 491 56 14 52 30 109 190 247 309 239 +0 50 162 "12" 140 3633 4 13 0 0 0 -43 92 199 53 +0 51 164 "12" 169 3705 3 8 0 0 0 -59 75 181 40 +0 76 97 "10" 0 60 71 103 28 120 41 212 266 326 297 +0 47 129 "5" 120 827 21 7 13 17 39 -19 87 233 70 +0 67 123 "9" 7 394 39 78 40 37 2 148 251 327 240 +0 52 149 "8" 52 3748 14 34 10 8 0 17 147 245 94 +0 67 99 "2" 7 623 39 53 3 104 9 196 257 325 240 +0 79 102 "10" 1 195 53 92 51 63 8 192 266 333 289 +0 77 85 "10" 1 64 56 68 20 92 44 225 271 332 296 +0 61 120 "10" 0 612 42 91 48 33 4 136 239 315 213 +0 60 134 "9" 6 752 28 55 27 30 0 141 237 323 197 +0 74 101 "10" 1 68 49 83 17 96 16 205 267 332 281 +0 50 134 "5" 48 178 23 26 27 24 17 21 144 300 117 +0 58 89 "13" 125 200 13 11 11 16 15 -38 51 151 41 +0 48 134 "5" 32 98 23 29 29 23 10 29 162 315 131 +0 47 123 "9" 0 66 32 43 38 41 14 113 229 342 199 +0 77 119 "10" 1 143 64 102 62 76 3 176 257 337 282 +0 46 126 "10" 27 387 22 55 16 15 4 38 168 288 131 +0 60 76 "10" 2 268 50 21 82 31 61 213 256 306 274 +0 43 143 "8" 14 99 22 42 19 21 4 54 197 334 153 +0 77 120 "10" 1 112 64 102 62 75 3 173 257 337 281 +0 63 120 "10" 0 406 37 72 41 27 10 132 236 317 205 +0 76 90 "10" 0 196 53 64 17 100 33 217 266 329 288 +0 80 119 "10" 4 305 59 92 53 81 5 176 253 331 284 +0 74 91 "10" 1 200 52 47 16 83 59 215 263 327 275 +0 70 111 "9" 0 610 41 84 45 27 8 117 218 287 186 +0 80 110 "10" 1 114 58 84 43 86 12 192 261 331 296 +0 79 103 "10" 0 171 81 53 80 108 96 202 262 323 273 +0 62 109 "9" 0 160 50 96 42 42 13 174 263 336 254 +0 80 103 "10" 1 100 60 88 44 89 14 201 265 332 302 +0 77 101 "12" 7 2821 50 41 79 69 19 110 165 220 152 +0 76 104 "10" 2 127 46 85 41 55 3 192 265 336 280 +0 48 130 "5" 28 91 25 35 32 26 12 36 162 309 135 +0 49 113 "5" 82 262 4 3 2 5 5 -13 100 235 62 +0 69 122 "11" 0 283 36 78 27 35 7 161 265 342 267 +0 82 86 "10" 0 27 62 84 43 97 28 222 271 327 302 +0 76 90 "10" 2 791 46 83 45 37 20 113 199 274 187 +0 58 107 "2" 1 174 30 14 42 14 47 163 233 295 238 +0 39 139 "12" 155 2571 13 8 10 7 26 -53 76 217 52 +0 68 103 "10" 0 108 46 76 8 101 11 207 273 347 267 +0 68 104 "10" 0 70 44 76 9 96 9 205 272 346 266 +0 64 107 "2" 0 449 13 19 4 21 8 178 253 330 208 +0 39 144 "12" 131 1754 13 9 11 7 23 -38 99 242 68 +0 78 100 "10" 0 25 67 108 27 120 31 212 268 330 307 +0 64 136 "10" 68 2641 17 37 14 12 1 46 140 223 103 +0 48 134 "5" 53 233 5 4 6 5 4 13 140 292 80 +0 74 134 "10" 47 1477 35 52 41 32 13 85 173 249 154 +0 70 125 "10" 0 317 52 98 56 48 0 164 259 345 258 +0 62 105 "10" 1 306 54 23 91 69 44 194 258 318 257 +0 67 127 "9" 6 400 43 83 46 42 1 151 252 334 243 +0 64 112 "9" 0 913 42 85 50 37 4 130 224 299 189 +0 63 93 "9" 0 95 58 5 61 49 119 215 270 350 278 +0 56 99 "10" 1 114 39 7 41 19 77 208 265 331 253 +0 55 130 "8" 2 291 14 22 15 15 3 129 245 342 202 +0 37 140 "12" 123 2143 18 2 11 10 50 -28 90 232 65 +0 73 105 "12" 7 2731 31 9 46 47 33 65 131 195 112 +0 74 111 "10" 8 419 46 85 42 52 1 173 253 330 265 +0 56 116 "2" 57 1861 1 3 0 0 0 63 144 217 106 +0 80 86 "10" 1 85 56 77 22 90 42 222 269 328 294 +0 82 96 "10" 0 91 73 97 76 96 39 206 261 318 302 +0 82 90 "10" 0 49 68 84 56 95 41 215 268 322 306 +0 45 118 "9" 1 58 36 51 38 54 15 103 216 333 192 +0 82 104 "10" 0 200 60 81 65 79 23 199 265 327 291 +0 32 141 "5" 54 1047 4 12 2 2 1 14 158 302 104 +0 80 97 "10" 0 99 81 84 79 106 67 204 259 315 292 +0 62 122 "9" 8 700 42 86 43 32 7 133 235 313 213 +0 60 96 "9" 3 39 36 34 33 27 43 86 182 293 164 +0 69 130 "9" 10 699 41 79 36 36 2 139 243 325 240 +0 68 106 "10" 0 177 49 85 44 55 11 180 260 331 256 +0 69 92 "10" 0 75 34 48 41 35 24 172 243 313 246 +0 59 118 "9" 1 429 21 33 11 33 7 186 259 330 207 +0 63 132 "9" 7 839 36 69 38 41 0 149 244 338 213 +0 63 106 "9" 0 459 42 88 43 38 2 157 242 317 206 +0 79 91 "10" 2 49 94 103 92 116 71 204 254 306 262 +0 58 110 "10" 3 318 43 47 52 48 25 111 216 310 205 +0 76 88 "10" 2 301 62 73 13 116 54 217 263 325 290 +0 53 100 "9" 10 113 31 31 34 31 27 68 172 292 147 +0 70 105 "10" 4 506 75 40 59 85 112 182 240 303 254 +0 79 93 "10" 0 4 63 80 18 116 49 217 269 331 302 +0 79 119 "10" 4 203 54 90 49 81 4 178 254 335 280 +0 58 84 "14" 138 3114 15 13 12 18 19 -53 28 120 24 +0 80 102 "10" 0 109 58 99 60 69 10 192 265 330 293 +0 52 106 "5" 106 895 17 10 10 19 24 -31 74 195 60 +0 68 113 "10" 3 485 46 55 56 40 33 94 197 292 175 +0 80 108 "10" 0 135 55 65 58 71 27 204 270 333 280 +0 54 108 "10" 0 132 52 51 62 58 45 99 210 319 184 +0 81 98 "10" 0 93 61 93 58 87 9 196 264 329 296 +0 50 161 "12" 180 4022 2 5 0 0 0 -68 62 166 30 +0 75 127 "10" 1 196 57 96 60 63 1 166 256 340 272 +0 68 99 "10" 2 2815 44 15 82 62 26 136 197 254 189 +0 56 113 "9" 5 176 44 41 47 49 42 80 190 311 163 +0 48 125 "5" 30 23 26 28 27 28 17 40 154 300 136 +0 75 109 "10" 0 774 67 91 76 61 39 179 249 312 247 +0 44 102 "4" 3 571 37 13 54 13 67 150 223 296 207 +0 81 124 "10" 0 231 93 75 87 122 95 184 256 326 254 +0 67 74 "13" 138 233 15 16 13 17 13 -31 42 123 57 +0 72 103 "10" 8 514 79 56 62 95 103 174 231 294 254 +0 81 96 "10" 1 91 74 92 79 98 42 205 260 314 298 +0 82 101 "10" 0 100 62 86 64 84 28 202 265 325 296 +0 71 77 "10" 5 133 44 57 45 34 32 118 197 279 192 +0 75 95 "10" 0 58 79 25 67 78 137 214 267 338 288 +0 75 107 "8" 1 611 23 37 14 25 14 156 232 302 212 +0 50 124 "5" 56 240 4 4 4 5 5 10 129 265 73 +0 61 107 "11" 0 95 37 68 36 33 13 165 256 331 240 +0 57 106 "5" 111 84 4 6 4 4 4 -22 84 206 59 +0 58 102 "9" 0 108 54 17 37 57 106 208 265 328 265 +0 60 97 "10" 11 997 46 78 41 45 15 149 222 284 190 +0 72 78 "10" 1 154 76 101 11 130 67 218 262 319 287 +0 48 127 "5" 24 59 27 40 35 28 13 44 164 308 140 +0 80 101 "10" 0 97 62 96 58 85 8 194 262 331 294 +0 70 93 "10" 4 920 23 36 21 24 10 151 220 284 198 +0 63 127 "8" 2 590 32 60 29 30 6 153 256 343 234 +0 78 98 "10" 0 321 80 42 81 107 104 199 256 317 272 +0 44 154 "12" 169 4509 6 20 2 0 0 -86 46 152 14 +0 63 83 "10" 1 307 71 71 47 55 95 208 257 311 278 +0 50 109 "9" 1 68 33 45 37 44 14 133 235 332 218 +0 70 130 "9" 2 330 50 92 51 45 1 154 256 342 253 +0 68 91 "10" 0 15 54 64 16 104 31 215 267 330 291 +0 60 124 "9" 2 651 29 59 31 23 0 143 240 323 200 +0 62 91 "9" 1 153 39 34 39 31 42 105 197 297 179 +0 44 106 "4" 3 796 39 13 62 13 67 146 219 293 202 +0 80 97 "10" 0 100 76 87 75 105 54 206 261 317 294 +0 49 127 "5" 128 1092 21 6 12 16 38 -24 79 223 66 +0 74 99 "10" 1 1463 90 60 120 98 90 153 206 263 205 +0 72 79 "10" 1 100 76 102 12 129 67 214 258 316 283 +0 57 101 "9" 2 810 55 9 49 36 114 198 256 326 240 +0 44 138 "9" 5 68 24 41 25 28 5 72 204 340 168 +0 68 128 "9" 1 303 44 85 46 44 2 155 259 343 253 +0 63 131 "4" 6 2400 45 9 60 18 75 108 198 288 177 +0 54 131 "8" 3 1104 22 49 12 23 2 101 218 313 169 +0 50 121 "5" 60 272 4 3 3 5 5 6 123 256 69 +0 53 128 "2" 75 1831 4 10 1 2 0 52 138 213 98 +0 58 89 "2" 0 51 40 49 3 108 11 217 272 331 268 +0 80 95 "10" 1 74 57 73 18 107 34 208 264 326 294 +0 61 95 "10" 1 71 43 8 56 43 64 210 265 323 280 +0 79 94 "10" 2 64 81 91 70 104 64 201 255 309 294 +0 60 112 "2" 1 752 25 38 4 56 6 183 257 337 209 +0 33 147 "5" 48 567 5 10 3 3 1 7 167 322 109 +0 57 94 "9" 0 63 52 2 54 36 114 216 273 356 274 +0 63 114 "9" 3 796 38 78 39 34 0 151 239 320 203 +0 52 108 "8" 1 95 38 12 54 24 56 154 244 322 246 +0 52 107 "8" 1 91 38 13 55 24 55 155 244 322 246 +0 63 125 "8" 0 248 35 67 31 28 5 152 254 338 238 +0 61 59 "13" 107 381 16 17 13 20 15 -7 52 120 61 +0 75 93 "10" 0 122 80 28 73 84 131 213 264 335 285 +0 69 125 "9" 2 550 38 79 32 38 5 157 260 334 262 +0 76 103 "10" 3 214 52 85 21 96 18 199 262 327 281 +0 71 124 "9" 0 228 52 94 58 52 1 171 264 348 266 +0 71 104 "10" 5 119 83 52 64 97 113 181 239 303 259 +0 62 121 "9" 0 562 36 86 42 21 3 125 227 307 200 +0 60 101 "10" 1 506 67 16 67 41 119 180 238 299 230 +0 75 104 "10" 1 146 46 84 42 53 4 193 267 338 279 +0 72 105 "10" 0 184 44 82 39 49 5 193 269 342 272 +0 61 102 "2" 2 476 17 32 5 26 1 194 265 340 202 +0 40 124 "3" 66 262 29 10 23 22 54 22 112 236 104 +0 80 114 "10" 3 153 60 91 52 84 7 184 258 332 291 +0 50 162 "12" 140 3785 4 13 0 0 0 -43 91 198 52 +0 56 156 "12" 195 4465 15 35 7 9 0 -63 55 151 44 +0 72 100 "9" 0 117 64 11 60 56 131 220 275 354 277 +0 62 107 "9" 0 167 48 91 43 44 12 176 264 337 255 +0 72 161 "10" 59 3082 17 22 23 22 1 48 143 232 106 +0 78 100 "9" 0 122 50 4 56 50 95 212 270 350 273 +0 52 113 "5" 112 750 13 7 8 15 17 -32 76 204 57 +0 66 109 "9" 1 399 32 62 19 56 5 202 272 357 244 +0 37 134 "1" 74 292 31 9 23 19 68 9 113 249 95 +0 72 128 "10" 0 260 56 98 57 51 1 162 259 345 263 +0 82 113 "10" 2 96 57 87 40 92 12 187 257 328 288 +0 76 127 "10" 1 374 61 101 61 63 1 164 255 341 272 +0 64 114 "9" 0 914 40 84 46 29 4 132 228 302 196 +0 55 87 "3" 117 996 24 18 16 25 35 -45 45 144 45 +0 58 123 "8" 0 264 27 52 26 20 10 149 247 329 220 +0 61 109 "10" 1 309 44 49 57 43 22 115 220 306 208 +0 60 111 "9" 5 267 42 40 44 39 46 81 186 304 157 +0 46 133 "5" 18 134 24 39 26 23 6 46 178 313 152 +0 73 106 "10" 1 99 42 74 15 84 9 199 267 339 274 +0 81 97 "6" 1 115 48 80 16 86 20 186 245 304 248 +0 65 99 "8" 0 153 28 11 32 24 45 195 261 320 259 +0 74 95 "10" 1 66 59 48 37 79 71 216 268 327 287 +0 79 103 "10" 4 2194 49 30 57 65 49 154 212 270 202 +0 61 120 "10" 0 612 42 91 47 33 4 135 239 315 213 +0 48 131 "5" 20 263 22 42 23 19 5 45 177 307 140 +0 69 104 "10" 8 672 42 80 38 39 13 110 204 284 201 +0 64 127 "11" 0 281 34 68 29 29 5 148 254 339 236 +0 58 130 "4" 5 1152 74 34 95 33 143 102 194 282 179 +0 82 94 "10" 0 65 63 89 60 90 19 205 266 325 303 +0 74 101 "10" 0 585 41 74 43 27 14 115 206 287 182 +0 63 109 "10" 0 780 70 21 60 68 125 181 239 306 232 +0 60 86 "8" 1 413 16 5 29 12 16 207 265 321 252 +0 53 139 "10" 43 2374 18 50 10 9 2 16 159 269 119 +0 56 73 "13" 92 797 29 25 22 33 36 -14 59 143 58 +0 82 91 "10" 0 43 61 82 59 91 23 209 266 324 305 +0 81 94 "10" 1 69 76 92 72 100 48 203 259 314 300 +0 54 134 "8" 7 325 19 47 13 17 1 73 215 336 156 +0 82 91 "10" 0 47 68 82 55 95 45 214 267 321 305 +0 62 126 "9" 1 311 32 58 32 44 1 176 260 352 220 +0 60 116 "9" 0 725 29 63 29 20 0 148 242 318 193 +0 77 93 "10" 0 1 65 91 19 116 51 219 269 331 302 +0 73 160 "12" 79 3410 18 28 23 23 0 33 130 220 93 +0 54 139 "8" 46 1231 22 61 11 12 3 12 152 263 117 +0 76 95 "10" 9 1746 97 25 107 123 146 126 181 241 170 +0 60 107 "9" 0 163 28 5 35 13 61 208 270 340 260 +0 82 96 "10" 0 85 73 99 76 96 39 206 261 318 303 +0 76 101 "10" 1 372 72 27 82 103 84 198 255 317 259 +0 75 105 "10" 0 202 51 88 50 58 10 185 264 333 277 +0 52 112 "8" 0 22 38 12 42 23 62 150 244 324 249 +0 47 100 "8" 1 55 61 30 105 10 104 190 251 323 257 +0 63 71 "13" 125 201 17 19 14 20 16 -26 43 123 64 +0 63 99 "10" 0 226 57 95 48 56 23 177 254 319 242 +0 66 109 "10" 1 304 44 55 58 39 24 109 210 299 190 +0 60 108 "2" 0 400 27 42 5 60 5 194 264 341 216 +0 68 128 "9" 4 308 46 86 49 43 1 152 253 336 245 +0 61 103 "2" 2 446 17 32 5 27 1 192 263 339 201 +0 75 111 "10" 4 224 42 75 21 75 6 186 261 335 268 +0 64 79 "10" 0 11 70 76 40 65 94 216 261 316 271 +0 38 160 "5" 47 443 9 15 13 9 3 5 165 334 108 +0 69 123 "9" 0 196 51 95 57 49 1 173 266 350 263 +0 75 107 "10" 3 209 48 82 22 86 11 195 264 332 277 +0 64 100 "2" 0 284 21 15 5 31 36 184 252 330 232 +0 70 92 "10" 1 140 72 85 19 99 92 203 253 317 215 +0 43 155 "5" 68 274 5 4 8 5 3 -6 142 309 81 +0 65 116 "11" 0 113 35 71 30 33 7 165 263 335 258 +0 59 128 "8" 0 296 28 55 25 21 6 145 250 338 218 +0 48 134 "5" 32 100 23 28 29 23 10 29 162 315 131 +0 65 124 "9" 11 628 41 83 41 34 3 137 241 319 225 +0 76 94 "10" 1 315 80 31 84 103 117 200 255 322 274 +0 74 92 "10" 0 425 26 30 19 32 26 174 242 306 238 +0 48 137 "8" 6 189 17 42 13 13 2 71 215 345 162 +0 63 122 "9" 0 451 37 78 40 25 8 130 233 314 203 +0 65 102 "10" 0 217 60 29 42 68 100 203 259 321 268 +0 49 138 "2" 101 2451 1 4 0 0 0 4 115 204 70 +0 63 102 "10" 0 9 65 53 132 18 68 180 263 346 262 +0 81 89 "10" 0 76 57 90 27 91 26 215 269 329 304 +0 54 107 "9" 9 81 35 38 36 32 36 67 176 303 149 +0 65 101 "8" 2 294 52 30 83 82 23 189 243 305 226 +0 57 114 "9" 10 94 36 37 36 32 41 62 178 306 148 +0 52 99 "8" 0 9 36 14 59 23 43 163 247 322 251 +0 55 93 "5" 116 1109 13 10 9 14 19 -42 58 166 48 +0 72 94 "9" 0 130 69 12 75 71 116 212 265 341 273 +0 65 112 "9" 2 307 26 50 7 59 3 196 269 350 224 +0 80 123 "10" 28 1472 59 76 51 99 24 109 177 242 168 +0 60 99 "9" 5 84 36 34 34 27 43 81 181 293 160 +0 76 87 "10" 1 36 55 66 21 95 38 223 270 332 296 +0 39 166 "5" 83 788 5 7 8 4 0 -21 133 307 72 +0 66 119 "11" 0 240 38 75 35 37 5 164 264 338 256 +0 56 102 "8" 0 4 36 16 43 30 39 176 255 331 238 +0 74 100 "10" 1 713 41 67 40 29 20 106 197 279 175 +0 68 115 "10" 0 150 32 66 37 23 4 135 232 318 220 +0 43 138 "9" 32 837 17 36 16 11 4 28 170 306 115 +0 76 107 "10" 0 300 63 90 70 68 26 182 256 320 270 +0 57 128 "8" 0 371 20 36 19 19 4 143 251 342 214 +0 74 93 "9" 0 86 74 18 72 76 126 213 264 339 280 +0 61 121 "9" 0 771 42 92 48 35 4 136 239 315 214 +0 47 128 "5" 23 44 29 40 34 30 16 45 163 311 140 +0 81 93 "10" 1 84 72 90 63 99 44 207 262 317 303 +0 82 90 "10" 0 34 63 73 49 94 43 219 270 324 304 +0 57 115 "9" 9 125 37 38 37 34 41 65 180 307 150 +0 82 95 "10" 1 94 75 96 75 99 40 204 260 316 303 +0 83 98 "10" 0 100 67 97 69 89 30 202 263 321 302 +0 68 95 "9" 0 98 50 2 58 42 100 210 269 350 274 +0 71 125 "10" 32 4425 36 59 41 33 14 95 182 255 160 +0 55 94 "10" 1 105 42 20 51 25 55 166 247 319 252 +0 65 151 "12" 121 4069 16 39 11 11 0 -36 70 156 59 +0 66 115 "10" 3 940 39 87 40 21 6 98 197 280 183 +0 48 131 "5" 46 163 21 23 28 23 11 21 146 304 117 +0 82 94 "10" 0 100 61 96 47 95 16 210 269 331 303 +0 62 97 "10" 1 67 44 40 45 37 48 102 196 300 176 +0 48 138 "5" 31 115 23 31 26 23 7 30 166 316 132 +0 63 72 "13" 126 229 17 18 14 19 15 -26 42 123 64 +0 61 96 "9" 3 133 37 35 35 29 45 87 183 292 163 +0 80 116 "10" 0 527 41 47 50 54 20 186 257 324 258 +0 81 93 "10" 1 70 71 84 59 97 48 207 262 316 302 +0 52 135 "10" 38 1835 18 50 11 10 2 24 161 271 121 +0 61 108 "2" 2 846 26 45 5 55 6 180 254 334 204 +0 61 106 "10" 4 1181 61 6 58 46 130 173 234 313 213 +0 79 98 "10" 0 100 83 71 78 110 85 206 263 320 286 +0 74 127 "10" 0 259 56 98 59 57 1 166 259 344 269 +0 67 114 "10" 6 1736 73 13 68 64 141 150 216 298 198 +0 55 101 "10" 3 424 51 9 50 33 99 193 252 320 237 +0 62 116 "9" 0 602 41 79 43 33 11 142 240 314 220 +0 63 119 "9" 4 726 38 78 39 35 0 150 240 324 205 +0 53 120 "2" 40 1038 2 6 1 1 0 71 163 248 122 +0 78 102 "10" 0 62 55 93 35 96 7 205 269 336 290 +0 61 122 "9" 0 638 42 89 48 33 4 132 234 310 212 +0 60 109 "9" 6 345 50 48 54 51 50 85 193 304 169 +0 75 117 "10" 2 272 49 85 48 68 2 183 261 343 274 +0 44 138 "8" 15 82 24 43 22 23 5 53 189 323 153 +0 55 130 "8" 0 313 15 25 15 17 2 133 247 342 206 +0 49 107 "4" 4 647 49 15 66 16 89 135 212 289 191 +0 45 149 "5" 48 209 17 23 20 16 5 11 156 326 110 +0 52 122 "3" 141 981 23 8 14 20 45 -33 64 197 58 +0 53 97 "9" 0 84 43 10 22 46 96 211 267 331 261 +0 45 109 "4" 4 677 41 12 78 11 62 142 215 288 200 +0 59 99 "10" 0 92 48 36 41 41 69 201 258 320 258 +0 48 126 "9" 0 73 30 41 35 39 12 112 230 345 198 +0 61 111 "9" 0 519 40 76 43 34 14 143 239 312 218 +0 80 86 "10" 1 100 58 76 30 92 41 221 269 327 294 +0 63 82 "10" 1 33 72 71 49 53 98 209 257 310 281 +0 64 107 "2" 2 606 20 22 3 52 9 195 263 336 220 +0 48 143 "5" 111 950 3 3 3 3 2 -31 101 261 58 +0 57 137 "10" 23 1511 37 77 29 30 14 86 201 291 156 +0 70 88 "10" 0 155 36 53 38 39 29 174 241 307 243 +0 71 123 "10" 0 280 49 84 58 57 2 177 265 349 272 +0 41 141 "8" 14 323 17 39 12 13 2 49 203 337 148 +0 82 92 "10" 1 62 70 89 59 98 38 210 265 320 305 +0 52 106 "9" 0 157 35 0 42 15 72 211 275 358 263 +0 43 144 "8" 17 239 21 42 18 20 4 49 193 330 147 +0 62 107 "2" 0 662 21 46 21 15 1 159 239 305 190 +0 53 102 "5" 29 5 24 27 24 23 23 41 143 264 135 +0 52 130 "8" 0 148 17 31 17 22 4 120 241 352 186 +0 46 136 "12" 95 2280 4 16 2 1 0 -10 108 202 58 +0 83 99 "10" 0 100 66 96 69 86 28 199 262 321 301 +0 59 103 "10" 0 350 47 85 40 41 16 161 245 311 219 +0 64 101 "10" 2 542 68 34 113 91 40 170 223 283 216 +0 82 90 "10" 0 40 62 86 53 94 21 214 268 326 304 +0 67 120 "11" 0 117 36 73 34 38 5 164 266 337 261 +0 51 126 "5" 110 927 5 3 4 7 4 -26 92 236 60 +0 82 104 "10" 0 181 60 80 64 79 24 199 265 327 290 +0 62 72 "5" 88 1 16 22 12 18 14 -5 59 139 85 +0 59 112 "2" 0 349 25 36 4 57 6 193 265 345 217 +0 79 115 "10" 7 853 41 51 48 30 29 73 179 274 167 +0 80 105 "10" 2 510 95 77 90 119 101 187 249 308 249 +0 74 85 "10" 0 45 59 75 9 125 39 219 268 322 290 +0 60 105 "2" 1 358 19 35 9 28 0 197 268 342 207 +0 66 123 "9" 3 435 44 92 46 34 2 150 253 332 238 +0 82 96 "10" 0 91 72 95 75 97 40 207 263 318 302 +0 69 103 "10" 1 224 31 51 40 27 16 158 239 317 240 +0 44 154 "5" 63 279 6 5 9 5 4 -1 146 314 82 +0 76 88 "10" 0 108 55 66 20 96 35 221 268 332 293 +0 81 96 "10" 0 101 72 89 67 99 45 208 263 319 295 +0 65 107 "2" 1 390 14 17 5 21 10 176 251 327 208 +0 75 93 "10" 0 88 79 25 72 82 130 214 265 337 284 +0 75 94 "10" 1 296 53 41 14 84 68 204 255 321 256 +0 66 125 "9" 10 773 42 86 44 35 1 140 243 321 229 +0 49 127 "5" 26 64 28 40 34 31 14 41 160 306 138 +0 56 100 "10" 0 134 32 14 31 15 63 205 264 330 257 +0 75 93 "10" 0 100 97 86 79 111 111 204 257 313 290 +0 55 92 "8" 1 70 41 19 51 24 52 167 248 319 252 +0 49 130 "5" 54 503 20 22 26 24 9 14 136 291 106 +0 81 107 "10" 3 205 56 80 35 91 16 192 259 326 293 +0 82 91 "10" 0 78 66 87 59 95 30 210 267 323 306 +0 53 128 "8" 0 143 18 32 18 21 4 132 248 351 197 +0 33 97 "1" 79 1575 6 0 2 2 24 19 102 196 92 +0 64 105 "10" 0 243 87 143 87 81 46 171 247 313 235 +0 68 125 "9" 3 526 48 97 51 40 1 152 252 336 241 +0 36 123 "1" 52 152 26 4 17 17 67 29 124 249 114 +0 67 98 "10" 6 638 38 50 2 102 9 198 258 326 243 +0 56 108 "2" 0 85 31 4 37 12 69 202 266 340 258 +0 73 129 "10" 1 390 58 99 59 54 0 159 255 341 263 +0 58 87 "4" 2 495 57 38 84 20 89 166 238 307 261 +0 60 124 "8" 0 285 31 60 28 22 7 149 248 332 228 +0 43 140 "8" 15 87 23 43 20 22 5 53 192 327 152 +0 67 101 "2" 7 644 38 52 3 102 9 194 257 328 236 +0 70 110 "10" 2 625 45 56 53 36 30 96 194 286 167 +0 55 66 "13" 74 1 35 29 26 39 44 4 70 146 71 +0 61 108 "9" 0 172 50 96 43 44 13 174 263 336 255 +0 73 99 "10" 0 100 64 47 45 80 86 210 264 322 284 +0 43 139 "9" 6 81 23 41 24 26 5 69 204 341 165 +0 82 97 "10" 1 101 62 97 61 84 15 200 265 327 300 +0 49 159 "8" 72 2761 10 26 6 4 0 -8 132 237 81 +0 65 106 "10" 0 252 40 57 61 33 11 128 221 302 197 +0 52 105 "9" 0 109 37 44 43 41 16 137 237 328 219 +0 76 126 "10" 4 284 62 101 60 62 1 158 250 339 267 +0 82 90 "10" 0 46 68 83 55 95 44 215 268 321 306 +0 72 150 "10" 52 2976 13 18 19 17 0 61 153 238 118 +0 51 132 "5" 130 948 6 2 4 7 7 -36 83 232 57 +0 82 91 "10" 0 62 64 84 58 94 30 212 267 322 306 +0 74 90 "10" 3 1916 65 34 100 74 58 155 206 258 209 +0 68 123 "9" 0 199 51 97 55 47 1 172 265 350 260 +0 34 142 "5" 45 1071 7 18 4 3 0 19 167 315 108 +0 63 70 "10" 0 4 55 62 22 61 81 228 266 317 238 +0 78 118 "10" 6 405 64 100 61 81 3 172 250 330 278 +0 70 107 "10" 2 183 82 38 66 90 127 191 250 317 263 +0 63 114 "9" 3 354 24 48 9 44 2 191 267 347 214 +0 46 140 "5" 50 130 15 14 19 17 8 14 150 315 103 +0 57 118 "8" 0 342 28 52 25 25 11 149 245 329 215 +0 75 105 "8" 0 426 26 37 16 24 21 162 238 308 219 +0 61 135 "8" 2 429 31 55 28 39 2 157 254 346 216 +0 69 128 "9" 3 400 50 93 52 43 0 154 253 338 248 +0 61 112 "9" 2 767 34 72 35 26 1 147 236 313 195 +0 51 132 "5" 126 1199 5 2 3 6 4 -35 85 232 55 +0 53 79 "3" 68 333 56 38 42 54 87 19 91 178 92 +0 75 98 "10" 3 887 42 81 43 29 14 104 195 273 177 +0 79 97 "10" 0 90 83 79 78 109 78 204 260 316 291 +0 80 102 "10" 0 130 80 79 72 104 80 204 263 321 279 +0 73 136 "2" 47 753 9 15 8 12 0 77 164 242 127 +0 52 127 "5" 117 1390 5 2 3 7 4 -31 87 229 57 +0 45 153 "12" 157 5137 11 31 6 2 1 -84 51 161 21 +0 70 121 "10" 10 1215 45 92 46 28 11 73 189 269 171 +0 57 103 "10" 0 181 41 47 49 43 18 131 230 313 213 +0 68 119 "9" 5 347 39 73 39 52 1 176 257 345 237 +0 65 120 "10" 1 538 37 66 43 27 13 116 220 310 186 +0 62 92 "10" 1 86 59 45 21 67 94 213 263 326 226 +0 62 136 "9" 5 709 33 65 33 37 0 141 243 337 209 +0 54 144 "10" 50 1353 18 53 8 10 1 8 155 267 118 +0 44 150 "5" 54 108 11 11 16 11 5 7 155 327 98 +0 65 123 "9" 6 593 43 88 44 34 3 143 247 325 231 +0 55 147 "7" 158 3827 20 42 11 16 1 -29 86 180 58 +0 56 88 "4" 1 91 39 19 46 22 52 172 250 321 255 +0 82 115 "10" 3 118 57 89 43 90 10 183 255 328 286 +0 63 68 "14" 141 1059 17 18 13 20 15 -36 27 101 40 +0 46 163 "12" 158 3788 4 13 0 0 0 -72 67 176 27 +0 79 121 "10" 3 230 75 69 67 99 73 187 257 325 254 +0 43 144 "5" 101 867 13 5 10 11 20 -20 105 264 68 +0 74 94 "10" 0 91 93 72 77 105 119 207 259 318 290 +0 79 93 "10" 0 50 70 79 53 94 61 210 262 315 300 +0 73 107 "10" 0 300 68 101 74 70 29 175 252 316 259 +0 59 110 "9" 0 193 60 118 52 51 26 157 254 327 236 +0 64 88 "2" 0 150 23 13 8 37 39 193 255 321 243 +0 52 92 "10" 0 274 92 48 108 36 178 180 248 317 266 +0 62 103 "9" 0 70 30 5 35 12 62 216 275 344 265 +0 60 101 "2" 36 1896 2 5 0 0 0 85 159 233 129 +0 42 137 "8" 20 409 19 45 14 15 3 37 186 319 137 +0 50 140 "8" 3 192 17 38 15 15 2 79 222 353 161 +0 80 111 "10" 0 170 55 68 63 63 23 192 261 325 266 +0 64 93 "9" 0 73 60 5 62 51 121 215 269 348 278 +0 55 168 "12" 176 4115 7 19 1 2 0 -60 80 189 51 +0 78 102 "8" 0 154 50 7 58 53 92 208 266 339 260 +0 83 88 "10" 0 33 62 85 47 96 24 219 270 328 304 +0 55 104 "9" 10 109 34 36 35 31 35 68 174 299 148 +0 67 122 "9" 0 307 49 102 52 39 1 166 263 346 248 +0 67 155 "12" 129 4582 19 42 15 16 1 -63 49 135 54 +0 66 127 "11" 2 223 35 72 28 31 5 151 257 342 247 +0 82 84 "10" 0 79 60 83 34 96 34 225 272 328 299 +0 48 140 "5" 86 2045 17 46 11 7 3 -24 109 221 73 +0 72 115 "10" 8 963 48 50 56 41 41 77 181 281 163 +0 81 95 "10" 0 89 61 89 58 90 14 201 264 327 300 +0 49 131 "5" 50 235 21 23 25 23 14 19 140 297 109 +0 69 99 "10" 0 374 32 49 39 29 17 164 240 314 240 +0 76 89 "10" 3 200 58 61 14 103 53 209 256 321 277 +0 73 125 "10" 1 211 50 83 55 64 2 177 262 348 282 +0 49 116 "9" 0 107 48 47 56 60 38 107 215 329 192 +0 39 143 "9" 32 1151 15 38 11 11 2 21 175 311 120 +0 43 138 "9" 22 618 16 36 14 11 4 39 179 314 121 +0 46 116 "2" 69 1717 2 7 0 0 0 31 128 210 73 +0 49 108 "9" 1 125 41 46 51 53 24 114 215 321 198 +0 82 113 "10" 3 314 57 87 41 90 12 184 256 328 287 +0 52 122 "5" 139 830 24 9 15 21 45 -32 66 198 59 +0 60 112 "2" 0 479 25 37 4 60 7 179 254 334 209 +0 57 155 "12" 191 4275 18 42 10 12 0 -63 52 145 41 +0 83 97 "10" 1 100 67 101 66 90 21 202 264 324 303 +0 56 109 "9" 0 76 33 1 38 12 68 210 272 351 261 +0 55 110 "5" 110 754 2 3 2 2 3 -28 81 207 50 +0 70 130 "9" 1 319 50 92 51 45 2 155 257 342 254 +0 60 128 "8" 0 426 31 60 28 23 7 145 249 337 225 +0 62 89 "10" 1 87 55 21 89 45 61 216 266 321 283 +0 50 140 "8" 3 187 17 37 15 16 2 81 223 354 161 +0 61 111 "10" 0 309 43 51 61 39 17 118 224 308 211 +0 47 157 "12" 157 4860 12 34 7 2 1 -84 56 167 25 +0 60 109 "10" 2 324 42 13 54 9 91 154 240 328 234 +0 68 101 "2" 0 517 18 30 16 20 2 164 239 302 198 +0 63 132 "9" 6 746 35 70 36 38 0 143 242 335 208 +0 69 112 "9" 8 1072 17 33 12 19 2 140 217 286 186 +0 52 130 "8" 1 153 18 32 16 22 4 121 242 352 185 +0 65 77 "10" 0 63 52 23 16 91 87 199 256 314 256 +0 72 125 "9" 0 192 52 91 59 56 1 172 263 348 271 +0 50 100 "10" 1 845 68 28 77 26 121 158 229 307 229 +0 60 66 "5" 104 465 14 14 11 17 14 -12 55 131 59 +0 52 133 "5" 53 230 23 26 25 23 18 18 138 294 113 +0 79 124 "10" 2 124 57 94 58 74 3 170 255 337 278 +0 35 130 "1" 55 130 22 2 12 15 61 21 129 263 113 +0 35 123 "12" 181 4746 3 4 1 0 5 -78 19 122 6 +0 45 151 "12" 149 3649 2 10 0 0 0 -55 71 170 26 +0 53 96 "13" 116 451 11 6 6 12 17 -44 58 169 50 +0 70 111 "9" 0 594 39 74 43 24 11 120 217 298 183 +0 70 94 "9" 0 111 66 9 72 67 116 212 265 343 274 +0 72 156 "10" 47 2158 20 26 26 26 5 71 161 250 124 +0 62 121 "9" 0 543 35 80 42 20 2 132 232 308 201 +0 80 93 "10" 0 52 69 78 52 94 57 211 264 317 302 +0 71 93 "9" 3 226 80 10 99 119 115 207 261 332 262 +0 73 110 "10" 0 244 60 91 65 67 18 171 252 320 261 +0 68 88 "10" 1 75 64 74 25 81 77 214 263 326 229 +0 79 111 "10" 0 100 65 102 63 90 5 187 261 336 291 +0 69 115 "10" 1 300 31 65 36 23 4 139 233 320 222 +0 81 99 "10" 0 99 62 94 58 88 10 198 264 330 297 +0 40 109 "8" 0 188 40 3 103 7 48 186 253 328 241 +0 71 81 "10" 0 1 77 113 13 141 56 224 267 323 295 +0 65 120 "10" 2 920 42 89 42 24 7 94 202 285 183 +0 60 108 "2" 1 130 23 28 2 57 8 201 269 346 231 +0 60 144 "12" 118 4240 20 48 16 15 1 -5 100 188 76 +0 55 90 "8" 1 47 40 19 49 22 51 170 250 320 254 +0 55 89 "10" 1 320 83 46 101 29 170 172 241 311 265 +0 36 144 "5" 28 594 9 21 6 5 2 26 185 339 123 +0 47 97 "10" 1 32 49 17 101 7 78 195 255 324 254 +0 71 97 "9" 0 108 67 8 79 73 109 212 267 344 269 +0 60 107 "9" 0 169 37 63 39 33 15 159 252 328 233 +0 36 148 "5" 44 626 6 12 5 4 2 10 169 324 112 +0 82 95 "10" 1 98 62 89 59 89 16 203 265 326 301 +0 52 134 "8" 0 177 18 37 15 19 3 100 231 349 166 +0 65 100 "10" 0 763 80 39 121 102 65 182 234 291 239 +0 58 111 "9" 3 91 45 42 47 48 46 85 193 310 166 +0 44 126 "5" 11 68 31 37 35 36 16 66 183 322 157 +0 77 97 "12" 9 3110 46 16 55 60 63 86 144 203 132 +0 70 115 "10" 5 1425 89 28 79 85 155 166 227 302 227 +0 69 117 "9" 4 462 41 77 42 54 1 177 259 344 243 +0 48 122 "9" 0 85 29 41 34 39 14 121 234 345 208 +0 69 111 "10" 0 296 63 96 67 68 22 162 246 316 240 +0 73 145 "10" 27 1202 33 36 38 39 20 118 198 283 165 +0 62 115 "9" 0 903 40 88 47 25 4 130 227 300 196 +0 82 117 "10" 6 300 55 93 46 89 5 175 250 327 278 +0 69 107 "10" 0 202 49 85 45 56 10 180 261 332 258 +0 61 94 "9" 0 26 41 1 38 24 97 221 276 351 269 +0 44 148 "5" 56 161 14 15 20 15 8 9 151 324 104 +0 67 80 "10" 0 60 83 110 16 129 70 209 252 310 282 +0 76 99 "10" 2 690 71 20 84 106 93 185 241 304 244 +0 56 92 "6" 0 9 31 8 68 30 18 217 277 334 272 +0 76 88 "10" 1 313 54 62 19 94 41 221 269 331 292 +0 60 122 "2" 1 739 18 31 9 26 5 176 247 319 197 +0 82 101 "10" 0 100 66 82 64 86 39 207 268 327 292 +0 47 143 "5" 87 770 4 4 5 3 2 -16 119 278 64 +0 63 122 "9" 0 397 37 75 40 26 8 130 234 316 203 +0 57 105 "5" 114 92 4 5 4 4 4 -24 81 202 56 +0 76 87 "10" 3 115 46 70 46 38 30 113 195 279 187 +0 51 130 "5" 117 1210 4 2 3 6 3 -30 90 237 57 +0 74 81 "10" 0 2 77 116 14 146 54 225 268 323 299 +0 80 93 "10" 0 56 71 81 57 96 55 207 261 314 300 +0 48 158 "8" 63 3068 9 24 5 3 0 -3 137 244 83 +0 75 86 "10" 0 1 72 109 18 131 52 222 268 326 300 +0 58 109 "9" 0 152 29 3 38 15 59 206 269 343 259 +0 64 90 "2" 0 365 26 13 9 44 45 191 254 324 244 +0 34 122 "12" 121 2669 5 6 4 2 6 -29 86 212 62 +0 78 92 "10" 0 100 60 60 38 86 58 217 267 325 290 +0 45 147 "5" 49 130 18 21 24 18 8 13 156 323 115 +0 48 138 "5" 73 506 4 4 5 3 3 -5 126 281 68 +0 78 103 "10" 1 98 52 92 52 61 8 190 265 333 287 +0 65 126 "9" 3 794 41 89 41 26 7 92 208 288 189 +0 45 115 "5" 4 68 36 42 41 44 21 83 196 324 166 +0 55 174 "12" 157 3833 8 19 2 3 0 -50 96 206 60 +0 57 104 "5" 119 218 5 5 4 5 5 -30 75 194 51 +0 35 119 "13" 71 707 10 0 5 4 33 15 125 244 105 +0 78 90 "10" 1 100 57 62 31 86 52 218 266 325 288 +0 61 89 "9" 1 92 38 34 38 31 41 106 197 296 179 +0 44 110 "4" 3 738 39 8 75 11 56 150 223 298 203 +0 75 102 "10" 6 2145 42 32 67 60 18 121 176 232 163 +0 60 108 "9" 0 304 27 7 34 12 55 195 262 328 257 +0 63 110 "10" 6 882 67 9 63 53 135 154 218 297 198 +0 52 144 "10" 61 1615 20 57 11 11 2 -2 141 252 105 +0 44 105 "10" 2 494 78 5 145 33 120 163 233 301 213 +0 39 126 "12" 194 3671 16 2 9 7 43 -70 38 168 29 +0 50 131 "5" 40 94 27 33 29 28 15 31 148 299 131 +0 56 107 "5" 105 123 5 6 4 5 5 -18 88 213 65 +0 65 117 "9" 1 524 46 98 49 40 2 156 246 328 220 +0 82 91 "10" 0 55 69 86 58 97 41 212 265 320 305 +0 49 129 "5" 45 16 9 6 11 9 8 18 143 291 93 +0 51 99 "3" 89 984 46 24 34 44 77 7 86 192 87 +0 71 116 "9" 5 400 39 72 32 57 1 177 258 341 246 +0 37 138 "12" 136 2012 18 2 11 10 52 -34 83 222 60 +0 75 104 "10" 2 307 41 61 43 32 25 96 192 280 174 +0 61 117 "10" 0 239 37 71 31 28 8 162 256 335 242 +0 65 123 "9" 9 614 41 82 40 35 4 141 245 323 230 +0 57 77 "10" 2 111 64 22 111 31 72 206 253 306 269 +0 67 125 "8" 3 273 39 74 34 34 3 153 253 336 246 +0 44 170 "12" 147 3632 11 32 7 4 0 -75 84 197 46 +0 48 99 "2" 1 288 84 35 99 37 151 156 225 301 223 +0 79 104 "10" 4 2177 50 33 56 64 51 146 204 262 196 +0 56 89 "9" 11 193 30 30 32 27 32 70 164 272 145 +0 50 114 "9" 4 99 40 44 45 47 29 84 195 322 165 +0 79 110 "10" 1 99 62 99 59 81 5 185 260 334 287 +0 66 124 "9" 6 621 40 75 46 48 0 165 254 345 233 +0 75 111 "10" 5 300 51 90 49 59 2 175 257 332 272 +0 57 127 "8" 0 305 23 43 21 20 6 146 250 339 216 +0 82 116 "10" 0 274 95 76 92 125 97 189 258 323 257 +0 65 109 "10" 1 926 84 23 73 76 152 177 237 305 236 +0 66 114 "10" 3 304 32 62 38 24 6 138 232 318 227 +0 56 160 "12" 187 4258 10 27 2 4 1 -58 73 177 48 +0 57 95 "9" 0 102 51 23 24 49 104 217 268 330 249 +0 76 112 "10" 4 401 53 93 51 62 3 174 256 332 273 +0 57 105 "5" 116 387 4 5 3 3 4 -26 79 200 55 +0 77 109 "10" 3 282 56 95 55 68 4 179 258 332 279 +0 76 88 "10" 0 21 56 69 22 96 32 222 270 333 297 +0 61 122 "9" 1 491 41 85 43 31 9 140 244 321 219 +0 47 159 "12" 172 4057 2 7 0 0 0 -75 57 162 19 +0 62 102 "2" 0 152 22 25 1 59 9 210 275 346 245 +0 53 117 "5" 125 969 14 8 9 16 19 -36 71 201 54 +0 76 107 "10" 0 241 63 88 70 67 27 184 257 321 269 +0 54 133 "8" 1 194 19 46 15 21 1 94 231 350 158 +0 72 77 "10" 1 91 77 106 9 134 67 220 263 320 288 +0 64 99 "10" 0 270 36 25 30 26 59 202 259 320 262 +0 53 100 "9" 10 102 32 33 35 31 29 69 172 293 146 +0 52 112 "9" 2 54 44 40 49 57 34 92 203 321 178 +0 52 67 "6" 0 3 84 57 131 23 128 222 268 313 285 +0 66 110 "10" 2 686 92 20 86 68 181 180 240 313 233 +0 56 91 "13" 123 1010 16 12 11 17 21 -47 47 151 39 +0 53 80 "3" 93 335 49 38 34 49 70 -15 63 152 67 +0 52 123 "2" 43 1116 1 5 0 0 0 83 165 243 116 +0 62 88 "10" 0 381 90 93 43 94 119 207 257 317 250 +0 67 109 "10" 2 1486 88 23 78 77 159 172 232 302 231 +0 77 90 "10" 0 28 58 65 14 113 46 219 268 330 295 +0 45 121 "5" 10 85 29 40 33 32 11 66 183 318 156 +0 80 106 "10" 0 90 65 101 61 94 7 194 262 335 296 +0 47 137 "5" 49 180 6 5 8 5 5 16 147 304 84 +0 77 96 "10" 1 257 83 44 83 107 109 201 256 317 277 +0 65 122 "10" 0 585 48 105 51 36 2 161 256 339 232 +0 57 136 "10" 42 1692 27 55 24 17 5 65 169 254 116 +0 52 124 "5" 118 870 5 3 3 7 4 -34 83 223 54 +0 61 73 "5" 99 34 9 11 7 11 8 -9 70 160 67 +0 73 121 "10" 4 354 49 87 46 50 2 164 254 335 263 +0 42 133 "12" 130 2923 2 8 0 0 1 -42 71 164 33 +0 70 107 "10" 2 311 27 49 36 22 10 147 231 309 224 +0 80 97 "10" 0 100 73 89 69 101 46 208 263 319 294 +0 53 98 "8" 1 32 37 13 46 24 47 165 247 321 250 +0 63 109 "9" 0 204 28 56 20 44 3 204 276 360 234 +0 46 143 "5" 60 165 6 5 7 5 5 7 143 304 81 +0 71 102 "10" 1 98 69 45 51 82 97 201 257 316 276 +0 53 126 "5" 47 223 24 28 22 23 19 23 137 286 122 +0 51 128 "5" 37 107 19 18 20 22 13 23 140 291 111 +0 74 84 "10" 1 173 66 83 11 118 60 218 262 322 287 +0 59 88 "5" 120 205 9 7 7 12 11 -33 58 158 49 +0 44 146 "5" 83 900 5 4 5 5 4 -15 122 287 70 +0 78 117 "10" 4 296 53 89 49 78 3 179 256 337 280 +0 46 142 "5" 50 67 7 6 10 7 6 11 150 311 93 +0 51 121 "5" 47 47 7 3 5 8 10 18 129 254 88 +0 72 107 "10" 1 517 57 84 64 53 31 160 232 294 225 +0 41 147 "12" 152 3758 9 27 5 1 2 -77 50 162 18 +0 68 125 "9" 0 152 36 77 27 34 7 159 264 348 264 +0 66 103 "2" 2 473 21 22 1 54 11 198 264 336 226 +0 76 89 "10" 3 302 58 62 14 104 51 210 257 321 278 +0 50 110 "5" 65 184 4 3 3 5 6 2 108 237 58 +0 76 94 "10" 1 212 82 33 85 103 118 200 255 322 275 +0 76 105 "10" 7 440 43 51 49 31 34 82 182 276 171 +0 62 135 "9" 3 438 32 59 30 39 1 152 250 343 214 +0 72 94 "10" 0 199 55 45 15 79 73 209 260 327 247 +0 67 95 "2" 0 339 22 24 1 57 11 201 263 330 237 +0 78 122 "10" 5 402 53 89 52 76 3 173 253 336 278 +0 81 107 "10" 2 131 56 85 34 96 16 193 260 327 292 +0 52 135 "8" 0 158 18 37 15 21 3 97 229 349 165 +0 63 106 "2" 4 815 19 34 5 39 2 182 252 330 199 +0 67 124 "9" 8 532 41 81 42 37 2 145 248 325 237 +0 65 106 "9" 0 189 45 82 44 44 9 180 265 339 256 +0 53 116 "4" 7 2870 87 42 116 36 157 83 171 250 159 +0 71 107 "10" 0 392 69 104 76 71 30 172 249 315 255 +0 78 130 "10" 7 301 80 72 68 106 83 173 247 322 240 +0 53 131 "8" 1 198 15 33 12 17 2 111 237 349 182 +0 62 94 "10" 0 21 43 38 43 35 47 104 196 299 177 +0 82 93 "10" 0 58 64 90 60 92 21 207 267 325 304 +0 75 89 "10" 1 200 53 55 21 82 55 221 269 329 285 +0 47 105 "9" 0 57 42 53 47 55 23 124 221 330 198 +0 78 95 "10" 0 35 55 71 27 84 23 212 269 332 310 +0 39 134 "3" 84 615 31 10 24 21 62 3 105 241 88 +0 68 115 "10" 4 544 48 54 57 42 38 89 194 293 174 +0 71 124 "9" 0 177 51 90 59 55 1 174 264 349 270 +0 53 98 "2" 0 10 36 7 84 33 23 210 272 334 269 +0 64 100 "10" 0 208 51 87 42 51 17 181 262 330 255 +0 74 113 "10" 3 184 39 69 18 73 6 185 260 337 265 +0 74 122 "10" 22 945 44 66 51 37 20 116 197 267 181 +0 49 112 "9" 1 66 43 43 51 59 30 103 211 328 186 +0 72 161 "12" 138 4008 20 34 19 24 1 -31 72 163 60 +0 80 99 "10" 0 100 59 95 57 77 9 194 265 330 294 +0 53 101 "5" 67 156 5 4 4 6 7 12 103 217 79 +0 71 104 "10" 0 403 67 99 74 65 34 176 249 311 253 +0 69 88 "2" 0 365 22 21 0 62 8 208 265 327 254 +0 51 111 "11" 0 1 35 15 41 18 51 152 246 324 251 +0 59 73 "10" 1 616 61 33 97 32 75 214 258 309 277 +0 67 85 "10" 1 34 64 73 25 82 77 217 264 324 233 +0 56 98 "5" 124 857 9 7 6 10 12 -43 58 170 42 +0 62 101 "9" 0 198 49 89 42 46 18 179 263 330 254 +0 69 109 "10" 3 342 30 54 39 24 11 147 234 316 232 +0 82 89 "10" 0 31 62 78 52 95 31 217 269 325 305 +0 54 134 "8" 3 547 18 35 11 21 1 109 233 333 184 +0 69 126 "8" 1 178 38 80 34 39 5 158 261 334 261 +0 62 101 "10" 3 537 48 45 51 41 50 92 187 289 165 +0 72 128 "9" 2 392 51 92 48 47 2 156 254 340 259 +0 66 124 "9" 4 551 44 91 46 35 2 147 251 330 236 +0 69 122 "9" 14 917 44 93 44 27 9 63 180 260 166 +0 74 84 "10" 0 1 82 124 20 150 50 222 268 322 300 +0 61 58 "14" 113 1108 19 19 15 22 18 -14 43 108 52 +0 54 115 "5" 132 581 30 15 20 27 54 -34 64 187 57 +0 51 137 "8" 2 156 19 36 18 22 4 87 223 349 166 +0 82 91 "10" 0 44 62 81 59 92 28 211 267 322 306 +0 83 86 "10" 0 20 61 91 38 97 25 221 271 329 301 +0 59 115 "2" 0 514 21 47 21 16 1 159 246 317 191 +0 69 94 "10" 0 1202 70 28 105 83 68 176 227 280 235 +0 61 112 "2" 1 189 25 24 3 67 9 199 270 347 231 +0 78 97 "10" 0 57 68 60 49 88 72 214 267 324 296 +0 68 93 "10" 2 191 68 72 21 89 91 195 246 311 203 +0 62 112 "2" 0 160 21 22 3 59 8 196 267 344 228 +0 83 96 "10" 1 97 72 100 73 95 33 205 262 320 305 +0 76 127 "10" 4 400 62 101 60 64 1 160 251 340 269 +0 47 119 "11" 16 8 29 41 34 29 17 53 169 309 146 +0 80 117 "8" 0 239 39 82 7 77 9 185 254 320 237 +0 58 103 "5" 119 341 5 5 4 5 4 -30 74 192 55 +0 50 137 "5" 143 1232 4 2 2 4 5 -49 72 224 45 +0 65 110 "9" 0 189 41 79 38 37 6 179 266 345 258 +0 43 127 "9" 3 49 30 41 32 38 9 77 202 332 177 +0 74 89 "10" 1 305 61 67 15 100 63 207 255 319 267 +0 58 85 "10" 0 3 51 65 4 122 26 220 273 329 280 +0 47 124 "5" 19 35 28 41 35 28 15 49 167 311 144 +0 63 110 "9" 0 631 39 83 43 31 2 146 234 308 197 +0 70 91 "10" 1 77 68 78 22 92 75 209 257 321 233 +0 82 94 "10" 0 77 60 95 41 94 17 210 267 330 303 +0 82 95 "10" 1 79 68 97 64 95 24 205 265 324 305 +0 66 118 "10" 0 315 38 73 35 34 4 168 261 342 255 +0 62 98 "10" 0 67 59 10 80 54 90 215 271 335 286 +0 44 111 "9" 2 60 34 40 40 47 15 92 204 324 179 +0 69 94 "10" 6 2412 33 14 56 53 20 82 138 195 130 +0 67 103 "10" 2 1219 52 33 79 79 24 172 225 288 210 +0 82 96 "10" 0 83 74 97 81 96 37 207 260 317 304 +0 70 111 "10" 4 606 26 49 35 18 6 137 225 306 215 +0 46 140 "5" 38 94 19 27 26 19 7 20 160 321 123 +0 51 63 "3" 39 16 47 30 36 48 72 46 100 168 103 +0 44 120 "9" 1 69 33 48 34 48 12 94 210 331 186 +0 62 120 "9" 0 894 31 70 38 17 2 127 227 302 193 +0 67 119 "11" 0 113 36 73 31 35 6 164 265 335 261 +0 69 100 "10" 0 353 37 58 48 33 14 120 208 286 168 +0 67 123 "9" 1 375 47 98 49 37 1 156 257 338 243 +0 61 121 "9" 0 604 39 86 48 23 4 137 234 310 204 +0 46 143 "5" 112 1040 6 4 5 5 7 -31 98 260 58 +0 74 93 "10" 0 134 75 20 73 78 127 213 264 338 281 +0 74 93 "10" 0 63 75 82 54 95 71 206 259 313 295 +0 62 107 "2" 1 648 23 37 5 52 3 190 260 337 210 +0 50 161 "12" 133 3624 5 14 1 1 0 -40 94 201 55 diff --git a/test/runtests.jl b/test/runtests.jl index a88e4dc..893ba9e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,3 +4,14 @@ using Test @testset "maxnet.jl" begin # Write your tests here. end + +# Test stub based on the R package +using DataFrames, CSV, CategoricalArrays +bradypus = CSV.read("data/bradypus.tsv", DataFrame) +bradypus.ecoreg = categorical(bradypus.ecoreg) +p = bradypus.presence +data = bradypus[:, 2:end] +mod = maxnet(p, data) +plot(mod, type = "cloglog") +mod = amxnet(p, data, maxnet_formula(p, data, classes = "lq")) +plot(mod, "tmp6190_ann") From 4f99440b3e2b0d7a6607a978efcd80ab21a92c67 Mon Sep 17 00:00:00 2001 From: Michael Krabbe Borregaard Date: Mon, 4 Dec 2023 14:22:58 +0100 Subject: [PATCH 4/5] stub the maxnet function --- src/maxnet_function.jl | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/maxnet_function.jl diff --git a/src/maxnet_function.jl b/src/maxnet_function.jl new file mode 100644 index 0000000..4ae7aad --- /dev/null +++ b/src/maxnet_function.jl @@ -0,0 +1,31 @@ +function addsamples(presences, predictors) # this should be a general sdm thing + ret = Int[] + for i in eachindex(presences) + if presences[i] + add = true + for j in eachindex(presences) + if (!presences[j]) && predictors[j, :] == predictors[i, :] + add = false + break + end + end + add && push!(ret, i) + end + end + vcat(presences, zeros(length(ret))), vcat(predictors, predictors[ret, :]) +end + +function maxnet(presences, predictors, + formula = maxnet_formula(presences, predictors), + regularization_multiplier = 1.0, + regularization_function = maxnet_default_regularization, + addsamplestobackground = true) + + disallowmissing!(predictors) + if addsamplestobackground + presences, predictors = addsamples(presences, predictors) + end + + #... TODO: This function is not yet finished + +end \ No newline at end of file From 326af4607a76b729054aff59ff7d0ef564a5569b Mon Sep 17 00:00:00 2001 From: Michael Krabbe Borregaard Date: Mon, 4 Dec 2023 14:23:07 +0100 Subject: [PATCH 5/5] draft implementation of terms --- src/terms.jl | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/terms.jl diff --git a/src/terms.jl b/src/terms.jl new file mode 100644 index 0000000..6a58162 --- /dev/null +++ b/src/terms.jl @@ -0,0 +1,37 @@ +using StatsBase, StatsModels + +struct ThresholdTerm{T,N} <: AbstractTerm + term::T + nknots::N +end + +thresholds(t::Symbol, nknots::Int) = ThresholdTerm(term(t), term(nknots)) + +Base.show(io::IO, t::ThresholdTerm) = print(io, "thresholds($(t.term), nknots = $(t.nknots))") + +function StatsModels.apply_schema(t::FunctionTerm{typeof(thresholds)}, + sch::StatsModels.Schema, + Mod::Type{<:Any}) + apply_schema(ThresholdsTerm(t.args_parsed...), sch, Mod) +end + +# apply_schema to internal Terms and check for proper types +function StatsModels.apply_schema(t::ThresholdTerm, + sch::StatsModels.Schema, + Mod::Type{<:Any}) + term = apply_schema(t.term, sch, Mod) + isa(term, ContinuousTerm) || + throw(ArgumentError("ThresholdTerm only works with continuous terms (got $term)")) + isa(t.nknots, ConstantTerm) || + throw(ArgumentError("ThresholdTerm nknots must be a number (got $t.nknots)")) + ThresholdTerm(term, t.nknots.n) +end + +StatsModels.terms(p::ThresholdTerm) = terms(p.term) +StatsModels.termvars(p::ThresholdTerm) = StatsModels.termvars(p.term) +StatsModels.width(p::ThresholdTerm) = 1 + +function StatsModels.modelcols(p::ThresholdTerm, d::NamedTuple) + col = modelcols(p.term, d) + reduce(hcat, [col.^n for n in 1:p.deg]) +end \ No newline at end of file