aoc

My solutions for the Advent of Code
git clone https://git.tronto.net/aoc
Download | Log | Files | Refs | README

commit 0ddc43cd6f4fd545f78fb00f7a1c55801afae723
parent 1bdeb79ca58b40b2f1e50428177d07ee58708a85
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date:   Mon, 25 Dec 2023 12:14:15 +0100

Merry Christmas!

Diffstat:
A2023/25/25a.c | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2023/25/e | 3229+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 3324 insertions(+), 0 deletions(-)

diff --git a/2023/25/25a.c b/2023/25/25a.c @@ -0,0 +1,95 @@ +#include <inttypes.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define N 1500 +#define M 15000 +#define MIN(x,y) ((x)<(y)?(x):(y)) +#define ischar(c) (c >= 'a' && c <= 'z') + +typedef struct { + int nout, out[N]; + char s[4], outc[N][4]; +} node_t; + +bool visited[N]; +char *buf, line[N][N]; +int n, nother, c[N][N], f[N][N]; +node_t m[N]; + +int findm(char *s) { + for (int k = 0; k < n; k++) + if (m[k].s[0] == s[0] && m[k].s[1] == s[1] && m[k].s[2] == s[2]) + return k; + return n; +} + +void resetfc(void) { + for (int i = 0; i < n; i++) + for (int j = 0; j < m[i].nout; j++) + c[i][m[i].out[j]] = 1; + for (int i = 0; i < n; i++) + memset(f[i], 0, N * sizeof(int)); +} + +bool dfs(int v, int t) { + if (v == t) return true; + if (visited[v]) return false; + visited[v] = true; + for (int i = 0; i < m[v].nout; i++) { + int u = m[v].out[i]; + if (c[v][u] == 0) continue; + c[v][u]--; + c[u][v]++; + f[v][u]++; + if (dfs(u, t)) return true; + c[v][u]++; + c[u][v]--; + f[v][u]--; + } + return false; +} + +bool residualpath(int s, int t) { + memset(visited, 0, N * sizeof(bool)); + return dfs(s, t); +} + +/* Ford-Fulkerson */ +bool flowatmost(int s, int t, int k) { + int flow; + resetfc(); + for (flow = 0; flow <= k && residualpath(s, t); flow++) ; + return flow <= k; +} + +int main() { + for (n = 0; (buf = fgets(line[n], N, stdin)) != NULL; n++) { + for (int i = 0; ischar(*buf); m[n].s[i++] = *(buf++)) ; + for (int i = 0; *buf != '\n'; i++) { + while (!ischar(*buf)) buf++; + for (int j = 0; ischar(*buf); m[n].outc[i][j++] = *(buf++)) ; + } + } + + for (int i = 0; i < n; i++) { + for (int j = 0; m[i].outc[j][0]; j++) { + int k = findm(m[i].outc[j]); + m[i].out[m[i].nout++] = k; + m[k].out[m[k].nout++] = i; + if (k == n) { + for (int k = 0; m[i].outc[j][k]; k++) + m[n].s[k] = m[i].outc[j][k]; + n++; + } + } + } + + for (int t = 1; t < n; t++) + if (flowatmost(0, t, 3)) nother++; + + printf("%d (%d %d)\n", nother * (n-nother), nother, n-nother); + return 0; +} diff --git a/2023/25/e b/2023/25/e @@ -0,0 +1,3229 @@ +0 1117 +0 16 +0 60 +0 245 +1 1172 +1 66 +1 156 +1 389 +1 816 +2 438 +2 1173 +2 713 +2 828 +3 115 +3 872 +3 818 +3 317 +3 581 +4 225 +4 232 +4 263 +4 655 +5 1174 +5 250 +5 287 +5 843 +6 1175 +6 14 +6 496 +6 119 +6 603 +7 111 +7 678 +7 791 +7 673 +8 1176 +8 764 +8 760 +8 1177 +8 1178 +9 1025 +9 71 +9 371 +9 783 +10 1179 +10 429 +10 519 +10 877 +11 758 +11 95 +11 1180 +11 1040 +11 931 +11 190 +12 352 +12 1181 +12 210 +12 624 +13 502 +13 1182 +13 41 +13 316 +14 399 +14 52 +14 735 +15 704 +15 203 +15 753 +15 1143 +16 483 +16 259 +16 282 +16 487 +16 890 +17 1183 +17 50 +17 111 +17 124 +17 305 +17 451 +18 869 +18 80 +18 560 +18 1167 +19 188 +19 173 +19 788 +19 1041 +20 1184 +20 113 +20 1185 +20 288 +21 195 +21 1186 +21 586 +21 519 +22 1187 +22 1188 +22 821 +22 1055 +22 1189 +22 715 +23 945 +23 320 +23 636 +23 616 +23 1168 +23 1190 +24 620 +24 900 +24 1131 +24 1160 +25 1191 +25 1192 +25 167 +25 241 +26 185 +26 373 +26 1193 +26 119 +26 687 +27 683 +27 907 +27 193 +27 1194 +27 605 +27 1152 +28 78 +28 561 +28 317 +28 363 +29 1195 +29 1196 +29 1111 +29 1197 +30 1198 +30 96 +30 764 +30 1093 +31 989 +31 884 +31 849 +31 1199 +32 1174 +32 468 +32 1200 +32 1201 +32 1202 +33 1203 +33 996 +33 1204 +33 350 +33 499 +34 1205 +34 559 +34 1014 +34 925 +34 1206 +34 541 +34 671 +35 400 +35 560 +35 898 +35 1036 +35 1114 +36 1207 +36 613 +36 804 +36 1063 +37 368 +37 1208 +37 241 +37 1209 +38 1105 +38 1210 +38 84 +38 1103 +39 1211 +39 77 +39 341 +39 395 +40 168 +40 1049 +40 1159 +40 616 +41 396 +41 878 +41 937 +42 1212 +42 80 +42 675 +42 1116 +43 1213 +43 352 +43 926 +43 994 +44 274 +44 1214 +44 391 +44 562 +45 1215 +45 663 +45 531 +45 978 +45 979 +46 998 +46 739 +46 487 +46 894 +47 1087 +47 776 +47 919 +47 974 +48 777 +48 1216 +48 285 +48 234 +49 1217 +49 1218 +49 187 +49 1160 +50 1219 +50 346 +50 601 +50 635 +51 216 +51 883 +51 1220 +51 464 +52 783 +52 1221 +52 766 +52 1222 +52 98 +53 763 +53 1223 +53 459 +53 955 +54 136 +54 1224 +54 184 +54 1054 +55 656 +55 431 +55 516 +55 884 +56 1002 +56 673 +56 982 +56 161 +57 660 +57 997 +57 792 +57 863 +58 1175 +58 333 +58 419 +58 669 +59 1225 +59 520 +59 658 +59 977 +60 541 +60 68 +60 582 +61 1172 +61 1226 +61 254 +61 170 +62 1135 +62 556 +62 965 +62 1077 +63 1227 +63 748 +63 257 +63 354 +64 1137 +64 677 +64 377 +64 796 +65 1228 +65 225 +65 908 +65 426 +65 1124 +66 968 +66 1229 +66 997 +66 270 +66 862 +66 205 +67 1230 +67 741 +67 961 +67 1107 +68 266 +68 82 +68 509 +68 540 +68 644 +69 1231 +69 240 +69 1160 +69 1082 +70 460 +70 1044 +70 793 +70 651 +71 577 +71 402 +71 495 +72 1131 +72 1232 +72 1008 +72 343 +73 1233 +73 620 +73 181 +73 1054 +74 1234 +74 323 +74 846 +74 862 +75 626 +75 1198 +75 1235 +75 1236 +76 1237 +76 569 +76 681 +76 714 +77 742 +77 471 +77 1211 +77 340 +77 870 +77 506 +78 1238 +78 1239 +78 213 +79 613 +79 1240 +79 527 +79 548 +80 438 +80 1048 +81 949 +81 840 +81 106 +81 1241 +82 532 +82 190 +82 629 +83 570 +83 1237 +83 90 +83 670 +84 1242 +84 862 +84 1022 +85 1243 +85 372 +85 413 +85 875 +85 1169 +86 826 +86 120 +86 906 +86 107 +87 887 +87 848 +87 974 +87 1040 +88 645 +88 1244 +88 904 +88 203 +89 1235 +89 461 +89 478 +89 573 +89 716 +89 832 +90 1245 +90 192 +90 182 +90 475 +91 213 +91 1234 +91 444 +91 1143 +92 434 +92 586 +92 1246 +92 123 +92 333 +92 791 +92 888 +93 1247 +93 1248 +93 269 +93 573 +94 1249 +94 619 +94 743 +94 928 +94 1074 +95 723 +95 155 +95 339 +96 1250 +96 266 +96 1060 +97 1251 +97 1252 +97 267 +97 941 +98 577 +98 1104 +98 737 +99 1031 +99 362 +99 917 +99 991 +100 248 +100 281 +100 318 +100 698 +101 841 +101 467 +101 637 +101 719 +102 1253 +102 358 +102 427 +102 1072 +103 1254 +103 928 +103 1255 +103 385 +103 1256 +103 1064 +104 1025 +104 216 +104 504 +104 1041 +105 343 +105 935 +105 363 +105 731 +106 1257 +106 134 +106 1091 +107 1258 +107 561 +107 1259 +107 1041 +107 1119 +108 853 +108 265 +108 877 +108 973 +109 914 +109 888 +109 1223 +109 1260 +110 658 +110 1261 +110 1147 +110 1113 +110 236 +110 337 +111 1078 +111 1082 +112 286 +112 1111 +112 294 +112 1091 +113 1212 +113 245 +113 976 +114 689 +114 198 +114 448 +114 678 +115 984 +115 564 +115 1092 +116 787 +116 687 +116 1262 +116 1263 +116 834 +117 271 +117 1264 +117 773 +117 737 +118 1265 +118 1266 +118 208 +118 1020 +119 654 +119 1102 +120 1183 +120 711 +120 729 +121 993 +121 845 +121 568 +121 1103 +122 674 +122 491 +122 659 +122 1142 +123 724 +123 1210 +123 631 +124 1267 +124 346 +124 1092 +125 714 +125 1028 +125 340 +125 672 +126 1268 +126 1269 +126 256 +126 271 +126 883 +127 1270 +127 781 +127 1271 +127 249 +127 304 +128 474 +128 1272 +128 317 +128 522 +128 883 +129 1226 +129 362 +129 730 +129 1134 +130 189 +130 1267 +130 305 +130 370 +131 323 +131 728 +131 733 +131 1137 +132 331 +132 1273 +132 1250 +132 866 +133 904 +133 748 +133 1274 +133 387 +133 797 +134 378 +134 924 +134 243 +134 247 +135 739 +135 328 +135 709 +135 296 +135 800 +136 1222 +136 343 +136 490 +136 583 +136 1103 +137 770 +137 191 +137 775 +137 368 +138 180 +138 629 +138 864 +138 1015 +139 1275 +139 861 +139 612 +139 409 +140 1276 +140 912 +140 347 +140 1277 +141 1278 +141 720 +141 1062 +141 662 +141 928 +141 1098 +142 1068 +142 341 +142 579 +142 969 +142 1139 +143 855 +143 1279 +143 268 +143 610 +143 1057 +144 1172 +144 253 +144 398 +144 677 +144 796 +144 944 +145 1280 +145 1281 +145 231 +145 437 +146 798 +146 723 +146 987 +146 275 +146 675 +146 928 +147 1282 +147 705 +147 873 +147 1040 +148 1283 +148 1284 +148 167 +148 614 +149 204 +149 1188 +149 376 +149 416 +149 1109 +150 392 +150 386 +150 626 +150 1171 +151 818 +151 614 +151 611 +151 1119 +152 1193 +152 724 +152 759 +152 930 +152 1088 +152 1137 +153 841 +153 807 +153 813 +153 1077 +154 717 +154 889 +154 170 +154 1082 +155 540 +155 282 +155 334 +155 423 +155 580 +155 990 +156 1285 +156 876 +156 1094 +157 556 +157 1286 +157 711 +157 737 +158 1287 +158 1288 +158 892 +158 1141 +159 1262 +159 821 +159 419 +159 601 +160 1164 +160 309 +160 1289 +160 1290 +160 1291 +160 644 +161 241 +161 465 +161 655 +161 1056 +162 1292 +162 222 +162 439 +162 903 +163 1014 +163 383 +163 520 +163 873 +163 1158 +164 1044 +164 1215 +164 885 +164 978 +164 1093 +165 1293 +165 183 +165 202 +165 411 +166 929 +166 556 +166 522 +166 762 +167 1294 +167 270 +167 647 +168 1184 +168 1295 +168 1281 +169 1296 +169 1025 +169 783 +169 952 +169 1195 +170 365 +170 480 +171 285 +171 486 +171 1068 +171 386 +171 454 +171 716 +172 922 +172 1073 +172 1085 +172 291 +173 1157 +173 1021 +173 677 +174 1297 +174 1298 +174 291 +174 528 +175 1299 +175 233 +175 585 +175 694 +176 1212 +176 1300 +176 517 +176 671 +177 479 +177 1083 +177 701 +177 1051 +178 1301 +178 1302 +178 1205 +178 896 +179 1303 +179 799 +179 475 +179 1023 +180 859 +180 239 +180 359 +180 1093 +181 1101 +181 1304 +181 213 +182 364 +182 234 +182 1305 +182 999 +183 1306 +183 666 +183 294 +184 1208 +184 1145 +184 1010 +185 1286 +185 414 +185 975 +186 1269 +186 1307 +186 572 +186 464 +187 1308 +187 447 +187 807 +187 1050 +188 1309 +188 1310 +188 1101 +189 1224 +189 1010 +189 701 +189 1061 +190 1311 +190 1312 +190 1120 +190 215 +190 1007 +191 1313 +191 938 +191 1000 +191 1039 +192 1314 +192 932 +192 1042 +193 540 +193 272 +193 539 +194 595 +194 919 +194 989 +194 1036 +195 368 +195 273 +195 667 +195 771 +196 1239 +196 1025 +196 1224 +196 975 +197 1315 +197 957 +197 576 +197 800 +198 1234 +198 899 +198 982 +199 602 +199 1316 +199 898 +199 1042 +200 267 +200 1317 +200 479 +200 1192 +200 306 +200 1107 +201 1294 +201 425 +201 453 +201 988 +202 735 +202 1318 +202 1259 +203 805 +203 1143 +204 561 +204 209 +204 728 +205 1319 +205 508 +205 624 +206 1320 +206 1184 +206 233 +206 1288 +207 1015 +207 334 +207 871 +207 928 +207 1098 +208 1207 +208 1064 +208 432 +208 636 +209 1081 +209 1083 +209 420 +210 639 +210 564 +210 1050 +211 1321 +211 315 +211 782 +211 914 +212 1322 +212 381 +212 614 +212 631 +213 617 +213 420 +213 1082 +214 1109 +214 300 +214 754 +214 1145 +215 1323 +215 1194 +215 462 +215 580 +216 1324 +216 1260 +216 751 +216 922 +217 531 +217 607 +217 1182 +217 940 +218 822 +218 224 +218 383 +218 1064 +219 1252 +219 1267 +219 1191 +219 494 +220 322 +220 1191 +220 684 +220 1285 +220 737 +221 1265 +221 342 +221 386 +221 524 +221 532 +221 1042 +222 394 +222 1305 +222 890 +222 1325 +222 380 +223 1265 +223 337 +223 516 +223 936 +224 810 +224 423 +224 931 +225 825 +225 371 +225 625 +226 952 +226 1253 +226 997 +226 581 +227 507 +227 476 +227 1326 +227 574 +227 1147 +227 578 +228 1327 +228 1298 +228 964 +228 1006 +228 1073 +228 1135 +229 410 +229 880 +229 654 +229 503 +230 1210 +230 336 +230 1304 +230 457 +230 567 +230 807 +230 840 +230 1006 +231 1174 +231 351 +231 699 +231 928 +232 362 +232 661 +232 701 +232 956 +233 1328 +233 335 +233 790 +233 1114 +234 1190 +234 738 +234 1329 +234 1048 +235 1238 +235 1183 +235 747 +235 1022 +236 989 +236 1330 +236 269 +237 1289 +237 1331 +237 1332 +237 752 +238 1333 +238 845 +238 495 +238 1334 +239 1237 +239 705 +239 1093 +240 724 +240 1008 +240 377 +241 330 +241 1050 +242 1021 +242 1274 +242 1310 +242 381 +242 1072 +243 770 +243 688 +243 627 +244 427 +244 1131 +244 984 +244 763 +245 1074 +245 799 +245 349 +245 1113 +245 409 +246 1335 +246 973 +246 1143 +246 299 +247 1336 +247 813 +247 702 +247 1133 +248 967 +248 281 +248 667 +249 928 +249 864 +249 1236 +250 1331 +250 1185 +250 1128 +251 786 +251 1266 +251 998 +251 726 +252 1125 +252 392 +252 836 +252 1108 +252 275 +253 1187 +253 751 +253 608 +253 918 +253 308 +254 1337 +254 1192 +254 425 +255 1338 +255 461 +255 740 +255 1099 +256 1105 +256 440 +256 1000 +257 1196 +257 459 +257 555 +257 633 +257 676 +258 497 +258 908 +258 982 +258 727 +259 1325 +259 1110 +259 1245 +259 275 +259 1159 +260 957 +260 527 +260 1339 +260 607 +260 1153 +261 1046 +261 475 +261 831 +261 1023 +262 1340 +262 1140 +262 758 +262 1070 +263 397 +263 505 +263 942 +264 367 +264 1045 +264 1086 +264 1129 +265 1341 +265 504 +265 1137 +266 1342 +266 1012 +267 1343 +267 1154 +268 570 +268 285 +268 1344 +268 542 +268 1126 +269 1199 +269 628 +269 517 +269 898 +270 1191 +270 1345 +271 1224 +271 536 +272 794 +272 390 +272 342 +272 798 +273 943 +273 482 +273 816 +274 1346 +274 695 +274 533 +274 563 +275 1240 +275 764 +276 1303 +276 1207 +276 1320 +276 795 +277 403 +277 1333 +277 1039 +277 653 +278 561 +278 1347 +278 1021 +278 1161 +279 371 +279 352 +279 730 +279 935 +280 414 +280 1348 +280 706 +280 965 +281 1017 +281 712 +282 357 +282 832 +283 616 +283 1120 +283 643 +283 1291 +283 1344 +283 473 +283 986 +284 1349 +284 1242 +284 679 +284 319 +285 1350 +285 847 +286 1189 +286 727 +286 862 +287 765 +287 1178 +287 1062 +287 1351 +287 980 +288 1212 +288 498 +288 569 +289 1267 +289 323 +289 377 +289 627 +290 862 +290 543 +290 571 +290 1102 +291 704 +291 995 +291 466 +292 1185 +292 1352 +292 622 +292 1043 +293 843 +293 1353 +293 842 +293 391 +293 463 +294 917 +294 1077 +295 1038 +295 754 +295 1264 +295 637 +295 1050 +296 739 +296 585 +296 349 +297 1175 +297 1354 +297 773 +297 1059 +298 1337 +298 1355 +298 457 +298 797 +299 1356 +299 1357 +299 1358 +299 961 +300 835 +300 599 +300 826 +300 1019 +300 1129 +301 1340 +301 612 +301 437 +301 947 +302 1028 +302 1044 +302 549 +302 933 +303 556 +303 1189 +303 322 +303 451 +304 1198 +304 1301 +304 720 +304 1329 +305 436 +305 1218 +305 787 +306 416 +306 429 +306 1160 +307 1038 +307 1224 +307 728 +307 730 +308 553 +308 745 +308 710 +309 596 +309 380 +309 445 +310 723 +310 596 +310 1279 +310 463 +311 1204 +311 327 +311 933 +311 934 +312 650 +312 1359 +312 1325 +312 475 +313 1315 +313 355 +313 472 +313 894 +314 741 +314 373 +314 1188 +314 635 +314 558 +314 1076 +315 425 +315 1233 +315 1119 +315 435 +316 1106 +316 499 +316 638 +317 353 +318 497 +318 929 +318 353 +318 519 +318 812 +319 874 +319 568 +319 1076 +320 566 +320 576 +320 939 +320 999 +320 1130 +321 840 +321 1360 +321 1150 +321 1361 +321 1169 +322 682 +322 761 +323 750 +323 941 +324 615 +324 1046 +324 1362 +324 802 +325 1363 +325 524 +325 794 +325 832 +326 1316 +326 1364 +326 1342 +326 989 +326 1001 +327 694 +327 507 +327 395 +328 1033 +328 1353 +328 621 +329 1292 +329 388 +329 1001 +329 1158 +330 727 +330 1244 +330 1365 +330 1356 +331 1366 +331 990 +331 1042 +332 889 +332 1336 +332 606 +332 1019 +333 1232 +333 403 +333 1274 +333 1306 +334 799 +334 1320 +335 1367 +335 612 +335 618 +335 1071 +336 1368 +336 588 +336 661 +337 1320 +337 986 +338 1029 +338 486 +338 525 +338 697 +339 902 +339 1369 +339 498 +340 1176 +340 651 +341 744 +341 1370 +341 518 +341 395 +341 607 +342 391 +342 438 +343 419 +343 523 +344 689 +344 1238 +344 374 +344 640 +344 915 +345 1371 +345 705 +345 1372 +345 836 +346 874 +346 1251 +346 1031 +347 1026 +347 1080 +347 646 +348 1100 +348 437 +348 579 +348 1060 +349 1340 +349 1373 +350 575 +350 1075 +350 1033 +350 1374 +351 527 +351 589 +351 824 +351 1147 +352 1137 +352 1156 +353 1017 +353 812 +354 1209 +354 538 +354 835 +354 1122 +355 1121 +355 1287 +355 472 +356 1375 +356 538 +356 492 +356 362 +356 736 +357 487 +357 1303 +357 806 +358 466 +358 1197 +358 993 +359 408 +359 933 +359 1152 +360 1223 +360 1376 +360 805 +360 1233 +360 814 +361 1377 +361 883 +361 717 +361 1232 +362 1210 +363 659 +363 1222 +363 1378 +364 1372 +364 1367 +364 1129 +365 1052 +365 1379 +365 1348 +365 955 +366 1321 +366 1380 +366 497 +366 819 +366 1304 +366 1154 +366 772 +367 1281 +367 539 +367 570 +368 599 +368 1156 +369 1310 +369 647 +369 809 +369 1124 +370 813 +370 588 +370 1102 +371 534 +371 1368 +371 1381 +371 655 +371 659 +372 630 +372 956 +372 750 +373 1018 +373 948 +374 722 +374 1382 +374 522 +375 1249 +375 847 +375 1029 +375 738 +376 930 +376 1009 +376 792 +377 1294 +377 1150 +378 837 +378 729 +378 1081 +379 769 +379 443 +379 616 +379 1166 +380 1182 +380 962 +381 1383 +381 949 +381 444 +382 1258 +382 1306 +382 1375 +382 448 +382 553 +382 757 +383 1384 +383 742 +383 545 +384 1322 +384 1219 +384 601 +384 983 +385 463 +385 1374 +385 1024 +386 1063 +387 1324 +387 773 +387 1097 +388 1176 +388 1299 +388 1040 +389 1157 +389 1077 +389 1082 +390 594 +390 989 +390 539 +390 470 +390 580 +391 1256 +391 549 +392 1271 +392 1326 +392 452 +393 1385 +393 1386 +393 869 +393 433 +393 1003 +394 716 +394 683 +394 551 +395 1328 +396 1387 +396 1261 +396 1388 +396 442 +397 399 +397 1321 +397 601 +398 821 +398 778 +398 899 +399 1257 +399 708 +400 1323 +400 424 +400 780 +401 1343 +401 985 +401 1258 +401 1104 +401 1389 +402 1284 +402 814 +402 968 +403 1390 +403 508 +404 652 +404 893 +404 431 +404 499 +404 946 +405 857 +405 820 +405 1391 +405 1392 +406 707 +406 1393 +406 823 +406 1352 +406 784 +406 954 +407 1354 +407 1375 +407 1251 +407 526 +408 1394 +408 855 +408 774 +409 1235 +409 469 +410 1059 +410 1381 +410 1286 +411 992 +411 807 +411 1286 +411 1390 +411 712 +411 635 +411 736 +412 1368 +412 1297 +412 453 +412 480 +412 737 +412 1088 +413 858 +413 668 +413 835 +414 906 +414 1222 +414 1318 +415 1193 +415 571 +415 645 +415 706 +416 838 +416 482 +416 665 +417 1387 +417 461 +417 1033 +417 1295 +418 1047 +418 1182 +418 746 +418 1125 +419 1395 +420 1382 +420 1101 +421 1396 +421 1272 +421 971 +421 995 +422 1047 +422 1302 +422 1216 +422 1397 +423 1398 +423 1399 +424 1202 +424 1295 +424 714 +424 827 +425 1390 +426 1400 +426 1260 +426 588 +426 1161 +427 1197 +427 1165 +427 660 +428 551 +428 1314 +428 576 +428 1342 +428 756 +429 1401 +429 1354 +429 972 +430 1299 +430 454 +430 578 +430 785 +431 939 +431 634 +431 1167 +431 804 +432 1291 +432 1200 +432 644 +433 1351 +433 1384 +433 455 +434 1348 +434 701 +434 840 +435 759 +435 1243 +435 698 +436 1402 +436 494 +436 920 +436 1082 +437 1141 +437 1329 +438 1289 +439 515 +439 718 +439 1138 +440 835 +440 1238 +440 1186 +441 1100 +441 525 +441 609 +441 977 +442 1164 +442 891 +442 843 +442 847 +442 999 +443 1403 +443 512 +443 1098 +443 1163 +444 606 +444 632 +444 1019 +445 755 +445 486 +445 823 +446 502 +446 699 +446 1116 +446 478 +447 599 +447 590 +447 751 +447 1259 +447 1067 +448 684 +448 1307 +448 1404 +449 1378 +449 1389 +449 459 +449 673 +450 1130 +450 643 +450 1116 +450 769 +451 1343 +451 846 +452 1405 +452 456 +452 1276 +453 623 +453 648 +454 1398 +454 521 +455 1387 +455 456 +455 509 +456 864 +456 1215 +456 1299 +456 774 +456 966 +457 526 +457 938 +458 1383 +458 1094 +458 963 +458 504 +459 1406 +459 796 +460 1203 +460 619 +460 774 +461 1279 +462 1362 +462 605 +462 764 +463 1316 +463 892 +464 1355 +464 534 +464 572 +465 1127 +465 1298 +465 792 +466 1156 +466 535 +467 523 +467 942 +467 1160 +468 1407 +468 502 +468 1026 +469 537 +469 1247 +469 610 +470 1200 +470 692 +470 509 +471 530 +471 839 +471 1049 +472 1136 +472 1140 +472 932 +473 1099 +473 1089 +473 521 +474 1322 +474 1293 +474 727 +476 1353 +476 954 +476 1057 +477 623 +477 496 +477 1345 +477 972 +478 612 +478 1273 +478 811 +479 722 +479 917 +480 593 +480 1321 +481 1297 +481 1296 +481 1233 +481 1133 +482 1052 +482 733 +482 814 +483 927 +483 998 +483 781 +483 582 +484 881 +484 1408 +484 1349 +484 588 +485 1257 +485 1221 +485 1009 +485 504 +486 1367 +486 870 +487 866 +488 885 +488 705 +488 817 +488 836 +489 933 +489 691 +489 1275 +489 879 +489 1373 +489 777 +490 922 +490 567 +490 641 +491 1409 +491 895 +491 1396 +492 1208 +492 1151 +492 772 +493 546 +493 779 +493 849 +493 951 +494 1018 +494 872 +494 669 +495 1132 +495 1002 +495 1221 +496 1406 +496 598 +496 863 +497 1307 +498 1013 +498 864 +498 794 +499 979 +500 1171 +500 1071 +500 560 +500 852 +501 912 +501 544 +501 707 +501 1086 +502 1326 +502 732 +503 982 +503 825 +503 1217 +504 1231 +505 1229 +505 1037 +505 1011 +506 1058 +506 525 +506 1146 +507 1236 +507 1004 +508 1313 +508 984 +508 1228 +509 887 +509 658 +510 1410 +510 1141 +510 1411 +510 629 +511 1279 +511 1392 +511 976 +511 804 +512 1314 +512 1180 +512 1020 +513 1266 +513 1166 +513 1205 +513 954 +514 1208 +514 1347 +514 623 +514 1067 +515 1026 +515 799 +515 565 +516 1346 +516 1174 +516 563 +516 842 +516 867 +517 589 +517 865 +518 1312 +518 1029 +518 743 +518 806 +519 553 +520 1205 +520 1045 +520 744 +521 905 +521 1363 +522 1018 +523 930 +523 577 +524 1385 +524 579 +525 1412 +526 1241 +526 1073 +527 752 +528 841 +528 679 +528 1187 +529 1244 +529 1317 +529 1319 +529 661 +529 772 +530 1277 +530 615 +530 1149 +531 1254 +531 578 +531 811 +532 683 +532 755 +532 842 +533 1270 +533 589 +533 966 +534 1238 +534 655 +535 639 +535 1413 +535 1231 +535 782 +536 679 +536 1165 +536 698 +536 1118 +537 1216 +537 1394 +537 830 +537 1128 +538 1105 +538 1213 +539 909 +539 1023 +540 1320 +541 1171 +541 1184 +542 1212 +542 1199 +542 1201 +543 961 +543 1414 +543 1327 +543 1009 +544 1162 +544 557 +544 573 +544 1120 +545 1030 +545 1303 +545 742 +546 1415 +546 565 +546 755 +546 937 +547 1157 +547 1135 +547 1039 +547 964 +548 1015 +548 1028 +548 721 +548 962 +549 1416 +549 607 +550 1334 +550 942 +550 1006 +550 1084 +551 1316 +551 694 +552 825 +552 1417 +552 1041 +552 1092 +553 703 +554 1110 +554 1071 +554 1106 +554 1180 +555 930 +555 1218 +555 1257 +556 1334 +557 1418 +557 811 +557 1057 +558 1419 +558 783 +558 1253 +558 1317 +559 1420 +559 713 +559 749 +559 953 +560 1421 +561 1334 +562 1108 +562 613 +562 1422 +562 628 +562 1069 +563 789 +563 685 +563 1314 +564 906 +564 731 +565 815 +565 699 +566 1362 +566 820 +566 1289 +567 1111 +567 770 +568 1218 +568 838 +568 693 +569 1300 +569 1302 +570 671 +571 1413 +571 767 +572 1396 +572 751 +572 766 +572 1052 +572 1101 +573 592 +574 785 +574 1206 +574 1290 +575 1311 +575 628 +575 969 +576 1332 +576 1411 +577 1423 +577 853 +577 1150 +578 1290 +579 950 +580 1282 +581 674 +581 750 +582 1326 +582 916 +583 1145 +583 584 +583 914 +583 1016 +584 1229 +584 1051 +584 657 +585 882 +585 1095 +585 1126 +586 1192 +586 1424 +586 1264 +586 854 +587 1151 +587 712 +587 1181 +587 985 +587 633 +588 918 +588 600 +588 1298 +588 1050 +589 1180 +590 1283 +590 1322 +590 1175 +591 1420 +591 743 +591 861 +591 892 +592 927 +592 839 +592 690 +592 707 +593 1083 +593 872 +593 641 +594 1275 +594 793 +594 1086 +595 1261 +595 844 +595 1043 +595 1087 +596 1374 +596 697 +597 1381 +597 812 +597 1318 +597 611 +598 984 +598 1408 +598 1335 +598 797 +599 653 +600 710 +600 1131 +600 702 +600 944 +601 875 +601 729 +601 1378 +601 938 +602 1214 +602 849 +602 977 +603 1083 +603 778 +603 1424 +604 1351 +604 626 +604 756 +604 1163 +605 749 +605 740 +606 1179 +606 679 +606 1122 +607 700 +608 1111 +608 1233 +608 913 +609 1087 +609 1385 +609 656 +610 1190 +610 774 +611 719 +611 1361 +612 986 +613 1398 +614 1404 +614 994 +615 1364 +615 1185 +615 634 +615 752 +616 1071 +617 1226 +617 889 +617 949 +618 849 +618 893 +618 950 +619 1185 +619 1292 +619 726 +619 1012 +620 1179 +620 717 +620 877 +621 1248 +621 1152 +621 1425 +622 1426 +622 1351 +622 903 +622 1013 +623 837 +623 1355 +624 1161 +624 1272 +625 1360 +625 664 +625 727 +626 1292 +626 887 +626 1290 +627 788 +627 880 +627 1230 +628 785 +629 1295 +629 1071 +630 688 +630 837 +630 1022 +631 747 +631 911 +632 929 +632 1242 +632 693 +632 665 +633 1011 +633 750 +634 752 +634 1427 +635 1284 +636 1407 +636 1391 +637 1017 +637 1267 +637 647 +638 1281 +638 1397 +638 987 +639 1239 +639 1005 +640 1348 +640 886 +640 1220 +641 1390 +641 1019 +642 1397 +642 1405 +642 1201 +642 1170 +643 656 +643 946 +644 1325 +644 739 +645 1109 +645 965 +646 873 +646 1346 +646 1058 +646 1235 +647 1179 +648 1262 +648 1402 +648 1428 +649 765 +649 1429 +649 827 +649 1096 +650 1235 +650 1254 +650 1430 +651 1384 +651 905 +652 1106 +652 1427 +652 774 +653 1334 +653 796 +653 944 +654 938 +654 1379 +654 1309 +656 1331 +657 703 +657 717 +657 805 +658 1391 +658 756 +659 1383 +659 1408 +659 881 +660 733 +660 1134 +661 1409 +662 1214 +662 1177 +662 1065 +663 1386 +663 1403 +663 969 +664 797 +664 1144 +664 926 +665 1307 +665 753 +665 734 +666 1428 +666 673 +666 771 +667 1382 +667 711 +668 1238 +668 1419 +668 1337 +669 1262 +669 678 +669 702 +670 901 +670 725 +670 833 +671 686 +671 921 +672 1366 +672 680 +672 1079 +674 1293 +674 1037 +675 1416 +675 686 +676 1008 +676 1195 +676 1000 +677 1431 +677 808 +678 1234 +679 1408 +680 1166 +680 822 +680 950 +680 959 +681 738 +681 1371 +681 1415 +681 1190 +682 1319 +682 1327 +682 949 +683 1291 +683 1099 +684 1345 +684 1376 +685 1254 +685 1044 +685 871 +686 1351 +686 1100 +687 906 +687 1324 +687 1341 +688 1380 +688 1084 +689 1432 +689 1309 +690 769 +690 1117 +690 718 +691 1248 +691 1373 +691 1312 +691 852 +692 931 +692 795 +692 820 +693 1382 +693 872 +694 1385 +694 1300 +694 1178 +695 1387 +695 1342 +695 721 +696 1062 +696 1433 +696 1311 +696 934 +696 1126 +697 1434 +697 1089 +698 1294 +698 1085 +699 979 +700 1265 +700 960 +700 1425 +701 1413 +701 1002 +701 733 +702 1341 +703 1306 +703 1181 +703 1039 +704 1239 +704 1264 +705 1392 +706 841 +706 1431 +707 1194 +707 1245 +707 916 +708 1389 +708 922 +708 1419 +709 1206 +709 1247 +709 779 +709 1125 +710 1218 +710 1059 +711 1181 +711 1324 +711 888 +712 1365 +712 719 +712 1107 +713 1029 +713 1353 +713 1159 +714 1089 +715 717 +715 1435 +715 1358 +715 1127 +716 867 +716 1167 +718 1433 +718 1372 +719 1243 +719 1284 +719 834 +719 1377 +720 1236 +720 879 +721 1364 +721 1372 +722 1009 +722 924 +723 1288 +723 1422 +723 1044 +724 1267 +725 856 +725 1405 +725 844 +725 824 +726 781 +726 960 +726 806 +727 994 +728 772 +729 886 +729 829 +729 948 +730 1263 +730 975 +731 1435 +731 983 +732 1429 +732 815 +732 1040 +733 1252 +734 1360 +734 1375 +734 1118 +735 1436 +735 1150 +736 1260 +736 889 +736 1144 +738 1099 +739 859 +740 1403 +740 868 +740 865 +741 988 +741 1156 +742 1437 +742 1089 +743 1303 +744 1249 +744 827 +745 991 +745 1380 +745 762 +746 1141 +746 1344 +746 784 +747 1213 +747 1217 +747 973 +748 1272 +748 803 +748 911 +749 1362 +749 1256 +751 930 +752 1167 +753 1376 +753 1317 +754 1336 +754 845 +755 1121 +756 957 +757 1414 +757 1135 +757 838 +757 972 +758 1422 +758 871 +759 782 +759 913 +760 996 +760 779 +760 902 +761 821 +761 935 +761 1252 +762 1423 +762 1165 +763 985 +763 1085 +765 1261 +765 1330 +766 1032 +766 1103 +767 1182 +767 1394 +767 940 +767 1060 +768 1338 +768 1351 +768 1411 +768 1036 +769 1198 +770 1424 +771 1423 +771 1039 +773 1377 +773 1103 +775 1172 +775 1354 +775 778 +775 1156 +776 1367 +776 1004 +776 1159 +777 1437 +777 1240 +778 1432 +779 1430 +779 910 +780 1338 +780 1391 +780 1096 +781 882 +781 1305 +781 1036 +782 1186 +782 1347 +782 1258 +783 1417 +784 1366 +784 953 +784 1048 +785 1148 +786 1374 +786 806 +786 1096 +787 876 +787 911 +788 991 +788 1259 +789 957 +789 1049 +789 868 +790 1126 +790 801 +790 1090 +791 1272 +791 941 +792 1083 +792 1055 +793 1323 +793 1315 +793 910 +794 1287 +794 1359 +794 1204 +795 1429 +795 810 +796 1133 +798 1282 +798 1139 +799 1203 +799 1438 +799 882 +800 1123 +800 1162 +801 1014 +801 810 +801 912 +802 958 +802 1426 +802 1339 +803 1409 +803 1150 +803 813 +804 916 +805 1417 +806 1206 +806 1403 +806 1412 +808 1208 +808 1304 +808 1144 +809 1084 +809 1038 +809 1220 +810 1407 +811 864 +812 1094 +814 1357 +815 945 +815 831 +815 1173 +816 1414 +816 1238 +816 1309 +817 850 +817 1138 +817 833 +818 1376 +818 1333 +819 1244 +819 1179 +819 1241 +820 1415 +820 925 +821 1210 +821 881 +822 1412 +822 1149 +823 1068 +823 1174 +824 1323 +824 1405 +825 1343 +825 1050 +826 1439 +826 1432 +827 1098 +827 1393 +827 1148 +827 1398 +828 873 +828 999 +828 1007 +829 1322 +829 888 +829 1006 +830 1364 +830 879 +830 1012 +831 1399 +831 1237 +831 852 +831 978 +832 1270 +832 1177 +833 1399 +833 1405 +834 1402 +834 1379 +834 956 +836 1350 +837 1172 +838 1313 +839 1215 +839 934 +839 951 +839 1158 +840 1219 +841 1234 +841 1073 +842 1340 +843 1405 +844 1007 +844 1147 +845 1051 +846 981 +846 1313 +846 1322 +847 1194 +847 1371 +848 1410 +848 1087 +848 903 +849 1148 +850 1255 +850 1204 +850 1125 +851 1427 +851 1429 +851 1420 +851 1344 +852 951 +853 1424 +853 968 +854 1308 +854 1283 +854 952 +855 1202 +855 939 +856 1271 +856 1225 +856 885 +857 1299 +857 907 +857 909 +858 967 +858 918 +858 1134 +859 1410 +859 871 +860 1406 +860 1428 +860 961 +860 1067 +861 1256 +861 1168 +863 1097 +863 1246 +865 1339 +865 970 +866 1138 +866 878 +867 1212 +867 937 +868 1330 +868 893 +869 1386 +869 1003 +869 1065 +870 1433 +870 1340 +871 1278 +872 1337 +873 1225 +874 904 +874 876 +875 1082 +875 1091 +876 1229 +877 908 +878 919 +878 1323 +878 910 +879 1249 +879 1066 +880 1395 +880 1436 +881 943 +882 962 +883 1400 +884 1123 +884 1271 +885 1312 +886 1246 +886 1008 +886 1076 +887 1199 +887 1046 +889 967 +890 1280 +890 1033 +891 912 +891 1270 +891 896 +892 1065 +892 1339 +892 1203 +893 1024 +893 1058 +893 1138 +894 1350 +894 936 +895 1246 +895 924 +895 949 +896 1173 +896 1410 +897 1013 +897 1201 +897 1437 +897 1163 +898 1100 +899 1193 +899 1109 +900 1226 +900 1056 +900 1263 +901 1397 +901 1114 +901 1146 +902 923 +902 1290 +903 1339 +903 980 +904 1251 +904 1031 +904 1160 +905 989 +905 1162 +905 1168 +906 1423 +906 1267 +907 1433 +907 1328 +908 1132 +908 920 +909 1115 +909 1328 +909 1113 +910 1042 +911 991 +911 1286 +911 1345 +913 1336 +913 1118 +914 963 +915 1283 +915 1242 +915 1011 +916 1060 +916 1214 +917 1016 +918 1286 +919 1359 +920 1219 +920 993 +921 1043 +921 960 +921 1278 +921 1030 +923 1415 +923 1240 +923 1047 +924 1010 +924 1358 +925 1407 +925 1311 +926 1356 +926 1022 +927 1329 +927 1425 +928 1216 +929 1361 +930 1439 +930 1243 +930 1059 +931 1425 +932 1331 +932 1387 +934 974 +935 1196 +936 1280 +936 1013 +936 1003 +937 946 +937 1007 +939 986 +940 1115 +940 1399 +941 973 +941 1085 +942 1231 +942 1197 +942 1013 +943 1037 +943 1035 +944 1439 +945 1342 +945 1020 +946 1211 +946 1425 +947 1372 +947 1027 +947 1049 +948 1053 +948 1409 +948 1356 +950 1136 +950 1352 +950 1163 +951 1316 +951 1398 +952 1337 +953 1116 +953 1279 +954 1426 +955 1298 +955 1268 +955 1155 +956 1035 +957 1305 +958 1303 +958 1013 +958 1388 +958 1113 +959 1080 +959 976 +959 1148 +960 1028 +960 1280 +962 1036 +962 1090 +963 1161 +963 1112 +964 1406 +964 965 +964 1343 +966 1079 +966 1200 +966 1399 +967 1379 +968 1395 +969 1370 +970 1178 +970 1392 +970 1110 +971 1400 +971 1055 +971 1092 +972 1078 +973 1368 +973 1232 +974 1271 +974 1177 +974 1093 +975 1183 +975 1165 +976 1113 +977 1282 +978 1079 +979 1048 +979 989 +980 1070 +980 1330 +981 1383 +981 1336 +981 1056 +982 1112 +982 1378 +983 1142 +983 1406 +984 1341 +985 1228 +985 1436 +987 1362 +987 1028 +988 1357 +988 1103 +990 1153 +990 1276 +991 1230 +991 1035 +992 1435 +992 1186 +992 1272 +993 1219 +993 1234 +993 1296 +993 1308 +994 1365 +995 1238 +995 1239 +996 1278 +996 1277 +996 1370 +997 1221 +997 1380 +998 1245 +999 1369 +1000 1143 +1001 1273 +1001 1323 +1002 1285 +1003 1266 +1004 1340 +1004 1388 +1004 1020 +1005 1031 +1005 1389 +1005 1112 +1008 1360 +1008 1094 +1009 1324 +1009 1073 +1010 1318 +1011 1085 +1012 1301 +1014 1332 +1015 1027 +1016 1209 +1016 1151 +1017 1223 +1017 1322 +1018 1209 +1019 1348 +1020 1338 +1021 1103 +1022 1156 +1022 1319 +1023 1042 +1023 1302 +1024 1434 +1024 1120 +1025 1419 +1026 1247 +1026 1146 +1026 1149 +1027 1434 +1027 1153 +1029 1367 +1029 1288 +1030 1393 +1030 1074 +1031 1439 +1032 1294 +1032 1347 +1032 1227 +1033 1346 +1033 1058 +1034 1053 +1034 1401 +1034 1354 +1034 1143 +1035 1404 +1035 1259 +1036 1045 +1037 1404 +1038 1227 +1040 1275 +1043 1149 +1044 1236 +1044 1136 +1045 1273 +1045 1363 +1046 1086 +1047 1080 +1047 1130 +1048 1430 +1048 1438 +1049 1255 +1050 1220 +1051 1381 +1052 1335 +1053 1335 +1053 1077 +1054 1268 +1054 1091 +1055 1423 +1056 1196 +1056 1395 +1057 1416 +1057 1174 +1060 1146 +1061 1195 +1061 1310 +1061 1078 +1062 1385 +1063 1130 +1063 1342 +1063 1369 +1064 1202 +1065 1173 +1066 1374 +1066 1125 +1066 1386 +1067 1257 +1067 1142 +1068 1384 +1069 1369 +1069 1426 +1069 1387 +1070 1290 +1070 1418 +1072 1297 +1072 1414 +1072 1228 +1073 1354 +1074 1371 +1075 1387 +1075 1429 +1075 1276 +1076 1285 +1076 1435 +1077 1188 +1078 1401 +1079 1266 +1080 1140 +1081 1296 +1081 1308 +1082 1269 +1083 1263 +1084 1400 +1086 1087 +1086 1438 +1086 1427 +1086 1373 +1088 1122 +1088 1428 +1089 1352 +1089 1140 +1090 1434 +1090 1248 +1092 1365 +1095 1363 +1095 1411 +1095 1330 +1096 1420 +1096 1301 +1097 1349 +1097 1322 +1100 1277 +1102 1423 +1104 1217 +1104 1431 +1105 1293 +1106 1421 +1107 1144 +1108 1303 +1108 1250 +1110 1388 +1111 1187 +1111 1409 +1112 1321 +1114 1250 +1115 1418 +1115 1287 +1117 1437 +1117 1370 +1118 1349 +1118 1124 +1119 1413 +1121 1211 +1121 1421 +1122 1377 +1123 1176 +1123 1421 +1123 1128 +1124 1355 +1127 1269 +1127 1268 +1128 1300 +1129 1394 +1131 1253 +1132 1382 +1132 1358 +1133 1402 +1134 1327 +1134 1241 +1135 1274 +1135 1357 +1135 1356 +1136 1410 +1139 1412 +1139 1393 +1140 1366 +1142 1432 +1142 1361 +1144 1396 +1145 1189 +1146 1359 +1147 1164 +1147 1168 +1148 1225 +1149 1418 +1149 1315 +1151 1401 +1152 1416 +1153 1255 +1153 1438 +1153 1212 +1154 1230 +1154 1417 +1155 1436 +1155 1227 +1155 1414 +1157 1218 +1158 1430 +1160 1333 +1162 1236 +1164 1393 +1166 1339 +1168 1422 +1169 1431 +1169 1213 +1170 1184 +1170 1350 +1170 1332 +1171 1207