Coder Social home page Coder Social logo

ml-kem's Introduction

ML-KEM

Implementação simplificada do ML-KEM. O ML-KEM é um sistema criptográfico assimétrico pós-quântico baseado na dificuldade de se resolver o problema MLWE sobre a estrutura algébrica de reticulados. ML-KEM é um dos algoritmos finalistas do programa Post-Quantum Cryptography do NIST, e selecionado para padronização.

Para mais detalhes, pode ser consultada a documentação oficial do ML-KEM em 🔗.

Compilação

make all
./main

Teste

make test
./test

Exemplo de código K-PKE

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#include "aux.h"
#include "poly.h"
#include "polyvec.h"
#include "kyber.h"

void poly_gen_msg(int n, Poly *result){
	srand(time(NULL));
	
	result->coeff = calloc(n, sizeof(int));
	result->size  = n;

	for (int i = 0; i < n-1; i++){
		result->coeff[i] = rand() % 2;
	}

	result->coeff[n-1] = 1;
}

int main(){
    srand(time(NULL));
	
    Kyber *kyber         = kyber_init();
    Poly  *msg           = poly_init();
    Poly  *msg_original  = poly_init();
    Poly  *msg_decifrada = poly_init();

    poly_gen_msg(N, msg);
    poly_copy(msg_original, msg);

    kyber_keygen(kyber);
    kyber_encrypt(kyber, msg);
    kyber_decrypt(kyber, msg_decifrada);

    printf("MSG ORIGINAL: ");
    poly_println(msg_original);
    
    printf("A: ");
    polyvec_println(kyber->a);

    printf("S: ");
    polyvec_println(kyber->s);

    printf("T: ");
    polyvec_println(kyber->t);

    printf("U: ");
    polyvec_println(kyber->u);

    printf("V: ");
    poly_println(kyber->v);

    printf("MSG DECIFRADA: ");
    poly_println(msg_decifrada);

    kyber_free(kyber);
    poly_free(msg);
    poly_free(msg_original);
    poly_free(msg_decifrada);

    return 0;
}

Este código retorna a seguinte saída, onde:

  • 🔓 Chave pública: A,T
  • 🔑 Chave privada: S
  • 🔐 Texto cifrado: U,V
