diff options
author | Anthony Wang | 2025-03-28 12:04:48 -0500 |
---|---|---|
committer | Anthony Wang | 2025-03-28 12:04:48 -0500 |
commit | cf7b4a878026da2e77de7c0ec4f0236396f55eb4 (patch) | |
tree | 939d061a85b07f89827cf6ac41aa5f57be9ba56a |
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | input | 41 | ||||
-rw-r--r-- | main.cpp | 229 | ||||
-rw-r--r-- | output | 1755 |
4 files changed, 2028 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..d6ad165 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# MOO + +A circuit description language that I wrote in 2021 where MOO is NAND. @@ -0,0 +1,41 @@ +def NOT x -> y + y = MOO x x +fed +def AND x y -> z + z = NOT MOO x y +fed +def OR x y -> z + # z = NOT AND NOT x NOT y + z = MOO ( NOT x NOT y ) +fed +def XOR x y -> z + # z = AND OR x y NOT AND x y + z = AND ( OR x y ) ( MOO x y ) +fed +def MUX x y b -> z + z = XOR ( AND x NOT b ) ( AND y b ) +fed +def DEMUX x b -> y z + zero = XOR x x + y = MUX x zero b + z = MUX zero x b +fed +def IS_PALINDROME x 32 -> y + a_0 = NOT XOR x_0 x_0 + loop i 16 + a_i+1 = AND ( NOT XOR x_i x_31-i ) a_i + pool + y = AND a_16 a_16 +fed +def ADD x 64 y 64 -> z 65 + c_0 = XOR x_0 x_0 + loop i 64 + z_i = XOR ( XOR x_i y_i ) c_i + c_i+1 = OR ( OR ( AND x_i y_i ) ( AND x_i c_i ) ) ( AND y_i c_i ) + pool + z_64 = c_64 +fed +def MULTIPLY x 8 y 8 -> z 16 + # uhhhhhhhh + z 65 = ADD x 64 x 64 +fed
\ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..258d51d --- /dev/null +++ b/main.cpp @@ -0,0 +1,229 @@ +#include <bits/stdc++.h> +#define f first +#define s second +using namespace std; +using ll = long long; +using ii = pair<int, int>; +using str = string; + +int idx = 0; + +struct func { + vector<str> arg, ret, body; + // generate body with a and r substituted in as the arg and ret values + vector<str> sub(vector<str> & a, vector<str> & r) { + vector<str> res; + map<str, str> var; + for (str s : body) { + stringstream ss(s); + res.push_back(""); + while (ss >> s) { + if (s == "=" || s == "MOO") { + res.back() += s + " "; + continue; + } + auto it = find(begin(arg), end(arg), s); + if (it != end(arg)) { + res.back() += a[it-begin(arg)] + " "; + continue; + } + it = find(begin(ret), end(ret), s); + if (it != end(ret)) { + res.back() += r[it-begin(ret)] + " "; + continue; + } + if (!var.count(s)) var[s] = to_string(++idx); + res.back() += var[s] + " "; + } + } + return res; + } + str remove_u(str & s) { + str res = s; + if (res.find('_') != -1) + res.erase(res.find('_'), 1); + return res; + } + void print() { + for (int i = 0; i < arg.size(); ++i) cout << ",("[i == 0] << remove_u(arg[i]); + cout << ")-"; + for (int i = 0; i < ret.size(); ++i) cout << ",>"[i == 0] << remove_u(ret[i]); + cout << ":\n"; + for (str s : body) { + stringstream ss(s); + int pos = 0; + while (ss >> s) { + if (pos && pos++ > 1) cout << ","; + cout << remove_u(s); + if (s == "MOO") cout << "(", pos = 1; + } + cout << ")\n"; + } + } +}; + +map<str, func> M; + +int main() { + if (fopen("in", "r")) freopen("input", "r", stdin), freopen("output", "w", stdout); + + // Initialize MOO function + func & F = M["MOO"]; + F.arg.push_back("x"), F.arg.push_back("y"); + F.ret.push_back("z"); + F.body.push_back("z = MOO x y"); + + str s; + while (getline(cin, s)) { + stringstream ss(s); + ss >> s; + if (s == "def") { // function definition + str name; ss >> name; + func & F = M[name]; + // support "arrays" + while (ss >> s, s != "->") { // args + try { + int n = stoi(s); + str ar = F.arg.back(); + F.arg.pop_back(); + for (int i = 0; i < n; ++i) F.arg.push_back(ar+"_"+to_string(i)); + } + catch (...) { + F.arg.push_back(s); + } + } + while (ss >> s) { // return values + try { + int n = stoi(s); + str ar = F.ret.back(); + F.ret.pop_back(); + for (int i = 0; i < n; ++i) F.ret.push_back(ar+"_"+to_string(i)); + } + catch (...) { + F.ret.push_back(s); + } + } + + // Read in the body + vector<str> parse; + vector<pair<char, int>> loopinfo; + while (getline(cin, s), s != "fed") { + if (s.find('#') != -1) continue; // comment + + if (s.find("loop") != -1) { // loop + parse.push_back("loop"); + stringstream ss(s); + ss >> s; + char c; int n; ss >> c >> n; + loopinfo.emplace_back(c, n); + continue; + } + + if (s.find("pool") != -1) { // end of loop + char c = loopinfo.back().f; + int n = loopinfo.back().s; + vector<vector<str>> reps(n); + vector<map<int, int>> loopvar(n); + while (parse.back() != "loop") { + for (int i = 0; i < n; ++i) { + str line = parse.back(), nline; + stringstream ss(line); + while (ss >> s) { + int pos_u = s.find('_'), pos_c = s.find(c); + str t = s; + if (pos_u != -1 && pos_c != -1) { + // parse array access + str var_name = s.substr(0, pos_u); + t = var_name+"_"; + if (s.find('+') != -1) { + int pos_o = s.find('+'); + str arg_a = s.substr(pos_u+1, pos_o-pos_u-1); + str arg_b = s.substr(pos_o+1); + t += to_string((arg_a[0] == c ? i : stoi(arg_a)) + (arg_b[0] == c ? i : stoi(arg_b))); + } + else if (s.find('-') != -1) { + int pos_o = s.find('-'); + str arg_a = s.substr(pos_u+1, pos_o-pos_u-1); + str arg_b = s.substr(pos_o+1); + t += to_string((arg_a[0] == c ? i : stoi(arg_a)) - (arg_b[0] == c ? i : stoi(arg_b))); + } + else t += to_string(i); + } + else { + try { + int x = stoi(s); + if (!loopvar[i].count(x)) loopvar[i][x] = ++idx; + t = to_string(loopvar[i][x]); + } + catch (...) {} + } + nline += t + " "; + } + reps[i].push_back(nline); + } + parse.pop_back(); + } + parse.pop_back(), loopinfo.pop_back(); + for (int i = 0; i < n; ++i) + for (int j = reps[i].size()-1; j >= 0; --j) parse.push_back(reps[i][j]); + continue; + } + + + stringstream ss(s); + vector<str> R; + while (ss >> s, s != "=") R.push_back(s); + + vector<str> st, fst; + vector<int> cnt(1, 0); + while (ss >> s) { + if (s == "(" || s == ")") continue; // parenthesis for readibility + + try { + int n = stoi(s); + str ar = st.back(); + st.pop_back(); + for (int i = 0; i < n; ++i) st.push_back(ar+"_"+to_string(i)); + } + catch (...) { + st.push_back(s); + } + if (M.count(s)) fst.push_back(s), cnt.push_back(0); + else ++cnt.back(); + while (cnt.size() && fst.size() && cnt.back() == M[fst.back()].arg.size()) { + func & f = M[fst.back()]; // current func + vector<str> a; + while (st.back() != fst.back()) + a.push_back(st.back()), st.pop_back(); + reverse(begin(a), end(a)); + vector<str> r(f.ret.size()); + for (str & s : r) s = to_string(++idx); + + vector<str> sub = M[fst.back()].sub(a, r); + + for (str & s : sub) parse.push_back(s); + fst.pop_back(), st.pop_back(), cnt.pop_back(); + for (str & s : r) st.push_back(s), ++cnt.back(); + } + } + + for (int i = 0; i < st.size(); ++i) { + for (int j = parse.size()-1; j >= 0; --j) { + int pos = parse[j].find(st[i]); + if (pos != -1 && pos < parse[j].find("=")) { + parse[j] = R[i] + parse[j].substr(st[i].size()); + break; + } + } + } + } + + F.body = parse; + cout << name; + F.print(); + } + else { + // uhhhhh + } + } +}
\ No newline at end of file @@ -0,0 +1,1755 @@ +NOT(x)->y: +y=MOO(x,x) +AND(x,y)->z: +2=MOO(x,y) +z=MOO(2,2) +OR(x,y)->z: +4=MOO(x,x) +5=MOO(y,y) +z=MOO(4,5) +XOR(x,y)->z: +8=MOO(x,x) +9=MOO(y,y) +7=MOO(8,9) +10=MOO(x,y) +12=MOO(7,10) +z=MOO(12,12) +MUX(x,y,b)->z: +13=MOO(b,b) +15=MOO(x,13) +14=MOO(15,15) +17=MOO(y,b) +16=MOO(17,17) +19=MOO(14,14) +20=MOO(16,16) +21=MOO(19,20) +22=MOO(14,16) +23=MOO(21,22) +z=MOO(23,23) +DEMUX(x,b)->y,z: +25=MOO(x,x) +26=MOO(x,x) +27=MOO(25,26) +28=MOO(x,x) +29=MOO(27,28) +zero=MOO(29,29) +31=MOO(b,b) +32=MOO(x,31) +33=MOO(32,32) +34=MOO(zero,b) +35=MOO(34,34) +36=MOO(33,33) +37=MOO(35,35) +38=MOO(36,37) +39=MOO(33,35) +40=MOO(38,39) +y=MOO(40,40) +42=MOO(b,b) +43=MOO(zero,42) +44=MOO(43,43) +45=MOO(x,b) +46=MOO(45,45) +47=MOO(44,44) +48=MOO(46,46) +49=MOO(47,48) +50=MOO(44,46) +51=MOO(49,50) +z=MOO(51,51) +IS_PALINDROME(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31)->y: +53=MOO(x0,x0) +54=MOO(x0,x0) +55=MOO(53,54) +56=MOO(x0,x0) +57=MOO(55,56) +52=MOO(57,57) +a0=MOO(52,52) +164=MOO(x0,x0) +165=MOO(x31,x31) +132=MOO(164,165) +133=MOO(x0,x31) +116=MOO(132,133) +100=MOO(116,116) +84=MOO(100,100) +68=MOO(84,a0) +a1=MOO(68,68) +166=MOO(x1,x1) +167=MOO(x30,x30) +134=MOO(166,167) +135=MOO(x1,x30) +117=MOO(134,135) +101=MOO(117,117) +85=MOO(101,101) +69=MOO(85,a1) +a2=MOO(69,69) +168=MOO(x2,x2) +169=MOO(x29,x29) +136=MOO(168,169) +137=MOO(x2,x29) +118=MOO(136,137) +102=MOO(118,118) +86=MOO(102,102) +70=MOO(86,a2) +a3=MOO(70,70) +170=MOO(x3,x3) +171=MOO(x28,x28) +138=MOO(170,171) +139=MOO(x3,x28) +119=MOO(138,139) +103=MOO(119,119) +87=MOO(103,103) +71=MOO(87,a3) +a4=MOO(71,71) +172=MOO(x4,x4) +173=MOO(x27,x27) +140=MOO(172,173) +141=MOO(x4,x27) +120=MOO(140,141) +104=MOO(120,120) +88=MOO(104,104) +72=MOO(88,a4) +a5=MOO(72,72) +174=MOO(x5,x5) +175=MOO(x26,x26) +142=MOO(174,175) +143=MOO(x5,x26) +121=MOO(142,143) +105=MOO(121,121) +89=MOO(105,105) +73=MOO(89,a5) +a6=MOO(73,73) +176=MOO(x6,x6) +177=MOO(x25,x25) +144=MOO(176,177) +145=MOO(x6,x25) +122=MOO(144,145) +106=MOO(122,122) +90=MOO(106,106) +74=MOO(90,a6) +a7=MOO(74,74) +178=MOO(x7,x7) +179=MOO(x24,x24) +146=MOO(178,179) +147=MOO(x7,x24) +123=MOO(146,147) +107=MOO(123,123) +91=MOO(107,107) +75=MOO(91,a7) +a8=MOO(75,75) +180=MOO(x8,x8) +181=MOO(x23,x23) +148=MOO(180,181) +149=MOO(x8,x23) +124=MOO(148,149) +108=MOO(124,124) +92=MOO(108,108) +76=MOO(92,a8) +a9=MOO(76,76) +182=MOO(x9,x9) +183=MOO(x22,x22) +150=MOO(182,183) +151=MOO(x9,x22) +125=MOO(150,151) +109=MOO(125,125) +93=MOO(109,109) +77=MOO(93,a9) +a10=MOO(77,77) +184=MOO(x10,x10) +185=MOO(x21,x21) +152=MOO(184,185) +153=MOO(x10,x21) +126=MOO(152,153) +110=MOO(126,126) +94=MOO(110,110) +78=MOO(94,a10) +a11=MOO(78,78) +186=MOO(x11,x11) +187=MOO(x20,x20) +154=MOO(186,187) +155=MOO(x11,x20) +127=MOO(154,155) +111=MOO(127,127) +95=MOO(111,111) +79=MOO(95,a11) +a12=MOO(79,79) +188=MOO(x12,x12) +189=MOO(x19,x19) +156=MOO(188,189) +157=MOO(x12,x19) +128=MOO(156,157) +112=MOO(128,128) +96=MOO(112,112) +80=MOO(96,a12) +a13=MOO(80,80) +190=MOO(x13,x13) +191=MOO(x18,x18) +158=MOO(190,191) +159=MOO(x13,x18) +129=MOO(158,159) +113=MOO(129,129) +97=MOO(113,113) +81=MOO(97,a13) +a14=MOO(81,81) +192=MOO(x14,x14) +193=MOO(x17,x17) +160=MOO(192,193) +161=MOO(x14,x17) +130=MOO(160,161) +114=MOO(130,130) +98=MOO(114,114) +82=MOO(98,a14) +a15=MOO(82,82) +194=MOO(x15,x15) +195=MOO(x16,x16) +162=MOO(194,195) +163=MOO(x15,x16) +131=MOO(162,163) +115=MOO(131,131) +99=MOO(115,115) +83=MOO(99,a15) +a16=MOO(83,83) +197=MOO(a16,a16) +y=MOO(197,197) +ADD(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63,y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36,y37,y38,y39,y40,y41,y42,y43,y44,y45,y46,y47,y48,y49,y50,y51,y52,y53,y54,y55,y56,y57,y58,y59,y60,y61,y62,y63)->z0,z1,z2,z3,z4,z5,z6,z7,z8,z9,z10,z11,z12,z13,z14,z15,z16,z17,z18,z19,z20,z21,z22,z23,z24,z25,z26,z27,z28,z29,z30,z31,z32,z33,z34,z35,z36,z37,z38,z39,z40,z41,z42,z43,z44,z45,z46,z47,z48,z49,z50,z51,z52,z53,z54,z55,z56,z57,z58,z59,z60,z61,z62,z63,z64: +199=MOO(x0,x0) +200=MOO(x0,x0) +201=MOO(199,200) +202=MOO(x0,x0) +203=MOO(201,202) +c0=MOO(203,203) +1508=MOO(x0,x0) +1509=MOO(y0,y0) +1380=MOO(1508,1509) +1381=MOO(x0,y0) +1316=MOO(1380,1381) +1124=MOO(1316,1316) +1188=MOO(1124,1124) +1189=MOO(c0,c0) +996=MOO(1188,1189) +997=MOO(1124,c0) +932=MOO(996,997) +z0=MOO(932,932) +868=MOO(x0,y0) +740=MOO(868,868) +804=MOO(x0,c0) +676=MOO(804,804) +548=MOO(740,740) +549=MOO(676,676) +420=MOO(548,549) +484=MOO(y0,c0) +356=MOO(484,484) +228=MOO(420,420) +229=MOO(356,356) +c1=MOO(228,229) +1510=MOO(x1,x1) +1511=MOO(y1,y1) +1382=MOO(1510,1511) +1383=MOO(x1,y1) +1317=MOO(1382,1383) +1125=MOO(1317,1317) +1190=MOO(1125,1125) +1191=MOO(c1,c1) +998=MOO(1190,1191) +999=MOO(1125,c1) +933=MOO(998,999) +z1=MOO(933,933) +869=MOO(x1,y1) +741=MOO(869,869) +805=MOO(x1,c1) +677=MOO(805,805) +550=MOO(741,741) +551=MOO(677,677) +421=MOO(550,551) +485=MOO(y1,c1) +357=MOO(485,485) +230=MOO(421,421) +231=MOO(357,357) +c2=MOO(230,231) +1512=MOO(x2,x2) +1513=MOO(y2,y2) +1384=MOO(1512,1513) +1385=MOO(x2,y2) +1318=MOO(1384,1385) +1126=MOO(1318,1318) +1192=MOO(1126,1126) +1193=MOO(c2,c2) +1000=MOO(1192,1193) +1001=MOO(1126,c2) +934=MOO(1000,1001) +z2=MOO(934,934) +870=MOO(x2,y2) +742=MOO(870,870) +806=MOO(x2,c2) +678=MOO(806,806) +552=MOO(742,742) +553=MOO(678,678) +422=MOO(552,553) +486=MOO(y2,c2) +358=MOO(486,486) +232=MOO(422,422) +233=MOO(358,358) +c3=MOO(232,233) +1514=MOO(x3,x3) +1515=MOO(y3,y3) +1386=MOO(1514,1515) +1387=MOO(x3,y3) +1319=MOO(1386,1387) +1127=MOO(1319,1319) +1194=MOO(1127,1127) +1195=MOO(c3,c3) +1002=MOO(1194,1195) +1003=MOO(1127,c3) +935=MOO(1002,1003) +z3=MOO(935,935) +871=MOO(x3,y3) +743=MOO(871,871) +807=MOO(x3,c3) +679=MOO(807,807) +554=MOO(743,743) +555=MOO(679,679) +423=MOO(554,555) +487=MOO(y3,c3) +359=MOO(487,487) +234=MOO(423,423) +235=MOO(359,359) +c4=MOO(234,235) +1516=MOO(x4,x4) +1517=MOO(y4,y4) +1388=MOO(1516,1517) +1389=MOO(x4,y4) +1320=MOO(1388,1389) +1128=MOO(1320,1320) +1196=MOO(1128,1128) +1197=MOO(c4,c4) +1004=MOO(1196,1197) +1005=MOO(1128,c4) +936=MOO(1004,1005) +z4=MOO(936,936) +872=MOO(x4,y4) +744=MOO(872,872) +808=MOO(x4,c4) +680=MOO(808,808) +556=MOO(744,744) +557=MOO(680,680) +424=MOO(556,557) +488=MOO(y4,c4) +360=MOO(488,488) +236=MOO(424,424) +237=MOO(360,360) +c5=MOO(236,237) +1518=MOO(x5,x5) +1519=MOO(y5,y5) +1390=MOO(1518,1519) +1391=MOO(x5,y5) +1321=MOO(1390,1391) +1129=MOO(1321,1321) +1198=MOO(1129,1129) +1199=MOO(c5,c5) +1006=MOO(1198,1199) +1007=MOO(1129,c5) +937=MOO(1006,1007) +z5=MOO(937,937) +873=MOO(x5,y5) +745=MOO(873,873) +809=MOO(x5,c5) +681=MOO(809,809) +558=MOO(745,745) +559=MOO(681,681) +425=MOO(558,559) +489=MOO(y5,c5) +361=MOO(489,489) +238=MOO(425,425) +239=MOO(361,361) +c6=MOO(238,239) +1520=MOO(x6,x6) +1521=MOO(y6,y6) +1392=MOO(1520,1521) +1393=MOO(x6,y6) +1322=MOO(1392,1393) +1130=MOO(1322,1322) +1200=MOO(1130,1130) +1201=MOO(c6,c6) +1008=MOO(1200,1201) +1009=MOO(1130,c6) +938=MOO(1008,1009) +z6=MOO(938,938) +874=MOO(x6,y6) +746=MOO(874,874) +810=MOO(x6,c6) +682=MOO(810,810) +560=MOO(746,746) +561=MOO(682,682) +426=MOO(560,561) +490=MOO(y6,c6) +362=MOO(490,490) +240=MOO(426,426) +241=MOO(362,362) +c7=MOO(240,241) +1522=MOO(x7,x7) +1523=MOO(y7,y7) +1394=MOO(1522,1523) +1395=MOO(x7,y7) +1323=MOO(1394,1395) +1131=MOO(1323,1323) +1202=MOO(1131,1131) +1203=MOO(c7,c7) +1010=MOO(1202,1203) +1011=MOO(1131,c7) +939=MOO(1010,1011) +z7=MOO(939,939) +875=MOO(x7,y7) +747=MOO(875,875) +811=MOO(x7,c7) +683=MOO(811,811) +562=MOO(747,747) +563=MOO(683,683) +427=MOO(562,563) +491=MOO(y7,c7) +363=MOO(491,491) +242=MOO(427,427) +243=MOO(363,363) +c8=MOO(242,243) +1524=MOO(x8,x8) +1525=MOO(y8,y8) +1396=MOO(1524,1525) +1397=MOO(x8,y8) +1324=MOO(1396,1397) +1132=MOO(1324,1324) +1204=MOO(1132,1132) +1205=MOO(c8,c8) +1012=MOO(1204,1205) +1013=MOO(1132,c8) +940=MOO(1012,1013) +z8=MOO(940,940) +876=MOO(x8,y8) +748=MOO(876,876) +812=MOO(x8,c8) +684=MOO(812,812) +564=MOO(748,748) +565=MOO(684,684) +428=MOO(564,565) +492=MOO(y8,c8) +364=MOO(492,492) +244=MOO(428,428) +245=MOO(364,364) +c9=MOO(244,245) +1526=MOO(x9,x9) +1527=MOO(y9,y9) +1398=MOO(1526,1527) +1399=MOO(x9,y9) +1325=MOO(1398,1399) +1133=MOO(1325,1325) +1206=MOO(1133,1133) +1207=MOO(c9,c9) +1014=MOO(1206,1207) +1015=MOO(1133,c9) +941=MOO(1014,1015) +z9=MOO(941,941) +877=MOO(x9,y9) +749=MOO(877,877) +813=MOO(x9,c9) +685=MOO(813,813) +566=MOO(749,749) +567=MOO(685,685) +429=MOO(566,567) +493=MOO(y9,c9) +365=MOO(493,493) +246=MOO(429,429) +247=MOO(365,365) +c10=MOO(246,247) +1528=MOO(x10,x10) +1529=MOO(y10,y10) +1400=MOO(1528,1529) +1401=MOO(x10,y10) +1326=MOO(1400,1401) +1134=MOO(1326,1326) +1208=MOO(1134,1134) +1209=MOO(c10,c10) +1016=MOO(1208,1209) +1017=MOO(1134,c10) +942=MOO(1016,1017) +z10=MOO(942,942) +878=MOO(x10,y10) +750=MOO(878,878) +814=MOO(x10,c10) +686=MOO(814,814) +568=MOO(750,750) +569=MOO(686,686) +430=MOO(568,569) +494=MOO(y10,c10) +366=MOO(494,494) +248=MOO(430,430) +249=MOO(366,366) +c11=MOO(248,249) +1530=MOO(x11,x11) +1531=MOO(y11,y11) +1402=MOO(1530,1531) +1403=MOO(x11,y11) +1327=MOO(1402,1403) +1135=MOO(1327,1327) +1210=MOO(1135,1135) +1211=MOO(c11,c11) +1018=MOO(1210,1211) +1019=MOO(1135,c11) +943=MOO(1018,1019) +z11=MOO(943,943) +879=MOO(x11,y11) +751=MOO(879,879) +815=MOO(x11,c11) +687=MOO(815,815) +570=MOO(751,751) +571=MOO(687,687) +431=MOO(570,571) +495=MOO(y11,c11) +367=MOO(495,495) +250=MOO(431,431) +251=MOO(367,367) +c12=MOO(250,251) +1532=MOO(x12,x12) +1533=MOO(y12,y12) +1404=MOO(1532,1533) +1405=MOO(x12,y12) +1328=MOO(1404,1405) +1136=MOO(1328,1328) +1212=MOO(1136,1136) +1213=MOO(c12,c12) +1020=MOO(1212,1213) +1021=MOO(1136,c12) +944=MOO(1020,1021) +z12=MOO(944,944) +880=MOO(x12,y12) +752=MOO(880,880) +816=MOO(x12,c12) +688=MOO(816,816) +572=MOO(752,752) +573=MOO(688,688) +432=MOO(572,573) +496=MOO(y12,c12) +368=MOO(496,496) +252=MOO(432,432) +253=MOO(368,368) +c13=MOO(252,253) +1534=MOO(x13,x13) +1535=MOO(y13,y13) +1406=MOO(1534,1535) +1407=MOO(x13,y13) +1329=MOO(1406,1407) +1137=MOO(1329,1329) +1214=MOO(1137,1137) +1215=MOO(c13,c13) +1022=MOO(1214,1215) +1023=MOO(1137,c13) +945=MOO(1022,1023) +z13=MOO(945,945) +881=MOO(x13,y13) +753=MOO(881,881) +817=MOO(x13,c13) +689=MOO(817,817) +574=MOO(753,753) +575=MOO(689,689) +433=MOO(574,575) +497=MOO(y13,c13) +369=MOO(497,497) +254=MOO(433,433) +255=MOO(369,369) +c14=MOO(254,255) +1536=MOO(x14,x14) +1537=MOO(y14,y14) +1408=MOO(1536,1537) +1409=MOO(x14,y14) +1330=MOO(1408,1409) +1138=MOO(1330,1330) +1216=MOO(1138,1138) +1217=MOO(c14,c14) +1024=MOO(1216,1217) +1025=MOO(1138,c14) +946=MOO(1024,1025) +z14=MOO(946,946) +882=MOO(x14,y14) +754=MOO(882,882) +818=MOO(x14,c14) +690=MOO(818,818) +576=MOO(754,754) +577=MOO(690,690) +434=MOO(576,577) +498=MOO(y14,c14) +370=MOO(498,498) +256=MOO(434,434) +257=MOO(370,370) +c15=MOO(256,257) +1538=MOO(x15,x15) +1539=MOO(y15,y15) +1410=MOO(1538,1539) +1411=MOO(x15,y15) +1331=MOO(1410,1411) +1139=MOO(1331,1331) +1218=MOO(1139,1139) +1219=MOO(c15,c15) +1026=MOO(1218,1219) +1027=MOO(1139,c15) +947=MOO(1026,1027) +z15=MOO(947,947) +883=MOO(x15,y15) +755=MOO(883,883) +819=MOO(x15,c15) +691=MOO(819,819) +578=MOO(755,755) +579=MOO(691,691) +435=MOO(578,579) +499=MOO(y15,c15) +371=MOO(499,499) +258=MOO(435,435) +259=MOO(371,371) +c16=MOO(258,259) +1540=MOO(x16,x16) +1541=MOO(y16,y16) +1412=MOO(1540,1541) +1413=MOO(x16,y16) +1332=MOO(1412,1413) +1140=MOO(1332,1332) +1220=MOO(1140,1140) +1221=MOO(c16,c16) +1028=MOO(1220,1221) +1029=MOO(1140,c16) +948=MOO(1028,1029) +z16=MOO(948,948) +884=MOO(x16,y16) +756=MOO(884,884) +820=MOO(x16,c16) +692=MOO(820,820) +580=MOO(756,756) +581=MOO(692,692) +436=MOO(580,581) +500=MOO(y16,c16) +372=MOO(500,500) +260=MOO(436,436) +261=MOO(372,372) +c17=MOO(260,261) +1542=MOO(x17,x17) +1543=MOO(y17,y17) +1414=MOO(1542,1543) +1415=MOO(x17,y17) +1333=MOO(1414,1415) +1141=MOO(1333,1333) +1222=MOO(1141,1141) +1223=MOO(c17,c17) +1030=MOO(1222,1223) +1031=MOO(1141,c17) +949=MOO(1030,1031) +z17=MOO(949,949) +885=MOO(x17,y17) +757=MOO(885,885) +821=MOO(x17,c17) +693=MOO(821,821) +582=MOO(757,757) +583=MOO(693,693) +437=MOO(582,583) +501=MOO(y17,c17) +373=MOO(501,501) +262=MOO(437,437) +263=MOO(373,373) +c18=MOO(262,263) +1544=MOO(x18,x18) +1545=MOO(y18,y18) +1416=MOO(1544,1545) +1417=MOO(x18,y18) +1334=MOO(1416,1417) +1142=MOO(1334,1334) +1224=MOO(1142,1142) +1225=MOO(c18,c18) +1032=MOO(1224,1225) +1033=MOO(1142,c18) +950=MOO(1032,1033) +z18=MOO(950,950) +886=MOO(x18,y18) +758=MOO(886,886) +822=MOO(x18,c18) +694=MOO(822,822) +584=MOO(758,758) +585=MOO(694,694) +438=MOO(584,585) +502=MOO(y18,c18) +374=MOO(502,502) +264=MOO(438,438) +265=MOO(374,374) +c19=MOO(264,265) +1546=MOO(x19,x19) +1547=MOO(y19,y19) +1418=MOO(1546,1547) +1419=MOO(x19,y19) +1335=MOO(1418,1419) +1143=MOO(1335,1335) +1226=MOO(1143,1143) +1227=MOO(c19,c19) +1034=MOO(1226,1227) +1035=MOO(1143,c19) +951=MOO(1034,1035) +z19=MOO(951,951) +887=MOO(x19,y19) +759=MOO(887,887) +823=MOO(x19,c19) +695=MOO(823,823) +586=MOO(759,759) +587=MOO(695,695) +439=MOO(586,587) +503=MOO(y19,c19) +375=MOO(503,503) +266=MOO(439,439) +267=MOO(375,375) +c20=MOO(266,267) +1548=MOO(x20,x20) +1549=MOO(y20,y20) +1420=MOO(1548,1549) +1421=MOO(x20,y20) +1336=MOO(1420,1421) +1144=MOO(1336,1336) +1228=MOO(1144,1144) +1229=MOO(c20,c20) +1036=MOO(1228,1229) +1037=MOO(1144,c20) +952=MOO(1036,1037) +z20=MOO(952,952) +888=MOO(x20,y20) +760=MOO(888,888) +824=MOO(x20,c20) +696=MOO(824,824) +588=MOO(760,760) +589=MOO(696,696) +440=MOO(588,589) +504=MOO(y20,c20) +376=MOO(504,504) +268=MOO(440,440) +269=MOO(376,376) +c21=MOO(268,269) +1550=MOO(x21,x21) +1551=MOO(y21,y21) +1422=MOO(1550,1551) +1423=MOO(x21,y21) +1337=MOO(1422,1423) +1145=MOO(1337,1337) +1230=MOO(1145,1145) +1231=MOO(c21,c21) +1038=MOO(1230,1231) +1039=MOO(1145,c21) +953=MOO(1038,1039) +z21=MOO(953,953) +889=MOO(x21,y21) +761=MOO(889,889) +825=MOO(x21,c21) +697=MOO(825,825) +590=MOO(761,761) +591=MOO(697,697) +441=MOO(590,591) +505=MOO(y21,c21) +377=MOO(505,505) +270=MOO(441,441) +271=MOO(377,377) +c22=MOO(270,271) +1552=MOO(x22,x22) +1553=MOO(y22,y22) +1424=MOO(1552,1553) +1425=MOO(x22,y22) +1338=MOO(1424,1425) +1146=MOO(1338,1338) +1232=MOO(1146,1146) +1233=MOO(c22,c22) +1040=MOO(1232,1233) +1041=MOO(1146,c22) +954=MOO(1040,1041) +z22=MOO(954,954) +890=MOO(x22,y22) +762=MOO(890,890) +826=MOO(x22,c22) +698=MOO(826,826) +592=MOO(762,762) +593=MOO(698,698) +442=MOO(592,593) +506=MOO(y22,c22) +378=MOO(506,506) +272=MOO(442,442) +273=MOO(378,378) +c23=MOO(272,273) +1554=MOO(x23,x23) +1555=MOO(y23,y23) +1426=MOO(1554,1555) +1427=MOO(x23,y23) +1339=MOO(1426,1427) +1147=MOO(1339,1339) +1234=MOO(1147,1147) +1235=MOO(c23,c23) +1042=MOO(1234,1235) +1043=MOO(1147,c23) +955=MOO(1042,1043) +z23=MOO(955,955) +891=MOO(x23,y23) +763=MOO(891,891) +827=MOO(x23,c23) +699=MOO(827,827) +594=MOO(763,763) +595=MOO(699,699) +443=MOO(594,595) +507=MOO(y23,c23) +379=MOO(507,507) +274=MOO(443,443) +275=MOO(379,379) +c24=MOO(274,275) +1556=MOO(x24,x24) +1557=MOO(y24,y24) +1428=MOO(1556,1557) +1429=MOO(x24,y24) +1340=MOO(1428,1429) +1148=MOO(1340,1340) +1236=MOO(1148,1148) +1237=MOO(c24,c24) +1044=MOO(1236,1237) +1045=MOO(1148,c24) +956=MOO(1044,1045) +z24=MOO(956,956) +892=MOO(x24,y24) +764=MOO(892,892) +828=MOO(x24,c24) +700=MOO(828,828) +596=MOO(764,764) +597=MOO(700,700) +444=MOO(596,597) +508=MOO(y24,c24) +380=MOO(508,508) +276=MOO(444,444) +277=MOO(380,380) +c25=MOO(276,277) +1558=MOO(x25,x25) +1559=MOO(y25,y25) +1430=MOO(1558,1559) +1431=MOO(x25,y25) +1341=MOO(1430,1431) +1149=MOO(1341,1341) +1238=MOO(1149,1149) +1239=MOO(c25,c25) +1046=MOO(1238,1239) +1047=MOO(1149,c25) +957=MOO(1046,1047) +z25=MOO(957,957) +893=MOO(x25,y25) +765=MOO(893,893) +829=MOO(x25,c25) +701=MOO(829,829) +598=MOO(765,765) +599=MOO(701,701) +445=MOO(598,599) +509=MOO(y25,c25) +381=MOO(509,509) +278=MOO(445,445) +279=MOO(381,381) +c26=MOO(278,279) +1560=MOO(x26,x26) +1561=MOO(y26,y26) +1432=MOO(1560,1561) +1433=MOO(x26,y26) +1342=MOO(1432,1433) +1150=MOO(1342,1342) +1240=MOO(1150,1150) +1241=MOO(c26,c26) +1048=MOO(1240,1241) +1049=MOO(1150,c26) +958=MOO(1048,1049) +z26=MOO(958,958) +894=MOO(x26,y26) +766=MOO(894,894) +830=MOO(x26,c26) +702=MOO(830,830) +600=MOO(766,766) +601=MOO(702,702) +446=MOO(600,601) +510=MOO(y26,c26) +382=MOO(510,510) +280=MOO(446,446) +281=MOO(382,382) +c27=MOO(280,281) +1562=MOO(x27,x27) +1563=MOO(y27,y27) +1434=MOO(1562,1563) +1435=MOO(x27,y27) +1343=MOO(1434,1435) +1151=MOO(1343,1343) +1242=MOO(1151,1151) +1243=MOO(c27,c27) +1050=MOO(1242,1243) +1051=MOO(1151,c27) +959=MOO(1050,1051) +z27=MOO(959,959) +895=MOO(x27,y27) +767=MOO(895,895) +831=MOO(x27,c27) +703=MOO(831,831) +602=MOO(767,767) +603=MOO(703,703) +447=MOO(602,603) +511=MOO(y27,c27) +383=MOO(511,511) +282=MOO(447,447) +283=MOO(383,383) +c28=MOO(282,283) +1564=MOO(x28,x28) +1565=MOO(y28,y28) +1436=MOO(1564,1565) +1437=MOO(x28,y28) +1344=MOO(1436,1437) +1152=MOO(1344,1344) +1244=MOO(1152,1152) +1245=MOO(c28,c28) +1052=MOO(1244,1245) +1053=MOO(1152,c28) +960=MOO(1052,1053) +z28=MOO(960,960) +896=MOO(x28,y28) +768=MOO(896,896) +832=MOO(x28,c28) +704=MOO(832,832) +604=MOO(768,768) +605=MOO(704,704) +448=MOO(604,605) +512=MOO(y28,c28) +384=MOO(512,512) +284=MOO(448,448) +285=MOO(384,384) +c29=MOO(284,285) +1566=MOO(x29,x29) +1567=MOO(y29,y29) +1438=MOO(1566,1567) +1439=MOO(x29,y29) +1345=MOO(1438,1439) +1153=MOO(1345,1345) +1246=MOO(1153,1153) +1247=MOO(c29,c29) +1054=MOO(1246,1247) +1055=MOO(1153,c29) +961=MOO(1054,1055) +z29=MOO(961,961) +897=MOO(x29,y29) +769=MOO(897,897) +833=MOO(x29,c29) +705=MOO(833,833) +606=MOO(769,769) +607=MOO(705,705) +449=MOO(606,607) +513=MOO(y29,c29) +385=MOO(513,513) +286=MOO(449,449) +287=MOO(385,385) +c30=MOO(286,287) +1568=MOO(x30,x30) +1569=MOO(y30,y30) +1440=MOO(1568,1569) +1441=MOO(x30,y30) +1346=MOO(1440,1441) +1154=MOO(1346,1346) +1248=MOO(1154,1154) +1249=MOO(c30,c30) +1056=MOO(1248,1249) +1057=MOO(1154,c30) +962=MOO(1056,1057) +z30=MOO(962,962) +898=MOO(x30,y30) +770=MOO(898,898) +834=MOO(x30,c30) +706=MOO(834,834) +608=MOO(770,770) +609=MOO(706,706) +450=MOO(608,609) +514=MOO(y30,c30) +386=MOO(514,514) +288=MOO(450,450) +289=MOO(386,386) +c31=MOO(288,289) +1570=MOO(x31,x31) +1571=MOO(y31,y31) +1442=MOO(1570,1571) +1443=MOO(x31,y31) +1347=MOO(1442,1443) +1155=MOO(1347,1347) +1250=MOO(1155,1155) +1251=MOO(c31,c31) +1058=MOO(1250,1251) +1059=MOO(1155,c31) +963=MOO(1058,1059) +z31=MOO(963,963) +899=MOO(x31,y31) +771=MOO(899,899) +835=MOO(x31,c31) +707=MOO(835,835) +610=MOO(771,771) +611=MOO(707,707) +451=MOO(610,611) +515=MOO(y31,c31) +387=MOO(515,515) +290=MOO(451,451) +291=MOO(387,387) +c32=MOO(290,291) +1572=MOO(x32,x32) +1573=MOO(y32,y32) +1444=MOO(1572,1573) +1445=MOO(x32,y32) +1348=MOO(1444,1445) +1156=MOO(1348,1348) +1252=MOO(1156,1156) +1253=MOO(c32,c32) +1060=MOO(1252,1253) +1061=MOO(1156,c32) +964=MOO(1060,1061) +z32=MOO(964,964) +900=MOO(x32,y32) +772=MOO(900,900) +836=MOO(x32,c32) +708=MOO(836,836) +612=MOO(772,772) +613=MOO(708,708) +452=MOO(612,613) +516=MOO(y32,c32) +388=MOO(516,516) +292=MOO(452,452) +293=MOO(388,388) +c33=MOO(292,293) +1574=MOO(x33,x33) +1575=MOO(y33,y33) +1446=MOO(1574,1575) +1447=MOO(x33,y33) +1349=MOO(1446,1447) +1157=MOO(1349,1349) +1254=MOO(1157,1157) +1255=MOO(c33,c33) +1062=MOO(1254,1255) +1063=MOO(1157,c33) +965=MOO(1062,1063) +z33=MOO(965,965) +901=MOO(x33,y33) +773=MOO(901,901) +837=MOO(x33,c33) +709=MOO(837,837) +614=MOO(773,773) +615=MOO(709,709) +453=MOO(614,615) +517=MOO(y33,c33) +389=MOO(517,517) +294=MOO(453,453) +295=MOO(389,389) +c34=MOO(294,295) +1576=MOO(x34,x34) +1577=MOO(y34,y34) +1448=MOO(1576,1577) +1449=MOO(x34,y34) +1350=MOO(1448,1449) +1158=MOO(1350,1350) +1256=MOO(1158,1158) +1257=MOO(c34,c34) +1064=MOO(1256,1257) +1065=MOO(1158,c34) +966=MOO(1064,1065) +z34=MOO(966,966) +902=MOO(x34,y34) +774=MOO(902,902) +838=MOO(x34,c34) +710=MOO(838,838) +616=MOO(774,774) +617=MOO(710,710) +454=MOO(616,617) +518=MOO(y34,c34) +390=MOO(518,518) +296=MOO(454,454) +297=MOO(390,390) +c35=MOO(296,297) +1578=MOO(x35,x35) +1579=MOO(y35,y35) +1450=MOO(1578,1579) +1451=MOO(x35,y35) +1351=MOO(1450,1451) +1159=MOO(1351,1351) +1258=MOO(1159,1159) +1259=MOO(c35,c35) +1066=MOO(1258,1259) +1067=MOO(1159,c35) +967=MOO(1066,1067) +z35=MOO(967,967) +903=MOO(x35,y35) +775=MOO(903,903) +839=MOO(x35,c35) +711=MOO(839,839) +618=MOO(775,775) +619=MOO(711,711) +455=MOO(618,619) +519=MOO(y35,c35) +391=MOO(519,519) +298=MOO(455,455) +299=MOO(391,391) +c36=MOO(298,299) +1580=MOO(x36,x36) +1581=MOO(y36,y36) +1452=MOO(1580,1581) +1453=MOO(x36,y36) +1352=MOO(1452,1453) +1160=MOO(1352,1352) +1260=MOO(1160,1160) +1261=MOO(c36,c36) +1068=MOO(1260,1261) +1069=MOO(1160,c36) +968=MOO(1068,1069) +z36=MOO(968,968) +904=MOO(x36,y36) +776=MOO(904,904) +840=MOO(x36,c36) +712=MOO(840,840) +620=MOO(776,776) +621=MOO(712,712) +456=MOO(620,621) +520=MOO(y36,c36) +392=MOO(520,520) +300=MOO(456,456) +301=MOO(392,392) +c37=MOO(300,301) +1582=MOO(x37,x37) +1583=MOO(y37,y37) +1454=MOO(1582,1583) +1455=MOO(x37,y37) +1353=MOO(1454,1455) +1161=MOO(1353,1353) +1262=MOO(1161,1161) +1263=MOO(c37,c37) +1070=MOO(1262,1263) +1071=MOO(1161,c37) +969=MOO(1070,1071) +z37=MOO(969,969) +905=MOO(x37,y37) +777=MOO(905,905) +841=MOO(x37,c37) +713=MOO(841,841) +622=MOO(777,777) +623=MOO(713,713) +457=MOO(622,623) +521=MOO(y37,c37) +393=MOO(521,521) +302=MOO(457,457) +303=MOO(393,393) +c38=MOO(302,303) +1584=MOO(x38,x38) +1585=MOO(y38,y38) +1456=MOO(1584,1585) +1457=MOO(x38,y38) +1354=MOO(1456,1457) +1162=MOO(1354,1354) +1264=MOO(1162,1162) +1265=MOO(c38,c38) +1072=MOO(1264,1265) +1073=MOO(1162,c38) +970=MOO(1072,1073) +z38=MOO(970,970) +906=MOO(x38,y38) +778=MOO(906,906) +842=MOO(x38,c38) +714=MOO(842,842) +624=MOO(778,778) +625=MOO(714,714) +458=MOO(624,625) +522=MOO(y38,c38) +394=MOO(522,522) +304=MOO(458,458) +305=MOO(394,394) +c39=MOO(304,305) +1586=MOO(x39,x39) +1587=MOO(y39,y39) +1458=MOO(1586,1587) +1459=MOO(x39,y39) +1355=MOO(1458,1459) +1163=MOO(1355,1355) +1266=MOO(1163,1163) +1267=MOO(c39,c39) +1074=MOO(1266,1267) +1075=MOO(1163,c39) +971=MOO(1074,1075) +z39=MOO(971,971) +907=MOO(x39,y39) +779=MOO(907,907) +843=MOO(x39,c39) +715=MOO(843,843) +626=MOO(779,779) +627=MOO(715,715) +459=MOO(626,627) +523=MOO(y39,c39) +395=MOO(523,523) +306=MOO(459,459) +307=MOO(395,395) +c40=MOO(306,307) +1588=MOO(x40,x40) +1589=MOO(y40,y40) +1460=MOO(1588,1589) +1461=MOO(x40,y40) +1356=MOO(1460,1461) +1164=MOO(1356,1356) +1268=MOO(1164,1164) +1269=MOO(c40,c40) +1076=MOO(1268,1269) +1077=MOO(1164,c40) +972=MOO(1076,1077) +z40=MOO(972,972) +908=MOO(x40,y40) +780=MOO(908,908) +844=MOO(x40,c40) +716=MOO(844,844) +628=MOO(780,780) +629=MOO(716,716) +460=MOO(628,629) +524=MOO(y40,c40) +396=MOO(524,524) +308=MOO(460,460) +309=MOO(396,396) +c41=MOO(308,309) +1590=MOO(x41,x41) +1591=MOO(y41,y41) +1462=MOO(1590,1591) +1463=MOO(x41,y41) +1357=MOO(1462,1463) +1165=MOO(1357,1357) +1270=MOO(1165,1165) +1271=MOO(c41,c41) +1078=MOO(1270,1271) +1079=MOO(1165,c41) +973=MOO(1078,1079) +z41=MOO(973,973) +909=MOO(x41,y41) +781=MOO(909,909) +845=MOO(x41,c41) +717=MOO(845,845) +630=MOO(781,781) +631=MOO(717,717) +461=MOO(630,631) +525=MOO(y41,c41) +397=MOO(525,525) +310=MOO(461,461) +311=MOO(397,397) +c42=MOO(310,311) +1592=MOO(x42,x42) +1593=MOO(y42,y42) +1464=MOO(1592,1593) +1465=MOO(x42,y42) +1358=MOO(1464,1465) +1166=MOO(1358,1358) +1272=MOO(1166,1166) +1273=MOO(c42,c42) +1080=MOO(1272,1273) +1081=MOO(1166,c42) +974=MOO(1080,1081) +z42=MOO(974,974) +910=MOO(x42,y42) +782=MOO(910,910) +846=MOO(x42,c42) +718=MOO(846,846) +632=MOO(782,782) +633=MOO(718,718) +462=MOO(632,633) +526=MOO(y42,c42) +398=MOO(526,526) +312=MOO(462,462) +313=MOO(398,398) +c43=MOO(312,313) +1594=MOO(x43,x43) +1595=MOO(y43,y43) +1466=MOO(1594,1595) +1467=MOO(x43,y43) +1359=MOO(1466,1467) +1167=MOO(1359,1359) +1274=MOO(1167,1167) +1275=MOO(c43,c43) +1082=MOO(1274,1275) +1083=MOO(1167,c43) +975=MOO(1082,1083) +z43=MOO(975,975) +911=MOO(x43,y43) +783=MOO(911,911) +847=MOO(x43,c43) +719=MOO(847,847) +634=MOO(783,783) +635=MOO(719,719) +463=MOO(634,635) +527=MOO(y43,c43) +399=MOO(527,527) +314=MOO(463,463) +315=MOO(399,399) +c44=MOO(314,315) +1596=MOO(x44,x44) +1597=MOO(y44,y44) +1468=MOO(1596,1597) +1469=MOO(x44,y44) +1360=MOO(1468,1469) +1168=MOO(1360,1360) +1276=MOO(1168,1168) +1277=MOO(c44,c44) +1084=MOO(1276,1277) +1085=MOO(1168,c44) +976=MOO(1084,1085) +z44=MOO(976,976) +912=MOO(x44,y44) +784=MOO(912,912) +848=MOO(x44,c44) +720=MOO(848,848) +636=MOO(784,784) +637=MOO(720,720) +464=MOO(636,637) +528=MOO(y44,c44) +400=MOO(528,528) +316=MOO(464,464) +317=MOO(400,400) +c45=MOO(316,317) +1598=MOO(x45,x45) +1599=MOO(y45,y45) +1470=MOO(1598,1599) +1471=MOO(x45,y45) +1361=MOO(1470,1471) +1169=MOO(1361,1361) +1278=MOO(1169,1169) +1279=MOO(c45,c45) +1086=MOO(1278,1279) +1087=MOO(1169,c45) +977=MOO(1086,1087) +z45=MOO(977,977) +913=MOO(x45,y45) +785=MOO(913,913) +849=MOO(x45,c45) +721=MOO(849,849) +638=MOO(785,785) +639=MOO(721,721) +465=MOO(638,639) +529=MOO(y45,c45) +401=MOO(529,529) +318=MOO(465,465) +319=MOO(401,401) +c46=MOO(318,319) +1600=MOO(x46,x46) +1601=MOO(y46,y46) +1472=MOO(1600,1601) +1473=MOO(x46,y46) +1362=MOO(1472,1473) +1170=MOO(1362,1362) +1280=MOO(1170,1170) +1281=MOO(c46,c46) +1088=MOO(1280,1281) +1089=MOO(1170,c46) +978=MOO(1088,1089) +z46=MOO(978,978) +914=MOO(x46,y46) +786=MOO(914,914) +850=MOO(x46,c46) +722=MOO(850,850) +640=MOO(786,786) +641=MOO(722,722) +466=MOO(640,641) +530=MOO(y46,c46) +402=MOO(530,530) +320=MOO(466,466) +321=MOO(402,402) +c47=MOO(320,321) +1602=MOO(x47,x47) +1603=MOO(y47,y47) +1474=MOO(1602,1603) +1475=MOO(x47,y47) +1363=MOO(1474,1475) +1171=MOO(1363,1363) +1282=MOO(1171,1171) +1283=MOO(c47,c47) +1090=MOO(1282,1283) +1091=MOO(1171,c47) +979=MOO(1090,1091) +z47=MOO(979,979) +915=MOO(x47,y47) +787=MOO(915,915) +851=MOO(x47,c47) +723=MOO(851,851) +642=MOO(787,787) +643=MOO(723,723) +467=MOO(642,643) +531=MOO(y47,c47) +403=MOO(531,531) +322=MOO(467,467) +323=MOO(403,403) +c48=MOO(322,323) +1604=MOO(x48,x48) +1605=MOO(y48,y48) +1476=MOO(1604,1605) +1477=MOO(x48,y48) +1364=MOO(1476,1477) +1172=MOO(1364,1364) +1284=MOO(1172,1172) +1285=MOO(c48,c48) +1092=MOO(1284,1285) +1093=MOO(1172,c48) +980=MOO(1092,1093) +z48=MOO(980,980) +916=MOO(x48,y48) +788=MOO(916,916) +852=MOO(x48,c48) +724=MOO(852,852) +644=MOO(788,788) +645=MOO(724,724) +468=MOO(644,645) +532=MOO(y48,c48) +404=MOO(532,532) +324=MOO(468,468) +325=MOO(404,404) +c49=MOO(324,325) +1606=MOO(x49,x49) +1607=MOO(y49,y49) +1478=MOO(1606,1607) +1479=MOO(x49,y49) +1365=MOO(1478,1479) +1173=MOO(1365,1365) +1286=MOO(1173,1173) +1287=MOO(c49,c49) +1094=MOO(1286,1287) +1095=MOO(1173,c49) +981=MOO(1094,1095) +z49=MOO(981,981) +917=MOO(x49,y49) +789=MOO(917,917) +853=MOO(x49,c49) +725=MOO(853,853) +646=MOO(789,789) +647=MOO(725,725) +469=MOO(646,647) +533=MOO(y49,c49) +405=MOO(533,533) +326=MOO(469,469) +327=MOO(405,405) +c50=MOO(326,327) +1608=MOO(x50,x50) +1609=MOO(y50,y50) +1480=MOO(1608,1609) +1481=MOO(x50,y50) +1366=MOO(1480,1481) +1174=MOO(1366,1366) +1288=MOO(1174,1174) +1289=MOO(c50,c50) +1096=MOO(1288,1289) +1097=MOO(1174,c50) +982=MOO(1096,1097) +z50=MOO(982,982) +918=MOO(x50,y50) +790=MOO(918,918) +854=MOO(x50,c50) +726=MOO(854,854) +648=MOO(790,790) +649=MOO(726,726) +470=MOO(648,649) +534=MOO(y50,c50) +406=MOO(534,534) +328=MOO(470,470) +329=MOO(406,406) +c51=MOO(328,329) +1610=MOO(x51,x51) +1611=MOO(y51,y51) +1482=MOO(1610,1611) +1483=MOO(x51,y51) +1367=MOO(1482,1483) +1175=MOO(1367,1367) +1290=MOO(1175,1175) +1291=MOO(c51,c51) +1098=MOO(1290,1291) +1099=MOO(1175,c51) +983=MOO(1098,1099) +z51=MOO(983,983) +919=MOO(x51,y51) +791=MOO(919,919) +855=MOO(x51,c51) +727=MOO(855,855) +650=MOO(791,791) +651=MOO(727,727) +471=MOO(650,651) +535=MOO(y51,c51) +407=MOO(535,535) +330=MOO(471,471) +331=MOO(407,407) +c52=MOO(330,331) +1612=MOO(x52,x52) +1613=MOO(y52,y52) +1484=MOO(1612,1613) +1485=MOO(x52,y52) +1368=MOO(1484,1485) +1176=MOO(1368,1368) +1292=MOO(1176,1176) +1293=MOO(c52,c52) +1100=MOO(1292,1293) +1101=MOO(1176,c52) +984=MOO(1100,1101) +z52=MOO(984,984) +920=MOO(x52,y52) +792=MOO(920,920) +856=MOO(x52,c52) +728=MOO(856,856) +652=MOO(792,792) +653=MOO(728,728) +472=MOO(652,653) +536=MOO(y52,c52) +408=MOO(536,536) +332=MOO(472,472) +333=MOO(408,408) +c53=MOO(332,333) +1614=MOO(x53,x53) +1615=MOO(y53,y53) +1486=MOO(1614,1615) +1487=MOO(x53,y53) +1369=MOO(1486,1487) +1177=MOO(1369,1369) +1294=MOO(1177,1177) +1295=MOO(c53,c53) +1102=MOO(1294,1295) +1103=MOO(1177,c53) +985=MOO(1102,1103) +z53=MOO(985,985) +921=MOO(x53,y53) +793=MOO(921,921) +857=MOO(x53,c53) +729=MOO(857,857) +654=MOO(793,793) +655=MOO(729,729) +473=MOO(654,655) +537=MOO(y53,c53) +409=MOO(537,537) +334=MOO(473,473) +335=MOO(409,409) +c54=MOO(334,335) +1616=MOO(x54,x54) +1617=MOO(y54,y54) +1488=MOO(1616,1617) +1489=MOO(x54,y54) +1370=MOO(1488,1489) +1178=MOO(1370,1370) +1296=MOO(1178,1178) +1297=MOO(c54,c54) +1104=MOO(1296,1297) +1105=MOO(1178,c54) +986=MOO(1104,1105) +z54=MOO(986,986) +922=MOO(x54,y54) +794=MOO(922,922) +858=MOO(x54,c54) +730=MOO(858,858) +656=MOO(794,794) +657=MOO(730,730) +474=MOO(656,657) +538=MOO(y54,c54) +410=MOO(538,538) +336=MOO(474,474) +337=MOO(410,410) +c55=MOO(336,337) +1618=MOO(x55,x55) +1619=MOO(y55,y55) +1490=MOO(1618,1619) +1491=MOO(x55,y55) +1371=MOO(1490,1491) +1179=MOO(1371,1371) +1298=MOO(1179,1179) +1299=MOO(c55,c55) +1106=MOO(1298,1299) +1107=MOO(1179,c55) +987=MOO(1106,1107) +z55=MOO(987,987) +923=MOO(x55,y55) +795=MOO(923,923) +859=MOO(x55,c55) +731=MOO(859,859) +658=MOO(795,795) +659=MOO(731,731) +475=MOO(658,659) +539=MOO(y55,c55) +411=MOO(539,539) +338=MOO(475,475) +339=MOO(411,411) +c56=MOO(338,339) +1620=MOO(x56,x56) +1621=MOO(y56,y56) +1492=MOO(1620,1621) +1493=MOO(x56,y56) +1372=MOO(1492,1493) +1180=MOO(1372,1372) +1300=MOO(1180,1180) +1301=MOO(c56,c56) +1108=MOO(1300,1301) +1109=MOO(1180,c56) +988=MOO(1108,1109) +z56=MOO(988,988) +924=MOO(x56,y56) +796=MOO(924,924) +860=MOO(x56,c56) +732=MOO(860,860) +660=MOO(796,796) +661=MOO(732,732) +476=MOO(660,661) +540=MOO(y56,c56) +412=MOO(540,540) +340=MOO(476,476) +341=MOO(412,412) +c57=MOO(340,341) +1622=MOO(x57,x57) +1623=MOO(y57,y57) +1494=MOO(1622,1623) +1495=MOO(x57,y57) +1373=MOO(1494,1495) +1181=MOO(1373,1373) +1302=MOO(1181,1181) +1303=MOO(c57,c57) +1110=MOO(1302,1303) +1111=MOO(1181,c57) +989=MOO(1110,1111) +z57=MOO(989,989) +925=MOO(x57,y57) +797=MOO(925,925) +861=MOO(x57,c57) +733=MOO(861,861) +662=MOO(797,797) +663=MOO(733,733) +477=MOO(662,663) +541=MOO(y57,c57) +413=MOO(541,541) +342=MOO(477,477) +343=MOO(413,413) +c58=MOO(342,343) +1624=MOO(x58,x58) +1625=MOO(y58,y58) +1496=MOO(1624,1625) +1497=MOO(x58,y58) +1374=MOO(1496,1497) +1182=MOO(1374,1374) +1304=MOO(1182,1182) +1305=MOO(c58,c58) +1112=MOO(1304,1305) +1113=MOO(1182,c58) +990=MOO(1112,1113) +z58=MOO(990,990) +926=MOO(x58,y58) +798=MOO(926,926) +862=MOO(x58,c58) +734=MOO(862,862) +664=MOO(798,798) +665=MOO(734,734) +478=MOO(664,665) +542=MOO(y58,c58) +414=MOO(542,542) +344=MOO(478,478) +345=MOO(414,414) +c59=MOO(344,345) +1626=MOO(x59,x59) +1627=MOO(y59,y59) +1498=MOO(1626,1627) +1499=MOO(x59,y59) +1375=MOO(1498,1499) +1183=MOO(1375,1375) +1306=MOO(1183,1183) +1307=MOO(c59,c59) +1114=MOO(1306,1307) +1115=MOO(1183,c59) +991=MOO(1114,1115) +z59=MOO(991,991) +927=MOO(x59,y59) +799=MOO(927,927) +863=MOO(x59,c59) +735=MOO(863,863) +666=MOO(799,799) +667=MOO(735,735) +479=MOO(666,667) +543=MOO(y59,c59) +415=MOO(543,543) +346=MOO(479,479) +347=MOO(415,415) +c60=MOO(346,347) +1628=MOO(x60,x60) +1629=MOO(y60,y60) +1500=MOO(1628,1629) +1501=MOO(x60,y60) +1376=MOO(1500,1501) +1184=MOO(1376,1376) +1308=MOO(1184,1184) +1309=MOO(c60,c60) +1116=MOO(1308,1309) +1117=MOO(1184,c60) +992=MOO(1116,1117) +z60=MOO(992,992) +928=MOO(x60,y60) +800=MOO(928,928) +864=MOO(x60,c60) +736=MOO(864,864) +668=MOO(800,800) +669=MOO(736,736) +480=MOO(668,669) +544=MOO(y60,c60) +416=MOO(544,544) +348=MOO(480,480) +349=MOO(416,416) +c61=MOO(348,349) +1630=MOO(x61,x61) +1631=MOO(y61,y61) +1502=MOO(1630,1631) +1503=MOO(x61,y61) +1377=MOO(1502,1503) +1185=MOO(1377,1377) +1310=MOO(1185,1185) +1311=MOO(c61,c61) +1118=MOO(1310,1311) +1119=MOO(1185,c61) +993=MOO(1118,1119) +z61=MOO(993,993) +929=MOO(x61,y61) +801=MOO(929,929) +865=MOO(x61,c61) +737=MOO(865,865) +670=MOO(801,801) +671=MOO(737,737) +481=MOO(670,671) +545=MOO(y61,c61) +417=MOO(545,545) +350=MOO(481,481) +351=MOO(417,417) +c62=MOO(350,351) +1632=MOO(x62,x62) +1633=MOO(y62,y62) +1504=MOO(1632,1633) +1505=MOO(x62,y62) +1378=MOO(1504,1505) +1186=MOO(1378,1378) +1312=MOO(1186,1186) +1313=MOO(c62,c62) +1120=MOO(1312,1313) +1121=MOO(1186,c62) +994=MOO(1120,1121) +z62=MOO(994,994) +930=MOO(x62,y62) +802=MOO(930,930) +866=MOO(x62,c62) +738=MOO(866,866) +672=MOO(802,802) +673=MOO(738,738) +482=MOO(672,673) +546=MOO(y62,c62) +418=MOO(546,546) +352=MOO(482,482) +353=MOO(418,418) +c63=MOO(352,353) +1634=MOO(x63,x63) +1635=MOO(y63,y63) +1506=MOO(1634,1635) +1507=MOO(x63,y63) +1379=MOO(1506,1507) +1187=MOO(1379,1379) +1314=MOO(1187,1187) +1315=MOO(c63,c63) +1122=MOO(1314,1315) +1123=MOO(1187,c63) +995=MOO(1122,1123) +z63=MOO(995,995) +931=MOO(x63,y63) +803=MOO(931,931) +867=MOO(x63,c63) +739=MOO(867,867) +674=MOO(803,803) +675=MOO(739,739) +483=MOO(674,675) +547=MOO(y63,c63) +419=MOO(547,547) +354=MOO(483,483) +355=MOO(419,419) +z64=MOO(354,355) +MULTIPLY(x0,x1,x2,x3,x4,x5,x6,x7,y0,y1,y2,y3,y4,y5,y6,y7)->z0,z1,z2,z3,z4,z5,z6,z7,z8,z9,z10,z11,z12,z13,z14,z15: |