var PS={};(function(n){"use strict";n.arrayMap=function(e){return function(n){var t=n.length;var r=new Array(t);for(var a=0;an?-1:1;var r=new Array(t*(n-u)+1);var a=u,e=0;while(a!==n){r[e++]=a;a+=t}r[e]=a;return r}};n.length=function(n){return n.length};n.indexImpl=function(a){return function(r){return function(t){return function(n){return n<0||n>=t.length?r:a(t[n])}}}};n.filter=function(t){return function(n){return n.filter(t)}};n.sortImpl=function(r){return function(n){return n.slice().sort(function(n,t){return r(n)(t)})}}})(PS["Data.Array"]=PS["Data.Array"]||{});(function(n){"use strict";n["Data.Maybe"]=n["Data.Maybe"]||{};var t=n["Data.Maybe"];var r=function(){function n(){}n.value=new n;return n}();var a=function(){function t(n){this.value0=n}t.create=function(n){return new t(n)};return t}();var e=function(n){return function(n){if(n instanceof a){return n.value0}throw new Error("Failed pattern match at Data.Maybe (line 268, column 1 - line 268, column 46): "+[n.constructor.name])}};t["Nothing"]=r;t["Just"]=a;t["fromJust"]=e})(PS);(function(n){"use strict";var t=function(e){return function(a){return function(r){return function(t){return function(n){return t=0;a--){t=u(n[a])(t)}return t}}};n.foldlArray=function(u){return function(e){return function(n){var t=e;var r=n.length;for(var a=0;a=n.maxMineSize})(Q(n))};var Z=p.filter(function(n){return n.owner===(-1|0)});var K=function(){var t=p.filter(N);var r=p.filter(C);return function(n){return t(r(n))}}();var _=function(n){return w.fromJust()(p.head(p.filter(function(n){return n.unitType===(-1|0)&&n.owner===1})(n)))};var V=function(){var t=p.filter(N);var r=p.filter(E);return function(n){return t(r(n))}}();var W=function(n){if(n){return{x:0,y:0}}return{x:1920,y:1e3}};var X=function(r){return function(t){return function(n){return u.compare(u.ordInt)(A.dist(t)(r))(A.dist(n)(r))}}};var Y=function(t){return function(n){return p.sortBy(X(t))(Z(n))}};var $=function(t){return function(n){return p.sortBy(X(t))(n)}};var nn=function(t){return function(n){return p.filter(function(n){return(n.gold>20||n.gold===(-1|0))&&(n.lvl<3&&n.owner!==1)})($(t)(n))}};var tn=function(r){return function(n){var t=function(){if(n===0){return"KNIGHT"}if(n===1){return"ARCHER"}if(a.otherwise){return"GIANT"}throw new Error("Failed pattern match at Main (line 238, column 11 - line 240, column 34): "+[])}();return"BUILD "+(S.show(S.showInt)(r.id)+(" BARRACKS-"+t))}};var rn=function(n){return p.filter(function(n){return n.structureType===2})(n)};var an=s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.sites}))(function(t){return s.bind(v.bindStateT(y.monadIdentity))(x)(function(r){if(r instanceof w.Just){var n=w.fromJust()(p.head(p.sortBy(function(t){return function(n){return u.compare(u.ordInt)(A.dist(r.value0)(n))(A.dist(r.value0)(t))}})(O(t))));return f.pure(v.applicativeStateT(y.monadIdentity))(M(n))}if(r instanceof w.Nothing){return f.pure(v.applicativeStateT(y.monadIdentity))("MOVE 0 0")}throw new Error("Failed pattern match at Main (line 193, column 5 - line 198, column 37): "+[r.constructor.name])})});var en=function(){var e=function(t){return function(n){if(t===n.id){return{id:n.id,x:n.x,y:n.y,radius:n.radius,gold:n.gold,maxMineSize:n.maxMineSize,structureType:n.structureType,owner:n.owner,param1:n.param1,param2:n.param2,lvl:n.lvl+1|0}}if(a.otherwise){return n}throw new Error("Failed pattern match at Main (line 184, column 9 - line 184, column 42): "+[t.constructor.name,n.constructor.name])}};return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.units}))(function(r){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.sites}))(function(t){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.leftSide}))(function(n){var a=p.head(nn(T(r))(t));if(a instanceof w.Just){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.touchedSite}))(function(t){return s.discard(s.discardUnit)(v.bindStateT(y.monadIdentity))(function(){var n=t===(-1|0)||t!==a.value0.id;if(n){return f.pure(v.applicativeStateT(y.monadIdentity))(i.unit)}return c.modify_(v.monadStateStateT(y.monadIdentity))(function(n){var t={};for(var r in n){if({}.hasOwnProperty.call(n,r)){t[r]=n[r]}}t.sites=m.map(m.functorArray)(e(a.value0.id))(n.sites);return t})}())(function(){return f.pure(v.applicativeStateT(y.monadIdentity))("BUILD "+(S.show(S.showInt)(a.value0.id)+" MINE"))})})}if(a instanceof w.Nothing){return an}throw new Error("Failed pattern match at Main (line 175, column 5 - line 182, column 25): "+[a.constructor.name])})})})}();var un=function(){var e=function(t){return function(n){if(t===n.id){return{id:n.id,x:n.x,y:n.y,radius:n.radius,gold:n.gold,maxMineSize:n.maxMineSize,structureType:n.structureType,owner:n.owner,param1:n.param1,param2:n.param2,lvl:n.lvl+1|0}}if(a.otherwise){return n}throw new Error("Failed pattern match at Main (line 164, column 9 - line 164, column 38): "+[t.constructor.name,n.constructor.name])}};return s.bind(v.bindStateT(y.monadIdentity))(J)(function(n){var a=p.head(n);if(a instanceof w.Just){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.touchedSite}))(function(t){return s.discard(s.discardUnit)(v.bindStateT(y.monadIdentity))(function(){var n=t===(-1|0)||t!==a.value0.id;if(n){return f.pure(v.applicativeStateT(y.monadIdentity))(i.unit)}return c.modify_(v.monadStateStateT(y.monadIdentity))(function(n){var t={};for(var r in n){if({}.hasOwnProperty.call(n,r)){t[r]=n[r]}}t.sites=m.map(m.functorArray)(e(a.value0.id))(n.sites);return t})}())(function(){return f.pure(v.applicativeStateT(y.monadIdentity))("BUILD "+(S.show(S.showInt)(a.value0.id)+" TOWER"))})})}if(a instanceof w.Nothing){return an}throw new Error("Failed pattern match at Main (line 155, column 5 - line 162, column 25): "+[a.constructor.name])})}();var on=s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.sites}))(function(a){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.units}))(function(n){var t=p.head(Y(T(n))(a));if(t instanceof w.Just){var r=function(){var n=!k(a);if(n){return 0}return 2}();return f.pure(v.applicativeStateT(y.monadIdentity))(tn(t.value0)(r))}if(t instanceof w.Nothing){return un}throw new Error("Failed pattern match at Main (line 135, column 5 - line 141, column 33): "+[t.constructor.name])})});var cn=s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.leftSide}))(function(n){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.units}))(function(r){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.sites}))(function(n){var t=p.head(Y(T(r))(n));if(t instanceof w.Just){return f.pure(v.applicativeStateT(y.monadIdentity))("BUILD "+(S.show(S.showInt)(t.value0.id)+" TOWER"))}if(t instanceof w.Nothing){return un}throw new Error("Failed pattern match at Main (line 148, column 5 - line 150, column 33): "+[t.constructor.name])})})});var ln=function(){var l=function(n){var t=p.head(p.sort(u.ordInt)(m.map(m.functorArray)(function(n){return n.param2})(p.filter(C)(O(n)))));if(t instanceof w.Just){return t.value0}if(t instanceof w.Nothing){return 0}throw new Error("Failed pattern match at Main (line 127, column 31 - line 129, column 25): "+[t.constructor.name])};return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.sites}))(function(n){var t=p.length(O(n));var r=p.length(p.filter(h.not(h.heytingAlgebraFunction(h.heytingAlgebraBoolean))(C))(O(n)));var a=p.length(R(n));var e=a<4;if(e){return en}var u=r<5;if(u){return on}var i=t<8||l(n)<300;if(i){var o=t<8;if(o){return cn}return un}var c=r<6;if(c){return on}return un})}();var vn=function(n){return p.filter(function(n){return n.param2===1})(O(n))};var fn=function(){var i=function(t){return function(n){return t+(" "+S.show(S.showInt)(n.id))}};var n=function(n){var t=p.head(z(n));if(t instanceof w.Just){return[t.value0]}if(t instanceof w.Nothing){return[]}throw new Error("Failed pattern match at Main (line 226, column 31 - line 228, column 26): "+[t.constructor.name])};var o=function(n){var t=p.head(G(n));if(t instanceof w.Just){return[t.value0]}if(t instanceof w.Nothing){return z(n)}throw new Error("Failed pattern match at Main (line 232, column 30 - line 234, column 44): "+[t.constructor.name])};var t=function(n){var t=p.head(vn(n));if(t instanceof w.Just){return[t.value0]}if(t instanceof w.Nothing){return[]}throw new Error("Failed pattern match at Main (line 229, column 31 - line 231, column 26): "+[t.constructor.name])};return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.gold}))(function(u){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.sites}))(function(e){return s.bind(v.bindStateT(y.monadIdentity))(c.gets(v.monadStateStateT(y.monadIdentity))(function(n){return n.units}))(function(n){var t=p.filter(B)(F(n));var r=p.length(K(e))>2&&p.length(t)<3;var a=function(){var n=!r;if(n){return z(e)}var t=u>140;if(t){return o(e)}return[]}();return f.pure(v.applicativeStateT(y.monadIdentity))(l.foldl(l.foldableArray)(i)("TRAIN")(a))})})})}();var sn=s.bind(v.bindStateT(y.monadIdentity))(ln)(function(t){return s.bind(v.bindStateT(y.monadIdentity))(fn)(function(n){return f.pure(v.applicativeStateT(y.monadIdentity))(t+("\n"+n))})});var dn=function(v){return function(t){return function(l){return function(o){var c=function(n){return s.bind(s.bindArray)(n)(function(a){return s.bind(s.bindArray)(t)(function(r){return s.discard(s.discardUnit)(s.bindArray)(e.guard(e.monadZeroArray)(a.id===r.id))(function(){var t=function(){if(l instanceof w.Just){return p.head(p.filter(function(n){return n.id===r.id})(l.value0.sites))}if(l instanceof w.Nothing){return w.Nothing.value}throw new Error("Failed pattern match at Main (line 83, column 28 - line 85, column 39): "+[l.constructor.name])}();var n=function(){if(t instanceof w.Just){var n=a.owner!==0;if(n){return 0}return t.value0.lvl}if(t instanceof w.Nothing){return 0}throw new Error("Failed pattern match at Main (line 86, column 23 - line 90, column 33): "+[t.constructor.name])}();return f.pure(f.applicativeArray)({id:a.id,gold:a.gold,maxMineSize:a.maxMineSize,structureType:a.structureType,owner:a.owner,param1:a.param1,param2:a.param2,x:r.x,y:r.y,radius:r.radius,lvl:n})})})})};return function n(){var t=g.parseInput(v)();var r=function(){if(l instanceof w.Just){return l.value0.leftSide}if(l instanceof w.Nothing){return T(t.units).x<500}throw new Error("Failed pattern match at Main (line 57, column 21 - line 59, column 51): "+[l.constructor.name])}();var a={gold:t.gold,numSites:v,touchedSite:t.touchedSite,sites:c(t.sites),units:t.units,leftSide:r};var e=d.runState(sn)(a);var u=I.snd(e);var i=I.fst(e);D.log(i)();return dn(u.numSites)(m.map(m.functorArray)(b)(u.sites))(new w.Just(u))(o)()}}}}};var pn=function(){var n=s.bind(s.bindArray)(p.range(1)(4))(function(t){return s.bind(s.bindArray)(p.range(1)(4))(function(n){return f.pure(f.applicativeArray)([t,n])})});var t=m.map(m.functorArray)(function(n){return S.show(S.showArray(S.showInt))(n)})(n);var r=function(n){if(n.length===2){var t=S.show(S.showArray(S.showInt))([n[0],n[1]]);return[[t,S.show(S.showArray(S.showInt))([n[0]-1|0,n[1]])],[t,S.show(S.showArray(S.showInt))([n[0]+1|0,n[1]])],[t,S.show(S.showArray(S.showInt))([n[0],n[1]-1|0])],[t,S.show(S.showArray(S.showInt))([n[0],n[1]+1|0])]]}return[]};var a=l.foldl(l.foldableArray)(o.addNode(u.ordString))(o.empty)(t);return function n(){var t=g.parseInitInput();return dn(t.numSites)(t.sites)(w.Nothing.value)(o.empty)()}}();t["main"]=pn;t["nextRound"]=dn;t["loop"]=sn;t["buildAll"]=ln;t["buildBarracks"]=on;t["buildTowers"]=cn;t["refreshTowers"]=un;t["buildMines"]=en;t["avoid"]=an;t["nearestEnemy"]=x;t["trainAll"]=fn;t["build"]=tn;t["queen"]=T;t["enemyQueen"]=_;t["ownMinions"]=F;t["enemyKnights"]=V;t["freeSites"]=Z;t["friendlySites"]=O;t["friendlyMines"]=Q;t["maxLvlFriendlyMines"]=R;t["enemyTowers"]=K;t["friendlyTowers"]=q;t["friendlyTowersByLvl"]=L;t["friendlyTowersByAttraction"]=J;t["nearSites"]=$;t["nearFreeSites"]=Y;t["nearNonEmptyMines"]=nn;t["hasKnightsBarrack"]=k;t["hasArcherBarrack"]=U;t["hasGiantsBarrack"]=H;t["knightBarracks"]=z;t["archerBarracks"]=vn;t["giantBarracks"]=G;t["toSiteInfo"]=b;t["compareSiteDist"]=X;t["corner"]=W;t["isOwn"]=P;t["isEnemy"]=N;t["owner"]=r;t["isKnight"]=E;t["isArcher"]=j;t["isGiant"]=B;t["isTower"]=C;t["barracks"]=rn;t["moveToPos"]=M})(PS);PS["Main"].main();