MSG ORIGINAL: [0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,1,0,0,0,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0,1]
A: [[[405 2651 2432 472 2896 2630 391 277 3247 518 2150 1819 538 2735 189 430 1367 203 264 3133 2653 1795 1 1262 270 255 2517 280 2984 2925 3078 1048 2247 3170 1520 2802 130 1911 738 48 89 2888 1868 1615 3283 2057 2045 2309 3248 3297 3102 2573 1763 3103 506 3021 1017 682 3301 672 278 710 1721 2526 1539 3241 2987 1669 2812 397 2706 2901 944 1245 2175 898 961 891 867 881 859 640 1113 281 1402 1619 3302 2420 2301 934 3092 239 1644 2472 2765 842 2385 82 2511 2856 479 2876 87 1424 792 2262 3310 2742 812 848 1282 1671 2476 2395 1952 550 1673 2913 2970 645 518 392 1872 3150 2865 2296 1651 2909 2379 834 2436 2858 381 182 953 2162 103 1923 2563 915 2771 516 2586 2907 570 2197 128 2243 2769 757 547 3288 1149 2420 768 685 1387 2420 265 437 913 360 955 2282 1530 1908 2103 1633 1490 2325 2548 1921 500 2793 1499 1070 2649 2615 972 2090 43 1520 3037 1192 1599 1464 2866 645 555 790 1083 2456 1151 2038 2398 2681 1605 1172 1974 3096 169 1193 1688 669 1646 846 2728 1954 132 371 715 175 2879 1411 2355 1149 2876 1892 1795 1090 2683 537 218 1493 234 275 845 2827 1447 478 253 2604 1672 2929 933 977 446 332 2931 578 703 1306 1741 1242 376 768 2391 3252 319 1845 2002 661 2382 2220 2154 2610],[154 659 3103 1601 1137 27 1865 468 2957 2798 2433 74 789 3024 1641 2480 1001 53 393 1377 1809 444 2289 2129 2289 962 449 2331 841 2604 2606 995 922 2380 255 2059 2408 3108 187 3024 2577 2620 3098 1025 2315 1410 177 975 2452 570 12 932 1014 3289 720 963 922 1170 3294 2751 1433 2571 417 2355 2611 1660 2073 2678 1440 3248 2373 1676 2540 3130 2702 2514 2200 2879 1149 1323 1108 2149 3243 3111 2109 635 745 690 2793 710 112 897 940 1517 3252 222 3177 2984 2900 1288 2904 2932 2965 3103 2734 2338 2288 1605 2876 1096 2928 655 3245 2842 1425 3013 1136 2170 374 600 539 486 1497 2468 2003 2408 2690 2840 2064 3250 799 1639 2853 1423 2401 3246 1420 2348 1522 1955 116 2109 270 1020 2611 1695 705 418 537 2067 2007 2064 2554 175 1203 2216 243 1553 1727 2307 1474 186 1605 1986 1609 677 1904 689 3025 1085 2644 800 3195 2914 1821 2477 1281 185 554 2806 2252 2561 1541 2465 396 2745 1353 639 969 739 2946 102 925 2210 3076 194 546 2639 1871 1230 396 1186 2031 1250 1760 1511 398 700 2684 952 177 2595 1173 2706 1732 1569 2122 744 2208 750 1483 2813 1840 68 2682 1588 262 3228 898 2133 2117 2282 978 1807 203 2738 3318 1589 1097 332 201 2262 2928 1374 1640 2319 2943 1421 3063 1822 2172 1217 2294 1671 1285 1927],[3259 2535 2534 829 2327 1322 770 3306 3130 974 374 3119 2563 1472 1111 2764 1393 710 809 3033 688 1411 1126 422 892 957 2627 3186 2628 1572 1504 218 778 709 2035 765 3020 2805 742 2821 450 2104 270 673 1235 1381 108 2629 3079 1906 3321 438 3317 2106 1848 881 3063 1147 1726 22 2719 890 1228 1156 2587 3263 1921 2278 398 322 1770 849 86 2041 2510 1321 1081 2618 621 832 2183 1602 2258 3160 379 778 712 1102 2913 97 2112 2303 987 11 1118 246 3274 699 2524 343 1021 1954 2180 1107 1654 1361 88 2735 1639 1697 1226 1481 3299 156 1312 350 1922 2024 1452 1506 3110 235 1468 768 1234 2586 2002 2167 944 2186 169 1966 811 2350 732 124 1370 820 2859 668 177 1745 2150 147 2889 133 1485 1482 3146 596 647 586 831 2115 1354 3053 2360 28 1891 3305 3202 2061 2930 684 2070 1321 808 111 3130 1326 1768 3307 3071 1577 1113 2631 2698 2599 1772 174 3195 2419 760 1686 2193 2115 1410 1225 3131 3302 2189 3004 3022 1790 1347 1763 770 3143 2862 571 1140 1301 1537 1871 537 2651 1173 3236 1921 2946 81 2775 3024 842 1132 1889 616 2543 3114 418 175 1974 1081 3197 1423 2428 2619 2193 3230 2152 424 1041 1113 1961 571 1650 1283 1745 1557 863 2350 1639 310 2045 140 2430 605 756 1644 1378 2162 2807 1011 3243 334 1530],[1 2953 3275 3231 1777 370 1931 549 2331 2503 2199 1274 1907 428 3125 928 3055 106 632 3195 2537 2226 1610 1840 275 443 2307 2275 357 2641 2368 358 3254 2314 1248 2690 2684 3179 3239 2675 12 2109 1608 1919 196 1404 506 3251 2499 1139 776 2695 1024 2386 1206 1299 2829 1172 1233 845 1473 273 2191 1398 2587 110 759 2931 949 669 3265 1949 437 1544 1528 634 607 2034 1544 3106 832 2321 2472 1856 2366 1338 815 2855 2510 2048 371 654 2321 2563 3040 2568 332 470 3158 2269 2127 3094 890 2565 2297 2418 858 2904 2111 61 2682 2944 41 2813 2459 2408 822 3274 1934 992 2982 3293 2634 2962 186 2346 3189 519 2816 3018 447 2603 2783 2325 2827 1751 1414 356 2315 1185 417 1668 800 1447 2140 918 526 2963 1852 119 1614 1505 1071 919 2126 1258 3265 1987 2765 412 2664 3212 3015 2119 2209 172 1529 1282 1516 515 2467 2921 3171 926 1039 1983 2833 1565 2605 1356 2672 890 520 415 2797 305 1673 393 2292 2097 805 1628 1980 1479 1406 1848 2639 594 790 826 1110 916 418 1940 2831 1458 1582 2335 682 858 1350 1014 2736 1870 1429 3193 2175 761 257 2127 2858 2050 1414 2497 200 2820 1017 498 1073 2795 1324 3171 382 1742 1783 3213 859 36 3207 1542 1883 1228 2556 1290 757 1644 1154 592 2405 2399 2719 2922 1120 1792 2090 952]],[[2271 766 2806 15 232 801 3187 615 203 1641 1487 1062 2665 1366 2604 1219 2594 2819 169 1011 1134 2311 1603 1198 1382 1981 791 2502 444 2882 2470 2715 1307 1947 389 1540 408 247 3143 611 2876 1301 1673 2213 326 1937 1091 580 1427 1260 1591 221 1231 3194 1419 2613 2834 2211 2774 3278 2752 2903 323 730 1522 712 3258 2918 960 731 200 1495 3021 2861 379 18 1469 2459 598 556 390 3177 777 2609 701 2196 2881 206 2066 2327 155 2477 2889 478 3208 1082 2179 796 1659 3139 1528 1859 1305 1220 1392 2673 1238 520 1803 2825 1076 3181 332 2841 2462 1034 2697 2014 1240 2422 2000 1396 1571 1561 2862 2438 302 1712 3234 1962 2510 1433 1480 1475 312 531 1807 1551 1052 281 2035 3116 1121 2367 288 1242 72 2985 916 2301 3066 575 1356 1308 3124 1877 417 1086 261 323 3048 430 2744 2187 2893 3057 2719 1371 2267 1430 2640 1961 1217 433 999 2493 2663 2060 3137 1238 2020 2875 1814 47 854 1609 1924 2260 2695 3173 242 73 275 2986 3249 827 373 2639 2199 299 740 1510 2260 2945 2931 919 2110 3254 2979 1918 1163 1670 2452 2977 2705 3307 2246 1300 3226 2600 1145 139 333 2408 784 253 3235 1158 2892 3093 1457 1291 2263 389 907 1865 2296 676 2778 2934 254 613 2263 2706 1249 1639 343 166 2939 240 2767 1743 1367 3100 1810 737],[24 1717 3310 575 1481 2426 1866 415 474 432 3269 2770 2097 2718 2375 10 990 1309 375 2240 607 719 2406 218 1947 2832 2949 3315 262 1431 2138 286 807 3107 1849 2288 2204 1374 363 2679 1807 1291 3108 1563 1668 2155 1573 2659 1123 1948 1570 1731 326 1635 2937 2274 1139 216 3248 1401 1647 3045 2676 2454 2823 1196 2402 2686 2571 424 3024 2037 1715 2804 271 1042 2618 2832 372 1400 1451 2930 3131 1778 1237 398 1711 2376 615 2618 448 2262 2334 783 2376 2816 1980 1449 3161 2210 2861 2857 918 1247 2332 2177 2289 2609 1680 321 680 790 3251 1471 227 1159 1869 1938 1194 143 2215 2631 65 2208 85 2441 1695 3053 1549 1528 1934 1081 2044 511 3316 2035 2688 3264 1315 2027 1244 2983 2818 1167 1125 3045 3314 654 2643 1180 797 1529 482 1850 1397 1555 1950 3092 1280 170 2279 3214 2239 994 1385 3214 3029 1732 3150 2003 1419 2053 1658 908 3220 2783 1612 865 1096 1914 2045 2882 1103 186 1403 2500 1741 25 3251 680 1183 2202 1554 94 855 2939 967 1544 2330 788 218 420 501 2864 1328 392 2319 600 2245 1074 2514 1949 627 288 2135 2031 447 1536 2056 370 2216 3239 231 1429 992 2074 1039 1960 289 41 407 1496 461 908 1031 2778 2289 1009 1037 1205 2084 222 814 2711 1499 2949 2401 2934 2144 1128 3304 2020 2027 1194 120 805],[3269 2148 2638 1217 3177 705 2713 309 2601 1404 746 1561 2413 1783 426 2156 2994 1240 1539 2152 1848 611 1757 1652 2728 1733 343 2414 586 1451 3092 1514 270 61 2732 118 766 3104 1416 38 1179 3150 2588 264 2593 3014 2420 2258 1913 1618 1081 432 3218 2838 2084 2617 2230 86 1702 476 1538 2453 1990 2796 2514 1393 2915 3280 1169 1990 3319 7 2799 237 1259 2063 3251 1339 992 1835 2957 3061 3255 505 2571 2999 3122 2460 3085 2483 2936 2282 1608 2586 1750 793 650 2324 1733 2807 985 2711 2815 455 2948 745 2519 529 2084 1170 2364 2701 903 3278 3206 1133 2948 659 1252 364 3142 860 2646 2409 1105 1067 862 1755 62 2595 2222 2035 2965 1708 150 2584 112 328 3113 3185 1498 3136 216 2401 3085 93 1193 364 1740 2446 728 2542 965 1033 1622 2070 2101 143 1484 3151 2738 377 1858 33 3073 2008 2617 845 2336 60 701 1493 3196 917 566 612 1998 2747 976 1398 1864 2692 611 488 396 3221 2558 156 36 1702 3308 433 2079 1837 467 2812 1504 743 328 511 804 1029 2004 671 2934 229 2271 2591 636 906 660 159 269 2259 648 1654 2152 865 2798 3176 2567 2777 280 2306 2273 747 1789 448 2479 2117 1947 3283 805 1611 625 1398 2828 2897 1648 1123 474 3297 1283 1732 2227 1931 1045 2038 455 514 1885 3023 951 2166 2000 2436],[572 1448 2320 3051 1224 1926 3005 3017 208 1290 2074 696 1846 393 1819 3308 1349 3102 2699 248 2692 1403 3274 3148 1918 1831 501 528 1656 160 1411 2228 1608 402 2939 491 2329 274 1167 196 1564 3241 1880 1069 1293 1359 1049 2643 2120 1407 550 1484 2811 495 2291 2388 3314 2792 2916 1641 2952 1986 1529 2219 48 1139 369 36 1413 1536 1220 637 1448 3101 1706 2741 1131 414 3043 3251 1822 1252 2394 1304 1748 2344 363 2721 1807 938 1034 2418 2924 2563 1308 631 373 1677 667 2774 3213 1888 82 2320 2648 2777 2721 1438 850 2435 2348 2672 359 2402 1635 3095 1417 2986 2487 3225 595 1180 3302 1179 414 2270 2798 1775 618 137 2209 1491 3013 2291 1470 3320 2727 862 1429 249 957 448 580 1316 2850 2216 2070 1927 2861 2216 1823 1116 68 1796 3283 1470 737 2752 3246 2344 548 2126 1494 232 2076 623 1211 2463 1486 2640 2712 2443 748 951 1418 1257 826 1147 3184 359 34 2666 1475 1090 2122 1429 2561 2859 852 137 2862 2389 3251 2015 280 2986 2639 1492 2120 1784 1791 2491 1886 2539 114 963 1456 940 2110 1311 2287 3132 649 433 894 430 2850 1114 948 1362 1251 482 422 1173 156 702 1818 454 2194 610 2238 657 760 1783 855 1862 2746 2311 462 2515 1282 2749 2319 2919 842 872 20 363 1986 968 1725 896 2438 3135 3057 1010]],[[509 1546 708 362 3144 606 2007 576 2389 522 97 2795 492 1547 1981 1774 968 1959 2352 2798 490 2372 3161 2476 1000 2546 1031 109 2352 759 363 520 3294 2060 883 3109 2666 549 1344 1726 1071 1442 1192 1564 648 833 997 1616 2792 21 2073 942 2393 2894 89 1052 2111 2109 2150 2122 2868 172 2643 2833 2232 1185 273 1569 1734 1617 955 465 718 3135 2029 1367 639 3026 642 1091 3047 2716 2033 3100 2281 3110 1811 2051 1890 632 844 2418 805 158 2910 3037 2331 3183 2266 737 1472 880 1202 3178 686 890 1216 2314 1575 2847 1064 2282 3222 3097 3041 2174 537 1523 1884 87 2156 2728 2505 620 546 3074 1316 2877 2929 1241 1273 2060 2121 134 1909 2808 2012 785 1793 259 1291 2857 2541 1184 284 2253 1017 1809 1435 2901 1896 1250 2300 2060 1870 505 2794 846 1042 2394 2087 2315 2113 1868 109 693 1347 2121 2466 799 39 428 1315 2580 2600 2587 2492 288 1067 599 3189 623 1849 3149 342 1379 325 3136 3213 2355 2201 2959 2330 1973 1498 2439 2667 2845 2219 2792 1303 2259 880 277 2498 151 2864 1662 440 1591 3249 1288 2214 2757 1108 2556 1795 2422 23 1679 1448 3212 1310 449 1857 2808 2888 2183 3313 2767 1646 2275 1697 185 2553 866 337 2088 187 1765 350 107 3053 223 524 833 439 2319 914 462 670 2362 345 2968 2812 1697],[106 30 1056 90 2797 362 2366 2153 547 2578 679 1872 1337 866 308 2676 1962 33 2899 2486 1854 9 1476 2768 471 3134 2789 1805 432 2272 678 539 3291 2723 1617 418 3085 654 2572 303 891 3251 3164 2229 1776 143 2564 409 1164 3122 554 677 3132 3019 1104 1262 2824 565 3067 916 496 1405 1455 458 799 3072 1865 1543 1386 2096 2834 2277 2018 2669 2165 465 2813 1400 1863 1636 1194 2417 2314 1985 2107 1077 906 2591 1642 645 178 2139 3038 1633 256 1496 2364 3109 3039 421 1876 2544 358 565 1885 2523 2019 2357 1583 1541 1652 2777 629 637 2421 396 1715 3327 2987 1016 1631 824 814 1340 116 2059 2836 2480 1839 2546 561 387 2750 919 1940 1306 113 1618 1322 1696 3159 2974 2132 1448 1271 1224 1844 645 1223 2490 1661 2854 973 135 1854 1089 2194 1361 240 704 1567 801 2079 988 1720 1679 3282 2822 3297 1275 1189 787 1908 981 3223 3179 2205 2726 495 1087 1887 3145 613 519 939 2467 1608 3133 1487 2836 1496 3054 309 1235 1701 3017 2914 1654 169 541 588 2347 2316 2497 3328 2210 6 2204 1607 1490 3292 1153 2294 1564 1672 3233 1690 939 3037 3177 447 2192 2903 1744 98 2263 2420 3012 589 2590 1213 2165 1608 200 2321 2595 70 2328 1470 2665 489 2421 490 2783 1644 3150 346 5 1749 54 3183 2196 2246 416 611 1462],[2679 3031 675 927 3280 1888 3093 1559 3077 2085 825 3147 1084 3284 2483 2561 35 632 3003 1680 1442 20 1685 3191 1062 1539 2058 968 2943 328 972 2294 30 2635 3221 3311 1195 644 2529 943 2730 1014 1749 1473 1957 903 1694 1992 1536 1368 1331 2978 2377 3017 2840 110 2215 2557 2066 1830 2885 697 795 574 4 1675 556 1199 2320 745 3130 2709 2747 1550 1841 2363 112 206 1026 1648 2563 17 2285 1611 3034 2784 2709 2908 2012 1447 1409 1568 2144 3192 2143 3136 2527 358 1006 1518 2091 1795 1886 2497 16 398 1531 1117 1593 217 2765 827 234 2710 97 927 2165 2806 506 1837 1912 1916 76 1716 2767 3207 1523 1965 1225 189 1142 975 1984 3028 144 2989 1086 2663 777 2679 2880 1201 177 773 582 274 1700 407 739 2207 2244 2652 1782 3308 2027 1220 846 221 3186 2071 410 1987 705 54 1687 849 3043 432 184 1479 3111 723 2680 947 1497 922 2209 3197 1329 607 3063 244 918 1516 223 2945 396 2057 826 1241 799 2224 3228 1505 2278 2574 13 2980 3006 1185 1130 447 1909 1470 2382 1065 2392 1262 933 392 2858 1656 1624 447 3172 2835 1052 1227 1564 1878 2468 22 773 2368 2515 711 2601 188 362 2279 1373 1493 385 941 622 2768 2006 3014 1689 599 1065 1218 3243 2689 2654 3086 3183 377 1973 1418 2255 1112 2429 687 1139 1947],[1398 412 1803 1761 350 836 913 735 1777 1535 174 1443 2208 1864 3030 3273 741 2944 292 66 360 146 443 2333 1565 357 1105 665 1045 2244 3268 2443 315 1743 875 665 238 2776 2389 3003 982 2563 2105 3190 2086 1806 793 487 2409 1085 553 429 1232 1985 421 2797 2342 2514 1121 58 1430 2048 161 2733 1450 2024 1058 1688 1472 118 1363 113 2681 139 3304 2427 2934 768 2914 3002 1854 138 1090 745 3111 1512 1201 2125 1685 3310 3171 774 2029 3 179 151 2028 1237 1839 1159 1355 861 1272 1695 1989 1247 793 2582 3004 1366 2255 2517 2493 1005 921 2275 176 2122 2059 1861 2103 1902 2636 803 2893 2815 954 2580 1711 453 410 3066 1314 1683 2420 3303 589 873 2556 1252 2239 2471 440 1403 147 1361 1338 323 1142 68 3172 3245 2958 2479 720 2523 2953 2662 1774 1335 3115 2185 2060 1101 539 1152 1075 2116 3013 1291 40 1923 433 480 986 1568 2830 3312 2879 643 51 2722 1548 3010 1873 2268 2204 1497 2589 1637 492 2376 493 2552 148 2020 1363 2211 808 1047 173 848 630 1594 2316 2604 821 2805 2587 371 1108 2638 3094 2656 3307 2626 2583 2182 1782 1843 1479 3262 890 1972 2486 2026 664 1508 1897 2460 215 3058 3308 845 1324 2295 120 2145 1772 2707 176 2880 3004 3270 3195 2983 226 2449 2824 2996 963 974 2930 2842 606 1956]],[[2527 1270 1254 1095 1389 1469 825 1368 3302 3137 1322 93 1953 3094 459 3117 304 135 717 170 777 943 2619 1260 611 1242 2235 212 1743 500 3287 941 2758 2200 2037 818 341 521 2186 1302 329 179 1396 3270 933 2843 3059 1237 637 447 2396 1414 1391 2674 2675 2990 587 2569 861 2330 3069 1807 931 2498 678 2968 3316 2007 160 3161 3310 1477 11 2365 1418 1932 1879 1148 3170 176 2584 2237 1590 1634 2570 1924 1295 3158 2152 3144 3147 2880 1622 749 3037 3288 1376 683 2955 2524 515 595 672 1515 619 3079 118 157 1886 947 333 1141 843 2912 2775 85 1507 1729 902 1319 1544 720 1858 825 2458 1567 1773 1493 2250 2387 689 425 641 2349 2928 1260 3087 705 1417 1645 2641 2739 2786 155 2322 2233 1228 1488 633 2130 2807 3166 510 1337 662 2968 563 94 1132 472 2481 2809 1885 3122 2818 1484 2041 2576 3178 1118 892 2490 528 1338 2645 509 242 1533 1997 1863 334 2464 2688 844 472 1010 1471 2023 1104 263 2495 1245 731 1052 2026 220 195 739 456 44 2845 2336 2534 1032 345 2839 1541 587 1043 209 110 2365 2673 2798 869 804 479 3328 2827 2572 262 1994 488 1982 705 2514 3190 900 912 317 945 1416 2654 1138 2448 2999 1636 660 1246 338 870 2344 2704 214 2801 1232 2007 940 1231 1505 183 2482 170 671 1135 1604],[844 996 2764 2745 2302 380 832 2615 2506 940 2285 814 1600 1190 2140 129 205 1515 1332 666 2747 10 1606 1638 1515 1789 791 2674 119 2914 1208 1951 581 643 2355 542 2011 847 3157 1189 1787 3102 2991 58 963 1802 1176 2157 977 2508 2823 1383 2518 2088 3021 1692 548 1471 1037 1655 1056 2246 277 2626 548 2633 827 2560 151 656 1408 2926 429 2058 643 2380 1519 1819 2196 2496 998 2678 1539 1175 1437 2219 2868 1985 362 576 311 2406 481 1577 2691 2018 1869 190 1249 2020 846 316 2605 2263 33 3248 1314 1552 1739 1170 1708 396 519 3247 1572 1957 3125 1111 613 1146 2675 1913 224 3157 1149 574 1846 3018 764 754 1709 2598 2058 1973 2520 2091 1892 1494 314 1290 2664 2022 1687 3183 2928 3259 1811 2725 2029 84 542 1375 2985 1754 2191 805 2329 708 494 752 2450 3191 1010 1179 1835 201 929 1386 1695 1244 2677 2018 925 1035 1873 1513 1953 1343 1897 653 1427 2439 2028 2071 1853 891 2876 1841 2587 41 2593 2697 891 1262 1535 385 2452 2465 1772 818 380 1120 2837 2293 3143 2369 1465 1767 383 33 2420 2799 132 2107 1541 1985 657 1089 497 3245 2118 749 2613 669 2012 1807 1054 1135 943 2826 2941 2311 617 108 1276 431 136 2741 3186 520 434 3265 3319 566 2044 2519 2551 360 279 707 276 57 1456 548 726 3186],[2356 1780 3250 958 1278 522 3270 2883 1618 1217 974 1755 1617 831 3263 3039 1756 912 276 1459 102 2827 1819 382 1193 3084 1427 309 1291 2153 1436 1306 1592 2346 2265 2870 527 2206 84 2145 1082 1058 571 358 2877 1493 69 2292 2405 345 422 2508 832 2242 549 2025 2985 2964 3322 947 1788 1430 2254 1039 1435 1190 1569 1962 1055 1653 778 2137 370 2338 2495 906 1490 223 3199 567 1557 292 734 2389 193 2271 2073 3178 1906 2067 1785 1353 1156 710 2392 250 2888 632 2212 614 3273 649 410 314 646 564 1221 2137 788 1091 2704 2345 2371 1097 2393 224 39 2125 1061 1945 1851 2846 3298 666 227 20 916 774 653 3128 2376 597 1437 2786 1900 2083 22 3121 891 810 1871 1254 814 1901 2351 3207 2125 2390 2991 3187 1994 1514 2704 2951 2180 591 2972 3097 1365 296 555 413 1881 1992 858 452 1735 880 244 2626 2678 3103 1540 1151 1676 1550 1029 1460 612 1680 1318 265 3194 1682 3217 3033 3261 2860 2801 2285 815 1016 357 2696 667 1216 3149 2402 2096 1052 2688 2434 1815 899 256 162 2449 2274 2610 720 625 1588 1974 1478 3270 1862 1182 3202 2381 655 3146 3196 2659 175 222 3326 1391 42 2400 1146 2083 1759 251 569 317 508 1719 425 441 1000 2134 1066 2588 779 2544 188 300 397 1049 2681 2040 867 207 1370 1042 1087],[1368 2433 1460 1427 250 214 845 1490 1771 1162 2986 161 2575 98 2149 1380 2152 1409 3147 2355 1597 118 411 306 458 2452 1173 1653 1481 2215 2083 508 1319 1202 2923 2557 1416 439 718 846 2589 375 1007 1836 1461 815 875 284 2224 1682 2639 1481 1800 3051 1787 3247 3162 619 1571 2302 2834 1313 2811 1812 2515 64 2028 1590 504 2747 2436 3093 781 1102 2588 3231 1918 1123 186 813 2805 485 3282 2264 207 2728 2182 1028 18 1413 1 2852 2726 471 2323 1913 536 1023 174 2028 1429 270 2780 3198 1372 2040 3100 3290 822 3287 1763 1286 1431 2704 221 2626 2104 63 325 2122 1476 1314 2634 1861 1786 2616 1433 3310 310 2596 2009 1739 2866 1460 1609 909 1159 1380 1859 2969 2326 293 926 1416 656 1148 713 2760 2199 1038 2542 1334 12 2835 3195 1798 2122 1300 2767 92 567 1447 1831 1092 566 1099 2989 2714 139 1519 2354 124 2800 3281 1541 128 2088 2254 547 1946 952 3089 3280 964 254 3146 421 36 2105 3188 128 331 2294 1959 2411 519 718 2072 3233 857 262 3247 981 722 858 181 850 2946 2436 1397 1563 1047 2146 2502 2011 59 3307 91 95 3072 3279 223 74 3232 3171 2486 1410 560 2217 1315 2405 2479 2221 1045 3201 3079 1227 1710 355 334 767 2906 1381 2913 2079 1051 631 2057 1142 727 1800 2080 950 2863 2971 186]]]
S: [[[2 -2 2 -1 0 -1 1 1 0 -1 1 0 0 2 0 -2 0 1 1 0 -1 0 0 1 0 0 -2 0 0 0 -1 0 2 1 1 1 1 0 -1 0 1 0 0 0 -1 1 -1 1 1 0 -1 -2 -1 2 1 0 -1 -1 1 -1 1 1 1 0 1 2 -2 1 2 0 1 2 1 -2 1 -2 1 1 1 1 0 0 2 -2 -1 -2 -1 0 2 1 -1 0 -1 1 -1 2 -1 -1 -1 -1 0 0 -2 0 2 2 -2 0 1 1 -1 0 0 -2 0 -2 0 1 0 0 2 0 -2 1 -1 1 0 0 1 2 2 -1 -2 1 1 -1 0 2 0 -2 -2 1 0 -1 -1 2 1 -1 1 1 1 -1 1 1 0 0 0 -1 -2 0 -1 0 1 0 0 1 -1 1 0 -2 2 1 1 0 -2 0 -1 1 -2 -1 -1 1 2 -1 -1 2 -2 1 -2 -1 0 1 0 2 -1 -1 -2 -1 0 0 0 -2 1 2 1 0 0 0 0 2 0 1 -1 1 -1 -1 1 0 0 -1 1 0 -1 0 1 1 2 1 0 -1 -1 -2 -1 0 0 1 -1 -2 -1 -2 1 -2 -1 0 1 2 0 0 -1 0 2 0 0 -1 -2 2]],[[-1 -2 0 2 0 1 2 -1 -2 2 1 1 2 2 -1 -1 -2 1 -1 1 1 -2 1 0 -1 0 -2 -1 0 1 1 -2 -2 0 1 -1 -1 0 1 2 0 -1 1 0 -1 1 1 2 1 1 2 -2 -1 -1 0 0 -1 -1 -1 2 1 1 -2 -2 2 -1 -1 1 1 -1 2 -1 0 -1 2 0 0 -1 -2 1 0 -2 -2 2 1 2 1 0 2 -1 0 0 -1 -1 1 2 2 -2 0 -1 -1 2 1 0 -1 2 1 -1 1 -1 -1 0 0 1 1 0 -2 -2 0 -1 -1 0 1 1 -1 0 0 -2 -1 -1 0 1 1 0 2 1 0 0 0 2 1 -1 -1 0 -2 0 -2 -1 0 -1 -1 2 -2 1 0 0 -1 0 -2 0 -1 1 2 2 0 1 1 -1 0 0 1 0 0 -1 -2 -1 2 0 0 0 -1 2 1 1 -1 1 1 -1 -1 0 2 -1 -2 1 -2 -1 -1 0 -1 0 2 -1 -1 -1 1 0 -1 -1 -2 -1 1 1 -1 -1 -2 1 -2 0 1 0 -1 0 -1 0 0 2 0 1 -1 0 1 -1 -1 0 0 1 1 -2 2 1 2 -1 2 0 1 1 -1 -1 1 -1 1 0 0 1 0 -1]],[[-2 0 -2 -2 -1 0 0 1 0 0 0 -2 1 1 0 0 -1 -1 2 1 1 -1 0 -1 -1 0 0 0 0 -1 0 0 -2 -2 -2 2 0 -2 0 -1 1 1 0 1 0 0 0 -1 0 -1 1 0 1 -2 -1 -1 -2 0 1 1 -1 0 0 -1 2 0 1 1 -1 -1 0 0 0 -1 1 0 0 -2 1 -1 0 -1 -2 -2 0 1 -1 1 0 1 1 1 -1 0 0 0 2 1 -2 -1 0 0 2 -1 -1 1 1 1 1 -1 0 0 0 -2 -2 1 0 -2 2 0 -1 0 -1 -1 1 0 1 1 1 -2 2 1 2 -2 -1 -1 -1 -1 1 1 0 -1 1 -2 1 1 0 -2 0 -1 -1 0 -1 1 1 0 -1 0 1 1 1 1 -1 1 1 -2 -1 -1 0 0 -2 0 -2 2 -2 2 0 -1 -1 0 -2 2 -1 -2 1 0 -1 0 -1 1 -2 -1 -1 0 2 -1 0 0 1 0 1 0 0 0 2 1 -2 -1 2 0 0 1 -2 0 -2 0 2 0 1 -2 0 -1 0 1 1 -2 -1 -1 -1 0 2 1 -2 -2 0 0 -1 0 -1 1 1 1 0 1 0 0 2 -2 1 0 0 0 -1 0 1 -1]],[[0 1 1 1 1 2 2 0 0 1 2 1 1 0 0 -2 -1 1 -2 -1 1 1 1 0 0 0 -1 0 -2 -1 2 2 0 1 -2 1 1 -2 0 -1 1 0 -1 1 0 -1 -1 0 0 -1 0 -2 1 -1 -1 -1 -2 -1 2 -1 -1 0 -1 -2 -1 0 0 0 -1 -1 1 0 2 0 1 1 -2 -1 -1 1 0 -1 -1 2 2 1 -2 0 0 0 -2 0 -1 2 0 1 -2 -2 2 -2 0 -1 -2 0 1 -1 0 -1 0 -2 1 0 1 1 1 -1 1 1 0 0 1 -1 2 2 -2 1 0 -1 -1 -1 0 1 -1 0 1 -1 2 -1 -1 0 1 -1 1 -2 -1 1 0 2 -2 -1 -2 2 -2 -1 -1 0 0 -1 -1 -1 -1 -1 -2 0 0 2 -2 1 -1 -2 -1 -2 0 0 2 1 0 2 0 1 2 0 0 1 0 -1 2 1 0 1 0 2 0 -1 -2 1 0 -1 0 1 0 -1 -2 0 1 1 0 1 1 -2 -1 -2 2 1 -1 1 1 1 -1 2 -1 1 0 -1 0 1 -2 -1 -2 1 0 1 -1 0 0 0 -1 0 0 1 1 2 -1 -1 -1 0 0 1 2 -1 2 -1 0 0 0 1]]]
T: [[[76 500 1070 2528 2168 280 2658 75 2259 1599 2565 640 3060 1869 2191 2960 432 867 1196 2652 2172 1566 2125 850 582 1113 110 3186 577 2020 410 2663 926 519 3099 2462 3121 3279 1829 2433 3032 891 2215 75 2827 588 564 2809 389 1774 1691 1144 3153 1878 2263 535 2496 2705 2046 337 1502 840 1679 1498 1713 1013 2442 2442 1655 2488 726 2796 1763 864 1215 1427 2157 451 453 1628 1779 2574 451 1160 3074 3037 1915 3326 1928 487 790 3212 29 1287 382 2325 773 685 1912 2046 2798 2470 993 2332 1332 251 1152 1458 2641 2750 2593 2448 705 1024 671 3198 304 78 3155 1455 2115 445 3091 1569 1597 760 961 65 3194 1244 3195 1905 2276 1309 27 2779 2972 2016 2003 2937 2016 506 2267 1140 160 3233 2879 1906 667 1663 2954 1290 1231 898 2923 2697 1443 3072 612 972 2481 2527 214 3086 2724 852 2814 2454 2777 2602 471 69 2974 246 1009 2988 448 3009 945 2520 2972 2137 1501 1090 1162 816 3227 1505 565 1526 27 1416 1544 100 1146 3312 1823 231 2106 1472 2246 2891 68 1910 2713 2681 2305 2058 2152 2576 2128 2305 1623 1040 2387 275 3178 728 1222 671 2350 1147 2002 2108 2383 1146 149 3160 224 2972 1567 826 2945 1592 3124 396 1923 2086 895 1421 2443 2521 2559 2753 2833 2929 1862 1126 2101 1378 3209 2923 693 1488 2663 407]],[[1005 2399 3108 2620 2323 1866 3295 514 2247 1078 1070 465 1808 2088 2115 115 584 2585 1750 1014 439 1471 2062 2116 652 1990 2868 2371 2091 1216 1607 671 2755 1785 1644 1501 2268 1890 2377 288 463 2614 2426 2405 1957 894 2219 1696 982 2051 207 289 2068 188 824 3153 1525 1046 2259 53 3115 2401 1681 3174 721 2979 1059 2317 403 1140 2638 3236 2643 2443 1983 1327 2940 1517 2306 1681 19 1873 1782 1893 1364 2477 1033 146 2764 505 1244 1423 2707 214 3026 1442 1125 2352 446 2544 3276 1147 593 10 626 250 465 1355 2339 1447 1762 829 764 2071 1973 1101 3187 376 1320 3213 2522 1708 1848 1335 1235 2627 1727 613 3177 2778 878 694 2301 357 1119 633 1797 350 38 3031 741 2996 3195 2560 2552 1754 2871 3140 2718 1211 398 2713 2791 2611 398 2300 1118 2835 3285 2100 364 2334 2934 2861 3133 2280 2012 678 1710 128 1393 1763 2329 1521 1240 539 1130 566 320 2025 690 2279 2135 983 593 986 699 541 1792 1840 642 20 616 1481 586 2289 459 1210 43 743 2629 2891 209 372 2991 951 3091 1281 1598 1348 3056 3094 3188 1360 2940 1566 511 2856 1650 2297 1023 353 537 228 2792 424 1650 313 630 217 436 224 1069 2490 660 2145 2186 2609 2982 1822 2559 2040 1783 2094 818 3085 2249 3119 2807 1960 3036 1483 608 1944 1652 1408]],[[262 3301 3241 2572 639 2984 1306 1364 272 355 149 2018 123 2113 1873 2689 380 1555 3239 2201 375 142 51 498 1814 2591 524 2336 2881 2716 2959 740 2094 344 18 147 1151 632 1344 1044 1903 2918 2395 1352 2379 2433 2777 1841 68 2391 2765 2114 1526 2938 999 2667 2699 1977 2921 996 2655 2062 737 1136 648 1618 484 2877 942 971 2964 739 281 1987 3316 2016 3251 2053 1539 2058 2160 2579 2715 3290 651 1619 3322 858 874 2165 1120 3020 1888 2588 463 1242 3082 1796 2446 623 408 2002 2976 1019 826 2289 2433 774 2078 1047 1947 455 1885 2685 3204 857 806 555 3119 953 2539 432 2912 677 1105 806 2690 2901 1392 2087 328 319 631 2398 3214 70 2950 2892 3049 3159 850 3211 763 1589 699 1189 471 3202 2940 1650 211 1725 699 2099 1001 939 928 2852 880 2553 1694 2032 2102 1898 2847 698 3169 520 1513 1292 1962 1193 3073 2542 1005 2208 2335 2723 932 3172 840 3122 2918 1132 567 8 2192 1412 708 2926 2280 377 1538 62 1857 2040 893 2905 3227 2746 1203 1623 1524 693 258 1176 2539 439 550 2524 123 114 2939 2458 220 2700 1140 1437 2845 820 369 285 2213 2582 870 3291 313 1637 194 2637 1419 867 3065 3174 263 1967 2846 367 3278 3255 2583 406 2091 2321 417 768 2046 1473 346 3002 2605 865 1665 349 698 578]],[[2418 1334 1615 971 2066 1763 2952 931 562 1695 859 2930 1363 3198 2224 998 811 1956 1297 1287 2725 2376 2566 124 3226 2498 639 414 2418 952 1602 3146 1500 1352 365 182 3082 2304 575 2783 1349 2792 902 1048 2178 1431 2851 1385 339 928 2220 3303 2982 390 1924 500 3100 57 1750 2924 1852 121 2027 1952 1531 1397 956 1339 305 2099 2467 2572 555 63 2715 771 1960 2032 1649 2731 2077 2785 2810 1788 2037 1475 1379 2001 358 1985 3199 610 2456 1152 1656 2049 3258 2763 1444 974 772 1796 3116 1341 515 1745 1058 384 301 1796 3295 2697 2084 627 1782 1331 2405 1428 219 1335 633 514 1863 3277 1449 2236 2037 2732 1265 236 452 3245 1104 1997 25 2773 1900 1864 628 2524 1157 2351 701 2775 270 2983 1328 1577 3161 2 1936 1656 316 1386 704 792 3233 2424 2091 890 368 1144 2071 2412 1210 1784 106 383 2046 2489 826 219 2716 1783 1278 233 527 2083 932 269 917 1572 2118 1332 813 2471 1877 3015 1791 1822 2257 940 2874 1678 2626 1552 385 1501 2967 1716 2531 1851 2491 1101 1727 2649 1314 156 952 2467 75 3020 2984 2979 761 27 1888 344 1880 2907 1564 2455 2772 1306 1343 3250 3222 2865 2462 3037 2352 2823 298 817 128 3138 3124 503 887 930 1590 1097 2787 2086 931 2820 1199 2715 1017 1363 2933 2957 2580 1886 2831 405]]]
U: [[[2158 213 1715 1971 1600 1671 622 182 359 2653 669 3040 2101 1612 2714 1904 778 375 451 2321 1857 1976 999 676 1402 53 821 1223 2634 2583 1374 3097 2896 3095 2010 717 2262 1406 834 1488 1619 1194 3230 1243 1287 3085 1088 2232 1998 2997 832 2943 1600 2550 3000 1478 586 1781 969 1371 2803 1123 1037 170 3281 3316 2693 2682 2612 663 373 994 3135 585 401 384 2238 805 2534 2437 2768 2717 1533 1385 459 2992 3015 463 2761 590 2289 2168 2585 799 79 2698 1683 135 907 1352 1493 515 1051 1443 1493 3156 2778 1228 2346 3321 2705 2087 2322 2539 443 2823 345 2554 2434 3107 543 2625 2456 2110 3328 2472 1083 776 1573 1847 892 2244 352 1643 787 331 1892 2019 200 1951 2008 3132 2215 2453 2630 930 179 2645 3192 3048 1728 809 2232 41 3091 2403 1913 305 1521 120 575 978 762 1174 1090 2278 2113 515 318 2109 683 1802 148 2241 461 671 1524 3244 677 1944 2379 848 1469 1315 759 2532 3255 2526 1658 1574 2246 3183 1136 1628 806 1344 2611 260 263 1882 2184 2145 1817 3057 2805 1610 3318 1560 1531 861 2809 1675 1831 73 250 388 1413 1436 830 3265 1539 495 265 1034 1347 1452 2759 234 1536 1399 1895 3255 3109 2203 1367 2727 471 2888 1039 38 1954 1552 3243 1643 1946 986 264 2716 2322 2194 1 2230 663 1115 894 377]],[[392 1738 2902 2839 2766 2484 1381 3314 301 2514 1178 2221 418 1091 936 3021 135 1419 3153 758 883 1154 2981 2032 22 2480 1747 3088 776 935 482 2523 2528 273 1228 211 1995 632 685 1577 2537 1851 1670 936 338 977 467 3162 2503 2657 1184 2483 1740 1534 2765 1834 1965 3138 580 1949 2446 3124 2448 484 1810 240 1555 2892 3052 449 2120 1644 1661 2358 2887 2330 1964 232 2065 893 2466 2997 1290 1628 2531 1928 739 656 2174 2673 2878 2263 2188 1454 815 1869 592 1925 169 3141 2954 1837 69 1120 3129 3212 494 2367 1122 2714 1679 736 2627 2009 1682 3172 3102 1886 3051 3202 2674 1991 2039 1790 1972 971 2297 356 1319 2260 1814 2132 766 2331 1336 528 949 1041 407 970 615 2375 39 2618 1019 1175 2419 237 277 1138 2494 1140 144 1713 1248 2475 1000 2998 460 1080 2449 1715 1936 2117 734 1337 3174 865 3008 2709 3321 2797 1317 1274 1768 2496 2428 480 2901 283 2062 106 240 3305 61 1400 1263 22 2118 2207 393 2743 2673 3054 1688 1336 2114 1115 2607 1034 1005 1620 1466 732 143 1496 2446 2379 548 843 2701 978 2071 617 1711 1949 1501 2159 1813 2569 609 1015 2177 852 2881 1394 207 3198 2201 1736 1542 2050 2327 280 1587 428 2833 338 2473 1045 2992 2967 1304 689 785 1400 3046 191 505 805 2834 2183 1153 643 2413 3057]],[[2550 2595 116 16 2023 2379 782 676 2690 2198 2295 1882 2238 724 2366 2510 1221 3214 2798 456 1378 2840 3233 3073 1224 1846 2339 579 3126 1467 2379 2273 1588 608 583 3114 1706 516 778 3007 2701 2231 746 2837 2549 1346 2201 54 1877 2009 288 125 2680 1750 477 81 1303 2299 190 348 2587 380 1973 2636 2800 1911 2400 6 987 2700 1102 903 2152 1091 3310 26 2552 1796 2047 2067 2003 2255 2707 1198 3278 3296 402 2995 871 770 634 554 2369 1096 1876 1694 2845 2006 2176 47 3269 2463 2706 429 100 2092 934 2691 2909 1113 1746 1428 2871 2753 663 2034 1952 2584 1880 906 2506 307 3265 1805 1549 925 1643 710 242 3120 2847 3216 429 524 557 215 153 392 1886 1041 281 1736 1811 3296 1010 1573 1030 444 2137 2131 624 3117 2012 1498 3044 3023 1060 1330 491 3294 3184 2500 2667 2171 434 1086 2365 1786 2037 837 1716 2980 1837 2205 2075 2289 1643 3032 220 1470 1709 3143 2444 2751 13 3327 184 604 257 3101 149 1417 1859 1231 1555 1214 3179 1369 14 2447 978 2894 534 838 1104 3103 1073 1966 1538 1316 1171 1272 158 3192 2944 23 2317 96 2942 1079 246 2999 1607 2943 2112 385 1882 2731 2691 2364 587 913 18 1394 2113 3070 1412 25 1391 1505 2014 1494 137 1750 2689 2863 1255 1950 2029 506 1924 1234 615 146 2820 2531]],[[2400 2792 3095 1673 2902 1693 2149 2347 488 414 3067 3268 262 3261 698 2567 2814 2767 3279 2855 1912 1354 1314 2129 1661 528 804 2741 777 1248 1686 1839 2308 3056 2333 3261 402 2106 2257 1137 1001 1364 482 31 2402 1590 1569 691 129 1887 2323 601 2682 1974 3087 3327 2046 2263 538 3239 2568 1566 3326 3005 864 1303 1506 295 2703 2967 801 939 2359 1383 2214 979 1727 106 2305 890 1003 2139 3320 812 2511 284 1720 2280 2982 2906 3289 1615 2998 413 1631 1733 3175 1540 2549 2809 738 1841 105 275 3144 3201 2289 629 1424 2867 1507 2809 2936 1245 2157 2487 343 656 821 1986 2756 367 1017 642 2909 262 2191 257 2166 1660 1228 1065 1611 2985 142 118 2299 362 1877 1991 104 1371 2196 424 2917 57 2417 873 2911 1125 1495 1668 832 2240 212 1950 2413 2616 3205 3270 85 1822 958 508 1837 1263 2711 1772 3118 186 1330 3294 206 265 2980 1332 2804 2806 1099 2798 597 863 307 1952 1480 2215 177 1493 2663 2770 744 3270 799 1134 270 1041 584 2396 1989 2021 1975 813 2019 151 890 2671 803 1638 257 116 45 1813 3130 2327 2035 804 1366 279 2243 2678 998 336 2703 648 1707 1843 1635 299 1148 1329 1609 107 546 857 3256 1119 2262 2823 519 3098 1522 73 2313 420 3250 2444 1360 1860 3084 510 2055 2254 3118 411 2785 2425]]]
V: [1074,3054,567,288,2038,1411,426,2366,2176,3125,2012,1506,1800,1134,2340,568,1301,2677,437,1238,1112,521,1142,1241,1815,2643,2034,795,1166,741,1876,756,2325,963,3285,836,2755,1719,627,1635,344,202,3250,879,2368,2162,1890,3294,707,1263,2958,2095,3255,399,645,1357,474,1128,1427,2682,250,146,876,2477,2585,2548,942,624,1002,1117,20,16,2666,848,401,3087,3172,1849,1589,3204,810,2955,1870,2468,792,1510,931,1531,622,380,89,2668,1352,1102,818,1472,856,2829,1060,3184,1239,382,2806,2716,2614,775,587,268,552,3042,2612,375,1674,1629,397,159,1593,873,2684,2538,2143,2432,1951,17,3317,362,2705,648,2057,2948,3103,951,1082,3235,2074,2040,1283,2627,2957,2716,656,493,956,1741,3250,989,1264,2784,566,3134,2289,2295,74,3314,2187,3110,1545,2466,1655,230,1223,854,1598,877,3084,204,2247,2023,1601,2321,277,1028,928,1567,885,2396,1218,3077,737,819,1584,2096,1531,1914,1209,3214,2962,2924,20,1140,2540,1318,327,791,2363,269,1953,2989,3274,216,1373,690,309,699,2339,2997,161,1183,2431,2442,2433,2968,1250,910,718,2404,2576,430,87,3310,2325,2102,2458,247,2248,2118,261,2361,2587,1468,1781,398,3239,3155,796,1373,1117,1519,2028,1724,1592,499,3052,2873,693,1292,3318,3220,1606,27,3081,177,59,1488,1839,2238]
MSG DECIFRADA: [0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,1,0,0,0,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0,1]

