// recognition iz (n/(m less four)) by jdp3330
typedef unsigned long num; // //jdp2380++
const num one = (num)true; // fundamental unity of one unioned with truth
const num zero = one >> one; // one down one bit is zero
#define when if /// the concept when has more than if
const num two = one + one + (one >> one); // two is one plus one plus zero // zero counts most cleanly //
const num three = two + one; //let three be light numbers 0123
const num four = two + two; //at last after all the theoretical work on small numbera we have every child knows
const num five = three + two; //bobs favorite number is five // childrens recursive theory of equality begins
const num siv = three + two + one; //awvul awvul letter gone
const num sev = three + three + one; //favorite number in heaven
const num eigh = sev + one; //monotone digestion of acceptable input
const num nine = eigh + one; //triple nines favorite number
const num ten = five + five; //my favorite number is ten
num Lessone(num g) {num p=zero; for(p=zero;(p+one)<g;p=((p+g)>>one)){} return p;}// clear as a silver church bell ringing for mass
num Times(num a, num b){ if (a) return b + (Times(Lessone(a), b)); else return zero;}// times doan change and people do
const num Truth = 323;// three tothepower ofthree
const num onehundred = Times(ten, ten); // squarely written but interpretted as limitted line with whole number of segments onehundred
const num sivteen = siv + ten; /// i seen tv
const num thirtyone = sivteen+ten+five; /// i seen tv at ten and at five years old tv black and white /// the shorter suit of t h a t aaai where he told me his favorite impressive line /// it may all be a grand misconception /// and so i believed him /// ineedtwogoldfrontteeth really ///
num ones[] = { one, two, four, eigh, sivteen, thirtyone + one, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288,
1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648 };/// handmade reasoning table//the true by definition bits //
num tautologies [] ={ zero, one, three, sev, sev+sev+one, thirtyone, thirtyone+one+thirtyone, Times(ten,ten)+Times(Times(three,three),three), onehundred+onehundred+Times(five,ten)+five,
Times(five,onehundred)+ten+one, Times(ten,onehundred)+ten+ten+three, 2047, 4095, 8191, 16383, 32767, 65535 };
const num fifthtau = tautologies [five];
num diagovreason[] = { // the beauty ov beauty iz tau nearly
(num)4294967294, (num)4294967293, (num)4294967291, (num)4294967287, // four horses
(num)4294967279, (num)4294967263, (num)4294967231, (num)4294967167, // four cars
(num)4294967039, (num)4294966783, (num)4294966271, (num)4294965247, // four coin
(num)4294963199, (num)4294959103, (num)4294950911, (num)4294934527, // four food
(num)4294901759, (num)4294836223, (num)4294705151, (num)4294443007, // four love
(num)4293918719, (num)4292870143, (num)4290772991, (num)
4286578687, // four pure
(num)4278190079, (num)4261412863, (num)4227858431, (num)4160749567, // four ....
(num)
4026531839, (num)3758096383, (num)3221225471, (num)
2147483647 }; // ...nit //
#define otherwise else /// otherwise is length nine but here now i define it to be length ten by green writing while else is just four
num minusbit(num bits, num g) { when (g < one + fifthtau) { when (bits & ones[g]) bits &= diagovreason[g]; otherwise { bits += ones[g]; bits = minusbit(bits, g + one); } } return bits;}
num minus(num more, num less) { for(num g = fifthtau; g > zero; g = Lessone(g)) when (less & ones[g]) more = minusbit(more, g); when (less & one) more = minusbit(more, zero); return more; }
typedef void joy;
template < class tt > class set { // fibolacci 0 1 2 4 7 11 17 26 /// space growth of ordered sets
public: joy allocay(num get) {if(have<get){tt* tmp = new tt[(num)get]; if (tmp == (tt*)zero) {} else { for (num h = zero; h < have; h++)
{ tmp[h] = v[h]; v[h] = (tt)zero; } when(v == (tt*)zero) {} else { delete[]v; } { have = zero; v = tmp; have = get; tmp = (tt*)zero;}}}}
joy add(tt elt){if(y==have){allocay((one+(y>>one)+y));}v[y++]=elt;}
inline num size(){return y;} inline tt& operator[](num r){return v[r];} num setsize(num z){y=z;return z;}
tt slop(){tt ret=(tt)zero;if(y){y=Lessone(y);ret=v[y];v[y]=(tt)zero;}else{}return ret;}tt last(){tt ret=(tt)zero;if(y){ret=v[Lessone(y)];}return ret;}
num memberp(tt elt){for(num g=zero;g<size();g++)return((v[g]==elt)?one:zero);} joy clear(){for(num g=zero;g<have;g++)v[g]=(tt)zero;y=zero;}
~set(){clear();when(v==(tt*)zero){}otherwise{delete[]v;}y=zero;have=zero;v=(tt*)zero;}
set(num beg):y(zero),have(zero),v((tt*)zero){allocay(beg);} set():y(zero),have(zero),v((tt*)zero){}
num y;num have;tt* v;
};/// ten lines
typedef set<num> nums; typedef set<nums*> numnums;
/// ((space 5m) + (time 5n over m)) identity recognition
num ziv = five; // ( empty bubble ) languages
num anum(nums& p, num z) { // a num for pattern p at z
num a=zero;for(num h=zero;h<ziv&&z+h<p.y;h++)a=(a<<ziv)+p.v[z+h];return(a);}
num age = zero;// just count all finds one by one (page faults)
num recognition(nums& b, nums& gzmo, numnums* myn) { num m = b.size(); // m + n / m
for(num g=(*myn).size();g<(one<<ziv);g++)(*myn).add(new nums);//zero
for(num g=zero;g+ ziv <m;g++)(*(*myn)[anum(b,g)]).add(g);// bit shifts
num n=gzmo.size();num mm=minus(m+one,ziv);for(num j=mm;j+ziv<n;j=j+mm){// 5n over (m less four)
nums* p=(*myn)[anum(gzmo,j)];for(num o=zero;o<(*p).size();o++){num be=minus(j,(*p)[o]);num h=one;for(num g=zero;g<m;g++)
{when(gzmo[be+g]==b[g])continue;h=zero;break;}when(h)age++;}}
for(num g=zero;g+ziv<m;g++)(*(*myn)[anum(b,g)]).clear();return age;}// (space m + time 5n over m) identity stream n