#### Keygen (n=512):
kgseed = 86bb80fac54713f5e03a52931a6a73afd90285ad8185e1ba
f = [-2,0,-1,1,0,0,0,-1,0,1,1,0,3,1,1,-1,1,-1,-1,-1,-1,-2,3,0,-1,-2,2,-2,1,2,-1,0,1,0,1,-1,0,1,-1,2,0,-1,1,0,0,-2,0,-3,-1,1,0,1,0,-2,1,-1,-1,-1,1,0,2,0,0,1,0,1,-2,3,-1,0,0,2,-1,0,0,0,0,-1,1,1,1,-2,0,1,0,3,1,1,-1,1,1,-1,0,0,0,1,-3,0,3,0,0,1,-3,-3,1,0,1,1,-1,0,-1,0,-1,0,-2,1,1,0,-1,-1,1,3,0,2,2,2,0,0,0,-1,2,-2,-1,0,-1,-1,2,-1,1,3,-1,-1,1,0,-2,-1,3,1,0,1,0,-2,-2,2,-1,-3,3,-4,0,1,-2,0,1,-3,1,-1,0,-2,-1,1,0,-2,0,-3,0,1,0,-1,-1,-3,-1,-3,1,0,1,0,0,0,1,-4,-1,-3,0,3,0,1,0,0,0,1,0,-4,-3,-1,0,-2,2,-2,-1,0,0,-2,-1,-1,-1,4,2,-1,2,0,-1,-2,-2,0,-1,2,-2,0,-1,0,1,-1,1,-1,0,0,-1,1,-1,1,2,1,1,-1,2,0,0,1,-2,0,1,-1,0,1,2,0,1,0,2,-1,2,3,0,1,0,1,1,0,2,0,-1,1,-1,1,0,-1,2,-2,1,-1,1,0,0,-3,0,2,-3,0,1,0,0,-1,-1,0,-1,-2,1,3,2,0,1,1,-2,-2,-1,1,-1,2,0,1,0,2,0,1,-1,1,1,0,-1,2,0,-1,1,0,0,0,0,0,-3,-1,3,1,0,-1,2,2,-3,0,3,0,1,-2,0,-1,1,-1,1,-1,1,-2,-1,2,1,0,-2,3,0,0,0,2,1,3,-1,1,1,-2,1,-1,-1,-1,1,-2,-1,-1,0,-2,-1,-1,-1,-1,-1,1,2,1,-2,2,0,1,-1,-2,-1,-3,1,-1,1,-2,1,-1,-1,-1,0,0,0,0,1,2,2,-1,3,3,1,2,-1,1,1,-3,0,0,0,2,1,-2,-1,-2,-2,0,2,1,2,3,1,4,-1,-2,-2,1,1,0,1,1,0,0,0,2,2,-1,-2,0,2,-1,4,1,0,3,0,4,-2,-2,2,1,1,1,-1,0,2,0,2,1,0,0,1,0,-2,0,0,1,1,-1,1,-2,0,1,1,-1,-1,-2,-2,-2,1,1,-1,-1,1,-3,0,2,3,1,1,-2,0,2,0,-1,0,-2,1,0,-1,-1,0,-2]
g = [0,0,-2,-2,0,2,0,0,0,-1,-1,2,2,-1,-3,0,2,3,2,2,-2,-2,-2,0,1,0,0,-1,-1,-1,0,-1,-2,-2,1,0,1,-1,1,0,2,-1,0,1,0,1,3,1,1,-1,-1,1,0,0,0,-1,-4,0,0,-1,-1,-1,2,1,0,0,0,0,0,0,-1,0,0,-3,0,-1,0,-1,3,3,2,-1,-1,-2,-1,1,-3,0,1,1,2,1,-2,2,0,-1,0,1,-1,-1,1,-1,1,-2,2,-1,-2,1,-2,0,2,0,0,-1,2,-2,0,-2,-1,-2,1,-1,-1,3,0,0,-1,-1,1,-1,-1,0,2,-1,-2,2,1,0,-2,-2,2,1,-1,-1,0,0,0,-2,1,0,2,1,-1,1,1,-3,-1,-2,-1,-1,-1,-1,1,2,0,1,-1,3,0,-1,2,2,0,1,0,-1,1,-1,1,-1,2,-2,0,-1,1,-3,3,0,1,0,-3,-2,1,0,-3,-1,1,0,3,-1,1,0,-2,-2,0,-1,-1,-1,1,1,-3,-2,0,1,0,1,0,0,3,0,2,2,1,0,-1,-1,-2,0,-1,2,1,-1,-2,0,2,0,0,-2,-2,-1,-2,-1,0,2,1,1,0,2,1,-1,0,0,1,0,-2,-1,1,0,0,0,1,1,-1,1,0,0,0,-1,-1,0,0,-4,2,0,-2,3,0,2,-1,0,0,1,-1,-1,0,0,-1,1,-2,0,0,-1,1,1,1,-2,1,-1,-1,1,1,0,1,0,0,1,1,-2,0,-1,0,-1,1,-1,-2,2,0,0,1,-2,-2,1,-1,-1,0,0,1,1,1,-1,0,-1,-3,-1,1,1,-1,-1,1,0,0,1,0,-2,0,2,0,2,0,2,0,-1,0,2,2,0,-1,-1,-1,0,1,1,-3,-1,1,-3,1,-1,2,3,-2,-1,-1,1,1,3,1,2,0,0,0,-1,3,1,-3,0,0,0,-2,0,1,-1,0,-1,1,-2,1,1,1,2,-1,3,3,0,0,-1,0,0,2,-2,0,-2,1,0,-1,-3,0,2,0,-2,2,2,2,0,-1,-1,0,2,0,2,-2,1,-1,1,-1,-2,4,0,1,-2,0,0,1,-1,0,0,1,1,-2,0,-2,2,-1,0,-1,1,0,-2,0,-1,0,2,2,3,1,-2,0,1,1,-1,1,0,2,1,-1,1,0,2,-1,-4,1,2,1,-3,-1,0,1,2,-2,1,-2,-1,2,1,0,0,1,0,-2,0,1,3,2,2,3,1,1,-2,2,0,-1,2]
F = [4,-8,0,-2,2,-12,2,1,-4,-15,-4,-3,-4,-18,0,-4,5,9,0,3,11,7,8,8,3,-18,17,6,9,-3,17,9,-2,-4,6,-9,-1,10,7,-7,-9,-2,2,10,-18,9,-6,2,9,4,-1,-21,2,-10,4,2,1,-16,-23,-7,7,10,4,1,12,-8,-7,13,-2,1,12,4,-12,-14,-3,-14,-12,-2,12,10,-7,19,-1,-9,8,-5,8,5,-9,12,-3,-2,14,5,-3,-6,-2,-3,7,3,-2,-9,10,0,-7,16,-1,-6,9,7,0,6,-5,10,9,1,8,-10,0,-9,0,3,1,-8,25,-10,8,-21,12,5,2,7,11,12,-5,-3,3,9,-11,8,-3,2,15,0,-2,-13,-17,12,2,-3,14,-4,-5,3,3,26,-11,2,-1,1,0,4,2,16,-4,5,5,14,-7,-13,-3,-8,-24,7,20,0,1,-7,-11,-2,11,18,-12,-1,-16,5,-12,8,-7,-9,7,20,-4,-11,18,-29,5,12,-1,-8,17,-10,-3,11,-1,-19,1,4,-14,-9,5,6,11,4,-2,-7,-1,9,-1,-9,-7,3,-14,-29,10,-12,-1,-8,-2,-11,-9,-1,-4,2,-11,6,2,-2,3,-1,0,-6,3,-13,25,0,10,-9,7,3,-10,6,10,0,-17,4,-7,12,-2,-2,-4,9,18,-1,2,7,-3,-13,21,10,-9,-15,-4,5,-2,11,-11,-14,-1,-9,-2,22,0,9,-7,12,16,5,-5,-1,-4,-7,6,-15,23,0,-12,10,-3,5,5,7,-11,8,11,12,-16,26,2,6,22,3,-2,-14,3,-4,12,-10,8,1,3,2,-8,2,-6,1,7,3,-15,-9,4,17,1,-13,0,-1,9,-10,11,-14,-1,-7,6,-11,2,-16,-16,-1,-18,11,11,5,1,-5,-7,-5,-3,-8,2,-13,2,-20,-2,-18,13,-13,0,3,-10,3,-4,-2,3,10,-1,21,6,10,-8,3,-1,-2,12,3,-12,4,14,-4,3,-6,-24,-4,10,14,2,17,1,17,-14,9,-19,15,3,-1,-4,-3,-7,-10,7,-7,7,13,5,7,12,-4,-6,11,-3,12,-12,9,-5,9,-7,6,-2,0,6,-3,5,-10,26,3,13,10,6,-3,7,10,10,-13,1,-13,1,3,7,9,1,0,6,15,10,-20,-3,10,3,5,22,-5,2,-11,10,12,-5,-5,-3,0,0,11,6,7,-10,10,6,-8,-5,-13,-12,2,26,-5,-1,-6,-5,-10,16,17,-11,-1,-6,-13,-9,3,-8,8,3,3,-11,3,5,-2,2,6,-10,2,19,-7,-3,-4,-3,-3]
G = [1,-8,16,3,-16,-5,-7,12,-2,0,12,-9,-15,8,10,8,-9,-7,-1,5,-7,-18,1,2,9,-19,4,-8,12,2,-18,-15,9,6,-1,6,-3,14,8,-15,-7,-13,-8,-6,-3,-18,2,-11,14,2,11,-21,3,13,19,5,-13,-8,-12,5,2,5,-6,12,2,-4,7,-1,8,-8,1,14,0,-6,4,-9,-8,5,1,8,-7,-1,4,2,-3,-13,-4,11,0,2,-8,-18,3,20,-12,5,6,9,20,7,5,4,-10,-17,-2,6,-7,-2,-7,4,-13,-2,4,-10,-6,8,-3,2,-6,4,15,5,11,-2,-3,-15,-7,-3,5,18,-9,16,-1,0,-4,6,17,-12,-3,-7,2,-7,3,1,2,-1,-3,-8,3,-12,-3,-7,11,-12,-6,11,9,11,0,14,0,0,-3,-19,-4,1,2,7,-5,-2,-8,9,10,-2,4,-10,-12,-5,2,0,-6,3,-13,-7,17,11,-6,-4,-7,-3,9,-13,8,8,0,-1,2,-11,-17,13,15,8,-4,20,-11,18,9,12,-6,-13,-7,10,2,-14,-4,-1,5,14,13,4,7,-14,6,-10,10,6,-6,-5,-5,9,5,5,-4,14,-13,-1,5,0,-3,0,18,7,-4,-2,13,-4,-16,-2,8,6,-10,-4,10,-5,1,0,5,-9,3,-2,-1,-18,5,-7,18,-6,6,-1,8,6,-6,9,-15,8,-1,9,0,-4,-10,-1,-4,1,7,13,5,1,-10,-16,13,-1,12,-5,10,-2,1,4,-14,12,-5,-2,0,-9,-5,4,15,5,-12,-7,-4,1,-10,2,7,-1,-8,-5,-7,6,6,9,-12,-7,-13,4,5,12,-12,0,2,-16,-2,-13,7,1,5,7,10,-2,8,11,1,1,11,14,-7,6,11,7,-11,9,18,-10,-4,-1,10,-12,-5,6,-5,-6,-7,-5,-3,-15,1,-6,5,9,12,23,2,-8,2,-5,-4,12,17,8,1,-13,3,-4,-20,-1,3,-4,11,9,5,1,-18,-13,5,3,-26,11,-10,6,4,8,9,-5,21,-10,3,-5,5,-4,4,-2,1,30,-17,-3,-3,-6,2,22,17,4,3,19,6,1,-15,0,-2,5,-5,-17,-5,-7,7,-11,3,15,1,-1,-8,-18,-5,19,-24,-3,8,7,-21,4,9,6,15,1,14,-6,-2,-14,-6,-8,2,0,10,7,-4,9,5,-7,-12,7,-11,13,9,5,5,1,12,0,2,3,10,-1,2,-6,7,2,-17,9,4,-13,2,13,-13,6,-7,14,13,13,0,-6,-8,3,4,-8,6,-15,2,12,-8,-7,1,8,9,2]
q00 = [2110,23,4,7,-20,2,-41,-60,-13,109,-34,-2,52,-29,-48,-68,-5,-30,-105,85,-18,55,184,67,34,2,197,-124,-23,8,99,84,-85,-23,63,78,-85,-147,-13,34,-68,98,-12,-87,49,109,53,106,102,-27,33,26,-56,25,-24,-50,-65,-4,-62,-10,-53,42,-104,63,-14,-67,-90,-18,-22,52,75,-100,170,-10,-19,-79,27,-44,-38,19,-141,-1,2,12,31,-21,25,-97,-14,30,-164,-28,77,102,57,82,-71,-52,85,3,-39,-66,57,-134,42,76,-71,131,21,-39,8,-75,84,-38,50,-147,22,44,-3,23,121,-19,-110,4,68,58,113,-26,-7,39,-67,-7,23,97,-23,-11,-20,-18,-50,-91,119,-96,-13,24,-118,27,75,-28,-42,-19,-13,103,55,-63,24,114,24,7,4,-87,-30,-49,-19,-58,-8,100,28,53,52,-4,-38,30,-62,13,17,-27,70,111,-65,-15,-126,69,-7,-56,13,-57,71,70,-9,-37,-42,12,-127,10,-37,73,26,2,-4,88,46,44,53,78,11,26,-28,-94,-12,-32,86,-19,121,96,67,-39,-17,-7,41,-38,-53,94,27,-131,-37,83,-13,-49,-25,-22,-66,-99,10,19,170,-11,56,-71,128,-62,43,-22,-16,0,34,14,-55,28,11,20,-39,108,-116,-67,-61,13,0,-13,61,67,116,-108,39,-20,-11,-28,55,-14,-34,0,16,22,-43,62,-128,71,-56,11,-170,-19,-10,99,66,22,25,49,13,-83,37,131,-27,-94,53,38,-41,7,17,39,-67,-96,-121,19,-86,32,12,94,28,-26,-11,-78,-53,-44,-46,-88,4,-2,-26,-73,37,-10,127,-12,42,37,9,-70,-71,57,-13,56,7,-69,126,15,65,-111,-70,27,-17,-13,62,-30,38,4,-52,-53,-28,-100,8,58,19,49,30,87,-4,-7,-24,-114,-24,63,-55,-103,13,19,42,28,-75,-27,118,-24,13,96,-119,91,50,18,20,11,23,-97,-23,7,67,-39,7,26,-113,-58,-68,-4,110,19,-121,-23,3,-44,-22,147,-50,38,-84,75,-8,39,-21,-131,71,-76,-42,134,-57,66,39,-3,-85,52,71,-82,-57,-102,-77,28,164,-30,14,97,-25,21,-31,-12,-2,1,141,-19,38,44,-27,79,19,10,-170,100,-75,-52,22,18,90,67,14,-63,104,-42,53,10,62,4,65,50,24,-25,56,-26,-33,27,-102,-106,-53,-109,-49,87,12,-98,68,-34,13,147,85,-78,-63,23,85,-84,-99,-8,23,124,-197,-2,-34,-67,-184,-55,18,-85,105,30,5,68,48,29,-52,2,34,-109,13,60,41,-2,20,-7,-4,-23]
q01 = [-762,1009,-1219,315,122,706,-905,881,980,386,-335,-611,180,-619,-251,114,222,-432,397,1386,1287,230,-251,-307,-155,637,-955,1016,-307,944,-1266,1563,466,-341,-89,-453,601,-1248,1206,-1038,-117,17,1614,82,433,-563,-785,178,-368,696,384,1135,44,1482,-711,910,-833,582,530,-958,-248,-706,989,-1170,82,-491,819,-244,334,319,1173,270,-530,-411,-35,660,863,913,-1161,-1159,-380,1,1060,-771,-776,-1378,-515,88,557,-398,-175,-168,458,343,-314,310,926,105,-1571,90,-289,-149,-1032,47,-133,-467,847,-1226,-134,-1265,546,136,1217,-722,239,62,541,1229,-1006,462,775,841,-315,513,-1122,1470,121,1076,-1008,-719,-1372,-237,126,115,160,125,718,-1127,-305,706,-637,1390,140,-181,-844,333,-1133,-616,307,-417,-145,572,356,-855,767,577,-167,1092,549,-68,624,662,343,-1116,338,46,-453,-39,212,863,-471,624,-706,-609,453,-2,266,465,215,-347,382,-767,805,-145,991,-1373,403,-343,1435,747,-78,-789,-795,190,-395,1179,-1121,-884,3,520,499,54,1457,-100,-109,379,119,-490,-352,-1059,25,-988,-1371,608,116,-546,-502,-195,429,87,-748,237,-330,-682,-124,274,285,-592,-511,1015,-42,-1041,87,287,-530,-839,272,168,-1678,957,468,-480,-1958,1172,-1255,145,794,610,-357,267,-828,-754,1988,235,175,106,-357,200,244,-624,-783,-596,-730,-2,180,1162,-1170,-334,-1066,-68,80,806,141,94,69,-1196,1659,-183,670,-1187,-347,245,180,-1278,-955,-342,-150,1515,1044,-464,70,647,-1247,162,-933,277,284,628,130,234,579,-1204,1152,-1504,991,-1136,-478,1060,648,993,-325,-94,1295,463,-1373,-366,-681,-375,355,-722,-597,832,174,14,1168,-589,1011,-188,784,-603,-210,663,-718,-3,941,3,-1198,681,455,123,-350,1308,-787,-760,-1147,26,-238,-217,-750,-1109,1211,-965,-271,722,-546,-1203,-340,1050,-1209,1260,-83,289,-1203,434,-984,838,-1508,-627,-1127,145,631,721,1287,43,-319,-67,382,-605,-1373,495,-351,752,363,1047,-899,187,-263,-653,-334,10,-299,-118,-66,-634,-322,-173,-512,334,917,-891,1285,627,1039,-792,-29,848,28,303,-982,710,92,-696,-1334,-693,86,-354,1571,-495,-704,-620,1608,-673,817,582,503,-879,-124,-693,705,103,-53,1434,357,538,-1360,275,236,-367,4,671,283,501,405,-481,1482,-222,723,745,-495,-55,-346,-385,178,501,439,-148,-1863,729,-25,302,-1252,-284,-659,342,1021,1046,1146,-609,-1159,-698,703,-501,-281,1171,1102,-9,-1201,1148,-744,-390,-890,496,-1187,425,-704,-50,137,-1219,1155,-306,674,440,679,-337,628,-547,-53,-955,-296,367,-997,-388,-56,-405,-938,999,-1371,1255,-280,-469,-180,-575]
q11 = [89747,-4656,-207,-6205,2695,-6590,2477,6556,-5633,255,-7449,11113,-6855,5860,-7592,2803,4172,-233,-330,4806,406,-8723,8481,-5243,12149,-7994,8758,-5794,-3064,-3446,1366,1577,-8775,8185,-1684,8040,-8743,5454,-4833,3259,-8139,4571,-16,-3052,6243,709,2175,-8193,6247,-5413,11010,-1688,4149,-2238,-9809,2932,-13307,9917,-10142,9826,-9883,12990,-9843,8712,1277,3686,-2198,-9016,8638,-2380,3726,-9007,12078,-11191,6872,4,931,-3714,-1629,-283,-14302,4670,-4774,14942,-6513,7310,-5765,598,2722,-3013,-7770,-3831,2941,-7670,11758,-3997,-1277,-11239,9808,-9331,-1925,-1583,4776,-2435,-6580,6711,-7003,17083,-5508,-1206,696,-2785,808,6083,5134,-18090,3232,-10229,10412,-3465,12382,-4278,-2218,-4982,6745,705,1337,-437,-1282,10031,-9926,9502,-206,14026,-8677,3853,6344,5591,-645,-6612,12271,-14984,5089,-3530,10063,-4173,2787,737,-21,-2513,913,7649,1670,9683,-9530,5939,-8517,8614,-8562,3335,-7165,-720,-1362,-5766,3466,-7054,7912,-5725,6613,-2620,12241,2715,-7715,-387,-7804,5632,3252,13217,-10532,2180,-11924,6847,-1923,8729,1131,-452,1014,-3257,2970,-4980,3478,-12176,5385,-5994,3205,4258,186,-2468,-5835,2391,-7845,11412,-3049,1941,-8658,10665,-7272,-3598,-3073,-8421,628,623,7961,-12615,14612,-5332,5677,-5924,12086,-4138,6310,7971,-7574,-6589,-13618,5015,-4308,4695,-3572,-3974,-3377,3301,-6587,-2638,4713,-10093,4083,-10732,15203,-9642,7323,-9674,4439,-10157,1616,8849,-5150,3881,-9365,8780,-6737,3304,-3514,1945,-1372,1437,0,-1437,1372,-1945,3514,-3304,6737,-8780,9365,-3881,5150,-8849,-1616,10157,-4439,9674,-7323,9642,-15203,10732,-4083,10093,-4713,2638,6587,-3301,3377,3974,3572,-4695,4308,-5015,13618,6589,7574,-7971,-6310,4138,-12086,5924,-5677,5332,-14612,12615,-7961,-623,-628,8421,3073,3598,7272,-10665,8658,-1941,3049,-11412,7845,-2391,5835,2468,-186,-4258,-3205,5994,-5385,12176,-3478,4980,-2970,3257,-1014,452,-1131,-8729,1923,-6847,11924,-2180,10532,-13217,-3252,-5632,7804,387,7715,-2715,-12241,2620,-6613,5725,-7912,7054,-3466,5766,1362,720,7165,-3335,8562,-8614,8517,-5939,9530,-9683,-1670,-7649,-913,2513,21,-737,-2787,4173,-10063,3530,-5089,14984,-12271,6612,645,-5591,-6344,-3853,8677,-14026,206,-9502,9926,-10031,1282,437,-1337,-705,-6745,4982,2218,4278,-12382,3465,-10412,10229,-3232,18090,-5134,-6083,-808,2785,-696,1206,5508,-17083,7003,-6711,6580,2435,-4776,1583,1925,9331,-9808,11239,1277,3997,-11758,7670,-2941,3831,7770,3013,-2722,-598,5765,-7310,6513,-14942,4774,-4670,14302,283,1629,3714,-931,-4,-6872,11191,-12078,9007,-3726,2380,-8638,9016,2198,-3686,-1277,-8712,9843,-12990,9883,-9826,10142,-9917,13307,-2932,9809,2238,-4149,1688,-11010,5413,-6247,8193,-2175,-709,-6243,3052,16,-4571,8139,-3259,4833,-5454,8743,-8040,1684,-8185,8775,-1577,-1366,3446,3064,5794,-8758,7994,-12149,5243,-8481,8723,-406,-4806,330,233,-4172,-2803,7592,-5860,6855,-11113,7449,-255,5633,-6556,-2477,6590,-2695,6205,207,4656]
priv = 86bb80fac54713f5e03a52931a6a73afd90285ad8185e1ba800a3bf5d8210d9d2c04af652e358d96da5726d7602797725a7d96bfe4c49c43a1deda986b7c8184e1bbb5e89fb0d29810b86f3fe66166fe492ba730963b1fdc69185f839593fc294c68b3909a5410f715edd639ac09e2f3e8518615f85c1260d7888d3e4b642b9b16f8783d52df229dbd0b7774b4f93f6b0da0fba3b4d6885851b790ee13714c013df9889797c38e74be735c98b9a4c5c898f8bd383776dc43
pub = d0ed1718730dd25f9f6ea30db3a44a86cd6f79821f96dc7245c08b9bfda84674f0923305daac8540f91ba4a31a2f1e42946dd1a0d47e472513432c1b5b5546077df38d60f444d5f94de458e91a2a49b757990c08f66906cd8fdd4c9666d661422e8a99510d52b4486999b859364274cce60873835533467d3fc375af9d243bd763890fb11dca7c08af7414df5bd4e601d78bb90d1f8348625e91a4c5c08e55b7f4eeeb5b99c130d0a442fd166432886b106a2a850de8ab3e209ce58b1a36056fbf465b8e2c480371244bc2125314b15db6a2c92582b3863f0e264aca5228099b54d831a6b81c5f22c7eca8f16c636d4f64644bd6589e2acf1991ae32949d385842bdbd88b40f456cc255ae6141b90ac7794e743b42140f966d92c8b4a8ca35989bd3d94c160df93ca87952a0c6bca136d1bd5dd5c116dd9f18b92e4e24288f75b8d9b5a2f7f5f9e20bdba94718e2b8d4053b15434b8d3e39de5e37567bd09c3e999afae8c62f1376bc0dd2a962219ee59bad0674223891125b0644596f71017ec342b931c7408d48e87d2f58f74852d4cf9ce7f467258711348ba0f4353222437b0390107830ac002c2d1abb3aa5fc6a4e9b9ed388d00292d2811784a43f4d56089e0844c1a2bdf3d1a1597be70793ea0c10c6771e1aef9d6d65e7670ea83ececcc014c6c72d235a4b9bb239331334241e64adfe0b628a488921702c5ddd22d5057113d4be5a87130c4cf1000aa35fd3ead75f4948dfb94eb6ba795d138a1a7d29de0466ee0004f36dc41ec366ef9df45f4564d8ae150c9d10f585b5beb2ae5dd2547b24767ce2ff7e0a08573e46300a1155a3ded4bf97a6642e9246316417ee8c477cdd2b356491d17be3704ab600b414456a9a620814938dbc1459b5c79627515aebd1eaa7bb6aa5f5149e1b39e44d14e98a1ce90852376416a0efdfdf742781283cd12e0f9f736d8bcaeed8685480ba720089c9fc5d10b544bbd44c40eb01ad521ddfd395a3c47b7a34b4c3d68eca2ee20ea585903555032e765242ca927ddde878396622dd897670854f217eb9707def15deda0b82771964d45481ca3a41f20465f5df6965bd05e73cb8c8012a8797d58d71b955939695b023dcff5a8304544c23f7ddeea115ec0c0dcd65353c9dc8ce2d814f1beb5706afbcdbb474ee6d64052cabfeed4946b36170396ea324abfd2de8016328d72ffa18273941008bcfb9c279e18b4afd2b46226183628ac27d0a2a1d1134749f7c4b7ef00dcaa9cf6b3d7791fa2c1fca55b79f7cb5c497e4b86ea6aa56eed955722aeddf785ea6e9d25a32955f566e7aab69cd6ff5afe5b44edaf9b3b4efdee63a3a9275c55f7532f7c4f27472d95d9232756657a7d6daf4545ed2ca2467a5ac7cb9e97e5f29ed5a3a56545b67f93eeb3f3a5b52ea64d26627dbdabd92170000000000000000000000
#### Sign (n=512):
f = [-2,0,-1,1,0,0,0,-1,0,1,1,0,3,1,1,-1,1,-1,-1,-1,-1,-2,3,0,-1,-2,2,-2,1,2,-1,0,1,0,1,-1,0,1,-1,2,0,-1,1,0,0,-2,0,-3,-1,1,0,1,0,-2,1,-1,-1,-1,1,0,2,0,0,1,0,1,-2,3,-1,0,0,2,-1,0,0,0,0,-1,1,1,1,-2,0,1,0,3,1,1,-1,1,1,-1,0,0,0,1,-3,0,3,0,0,1,-3,-3,1,0,1,1,-1,0,-1,0,-1,0,-2,1,1,0,-1,-1,1,3,0,2,2,2,0,0,0,-1,2,-2,-1,0,-1,-1,2,-1,1,3,-1,-1,1,0,-2,-1,3,1,0,1,0,-2,-2,2,-1,-3,3,-4,0,1,-2,0,1,-3,1,-1,0,-2,-1,1,0,-2,0,-3,0,1,0,-1,-1,-3,-1,-3,1,0,1,0,0,0,1,-4,-1,-3,0,3,0,1,0,0,0,1,0,-4,-3,-1,0,-2,2,-2,-1,0,0,-2,-1,-1,-1,4,2,-1,2,0,-1,-2,-2,0,-1,2,-2,0,-1,0,1,-1,1,-1,0,0,-1,1,-1,1,2,1,1,-1,2,0,0,1,-2,0,1,-1,0,1,2,0,1,0,2,-1,2,3,0,1,0,1,1,0,2,0,-1,1,-1,1,0,-1,2,-2,1,-1,1,0,0,-3,0,2,-3,0,1,0,0,-1,-1,0,-1,-2,1,3,2,0,1,1,-2,-2,-1,1,-1,2,0,1,0,2,0,1,-1,1,1,0,-1,2,0,-1,1,0,0,0,0,0,-3,-1,3,1,0,-1,2,2,-3,0,3,0,1,-2,0,-1,1,-1,1,-1,1,-2,-1,2,1,0,-2,3,0,0,0,2,1,3,-1,1,1,-2,1,-1,-1,-1,1,-2,-1,-1,0,-2,-1,-1,-1,-1,-1,1,2,1,-2,2,0,1,-1,-2,-1,-3,1,-1,1,-2,1,-1,-1,-1,0,0,0,0,1,2,2,-1,3,3,1,2,-1,1,1,-3,0,0,0,2,1,-2,-1,-2,-2,0,2,1,2,3,1,4,-1,-2,-2,1,1,0,1,1,0,0,0,2,2,-1,-2,0,2,-1,4,1,0,3,0,4,-2,-2,2,1,1,1,-1,0,2,0,2,1,0,0,1,0,-2,0,0,1,1,-1,1,-2,0,1,1,-1,-1,-2,-2,-2,1,1,-1,-1,1,-3,0,2,3,1,1,-2,0,2,0,-1,0,-2,1,0,-1,-1,0,-2]
g = [0,0,-2,-2,0,2,0,0,0,-1,-1,2,2,-1,-3,0,2,3,2,2,-2,-2,-2,0,1,0,0,-1,-1,-1,0,-1,-2,-2,1,0,1,-1,1,0,2,-1,0,1,0,1,3,1,1,-1,-1,1,0,0,0,-1,-4,0,0,-1,-1,-1,2,1,0,0,0,0,0,0,-1,0,0,-3,0,-1,0,-1,3,3,2,-1,-1,-2,-1,1,-3,0,1,1,2,1,-2,2,0,-1,0,1,-1,-1,1,-1,1,-2,2,-1,-2,1,-2,0,2,0,0,-1,2,-2,0,-2,-1,-2,1,-1,-1,3,0,0,-1,-1,1,-1,-1,0,2,-1,-2,2,1,0,-2,-2,2,1,-1,-1,0,0,0,-2,1,0,2,1,-1,1,1,-3,-1,-2,-1,-1,-1,-1,1,2,0,1,-1,3,0,-1,2,2,0,1,0,-1,1,-1,1,-1,2,-2,0,-1,1,-3,3,0,1,0,-3,-2,1,0,-3,-1,1,0,3,-1,1,0,-2,-2,0,-1,-1,-1,1,1,-3,-2,0,1,0,1,0,0,3,0,2,2,1,0,-1,-1,-2,0,-1,2,1,-1,-2,0,2,0,0,-2,-2,-1,-2,-1,0,2,1,1,0,2,1,-1,0,0,1,0,-2,-1,1,0,0,0,1,1,-1,1,0,0,0,-1,-1,0,0,-4,2,0,-2,3,0,2,-1,0,0,1,-1,-1,0,0,-1,1,-2,0,0,-1,1,1,1,-2,1,-1,-1,1,1,0,1,0,0,1,1,-2,0,-1,0,-1,1,-1,-2,2,0,0,1,-2,-2,1,-1,-1,0,0,1,1,1,-1,0,-1,-3,-1,1,1,-1,-1,1,0,0,1,0,-2,0,2,0,2,0,2,0,-1,0,2,2,0,-1,-1,-1,0,1,1,-3,-1,1,-3,1,-1,2,3,-2,-1,-1,1,1,3,1,2,0,0,0,-1,3,1,-3,0,0,0,-2,0,1,-1,0,-1,1,-2,1,1,1,2,-1,3,3,0,0,-1,0,0,2,-2,0,-2,1,0,-1,-3,0,2,0,-2,2,2,2,0,-1,-1,0,2,0,2,-2,1,-1,1,-1,-2,4,0,1,-2,0,0,1,-1,0,0,1,1,-2,0,-2,2,-1,0,-1,1,0,-2,0,-1,0,2,2,3,1,-2,0,1,1,-1,1,0,2,1,-1,1,0,2,-1,-4,1,2,1,-3,-1,0,1,2,-2,1,-2,-1,2,1,0,0,1,0,-2,0,1,3,2,2,3,1,1,-2,2,0,-1,2]
F2 = [0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,1,1,0,1,0,0,1,1,0,0,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,0,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,1,1,1,0,1,0,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,1,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1,0,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,0,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,1,1]
G2 = [1,0,0,1,0,1,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,1,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,1,1,0,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,1,0,1,1,0,0,0,1,0,0,0,1,1,0,1,1,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,1,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,1,0,1,1,1,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,1,0]
hpub = 51b790ee13714c013df9889797c38e74be735c98b9a4c5c898f8bd383776dc43
# hm = SHAKE256(message || hpub) (64 bytes)
hm = a04fe12795ddc3640271f43efc4045075217ebf07940f79a510efb050e438ed5eb0aac9adc0ad088582b06cd7d983649f37edccfa26b9b4c4ba2629a4bd20ea6
salt = c1e848098abca2bd95cbc80ab43bd64a87ee8e1d2355b740
# h = SHAKE256(hm || salt) (2*n bits)
h0 = [0,0,0,0,1,0,1,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,0,0,1,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,0,0,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,0,1,1,0,1,0,0,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,1,1,1,0,1,1,0,0,1,1,1,0,1,1,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,0]
h1 = [0,1,0,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,1,0,1,1,1,1,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,0,0,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,0,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,0,0,0,1,0,1,0,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,1]
# t = B*h (mod 2)
t0 = [0,0,0,1,0,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,0,1,0,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,0,1,1,0,1,1,1,1,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,0,1,0,1,1,1,1,0,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1,1,0,0,1,1,0,1,0,0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,1,1,1,1,0,0,1,0,1,1,0,0,1,1]
t1 = [1,1,1,0,0,1,0,1,0,1,0,1,0,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,1,1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,1,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,1,1,0,1,0,1,1,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,1,0,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0,1,0,1,0,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,0,1,1]
# (dx0, dx1) = (2*x0, 2*x1)
dx0 = [2,-2,2,-1,4,-2,0,-3,1,-2,-1,-3,3,0,3,5,-2,-1,1,-1,0,3,-1,-1,-4,-3,-1,1,-1,0,-1,0,1,-2,0,-5,-1,0,0,4,2,2,-1,-1,-4,4,-2,1,2,1,-1,-2,-3,-3,1,1,2,-1,-2,2,0,2,2,-1,1,1,-1,-3,1,0,0,-2,-2,-2,-7,-1,4,0,-1,-4,-4,-1,1,2,-1,-1,4,2,2,0,-5,0,-2,-1,-4,3,2,-3,1,3,1,0,-3,0,2,-4,7,1,3,-2,-1,1,2,0,-2,2,-4,-2,1,-2,3,3,2,-2,-2,3,2,0,-7,-3,4,2,3,-3,2,-1,3,3,0,1,-2,2,1,4,1,2,-3,-1,3,1,-2,0,1,4,3,-1,1,-2,2,1,1,2,1,-4,0,-5,-3,3,3,1,-4,4,5,1,2,-3,-2,3,2,0,0,1,1,1,-2,0,2,1,-1,-2,-2,-3,-2,7,-1,5,-3,-1,-1,2,-2,2,-2,2,2,2,0,0,4,-1,0,-2,0,3,-2,1,1,4,0,2,2,2,0,3,1,0,2,-1,1,2,4,0,-2,-2,-4,5,3,2,-2,4,0,2,-1,-2,-2,-1,0,-1,-3,-1,-1,3,0,3,-2,-4,2,3,-1,2,-2,2,4,-4,1,1,2,-1,-2,2,-7,-1,1,5,-1,2,-3,-3,1,0,-1,1,4,0,-3,4,2,-2,-4,0,1,3,1,5,3,0,1,2,0,1,-5,0,2,-1,1,-4,2,-4,1,-5,-2,0,-1,0,0,2,0,-1,3,-3,-3,-2,0,0,-1,-5,1,0,0,2,1,-2,-3,-1,1,2,0,-4,-6,3,0,1,1,1,-4,1,4,-1,-1,2,0,0,-3,0,0,-3,-2,1,0,2,-1,-3,-3,2,-2,-6,-2,1,-1,-2,2,0,3,-2,-5,-1,-6,-6,-3,-3,2,-1,1,1,1,-1,5,1,-1,-1,-3,0,4,-1,1,-2,-1,-3,-1,2,0,-2,-4,0,2,0,-3,3,-2,-4,-1,0,-1,-2,5,-1,-1,1,0,-2,-1,-1,6,3,4,5,0,2,-1,-4,-1,4,2,-7,-1,-4,3,-1,1,0,1,3,-4,-4,-1,-1,2,-2,-1,-2,-1,-7,-2,-2,-1,1,2,-2,1,-1,3,4,-3,3,-1,-1,-8,2,-2,-4,-1,3,-2,1,0,3,-2,-2,-1,1,-5,-2,5,-1,0,-1,-7,4,2,-6,-3,2,-1,-1,-2,-1,0,-3,-1,-1,5,-7,0,2,1,-2,-3,-1,4,-2,-1,-3]
dx1 = [-1,1,1,-4,0,-3,-2,-1,4,-3,2,-1,-2,-1,-1,0,-3,3,0,2,3,5,-1,-1,5,-1,1,5,-4,1,-3,-2,-1,1,-2,1,-1,-3,0,-1,0,-2,2,0,2,4,3,-1,-3,-2,-4,-2,3,-1,2,-1,-2,-5,0,-5,-3,-2,-3,1,2,3,-1,4,2,-4,1,0,2,-1,3,-2,1,-2,3,0,-2,1,1,1,-3,-2,1,2,0,-2,-2,1,5,1,3,1,0,-2,-1,-4,1,0,-2,-2,-1,1,1,1,0,1,-5,2,2,-1,-4,-3,2,2,1,0,-2,-3,5,4,3,2,1,4,4,2,1,-2,1,-2,3,5,2,-4,-1,3,5,1,-4,6,-1,5,4,0,1,2,-2,-3,0,1,1,0,0,0,2,0,-2,-2,-2,-4,0,-4,1,3,-1,-1,6,-4,-6,1,-4,2,-2,-1,0,3,3,-2,0,-6,1,0,-3,3,-2,-3,0,2,0,-2,2,-1,-1,2,-4,-1,1,2,-3,-1,1,1,-4,0,1,-3,0,5,1,1,0,2,-4,1,1,2,0,-4,-2,2,-1,2,-1,2,-2,-4,3,-1,-3,2,2,-1,1,0,4,-2,5,0,-1,-2,-1,3,0,0,5,1,3,-1,4,2,0,-3,4,2,6,-2,-2,-5,-3,5,6,5,2,1,-3,1,0,-3,-3,1,-1,-2,0,-1,-3,-1,-4,2,2,2,2,1,0,-2,5,-2,-1,0,4,-2,-1,2,-1,3,1,3,2,3,2,1,-3,-2,-2,0,2,-1,-2,-3,1,4,0,-2,0,-5,1,-5,-1,1,5,4,-3,-4,0,3,5,3,0,-1,-1,0,0,-3,-4,-2,2,2,0,0,-6,5,-1,-3,-3,0,2,0,2,-2,-3,0,0,3,1,-4,-1,0,-1,1,2,-4,1,2,0,-1,-4,-5,1,-3,2,1,0,0,2,-1,2,-1,4,-2,1,0,-1,-2,3,-2,4,3,-3,0,1,-1,3,-3,0,0,-2,-1,4,1,-2,2,5,-2,1,-4,-2,-2,2,-3,-1,5,0,-5,-1,-1,4,-4,3,-2,4,-1,0,0,7,3,0,1,2,1,-2,1,-1,0,0,1,-2,-4,2,4,0,0,-3,4,-1,-2,1,1,-1,0,-1,-1,6,-3,2,5,-4,5,0,2,3,-1,-1,0,4,-4,-1,0,-3,4,1,3,0,-1,6,-1,1,4,1,3,-1,5,0,2,-7,2,-1,4,2,3,0,-3,0,-4,2,-1,1,-1,3,2,-2,-1,-3,1,6,-2,4,0,-3,-1]
l2norm(2*x)^2 = 6644
# w = h1 - 2*s1
w = [116,-43,104,-30,146,5,-79,129,17,55,-17,99,-10,-105,-7,-34,71,149,-201,-161,152,37,42,144,-144,-36,-66,-84,7,-96,-55,-163,-60,-80,-6,-109,-33,-120,31,218,-356,89,23,-9,-205,100,43,116,-206,29,98,-84,-28,-96,-154,118,133,14,5,-13,37,-111,-80,-58,20,-62,-72,-85,15,317,-293,-91,-63,209,-262,118,-117,-83,148,150,120,11,-5,-49,-223,-84,-51,90,40,-120,321,178,-153,-14,-37,169,103,85,30,127,44,-142,303,65,169,-27,0,-164,58,-73,39,-11,-31,58,190,181,16,8,-14,74,213,233,111,87,48,-42,38,109,90,40,78,30,225,65,30,1,79,127,-67,-17,-36,98,-79,42,19,271,-19,108,-97,-25,-115,245,3,-83,-166,-39,172,69,94,105,18,-19,118,200,-22,-169,-250,337,269,27,-31,119,-12,-112,81,-34,174,-243,160,-112,89,-77,-113,-13,-216,249,-36,-17,-38,-167,-22,49,185,8,-62,26,-176,36,-158,-160,-107,-25,-105,0,158,-15,101,135,109,85,75,-136,-8,108,101,-64,230,135,-96,-86,13,3,-180,41,-3,-61,15,-45,130,-112,61,-99,-136,92,-48,-262,-66,118,-44,83,-61,4,162,40,4,45,-282,-93,-51,-80,227,223,-53,41,43,109,71,-102,-95,128,121,-5,65,69,174,29,-98,2,35,-133,18,1,-94,69,-71,-161,-30,-17,184,48,-12,17,114,-99,-393,71,74,178,200,79,-98,-45,7,-44,73,38,49,-139,-40,-188,143,-14,-193,-84,-112,72,-136,-150,-129,168,-1,-60,103,-276,-16,-15,47,8,-143,-273,-86,-12,34,36,-60,28,54,-159,-31,-259,-236,117,64,101,62,-2,177,-35,195,-150,35,-115,74,92,-93,-123,27,-108,-7,-39,137,-10,117,-120,-78,99,-137,25,-374,-30,-221,176,121,185,-35,-50,-114,-166,-176,-47,-110,5,48,95,115,-131,-132,184,9,85,97,-249,86,92,207,131,-54,110,13,-36,-66,-64,-23,6,-22,-115,27,-227,-31,33,9,-42,-122,-98,11,36,35,10,-76,9,20,-97,176,21,-90,-229,18,-168,-27,63,-19,-26,-91,-30,-10,-121,72,118,108,-77,-105,-131,10,96,3,-123,-192,-250,117,-220,105,-166,-151,-36,-112,-8,-8,-13,55,-113,100,92,284,-75,108,46,113,-47,-158,-118,-205,-238,-3,116,47,-223,-148,-124,98,-45,-143,-32,36,63,-21,124,-71,66,-12,-49,33,-10,-153,9,-34,-37,-210,220,140,-141,-127,139,67,19,-149,-67,147,197,-33,2,-79,10,-82,-207,9,167,-20,-262,-39,-31,46,51]
symbreak = 1
s1 = [-58,22,-52,15,-73,-2,40,-64,-8,-27,9,-49,5,53,4,17,-35,-74,101,81,-76,-18,-21,-72,72,18,33,42,-3,48,28,82,30,40,3,55,17,60,-15,-109,178,-44,-11,5,103,-50,-21,-58,103,-14,-49,42,14,48,77,-59,-66,-7,-2,7,-18,56,40,29,-10,31,36,43,-7,-158,147,46,32,-104,131,-59,59,42,-74,-75,-60,-5,3,25,112,42,26,-45,-20,60,-160,-89,77,7,19,-84,-51,-42,-15,-63,-22,71,-151,-32,-84,14,0,82,-29,37,-19,6,16,-29,-95,-90,-8,-4,7,-37,-106,-116,-55,-43,-24,21,-19,-54,-45,-20,-39,-15,-112,-32,-15,0,-39,-63,34,9,18,-49,40,-21,-9,-135,10,-54,49,13,58,-122,-1,42,83,20,-86,-34,-47,-52,-9,10,-59,-100,11,85,125,-168,-134,-13,16,-59,6,56,-40,17,-87,122,-80,56,-44,39,57,7,108,-124,18,9,19,84,11,-24,-92,-4,31,-13,88,-18,79,80,54,13,53,0,-79,8,-50,-67,-54,-42,-37,68,4,-54,-50,32,-115,-67,48,43,-6,-1,90,-20,2,31,-7,23,-65,56,-30,50,68,-46,24,131,33,-59,22,-41,31,-2,-81,-20,-2,-22,141,47,26,40,-113,-111,27,-20,-21,-54,-35,51,48,-64,-60,3,-32,-34,-87,-14,49,-1,-17,67,-9,0,47,-34,36,81,15,9,-92,-24,6,-8,-57,50,197,-35,-37,-89,-100,-39,49,23,-3,22,-36,-19,-24,70,20,94,-71,7,97,42,56,-36,68,75,65,-84,1,30,-51,138,8,8,-23,-4,72,137,43,6,-17,-18,30,-14,-27,80,16,130,118,-58,-32,-50,-31,1,-88,18,-97,75,-17,58,-37,-46,47,62,-13,54,4,20,-68,5,-58,60,39,-49,69,-12,187,15,111,-88,-60,-92,18,25,57,83,88,24,55,-2,-24,-47,-57,66,66,-92,-4,-42,-48,125,-43,-46,-103,-65,27,-55,-6,18,33,32,12,-3,11,58,-13,114,16,-16,-4,21,61,49,-5,-18,-17,-5,38,-4,-10,49,-88,-10,45,115,-9,84,14,-31,10,13,46,15,5,61,-36,-59,-54,39,53,66,-5,-48,-1,62,96,125,-58,110,-52,83,76,18,56,4,4,7,-27,57,-50,-46,-142,38,-54,-23,-56,24,79,59,103,119,2,-58,-23,112,74,62,-49,23,72,16,-18,-31,11,-62,36,-33,6,25,-16,5,77,-4,17,19,105,-110,-70,71,64,-69,-33,-9,75,34,-73,-98,17,-1,40,-5,41,104,-4,-83,10,131,20,16,-23,-25]
sig = c1e848098abca2bd95cbc80ab43bd64a87ee8e1d2355b740b50bf310c0e6861731ca838ddf51bedf7fa38bf18d4b15822bd067b354a23eecd95bc2e6d31122316c78d544290e78de1b92f136091c4701dd81112b89392bc3d9ce8702fa4727582a892295b8223d48062520971e8d1bb96372a97222cda741e560d3c1841331eae99365fa74e00cbd55529b8c0c9566937fdcce9c32395f8ffdd301c98b3490fb7cc621695a75abac6c1af7be03c68b2421a2c8a81a9bce404d5a839b48e9b16a3f85416df089563fbc4e3e6ccb34e9ba7b7c86e383b655e050143511426a0452c055809ee29b0b7097a4e111b4453fc0196a7b1a41b727ad62c2bfc70fb6450007022f90f8d2bee6605904c1c3c42bec90d7506f4e5078901566f0522164074acbc0e89b8650d8fca30f5782053569cf334be828991f58d67eefee2d739e18df701d16628ff4ba6a066c5b64004c2ccd247ca3f648222466a478539b883aaf9a7ba50f5d4f15e4010f7a7673328909393ac7d64cb517bf7daec8162a0f2f82d1af4e80c9afb411676ae50002d012284480484243aa41a1c536ebed12c9c9da6c1b41478bb594afd7102a4295f4680bc9a94d98b34f5e44bd365e5d87b558a6ba9808c2ad89548d78ce3369b3545945eafcb434d4ce438b78555d76ae725e814ad43b935125c9854fe8cf10ed8cac6a67550623e5925d49565464d71b5fdf6531df55952da228d957a136456ca4e6abcf2392a429718b193e00000000000000000000000000000000000000
#### Verify (n=512):
salt = c1e848098abca2bd95cbc80ab43bd64a87ee8e1d2355b740
s1 = [-58,22,-52,15,-73,-2,40,-64,-8,-27,9,-49,5,53,4,17,-35,-74,101,81,-76,-18,-21,-72,72,18,33,42,-3,48,28,82,30,40,3,55,17,60,-15,-109,178,-44,-11,5,103,-50,-21,-58,103,-14,-49,42,14,48,77,-59,-66,-7,-2,7,-18,56,40,29,-10,31,36,43,-7,-158,147,46,32,-104,131,-59,59,42,-74,-75,-60,-5,3,25,112,42,26,-45,-20,60,-160,-89,77,7,19,-84,-51,-42,-15,-63,-22,71,-151,-32,-84,14,0,82,-29,37,-19,6,16,-29,-95,-90,-8,-4,7,-37,-106,-116,-55,-43,-24,21,-19,-54,-45,-20,-39,-15,-112,-32,-15,0,-39,-63,34,9,18,-49,40,-21,-9,-135,10,-54,49,13,58,-122,-1,42,83,20,-86,-34,-47,-52,-9,10,-59,-100,11,85,125,-168,-134,-13,16,-59,6,56,-40,17,-87,122,-80,56,-44,39,57,7,108,-124,18,9,19,84,11,-24,-92,-4,31,-13,88,-18,79,80,54,13,53,0,-79,8,-50,-67,-54,-42,-37,68,4,-54,-50,32,-115,-67,48,43,-6,-1,90,-20,2,31,-7,23,-65,56,-30,50,68,-46,24,131,33,-59,22,-41,31,-2,-81,-20,-2,-22,141,47,26,40,-113,-111,27,-20,-21,-54,-35,51,48,-64,-60,3,-32,-34,-87,-14,49,-1,-17,67,-9,0,47,-34,36,81,15,9,-92,-24,6,-8,-57,50,197,-35,-37,-89,-100,-39,49,23,-3,22,-36,-19,-24,70,20,94,-71,7,97,42,56,-36,68,75,65,-84,1,30,-51,138,8,8,-23,-4,72,137,43,6,-17,-18,30,-14,-27,80,16,130,118,-58,-32,-50,-31,1,-88,18,-97,75,-17,58,-37,-46,47,62,-13,54,4,20,-68,5,-58,60,39,-49,69,-12,187,15,111,-88,-60,-92,18,25,57,83,88,24,55,-2,-24,-47,-57,66,66,-92,-4,-42,-48,125,-43,-46,-103,-65,27,-55,-6,18,33,32,12,-3,11,58,-13,114,16,-16,-4,21,61,49,-5,-18,-17,-5,38,-4,-10,49,-88,-10,45,115,-9,84,14,-31,10,13,46,15,5,61,-36,-59,-54,39,53,66,-5,-48,-1,62,96,125,-58,110,-52,83,76,18,56,4,4,7,-27,57,-50,-46,-142,38,-54,-23,-56,24,79,59,103,119,2,-58,-23,112,74,62,-49,23,72,16,-18,-31,11,-62,36,-33,6,25,-16,5,77,-4,17,19,105,-110,-70,71,64,-69,-33,-9,75,34,-73,-98,17,-1,40,-5,41,104,-4,-83,10,131,20,16,-23,-25]
# hm = SHAKE256(message || hpub) (64 bytes)
hm = a04fe12795ddc3640271f43efc4045075217ebf07940f79a510efb050e438ed5eb0aac9adc0ad088582b06cd7d983649f37edccfa26b9b4c4ba2629a4bd20ea6
# h = SHAKE256(hm || salt) (2*n bits)
h0 = [0,0,0,0,1,0,1,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,0,0,1,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,0,0,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,0,1,1,0,1,0,0,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,1,1,1,0,1,1,0,0,1,1,1,0,1,1,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,0]
h1 = [0,1,0,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,1,0,1,1,1,1,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,0,0,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,0,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,0,0,0,1,0,1,0,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,1]
# ft1 = FFT(h1 - 2*s1)
ft1 = [10336999,-5675319,-917793,-4705582,2389891,-4587845,-3419129,4645100,-1181963,3908769,-194952,-2537782,-1121863,-2416914,3006452,97151,-1006558,3683586,-3462661,-1079412,2156414,3585890,-3437051,191141,-5233510,-2821109,699559,482661,13725342,-2459337,484487,-3823017,-1689662,-3897560,-1393802,7371046,-8990986,6437492,-3325492,51037,-2548671,7529635,337047,671817,-2752059,-1783609,1663784,-6051102,-1983080,2185440,-432657,-2223380,7348437,-6492140,5643549,3614001,557405,2276919,1061712,1227320,7114982,2705581,-3285858,3456511,3817717,6507198,1515425,-2052045,-4386818,2653308,1542247,-1652758,573712,-2736085,-4567423,-5372540,3534983,5344332,-2143260,1586772,192855,1177211,531927,500994,-1687068,1119423,-2826221,-9887061,2146171,-388391,1061367,314593,3659132,-5086660,55890,-915739,6021007,-3878638,-155590,-6446486,-2746022,3017891,4937823,-1936192,2182383,-1347842,-2158769,-4733242,33073,-280462,7275359,2988948,-3891107,-1785721,3897429,-6009448,1055921,-1707238,-5047945,-1390797,-2198032,2206508,-1500603,3142484,1485556,2759646,5500125,1582503,-4241363,2535023,1079874,1814684,456333,-6245665,-3290499,-5882224,-1106368,1415887,-1394716,-674101,4482530,4429658,11026913,1419024,-3263586,-426997,3314709,622481,-4134699,1235614,8789234,4392417,1659377,-2004180,-5870481,-4562322,243244,3458526,-186245,40965,2793092,-1110888,-2464530,-3594040,4845371,-933363,2072457,2921627,7550927,2479442,4106692,1973519,-602509,2560263,-11261445,11858866,1386646,892034,-1705566,2429993,7826174,876640,5049587,-4683878,4009523,-1077215,2721068,6979678,5527675,-5966282,493782,3531926,-31710,-2614866,11232198,897046,-3444664,883230,3133372,63687,3639315,1713188,-6805322,3700125,-4628970,459387,-1514573,-2740757,1311636,533148,-5847542,-1196431,-6454791,-2219240,-8173488,-8595097,-2017850,271096,4844191,-121024,4285320,-60134,1883351,5753930,387006,-795832,-1125085,986118,-2510169,5465491,1339767,3281179,4974522,2692759,712227,-2374832,4486151,-2452351,6061285,-1338661,-2005813,-611040,2072512,6558488,6430380,-153027,1744161,-2383096,-2097720,-3436974,1464466,-8614230,-8510346,-274737,1086834,-7721366,-1370504,1282961,2464736,5335081,4498385,2835937,-2753354,4107436,2923853,3606716,749780,1313001,605561,-2020840,1210572,2152524,1776254,7652,1078857,-1627280,1305842,5802289,-749392,-1982589,286767,2712901,5226682,-1205291,1806797,5599932,-611300,4000690,-732950,-4855601,6070681,3023010,3220751,8427470,-1222592,-10735699,-2107340,-2640991,-4193694,9517718,3975724,-6526350,1785650,6293034,-2951062,1414872,-1992187,72997,-2329702,-3523295,2249338,2208536,-5643556,-399178,-619228,240698,511060,-2612651,5260367,1026397,4691035,-8647752,262134,2104842,441850,-5424530,-5108154,-224946,544738,8767209,949632,-2289198,-1646932,2057650,-2047090,-4659863,1228280,5897199,-1543465,-2052567,509584,-5285387,-1460436,649164,3428851,3448072,366893,585401,-210811,3261446,1744724,4271250,9985231,7005616,-1410486,5610624,3603184,2384399,-3068949,1132819,-3726768,1333301,1574702,2266856,2314014,-2329055,-4197483,566786,2255634,-5131207,6564175,-5167852,6800692,-2557250,-9349866,-5894403,-3497908,-338744,-71246,3658489,-6325316,-28623,2680300,9831773,-7105772,-279312,-257851,189070,4702421,-837889,1119594,689752,-3406833,-2491514,-3489114,3686864,-858780,1483175,-3709628,-1037323,837516,-94799,-2383369,-2541881,4392811,5748182,1901134,-7561286,-6947737,-885727,2692485,-1862546,3101782,3654142,2197932,873597,2331744,1260359,3433543,9613702,188701,2074471,-1754116,-239569,-2676307,-1489253,-315217,-8349440,513324,-6415719,-2896486,1229803,2184621,4646261,-624219,2916167,-11598195,-3709134,3589742,2782381,-1686059,-104910,7378288,-1148696,-7978750,2977570,-1249311,-508512,701816,3749568,-2480193,2376776,-2661097,4687741,-507110,-437322,956214,2310890,3837891,-257426,874026,597807,4534961,-172188,-3625842,-1964188,1713319,-7477710,9352824,1462276,-3490504,-2511409,-4141691,-1353493,3985766,-7625059,-5584758,-250522,-6805930,-3178160,-3669868,-6747516,-1950504,-2170454,4141042,1638949,-1218859,292164,5062301,303848,1396204,2989521,-1218068,-995980,1910236,-1220144,1841581,-4767572,4024588,-2373204,2584610,-2630492,-2612904,1498510,-4262003,797242,1022080,-71451,-201792,-3530892,448881,735841]
# first half of q00 only
q00 = [2110,23,4,7,-20,2,-41,-60,-13,109,-34,-2,52,-29,-48,-68,-5,-30,-105,85,-18,55,184,67,34,2,197,-124,-23,8,99,84,-85,-23,63,78,-85,-147,-13,34,-68,98,-12,-87,49,109,53,106,102,-27,33,26,-56,25,-24,-50,-65,-4,-62,-10,-53,42,-104,63,-14,-67,-90,-18,-22,52,75,-100,170,-10,-19,-79,27,-44,-38,19,-141,-1,2,12,31,-21,25,-97,-14,30,-164,-28,77,102,57,82,-71,-52,85,3,-39,-66,57,-134,42,76,-71,131,21,-39,8,-75,84,-38,50,-147,22,44,-3,23,121,-19,-110,4,68,58,113,-26,-7,39,-67,-7,23,97,-23,-11,-20,-18,-50,-91,119,-96,-13,24,-118,27,75,-28,-42,-19,-13,103,55,-63,24,114,24,7,4,-87,-30,-49,-19,-58,-8,100,28,53,52,-4,-38,30,-62,13,17,-27,70,111,-65,-15,-126,69,-7,-56,13,-57,71,70,-9,-37,-42,12,-127,10,-37,73,26,2,-4,88,46,44,53,78,11,26,-28,-94,-12,-32,86,-19,121,96,67,-39,-17,-7,41,-38,-53,94,27,-131,-37,83,-13,-49,-25,-22,-66,-99,10,19,170,-11,56,-71,128,-62,43,-22,-16,0,34,14,-55,28,11,20,-39,108,-116,-67,-61,13]
# fq00 = FFT(q00') (q00' = q00 except that q00'[0] = 0)
fq00 = [2103933,488827,-6474679,4032717,-2165016,3214213,-1935985,-387610,-1864987,-2855238,-4129482,-3768654,-7174072,-629968,-5260069,-4741240,-1792391,-7410476,-5198699,-4116826,-6808100,8006115,-1565475,482796,7008129,-5682600,714463,-6582290,-443031,-5719693,-213038,-151232,-4993896,-3788201,14204674,4225632,5780887,9550584,7197349,4723622,-5843421,8739750,-1994604,7332062,11558924,-6234266,-2509064,11934486,-2298168,-7324700,-3165989,-719120,1830268,-1684803,-1939758,-6749375,-5428952,-4220749,-2600057,-6123093,12052495,3053619,-4353404,-4050351,3341587,12140947,5252716,-2936211,-2807866,-3905123,-447075,-6147662,91409,14079686,-6021929,-1851572,-1742480,-208631,-2933677,-2504364,10660852,-5167845,-3671786,-4572358,-5255822,8114465,3376847,24314856,6383517,-6962912,-3353531,-7706092,-2992797,937483,-7184146,-4454368,6319703,-434136,-2803029,13613277,4574903,1120064,-4957253,-4939870,-3981854,5627530,2305059,-6591163,-6853746,-7897121,13960976,5798421,-1382962,-2130862,-933617,2422555,2034006,-2245712,10964180,-3314931,2461816,2264860,-7372106,4199760,-931495,3554358,-2883715,2232949,5486583,-3322636,-8379548,-6948709,-2273695,2280427,1289086,1642498,-5494989,-3423656,14436750,-5869508,14073111,2250492,1903709,-7655382,-7091517,-6817394,-2287112,-3965032,-4763254,-5600701,-2482992,3653318,2317525,-5095594,-1598164,6137250,-1755899,-3397822,5684329,-4711271,-1207466,-7393835,2996083,-2640999,-3128005,-6405324,-5518362,-1030404,1443543,-5479396,-1596777,-770528,-5733719,-1255722,18227371,12701362,-5253771,-5129721,-2466012,1691644,1846943,-3807642,-2921622,-2312131,-1257416,1752035,5021562,-2458871,6922356,-1802296,-5812962,-1552309,-8105696,2259364,7053565,-2641775,-3969307,7665728,-6251242,171665,-1356973,-4444778,-2599399,945524,2647563,-6945166,-1531469,-5302367,2856833,3138379,4685097,5293241,1499319,-4083247,17466627,2560588,-4315697,4080814,11336454,3446176,15166930,-7782176,-917612,418234,-1982507,3160491,-3430775,-622602,-547158,23530,-459921,12255955,2345595,-3569623,-3140450,6885563,-3970086,-3319069,4568230,1289502,2647335,546566,-2261051,-5716344,-1109744,28953697,-5494347,8133294,-5593744,-5848166,-1655099,14999163,-1447157,-3585162,-1725491,-1473375,-4,-1,-1,0,-1,-1,-1,-1,-2,-1,-1,0,-2,0,0,-1,-3,0,-1,0,-1,-1,-1,-1,-2,0,-1,-1,-1,-1,-1,-1,-3,-1,-1,0,-2,0,-1,0,-3,0,-1,-1,-1,-1,-1,0,-2,0,-2,0,-1,-1,-1,-1,-2,-1,-1,0,-1,0,0,-2,-4,0,-1,-1,-2,0,-1,0,-2,-1,-1,-1,-1,-1,-1,0,-2,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-3,-1,-1,0,-1,-1,-1,-1,-2,-1,-1,0,-1,-1,-1,0,-2,0,-2,0,-1,-1,0,-1,-2,0,-1,-1,-1,0,-1,-2,-4,-1,-1,0,-2,0,-1,-1,-2,-1,-1,0,-1,-1,0,-1,-2,-1,-1,-1,-1,-1,-1,0,-2,0,-1,-1,-1,-1,-1,-1,-3,-1,-1,0,-1,-1,-2,0,-2,0,-1,-1,-1,-1,0,-1,-3,0,-1,0,-1,0,-1,-1,-2,0,-1,-1,-1,-1,-1,-1,-4,0,-1,0,-2,0,-1,0,-2,-1,-1,0,-2,0,-1,-1,-3,0,-1,0,-2,0,-1,-1,-2,-1,-1,0,-1,-1,-1,-1,-3,0,-1,0,-1,-1,-1,-1,-2,-1,-1,0,-1,-1,-1,-1,-2,0,-1,-1,-2,0,0,-1,-1,-1,-1,0,-1,-1,-1,-2]
q01 = [-762,1009,-1219,315,122,706,-905,881,980,386,-335,-611,180,-619,-251,114,222,-432,397,1386,1287,230,-251,-307,-155,637,-955,1016,-307,944,-1266,1563,466,-341,-89,-453,601,-1248,1206,-1038,-117,17,1614,82,433,-563,-785,178,-368,696,384,1135,44,1482,-711,910,-833,582,530,-958,-248,-706,989,-1170,82,-491,819,-244,334,319,1173,270,-530,-411,-35,660,863,913,-1161,-1159,-380,1,1060,-771,-776,-1378,-515,88,557,-398,-175,-168,458,343,-314,310,926,105,-1571,90,-289,-149,-1032,47,-133,-467,847,-1226,-134,-1265,546,136,1217,-722,239,62,541,1229,-1006,462,775,841,-315,513,-1122,1470,121,1076,-1008,-719,-1372,-237,126,115,160,125,718,-1127,-305,706,-637,1390,140,-181,-844,333,-1133,-616,307,-417,-145,572,356,-855,767,577,-167,1092,549,-68,624,662,343,-1116,338,46,-453,-39,212,863,-471,624,-706,-609,453,-2,266,465,215,-347,382,-767,805,-145,991,-1373,403,-343,1435,747,-78,-789,-795,190,-395,1179,-1121,-884,3,520,499,54,1457,-100,-109,379,119,-490,-352,-1059,25,-988,-1371,608,116,-546,-502,-195,429,87,-748,237,-330,-682,-124,274,285,-592,-511,1015,-42,-1041,87,287,-530,-839,272,168,-1678,957,468,-480,-1958,1172,-1255,145,794,610,-357,267,-828,-754,1988,235,175,106,-357,200,244,-624,-783,-596,-730,-2,180,1162,-1170,-334,-1066,-68,80,806,141,94,69,-1196,1659,-183,670,-1187,-347,245,180,-1278,-955,-342,-150,1515,1044,-464,70,647,-1247,162,-933,277,284,628,130,234,579,-1204,1152,-1504,991,-1136,-478,1060,648,993,-325,-94,1295,463,-1373,-366,-681,-375,355,-722,-597,832,174,14,1168,-589,1011,-188,784,-603,-210,663,-718,-3,941,3,-1198,681,455,123,-350,1308,-787,-760,-1147,26,-238,-217,-750,-1109,1211,-965,-271,722,-546,-1203,-340,1050,-1209,1260,-83,289,-1203,434,-984,838,-1508,-627,-1127,145,631,721,1287,43,-319,-67,382,-605,-1373,495,-351,752,363,1047,-899,187,-263,-653,-334,10,-299,-118,-66,-634,-322,-173,-512,334,917,-891,1285,627,1039,-792,-29,848,28,303,-982,710,92,-696,-1334,-693,86,-354,1571,-495,-704,-620,1608,-673,817,582,503,-879,-124,-693,705,103,-53,1434,357,538,-1360,275,236,-367,4,671,283,501,405,-481,1482,-222,723,745,-495,-55,-346,-385,178,501,439,-148,-1863,729,-25,302,-1252,-284,-659,342,1021,1046,1146,-609,-1159,-698,703,-501,-281,1171,1102,-9,-1201,1148,-744,-390,-890,496,-1187,425,-704,-50,137,-1219,1155,-306,674,440,679,-337,628,-547,-53,-955,-296,367,-997,-388,-56,-405,-938,999,-1371,1255,-280,-469,-180,-575]
# fq01 = FFT(q01)
fq01 = [4613012,1878603,-1244100,10576157,2721635,1258761,-125822,-8812620,-3226314,-4479178,-1233638,-4826737,-246957,5458546,-4029749,-2909672,5000438,103003,-3574079,2822658,-2060532,4089720,-1548839,-2664970,9552733,562819,4876917,339543,66698,940197,-3462225,745549,3618924,-2229317,16658203,-1420120,7206711,8481144,-2974418,-6247818,-3049571,-332510,4688286,5477544,-12587720,1574799,2853943,-12606107,-6410134,285178,-409257,217902,-1092744,-2270291,-2187480,290165,1223806,4266337,547508,995113,-14383223,-11253346,1254896,-3857781,-3663987,-13927584,-1048886,4052623,266389,-882766,237912,-591908,-1017942,-15319948,941885,-2551482,3766520,-3654313,4554029,-4520728,8635046,-2548888,-4729320,1246434,-3273490,-10415806,-918247,-16051839,352601,-1533611,280369,128065,918538,3466122,464548,-5066853,3853623,-2956764,3311099,-6745360,-1489810,1339669,-3438854,257837,-3193051,-1011101,5427887,-405062,1266271,211202,-7809378,-5275095,3342456,-2676100,2784154,-1267476,2446569,-337636,-3693045,1649673,17354947,-10959836,1336620,-3299460,7909369,6794058,3104158,12095051,4058250,-834864,-96222,1117841,-4290546,-4993596,-4617335,4548130,1746378,-2410253,20044474,299716,4525137,-11969990,-7760916,-135242,1054803,-288676,-4892260,3705498,-741693,-2453372,-1500245,-494402,-5363566,728500,118651,-6447133,937658,-1276866,10302347,-799995,621008,-223817,-2329482,4117412,-3409991,-345147,-1607258,-95665,-1616433,4186668,3763558,-5440187,1669764,4747777,-31287005,1496597,2929742,-1142171,-2571513,4618163,-12928651,2441173,-515279,2871796,7799113,-1707160,-2582435,2152545,-1982270,2770518,-1544890,-2350026,-18021,-23900,757807,-2140274,-865604,11491813,-969794,1537319,697399,172355,252712,-869679,-1628470,-1664477,-694555,-986136,2319584,-8224518,-11104850,3312097,-9503736,-437725,-5514476,-4619233,-1357332,-4567397,-2253754,5407673,1784096,129576,4448941,3741608,-7480179,11532020,-606336,-919267,-4636143,-7186032,1902540,9796863,4188097,-4222577,1292035,23964881,-4690257,2236933,-6496249,-942943,3738959,9449736,2546003,-2584675,-2759649,-15259232,1746413,3459948,-2279042,-1446293,-8504439,-1352352,3474507,4739026,-2957532,2432126,-4627092,-3991734,-1479549,5004122,5410836,10597825,-4543767,2972653,-1981846,-1650504,-1459857,-2635882,-951557,-3713640,2319392,774487,-2798468,374851,-1144835,-5926929,-793256,-4198376,-5046884,8525456,411568,-1281369,-9040,-284452,-421630,3277218,-2231654,867889,2941872,-2929723,8693841,10018262,-12387937,-1169690,-396776,-9459013,-1079123,-21345664,-1766893,-13607283,-18365554,-930192,5345016,-15210136,1509291,-344199,7750284,-2648305,-1538785,-9386580,-2369510,1538907,-221916,-299691,-7037179,1030040,254216,-15426206,407144,5863276,-2052560,-19856790,2771666,-1723351,-4339100,2355835,-2095611,971689,871097,-9880567,-3685548,2844503,-2733084,-2154929,1154678,1591651,-3387586,-2010720,71887,-1370498,150490,-8521198,3426745,1316927,568666,-53951,4251809,1127733,4129881,-10474721,-564979,2460772,-4068671,-4470787,-4724787,-281481,2413681,3841503,-3198138,-978394,-746713,9507819,-8208534,-1025130,588351,-789465,2697844,5720845,5470617,6341698,6707956,11208976,-10686130,-1632861,1620270,3754141,-1307847,-3696478,-61280,11280920,4727060,12409402,-1108224,-5031440,863792,3071542,273689,-1256495,1472627,-982386,-9824106,6761995,928830,6027,13422138,2301301,10329842,12683606,-1462536,-603357,-2094607,-1432443,871622,-483494,492250,-861100,-593492,1295889,-3887092,462648,780760,-8085052,-3755544,-3361412,5393620,898117,581945,222892,-8217994,2441049,-1934492,1047588,-74424,4431700,-13476916,553087,-2908218,-401325,1367634,-4025133,50877447,9266107,-163825,1031556,-2481563,-354144,3474272,-1744681,569842,4518213,4237984,-8953462,-16418239,-5828166,-617926,-2033649,-2001539,827386,-91937,7956280,12750469,640799,5825805,-4402978,562173,3203941,4306711,-545103,3300334,-9292543,7479437,-1124396,-2167286,2530632,-1538427,-5827031,14879859,5794066,-8521850,1731732,-2077402,-7638067,2430148,2400620,-959269,3942611,5383083,669525,-13832,-2959686,4091909,2680426,-5667055,599614,-6342152,-3174812,1693586,13009627,-235779,1318552,561860,-3795954,-1745484,-1352907,-1693882,1973724,13147632,-1500953,-1178302,1186116,-7904049,-2661473,-114868,-15213616,948147,1355654,2895718,-15584,264043,-139097,812842,-4896374]
# fz = (q01*t1)/q00
fz = [-75791,134669,-9748,-91154,-125715,299036,88834,-81691,57845,-124951,-61224,417785,24586,-122120,-270624,27376,-96514,170763,-155161,180476,-201183,-97796,-138501,-170774,518123,-189439,-229630,-321024,-99825,-145900,237797,-236320,-339191,-97247,-247566,291852,214525,-197879,-304906,-227065,-200457,248562,53715,9209,437799,-67080,245220,109344,25329,-362737,-138246,-132116,-221169,-10506,141851,-586228,-524561,-9763,373741,203767,122629,-256281,-184080,158465,-74756,-51454,81136,-41977,-234510,36354,216594,-271621,199914,-236297,64001,-529183,31745,-95199,-294162,-135904,-132875,87531,-30953,-180189,-27419,204544,-249075,393771,-23794,110588,-242192,258021,-102666,-3601,257260,-381677,-37678,-339449,233716,200721,31262,-283656,-270333,329724,-67601,111090,243982,429565,-107520,71925,-190170,130551,-53250,333786,-166894,283659,190984,71935,49140,282116,-132070,-432412,329455,9480,325353,-304111,15639,-125192,156142,76552,-25578,345845,-102421,-131817,116745,104692,-283115,-43011,-271111,-32779,-39175,-66538,369146,164879,45828,-30445,45796,-480495,261880,-24578,33802,237554,26372,-104451,-182283,430578,248335,-41212,-487414,144611,26886,-52209,-137200,-214017,224262,47883,315397,-135933,84748,-508151,62989,-78352,531437,-202201,-179196,-83194,134670,433929,56030,28141,-213773,-15365,8701,13275,18920,-423145,-234241,231692,6922,122093,38385,-91645,-118551,-269547,256236,-54789,-91648,-308464,125170,-196873,254768,57069,-164346,-33533,-208090,-56869,-211680,285723,-373475,-15617,1542,-43285,-170995,-186879,137757,-287526,195842,199655,-12792,-164619,-109301,-71408,-120838,-16102,-83187,148247,-93712,265730,-244213,316923,-169993,91619,-335342,92165,261363,-12314,74222,217559,284390,-127734,-187639,-157945,-174596,28401,242170,127976,48369,-47847,203823,-48422,-125705,-82174,133872,-110082,-130605,477417,64265,64477,-164065,345344,-20740,4587,260866,-184053,135432,-287758,-64239,-162820,244988,-117770,-128547,-92397,89102,-207116,-5392,6166,-137712,-103412,303372,353043,46581,100589,372485,-85745,163074,-14045,357893,-176125,488,-260381,252954,-22277,126984,-87570,45581,206581,-177914,-28669,26354,-19201,-196355,-210971,8427,-41456,-46068,-23307,-170233,-87313,318985,59137,-85752,-250644,252149,-67869,-242700,-153576,-97806,-289016,131846,427762,256760,27896,-108788,-231950,-103168,-63212,-72963,183535,-228364,383268,106732,-96759,7149,240872,136951,-87550,28174,-196868,-266739,-407818,-47892,-297454,-196605,44289,-214287,75000,-141556,216324,-324093,53252,-208124,151299,-383227,-196605,-98044,129777,-211678,-109321,-322856,-96810,60165,-330979,213024,-141829,-203532,-177932,-176385,100362,-2348,411405,64236,-89361,-382202,-72194,-89365,-16659,294643,15871,93181,-389143,-102894,39446,-66798,-284173,288263,-138253,-1285,52736,-192008,-516860,151540,104691,305388,349720,-226268,-280341,-57853,279033,23032,35578,-237560,-331023,127726,180700,126184,10243,53246,-72731,215545,-175343,-57623,-49659,64266,-157435,210950,-37638,-190972,-200730,44538,96518,115972,385553,-87834,-159771,-236294,-132578,-77562,172813,149509,-65301,-13297,75003,347900,-384498,-294959,-542980,-13046,144394,-120573,264713,-30982,-266740,-13588,485656,333817,-246499,-275177,-90078,231689,-62694,13298,-329973,79356,-71684,54519,260865,87308,-232952,-36104,20232,19455,207857,-202482,-95457,-113377,60422,-36619,91903,-560135,284921,-287501,-38129,-358665,-22815,-204298,-172801,-56349,-49663,-84970,-151812,191474,-299007,36896,-149487,-331528,-122912,-331526,-165115,140771,-112918,-295187,-142344,-254218,-147989,76797,11536,97495,-15342,-103185,-169979,127247,-175869,273937,36632,402698,15878,-233186,-207380,-2819,129779,-209904,-103418]
# t0 = h0 - 2*s0
t0 = [296,-526,38,356,491,-1168,-347,319,-226,488,239,-1632,-96,477,1057,-107,377,-667,606,-705,786,382,541,667,-2024,740,897,1254,390,570,-929,923,1325,380,967,-1140,-838,773,1191,887,783,-971,-210,-36,-1710,262,-958,-427,-99,1417,540,516,864,41,-554,2290,2049,38,-1460,-796,-479,1001,719,-619,292,201,-317,164,916,-142,-846,1061,-781,923,-250,2067,-124,372,1149,531,519,-342,121,704,107,-799,973,-1538,93,-432,946,-1008,401,14,-1005,1491,147,1326,-913,-784,-122,1108,1056,-1288,264,-434,-953,-1678,420,-281,743,-510,208,-1304,652,-1108,-746,-281,-192,-1102,516,1689,-1287,-37,-1271,1188,-61,489,-610,-299,100,-1351,400,515,-456,-409,1106,168,1059,128,153,260,-1442,-644,-179,119,-179,1877,-1023,96,-132,-928,-103,408,712,-1682,-970,161,1904,-565,-105,204,536,836,-876,-187,-1232,531,-331,1985,-246,306,-2076,790,700,325,-526,-1695,-219,-110,835,60,-34,-52,-74,1653,915,-905,-27,-477,-150,358,463,1053,-1001,214,358,1205,-489,769,-995,-223,642,131,813,222,827,-1116,1459,61,-6,169,668,730,-538,1123,-765,-780,50,643,427,279,472,63,325,-579,366,-1038,954,-1238,664,-358,1310,-360,-1021,48,-290,-850,-1111,499,733,617,682,-111,-946,-500,-189,187,-796,189,491,321,-523,430,510,-1865,-251,-252,641,-1349,81,-18,-1019,719,-529,1124,251,636,-957,460,502,361,-348,809,21,-24,538,404,-1185,-1379,-182,-393,-1455,335,-637,55,-1398,688,-2,1017,-988,87,-496,342,-178,-807,695,112,-103,75,767,824,-33,162,180,91,665,341,-1246,-231,335,979,-985,265,948,600,382,1129,-515,-1671,-1003,-109,425,906,403,247,285,-717,892,-1497,-417,378,-28,-941,-535,342,-110,769,1042,1593,187,1162,768,-173,837,-293,553,-845,1266,-208,813,-591,1497,768,383,-507,827,427,1261,378,-235,1293,-832,554,795,695,689,-392,9,-1607,-251,349,1493,282,349,65,-1151,-62,-364,1520,402,-154,261,1110,-1126,540,5,-206,750,2019,-592,-409,-1193,-1366,884,1095,226,-1090,-90,-139,928,1293,-499,-706,-493,-40,-208,284,-842,685,225,194,-251,615,-824,147,746,784,-174,-377,-453,-1506,343,624,923,518,303,-675,-584,255,52,-293,-1359,1502,1152,2121,51,-564,471,-1034,121,1042,53,-1897,-1304,963,1075,352,-905,245,-52,1289,-310,280,-213,-1019,-341,910,141,-79,-76,-812,791,373,443,-236,143,-359,2188,-1113,1123,149,1401,89,798,675,220,194,332,593,-748,1168,-144,584,1295,480,1295,645,-550,441,1153,556,993,578,-300,-45,-381,60,403,664,-497,687,-1070,-143,-1573,-62,911,810,11,-507,820,404]
# Qnorm(t)^2 mod 2147473409
qnt = 1700864
# Qnorm(t)^2 mod 2147389441
qnt = 1700864