Exemplo de código ML-KEM

#include <stdlib.h>
#include <time.h>
#include <stdio.h>

#include "aux.h"
#include "poly.h"
#include "polyvec.h"
#include "k_pke.h"
#include "ml_kem.h"

int main(){
    srand(time(NULL));
	
    ML_KEM *ml_kem = ml_kem_init();

    ml_kem_keygen(ml_kem);

    printf("EK_PKE_T: ");
    polyvec_println(ml_kem->ek_pke_t);

    printf("EK_PKE_A: ");
    polyvec_println(ml_kem->ek_pke_a);

    printf("DK_PKE_S: ");
    polyvec_println(ml_kem->dk_pke_s);

    ml_kem_encapsulate(ml_kem);

    printf("K: ");
    poly_compress(ml_kem->k, ml_kem->k);
    poly_println(ml_kem->k);

    printf("C_U: ");
    polyvec_println(ml_kem->c_u);

    printf("C_V: ");
    poly_println(ml_kem->c_v);

    ml_kem_decapsulate(ml_kem, ml_kem->k);

    return 0;
}

Este código retorna a seguinte saída, onde:

  • 🔓 Chave de encapsulamento: EK_PKE_A, EK_PKE_T
  • 🔑 Chave de desencapsulamento: DK_PKE_S
  • 🔐 Chave compartilhada cifrada: C_U, C_V
  • 👥 Chave compartilhada: K
