.l("util") .l("math") s1::{*|x} s2::{(-2)#x} s3::{x@y-1} s4::{#x} s5::{|x} s6::{x~|x} s7::{{:[@,/x;x;,/x]}:~x} s8::{x@&(#x)#~0,~:'x} s9::{:[x~[];[];(&0,~~:'x):_x]} s10::{{(#x),*x}'s9(x)} s11::{{:[1=*x;*|x;x]}'s10(x)} s12::{,/{:[@x;x;(*x):^x@1]}'x} s13::{[a];a::x;:[x~[];[];{:[1=y-x;a@x;(y-x),a@x]}:'&1,~~:'x]} s14::{,/2:^:\x} s15::{,/y:^:\x} s16::{x@&(y-1)>(!#x)!y} s17::{(y,#x):#x} s18::{(y-1)_z#x} s19::{(-y):+x} s20::{((y-1)#x),y_x} s21::{((z-1)#y),x,(z-1)_y} s22::{x+!y-x-1} s23::{((#x)-y){1_(_.rn()*#x):+x}:*x} s24::{s23(1+!y;x)} s25::{x@<(#x){x,.rn()}:*[]} s26::{[k];k::x;:[1=k;,'y;,/{(1#x),:\s26(k-1;1_x)}'{x}{1_x}\~y]} a1::{[b];b::y;flr({[]~b?x};x)} s27::{[a b];a::x;b::y;:[1=#y;,'s26(*y;x);,/{x,:\,'s26(*b;a1(a;,/x))}'.f(x;1_y)]} s28a::{x@<#'x} s28b::{[f];f::=#'x;x@,/f@<#'f} s31::{:[x<2;0:|x=2;1;&/x!:\2_!x]} s32::{:[0=y;x;.f(y;x!y)]} s33::{1=s32(x;y)} s34::{[t];t::x;#&{s33(x;t)}'!x} s35::{[a];a::x;,/flr({~@x};{[b];b::x;(#{~x!b}{x:%b}\~a):^x}'flr(s31;1+!x))} s36::{|'s10(s35(x))} s37::{*/{{(x-1)*x^y-1}@x}'s36(x)} s39::{flr(s31;s22@x,y)} s40::{{~&/s31'x}{[1 -1]+x}:~0,x} b1::{flr({~x!2};s22@x,y)} b2::{.p@($+/x)," = ",{x," + ",y}/$x} s41a::{b2's40'b1@x,y} s41b::{[l];l::z;b2'flr({l<*x};s40'b1@x,y)} and::{x&y} or::{x|y} nand::{~x&y} nor::{~x|y} xor::{~x=y} impl::{~x&~y} equ::{x=y} s46::{[f];f::x;.p'{x," ",y}/'${x,f@x}'[[0 0][0 1][1 0][1 1]]} s49::{:[x;{(0,:\x),1,:\|x}:(.f(x-1));,[]]} c1::{:[2=#x;,(,y),x@1;.f(x@1;y,0),.f(x@2;y,1)]} s50::{|'c1(*{1<#x}{{,(+/*'x),x}:(2#x@<*'x),2_x@<*'x}:~|'x;[])} s54a::{:[x~[];1:|3=#x;.f(x@2)&.f(x@1)&@*x;0]} d1::{:x,(,x),,y} d2::{x{y d1:/x}:\y} s55::{:[x=0;,[];,/{:[x~y;d2(x;x);d2(x;y),d2(y;x)]}@.f'{(x:%2),x-x:%2}@x-1]} s56::{:[3=#x;{:[[]~x,y;1:|(^x)~^y;.f(x@1;y@2)&.f(x@2;y@1);0]}@(1_x):|x~[];1;0]} s57::{{[m];m::(#x):%2;:[x;(x@m),(,.f(x@!m)),,.f((1+m)_x);x]}:(x@x;[];d1(.f(x;2*y);.f(x;1+2*y))]}:(x;1)} d7::{:[[]~x;[]:|[]~x@1;(*x),y,z,[[]],,.f(x@2;y+1;z+1);{[l o];l::d7(x@1;y;z+1);o::{~[]~x@4}{x@4}:~l;(*x),(1+o@1),z,(,l),,d7(x@2;2+o@1;z+1)}:(x;y;z)]} s64::{d7(x;1;1)}