From c5fcf7179a83ef65c86c6a4a390029149e518649 Mon Sep 17 00:00:00 2001 From: Franciszek Malinka Date: Tue, 5 Oct 2021 21:49:54 +0200 Subject: Duzy commit ze smieciami --- semestr-4/aisd/pracownia3/check.cpp | 87 +++ semestr-4/aisd/pracownia3/gen.py | 14 + semestr-4/aisd/pracownia3/ocen.sh | 18 + semestr-4/aisd/pracownia3/rozw.cpp | 102 +++ semestr-4/aisd/pracownia3/show_problem.pdf | Bin 0 -> 73936 bytes semestr-4/aisd/pracownia3/wa.outr | 1025 ++++++++++++++++++++++++++++ 6 files changed, 1246 insertions(+) create mode 100644 semestr-4/aisd/pracownia3/check.cpp create mode 100644 semestr-4/aisd/pracownia3/gen.py create mode 100755 semestr-4/aisd/pracownia3/ocen.sh create mode 100644 semestr-4/aisd/pracownia3/rozw.cpp create mode 100644 semestr-4/aisd/pracownia3/show_problem.pdf create mode 100644 semestr-4/aisd/pracownia3/wa.outr (limited to 'semestr-4/aisd/pracownia3') diff --git a/semestr-4/aisd/pracownia3/check.cpp b/semestr-4/aisd/pracownia3/check.cpp new file mode 100644 index 0000000..c9c74d7 --- /dev/null +++ b/semestr-4/aisd/pracownia3/check.cpp @@ -0,0 +1,87 @@ +#include +using namespace std; + +int n, p, m; +int banned[103][3][3]; +int plane[5][10]; + +bool check(int k, int i, int pp) { + for (int kk = k; kk < k + 3; kk++) { + for (int ii = i; ii < i + 3; ii++) { + if (plane[kk][ii] != banned[pp][kk-k][ii-i]) + return false; + } + } + return true; +} + +void debug(int pp) { + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + cout << ((banned[pp][i][j] == 0) ? '.' : 'x'); + } + cout << "\n"; + } +} + +void debug() { + for (int k = 0; k < 5; ++k) { + for (int i = 0; i < n; ++i) { + cout << (plane[k][i] ? 'x' : '.'); + } + cout << "\n"; + } + cout << "\n"; +} + +int ile[1030]; + +int main() { + cin >> n >> p >> m; + for (int i = 0; i < p; i++) { + for (int k = 0; k < 3; k++) { + string s; + cin >> s; + for (int j = 0; j < 3; ++j) { + banned[i][k][j] = (s[j] == 'x'); + } + } + } + int res = 0; + for (int mask = 0; mask < (1<<(5 * n)); mask++) { + for (int k = 0; k < 5; ++k) { + for (int i = 0; i < n; i++) { + plane[k][i] = ((mask & (1 << (k * n + i))) > 0); + } + } + bool dziala = true; + for (int k = 0; k < 3; ++k) { + for (int i = 0; i < n-2; ++i) { + for (int j = 0; j < p; ++j) { + if (check(k, i, j)) { + dziala = false; + break; + } + } + if (!dziala) break; + } + if (!dziala) break; + } + if (dziala) { + res++; + if (res == m) { + res = 0; + } + int mm = 0; + for (int i = 0; i < 5; ++i) { + mm += plane[i][n-2] * (1<<(i*2)); + mm += plane[i][n-1] * (1<<(i*2 + 1)); + } + ile[mm]++; + } + } + for (int i = 0; i < 1024; ++i) { + cout << i << ": " << ile[i] << "\n"; + } + cout << res % m << "\n"; +} \ No newline at end of file diff --git a/semestr-4/aisd/pracownia3/gen.py b/semestr-4/aisd/pracownia3/gen.py new file mode 100644 index 0000000..b572647 --- /dev/null +++ b/semestr-4/aisd/pracownia3/gen.py @@ -0,0 +1,14 @@ +import sys + +mask = int(sys.argv[1]) +print(3, 1, 1000000) + +def f(m): + t = [[0]*3]*3 + for i in range(3): + for j in range(3): + t[i][j] = (m >> (i*3 + j)) & 1 + print('x' if t[i][j] else '.', end='') + print() + +f(mask) \ No newline at end of file diff --git a/semestr-4/aisd/pracownia3/ocen.sh b/semestr-4/aisd/pracownia3/ocen.sh new file mode 100755 index 0000000..593aa67 --- /dev/null +++ b/semestr-4/aisd/pracownia3/ocen.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +make rozw +make check +for i in {0..1023} +do + python3 gen.py $i > t.in + ./rozw < t.in > wa.out + ./check < t.in > t.out + if diff -w wa.out t.out + then + echo $i + echo ok + else + echo nieok + break + fi +done \ No newline at end of file diff --git a/semestr-4/aisd/pracownia3/rozw.cpp b/semestr-4/aisd/pracownia3/rozw.cpp new file mode 100644 index 0000000..7f1a307 --- /dev/null +++ b/semestr-4/aisd/pracownia3/rozw.cpp @@ -0,0 +1,102 @@ +#include +using namespace std; + +const int MAXP = 105; +const int MAXN = 5005; + +int n, p, m; +unordered_set banned; +vector> propagate; +int dp[2][1024 + 10]; + +inline int char_to_bit(char c) { + return c == '.' ? 0 : 1; +} + +void input() { + scanf("%d%d%d", &n, &p, &m); + for (int i = 0; i < p; i++) { + char s[5]; + int value = 0, d = 1; + for (int k = 0; k < 3; k++) { + scanf("%s", s); + value += (char_to_bit(s[0]) + char_to_bit(s[1]) * 2 + char_to_bit(s[2]) * 4) * d; + d *= 8; + } + banned.insert(value); + } +} + +pair> get_pieces_values(int db, int sb) { + int tab[5][3]; + for (int i = 0; i < 5; i++) { + tab[i][0] = (db >> (i*2)) & 1; + tab[i][1] = (db >> (i*2 + 1)) & 1; + tab[i][2] = (sb >> i) & 1; + } + int res[3]; + for (int k = 0; k < 3; ++k) { + int value = 0, d = 1; + for (int i = k; i < k + 3; ++i) { + value += (tab[i][0] + tab[i][1] * 2 + tab[i][2] * 4) * d; + d *= 8; + } + res[k] = value; + } + return {res[0], {res[1], res[2]}}; +} + +int combine(int db, int sb) { + int res = (db >> 1) & 0x155; + for (int i = 0; i < 5; i++) { + res |= ((sb >> i) & 1) << (2*i + 1); + } + return res; +} + +void preproces() { + const int db = (1<<10); // double bar + const int sb = (1<<5); // single bar + + for (int db_mask = 0; db_mask < db; ++db_mask) { + for (int sb_mask = 0; sb_mask < sb; ++sb_mask) { + auto pieces = get_pieces_values(db_mask, sb_mask); + if (banned.count(pieces.first) || banned.count(pieces.second.first) || banned.count(pieces.second.second)) + continue; + int db2_mask = combine(db_mask, sb_mask); + propagate.push_back({db_mask, db2_mask}); + } + } +} + +int compute_dp() { + int K = 1; + for (int i = 0; i < 1024; i++) { + dp[0][i] = 1; + } + for (int i = 2; i < n; i++) { + for (auto pp: propagate) { + int p1 = pp.first, p2 = pp.second; + dp[K][p2] += dp[K^1][p1]; + dp[K][p2] %= m; + } + K ^= 1; + for (int j = 0; j < 1024; ++j) { + dp[K][j] = 0; + } + } + + K ^= 1; + int result = 0; + for (int i = 0; i < 1024; i++) { + result += dp[K][i]; + result %= m; + } + return result; +} + +int main() { + input(); + preproces(); + printf("%d\n", compute_dp()); +} \ No newline at end of file diff --git a/semestr-4/aisd/pracownia3/show_problem.pdf b/semestr-4/aisd/pracownia3/show_problem.pdf new file mode 100644 index 0000000..f426311 Binary files /dev/null and b/semestr-4/aisd/pracownia3/show_problem.pdf differ diff --git a/semestr-4/aisd/pracownia3/wa.outr b/semestr-4/aisd/pracownia3/wa.outr new file mode 100644 index 0000000..81a8bb1 --- /dev/null +++ b/semestr-4/aisd/pracownia3/wa.outr @@ -0,0 +1,1025 @@ +0: 613 +1: 745 +2: 729 +3: 745 +4: 881 +5: 881 +6: 881 +7: 881 +8: 849 +9: 865 +10: 849 +11: 865 +12: 881 +13: 881 +14: 881 +15: 881 +16: 1025 +17: 1025 +18: 1025 +19: 1025 +20: 1025 +21: 1025 +22: 1025 +23: 1025 +24: 1025 +25: 1025 +26: 1025 +27: 1025 +28: 1025 +29: 1025 +30: 1025 +31: 1025 +32: 977 +33: 993 +34: 977 +35: 993 +36: 1009 +37: 1009 +38: 1009 +39: 1009 +40: 977 +41: 993 +42: 977 +43: 993 +44: 1009 +45: 1009 +46: 1009 +47: 1009 +48: 1025 +49: 1025 +50: 1025 +51: 1025 +52: 1025 +53: 1025 +54: 1025 +55: 1025 +56: 1025 +57: 1025 +58: 1025 +59: 1025 +60: 1025 +61: 1025 +62: 1025 +63: 1025 +64: 881 +65: 1025 +66: 1009 +67: 1025 +68: 1025 +69: 1025 +70: 1025 +71: 1025 +72: 1009 +73: 1025 +74: 1009 +75: 1025 +76: 1025 +77: 1025 +78: 1025 +79: 1025 +80: 1025 +81: 1025 +82: 1025 +83: 1025 +84: 1025 +85: 1025 +86: 1025 +87: 1025 +88: 1025 +89: 1025 +90: 1025 +91: 1025 +92: 1025 +93: 1025 +94: 1025 +95: 1025 +96: 1009 +97: 1025 +98: 1009 +99: 1025 +100: 1025 +101: 1025 +102: 1025 +103: 1025 +104: 1009 +105: 1025 +106: 1009 +107: 1025 +108: 1025 +109: 1025 +110: 1025 +111: 1025 +112: 1025 +113: 1025 +114: 1025 +115: 1025 +116: 1025 +117: 1025 +118: 1025 +119: 1025 +120: 1025 +121: 1025 +122: 1025 +123: 1025 +124: 1025 +125: 1025 +126: 1025 +127: 1025 +128: 861 +129: 993 +130: 977 +131: 993 +132: 1009 +133: 1009 +134: 1009 +135: 1009 +136: 977 +137: 993 +138: 977 +139: 993 +140: 1009 +141: 1009 +142: 1009 +143: 1009 +144: 1025 +145: 1025 +146: 1025 +147: 1025 +148: 1025 +149: 1025 +150: 1025 +151: 1025 +152: 1025 +153: 1025 +154: 1025 +155: 1025 +156: 1025 +157: 1025 +158: 1025 +159: 1025 +160: 977 +161: 993 +162: 977 +163: 993 +164: 1009 +165: 1009 +166: 1009 +167: 1009 +168: 977 +169: 993 +170: 977 +171: 993 +172: 1009 +173: 1009 +174: 1009 +175: 1009 +176: 1025 +177: 1025 +178: 1025 +179: 1025 +180: 1025 +181: 1025 +182: 1025 +183: 1025 +184: 1025 +185: 1025 +186: 1025 +187: 1025 +188: 1025 +189: 1025 +190: 1025 +191: 1025 +192: 881 +193: 1025 +194: 1009 +195: 1025 +196: 1025 +197: 1025 +198: 1025 +199: 1025 +200: 1009 +201: 1025 +202: 1009 +203: 1025 +204: 1025 +205: 1025 +206: 1025 +207: 1025 +208: 1025 +209: 1025 +210: 1025 +211: 1025 +212: 1025 +213: 1025 +214: 1025 +215: 1025 +216: 1025 +217: 1025 +218: 1025 +219: 1025 +220: 1025 +221: 1025 +222: 1025 +223: 1025 +224: 1009 +225: 1025 +226: 1009 +227: 1025 +228: 1025 +229: 1025 +230: 1025 +231: 1025 +232: 1009 +233: 1025 +234: 1009 +235: 1025 +236: 1025 +237: 1025 +238: 1025 +239: 1025 +240: 1025 +241: 1025 +242: 1025 +243: 1025 +244: 1025 +245: 1025 +246: 1025 +247: 1025 +248: 1025 +249: 1025 +250: 1025 +251: 1025 +252: 1025 +253: 1025 +254: 1025 +255: 1025 +256: 745 +257: 881 +258: 865 +259: 881 +260: 1025 +261: 1025 +262: 1025 +263: 1025 +264: 993 +265: 1009 +266: 993 +267: 1009 +268: 1025 +269: 1025 +270: 1025 +271: 1025 +272: 1025 +273: 1025 +274: 1025 +275: 1025 +276: 1025 +277: 1025 +278: 1025 +279: 1025 +280: 1025 +281: 1025 +282: 1025 +283: 1025 +284: 1025 +285: 1025 +286: 1025 +287: 1025 +288: 993 +289: 1009 +290: 993 +291: 1009 +292: 1025 +293: 1025 +294: 1025 +295: 1025 +296: 993 +297: 1009 +298: 993 +299: 1009 +300: 1025 +301: 1025 +302: 1025 +303: 1025 +304: 1025 +305: 1025 +306: 1025 +307: 1025 +308: 1025 +309: 1025 +310: 1025 +311: 1025 +312: 1025 +313: 1025 +314: 1025 +315: 1025 +316: 1025 +317: 1025 +318: 1025 +319: 1025 +320: 881 +321: 1025 +322: 1009 +323: 1025 +324: 1025 +325: 1025 +326: 1025 +327: 1025 +328: 1009 +329: 1025 +330: 1009 +331: 1025 +332: 1025 +333: 1025 +334: 1025 +335: 1025 +336: 1025 +337: 1025 +338: 1025 +339: 1025 +340: 1025 +341: 1025 +342: 1025 +343: 1025 +344: 1025 +345: 1025 +346: 1025 +347: 1025 +348: 1025 +349: 1025 +350: 1025 +351: 1025 +352: 1009 +353: 1025 +354: 1009 +355: 1025 +356: 1025 +357: 1025 +358: 1025 +359: 1025 +360: 1009 +361: 1025 +362: 1009 +363: 1025 +364: 1025 +365: 1025 +366: 1025 +367: 1025 +368: 1025 +369: 1025 +370: 1025 +371: 1025 +372: 1025 +373: 1025 +374: 1025 +375: 1025 +376: 1025 +377: 1025 +378: 1025 +379: 1025 +380: 1025 +381: 1025 +382: 1025 +383: 1025 +384: 873 +385: 1009 +386: 993 +387: 1009 +388: 1025 +389: 1025 +390: 1025 +391: 1025 +392: 993 +393: 1009 +394: 993 +395: 1009 +396: 1025 +397: 1025 +398: 1025 +399: 1025 +400: 1025 +401: 1025 +402: 1025 +403: 1025 +404: 1025 +405: 1025 +406: 1025 +407: 1025 +408: 1025 +409: 1025 +410: 1025 +411: 1025 +412: 1025 +413: 1025 +414: 1025 +415: 1025 +416: 993 +417: 1009 +418: 993 +419: 1009 +420: 1025 +421: 1025 +422: 1025 +423: 1025 +424: 993 +425: 1009 +426: 993 +427: 1009 +428: 1025 +429: 1025 +430: 1025 +431: 1025 +432: 1025 +433: 1025 +434: 1025 +435: 1025 +436: 1025 +437: 1025 +438: 1025 +439: 1025 +440: 1025 +441: 1025 +442: 1025 +443: 1025 +444: 1025 +445: 1025 +446: 1025 +447: 1025 +448: 881 +449: 1025 +450: 1009 +451: 1025 +452: 1025 +453: 1025 +454: 1025 +455: 1025 +456: 1009 +457: 1025 +458: 1009 +459: 1025 +460: 1025 +461: 1025 +462: 1025 +463: 1025 +464: 1025 +465: 1025 +466: 1025 +467: 1025 +468: 1025 +469: 1025 +470: 1025 +471: 1025 +472: 1025 +473: 1025 +474: 1025 +475: 1025 +476: 1025 +477: 1025 +478: 1025 +479: 1025 +480: 1009 +481: 1025 +482: 1009 +483: 1025 +484: 1025 +485: 1025 +486: 1025 +487: 1025 +488: 1009 +489: 1025 +490: 1009 +491: 1025 +492: 1025 +493: 1025 +494: 1025 +495: 1025 +496: 1025 +497: 1025 +498: 1025 +499: 1025 +500: 1025 +501: 1025 +502: 1025 +503: 1025 +504: 1025 +505: 1025 +506: 1025 +507: 1025 +508: 1025 +509: 1025 +510: 1025 +511: 1025 +512: 741 +513: 873 +514: 857 +515: 873 +516: 1009 +517: 1009 +518: 1009 +519: 1009 +520: 977 +521: 993 +522: 977 +523: 993 +524: 1009 +525: 1009 +526: 1009 +527: 1009 +528: 1025 +529: 1025 +530: 1025 +531: 1025 +532: 1025 +533: 1025 +534: 1025 +535: 1025 +536: 1025 +537: 1025 +538: 1025 +539: 1025 +540: 1025 +541: 1025 +542: 1025 +543: 1025 +544: 977 +545: 993 +546: 977 +547: 993 +548: 1009 +549: 1009 +550: 1009 +551: 1009 +552: 977 +553: 993 +554: 977 +555: 993 +556: 1009 +557: 1009 +558: 1009 +559: 1009 +560: 1025 +561: 1025 +562: 1025 +563: 1025 +564: 1025 +565: 1025 +566: 1025 +567: 1025 +568: 1025 +569: 1025 +570: 1025 +571: 1025 +572: 1025 +573: 1025 +574: 1025 +575: 1025 +576: 881 +577: 1025 +578: 1009 +579: 1025 +580: 1025 +581: 1025 +582: 1025 +583: 1025 +584: 1009 +585: 1025 +586: 1009 +587: 1025 +588: 1025 +589: 1025 +590: 1025 +591: 1025 +592: 1025 +593: 1025 +594: 1025 +595: 1025 +596: 1025 +597: 1025 +598: 1025 +599: 1025 +600: 1025 +601: 1025 +602: 1025 +603: 1025 +604: 1025 +605: 1025 +606: 1025 +607: 1025 +608: 1009 +609: 1025 +610: 1009 +611: 1025 +612: 1025 +613: 1025 +614: 1025 +615: 1025 +616: 1009 +617: 1025 +618: 1009 +619: 1025 +620: 1025 +621: 1025 +622: 1025 +623: 1025 +624: 1025 +625: 1025 +626: 1025 +627: 1025 +628: 1025 +629: 1025 +630: 1025 +631: 1025 +632: 1025 +633: 1025 +634: 1025 +635: 1025 +636: 1025 +637: 1025 +638: 1025 +639: 1025 +640: 861 +641: 993 +642: 977 +643: 993 +644: 1009 +645: 1009 +646: 1009 +647: 1009 +648: 977 +649: 993 +650: 977 +651: 993 +652: 1009 +653: 1009 +654: 1009 +655: 1009 +656: 1025 +657: 1025 +658: 1025 +659: 1025 +660: 1025 +661: 1025 +662: 1025 +663: 1025 +664: 1025 +665: 1025 +666: 1025 +667: 1025 +668: 1025 +669: 1025 +670: 1025 +671: 1025 +672: 977 +673: 993 +674: 977 +675: 993 +676: 1009 +677: 1009 +678: 1009 +679: 1009 +680: 977 +681: 993 +682: 977 +683: 993 +684: 1009 +685: 1009 +686: 1009 +687: 1009 +688: 1025 +689: 1025 +690: 1025 +691: 1025 +692: 1025 +693: 1025 +694: 1025 +695: 1025 +696: 1025 +697: 1025 +698: 1025 +699: 1025 +700: 1025 +701: 1025 +702: 1025 +703: 1025 +704: 881 +705: 1025 +706: 1009 +707: 1025 +708: 1025 +709: 1025 +710: 1025 +711: 1025 +712: 1009 +713: 1025 +714: 1009 +715: 1025 +716: 1025 +717: 1025 +718: 1025 +719: 1025 +720: 1025 +721: 1025 +722: 1025 +723: 1025 +724: 1025 +725: 1025 +726: 1025 +727: 1025 +728: 1025 +729: 1025 +730: 1025 +731: 1025 +732: 1025 +733: 1025 +734: 1025 +735: 1025 +736: 1009 +737: 1025 +738: 1009 +739: 1025 +740: 1025 +741: 1025 +742: 1025 +743: 1025 +744: 1009 +745: 1025 +746: 1009 +747: 1025 +748: 1025 +749: 1025 +750: 1025 +751: 1025 +752: 1025 +753: 1025 +754: 1025 +755: 1025 +756: 1025 +757: 1025 +758: 1025 +759: 1025 +760: 1025 +761: 1025 +762: 1025 +763: 1025 +764: 1025 +765: 1025 +766: 1025 +767: 1025 +768: 745 +769: 881 +770: 865 +771: 881 +772: 1025 +773: 1025 +774: 1025 +775: 1025 +776: 993 +777: 1009 +778: 993 +779: 1009 +780: 1025 +781: 1025 +782: 1025 +783: 1025 +784: 1025 +785: 1025 +786: 1025 +787: 1025 +788: 1025 +789: 1025 +790: 1025 +791: 1025 +792: 1025 +793: 1025 +794: 1025 +795: 1025 +796: 1025 +797: 1025 +798: 1025 +799: 1025 +800: 993 +801: 1009 +802: 993 +803: 1009 +804: 1025 +805: 1025 +806: 1025 +807: 1025 +808: 993 +809: 1009 +810: 993 +811: 1009 +812: 1025 +813: 1025 +814: 1025 +815: 1025 +816: 1025 +817: 1025 +818: 1025 +819: 1025 +820: 1025 +821: 1025 +822: 1025 +823: 1025 +824: 1025 +825: 1025 +826: 1025 +827: 1025 +828: 1025 +829: 1025 +830: 1025 +831: 1025 +832: 881 +833: 1025 +834: 1009 +835: 1025 +836: 1025 +837: 1025 +838: 1025 +839: 1025 +840: 1009 +841: 1025 +842: 1009 +843: 1025 +844: 1025 +845: 1025 +846: 1025 +847: 1025 +848: 1025 +849: 1025 +850: 1025 +851: 1025 +852: 1025 +853: 1025 +854: 1025 +855: 1025 +856: 1025 +857: 1025 +858: 1025 +859: 1025 +860: 1025 +861: 1025 +862: 1025 +863: 1025 +864: 1009 +865: 1025 +866: 1009 +867: 1025 +868: 1025 +869: 1025 +870: 1025 +871: 1025 +872: 1009 +873: 1025 +874: 1009 +875: 1025 +876: 1025 +877: 1025 +878: 1025 +879: 1025 +880: 1025 +881: 1025 +882: 1025 +883: 1025 +884: 1025 +885: 1025 +886: 1025 +887: 1025 +888: 1025 +889: 1025 +890: 1025 +891: 1025 +892: 1025 +893: 1025 +894: 1025 +895: 1025 +896: 873 +897: 1009 +898: 993 +899: 1009 +900: 1025 +901: 1025 +902: 1025 +903: 1025 +904: 993 +905: 1009 +906: 993 +907: 1009 +908: 1025 +909: 1025 +910: 1025 +911: 1025 +912: 1025 +913: 1025 +914: 1025 +915: 1025 +916: 1025 +917: 1025 +918: 1025 +919: 1025 +920: 1025 +921: 1025 +922: 1025 +923: 1025 +924: 1025 +925: 1025 +926: 1025 +927: 1025 +928: 993 +929: 1009 +930: 993 +931: 1009 +932: 1025 +933: 1025 +934: 1025 +935: 1025 +936: 993 +937: 1009 +938: 993 +939: 1009 +940: 1025 +941: 1025 +942: 1025 +943: 1025 +944: 1025 +945: 1025 +946: 1025 +947: 1025 +948: 1025 +949: 1025 +950: 1025 +951: 1025 +952: 1025 +953: 1025 +954: 1025 +955: 1025 +956: 1025 +957: 1025 +958: 1025 +959: 1025 +960: 881 +961: 1025 +962: 1009 +963: 1025 +964: 1025 +965: 1025 +966: 1025 +967: 1025 +968: 1009 +969: 1025 +970: 1009 +971: 1025 +972: 1025 +973: 1025 +974: 1025 +975: 1025 +976: 1025 +977: 1025 +978: 1025 +979: 1025 +980: 1025 +981: 1025 +982: 1025 +983: 1025 +984: 1025 +985: 1025 +986: 1025 +987: 1025 +988: 1025 +989: 1025 +990: 1025 +991: 1025 +992: 1009 +993: 1025 +994: 1009 +995: 1025 +996: 1025 +997: 1025 +998: 1025 +999: 1025 +1000: 1009 +1001: 1025 +1002: 1009 +1003: 1025 +1004: 1025 +1005: 1025 +1006: 1025 +1007: 1025 +1008: 1025 +1009: 1025 +1010: 1025 +1011: 1025 +1012: 1025 +1013: 1025 +1014: 1025 +1015: 1025 +1016: 1025 +1017: 1025 +1018: 1025 +1019: 1025 +1020: 1025 +1021: 1025 +1022: 1025 +1023: 1025 +37456 -- cgit v1.2.3