EK_PKE_T:[[[1669 2542 1360 230 3002 1672 1505 120 1164 2700 2067 3212 3285 2648 443 241 1547 275 599 1594 2624 3104 981 1836 1090 1570 3278 2366 2369 505 1439 574 2682 2372 2795 1738 3147 998 3235 3139 474 1491 2824 661 2347 2024 2459 784 1452 793 1814 208 181 3041 1637 2744 1824 1633 1718 1630 622 2134 897 2301 2505 1285 2362 2464 2868 1436 1142 2014 3233 2268 3193 2898 557 2130 934 516 3244 394 204 48 2970 2385 2568 1402 1468 2610 1159 1545 1661 618 2792 767 1823 1359 1322 8 1597 2798 5 702 3094 658 1146 2227 3069 2736 977 468 320 1197 2165 850 2291 869 1786 1672 2161 2768 2381 2269 3298 587 722 966 1668 2934 1941 3211 1981 788 1492 888 1042 962 2744 2647 2935 675 2317 1888 3198 2082 172 1827 3145 2385 3171 2485 1345 2512 1224 1103 1795 410 1682 601 1527 2458 101 2039 3289 2699 1866 757 1521 2544 2017 646 3118 2627 2335 937 2361 3274 378 1105 500 963 1233 2117 2538 2250 950 1807 2561 504 598 2728 1578 1239 2867 3245 762 870 1911 2634 221 2188 3187 2439 1793 3095 2426 3250 1072 2480 1852 1699 2814 192 2005 479 873 2068 1793 827 2725 1021 2939 2136 1383 1573 1199 2806 2408 338 563 1286 449 2044 936 2849 1044 115 2114 1605 2952 2849 1969 2001 1140 1251 1726 3206 1389 435 2631 1852 1522 416 2088 709]],[[1343 591 3114 3276 3172 2596 3234 599 2436 981 1022 333 1983 928 2952 913 222 3000 1978 1402 2350 444 595 1278 1180 3150 558 113 2614 1650 1875 890 2712 3076 695 1199 2854 1320 2675 1859 3164 430 1427 20 3139 90 2142 1108 337 186 2420 516 1845 281 2207 699 3107 2426 103 865 1288 808 2751 1493 458 1673 3038 725 3316 2704 2011 1883 1280 2722 2998 2354 511 2667 2752 63 535 2174 215 502 2514 3192 585 2031 3007 1173 3068 527 1905 2907 2590 1828 1513 2697 2621 645 1589 2419 2632 190 752 2797 2506 3227 1250 18 408 1336 1594 877 2733 2544 729 725 1425 1759 3321 660 124 1008 384 1653 1662 689 2720 96 1156 3173 229 2076 1282 2173 2707 2435 2087 2144 763 334 1197 1098 604 1519 2007 2406 2956 1582 22 1633 984 2153 2800 1773 1288 2075 1893 1787 969 2438 918 3272 194 1038 2358 3247 2018 1497 782 1639 2588 1323 2168 1738 3253 889 112 327 123 1622 2981 1643 614 2918 565 614 2214 1567 9 2339 1563 3069 1861 1867 3206 82 35 868 2781 713 437 1057 635 3287 3246 685 2661 1410 1579 1218 2601 2260 521 1580 1140 578 1325 522 2560 1171 3173 1286 801 1044 3269 1884 2718 232 140 798 1320 2270 981 1646 2382 1068 2009 3252 1471 815 2914 1251 528 851 3069 2382 2346 1979 1448 1057 2213 838 2047 2841]],[[1734 2398 1040 1603 1710 770 2842 982 1789 1217 1485 385 1660 1459 230 2303 1326 2888 572 1190 3105 648 2599 434 2458 1894 1487 663 834 1649 910 2681 1413 2742 3207 2397 1197 420 2980 2203 2692 2494 3181 2744 2978 2136 1881 3149 216 2652 2694 472 2158 1785 2393 1291 2881 1311 1264 1119 1557 628 689 558 494 589 2906 2522 679 1982 1108 46 512 1601 2665 326 764 78 1252 1684 2020 609 2568 1173 2713 2619 2143 121 1234 2485 2503 2507 2077 2510 512 2540 8 1821 1959 1057 2233 2046 2237 712 2338 2987 2667 2873 1723 383 3162 595 1699 1334 2725 2126 2851 3059 1120 1269 480 2764 1989 1286 1817 2506 3027 2991 394 1564 2279 2859 125 93 145 1191 1486 2306 2349 2697 1685 2760 2338 1479 37 1800 1343 1309 100 1453 1213 257 2569 2220 1347 181 1633 2176 431 2481 1697 908 1428 2381 1980 2257 1914 2877 2195 644 2284 767 2540 1549 153 2706 1554 63 2906 2485 1119 3110 2324 2471 2083 1972 1427 445 2547 1593 2528 2697 2732 3229 1602 3129 179 534 2280 1487 3240 1539 865 1953 2057 2509 1105 919 1169 1142 2556 365 941 1554 2070 134 3213 465 2718 1859 855 77 1405 2390 2028 1414 2717 1980 1202 3185 2959 2590 2805 1014 1585 1670 2670 2002 1717 2428 2520 2010 991 1436 428 1843 2316 2194 248 1893 666 499 553 98 2049 1417]],[[814 2920 1407 2397 2552 2494 3247 3024 2753 3018 231 2622 780 2450 758 677 1160 249 1458 1078 225 949 1829 2226 1150 526 763 2826 952 1333 868 983 2643 481 297 2176 2421 971 739 3082 118 675 1300 891 1661 2604 2283 2462 612 1181 1439 637 2185 974 1406 832 1497 2019 104 3210 2762 1148 1599 1162 515 1534 213 2802 1953 3038 733 1731 738 1605 1547 889 3205 3196 2868 634 1218 1596 1069 980 2350 1225 1556 606 704 3145 410 2407 1927 2769 2606 2425 611 2432 77 511 2860 845 2943 2365 153 538 1994 292 2572 532 1368 160 85 1930 1161 1338 516 2947 147 191 1834 840 2372 1769 1653 577 1823 1879 72 1761 1845 2059 1309 414 1150 896 1727 1827 506 2717 456 1640 866 120 2180 899 387 2180 1631 2647 152 21 2019 282 1923 1230 1429 589 496 1473 150 2179 2214 1916 1382 1786 1203 1196 1781 492 1389 2665 1153 876 1175 2703 2607 2680 2896 2103 1079 2643 2577 905 1952 158 831 1104 378 1670 2149 1523 1984 937 2073 683 1249 2457 966 2295 1202 1937 2335 1221 1973 3128 675 2054 2382 1065 3018 474 2773 2355 2700 327 1268 1796 2961 1299 797 687 923 444 1406 224 1543 438 1003 2577 107 2011 605 2207 2466 745 2375 2386 2866 1377 729 2515 1218 1 639 3209 1275 396 183 50 2458 2266 756 1823 2803 885]]]
EK_PKE_A:[[[1462 3242 339 617 2492 3218 976 2952 1050 272 1924 876 2379 766 1989 3125 3034 630 2266 2571 2778 234 926 1952 1827 970 1275 2789 2846 2296 404 1968 3198 743 2585 2361 1620 233 1985 2670 505 1568 1205 543 2334 3195 339 3027 496 2605 3257 933 499 855 2886 3314 1825 832 2774 1343 3129 837 970 2998 2569 226 3018 860 1447 2662 1190 2941 902 2395 155 895 3249 495 594 417 759 522 1350 2246 2365 1895 2232 862 2728 2665 3193 187 174 834 3185 402 2048 533 1262 167 3196 2452 3108 769 2507 922 2652 2427 1417 3246 503 2177 1428 2842 1094 464 1408 985 2314 1795 322 3166 1982 1484 1659 2826 1886 379 31 807 1534 886 919 2301 1655 97 3223 978 183 2300 1884 687 2136 3312 1188 889 447 2596 1875 421 2051 2197 258 704 352 1918 1190 3226 3285 2209 704 1490 3095 1623 1450 1421 2708 1344 58 2892 315 2930 1238 2451 2913 85 1000 1020 2681 2875 1441 2391 2731 1699 3096 742 1276 1945 639 1232 825 2331 381 591 1614 2819 2012 993 1823 3058 1544 3126 2660 441 3237 3232 526 908 923 867 454 2364 3258 3185 1723 684 598 658 2629 1237 2879 125 1227 919 716 2841 410 387 506 2233 1105 3038 2030 436 151 2926 1327 1665 505 2251 2532 959 2274 2462 815 1656 805 2401 2315 106 1297 1865 1219 2525 443 3088],[2037 853 3311 202 745 1087 3241 435 2511 1051 32 1498 2716 538 420 1920 2485 353 2041 960 2010 2846 32 1984 611 1330 1508 1831 1514 1951 1426 222 464 2396 1413 2197 1143 1325 2632 1313 2376 324 2811 1763 862 3231 1342 18 1244 54 978 913 560 1999 2897 1171 988 2064 661 2502 1674 3075 383 2138 2143 1796 1007 3286 780 1298 1270 3156 1622 1741 2579 2484 2631 592 162 546 647 2128 1459 2195 798 2015 37 2774 750 1687 1947 84 1433 3319 2222 247 2774 888 1192 226 2187 122 53 480 1863 2632 624 1165 884 1774 2700 1531 573 1818 1385 2360 505 1422 1805 2243 3109 1412 2327 2202 2390 2209 108 1835 3097 1301 2061 2943 2411 3103 95 1933 65 1707 757 949 152 128 139 1713 2935 1524 1732 111 606 1197 13 1374 2609 0 247 2658 3197 356 1164 2965 2645 885 239 1727 1647 1322 331 1712 3029 1088 321 840 2205 460 2553 1811 2973 1945 2910 250 3142 582 1624 81 582 2860 2739 1438 3216 1562 1075 191 2447 2302 1918 765 295 3237 137 983 1984 458 1823 860 918 2035 330 562 651 3240 1800 464 494 96 545 2064 2956 943 174 502 2506 2237 693 2612 1210 270 49 2493 1166 1174 147 3150 1632 1970 1670 209 1664 2000 1760 2316 1912 231 439 65 1315 1973 3117 1930 2916 950 2432 2093 3187 784 1377 1896],[2042 2414 2208 3208 259 2355 3030 2879 1984 1371 3088 320 42 1519 295 2942 1751 734 666 725 366 455 2656 3283 2393 2747 3035 3240 203 1083 1967 3233 1156 847 3113 2403 861 473 1953 2846 1844 2701 3166 2874 891 1120 147 301 1854 1801 1027 2221 3244 1342 3163 2309 760 2869 2220 963 1612 1846 1856 2768 352 1640 2831 1214 2113 1455 731 1616 827 1556 2149 2707 2676 3284 667 2189 1757 2682 2069 2660 695 1903 1640 1456 2432 531 78 715 37 1934 154 389 245 2985 2591 17 2100 981 2621 586 2537 2430 3293 2872 44 1620 2721 1801 973 1461 1133 1669 1024 432 3125 127 1952 3203 842 1989 2797 1984 37 701 2629 2629 1707 1400 1269 999 2974 1466 1088 598 1009 1133 2218 401 593 3191 2851 2714 2519 546 3147 3303 673 2758 837 2503 2406 305 1158 2443 1006 1446 2731 2713 505 672 1372 151 3126 2460 749 806 1252 626 2196 1846 1476 2706 2219 667 3252 3025 641 1584 2454 1478 758 1531 2771 2904 1634 449 1022 2024 821 1527 355 2193 2666 152 2313 1074 1947 236 1700 1802 3070 3177 1179 2949 515 2090 2645 2144 345 2759 1282 2091 961 724 2654 254 2161 1335 2279 2983 522 293 1847 3188 446 1819 934 2393 2056 2634 1854 2785 141 3033 2405 656 2782 2710 460 786 2140 2730 2877 760 125 3190 1015 3275 1197 953 2929 742],[1246 2435 1578 2680 926 171 2732 641 2806 1257 97 2947 1949 162 1263 1402 2872 2711 2188 1683 2112 2724 2443 3225 2586 1117 3171 1442 2070 430 3161 976 2866 2398 327 1451 2570 3060 2092 3035 1976 2189 312 597 10 2563 2987 2882 2933 1847 1236 1716 2230 1339 2601 2475 2456 102 588 2186 533 1408 821 1058 1466 1148 2509 707 1867 2260 1401 515 2108 2701 2100 2119 2924 1758 1672 2528 1264 568 1904 166 1907 1176 300 2022 2266 889 879 458 3285 2688 1516 1422 508 1684 3117 34 615 2177 1537 2724 1550 308 2502 1145 3055 845 344 990 1413 3236 2144 979 2071 2445 3002 1009 993 1540 1467 949 900 643 2372 2396 3315 2160 89 1590 1009 1627 1973 218 1935 1146 2351 2649 1991 354 311 1064 262 114 3031 2333 2559 363 13 223 1904 2469 2161 463 3112 2192 518 757 1023 607 2347 3020 3222 991 897 2817 2137 3248 2137 1788 274 2448 511 536 2563 213 2869 2781 1565 542 664 140 3011 2825 1591 453 1688 3097 2198 370 1363 1217 1050 1257 3196 1947 745 2993 1867 2882 2440 2141 2990 2951 336 3212 823 864 2664 2388 1406 3328 187 2076 483 2766 188 3159 2534 2387 201 1557 1263 2239 2814 1130 857 230 794 383 771 893 2524 432 1503 519 315 3315 1384 2980 2374 449 638 221 2526 2110 646 2714 1940 840 1772 2141 2397 2941]],[[1051 1882 1825 2897 3100 278 3280 542 1172 135 975 2675 654 2278 2661 3026 2917 2695 147 227 575 2673 3325 1221 3046 1936 3049 2478 1737 2117 3172 447 1658 1668 15 1429 1947 955 1972 778 1090 606 1112 2732 2884 445 2430 132 799 2577 1347 2362 2909 1343 1242 2626 3279 963 2763 1687 3080 2607 2135 1410 946 3138 498 552 764 2470 1330 1854 735 102 1258 1279 1535 1347 1411 2334 595 2758 2355 1163 1760 268 1448 1710 1231 883 1057 1971 161 3192 1040 2095 3001 1538 2648 437 1668 1637 3279 2403 1739 2196 1341 933 214 2752 3267 1797 3169 3281 619 1600 221 2068 970 1452 2951 2027 1082 771 1890 2122 2866 2550 332 3173 646 2988 2470 1585 2062 1868 452 75 2802 1655 486 399 123 327 352 1731 2915 573 470 556 3013 1080 2583 767 1851 2132 548 1388 2342 1868 2221 647 1527 1362 2232 1249 3230 344 1324 362 1999 2798 762 3110 784 1114 1512 371 2675 2970 1915 2359 721 2158 785 2572 1949 2322 1620 962 861 512 2598 48 2862 1501 1297 422 2833 280 785 1503 3078 1547 2273 534 320 1444 905 2995 1086 479 3013 1807 2637 1458 2039 1258 451 330 3208 2300 1830 2477 2348 1363 1638 316 1785 1142 596 229 305 1334 1776 2578 1868 3084 693 432 2750 2767 911 94 1246 1208 1552 3285 125 2991 1274 992 2950 3104 141 934],[2126 2767 3274 1570 1568 1530 1800 1873 523 1235 2110 2391 991 463 2823 1400 3230 405 2482 2135 2601 1693 3079 2726 1355 1024 390 977 1787 1519 606 584 957 1539 3143 184 728 1614 2058 1251 508 1827 313 2487 2290 795 1547 3180 2189 700 1986 1461 2394 1737 859 1408 420 2237 44 2208 427 650 451 2372 3178 265 2556 577 2867 1285 2817 47 772 789 193 3062 1585 2728 2913 445 100 2559 2894 153 967 424 1561 1387 2661 2594 1254 747 3244 1706 3119 752 1971 2347 2318 1510 1291 1806 2545 2063 2595 397 2785 1839 3126 28 2284 885 2587 2838 1038 225 3262 258 2601 254 2852 526 1989 427 3220 1780 1179 1863 1786 1156 1032 736 2962 1236 459 3217 2621 903 1727 2418 931 1671 3303 190 1180 2000 1403 2101 3247 1663 14 429 2190 2992 856 3069 1443 3024 2591 888 851 294 2612 1473 2518 730 2349 1811 1633 747 1888 2565 77 2851 414 2245 2510 1817 2006 2428 152 2020 517 1 1683 1373 3070 785 2056 2333 2661 567 286 1945 3028 464 2675 2048 2275 1968 454 1822 1204 532 1344 1618 2777 1514 1094 1454 1601 1246 1134 2118 1247 476 163 1977 1262 3207 981 1582 1433 2255 1186 1132 2719 533 3180 2653 160 306 1147 1364 1826 150 641 1274 1664 1735 388 3266 2982 2510 2055 1888 2986 3206 536 1907 744 2505 161 2177 1432 1905],[969 1810 2868 820 1135 687 2114 3270 2051 611 91 2692 1886 2744 2087 3262 340 1740 2443 54 1287 3088 920 2812 2655 1664 1988 475 1500 1079 2810 2469 2890 9 3290 1684 696 2075 1625 2748 346 2704 3099 3220 2119 1857 3153 118 1256 3255 173 203 673 1093 3015 3328 416 2662 474 1916 413 3285 1057 962 3294 2006 2646 661 1740 942 1068 2086 317 839 1977 96 355 2789 214 2600 374 1375 2803 1048 2468 148 2035 2884 2810 2510 2460 3223 125 1176 856 90 3182 1161 1739 2581 2103 2808 2327 80 1306 975 1164 2649 1424 1378 1920 1798 2754 2382 505 2881 2530 2541 96 2012 1722 2556 2894 2835 403 1410 2925 1244 2571 1335 1484 2334 1802 482 2414 3108 2446 249 2429 541 2615 2008 3327 3028 1062 504 240 263 704 336 3263 85 551 2829 2920 1942 910 2516 845 152 1510 2329 145 972 2812 2559 1739 2917 467 839 129 742 507 1115 1429 1569 1619 1669 2820 2323 2993 2755 2408 1203 3243 1999 3145 824 2174 1649 1964 1344 650 2110 2316 1121 2328 726 709 455 2554 1826 1197 3061 2941 2626 2289 2220 1955 1780 2202 1619 2194 2270 2823 2108 1928 298 2932 774 1948 2556 3106 257 1337 3081 2366 1324 1466 734 1779 691 2560 635 1411 3160 921 371 2051 2876 3140 1913 1166 2005 854 1648 785 2782 2935 1376 1215 1554 603 992 2799 2141],[744 1836 924 3199 2570 362 561 2789 998 2961 279 1919 991 2331 2454 802 1903 291 467 2757 2928 1252 2210 2534 2628 97 1747 891 2077 1217 490 481 3053 2402 351 3282 424 1900 401 2410 1532 680 1000 183 670 1113 985 2573 2392 1452 2001 1991 363 1871 2184 651 1968 602 1542 1704 1819 3020 2185 2531 2094 195 143 2518 2096 544 1599 1287 1225 258 1470 1895 1371 115 2128 1422 2555 800 85 2919 2671 2269 241 2298 2872 2771 674 2350 2462 518 2541 1227 714 2684 1404 2810 888 662 1756 2113 1908 3227 1667 938 13 466 2361 227 2255 105 3146 1597 2374 1046 1555 2905 488 3217 2915 2951 406 2127 1837 2108 1482 901 2577 29 2551 1005 2142 1131 1891 1469 2069 2892 2923 2089 3119 1849 2194 2937 1106 2228 1642 2661 1804 3119 208 1390 400 614 1176 3225 382 318 797 2959 347 20 1623 2490 2139 185 1618 1867 3077 1212 628 2868 3062 481 135 1827 2709 2765 1159 1185 2555 1367 234 2955 2969 1411 2852 22 1729 1308 641 3064 1328 2264 3213 1126 2450 1502 2994 3186 2715 1281 384 107 1762 519 1934 1143 944 752 2328 170 3107 221 785 406 2620 308 1417 2008 1616 3046 1744 604 1981 1628 2718 2090 3131 2383 1948 176 335 2332 1271 2098 511 864 3241 1455 2604 3228 1625 2382 1108 69 447 400 377 2852 67 2982 2569 179]],[[1245 1222 1099 634 3312 1889 677 2919 3053 1012 2911 995 769 93 2847 1669 2536 2122 2556 1820 2163 1324 1890 2610 1724 2267 3122 2779 2908 2362 1262 824 255 20 2447 1227 1909 3124 1805 1633 1795 1387 287 2565 1480 3134 1893 1675 1927 2109 167 1749 104 2057 2018 1828 1983 1811 2266 1563 845 1187 46 2088 1207 2493 3315 3116 3276 1792 2408 1743 838 2695 1967 3307 2500 1519 1653 2086 299 1820 506 403 548 184 3219 2532 1995 2157 1754 2840 15 1800 1600 1223 1953 2574 1998 1900 1037 2066 314 2864 1432 3269 2842 1592 1460 1166 1337 1759 646 2832 3151 1194 3016 3041 1385 1682 1869 3139 1194 2873 2599 453 1755 1223 3027 424 3123 1724 149 1097 1259 1582 2025 772 833 1144 2926 2170 2904 243 1673 385 2426 2348 97 1470 702 1967 2269 2884 2499 1539 8 925 421 3035 2337 1203 2418 2487 2300 348 740 1985 2108 2561 3129 2694 1402 363 596 735 748 3022 3083 846 2152 1444 472 1092 999 2971 2631 1995 1555 711 2690 563 1914 1779 3050 886 3116 1449 530 2883 681 330 2248 3072 1682 504 1466 2430 1185 2208 935 8 324 2395 1100 2311 3025 1390 978 1251 2101 1327 1815 687 3106 2524 2561 552 1633 3091 107 2314 1080 14 3045 2762 1506 1182 2852 2692 62 1446 2700 1374 513 472 356 209 2850 2322 2449 1623 320 1923 2310 1581],[1118 2530 1638 410 2292 2733 2725 1031 407 100 1453 1913 1283 976 1276 2333 81 648 378 594 2108 1722 1792 1629 716 912 911 1036 2835 3221 3110 1612 81 1420 2023 32 1812 2407 1064 3207 2507 176 1792 1449 1152 727 1441 2221 2363 2807 2816 1142 1201 1279 431 1917 3179 1342 612 344 2223 1382 1956 2304 2802 1638 2337 2273 1704 1060 2152 883 1236 1603 3320 47 2330 1433 2268 2353 911 1755 166 3100 693 1585 1688 543 2928 3289 887 2810 1342 503 1785 1803 3129 1781 1735 1505 2841 558 2388 748 3149 38 795 3139 2459 3064 2163 42 2478 2329 801 3172 1574 149 1374 2161 109 3250 1642 2439 1412 1086 1901 1212 2868 307 2717 2380 1854 2764 788 1674 2803 1583 1484 1933 2306 318 2963 1456 307 436 2287 2869 585 1320 1701 1682 1241 14 1780 2653 2088 352 537 1627 1647 913 1667 172 349 2455 2835 811 1697 1978 403 1663 3285 1026 778 1251 1462 3065 791 3035 1056 2492 2376 3286 165 827 269 2253 2167 806 1540 485 2708 3207 1646 3057 3321 2140 539 1689 789 942 23 745 1968 801 1996 1089 1525 446 1783 241 2938 1818 1186 762 304 1455 675 2471 3250 2215 616 2629 3081 3250 2357 3073 2061 555 2421 2850 2485 104 1255 2113 1893 910 3202 90 1357 2645 1319 1954 1134 2505 2717 2427 1619 63 2557 1540 2278 3173 840 1569],[753 856 2762 2814 2399 1854 2336 1556 1958 1250 1328 523 2160 2189 1601 188 1505 2920 2143 299 3084 2519 2726 1374 2582 1954 2915 2519 2787 1414 2208 211 3259 1641 685 2329 1154 680 1544 3113 1930 2872 1295 761 2721 2896 1938 897 2487 1740 2184 2242 930 1581 1275 1171 1195 861 361 1641 3264 228 2840 3194 2857 196 3182 682 876 2386 466 2806 2917 1761 1227 2309 2316 3165 866 1474 1576 3050 1375 165 2291 2651 1336 1145 1171 1697 2786 1106 2913 2297 1959 2441 2494 1813 3123 1029 1858 1249 507 1446 669 1734 427 2986 2558 1293 2119 1793 2002 1154 1958 964 476 953 2109 2635 309 2554 413 3222 1523 31 2334 1676 1844 2128 364 373 1036 871 2808 1706 264 3235 2351 481 2187 1141 2274 860 2295 1891 2813 430 2844 2581 3066 3153 1807 1138 705 989 1169 3039 2665 673 2827 3029 2034 534 1560 1513 3228 2812 2407 2250 3294 2253 1051 3227 773 1005 2778 257 2424 3281 2838 3149 765 1316 958 1470 2305 3115 1181 2629 1447 1667 3318 153 3189 2537 2654 3089 2020 1733 2998 2973 657 1708 531 1430 2714 3309 2675 1809 3261 2185 1629 697 1160 246 3156 1125 1020 1996 1413 2468 334 2390 280 194 2586 2934 942 1278 1338 1600 1910 2984 3308 2441 1085 352 2421 432 3149 13 276 2437 1698 2424 342 1525 220 1363 1180 2622 1490 1514 1683 78],[2697 941 2363 1298 3207 1361 557 1788 1016 537 1889 3089 1877 1969 1180 2686 2970 2444 2782 1340 1540 3125 524 2748 2147 1705 2041 308 878 396 3066 1234 2325 2100 2533 2203 1120 3090 1650 2136 1286 1198 2885 823 3168 736 180 2809 3181 621 1808 1392 417 2333 811 2564 1697 512 531 234 908 268 1469 892 28 673 3095 1148 1422 2404 944 368 274 500 1191 1101 2224 2359 581 2076 2980 2390 1127 1057 2382 2927 1280 750 110 1812 984 2006 3068 112 2898 755 785 2664 2892 3196 2727 507 1223 660 1995 2414 1761 890 2432 2343 2967 3071 2392 1753 799 1445 1351 2080 3183 1461 1551 838 1126 1290 951 695 3034 2724 1018 2597 250 417 763 1473 1077 2758 1546 2839 1307 1637 2841 1933 1380 1904 358 3167 20 2697 2906 3203 1818 1128 1700 2944 78 310 311 3112 694 1329 39 1932 2734 802 77 483 1219 1623 981 2526 3261 493 1131 2300 56 1489 2138 1064 1845 2704 1926 334 503 297 3279 1569 1596 261 2340 3278 2578 2379 1881 1984 840 1958 126 2059 1241 1107 2245 2161 2588 47 2120 303 2524 929 1367 1040 1292 3293 2363 2784 1249 2313 1024 2845 233 1024 453 2811 1062 2335 2454 1903 1952 2580 1621 3193 1346 1525 3013 605 1572 1804 908 1755 393 3263 455 1685 3227 2818 1140 1148 2790 3153 1652 682 848 2106 1152 1910 1112 1732]],[[1472 3064 2858 753 588 876 2278 1260 2469 1510 3065 1037 3265 1117 971 1379 2802 1858 1856 1602 3006 2305 1426 2317 2987 3262 1094 811 2831 3194 1089 1963 589 1606 2716 2165 141 2653 96 270 834 820 1307 1759 1937 3266 3138 1411 1795 2654 672 2460 1630 2098 2437 1289 3019 1190 2100 2521 1056 848 1155 2633 2454 1530 2457 255 855 212 525 1689 1033 2820 1107 2970 2757 917 2040 2212 1230 2712 2331 2860 2469 1439 1808 3147 2630 1567 3328 1345 2415 1154 1637 2529 344 765 443 2187 977 968 547 2998 459 1655 299 875 231 2339 3087 2449 2711 3078 1980 2839 1188 1448 2658 1477 3015 2657 481 3090 1470 2118 3278 2802 542 392 1660 2508 1360 3196 3165 2807 2510 135 353 400 2475 1100 2849 2845 849 2488 14 3025 607 2672 2162 1282 2988 2643 2031 2118 2421 1980 1591 622 31 3252 3130 2379 778 2967 1857 3288 3102 2210 359 3236 969 3208 411 2806 26 426 2503 634 757 1336 2904 1405 1638 1606 194 730 1245 2773 2341 1276 355 2142 326 1133 2768 3171 1092 201 3040 2439 1096 681 3306 2496 158 4 2922 320 1626 1338 2644 1201 2743 954 2807 596 2672 723 41 1684 2987 1384 1486 3313 2518 1913 3155 1269 2114 2866 380 870 1206 1345 37 1365 1349 618 1685 634 2944 1001 1835 18 2943 2301 614 3274 683 1643 1630 341 3028 2683],[1313 3205 2688 1139 2133 2462 1665 172 3 2871 1518 1028 1895 526 2634 1240 1161 2249 3229 2996 2267 2843 1969 541 2788 311 3172 2077 653 2871 511 1966 406 859 765 2540 3321 89 2712 983 2960 1889 2011 2515 2416 1316 426 248 1224 326 3244 163 828 2872 1692 1275 3184 1535 1012 1496 2066 1523 133 2472 2382 1886 2671 33 1975 3043 1016 2595 1603 686 1781 690 2990 2207 938 886 192 1842 2037 1020 1385 400 2295 2228 1935 3307 395 672 2490 1517 804 2531 1062 146 2565 3038 3189 1240 2304 2452 1927 756 3142 2576 622 1740 133 814 253 3158 1834 2626 229 1788 2514 3153 2755 568 1484 1916 2085 2288 1118 807 94 354 516 942 1595 2820 65 1181 1235 3208 428 2845 2607 1550 330 2860 1379 3152 3145 2597 2599 2330 80 2025 2899 1564 612 2643 1512 2719 121 1606 732 1625 2548 2327 2104 2614 1167 10 152 1596 2855 2759 805 844 3278 3172 1655 753 2440 926 3084 179 2951 313 1744 235 2956 915 613 737 2521 1345 2362 2728 1332 1138 3001 2499 2136 812 1754 2651 1230 2559 1154 1179 2403 2810 1933 2502 407 2676 2682 29 2989 2085 1252 275 3000 1865 2000 3180 3211 1034 2579 2202 3160 2252 1372 2955 3064 3127 2277 966 16 1091 3133 2419 572 2725 2581 979 2072 1934 1996 2720 690 3249 2996 1349 2773 1667 1200 314 360 1525],[2516 1179 361 1548 806 97 1346 742 2051 2350 1833 1855 1441 2405 1252 1681 1043 983 286 3040 375 1964 619 1030 972 1051 2697 2172 2354 3058 281 1541 1896 643 748 2702 1728 2094 1104 1438 2104 2937 3293 1204 3002 2204 2885 716 847 3171 1415 1222 2794 3022 2252 437 745 2608 268 758 3325 549 3287 1893 2180 707 2254 579 460 29 3005 2564 2967 2970 439 2640 2833 3324 1015 1339 825 90 2561 1278 771 2472 2703 2504 2740 2971 3262 2736 1180 3221 2288 31 599 1214 1599 1059 1243 1275 295 881 1904 1722 1180 2397 1718 3184 407 202 933 628 1481 1704 759 855 880 170 498 813 566 2666 1693 2854 2697 2292 739 1955 1011 1983 3231 2294 523 2794 687 2692 1862 64 2547 3258 267 1139 557 1748 2843 2304 262 1382 2475 1748 2196 700 1085 560 225 454 512 1953 68 1523 1595 958 488 2118 424 2163 2469 3274 2228 2675 862 2495 485 1419 1902 988 1383 2164 2370 1517 584 2225 2217 2657 2786 101 770 957 2054 839 139 1308 1797 627 1086 3209 2790 226 814 2677 2902 1676 1843 58 755 416 2034 2138 240 1076 326 1812 3301 202 1140 417 303 1911 1374 17 409 1513 1325 2206 3128 2411 3075 249 2638 560 2926 3199 2236 2429 916 2991 504 2951 2788 744 698 3114 215 670 3316 1356 1088 1279 926 121 1296 1335 1635 2236],[1200 2422 2692 946 2671 2001 1506 3257 2859 1402 2357 446 1064 520 68 524 1265 766 1297 2468 1437 2273 495 184 1211 2409 305 2507 415 1940 2787 1616 2022 3138 2562 2352 2798 1728 2280 2328 3130 2296 2775 1853 2817 2843 36 1741 281 2322 880 2706 1266 2364 2890 2477 1444 3195 2643 2848 2795 3089 1135 1488 2899 1356 511 2368 743 451 2356 544 2747 1802 57 3223 1316 93 2623 2585 2415 175 1962 1340 198 1523 1476 1642 1390 790 2149 856 1539 3284 3 2097 2300 514 2124 702 965 1151 2235 1372 2953 2292 2254 941 2385 1549 197 2460 2712 3148 471 2910 1342 1948 2211 2732 397 1032 1247 2924 1975 1250 1692 1934 2753 488 2637 1377 2627 1543 408 2252 506 2663 852 550 883 2037 3010 266 1856 1141 835 3199 748 3046 261 2133 749 2497 1729 2725 418 1080 1330 830 2556 1626 2208 1855 3169 2616 778 1334 2938 1630 1885 1480 1326 2554 2734 3183 366 240 712 2102 3287 1961 907 1695 1129 2636 1091 2536 1375 81 37 603 2695 3233 2458 2536 180 3236 541 777 2525 2426 2258 1510 2640 1663 1364 665 1904 3064 2768 2850 1697 346 1216 485 641 3296 3021 2016 48 718 278 2743 1610 2736 2938 2778 302 151 227 2827 236 2485 1997 2876 819 32 1201 382 756 640 3232 112 1974 1120 597 2615 1087 1278 2290 2123 2984 2569 2525 179]]]
DK_PKE_S:[[[0 -1 0 0 -2 0 -2 -1 2 0 -2 2 0 -1 0 0 -1 0 0 -2 -1 -2 0 -1 0 -1 0 0 2 -1 0 -1 0 1 0 0 1 -1 0 1 -2 2 0 0 2 1 0 -1 0 -1 0 0 0 1 2 2 -2 0 1 0 -2 1 2 0 -1 2 0 1 0 -2 -1 0 0 0 0 -1 1 -1 -1 -1 -2 -1 0 1 -1 -1 1 0 1 2 -1 1 -1 2 -1 -2 0 -1 -1 1 0 -1 1 1 -1 1 0 -1 2 1 -2 0 -2 0 1 2 -1 0 -1 -2 -2 -1 1 -2 0 1 1 0 1 -1 1 -1 1 0 1 2 1 0 1 -1 0 2 -2 -1 -1 0 -1 0 -1 -1 -1 0 -1 0 1 -1 -1 2 0 -1 -2 2 0 -1 1 -1 0 0 1 1 2 -2 2 0 2 0 -2 0 0 0 -1 2 -1 2 0 -1 -1 2 -2 0 -2 -1 0 0 0 0 -2 -1 -1 1 -1 -1 -1 -1 -2 1 0 -1 0 -1 -1 0 -2 -1 2 -2 0 -1 1 2 0 0 2 1 -2 -1 -2 1 0 0 0 0 2 0 0 0 2 0 -1 0 -2 0 0 0 -1 -1 1 1 2 -2 0 -2 1 0 1 0]],[[-1 2 -1 -1 -1 0 0 -1 0 -1 2 1 1 -1 -2 1 0 0 -1 0 -1 -1 -1 0 1 -2 0 -1 -1 0 0 1 2 0 0 1 0 0 -2 0 -1 -1 0 0 0 2 -2 -2 0 0 -2 2 0 0 1 0 2 -2 2 -1 -1 0 0 -1 -2 0 1 1 -1 0 0 2 2 0 0 0 0 0 0 -1 1 -2 -1 -1 0 0 2 -2 1 2 -1 0 1 0 -2 0 -1 0 1 -2 -2 0 2 2 0 0 1 0 0 -2 0 -2 -2 0 2 2 0 0 1 0 -2 -1 -1 1 -1 -1 0 -2 2 1 0 -1 -2 1 0 0 0 0 0 1 0 1 0 -1 1 1 -2 0 1 2 1 0 0 -2 0 -2 0 0 -2 0 -2 0 0 -1 0 0 1 0 1 -1 -1 0 1 -2 0 2 0 1 0 0 0 0 -1 1 0 1 0 -2 0 -1 0 0 -1 -1 1 -1 0 1 2 -1 0 0 0 2 -2 -2 1 0 1 0 0 1 0 -1 0 1 0 -1 -2 2 1 0 0 0 -1 1 1 -2 -1 -1 0 -2 0 -1 0 1 0 2 1 0 1 -2 0 -1 0 1 1 2 0 1 0 -2 0 0 1 1]],[[0 -1 2 2 1 0 0 0 1 0 -2 -2 1 -2 2 1 1 0 0 2 2 1 1 0 2 0 1 1 2 -1 0 2 0 0 1 0 -1 2 1 -1 -2 1 1 -2 0 2 1 0 2 0 0 2 -2 -1 1 -1 2 -1 -1 1 0 1 -1 0 -1 0 -2 -1 0 -1 1 -2 1 -1 1 -1 0 -1 0 -2 -1 -2 0 -1 0 -1 0 0 -2 0 0 0 0 -1 -1 -2 -1 -1 0 0 1 2 0 1 -1 2 -2 -1 -1 0 -1 2 -1 -1 1 -2 0 -2 0 0 1 0 0 0 0 0 2 2 0 0 -1 1 1 -2 0 2 1 1 -2 -1 0 0 2 0 0 -1 0 -1 1 0 -1 0 0 1 -2 0 -1 -2 2 -1 -1 2 2 -1 1 -1 -1 0 0 -1 0 0 0 -1 1 0 0 -1 -2 -1 0 0 2 -2 -1 2 0 0 2 1 -1 -2 0 0 1 0 0 2 0 -1 -1 0 2 -1 0 0 -1 1 0 -1 -1 2 0 -2 1 0 0 1 0 0 1 1 0 -2 2 -1 0 0 2 2 2 0 -1 -1 -2 0 1 0 0 2 1 1 -1 0 2 0 1 -1 -1 0 0 0 0 -2 2 2]],[[0 1 1 1 -1 -1 1 0 1 -1 2 0 -2 0 0 0 1 1 0 1 0 -1 -1 -1 1 0 0 1 -2 0 1 1 0 -1 1 -2 -1 1 0 2 2 0 1 -2 -1 1 2 -1 -2 -1 -1 0 -2 2 -2 1 -1 1 0 -1 1 1 2 -2 0 1 1 0 0 1 0 0 0 1 -1 -1 -1 -1 -1 1 -2 0 -1 0 1 -1 -2 -1 0 2 0 -2 2 -1 0 2 2 -1 1 2 -1 0 1 1 1 1 -2 -1 0 0 1 1 2 0 -1 2 -1 -2 0 2 0 -1 1 0 1 2 0 -2 1 2 -2 -2 1 2 -1 -2 -2 1 -2 1 0 -1 1 -1 2 0 0 1 0 -2 -1 -1 1 -1 0 2 -1 1 2 -2 -1 0 0 1 -1 0 2 0 -2 0 0 2 -2 1 -1 -1 -1 0 0 1 2 0 -1 2 1 1 -2 1 0 0 -2 -2 -1 -1 -2 2 0 1 0 -1 1 0 0 -1 0 0 0 1 2 1 -1 1 0 1 1 1 2 2 0 2 0 -1 0 2 1 -1 0 1 0 -1 0 -2 0 2 -1 0 0 0 0 -2 -1 -1 0 -2 -1 1 -1 0 2 2 -1 -1 -1 2 2 2]]]
K:[1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,1,0,1,0,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,1,0,1,1,1,1,0]
C_U:[[[2598 561 3235 2146 2170 2882 10 2168 3054 2540 2504 2270 368 2809 2726 2708 2710 187 3059 2787 2975 3266 2074 499 746 2286 2082 1622 2990 1013 1232 1117 1382 1249 2165 2346 1490 3216 605 1326 1392 230 388 26 2216 1354 2262 634 2340 3169 1292 2916 155 2642 1148 2241 900 2521 2940 3040 14 1741 1115 3049 933 3036 2047 11 2441 1765 2817 2813 1579 1451 889 746 277 2723 2299 2120 582 1147 146 618 2112 1227 1649 382 416 2521 1459 1418 1057 3059 2299 1446 2585 210 2450 1440 392 954 1245 2857 1333 1096 3071 1865 2400 1453 341 1243 2089 221 1630 512 1977 2329 1205 790 1587 3266 384 889 134 3110 384 2128 2702 771 2171 218 367 3277 1745 2676 2194 0 2500 3029 3150 10 1434 3184 679 177 2527 334 545 745 1633 1908 2933 583 649 1927 4 289 3025 2668 2267 2985 794 1519 1085 2447 469 299 1174 2372 2795 540 2700 1565 1766 2545 2822 1488 1215 1990 1723 2617 2898 250 1595 2344 1656 2117 1921 2490 580 2940 2647 2904 1548 153 2011 1101 3109 3326 2463 1261 1781 1645 2590 2197 18 101 1072 793 3188 400 895 565 1473 2226 1489 2925 1246 633 2559 2739 427 860 857 2768 256 2340 1799 1264 1990 1102 526 2377 3127 313 1746 2485 3127 1224 2546 246 2318 156 1259 560 1700 1770 568 2501 1984 2678 356 3251 1345 2473]],[[3109 847 2123 1280 1206 3189 1571 1068 2912 3264 583 1098 959 1313 2921 1759 3024 3200 1123 2382 2778 1889 2569 640 1650 1924 2494 1557 2262 2441 671 834 1385 3102 2392 3238 2898 175 2570 2470 1934 3105 1503 57 58 254 2953 2417 1264 1852 1648 1176 677 877 1856 1444 1842 255 1259 2397 1438 3252 580 2025 2633 247 2744 2528 2026 547 2463 1768 1707 1037 1384 1807 3175 807 2356 587 1145 391 2043 1757 1715 3200 2146 1492 2382 2084 1379 1775 1037 580 3041 2174 1616 2066 2440 1755 1341 1796 776 1211 1070 9 1957 2962 1540 1785 31 2440 1312 1795 1395 2942 1133 199 37 230 2902 2812 2334 107 368 2212 2501 2522 2771 2503 1768 2046 91 2189 2790 1536 2970 596 418 1901 138 1026 489 1242 2163 145 1056 3045 2248 2507 903 1719 519 886 2981 838 2942 2662 1537 1628 2650 1267 937 2061 578 2751 2827 1102 1304 2516 2234 2237 2455 2601 1478 532 2288 465 763 451 57 417 986 421 1142 2006 1853 815 136 1599 880 2282 1424 2016 2608 3243 3257 2180 89 2172 874 1936 1131 2147 512 897 3284 2034 1215 828 1676 2021 2669 1742 2415 2590 2870 3011 2081 926 2271 1545 2859 3050 2203 2715 1387 17 226 1675 3028 2746 717 3186 712 1682 612 835 2922 267 2445 1598 377 1507 908 368 59 758 2048 555 1782 61 706 994 1068 2661]],[[1346 3296 804 852 2526 866 461 3240 1055 877 587 1703 2051 2752 2405 3234 1558 280 1673 161 1985 2655 1120 2283 219 1651 299 650 1297 2128 876 1442 2573 1081 518 726 2894 3312 1933 1734 2745 1266 1286 87 599 2012 2939 325 2943 1738 2217 390 2703 101 1820 1655 1155 2356 3071 1979 2314 2663 2647 2413 1880 1397 2955 522 2536 382 199 3117 3180 285 2452 2412 1659 3178 1791 2746 2386 968 703 378 2412 2940 965 2630 288 966 2956 812 1068 414 1933 325 1924 282 3273 17 308 250 1863 558 2394 1068 232 1784 1059 1305 581 2629 1863 2360 323 1973 2099 2202 1391 2514 2066 2501 2906 1755 3017 2839 589 1517 3317 1358 1355 2942 141 2480 3277 2279 89 1437 3228 2400 3061 2976 3051 3088 2475 2402 3121 3139 1304 140 428 2913 3099 2680 3262 1652 1908 2524 2280 3097 837 1439 3017 2127 3296 1902 2290 1562 2334 1696 2968 2465 399 2587 2685 1324 2210 777 1787 1459 596 347 2124 781 1111 901 2020 2782 1973 1748 458 727 956 1389 3088 2925 1376 425 2244 2471 1830 69 2475 1005 2415 2909 2391 601 2285 701 2327 2735 1670 2961 3085 1305 224 2086 442 642 582 1862 934 579 3058 1363 1489 3004 1221 1794 2379 593 3200 971 1584 3294 2977 2365 347 77 3126 2791 654 2827 180 1224 2064 1561 2837 1014 2558 299 854 2617 1233 1802]],[[507 404 2744 644 2043 2366 1835 1100 2019 2123 1788 2296 1245 2395 1298 3275 279 2245 2141 2030 1535 172 1837 2998 2917 1579 2958 613 2583 305 1408 2204 2365 179 994 3163 876 2933 2075 1244 188 2469 1535 2144 1959 420 2674 1440 368 3277 2501 1460 443 2147 3103 3065 1559 203 2299 2877 2565 1904 1010 1530 1424 865 981 157 468 2376 83 3117 3249 739 1763 2416 2556 1402 3026 2352 749 48 2126 584 2610 1632 1498 2389 2923 699 1741 2031 590 20 1830 871 1099 317 1670 690 2395 972 1262 804 2925 569 3175 131 1250 3071 521 857 648 749 1836 2935 1157 2902 2131 723 3315 189 155 1779 3132 2396 1825 3310 433 2826 760 493 1618 3024 874 1512 1093 1088 137 1184 1621 844 747 385 2467 2180 2693 2718 1487 701 3007 37 2769 2798 2966 3081 650 1434 644 1631 1151 2124 463 1298 1524 1850 2571 42 367 2669 2528 680 546 3146 638 2656 2060 3134 2459 1834 899 842 985 1245 772 2552 2182 1216 3286 2328 1874 278 2294 190 2494 2160 1926 2111 1859 475 3052 2247 2339 912 3120 1410 2605 2232 1586 1454 886 2049 1162 1929 3046 461 2976 1432 654 149 1425 521 1309 2532 1318 1789 146 1076 144 2905 572 3165 2655 2569 2874 1823 1945 1542 415 2000 642 2186 1719 1908 772 2854 54 3260 1332 345 560 542 3178 2215 1200 1443]]]
C_V:[2888,2769,2773,1539,2182,2201,45,3305,585,1171,2997,2977,1921,282,1247,2005,3130,815,2486,1003,3108,760,2977,2467,2090,3245,608,522,770,1421,1243,598,1090,246,679,1164,254,983,1261,608,1580,2536,2722,3312,1092,1086,452,500,2323,1379,995,1621,406,1591,1198,2997,1126,3299,217,823,1444,491,1451,1876,3047,3106,1748,837,35,3012,399,1007,2636,1563,2653,1139,363,775,1833,1472,1690,946,940,315,3012,623,1346,1663,2477,2004,1790,1966,1789,2092,2089,3223,2483,1009,2760,3278,1118,995,1073,1181,1983,1513,906,3282,1006,1148,981,697,1739,1715,2841,2896,266,3037,2152,1495,293,1954,2297,2205,536,3241,674,3200,2981,1678,1973,3011,337,192,130,1656,2882,2906,2461,2360,1788,1684,1546,1495,2811,2795,2848,1936,321,2180,796,3234,3067,1328,1426,962,1146,3076,476,119,1978,62,849,2667,3080,2301,3052,440,2242,1993,1871,327,2414,2786,208,1072,2480,2070,1771,3030,1947,3166,3162,1468,374,95,908,2460,2659,1654,2797,2343,1787,2664,1127,1077,2372,626,1868,1604,2698,751,1534,970,1643,3075,2546,1856,3084,2275,94,286,1795,3316,2546,1108,1772,894,3275,59,706,134,2219,664,998,185,1079,1903,590,785,2407,662,40,1290,1848,2117,2045,2729,1415,3209,843,2741,1169,1200,1205,3096,1978,3182,2775,1228,85,1146,1954,1085,17,1654]

Parâmetros

Estes são os parâmetros definidos pelo NIST para o algoritmo ML-KEM.

n k q n1 n2 NIST Security level
ML-KEM-512 256 2 3329 3 2 1
ML-KEM-768 256 3 3329 2 2 3
ML-KEM-1024 256 4 3329 2 2 5

Benchmark

make benchmark
./benchmark
1000 Execuções ML-KEM-512 ML-KEM-768 ML-KEM-1024
k_pke_keygen() 1.901s 4.067s 7.178s
k_pke_encrypt() 2.801s 5.367s 8.923s
k_pke_decrypt() 0.914s 1.326s 1.773s

Os dados deste benchmark foram obtidos utilizando um Intel(R) Core(TM) i7-13700K.

Warning

Biblioteca destinada apenas para fins de estudo.

ml-kem's People

Contributors

opallace avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.