Index: /branches/PushGP/HeuristicLab.PushGP/FeatureTests/FeatureTests.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/FeatureTests/FeatureTests.csproj	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/FeatureTests/FeatureTests.csproj	(revision 14875)
@@ -68,4 +68,8 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis.Base\HeuristicLab.Problems.ProgramSynthesis.Base.csproj">
+      <Project>{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}</Project>
+      <Name>HeuristicLab.Problems.ProgramSynthesis.Base</Name>
+    </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis\HeuristicLab.Problems.ProgramSynthesis.csproj">
       <Project>{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}</Project>
Index: /branches/PushGP/HeuristicLab.PushGP/FeatureTests/Program.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/FeatureTests/Program.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/FeatureTests/Program.cs	(revision 14875)
@@ -8,7 +8,8 @@
   using System.Threading;
   using DirtyList;
+
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Configuration;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Data.Pool;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Erc;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Generators.CodeGenerator;
@@ -32,5 +33,5 @@
       //Test3();
 
-      TestCollectionPooling();
+      //TestCollectionPooling();
 
       //DirtyListTest();
@@ -45,5 +46,5 @@
       //PerformanceParallelTestInterpreter();
       //PerformanceTestLinearCodeGenerator();
-      //TestRobustness();
+      TestRobustness();
       //TestPool();
       //TestPoolPerformance();
@@ -380,10 +381,15 @@
         ErcOptions = {
           ErcProbability = 0.2,
-          FloatErcOptions = new FloatErcOptions(-100.5, 100.5, 1000.5, 2000.5),
-          IntegerErcOptions = new IntegerErcOptions(-10, 10, 100, 200),
+          FloatErcOptions = new FloatErcOptions(-100.5, 100.5, new [] { 1000.5, 2000.5 }),
+          IntegerErcOptions = new IntegerErcOptions(-10, 10, new [] { 100, 200 }),
           StringErcOptions =
-            new StringErcOptions { AllowSpace = true, SpaceProbability = 0.2 },
-          BooleanErcOptions = new BooleanErcOptions(),
-          CharErcOptions = new CharErcOptions(Convert.ToInt32('a'), Convert.ToInt32('Z'))
+            new StringErcOptions
+              {
+                IsEnabled = true,
+                AllowSpace = true,
+                SpaceProbability = 0.2
+              },
+          BooleanErcOptions = new BooleanErcOptions(true, true),
+          CharErcOptions = new CharErcOptions('a', 'Z')
         }
       };
@@ -401,5 +407,5 @@
       var maxProgramSizeLimit = 1024;
       var partitionSize = 100000;
-      var execCounters = new int[parallelism];
+      var execCounters = new long[parallelism];
 
       var config = new PushConfiguration {
@@ -408,4 +414,8 @@
       };
 
+      config.DisableStack(StackTypes.Exec, true);
+      config.DisableStack(StackTypes.Code, true);
+      config.DisableStack(StackTypes.Float, true);
+
       config.DisableExpression<ExecYExpression>();
 
@@ -422,5 +432,5 @@
 
             execCounters[i] += interpreter.ExecCounter;
-            interpreter.Clear();
+            interpreter.Reset();
           }
         }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteDataDescriptor.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteDataDescriptor.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteDataDescriptor.cs	(revision 14875)
@@ -23,5 +23,5 @@
     }
 
-    public abstract Data CreateProblemData();
+    public abstract ProblemData CreateProblemData();
 
     protected abstract string FileName { get; }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteInstanceProvider.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteInstanceProvider.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteInstanceProvider.cs	(revision 14875)
@@ -7,5 +7,5 @@
   using HeuristicLab.Problems.Instances;
 
-  public class BenchmarkSuiteInstanceProvider : ProblemInstanceProvider<Data> {
+  public class BenchmarkSuiteInstanceProvider : ProblemInstanceProvider<ProblemData> {
     private const string name = "General Program Synthesis Benchmark Suite";
     private const string referencePublication =
@@ -34,23 +34,36 @@
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      yield return new NumberIO();
+      yield return new SmallOrLarge();
+      yield return new ForLoopIndex();
+      yield return new CompareStringLengths();
+      yield return new DoubleLetters();
+      yield return new CollatzNumbers();
+      yield return new ReplaceSpaceWithNewline();
+      yield return new StringDifferences();
+      yield return new EvenSquares();
+      yield return new WallisPi();
+      yield return new StringLengthsBackwards();
+      yield return new LastIndexOfZero();
+      yield return new VectorAverage();
       yield return new CountOdds();
-      //yield return new CollatzNumbers();
-      //yield return new Checksum();
-      //yield return new CompareStringLengths();
-      //yield return new Digits();
-      //yield return new DoubleLetters();
-      //yield return new EvenSquares();
-      //yield return new ForLoopIndex();
-      //yield return new Grades();
-      //yield return new LastIndexOfZero();
-      //yield return new Median();
-      //yield return new MirrorImage();
-      //yield return new NegativeToZero();
-      yield return new NumberIO();
-      //yield return new PigLatin();
-      //yield return new ReplaceSpaceWithNewline();
+      yield return new MirrorImage();
+      yield return new SuperAnagrams();
+      yield return new SumOfSquares();
+      yield return new VectorSummed();
+      yield return new XWordLines();
+      yield return new PigLatin();
+      yield return new NegativeToZero();
+      yield return new ScrabbleScore();
+      yield return new WordStats();
+      yield return new Checksum();
+      yield return new Digits();
+      yield return new Grades();
+      yield return new Median();
+      yield return new Smallest();
+      yield return new Syllables();
     }
 
-    public override Data LoadData(IDataDescriptor descriptor) {
+    public override ProblemData LoadData(IDataDescriptor descriptor) {
       var benchmarkSuiteDataDescriptor = (IBenchmarkSuiteDataDescriptor)descriptor;
 
Index: anches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Data/Checksum.csv
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Data/Checksum.csv	(revision 14874)
+++ 	(revision )
@@ -1,1482 +1,0 @@
-, 
-A,!
-	,)
-"
-",*
-"B
-",","
-"
-
-",4
-"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-",T
-                                                  , 
-ssssssssssssssssssssssssssssssssssssssssssssssssss,V
-"CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD
-CD",7
-"x
-y x
-y x
-y x
-y x
-y x
-y x
-y x
-y x
-y x
-y x
-y x
-y x
-",&
-" 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-",:
-Z$8ie/P^&j~-ek5M>7d'4M_*|Z]IPtf6Nn3q,T
-2>9P5SX=&	MrE)-ej!h69kg|6f;%Fp~i|v}1W'fTd/[ D9eEV,P
-r,R
-j~s~M|(,*
-"JX
-^)?$Z\f.dYMm@<25FC/4G$",1
-" 2y1=XfU
-t#Kbo!9u:\/el.p1%]zz9Dm^;pK""TUL@;6lU0""r",^
-E4w`)\m\bQ9%=u7m'4qgtda,Q
-"B	xYd-!]),,1b=I>rqoi>f4,L/)hrdFFUojG^koN{\|w?l",@
-"=??Q{x**eDE3%5|AOSqM^IdA
-`C{0r*HSZwqbs+",(
-/_Y{~In&DYz'tM?YG=8(GB[d974-)Ng7T]^^*|?6o!1%F0yR;,0
-"_;MXaQ&3@<eq \!}%rnvS\d
-}o#'0e",9
-]e1omd	#%FJc36;-@rD*A9QQ-1[lwz+Jg1,G
-:PoUw,%
-v_h69t7G_K/Vk9S,$
-"=L`26:=`j_n}|W#(`+
-!#O",B
-)CMKB'gmqC&b*[U6Hd%NT$i ^ \p=zRSyRuPz|	n2#WQldg,$
-":'8U;mh=KX	k23K't&H$;_z1EzrI$!c8H/?Eo	[/,\j6EVEP+",.
-} [ccRT)}%#(}ti'\,7
-Dk27jS,5
-"vN,hf//vx*((O=|V,do",A
-p_Ls;ZQE[PD|;67u!<>@5%f;I;u'tbIA,7
-1t0/5Uf>b}n=o75N4:Za1%oF(TVFMG`ZGjwXuh_Z~_,R
-IlFC6,T
-(6unF3>,X
-D2dw[3bs~JhN=ZoElbw>d&?QTeX6('W+j8df&uzR,%
-j,J
-~p3:/.Oo->d]T!C]#Eo,.
-=R%*F=QjM~%P!m;{[u,P
-?(kJddc'H^t,(
-SL\=lSd(Z)<VjihXt2x^ZdC2,:
-r%>nX%x|z8':2;`mtX<Bu4,T
-R.Qe$r7M1g,H
-"y>{C(d\l^B3^{(_y$c>UYCFumv-W6q<Ql1
-fNc""8I7l
-xHFp",%
-"A3(|#f:z8![x3gxp/_`[_n|`J|NiKvc/M*!U^i""@(1C",W
-"@	R~`N""O	>
-Kp!3Hu4Ct^P1kG	eC2pH1\yD^'%$$2@\z",P
-"|&__l|7f`L+i;,dK6;V+Yj)O}y [HieK$|
-FSNFS1+KE",0
-[@FX?_ACHYDR?=,.
--,M
-"
-%OjR1k""d]ler.k[F*W",W
-"jW:~TtK8$W4NyB^pT^wdjE8x|79dejOA>A|7iNRJ]TzZ""n",_
-pWx);F^ob,8
-"ws= c6A!rpz
-rx:{2L",%
-4ss}nkoD=FI[`ZFW,A
-!_'p]V@T,>
-y2[_%Zr	,?
-rW. OEHuYX{*[-ZW(,?
-;aC7;q't~1I>3\tK`d YtzFGa;	3voS*HtfsUFtCuX[J&l6M0M,^
-" zrS'^& =ZLpcDO5e!@MyeticH*tm1/Yyz1""04R6
-P",Q
-"HH
-zw2uH4X=MNsIj	!2DD1	wJ5c!,Cx2N)l	6rxcG9""\!54",L
-93Ou$8MXU4aCb{UHtx2%-U6TOjgMU:pL0PYrT,^
-")mzsb$]+``:O-:W""
-2u;H`+DT,dX[""pCr_G=l7q	",;
-"y(mb:])fN""8'0\NFw~V qdJ<.8@@j",;
-g!}j?um(;(`&zsHPzM|gf)G;P>,O
--VYE:g	y3/F{,G
-"j*,C",#
-"4wiuA/6:`,""yx^R_E*$cbZ{=-R5OjXl#6l[M""A",""""
-"f5M\4o)OEI&{Wg'kIH4""BbLiEJnzFAOPn_-m",B
-"s	|Hp},=8APf~*}rY!cWMsUJ-v9Lb[)]Ue,Z(kM{V",+
-"![VZ-dw!~ubJpI:%r_8I/R%2O=.B,",>
-"w+{*K*JDX m4dmsw+Yjz,""m;K@K$P5oKV~\f+/j%",T
-Oo=YN-*3ZAsF, 
-!Z:*[_8ihVr67W[xNADTs,;
-"H\.$8>mfn,Pj!9V(.mX.N/ddQcSF8F\|F
-%VPyjZm00$ i",&
-";
-YoGn:9Kuk<hv]@D:I[r^?R#s#",3
-"nRk+0mX_wUK:J$}0&[-E]})5UpD,ues5u",M
-"Qn(fu,`7?%&-6_Q",B
-v*.:f}]M,5
-"IUSY`G*2_ Wqjl:>MlOoEIu=z#*_x 6#*vgVB"".*fv8B:",9
-;+}4Z#uWy`,Y
-"cURXiO""7@ox4Jh #1a\zep#hvyP7O`e,uW",-
-9GpDoq4^,F
-;xN-?b6&JF,[
-"<B~`d)bRNcs1/d9/t(++9OW<4vkDal[Q(oY%[u<$[!
-",7
-O,/
-"sw7
-`<1Tu)q &2d	?X )JS^2m2`neL2",=
-CDMlhMPrUK7a-h@i	U2{']XqZu(	67-Hf)*&=6,Y
-"X|/c,1Ty	H6gh^ko,H~_ays7x}d5o|(k}1>,(y:EqJ_",1
-6V}V3`c>^CV|%,K
-LTF&3lO'yU|3u*\5'WE*X]m6;'s<ZJu[=Ie/QuHQZ,K
-&bQG~=D <xUf,N
-":X(J_""H",-
-">c]6i"":a)6LETyJ@L	b'W8\2pqAi[8K""9]Hxx@HH%\5bacE
-",P
-#v~<VKzXs\%28!Ugn.WOL):,R
-"nzPK-fI@Qd(^uq2MoJc
-eyq yi+O",P
- kTF0oB:g%+K^*^aB$Ah0Ev.,Q
-X0yCXKxVy=/0&V80;,I
-HJ}wa?gU#mcC,8
-U]cy@KQomcYIX,C
-"co0A,}zIVyq]rO MP6&f2do}",.
-"zX%Tw^J,6UJTvZEr&j}\/E[Gw(sQ(UR4GY-
-jEO:U*`@",9
-"F~,\gNm1j",)
-qBc]O_jb,M
-"~m(&5C-;G
-r].lf~CLAun:;8LEBh(`,$S,vG--T",4
-c993IKCqmMn:;N-TWzsx>_pYOj ':I<vT)KGXT,.
-GHO1S.%W}rt?k/AD\3NZ,$
->2:iw|fxvsQb1M:^r--}\NN-bUX\hpYgBz<Lw-rUCEjd,","
-"EE7
-jY,xt1W
-^*""3_x#9DVO;fIh>:",[
-*z|xLXM\U,Z
-CbOI\#Iw~`Vrwu)|-#,#
-"
-Uv%""H?s!|m5M?|",=
-M`\@:h+~uKc	6glXpfb/Z@S(3OCmBodPv2Sv,E
-7wFtPL_PH)~)\-mp(:4;TDN6T(xWOI`0+ShiN#}B;dhi, 
-T>?@y,*
-"$9%5;0Kjf\r+S,RMH~y""%Zo=l=S`wQy3cAn%v",=
-"l{eh  pWAKz|-$(rUDc4*&YF:cqKTFJcauwB3.3M%
-",&
-6q,G
-"vz.
-L%l",%
-+z.mWSX0b~[La,:
-4:HvwD;qD rfO{JT])T.E[,?
-"j03{[(VsC""dP7@T",X
-"ef!N{'o=smbLcQWjLcrh*(zzf#Q1>kjf|\J?	xC2x{)/K""JB",Y
-"A.MP-b""
-!#1S@#",R
-`q:v\2d~qA%>N(hvpe3+Z6C68`pMI8fQ*ji%L`-N*N@#VYzz,J
-vJO|!68ca^uTINi%,J
-"M2|(t""(%!88W7)u@oF&	N!aZf
-]8{fM[e	BsM=",","
-8paq$r(.Z1$Ku.Zqpf`x60Zk@JP^!t47u1,%
-"7-,`MGYd.:_V0",.
-@hB,J
-"c$!~%$5QF,HUU r[5DRY,7rv~20]~%s8sN~CJI",5
-"
-O?W1&u)Q%KAkY?3MkktX!;98pn7EXc",M
-QZ{BxXPSDR`]74''DU, 
-"6IB/
-Bx>QaBKo>P&#?mc45cGv'Lki1",'
-c3N}i@6m+3-y16eQ qpdnPZ`:{jc}3KjBo@11Oi,=
-"@|5`a'PlA{,qYe\&,]r[!R~j3&37&Ru:Y$
-|p",\
-"|K4i>tU}gr[P<>+g`9oOVtFhnI'.}{T0@lecF9
-{.g=fz'S-R",R
-"<U5V3MX4-[pk-a?gM	""$r",-
-#8L~ cpQ,I
-lt6S,I
-"i@?<zgkK;
-sCbI""0\L""P72%Y{ta?'Ou""sjRPD;n1U",""""
-~uGXtmzqQP&}r~uy%xDg8*4ef@I0~B[b+pw,Q
-4G|,W
-rql9Pk,#
-"`yl@._diJ;<""
-}$Qi""?",(
-X>,6
-"V%	b*}1qfK-kMDOty:b}JPrb*+Gr	W	mo6=@Dd{^1{,YYG",D
-"RomfB)@\FMn=sZ>(}]seU!E
-D~WCNoG&5;<[SxE2nfC+L",@
-+<!k!,4
-"&<T[D3t j]OcW3|WBs>K,HZ%6{P",D
-E	,.
-XL,D
-Z34U{( {'e;IB{y{yTg)U8=xF3K3ajcOwB+h,T
-"vU^Q"")U!v;!hMFpfXK[uknFw",G
-YWoddOBz)P Dz?\};N= ^,E
-q7@Jz),5
-"[&n{I3ju@ojW[I)	9w-HI
-mgQ9[_#>fpr:a}H/Vc",","
-"8Xs|'*>Uv,^Ybtp~", 
-"TC'WK	""4._7z#\okMHRE]Wn6SZW`_Fv{_[@G%+cISVz",T
-?#,B
-"zT3P1B3)^u CF'2;	&hMuF%
-.=-]u Iqdg5K{f~\*.C",C
-0kjUz#+F@Fva6,[
-!:M cVPP.'|J1K^Xs+Xk,/
-"L;J!@K-z}{n""}w@[F^_n(#V}iG9sJ}fMQC3M:E}pKd",/
-MHK?E0 >}|ZyD$`DFeHzpiQN)Y]ua@3^ s'Y{Q0fxm[3HP1.,4
-"vF^$$CmxrnR4V,d6R3iILInnHGlWhQp^3@", 
-=;'%F2Xtq.dis{8GGYAEMpX9}\Sf_h$	%hb	U,H
-"Fj.1M\Z<xCvq,/Ja",V
-"D!5c`<|:yP>A~
-kZ",D
-"dC&S8K1w""$s""",F
-"ChK^""Sbfn52mx p}_?ZiG/Uu9wto}r+`41]Jn(uW =]&L",@
-*\S0,)
-+eVzo ^3c{ n.j*rg,'
-"	3iF\	EwuzkI?3@gNYvsF79pr9>$O!
-6
-iC:-si
-*\C$dc~]Hz",/
-"m n`c/Idw-k,K	~D'l|J""Jk",;
-+:[86Fc=ei5r\O` Jq'-I,","
-xKwh.wx/O2/rRPXrk'p`L  hs`i(k\`h<{Dp,P
-"WF|4,!FNN0zzM?vmT:+j)G",B
-"H|9I*;g8
- .{c^;Ux",F
-QN	=`Vw,2
-4b/NKy'fKK*E>1rCWS;yyF@dK,9
-"S'-o T-`^tQ,0-e	R2 OFb",","
-"n`LuLd.rjZ!>A~+\K4$-X$&,hNd""Dsqj'(2pfX~n[L#.F~}Z-",/
-"p=
-%o\H{t-
-22v9XQ#t{",C
-pp}zhrl5pEPTd^Q<NcQ0>!3JB6` CI7+KG+J7,L
-"oMQvlC/6Q\KRbtvLL^^kO*]3n,Ygr#'YQ9_6w!`Y7	B+/+	",D
-~2x%gRLA1_*_[h9+	]E.^:i~`p({npcFi][XoA?]F}00Zn,5
-]j'1CIO5'#a>,8
- NAK;e`	k1g s@	w,9
-"j	B3slWA
-,OV->I""v)FEg9L\\
-KYT.w iP`QP*| Bl8)",T
-"Sy3xuvX<Nmy/x)|9>""ev,.",$
-I?p #xKjfR~:zY|tn,)
-"W d`qt]j/"",BxG;
-<V)J@",O
-^'U,:
-"(f A~""7JMq&C.(`>@A%""H|M@hc48KV(R%yJ1o*\g	,o",O
-{<T>D?8@Tyv03	{r7xxX@PVsyFf[+v	Vp'>	k|& FX/}=,*
-JbRnH-*a	_OM{%NDBuFXUEPiEO4zu+JzbO3lpPa,A
-"eqO""vY3aCT*|Iq13\ g438'Jh<""=z n/kI+A>s W",Z
-"(s<Z!1:
-SVQ  >f(,_wdEp3T4
-T[z(+&uXmPn-`zJ6%.H$Y{",A
-">0Hp{e4J0R-v<2=7Rmw,y(vCbC%4eh\@VJMNtn:JHdbdP)Q",+
-"zB4OLZ~e-D>;q(e)K*|z4
-4R{-V^rAPb",)
-viybcvU^C{~! ,#
-":fzYdXpW5OAFL?Y/""^RK
-_7OV",V
-"=!	h@K\BKT7$hJCz>w(<34|h1l_&7wqW4""o#=fhBnh'LxE",8
-"fpO[Ga.hbsOV^N[x,B-Zpp#-w
-+2o",I
-V!,W
-";5!""~1Be",)
-W.bo-z6HWc5&|>DHXb?`@X1I4,U
-#7E\TU d]z8]`S]]3,T
-"|u=&90|ZjeMk?'D*4,f%3{\tyv)[j$QhKE#Uxok*Ex3MT",F
-b'+@t.Z,P
-"	sEH-SsFv=I.;""Q1/\k4j",?
-%'hn~:q.y%m+4,C
-X:J[[ l,>
-"/iz""",T
-d '(,3
-"yFT53F=0o\X{AF_v]5d~r}p~Dir8AP9{^,.< Dqt#nm="".i7k",H
-I/nyhCBMST4D8akzx_qWZ;y,C
-":sYmBg_''S4R
-9IFkPOqZVw,/>G+F_rFu/!j7SlR'BWE\",6
-ZcT^}wXEy2dl8pz0F,3
-Zdx6;'SS(	]37:0;FMm,1
-"gnD""w",R
-"/e]vvVmoVD RZ
-	:>SAIAAX3Z -&oqYgNc=!9W[]P>P-0=",F
-"7'-C,3dK\@Y",1
-"_KZ	|~Uq
-8Nq",.
-?|p%S!2H'lrU 5L2YVyf5R*hs,%
-1N~R3rxZ?~,#
-"5S	-KP3mc,e+",8
-a$/,T
-"ujM37&/9y[""xNcUZof?[=5V`'v6l:PpvFYD2:H'",V
-Y,9
-"%4@w
-3~Ku.wX`;W_qs'6!?ky!_8bOad*[YP@W[=vV/Pt-\*",;
-"k2{|xzI:Ex%t_OfL8O`~ak)75&iis|@o ]@6,BzM'pxl1",O
-"	mK&D`67c?z&%wMf8-nbO~;hkeV=FpMr&g,}",\
-"P?HIiIIXr8
-=?t\k3bS<a/Gvnb$/{j",7
-$`;Ndkqv#kIB=M`,&
-"~""\PA6hWwr&O5'=w!sxl)",1
-Yqh,R
-j7L8,E
-MXrieMt=\M,","
-cjV~,A
-"*>C[oGd}35US~O3sS'=)EWm.m\ON[6T,@d=?`n#=dk^L",U
-"'vEc6rJj`~#K<5|
-}]",^
-1f.`ed*JXGS-,!
-lhM,A
-Mm`L2sV,A
-N;A]-<X?%/X7z_:,=
-Z,:
-"Vev$4tIT]$bJJL""'}4>s['DC/gU}vk`095x
-7""Zd(rE@rEn0D4",=
-"^_8PWc!6=\b:R!|}\zME)7xr)0:%4NuH:P]CEN:Nh""K:(O@",K
-C:_<i/2SA5,K
-6$g0pE=jZiWnt{lmBuC Lq7L!LzZaErk0nv-/>k5~rb,;
-T5V4?{f\ADPe,)
-"*):H9$~MeUS8kN*%eX;,g2RnIx",(
-"34FlpqxE(S%6{J!a,P""k-!
-ZlSviC)/KY9jm'",C
-"+K9lFBx~Tk""Y*aAOGTO ,s	m",-
-"XRh,~rlQ",K
-"Q0I.'z.2Ltx{\OC`tA`Y>2abUrMsrLLWWz{Y02[QX,gF 8]/[Y",_
-v2g[,J
-"	<s[QUrT""r;-gW[SqQwS'f*}tE))e.e+",5
-0j=C@[%=pl0rpnlymW,<
-@qaEoj&C][JcH$;7,<
-"0hHjYF^< `2#'.^bP 
-3/t\&e6-b'YTT	i9xcCdL=",'
-"fo\f% pw#CTuS"".O&u2>87",>
-"n3Ok w>}Nlu]:o-04Bm*29c+'N!-bUJ<W-T[{$<4qu""",/
-\o(nZRQbML[uu	_j:(=3,""""
-"sW!n#5aC/&mV,wZ?vH*9wiaT",?
-"""7hm$Q!",$
-"-Ut4VO""k|8|
-^IQ)",W
-:G~Z,9
-:m@d2hM?k|\&&2,R
-"qE69~*>`Z|Mb4'~/g9SJ6uZfi2LuHG&]y<""U%c5hZ""e3fn",'
-]`{p	`,1
-"DAo1emAwLsB>-m/?3-1ybNqQ5O;""
-,!p
-0&g^",_
-"lwaQ,rQ/ ek-!phRIp 57/Bg\iIf-cVD.i}q@rf2(",-
-"x6VY""$WkK[X<GdH",2
-r}%(!=9H{JWb)6-1cQw?P$` {TBJQpqCW(wc^,[
-y	g,I
-",v_FN4X2k;",Y
-7:95BGb/>,W
-"bMjoKoQ61~^X#|-,k8Q4|1wZqOOd
-,8l<4n""WhZIA25%1ul0?",)
-gg\!$.TA>CTd39]s}PJ,^
-",4oE=,jPNQ0egN'3,<Kko",'
-> n#ZDpoJB^;v]w)0SB9	Yur}8P$^:{piwIa!L1,?
-"h|[8w[@&RC?m6Pc4.$*;1-}i}j`uqy.""!<.V.)'/_;",F
-"H4Pn JaTK`N#uwMV/uN+?imE@m
->~&kM(f\-Q",T
-V=R4dckPm0XW$Dr,!
-"/b^C.z[&Y\1zhyTbAS>GtJZu	}K/""_&R'HD",D
-"^va1K`)\KAG~
-VK.
-bT", 
-"Ld
-ct`0~YeJ=+#o@mH
-rqE
-tm3Z\]v^xFQcG#LABQ:_|9Mo<}",","
-"n,X0p8D9sJmT##]6f;	~g<b}{w0Q[3;lZX$[7N",F
--}`QfY9yUSTHtG:<ZSI`,7
-"		""hU	Q:bCCZXio|
-&9`5rWwLQ[\L]uV\+X_;RwEEZBB<*>)",P
-"W6zt9	PXm(=l2Rp`N.@91wS^dd%,uoH:n?sT\&\}A",4
-jKW#^{7y/	6zDUkX02C>9tLlBzL=$zEjwg<D'`U,0
-5r.s7&/Q_yH>J&+	#cJyik<U6M%-)r:~NUi18\[EF$<,4
-/ZC;!&{X`p (i5,7
-8{(mIWz6:WD\y.E<kr^fTYv|,Q
-"!gFg7dh7K2,cTN	Y1Wz |4M((Xh@;rSLbI",E
-" Q"">~""KAd^H;G*",S
-"5`~lo1?,IyelW3`8HLI,!jS%Ol&TX4@'eh", 
-qQ,""""
-Y?Tr$gnEHCiIQ:T\dU<XRYBOR!s^=x6|S6r=)*gKqz6oIp8a,G
-kkXeQbY`5{+HV@N%zEOd`/}(TXq<(+#'g)Twg{hZ5/\,&
-"lezkLi qqiHBmj-nJ_ ~$gDrjsWi*W<^F++&=,c2<ZaGNma",L
-"F08&!'#lpH}/fZc:.vr9/KC9U)CGK"">I,R|S3
-f8'R,;P}1W6", 
-b51=&[6e8Lo,4
-"ApTs,#\H1@7~lJy1""K6> C}FYM>?2 +y0bh<KYwaLS",B
-LkN6W4Uts{4_f*~Gt#Ww=ZNl4fvVfe0E[G!4rC^],H
-L{>WIh;zX|&Nvri`=_{jYX*]dd+Fm[TFg@,V
-Y	h.6C^`*qzw 3,.
-"j
-^V$/&nqR_n!P[vKt{mW?Da
-Su~fp@_P",8
-*B`eZ/{{,P
-"	cPl+]D2""^,ZZ8<",Z
-"?bB8dbjQKjTlJPwC{`2r)^Eq=]""[5+\:[==:",]
-Ttgsa1%gn#1$2xI|w^^Df56&6#M%5pgO,I
-"]IV.S}-_=DkxtG,ulZyeVM)xJ",X
-"}~4PGs +awV&2mnJD>C ""6ziZp5li.",1
-Z} b_3ZqB/5?~MK%vNYayA&Do!x+Nn.]pdib^\jY~b>Ok9Yp&M,;
-N=w;ym'{6>?n;Tk@lQT^S/P(,)
-*9U4Jf5|IB$?^|}GHNBWGG\7~l,3
-gT&K=aU/hHT'&=1o9	ctw([,/
-"d(8\h\[1Fhm
-fZxvt)F(",.
-"tmK,Mg[QIiO6VB-",T
-d{=3(VBN<5Gf*HcmX%>)v6gNWO@k*[t*l/aW7Ow,&
-"U,W!K|$6hJnWblrY
-}gz  	$A>%*c",P
-G*G9n0GER(h;o[J%J,[
-"TTJf?""^^	]yypP]#rJ}O/Rh&<8:i#/K Gn",M
-"s_*Qq~*$((M.,,YkIeIgIoO%",[
-"!+?,&mpU{Gs)
-1T7M))u0`vg|1:_Iym+K>;A$J'/(tvS?*w7",9
-"Ak&BQVp]LGaD	xP53 AXpBBd5'tGhx
-07c!XkhsQjKoA",*
-S%v@6tQ,I
-s+PB,P
-a %c-2.e\yxb.IR),<
-"3W'WvEk[y,T{3WAh?_[C`h{#3yFcLu.*'8]'",C
-(Ist:Xz1_R+!gn	.qde`%0Xj;Y=L[A+*\A> R,J
-"69""i,\",""""
-i(`zsV'I5.s,Z
-":E+9""^lHUps|T4""cW{/",9
-I@Feg*['YpR=b~I+YD%o?s{P@E\hAC$a 3X1b}V)EA?|?,M
-"[JU
-F9#'g0;+B?rz=`p4~onNKkDqo<dES<=*aJw1>i",0
-"\?:}'Hx8)jWi@XrttJcj[Z+e""",T
-Rgz3\G+2K5Ul|lm.@N6tLJQX1zd-r9] s!e[My,?
-<aoSJ.i?X`=rt&kCl?!=%^JL@Ug&vw\TC,2
-"l\""FzDnFFGoDoIqM",8
-QZs)(aGG1ZfYvm?hIW,2
- !X~j@	wady<>({K9JsfK>;N1?'Q,]
-iYGg6>*h-x~L2W,N
-",""F-_8[",S
-"`eA|8!)	]l+96}z!fD;50ts,kR<Sd-FQ?<r/2NEm>DGwyt[",O
-".j0y	Yl?&MM,S$AKJp:|""\l&2-0, ,a@#zL]C6nI`;#",9
-G{s#^`e*N=I^,7
-bvy/fiKrfW_[v	!H|,G
-"QB&VvI6mB_MO<t)|<_[GiG86L!%`Xa_|m:`
-6?^#~wix|uL",^
-ih= j,8
-"@'uuWxj~)%q,m>e1;t8",;
-%wtDQ2YzpPx-b>e%k,D
-"/|}6
-3Zp",E
-WAC1j!?+h#5s;7 Zy	SB1M;nbgil+Dz8/<,(
-"""Y%F>ad%FI^vYGw
-JAO@=>DG\Xvg-",P
-ye/?uHu| A<IKVE:~,^
-@9b=,8
-d&^'.18lvaSE	4Q6c~r:,2
-B86_4I;w,^
-GH^!8C_S6!!TU,<
-"b_K""Y}#AtHQ'0X^2>K$|7EJN8",I
-".4`>&gvCOFD1ECNY'u7
-\Zai'V",9
-"E$FjbpTx;ZP`0=bfl)_$SLuk""o$Y(yA#>SA4kOd
-",)
-j;IfH>)Uufh;vn-t'aC,F
-"}m13n0?hEx;!(,th#4UlTLT;=i2SsHgJf",@
-IIf]WAZ+@7<IfRQV@ZhkLr@d8T,H
-F>dA>W/uW,Y
-_481CV,5
-"$slU=?%@ES$%epUyjXo?z3
-iT$>2XPYkn|m#I^lk69Fa)Z"":2j",J
-"""vaubcYCYoXNrMBsUgTN{lmZ$9CToDx",<
-FV	2Y=f>$KGb`,)
-tr |?@JJoG,+
-"Odf!],5CyH5OG_w6NKK-G6a2L%_[/pw|=+w/",_
-lNM+\SiZ/:$snB)k&,.
-"wePO*e6&kVGay=~nA^dgh v@g.5?|tntYGbZj07(""",K
-"a)67""]EUA\",M
-F]p6*2+2ES[07ilV0f@6(XC,6
-"g^	s(]Y$`Z 8cs1gy,s~GjA{$I?@5r{d|2iL",;
-KxAIg,T
-[zdFZCqtfF?[x2/o2Lgp(qOrJlsOYAgnXvxq#pQfy(yg.@Ix,6
-"lIyu,ig&8YEBsZVQ6;*xrIhA2r'ofEgCl>4vClk_]&!",(
-"	sZiwo@#,>	DdC;R7	IKs?CD+as*3dD",$
-"Vc@z6Gh {3C2ehoYfKrI/#0:j;&krIJyTt:m
-E4R h4",","
-") @&~gYqJP~ u|%		XzSba%nO'kn""3.Z_VS/j~pOB7)D",I
-K0Tc_COjfj{^OCBEB*lrh7alj	p,H
-~OXa9WK2{\!a<DnEe<E67QR7<CtO,.
-"0g0O%2*<!,#t=&&~RO@Vw",L
-"\,K""tTQGe<BmO,4.A[*i",Q
-95s+S~,=
-"u*o_l4u#B8	_St{a)~*&ABt=AC8s4Y-7:T?`c""w;|,[
-V3",O
-)fmM|a6\z_k/^oE~c,>
-"42ISfeFYqM<bU
-HBm",>
-"1^qaA]@8CL:6h,g1<+",)
-"U	;B6#W#FU<hfIa/bBlNX,^TCSPvlqL",%
-".6Su=Skj{32\4Gn3\4NhcLCF;jt0J'HjFiC:?np5&'guazY
-=q",F
-_Ms0g]EM]GIC9+|~CQ_sMxd|!|DSi,;
-M8EO*Ql:kJARC}l,N
-"4uJeXb~T7>B)5Z^bbOt#p[A[\~ahnd07}Ni, F(h:!JN%",","
-jQjMBfX`CtNw<&aT2N%7]q>;;a,D
-"<k9BahcF`|K@Q6mwN""Cq/?~cUKeoO^a1q|NK/rOrjouQxJ	}r",-
-"R<rc(!rz
-?l-P&$a%d&|U K5Z>tT){xY.Vws1+",T
-cXj%PA4@Jjx9,T
-"WV,1d\api5P^ 37m^+6#G@YPTTVboX1(bXd.x<z]X1",0
-u9,N
-"+*y1
-gopa0$y1""Jj{Eu~^,UWYkWAi915J9;[b!qSiqnG`@",@
-x7,O
-"-Hd||8As-""ll7",;
-"
-X""@4(z)pA'4)$_@X",3
-Ld Nuhw$3[#y+^{4rc(6,K
-/ekE..5,5
-S?@[zpu} ,I
-"i
-;rzAOT?4vlC8bcgeZ?bmQk2J9W",/
-"ww9SsK=W1L+;jFmyQ_8cr|
-5x5 7A8UVWgF{9m80YDW.hz",V
-"L/8l)W,3>+Sm=%V=xl*r<s,rryZvOTwx`-|Y]i|mWH",F
-~GL`fp6;fTU-WXPFq_J ~lq,.
-"c%I}ss+nlH2,%T",8
-'+|)C#17IU:;2*Txm!4N.hEiMGo+:uMwIC,!
-"16%9i/ET
-]5LYBBO%}z$'%rJ#~5z",B
-`^`cPkG{Ijew<4Tmw?y9@	4f768XJS,C
-"ur%1	E#D=!Gsg,xQJx6`h=p+APx$	1d4",]
-Ul)q9,4
-% ^!}<~$K,J
-ML(Qa8JC+1!egj).@}[&_gZ:&(fxbl)Uo0?_^p/dZvJ{bU~br{,)
-b,B
-"/u_d
-g",8
-"_%$I""5DQ]Won($\=/a!q/A[m+:NQ",Q
-:7J2c^P[}GmRc)z]p@P,_
-"wJ_""5L9H}",!
-"""\
-I}ClBo#@NWwZ>'?f=]ZKa~Z-19Zsw2yc.QBUo=l/u!M",R
-"|kg$O@E_Vj/[>b>,
-aG""yy+1",;
- [&_RX,J
-"ykhR8qMW>QyW[7 mkQ,o*dpL;'&;pWa_;7s]xh",V
-"$G::eQHL-KH{0n(I
-;~Tb""1~Hmd)I'
-t8""+~k",;
-"g{	RlNIH[ e~Ayf,vvV)5(:K",_
-"
-Egfr:bM<5`U",=
-"?DBaohF_FqTpkm4,Rw[PWT\n(Yx+=#L w6Rqx<i""V""",5
-"#}3-]']o_6cqYTqzfgqjd	SI&Xb%q*dQ	f{~Gw
-cp",:
-cb,%
-9{6]aTNWjynZZ\B3kiL$8sPmF8\zI9tOfy\,W
-"`{}8~Zyv()""fjWk^VwTOd4U Uq:_3)KD7\ }Z^XCe1=9Li67+",=
-"Y	<|,UKkD}qUU*\R-bGE}uV01#&YZ.x1b	CIO'wE(0*
-F8",/
-"ZL5[jH.zZql]B!Ki2J^!e.(W
-6='gt",'
-"d^<n;i}k5\e
-,-<is\[4bqCRUmwm63&>NB74q(<	gm|iT7K&",]
-"{B[6L!C~SpJ~,lqom=*B@t}/fzXt`ei",/
-2BN.&W(8n,[
-"}`?4""&AA*,)&.kIGaDS",@
-"qim_)K\_o}b##pk$,12fR(f",]
-o6fLe$~b/GO>cnr4(Lql!H	w[U>Xd|KEO_1!+|7Zwn5,\
-"!Q}fx
-xH
-q-x~fT*J.Yq=u+@NYVwN;8yni20U""",6
-",",L
-=+Of\qIaEF'CS[$9ibd[B&)x(V}o/4.J.$cR3H)Yet^v.M,8
-"N
-I=s 2v	}XYk1%OvVEAlBVR{	[s!]bO%|7oVy@7",6
-"4;%JGVX}E*7gspd3FNz:Ga%~AJ
-'",F
-kY(Hx,L
-XOy,@
-%j/{?_j=W#B	Bs:m)p.W!?#BH`&`P\QU>EC_w$$s!`u^7e,)
-"o+c59C2k4J^#AkH	G	w65#	@la'4
-2Wg*N
-T+b>~4A7f",X
-zcMWqA9DnFYu,R
-|p`hyKL(!FsP5&u,F
-"k{ .)^+_+jD
-U4sur	Zt}*b!z>l0B",B
-"}-O^SunXH@sl,20kI?It'(]e-ac5grV)i",""""
-R%zUM-c,C
-"3(qDt+FgXIxwi_P""u''{,Y)mXtj(Cn'F.BR?-Z?[|NX:",Y
-"?1F)Tmk3+4a.D^V,(#]CUh9(!6I+'6\z >x}Fxy&i""2.fD\ *]",?
-"eRtmOGKI8tI}4X.,c~",[
-nA{5>lkI8?,T
-~N~d9),0
-MxTUh6jmhx%o/fFu-,4
-"Ea""@|ylv+v&PEp	:x]'1lQk)Mcv!",S
-"x+t=LL61<B%DHQBpdEfC.^{0 	T8 <
-{^fn",6
-j<N7hBVOuxT,[
-"	>&CC3$Yzjao,e-CfjLKcBgR2hX3",""""
-"NvrF,fLvOE|;.o} =8El",[
-"5Rx>lLz
-",Y
-${s{Ui@*QJmyk@H]?oJd{~J[m6K,N
-"
-%9ba""4XFKV.WdE~}OuiM]<m8))",S
-v~HBJ`WQ4H{;DB97HZC_;t^D>o|XykVmD[Tza1*Ob+Wpn9,H
-"DfC315""xmI=fWWEa>vAyz3",H
-zp39iASIPa	Ru0K,8
-"d#YDyvd!<!K5
-.]ynG",X
-)3F[	$G%MP7*-9LIRv3yRGHHNH9Cq/LshICS80 {f/G,#
-"O?Fo=.*@M~by7D9fv)bKTbl,`gm*7pNm%J]fjC:o)f|Q",6
-Bv5QPTE@h;'jE7B+&+%#$>WF!UzCA$Na|g6A|!mC-Co2[,V
-Xpk!>A@]xC	CV+%#:-x<Ch&_I f39`sPO!`dY%5|_,K
-"w/&U@[0}	A=f3d(PYe""tW@IR/Kl",1
-"cp$Ak>3
-lFWdo^n(""e[N iC/I*roc",0
-U.FyJEc,T
-W~{Ak?w!UHK-}4[ArJsd{#Iu/2G^K;WPLp,3
-X	l_p!t_8u|3Tf+;Rx6{$fvC$?,M
-i:Y8;,O
-" 'OP<S B\^nK;,h>f`XW`~9X!r27Z6%:sY&d|%py]owj3f=2",[
-"P2Ar(U
-
-UM9""gsV	~QyF*v`zkY|ms=G1Xqb?a85`	TB",0
-"T\],]
-fG""jUU7$-ec5.+[{CP_^|",#
-sXf6,G
-"Dn)Mzi,1",H
-xIi,J
-;%7pD8hzVE:j-RpBr$T`P,O
-RklM_,5
-"y}QX!F7TL:|2@(,E<hp'iU(,]',f",!
-h:,B
-"\>NR""T&02",X
-"+fQ&Cdd/P:vE,Jh!NX\l7uFDp*dl}Mk]ld=/|R{A?o7ZaaZ0",W
-Wf&TIi;1P,E
-[=\hhTw!m:*?H_[,""""
-"4 /VYnna)rntLm_F{--!h7
-\!_7{kl#K+},'!AUrZW]m6",1
-",LLaquM",8
-"W8YB_K|""S|O""_#veb>,1W_;MXze{wA\j4o`#2X#qLLa""0e""",0
-"[[/.7KM86s,Y#q/*5?2IrXF`D5yQ>.)OO",*
-e>&%A4#.mHOX,0
-"V^kNm+yT`""\miEX~L0m$J",X
-id)Wu7	 RxA(^X2x}x!.,Y
-9xs(e|+yq[[_AfUb^F@:k5Jv.aB{WG<eB.T,""""
-$+^R9*]r=HF Vnq<ibe!D1>t$6<iUVVmK^:cAfa-!,.
-k\~c(_EXM{6ehH6RAj? Bci4%)fhaCqjV|g^h;>OA2	7_@7 ,^
-"{zy|""|;*y=qjA3",R
-(`umYp,S
-"go!}-g?1L_TTva3?em""Q%|SQiJ$]ReO9'n""JQM""",2
-"dZ%-bjq""]>]#dn(Ya$dfdfX9Kq3A6EK]cI
-lWzD8yhr `#",_
-Z_g]`(bLE&xI*U4j:?zE,T
-cfEBY+JxW<gu,%
-"""D]9b#33%{9uiKG)sE4XD0I(S0pP@Am %N*\t{	",$
-"_b8~?@5]gQy`E$oiN3;M#PV(m	^""4%+",.
-X*bl,0
-"nz;~Si""qa8EesBf%)42}NLIqf9_{wG7s:Te`",'
- 55KI2{s9X@!|/'I4Uu{=}zXb&-s9C,T
-"q{(7ZS`h'>g(Kt,\&LEat!o4{7\""-Ep",=
-MD0xN,'
-"V7.lJgwC{$9h~xP}_Phe%uEN4
-q26LcTYh%",^
-G&J,W
-"OYZew;OkBAP
-C\5_zMg&8bpSfoIy	*A6|fLi^q`hX$_v:w(^",+
-"R^#AH7xo56IMrO7`
-KHjtmQ`HhT\",","
-0lwczHG	^e,+
-"h' 1uALmFu@\'!8""n{=7H)Vk[k(}}/$3J@lF",!
-r,R
-"%d_<1blbQV#a{!cc$5I~Qk-D47ZWW_A>44mfE,[F'`|}",]
-"V'+^(<w$A,`0No(,EA(=Y'!:#9?",T
-"
-xhwyt5;@k,dVy(Tz(1crEK\TxfA.|sLY|mD\0X?}9!w'FY?_{",*
-"8_i(!ZG,GkY*;]/SvykC#p~}",0
-a8-|e[f ~n#.%,J
-a-Y+G0M^w&w#h7	< :?8yP,I
-":Moc=
-w=V,b@!&yn-$jn7NiDl6r_@RU",;
-"ES,5Ct)`#+sF]B{VC3\^,osw87V4%le]e",6
-&r ]-kg%$+J__jJ[<]+*-E)<H1zvn~M@7o{2+5,Y
-'dxEV|ay&aj*tY',#
-h#1N7MX,F
-K:nLe`l3V^=e21K[eRO;1W@,+
-\@.D~+aXb[4d,%
-W5oxplP~|:kyrZ'q_j>OZ{Vc*ID::3vb'5zsZV(R dTHG,/
-]v+{e*MV.HR T%c/GhA.N(=,O
-"//v7x;~t!u^?(sC20I,c",[
-"GOXZDy$eLVgqP[~ArF0Nty8""",O
-"cY,w|
-?-\.Uf
-lc""g&VvI,D|_&^'X",!
-"#jims""OlP>n%b<`i9l7""( I",*
-"6AX$icSa-mqX@a!2wU<[lXL}<
-O{BF	TDCps[g",;
-vk!+dt||E<B, 
-"r14|s/tA?#}A?fU{g/,\Qhsj_h>Ih7?9",8
-"""l6N9s}",[
-"Yu,|WX<J=pafL+-bc9EqP97]D(xrA	;>k4aWc",G
-6$${B[jx=)E8}owqf|G:lVBc,Y
- yry7u1;,<
-=|j\R	hoN.KRQ%r->CF6oj{x^HA/-!2FNhiX-H_Z.vo,\
-{Wr+tkbiwqeOjw+E`y]M:J-\WKWES,G
-"Ryt\n*R8YndA#9vzQ=J=mBS[""o^M""",%
-uNOoQM%U,9
-";EF,/z.7A.e8j'So82NLSp~B\)fKQU5cbF.{7
-wklc!f^d",F
-"~m]WAza"";n\)tb<nIr:4aQz~
-JS~J#'!6->{",4
-?o>tTF+14d(WqtnI18*uiS	{S I:Gzm,U
-27^NTi]vY,^
-"H""`X~PvnMd:
-s#0&5DtR	-""Fp/C!Wla",Y
-p51c+^WLc2mqaQ4Sw8M`tm>DEj039&,!
-"||6Q!?h
-88kbKHg_}U2&6r""dUCT,[U~UB&5",W
-<Im+.#Mk}+~3X0(1-AU=.sL@Vt&0iok7,G
-"|a`KYBPtUyxh*OFv,6Es(q9R[/aYr pTvrlv3}1[ei?Ex",R
-"lL)mEEhS.)\dR_Ba,@bV,$ ?c5T3dgu",P
-"*AOsMd| ]nb1""DX;kDcX",[
-$;#1nKp5'0!g?	d7|O	0a6rCS;.$)us' --)=HZd=;}XzY,!
-/E,T
-	Mq8Q,0
-X#uC_Y]}JX#&,P
-V>.*xUS@*48pyG'uig<	5V8B,(
-"P7\G#+KT++\?I'fB8scw8P_
-[a19di6	:	[w",=
-":xt?+</K:Dg~n'=w]m7p!y'?,z",)
-+6EQxns_._,\
-wyK,[
-.R{%\GA]PF	{33BLWlP(f,0
-"lOAq;r9;u?SfPs8)
-6W146.,[vAT@XC3`qFJ1}R5JhOp4fm.(+",N
-" 
-`AN`V&OFxx^9./JQL%^uDxR$n/",<
-"@MD{*""a8!
-Nj
-wA&5emu>m
-@h0wHv;Hbg%I4~5~^dnmOP	",>
-"lB	;%m""JN`LQm7>iO;PVG9
-pb'cMq(Dt9[_AE*Jl",3
-e@8+0n,F
-l@%?z?(n]sxtlFyh,N
-QPlwA~Rf]68:6:R+G(tswaY3l-q >:>(pBsHXR0c&P6'OE6,V
-t<b3	/|Wp5axW%  [n2qJBR Hip= c68,#
-"Aoq@NOp/GEd(A6L6R[l,#&qN;'Z(\n9^7$J)+OtxB",V
-"hXvB3O6EMu5
-;C9HsIi",:
-"j8/q/ X(m{G,H'/z9R1lVdTv{c]K}",S
-"p;&rzp$%cL_
-qpR[yC2Yv<gg$]RN++/GIe+Idv)OvG",!
-"q8)w|Zhkuo{y7fUxvVbUOSbP\]ras""m0c a",M
-"U9Ii$82>Vb4CRUe[VVx bYb&XgeUNjuf}4|ZBkU~n9,s^nG!7",M
-";y?p[u\6 /p!8c~Xu`(""
-<jpF+W
-/Xfq|7,EUka2`%`6",7
-"wFE{34:f;&""9Z@w+Ixu!",3
-5Z#W*f?#Tii[KB,)
-"{jHP1ni_Gvo[P8iGnie_>JW&V!Q}""+	5Lc7dId&4QPr+e*sh-e",>
-|q66-Uv,1
-"G V%<EeAU
-{Z'5",9
-">1h{G1'QIz;Tv
-	RPGxd=ZLrY$+y",8
-"pbPlt-]]c7Q?""Ae""pV[R^0zW2Q",2
-"',,Fp?4Inl(8fPmP,v/))Ujzvfi@VMNE",U
-dMX(<FwJGR?$Yz,#
- 2hrwMoxM Ryzq,Z
-"%CLW0z$AkSS'XpzDF[\37`j,P;2jv}",/
-"M
-Evh]7R^.$(|mvU4Pbj3jwG>",5
-RU[rj^Ujlw&%-47,!
-s%*t)^Q&'xb!;U9/@o	4sfY+>.	{%+{8,*
-"/!uF1kh:L$b,whJEOnlcCZm6	}z",!
-"SsvK.6NoN.PvR5vR;(9/$YO`t-""o6o b/34s~2]!iEZ5d
-B2@{",:
-"W:I/oYC85EK+OG2cQ""6Po5G3'%",*
-"^!Sv	P
-%uTN^8r1:z	N",K
-";_=h0'HF""G0J""G	5sTrJ+DJ$-E", 
-<,\
-8*N;{L[9T\9mu3m^5OyThug\9f3Ryp |l/be@6.im]IFN$F}.M,A
-E*hQQ\Xl4.hre.{B73yTa!%+c.;g8=Pzo.HMs(+z=,/
-:q3Hfc(g-W07A	lw/n^OpOV]`IYNL,N
-\P@)Y2QH!4`oir1+E8o&up,+
-"IY5E'0P,Wns WV",T
-"BzenxD-jlMG4?ba,DQ#CBjad3.CBN|:MP",W
-"1.+Ty;4),0ABc!,~|PD\j\g<(ifq""I-z|wUW",J
-8g[$DIVZB,=
-".iea&k}O)\%|`]OAF7' kt3E4z	JL~e`B""eK>x]",_
-":@un	] N}w2,b'46dZhOx7Ln[fLwG	S:u7
-wqsx;)nc",S
-Os%k5LLo'3iyYMP0DS;9:J4J;g,?
-"l-o?djlbkb7k!VgoVkR+-<onGvf(dcK7	X6<23:!H,KA;EH2",$
-HS5}:{K1I5~I_%857cpYD'&.Q1YfT8O/Z\3YXodx+$n~WHxHb,""""
-"w>	;O:,~G;AwW8]6gf
-loSS#Ga""3i?;gn{{m{=%p%""'&1sT
-+ ",)
-"^G6J:aqOh`~9]nmG}:q2*)+P:""lXe4;qoi-2XlaFCdJ]",[
-"VCz}YgR_d6m3qzBbS7
-B*'",Q
-G1_voWk-;0]6A*2)Ul.-0kwrJO]Igv,K
-D4t8E,I
-"fEN_'.$o1I5\,nj|J<ln",K
-"d,hK(ygb6?;,L*oHia|m? _w%^",A
-4p#T{ewbk8@o|l.*1Qe7;]Z<[{'C/>9%eN,P
-")h	1h^<8u_r+F{h:Gwg&CLFIeEB]rh-P""Y_EOeZ(f8{j8NhiR",C
-"~)d	yB`h,Wzcx*5Fz	]T1nx|sg",U
-"K!FdA6rQ71Q{v!+L3I++,6C%iB?8CRy#\yDOw5@V",K
-"\ny$4,VNt:dItuRDj*!=#m]|G6CH""24a;a",M
-"XZo
-&s
-MNoN^|?v9;9|?DP1.dq1z>AQ~YON$eg.7h*9",T
-"5#2__sL5Hm,wX7?/ Qv<=veWO5Z2ocH",-
-"XNmHM\*R.9mpb ,WV?79pV5NB]",V
-"U,o3lgX>T`P!CH8jw=bq-r3]""df'_6'O^GsVCJx7+",'
-|gh_&EV*qB f2??o'?,3
-UI%fqq	PuSAgzJbaw;m0,J
-;~8wv1eI8\~\QeuBWL$Gb@~v=' [lhind}|'+ixWoz!^wGS[4,U
-zl(,.
-"J?i8WyAq~}6!w7Z8axO3d8]w,(*kM&M",R
-"ksprvm*VV$l C,?|L@KNKoq}69C~a%KHZl3)""@",M
-.0tc-b,$
-"8[
-WUDLP	c2*hja9LZG&AJR2O1VEd(:U[6};+M9'2",(
-`u<PN[EP)|#R*2l~0;|,F
-Y^4!4VN_\\&n2Fp!]fUX@RK_Lpw+n7F&,S
-<L]'M!s>I)EHX$ ufo_Jh'nBKem?xmud 	sg@T/r[ n)\!Jp \,/
-"W17eGGuv,cm~oNta~Q^6",","
-"dQ5ma;utO,>l4@1Y@q-v{ s""{@Lb+)2\WGLHRG#i",E
-L4WZ]b,P
-Qq4vlCcCRX*,5
-"Wx/#""I",","
-"Q#jOUxRFgQ>wkLkkrye}'ihB^
-jnHbpx",E
-CO	i,$
-"~oiM]A/i/j Vf[ec-ME Pc99s$l:5z3|ZG$%<vGN""lj?",X
-UTos59+Hpdls	wE/_Qo.WMw^B8'rLv)Ux][mlb [kSo24lJm(t,D
-Zf!tCpA/%4~!,P
-"pN^-56y=""`#{l<9gDTH6Ypw+OQZ]N;tvq'$}f<:&EMk""$RY"" ",(
-#zdw!|E{h[D+1Z)t7RZ}._NV6iPGT#)Ew~<^Dto`OXs,+
-"L""-CN'(H""",E
-"vccp|$M5^ZMOB?a;	ogW8`-GP	,e=7lZHn(hI{F|6",G
-d>f@@,(
-O|32bA8OuLYCT,+
-;[W^+=JP`d:/2NH|SSV@RG*JwfXs{RWO.\U,!
-"5Tt*L4wUvp=okD""LB",D
-"+3IwztKGjf1^\u>2o	`AsmSi?=.7%$oO,ld*|YT5",?
-oC6BVH% -U!PzFc,C
-$;{G*|L%~fA)\^6zUc;'6)!z6)c*?!]#H.x{SgT.Pp,U
-"}8U1 ^},{;?>PdQgx[;8j{z
-^V912\&PVHruoFtdi$]  ,A5ue",*
-W,7
-"bo\pPk3{W4'
-r72}	tGDVASJBx~Ij?;6]mc<7F071\b+",8
-"?PuZr{Hb[?=$p*:*l[
-*:ETWvUYNRo'S<o""R%1<N xt",+
-"xKXc_4j~	%_{IU!*4FZ!d3K}9""90Zix",]
-Zk,%
-/!/`l.KBH7C+BP,%
-"9qD#-Iw$'4TMjI~tMo9f'q*{6'jg'>57=W8xPtF==W""[L/	",Z
-"W`,<.BdTpv",M
-"8m)Df4`|s}3HF;Ex'u~bDv	B}V^2
- e5/&-mZyT{",J
-F,&
-!xhH)eV^UW:>',6
-TxQ6FO547fMu2Oi+VRfwiKc^F,%
-3M\]rNp~x{,:
-p#[?O$IV/INIe6EYD*`Y8|(w[{[?X;xGpso;,0
->kh|,-
-"\[=U-~)NrJ[^0?QF(wb9}6\{[>$P@ Si6R{tSW9/,ds`",_
-"P9	""B,ng/)8nh%8z;M0}H;?&",1
-"tJAE#\kc?wuJ
-@|Mkp-2ILFfB|>H[-<bu`K\LRGem($_i",%
-y7p34$2]hLjMJQGE>AE=,-
-"gd\:p0P@[Q<LJo{\xl	.0
-S$*pW#XW'<%me	/ ",6
-"5angh6e'^4O]3htc@|fP% 2@yHHN/>cH#[^6'I
-E dV",(
-"1-wZ$=v&#eHl8Fy	u,k9%ip54Aj%FV4j$Mat'].{2a9}y{t.B/",A
-=hxe/}U]eJdL,_
-"e\,",M
-V2)rDeK4'4u,;
-"%f=B:J@+{Od^E>rQ,G-zC",H
-"?D<=BJ4(
-oEI:jRh8-a@Hq^;pbu\yG",$
-"ywM954vi[v`\-XD<WplS>qX	_VJZ29-|}%^l+Ak,I",+
-"Fn&%cI""S[S{eN_ADR>",P
-"9t<)h&FY]#=c#Rm12
-99[NUN+ ^%&dVL""C>E1xS1!b=6,2Rj",+
-"I9x1v4x+rlEL5fNvA}lOO)hxy48-;dvuh6B&nmg?MY5/B7>9,",@
-->s%,#
-"B_%(/nO^~)@U>.N(RjD)3W7_lo(n\m=SBg:4,:2A?h", 
-%0F\Z/^o.xJk8yY)QjPd,*
-"?L@-'Qc
-1RvL",B
-"W""R}zPKi w V~PD&d]",","
-"`""w%QOH#E.nA.&Y%",=
-D~lSVtI@=Lcy|=),;
-0_,/
-ZeS;=JLY}$ys#m<VGc>,0
-"-EY|ZOkLjQp5*M|sru
-
-[*f1:gP;Ufcd",R
-D$FL@>eerA6dGodF.<__3j?l,?
-"$TwNZx 	n$)C|?	r85{Z 
-Dgg|6MyVmIqM?",K
-uZMd?K(rD^8&,D
-"sh{n!Ui0uDx0+	}/[j!|
-+=g
-['/R#ru
-/FziR",:
-k(-, 
-"j^!m]""yX	7dMAKT?{
-da?b701mTEb^6y4et3[_)!Y3L7""Bv
-dT",=
-"OW""@Ki5)",:
-%1B>Ce2x }`1^%4xS,8
-"+d$y2]Q`
-.FdvPm}zc6	y?6_*#b",6
-d|ms, 
-}.,K
-5/pKG%_)l79,O
-"tA,Z%];07DT#AAQv*)",V
-"=A)G&N$H
-hmj$idDIcjn|?Q[ng_uC'",*
-",$wHx*}lSVV&sn ^ucH",^
-dqB,7
-"]IE%
-|GlQt(\Z5cjaF@N""3^]Yy\!I<)#xo[4VFWV_qZi ",%
-NMI|<i05N3(A)=+C*+qChl2)/tY?`u5Yq2klx//||<,""""
-$'n.)n+sw'6PXb6Xu-mTH,S
-"MOoi|,HrpT,aV`K
-",R
-Smy^`GfTog`w,E
-"JUy.9n0cetr
-0;%HX&XCZZXMLo""7;Z(PAWZG@^q""cq"">X:ISc}",L
-"5RgPy-BpSbL%O(5	KQbgQ4e.s#?`)50,",=
-sq}vX_$\,.
-"TpaTo,}D\VsZ",4
-3EYDav;GO$r[>ABsN%c3cn)o)tY_a8epEu6a/L!*V7,[
-"%^!>Xq:z2(ZW8 .S5;t1V=
-a[*fa73Rn++\Q3eY|0O&;D|",<
-"xNu!_o$xD}uZT4Zws+le}x,P",/
-"bYYYC.Lt|	pgJ>2BSDiTn,	Z9faLRl(p8;SwBj[d%",V
-"UhF&x	1om05M~ZD-|6zg	4}nx!uK>?Z4/sf8xW,xW2I_CLF",*
-"dCJ(qrT6C1n$0C;]0Q%jBg<Wsy
-B%rA}baRy8_8jO|e}YJS+dL",U
-"
-VY5ftMt+q!nVK!eB@Any?E)`<zR@~[sOep>/QX)	",2
-v-2>,3
-"pC`:a[O[1V0De
-+/*0
-O MaoZF,|=!vNUE",K
-":1,{5+ ,>,JRxhc<;J
-i9>5 r",Y
-Woz0sSV(8Y'@yIB-V8,K
-ApK$iFp[x'eZ,X
-)6;Xa<]MH=77%*4_FymFd?kM=z.wdK;59>TO8(1az_Dv',<
-h	W:-.Z~r$,+
-3ip\O~q;ZRSI-7<ip~vvyf8`5{/)/ni,1
-c,C
-"9C~4R8nPui@!fc8w0$?DNbCTP{X}jR<*~{]""gt|CR/9nGSBYZ(",^
-M,-
-"`S{6jb8+|l?g|nETuF.?""^}	o%oA-0~'jQgYg_x&!a)cSuc3	",L
-H%I9NOiB*LP}uN?Ep[#r,A
-nVAKRUh>$E-fw#T,'
-kzgm'v'640Tj,5
-N4&bf5E^i4M)|{z,","
-GTGCpZ]Q#@k?,J
-"u9aDI9R""	",2
-kpn-X,.
-I,)
-"9.*Ot5ULm>_W VYBL;8AL@""R
-^:GD",)
-"6Us
-	(Zf!>;prTd:^dAl0={`/?:n'",;
-zRX'(F`r(/Cj}w ),","
-"
-)qwbAT.+5~p)R.9;k+56mZ
-Dm61Z_",.
-#KF&B6~hR_Lkhq#b.8c(;MOlMA6NCoiJD,M
-{:wU}\4dqOvK{O/Uu+Y=#Skx.^v1~~g7SkrBZ>Yy(q,2
-AmjCP	+&fzMRYA2_](g	d,(
-"FBGHTWnh^5\1%	t""/L0xx[_p76vm*hO!kXU`5)f/|{.F",I
-Ov1xQ1,P
-dGp=(#O_FCVfjGzYRJ6'>N#<>&uN$9s8Q;+P&5d0S$(}>pK,X
-"_xkj2\3 bC{j6`+Oc,M,#2lHqmj6Hu",S
-pB.^S5hhppaOF!C,0
-LG*wUIMA8#kbX4v-Z f8`G0W8qL`<6C,'
-\oNu/a3(qQ[f!5D[y20,","
-"qAh@\\=rGB""hC=]e7OH%_""SLeBnmo~%v}D=Smf]c5h'./fSz_p",Z
-J!`*l7}ZmFp!GcY#PTH;?wC,Y
-HMga	NP=EL,2
-"bpE6jX#ut<S?,0x>yg}vat-(",X
-"#0Xe:|GZ>7bP1w&e#v#1/:&fXQ	[/,$$UTB$>86#b0RGLU",]
-2K`&YuIpySp![Fx)i#E	SC;cJP,1
-%7TiiNU6cw?,T
-"Fb17.1gq""xo\|X", 
-hl{Yx:I:4'I8orO7,@
-wx,O
-l%jB^oNzq{&QW16&?nd8_-{u&KfeiXO_]ZRp)&txY\,R
-"A3\L,pKFiY""
-,[7oRJE7",\
-"~#2{:aC&M)r""Ipb&6 /u6",-
-;Clifsfpz0^}8tX8_RB.cQcatj[idAlRwqQ/My)jI4,?
-O`2~5r4yeQ+aG-^*tBGmy:,.
-I^*A/[,<
-"M!""iVjKMuj?5!uxQM']ns1hKg=1UBG",","
-"9H$
-JiQ7Vg1)~)9J_Dtbvk",%
-":u!l_A@2"".^~;v!MIHleQf:;2:}&Ai}_-Kb@^OK9#TEOP-)",X
-oxIr|N)hfY3._!,=
-"?pUFeXKh""(AhK	|5d 2s/{MT>IP~^2+o>$[OZkAW)CN_7<1ufP",V
-"Y(LitH|H
-\pZ7'&2/w*I. e|QSH!X; /Q 7rvA<fRh", 
-T9%/H\o;K,Z
-"%,R`%:wyf>FoWg(Tvn",)
-"'U0;` },J.l0;&FH=aj3B?7@ZU!%H[`5Mf<
-nYe-",%
-h(4[|K`wg0o5__RSkXkM]Jt$?=NC( CSNG?UNk{S/0es2h,!
-%S0u,=
-CRTOsl;$cfi&3VDXvD=I,S
-eawF7BG<0v5$ET$E0rNpW~p.{(;@ >5|bNs!cPP,'
-Er$+z, 
-;H~ej{j>dQ>)(rX:@'	Y6M$hr%VJRhBM	xj:2+zZ,I
-d;Oss'/,J
-"jNg4zeD4E-
-a_PCv'!y
-6uNnl&\ava\\PZ}",F
-aZ7+? #p_B<ys1bFX8u0:s/_>iy1,R
-"4L2ZO#,Zrue,?Cw9`kcpfww""+>N2.
-g",*
-"N6Wv/#,	l.E\b#M%]DLW`9<B]<L V,'a]TkR",B
-]n,+
-"Ws]b83' X<;?L-mJ4 vwgj@/!>""",[
-"+'=/v%$R
-gXap,{.Yo8OjB",Y
-"H*rjq/ZdN|8""v,C2M""",6
-"x8nrZ=Z9
-1\b@)d*5[*1@^/$:KqiYj!t|T>",+
-"i~ea@=a,k])ju/{n#p9diKMK{a6x8 ]",:
- upXACh4u&II*W'9=\YrJ\D{c7@[/;~#'gk-@N;e,H
-(SAj<d_ZDA.,R
-#.ub24I8DT_-0,C
-"NX,w_~24e/C`_'xX1EQ5;v$I7e&5#Y`05R[%5ScN*U9",N
-51z)QS:,G
-tW,+
-"5dS`< <(eM,\n^O7CGR3T7UJnfC
-2`-F@FO[3w",1
-\}ah	!PUV!X*gYL:sds;zAu1F&,""""
-V,6
-"ygs+FmjGi'e@e(,",0
-"p0b.|CkX4p-lO/lbDj~@
-1.]EHds+mElzx]_|l83",;
-Ee6,@
-"PP0V
-dv8DjoMOjKotU#I!jL/HYIO|",/
-"V""`4.>Z8@l.t
-4 @'",=
-"
-LPV>LIsN|b8 ",&
-"B$Wp9=[8/%J,BW$wk~UugyyKuhoVUt;#?tnx?b!bFaPiU/
-t^",1
-"M2y?\mXoB9Tj;*,hr6sF33K7RpaHVy}m qy<je2`cz0Y",S
-"/t1XSN
-zKd&(hf#]>wQQx0.VE:#sc	OfS rww\q2:Fg""<",L
->[n`aW_#k}V);t`{Bk;#~e, 
-"0y
-;7sU^Eta*xh	f:YHu`?LG",@
-W!y8p;n}45!=k='EWH2sx5Z*6;, 
-"{.p+zL3Y+;foCH
-LD'LH""s' 1fzW=nz",:
-".P#HFi`A~$BV9WYGtU,;>N",?
-[(o3kn,^
-"
-",*
-"kk,""zpub02t60C9	v8bY|j<<srP3]Sz}wR= ](7K,YnH*|xDj6",F
-"q-AIYg_6	d,!Nn""FK!kMO-Q0t5:DY",\
-"NY'55gyg~,QY""%Sk1g:=cg}p",>
-"lKU
-9O_7WF|G",4
-B;}u{,J
-"oj""!yP Xl_W@w,)nCYLS`4jj?#j!%5:rFb71cLOPM$$I",+
-'tc^q$(L^1V]anSM8bH{:Z{'fCRSk)Cz=Uw{,","
-=3@xyd+2MoQ#(~l{C\\KD+ycM,]
-/=;XZ*n<#fW1TgX?rUrC[,G
-zinF8z@+FxLHZ8EK3}U>_GjHyS,/
-:&v,6
-"@^bJb""rN`fE?I{k@He{W4=qhz,~w#pfD",H
-">XUA)BX,:y\Zg,x/PG""dvH_@7Y9=Ti'G)IWv?(_MKUMS:}",R
-"7~
-?paChZ{B""S4$",>
-"=y\^q#JnJ~Q$LEjv	d%""OjhCvQ_""*c pErHShK[(}0Xtg",/
-"l,E/-f*j/(<)$`GC@MDstG-DNG""j%jG]C|q*",;
-"2	&x~,",#
-YGv|c6Qyw Ox)=gt#p=`8S4X?Ztg,/
-"XSO?onY8gu((z|qKh\1L&<=W`A^3+:t:)LV_""}].D",9
-L^<l5TlX_jU,]
-/&kV,6
-oXCS5eMtIR>~Y6Cj=6iw7[V):Kj%Qr\MViw>oS,E
-(PIBy71h.9FSg#k|sxL,T
-%l<@K(J	}TW8=L}c1*i*7nV<!?si,]
-XF^35h~5)i(,Y
-Hz,""""
-(IoC|,?
-Er,W
-_/1(~V#];`+759	uvKYm^,)
-"cf	
-!#@ZL#5[LE\{Z	POsDG{<T#/p1>J3D",>
-"[SKTN(w?]sIdiUva6: KKW
-hGACD7`,B4)\",'
-"%Kst{/)VY@-@bp""-m.fyEC6fh+_",W
-srdjam,!
-v~B#%.P/V(!#A,N
-"JS*@,e'N+kt4Sv>hV4",$
-dU69ztxP/Mq]nPWd?Zw\$,Q
-"<DJD:^t3
->en!P# Em54_N>=lrIl}K	Eao|,&0u3iU",\
-"7c9Q0bX\-(b=iZ!9>a@C(
-Nk.DX8I",3
-*@0toc?BwYj,;
-"HPh}	3I!D+_S?~D4]~TX@1q""_ljB>IFO~qU`)_u`%8[2{oHO",#
-"Zn9Z|RR]ibL.#,h",4
-CJvw@h,B
-|K-q,E
-"SNF8
-^ZdWN/UPL&Cy;x[W)6nF(geJ5`C;|ec92sL0*55""$",M
-4lh'.U&p+995'X!xkAJR=K|0Iy&|wi,R
-"M/w	-OyYr|9z4t,5",T
-9g6/gdUW7E+yT'V,M
-"QJ_r!t2lH7@S]#5MeqSt
-Vm!AB",!
-"6,nU~*:6 =A
-,SR-73i1@0.DuW{jt_# p)7",@
-"/wi7RaXx""c~*diB}N""6c8Vd0cEv+bp$)GgqT",(
-"#`
-8'	s2ETh)""Wn};>k^D9v)AJkI?^l?nS:cFF,;y>_ln
-",8
-ntRWi_6fZ}7pv,C
-"^_gC*t^
-F1dbX2e>,'K.;@IDH8mp",(
-"9$V	] pa	}a7
-8Y$`n}dc:)$p4oP""""PLhu",@
-"H,kb'O+L![j'*~..?ql9X[oD)!p=QbT/9~]Pe:Lo",E
-"}FA7{w'1q)EQV%q$V7(6DC""Ue=:'aNJG/aQt2",X
-"!_f%{\T@MA3;O9
-lr",B
-"*^m4""WN0y""J\/%j=(</(!E_343",V
-">frx>#wV0!I""I/Rf-1-x]a%\b",","
-"X~|C"";U]5P:5	vMN\",.
-"8cA?O9{/L	Z+,0Xz@l#,F6|,eS%eDS.]U)50]",8
-ZkFK<8{$DaD:Deo yun,@
-m>2H3TU TzLWX\B:e]l,P
-)+&Sp<P~&4F,G
-ZWYlRK9?OR>Olne8`5HJY#!?fW91c8}{y7od\,","
-k(jFFn'Y4YfZ;BB1Xc'hm%42<z(Jl[D^#yc,&
-5QojZ^*m1#\Ir,9
-"Nf(&wi,{yhzS]#8|}$qL:XR",M
-"^y}WJ;QiT\
-Mj[`K:uxLd`H.i78$;4=L]!MyX",>
-"\t%>.N4KxeZ!
-aNw%KH0UEm""uV@@lq)WY9zC`F^pW	q#`V",<
-"^{3\30]ID~'~#N0&""",!
-S2pM7d|LN~{|Da,-
-"pn""$_?,<.AS{Fw`Q1&SDqJ\o/&RHvw8xzG!^QpL8<~?/",""""
-"Q""OOgQYPeA,yEN#j7#Lf:KzpJuy4{/?^Po;`T8bz=~!4EMa",0
-"
-T$+
-C",Z
-"a`t]j@{LQ78a}T|vFiHKk""\	\-l=l+dnFJxssdhF",V
-3mTxJ$-u%!4!1H{/;]T_K>Z2b1,M
-%arNH[*nCu9`9^\B?xTy+H,^
-"Z=4CF8t HUh?ub3,)co,kW ,^X{G
-,4$>tSBw&Y ?{BrpGNPE",Z
-"ydjcgy7z~{],3fE3D,N	SovwgyMLj",G
-"aIsG)6!
-{]Dqv-:u01TY<",7
-x<@`uw6z5:b`2%|h 2p:I	3H6}[:yaG&odh/=c OqsXa,*
-"
-;TmQ6B&@nsiLcUQ*tRN0JsK$T,+b!yPn",3
-"oe.,6<<O",K
-hO,W
-"CKz?ZE	Bcs1:_gpPp!4U st""IT#i_",#
-.PJF@9W;2-X|/=;~Z,+
-"%'Y;T{!1fLM-.Nv]XxtwZQCELwKvK<
-Q",0
-"qWHh$
-(+",Y
-".<|jB#4G.W=B)_6PyP]+?'ayc0,""cGd",""""
-Dil*9$*LNJGo7	p,4
-"sGH-])Eq,
-539TB_:}Y)dd'^T3o6N'y~q4MA$40pk:O",T
-"Vw=z$s056GfW}s6<m/DC%j9D]	z-{S	Ml,#",W
-yF|V[|s,;
-A%h71+ge,M
-"t;]#X*MmY8aP,Nb#g~7FWBm5$`\=oD?!",Y
-"<n#I	[;1,0^aW\r<2CUv}x
-LmY:SHB!cP'",%
-zIh	O[>K I$U)>v'i7`pvJ2t!Z@]{<&D;Zk#q\)3[M?2}G{xv(,6
-"-yt?P7
-lptD2'fDSQM?)&o
-t+w:Vcd,@6i	t+u/:",W
-"dpHAl:B1)0MA4L=:
-;`C}X=rMb*Pf$",S
-8%a}C]M`gWOG	]geL`'Fqf*rx	~ZTTW!lZtymvP*;XO,%
-"n>uOX;.pS_h:4&d)""0,>C",;
-"th"",G%V6{5.Y~Tp#]A#Ypo~M^OqGASMXLZ%@K",V
-]5sYl?(%`V!rnC[Vgw[rl/=!RI, 
-_9GAb~`(izBta5_K{l^?Ca,)
-So!Df|!`,*
-"wsE(,@oNB1[1ohfwVKHtfk0SK>R2Z3 Vq?73`md0D",S
-">kw|IRy`:4%E2mDC4N"")i/",S
-"J1]kLi4U3'""1>{a>tT7Ku$Bf",1
-"e4]tE0m6P1
-[6p\|(C~XlFL$`26eJko/bn/Y1*k+qa",D
-"TQ
-8$>#.#Ay",W
-"o
-WE1NQm,{>os_Nf	*O-""<(	",J
-f\0vVXG/h;^)$QhFxeVs*.h{-u!BE7!-nR@?tkMBEHYmG,0
-"Tc3SsF6/ng7OY
-4pKfq|&L8]L2r",2
-D`Fs!)ztZu-*b,=
-"[MHFB!Bg)kaEy7,F/Ka5]ctak$h@tI05veNKD/+[",)
-vg3:@/c6%omQDh!=j[I,\
-C(#WAx}k>+3|nd:,J
-{P>F,/
-"y^BR1? laLBx;y""",D
-7>D6gOLP:!rbF9Xpa'pJGG#QZ|Z8Jkrl$dxZ,0
-" [dXD,GVfV0(hd{U|^e[mFAs9",N
-vK(+Q.,3
-"tiWaZ@>C,?3fO)m_4{G#tWe",!
-q	#e=Kx|uG*kxVRWJXpd^ a	B4vcF2vK,L
-eg+8f !1,'
-"X.JRu ,iRtK|GXoq""ZQ	NL6h:<?FQk_E%h;	8wi",J
-"7}iU[`N\0LEV;35c==}m
-).S&Jp5Nn}i|PJR+>s!+%%uI(F6t",S
-"U7Pq6jMMzG""J",T
-$7s5Y&+eAy@$2+=g(/$M@,Y
-"7cqnVB'(o!xwrF6UPKLES'JS.Ipu478z
-\^g",)
-p9u{d!((xT,Z
-Zac/y?iH,V
-"|<[RF
-UdkSJp [5o'24-",_
-".Kdo4^?zK,	Z.Q	JpJU3rV>`V#:F9",=
-"d`?l@vawJNI@ZE%Z	]y.v8,]", 
-\dtl1xn_KQbnViZi@GP:}5Bo.:U\4)|3P.^k9A\U.}5jy,2
-"q,DwZc-FfmERKk@hXjAp[[J0Z#<6;@Z4~dpcw_SQwX",I
-"4|<UQvV?JRJImw[	|rDR}ru/`""{l<@Y$P/Hs7/>_^]5lImK#a",K
-/&o2Lu=0!xhIYV`E>bu$0!,","
-mNRnhgIU~2\Jb]W<}#wq1)v>7`bNl;GIU2.~Yq,A
-"YSV<%L.0	MZg!S
-rO>e",&
-}E_lEP{yo{a&M|$4Mi}|A1!C|TYW5E``u|nG%,R
- ,@
-"/B.juv6>+|c~)I3&rFuJ)R UwWS],gz)b`0",(
-VJ& lU58f6%pV5]8fi8f]_TVq\70t$,$
-D,$
-H9x)ovDzcVg?\u|vBTtxZ|	w9+t:a>l,<
-54|}&h{A': 84eb^/,M
-"m]xrTaj2YJgJ5Qy;,)x_f>
-~i0i+",8
-"@CmKI*pV|,h*+$X""8+/[^P:p8,9ns",Z
-",DrBy7?""mbB",&
-H/k_/j:6#wB^M2:@ HWUt+b58nG*7AD,:
-"-cUdwQikj\]J95k,PDI.G_$`[m:
-br#m<t7H""$2+n",\
-l>z0;q%Y,^
-/rEMb&n*<Ug,+
-"C;(<oG	>UAiORz@AX:Ngk-rM|H_,>@FJgBxqD._*I1xI5",R
-"tzs.u.BmgMS}#NCK[@""gjO^(R?%pF-x5{2=JRBse C",0
-"+)g	#D+H^!'49ja wqQ*4G-)g:""BwVy-:MUFJ!oE3c-|S",;
-"
-b;ZV#",Z
-G{mWA.	9#_0z3OrHM{,G
-"7mKWzw6+F9'X@
-5Ruwn+}!ON*s.*V~BGjn\1!N",-
-"h-X*a{7VW,TxZyvN)VNI,lV`\6d	Fn6sNfpcoLFDhL&?/PDG`",U
-"A=a.4$*n1Xvp[W$$&j""g3""g=",X
-">""tw",+
-Q`]W@|\+.q<-n*~dU>E:ce3Q,(
-"M@,NS;V;AX?sW2h[ugL6%7k*@'31zy5GoLpt5",:
-"sp>0IBX k*Hz3q3H""[zo\W lzJ,",?
-9Fi#t,_
- {N5,>
-"[Iv_T7EQu.VA*
-n""p<7%q",1
-FBj%FjJ9b%=9P@a8]w~$,F
-".?,y~bU\'<bl""6& 8",J
-"k>q%QqK),&]8Jsq*?]zz329
-%wwYsTx_VtL[7",>
-tF	N,1
-"VP+8)d7&[=
-*.d9e@k",:
-5O!i9*|^Q=[|E*k}y!@Olfh*#]0fDL[ddWIJH.<X,1
-uU%`,/
-&&Cood*!Ar+x'mc`y>6XOv:J8Xtpd-ajn}v,(
-" iovmFhzceJ""?Y[/
-<,'JZqCg((79))~f~)R",@
-"K+RM.|$j
-c`",:
-"G}72 }_):n!2WkLRkGx?_I7t16,!si;|",P
-2Oe72;,*
-[|26ZyjuuIOsGSrQU2_k	leOjCWP,<
-Q*H,#
-IWib.&[Yr+6,&
-9J}_aQt=BedA\\A7PJ2d/V86shnx#//yU$;jrHWJ#oE.yn;%(,)
-";Fae&oJZI'2`/'`i=9I_Z:,1}% H;C)-{[
-",N
-Z_veT;Zfzu(>jkdWJ,2
-"7F~+qd""w#Lb!.*jl@*>\g/{",)
-4 OkRu6hK`j(3nL9->e1,7
-X,8
-r9=I `_}dkz,6
-"8u^ B+A`~VPyQdi8.#|:CAV$=]e=}D3!=?n+qk,HfSyZ?wC^J",4
-"_,PqY~?3""9-?",<
-TIhB%^V9j)Q9%,;
-	,)
-d4(]M|h2mw4Tqf,#
-" xbrJnPn,= FaldX:~4%i2eTK>-LI3f)#^@~}70|4/;U(9M
-w",M
-"z!,{(CyNce 9E!eyTh@
-#nYr~rCd'aF9l'B}_]Z]&Gp?Ar
-
-",!
-"CQ.	i""f( ""@|+K(v	>eZivgr[X!2Nj",R
-"=3""Dnui *v",B
-k^E\32L(D6/k'W`>i> ,Z
-"	FBm)/J!+(O88W- O42-:KoN6TXt|f0]4;>,\&`S4O`8*",S
-"$Vi*LMAvT3.""{|C6>4$q)	QdK{bF?n A~YL(zH/}",'
-"aYdW2wbs']b>P:""g2[%/e",P
-"7qtM;rYvoFP5Kt_U&0z	@|w""x1N#)7
-Ul
->T7(O?$lanE*$", 
-")Q<A"" a@</H7?`h$sSW2d",B
-"j	lKdb}}xB'
-x+(<y4s4B M1fw2t""N#H?N<""/(};\ea",*
-X!lQ:.Fsw=	o):{v(b],^
-"d*F_L$s|(ySJFl@;f""*z9doJHQ/yX",8
-"YzKLW
-M_GQzunhN!5OpDgjk#D)CHyl$)s~"">pQ>NA*l{z,:\z",J
-"i3[Ma\[;6956QF
-%(,T? xTL?<5Y!e:x;/3",T
-8\]qqXOp+rC]-,4
-"q'>9?bf/*`cVyJ_^
-DD!ETYr	z>O[Uio0",G
-#t[F|06v6Ggk=/-S=%VHr)hy,'
-"L\SO*pf:zMI~i$51|!RhYm/;|O7V3okPD""|N4zwFc5y KKxq",","
-"[g5
-vW""h(vt't",%
-"aEPV?K-p!D<j;sIs""J2c)x/9>eb*ypyiIu",J
-"=U,
-",(
-^'6[&-k>^reIEv/g\Drv97S+Yy^!!H*b!h8	c^?y,@
-"0vRe
-aAz5VyxQJXelQR2j",""""
-"YlsH@+W`EQV6b>""Q]m-|Yb",%
-"|A,e I-$kD8Q0FEO0[e0u/x=c",F
-x	m$_?*!Tt KAJRuFfY<R?0s:'|9/zJ2H@PWkV,@
-:4U81PZ7C8_bQjgj%,Z
-"5q11e uyC5fukH@4rL4y-1WBG@!	YQ&3""A*KQp./rk1gYH:}Y[",""""
-"mU=rvoxW;kut5ir$tb;Ubgj< '<AU,",""""
-`:@QH!J.g	h-b@yA|X>iNXoh=o{d|v;:Ff6TuIF^aAz}wG[=T,R
-2u{Pfv161-x-QQH-0?C1fg,_
-"><B!9D~""ybqQiH5+a!(a9Fzd9",)
-"`zI%a""FSe-;$.;R>=[Ftm&97</bl .+x>h?7?l",4
-"5[$JoK|zk.?>u@v0Ga[	"".PJ`0%8u^#+ TL<",?
-"cQxmvgB
-U8F}%(9s4+zv/m[
-*bqxq<B@p);ir<myJCcKn",Y
-Jc86aGjn-qcwz%^/)`v3S',K
-"^L:
-Pzsj.B	\)tM*4EX~DFEk ){/1>%$L\&7t",K
-(\c,G
-"w#N-0=e#;beI,8)}M/5r;olHeIB6-5kf~Up)kr;R@",/
-}[%ZvX5gVJ[X?o,""""
Index: anches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Data/CountOdds.csv
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Data/CountOdds.csv	(revision 14874)
+++ 	(revision )
@@ -1,2200 +1,0 @@
-[],0
-[-10],0
-[-9],1
-[-8],0
-[-7],1
-[-6],0
-[-5],1
-[-4],0
-[-3],1
-[-2],0
-[-1],1
-[0],0
-[1],1
-[2],0
-[3],1
-[4],0
-[5],1
-[6],0
-[7],1
-[8],0
-[9],1
-[10],0
-[-947],1
-[-450],0
-[303],1
-[886],0
-[0 0],0
-[0 1],1
-[7 1],2
-[-9 -1],2
-[-11 40],1
-[944 77],1
-[483 -269 -437 507 19 49 -631 23 -759 979 -447],11
-[-23 559 -421 -157 -5 -893 -485 -497 -21 -535 -367 955 819 -565 -939 415 901 307 635 945 581 417 -981 885 -325 359 -33 -845 511 -493 499 -3 -437 463 -571 209 -909 267 863 -565 -19 -421 143 445 -131 61 -231 -363],48
-[-583 -131 925 719 -719 179 -525 197 -137 205 -799 731 -85 -119 291 529 -377 951 903 -93 -989 347 -605 863 591],25
-[-993 -57 -701 883 -729 541 189 819 207 311 351 -551 399 335 351 -705 573 -681 579 -849 -781 -999 419 495 -77 -1 -663 525 267 223 479 -475 669 617 409 -901 221 225 -655 773],40
-[-161 991 -939 727 985 -681 -447 -823 -649 427 -173 -37 37 -509 -149 873 879 145 -955 -707 553 217 -969 973 355 867 -863 833 847 159 763 -567 601 -935],34
-[-107 -843 645 -221 157 -225 -609 57 805 -959 665 -715 125],13
-[-799 311 355 371 -549 309 621 -529 693 -839 -293],11
-[195 49 -575 -301 -579 -555 789 259 301 -119 451 -261 139 -557 -819 -31 -539 441 31 599 665 871 95 -223 -953 -391 -873 -313 -841 479 -543],31
-[329 -415 -201 187 -915 635 201 -955 821 -33 -925 121 -971 -517 -597 -87 751 -203 -135 -43 -3 -935 371 -95 797 -909 -807 905 -371 -687 179 -199 -887 147 -595 805 -605 467 265 -93],40
-[758 688 696 34 582 -92 -426 -824 18 88 -292 -64 -122],0
-[-200 -426 -134 -668 188 -630 318 360 778 552 -866 848 390 -646 310 246 836 954 418 -746 472 606 -156 -452 -490 258 132 400 792 -584 -918 534 -892 728 346 -562 -896 142 -740 -590 -512 -628 -560 252 46],0
-[612 -146 166 250 -536 -326 514 900 -372 430 970 -374 124 114 -394 298],0
-[234 58 -954 -168],0
-[-278 392 270 922 -922 50 -352 410 884 -904 272 -672 -890 582 -564 504 -552 426 -748 -364],0
-[368 -54 -480 -476 -512 580 374 920 -888 -650 -684 184 612 -626 -562 438 -510 -860 -364 248 398 -852],0
-[-212 -54 320 368 792 -268 -622 -134 -2 896 92 438 978 744 570 -688 344 452 848 878 960 992 -456 -384 -180 380 38],0
-[56 926 922 712 -872 926 910 984 358 356 -920 -16],0
-[728 -404 -164 212 466 656 760 296 870 -972 -878 -56 -424 -288 -278 580 -452 -234 356 -922 608 448 -112 -676 -488 490 104 -58 -902 -316 136 578 -394 -844 568 950 -998 42 -898 794 604],0
-[-134 -956 -577 -655],2
-[-796 -788 820 614 984 861 -89 -665 -844 -278 748 -983 -592 704 -465 524 -492 121 669 458 -75 512 -804 536 838 626 578 -109 628 -622 367 322 506 658 406 -512 -824 -44 52 -660 -594 -527 -936 862],11
-[-330 900 -371 806 -548 -14 -267 -304 -612 320 -237 141 568 -1000 -530 -38 -798 591 488 -626 972 -758 -722 399 374 356 -339 754 881 908 -338 -70],8
-[4 -376 -596 834 910 804 -290 236 -18 188 448 -52 -886 -706 358 -936 -158 490 -874],0
-[412 97 -306 32 830 -790 -476 -856 -708 -775 -134 -278 882 294 338 912 -8 -92 -58 -362 918 -742 172 668 905 364],3
-[525 -949 -701 111 261 -683 -159 825 -329 -525 -629 -541 -29 755 341 -134 -759 923 -383 553 157 591 -825 933 255 313 -891 18 -223 -381 -917 955 -19 663 961 -673 769 873 -517],37
-[658 974 -28 690 -276 -118 -952 85 762 881 120 -834 827 75 -32 544 -883 534 997 -997 801 -541 -82 -46 581 66 505 -343 745 -392 935 520 665 308 -626 -574 114 -337 -875 -17 178 213 -644 -7 689 997 181 -474],23
-[799 909 -235 -307 -547 -949 -369 941 173 -305 851 739 667 589 759 -161 333 -381 -711 215 -699 -629 241 143 657 -325 561 -505 565],29
-[273],1
-[-500 120 -119 769],2
-[588 -134 -22 -631 -786 389 124],2
-[252 372 -222 165 972],1
-[-507 -837 -871 79 885 -99 -842 973 227 396 -1000 -159 184 -615 -506 -742 -577 919 -838 411 -33 113 -311 1000 -338 -118 -613 -953 -851 -834 657 -777 -901 -871 -808 -636 901 -753 -320 789 688 475 26],27
-[76 800 548 -2 -664 400 -264 -142 -54 300 128 -554 -829 86 -736 -24 448 -948 -224 -760 816 -519 -718 -610 752 -680 486 -364 -234 -756 -324 -564 920 156 -876 830 662 808 321 -612 -592 -125 -768 -662 -362 466 338 -220 -130],4
-[-920 927 32 -63 -522 367 -896 -806 -870 125 554 318 -276 75 -582 -515 -259 -309 -638 -56 -815 855 31 61 -292 -702 228 279 -256 562 528 715 221 42 790 -18 391 -956 942 212 389 538 201],18
-[-542 744 -553 566 92 -512 -113 -364],2
-[762 527 -93 376 -12 -924 564 -939 789 -239 -912 -910 83 26 -569 -586 518 131 67 -871 553 31 -641 -898 97 469 -827 995 -645 -199 -557 -823 354 -90 362 895],22
-[753 67 263 -433 497 -27 -599 355 -177 951 529 -453 617 547 -927 185 -387 6 711 180 -563 -551 439 109 127 527],24
-[266 -410 60 -158 -355 211 -298 6 22 231 -292 -384 392 563 849 -388 104 -165 649 674 -377 -469 -386 -528 179 -910 458 77 416 998 474 947 500 -828 775 -282 759 -240 -985 -458 -540 -853 506 -422 870 -535 -775 -426],18
-[449 463 907 -327 768 288 -759 992 -195 -308 -372 -588 609 -289 -261 -886 -834 -796 343 817 -575 696 921 -340 -777 896 -872 902 -663],15
-[-431 -896 -13 123 -1 313 -829 857 -148 -169 739 248 -513 -849 594 -444],11
-[882 624 146],0
-[-173 -531 837 -180 -768 383 91 997 544 470 -117 779 -310 48 -628 821 -147 -368 767 806],11
-[675 -307 -282 -468 -665 -768 121 -364 -182],4
-[-135 -281 -291 -337 110 219 -963 350 -161 -754 -765 -299 -502],9
-[786 -760 -808 726],0
-[285 -109 153 615 -965 695 674 -425 742 -122 -750 -820 -64],7
-[899 583 -436 3 986 873 -624 -843 357 -995 623 381 391 175 198 173 179 -441 -585 461 359 851 887 29 -451 -573],22
-[-73 -967 -494 515 89 -991 454 -125 -539 167 -770 -862 337 661 -15 -447 -287 -655 -591 908 557 862 263 -87 -72 -853 -863 -300 -285 -159 -667 37 -65 702 -33 -9 -599 -523 -691 628 608 753],31
-[-187 633 -268 663 454 -657 745 378 195 -525 -680 -387 167 45 -234 587 389 741 -288 716 709 953 -846],15
-[421 658 -195 535 33 -181 961 -123 -801 361 291 -701 -216 -273 988 -903 -189 323 49 899 -707 -603 -357 -170 564 55 859 -859 986 -95 421],25
-[-265 776 -707 717 583 909 67 313 -677 -958 655 -468 203 -779 570 -431 -123 608 -309 97 -927 985 -791 683 -807 588 -737 119 -967 -515 -243 507 336 868 -563 423 823 507 -293 554 447 375 186 -104 431 605 630 -186 -117],36
-[636 -51 358 -411 -688 -207 831 460 431 924 958 200 102 -45 915 60 -923 827 -592 -229 757 -234 -987 503 478 707 -248 -708 -189 -330 643 -72 -165 -240],17
-[984 -775 -973 -926 -374 -110 146 -764 -296 776 -915 462 211 -625 707 126 -955 -811 -579 -904 -291 784 853 890 477 -52 -212 -654 -970 -477 -831 -634 399 -256 533 -362 -264 -769 421 -155 690 234 -673 719 519],22
-[853 -11],2
-[920 -151 254 686 197 -38 -868 674 150 401 630 -682 -800 972 417 -866 -824 739 786 -235 -497 720 -832 678 607 -598 -600 348],8
-[-437 -353 569 941 -748],4
-[903 891 917 -673 -372 -395 614 368 -560 887],6
-[-731 467 -455 947 -995 9 526 -602 -115 967 972 -215 -788 784 360 908 -485 739 229 946 134 -346 -482 371 -324 675 43 380 878 412 142 596 -832 169 -923 -453 -521 346 -842],19
-[812 28 -151 -416 506 -830 -738 -961 -162 967 770 805 509 -6 988 -374 -173 -412 -151 -579 -972 -554 -495 204],9
-[450 -4 -590 690 -626 -826 -322 322 446 -798 -216 -98 -64 50 -858 96 722 384 -654 -778 -796 -370 854 282 116 -512 698 420 -920 220 -960 40 -74 -586 -276 238 4 -726 184 -320],0
-[-99 215 275 -552 -547 678 242 -385 701 87 -301 742 984 705 -476 -243 51 422 959 479 -515 -629 -334 941 -221 -906 561 -231 833 45 -575 -258 -651 -497 -932 -331],25
-[493 241 612 771 -449 -61 -286 -349 256 589 801 -479 662 305 132 584 133 -417 811 31 469 -337 -723 747 -222 227 -76 343 761 -77 831 902 -723 -204 338 734 815 61 735 267 205 219 791 853 465 -983 -784 779 -911 719],37
-[288 857 -756 179 868 25 -488 -946 -60 806 -424 -143 984 -976 -93 725 986 -226 -745 -448 420 -926 292 -700 -904 774 -368 -695 783 152 -609 80 795 -40 396 376 -747 772 703 229 730 -691 -176 370 294 -480 -216 -12],15
-[-646 219 -728 -859 909 483 744],4
-[843 849 595 317 -109 677 413 -503 -60 -167 787 -857 -153 -503 -29 -121 583 521 411 835 -767 602 367 548 -45 833 -523 -599 67 -39 457 -973 689],30
-[-316 728 572 -309 -393 -594 954 -869 -188 -118 -841 750 -167 514 -703 26 -234 -793 828 -222 -384 -979 752 -56 780 -292 305 -164 102 888 528 -830 425 56 904 114 -507],11
-[733 -596 778 -309 -610 -585 -402 518 -973 176 -604 64 -461 -888 67 -314 -790 540 -298],6
-[577 395 -412 759 -594 24 -298 -820 -436 -714 226 -65 579 -837 239 40 749],8
-[-484 -321 -377 101 -909 -671 -401 -648 345 33 -371 -951 -673 -803 28 339 625 629 -209 391 127 -869 941 -835 -985 -65 971 517 -76 -167 -173 -11 495 725 -562],30
-[458 658 -706 -794 -108 -180 -282 -868 192 346 -798 420 -144 -126 968 -330 526 -954 -312 532 708],0
-[480 296 16 -988 855 -530 -38 791 -981 996 -911 159 230 223 -940 948 -921 -280 -62 868 798 -531 118 -456 -822 -404 513],9
-[-374 15 469 516 609 203 -974 883 -336 -364 436 -790 6 111 604 -466 703 588],7
-[-671 -747 397 721 -6 155 280 -121 -477 -783 905 765 -262 -739 563 568 817 248 -9 643 49 -27 -979 -694 -91 196 -193 749 -209 -938 -605 134 -921 169 -534 -573],26
-[-388 -814 874 102 -651 666 -566 200 -34 -542 -224 830 -414 -958 -604 510 -748 -8 214 -350 102 758 606 44 486 -893 -276 -574 -62],2
-[-752 -819 714 115 834 -560 -456 -354],2
-[483 -25 -600 393 -951 -839 -859 679 -317 -153 -705 -734 -439 853 -593 -137 531 -291 399 893 953 499 -441 167 423 621],24
-[-344 -700 -673 64 -686 25 622 676 813 218 -506 807 785],5
-[-302 -256 -93 -622 -920 431 768 944 498 235 948 -571 -709 200 466 850 -265 186 666 685 292 -556 509 -618 -419 -693 -526 -880 -806 -375 382 20 -764 214 -440 -441 74 -686 -60 745],13
-[115 750],1
-[-956 930 -686 517 -953 -552 555 -534 43 -877],5
-[959 -719],2
-[-377 383 821 -627 -347 -539 301 -910 611 219 149 -197 -557 -457 -226 -220 -861 -771 33 700 -651 -917 -853 -769],20
-[848 563 315 169 -899 15 429 495 951 -745 929 -333 -970 425 375 269 827 -1 -137 967 -605 703 481 955 41 -159 -103 511 655 -43 755 -153 -505 -921 217 813 409 761 51 525 917 -565 329 337 -133 603 949 485 -405],47
-[-466 -886 -226 -768 -838 -73 504 -380 -708 -34 -602 -248 -188 125 -11 -134 462 440 692 26 -356 -310 606 -804 764 -554 -16 -762 590 182 -724 453 762 568 696 204 457 -318 86 914 344 -268 517 -66 794 138 -122 194 220 -288],6
-[-257 -429 -643 -823 747 441 659 349 -64 -389 793 -751 529 728 45 -799 -299 -915 531 29 327 333 113 935 -641 -320 51 -389 -565 157 15 -137 855 429 -305 -157 837],34
-[296 1000 688 890 600 -616 -650 -828 428 628 -552 -922 906],0
-[-815 -544 -205 -251 -689 -826 -315 995 607 -391 337 -747 -849 589 791 -385 67 -545 -926 -69 -319 -605 609 900 -529 -913 391 -782 -516 -802 -551 -637 -569 805 801 876],28
-[-951 621 249 343 -701 -649 263 -547 -501 -851 279 473 939 -519 -855 -237 653 799 193 -47 167 -111 231 725 37 -167 -153 453 213 309 -527 -743 -697 999 -411 -661 819 -329 -585],39
-[767 395 -733 387 443 -87 419 -885 909 425 261 685 -159 394 -103 -453 561],16
-[-231 -449],2
-[-568 -674 200 56 -263 735 -829 356 -858 -886 586 204 -198 505 -555 233 -610 590 -450 55 228],7
-[89 791 959 -803 773 825 391 -541 -527 765 703 -615 -727 75 -348 -801 871 522 397 -288 629 -821 521 757 -277 -949 806 538 -967 -377 -12 689 544 -312 151 -805 -823 145 -672 802 -289 320 995 683],33
-[915 407 395 625 901 353 -493 -17 355 136 269 -741 443],12
-[762 -626 448 -778 -384 932 106 738 -594 864 -187 84 -800 -955 -96 -419 444 432 -132 -413 270 344 264 81 864 329 1 -266 -950 -562 -684 -23 -521 -734 -486 120 -28 -160 132 -259 -606],10
-[-262 -924 748 -887 -28 -166 -474 564 -268 -822 -514 900 -146 54 -142 -832 -140 -272 270 -506 328 426 -312],1
-[920 488 -556 39 700 -306 532 166 384 -575 -341 -548 4 819 -759 622 -73 -914 -316 -959 -9 728 362 571 -956 306 -247 -500 427 -18 929 275 48 467 -478 -640 860 -545 -592 742 -924 -663 -646 -300 -228 -962 122 -520 548],16
-[-512 508 -630 304 920 736 78 -804 767 -469 241 -731 -722 605 -254 2 -876 -714 757 228 711],7
-[-174 -190 -642 -220 104 -870 -16 671 -586 -249 -349 -358 -860 -157 414 -264 -496 210 728 117 155 310 -526 806 -816 -507 -614 297 -582 688 -652 534 -343],9
-[816 738 819 317 -740 -717 -436 -33 -53 505 -685 482 426 -361],8
-[739 401 -391 275 999],5
-[443],1
-[265 -161 -315 427 413 379 -561 -717 -619 -543 819 309 -367 613 847 105 -27 -615 -915 119 577 -763 -349 695 283 -501 479 321 -817 -569],30
-[-992 986 -133 420 858 298 784 266 56 871 -936 212 616 402 -232 -36 -672 -42 814 885 -758 588 -13 702 -160 650 -401 -320 -640 912 -956 322 12 522 419 -414],6
-[165 -61 -723 -75 -203 -533 -695 -26 -647 -859 -77 -461 -539 -601 731 273 -659 -805 -967 961 -707 601 191 -853 -477 867 735 -433 -481 -963 313 400 95 -337 377 605 -489 -341 509 937 -675 115 -645 -155 -481 -512],43
-[-508 -568 80 294 656 -204 -540 -200 -168 40 246 876 -356 -811 918 168 -730 76 -514 744 648 -794 728 -640 472 636 -320 532 -508 472 330 792 676],1
-[-11 781 -68 -87 825 -756 -949 -99 -309 247 -495 -148 773 793 973 923 19 303 -379 -353 -821 -673 -805 31 -605 669 73 505 -451 435 297 -905 213 -243 -94 -247 285 449 811 179 711],37
-[728 -712],0
-[-371 -727 717 -37 -179 -523 672 -896 -243 -273 -478 238 -471 587 827 133 759 913 -655 -285 875 449 856 471 -389 -417 270 61 691 -957 195 152 779 119 -139 508 995 517 33 -325 -158 149 -121 -394 -971 -804 -585 301 -399 -836],38
-[531 -95 -39 -338 571 591 467 140 279 -679 819 -405 -769 -89 3 -929 -853 335 65 -840 883 875 -125 -425 631 825 777 -669 122 615 -189 -695 -576 708 23 -961 792 -667 -418 -701 114 666 -519 -114 683],34
-[641 623 -139 108 289 -234 587 123 113 -379 -475 -366 518 860 -818 703 -6 484 -796 675],11
-[-839 -921 133 -401 513 803 -546 -407 -583 817 -817 -903 -273 -84 941 -391 -554 -999 49 731 -263 -589],19
-[-750 -966 -605 -460 650 -803 -450 110 151 825 799 137 -478 -400 757 551 157 -145 -935 60 597 965 579 -966 -776 10 185 934 -171 -503 55 -321 -979 -263 209 -268 135 796 571 838 -473 746 899 869],27
-[825 -356 -543 655 571 41 -263 92 -35 -791 -905 -935 -171 495 -529 -44 497 843 217 763 -713 -765 357 832 1 -163 -607],23
-[448 208 826 926 800 137 976 940 -383 -227 -851 290 955 -667 430 -879 23 -504 570 -656 32 -154 83 -148 414 -491 -819 -597 606 170 921 -420 -237 -680 -490 52 -313 -181],16
-[-404 445 363 -550 -897 -439 979 -787 913 -246 758 -105 794 253 605 599 -659 -235 189 488 -915 -765 -539 -639 209 687 997 325 -967 -531 -119 381 -131 776 -983 -97 697 -33 906 -723 567 436],33
-[-232 92 316 -282 16 -574 -68 766 690 -314 -26 452 895 18 -697 -660 -165 -264],3
-[-350 176 607 -717 931 150 -668 115 -918 -292 542 48 -980 -299 778 -866 -996 57 -113 -608 -629 -162],8
-[-125 -928 8 -469 247 -287 -47 282 955 -555 -211 -345 56 -563 -959 -345 1 641 554 -539 -87 -401 -937 -515 445 -296 311 269 592 -747 -51],24
-[-68],0
-[262 -722 -246 738 -248 -878 -10 148 870 450 -696 948 -80 -304 -842 722],0
-[812 -383 834 -810 6 150 104 -945 -108 -729 -56 1000 -984 128 -250 476 588 520 -492 -347 -448 164 302 -733 545 -160 -982 452 360],6
-[-371 -3 -899 -613 -183 643 -203 -471 -415 295 -501 57 847 -819 -857 907 207 671 179 -529 475 657 271 -153 469 213 869],27
-[503 -705 -413 901 647 603 837 111 -465 -851 -269 -755 -391 -903 -647 -325 -943 83 -195 166 663 265 669 457 -191 641 919 733 571 45 -227 575 -679 -747],33
-[906 -766 -210 -790 -510 -62 -816 -988 414 896],0
-[889 -18 -414 -416 -958 882 -525 174 -523 262 -834 -264 -228 -241 -274 -878 770 -481 -172 -496 252 441 79 -24 148 -331 897 -571 619 -538 480 740 -655 -271 -894 -541 -819 180],15
-[-898 483 462 -518 165 -482 -428 -66 920 -158 976 656 -970 858 -86 594 -734 -608 568 964 -330 686 -886 -738 -944 -946 724 265 -914 516 -606 64 738 -88 -496 -458 566],3
-[-540 -424 380 -714 -800 288 234 732 386 628 -998 438 -708 -968 410 706 134 140 150 674 -106 243 518 272 -84 -766 -233 -989 -940 -696 -936 106 826 740 754 470 -582 -882 -78 -948 106 904 -892 130 -252 236],3
-[550 548 -104 691 -626 510 -540 431 -954 617 -776 -411 853 -34 -148 -20 259 130 -754 -764 -852 776 -836 -882 799 600 378 614 388 709 766 -499 -490],9
-[742 -237 -570 -52 -201 908 688 -869 789 -394],4
-[-204 55 485 276 -921 854 -429 242 32 -598 925 314 646 -864 317 731 474 -688 -406 217 -995],9
-[714 -174 -484 244 748 -964 782 138 -930 -861 -586 -962 419 -257 568 -516 254 -482 660 976 -312 106 -912 -872 -146 -182 246 -760 -538 398],3
-[-960 -336 198 -480 -844 663 -360 689 94 26 512 -359 344 736 888 384 602 924 792 -296 46 -478 -803 60 101 -102 292 -366 274 928 -610],5
-[-928 432 502 920 -856 942 -170 -682 824 -626 -798 373 478 354 -408 306 -130 -660 -384 -592 -694 20],1
-[188 -630 660 -200 738 -166 -38 -794 268 246 486 -590 6 -436 164 312 46 -788 -720 914],0
-[738 848 -376 -820 -436 -84 -952 -298 74 -784 -274 -484 -172 -120 906 672 989 -544 -982 -483 -824 -946 -44 948 286 -74 796 16 -878 516 -778 -436 -602 -918 676],2
-[-962 -677 579 61 542 -671 -415],5
-[-345 145 -379 -376 319 -903 751 614 497 193 666 595 -849 233 515 567 -296 558 495 -859 -523 -109 95 -232 305 -161 -449 15 445 716 159 1 -658 785 -37 43 883 -802 367 -422 533 929 -215 -683 -157],35
-[639 -647 80 397 -93 77 837 -234 -88 -808 347 161 535 -585 754 605 359 912],12
-[554 -853 939 800 305 888 991 -619 409 956 -793 223],8
-[-991 871 555 -767 -723],5
-[992 156 688 482 -508 92 -747 814 -64 152 -494 -244 -632 -150 -131 -370 -872 -2 -122 -600 -494 998 -938],2
-[160 422 158 -935 682 118 642 -936 -954 916 485 -180 -887 736 -940 740 -252 777 811 -594 99 20 222 -140 996 778 -589 673],8
-[679 -541 -899 162 -502 47 -681 -361 87 421 891 411 503 118 735 576 595 -430 -361 431 -22 86 -216 598 -664 -286 -84 18 333 -678 110 -175 123 217],19
-[-811 -695 -830 -953 -751 -455 -831 285],7
-[824 820 -190 -29 -391 -413 337 391 677 -594 615 341 -885 696 789 263 605 -972],12
-[830 746 245 -873 -956 452 -871 947 809 -309 -400 -971 -984 813 171 -868 970 872 -246 -36 -141 -562 981 -708 606 -189 -756 433 767 747 -368 356 -676 149],16
-[-604 320 -1000 -407],1
-[-638],0
-[-870 861 -540 80 6 -306 327 790 314 -484 292 602 768 -680 326 -206 -8 -982 40 -394 -796 -750 104 314 954 674 -98 -286 -378 -392],2
-[700 -984 -672 716 -821 -160 610 180 -280 -566 774 -516 -416 886],1
-[-931 -226 -323 115 -550 326 -138 240 -664 -811 996 135 -463 -58 -153 634 -558 -646 -192 94 -643 -995 457 285 196 86 741 579 -738 127 517 -161 -607 -685 495 359 -904 377 474],21
-[451 456 827 -99],3
-[-363 -93 -167 -365 965 414 -88 -801 -591 45 -113 -47 607],11
-[827 244 50 152 -215 -161 473 979 893 885 576 445 -596 -127 -394 298 189 -781 929 -320 -105 -86],13
-[-150 -615 718 -6 -316 857 -111 -69 -65 520 316 488 701 -957 -195 369 -253 96 517 -627 -679 763 975 851 911 -147 -623 -832 885 -545 879 -195 463 801 -128 -847 -348 5 478 980 -242 -575 -502 147 881 -749],31
-[644 -964 -350 620 -298 -7 593 -77 -410 581 -238 836 -884 -938 -766 -942 -132 352 904 -510 -384 642 186 -286 796 954 768 -900 -900 624 -620 288 -732 638 -636 10 -494],4
-[939 773 917 -459 -577 -99 -691 -742 -763 -35 -961 -141 200 333 7 -640 -173 -193 173 187 -55 -489 -487 -713 91],22
-[-467 479 -925 622 629 940 -763 127 731 166 624 -419 809 306 371 -866 -342 535 -744 251 936 523 -203 -919 -451 -594 -265 -757 215 -960 321],20
-[746 -852 607 487 80 378 -333 -969 587 509 707 561 -830 132 -213 -467 -161 -717],12
-[-901 -640 39 -921 -323 -511 -496 243 -705 904 951 -982 681 700 -484 -659 -473 -787 -815 -202 -665 -933 600 -68 784 -259 -626 -720 -191 311 -485 582 617 554],20
-[19],1
-[462 -252 -682 -562 325 -902 840 325 -466 532 583 -145 -395 890 772 -500 368 -54 -738 -676 -27],6
-[-466 286 -88 572 764 377 216 -424],1
-[510 923 391 -370 717 229 -644 -192],4
-[117 -625 -584 183 29 922 -518 -919 607 -587 -547 616 -783 30 183 135 -807 670 271 293 381 34 -986 797 -753 -844 -543 674 -893 755 -471 -275 661 -225 338 -312 505 21 -649 -211],28
-[-177 161 -977 -780 -895 918 854 -126 -150 576 -84 221 -691 -776 77],7
-[-296 928 -534 715 160 -316 -78 720 115 -882 -874 194 -840 384 793 414 -910 -974 -986 -106 574 -810 72],3
-[-778 151 -238 22 -632 -792 658 -646 821 514 238 -658 326 883 825 970 256 -684 -200 214 256 384 -38 620 -892 976 398 562 -358 108 -126],4
-[986 190 434 760 138 836 878 -398 -30 -416 -344 826 768 272 -684 -36 -756 -330 -669 652 750],1
-[-147 115 607 -519 733 -655 -507 107 -909 -405 79 219 421 655 -881 617 187 727 -889 -549 23],21
-[-859 -875 387 677 -827 -879 911 429 851 -921 541 129 993 885 -649 -303 -205 -307 -703 905 869 -917 489 -289 669 197 623 -509 -159 -399 13 947],32
-[-905 -991 -395 505 -319 363 685 799 653 -177 715 487 423 -591 -889 297 -931 -511 385 381 73 629 277 -57 249 157 -83 -729 -453 -901 951 131 -721 -517 369],35
-[-519 63 871 -347 319 579 -469 -671 275 437 89 283 -863 -131 -211 -635 -891 -227 -223 595 353 419 249 -185 741 241 561 917 -443 -805 663 529 -463 259 -283 133 -627 -175 801 971],40
-[973 -547 -347 -753 -275 -679 643 467 255 707 797 215 261 429 819 113 473 895 183 645 605 -849 -167 -887 -399 467 -639 -409 -687 -93 123],31
-[769 -935 385 -887 287 -773 447 751 695 17 -851 -709 353 -1 905 15 963 -743 275 225 629 677 231 -337 -27 -797 135 -399 -857 373 695 727 -959 965 -531 249 -585 -343 905 901],40
-[143 635 223 637 -203 871 -883 -903 -151 939 197 -625 405 -201 941 771 557 -67 -329 463],20
-[353 493 -595 359 -25 -679 659 -593 -853 171 -861 891 -957 407 447 39 353 577 945 419 -165 445 493 661 49 -541 -773 -355 99 417 743 -135 327 -45 -455 921 -921 -857],38
-[-425 -815 -883 -697 -563 -625 -583 -489 -555 739 -593 781 -167 935 -115 -5 -637 -417 -595],19
-[995 817 59 399 935 585 215 -23 807 -981],10
-[-359 283 -995 393 761 -403 781 -127 -223 -345 941 -845 117 385 -293],15
-[-215 -925 33 -825 -879 -155 129 879 781 -299 791],11
-[125 819 -805 191 291 -939 559 -309 -125 191 -155 341 -87 807 661 -555 539 -415 -105 843 -779 825 -481 853 -321 -655 -601 171 81 315 761 343 719 625 -271 557 -793 -389 -199 -759 -541],41
-[675 -629 919 961 309 -931 -553 115 -389 -175 411 617 -19 189 -959 293 -535 -939 651 651 645 -593 -935],23
-[-843 -559 -311 -883 -361 397 507 199 -197 -151 -33 485 -629 981 299 825 -733 771 769 161 15 723 -611 687 -881 605 -197 997 -441 603 501 -779 145],33
-[749 497 -341 787 799 -367 -629 5 -935 695 309 -289 -671 325 -125 -37 395 351 287 91 -261 409 -197 -681 379 -31 -173 -205 525 -873 -27 -381 -189 277 -597 -923 -659 -149 417],39
-[265 -597 363 551 221 -11 -657 -303 661 -255 -155 297 457 15 -811 -719 -749 197 575 873 -427 -113 -317 479 -593 -423 -783 -835],28
-[-843 909 113 -7 -903 -703 853 399 441 473 -453 -619 751 -683 -869 935 163 -337 665 289 -355 -429 -195 -799 739 759 465 117 333 355 695],31
-[-37 801 649 -31 43 61 327 -921 347 -947 605 -231 -85 -993 247 525 -763 839 123 453 -619 59 -145 -169 -937 351 331 691 373 -257 -709 561 -319 139 -567 -105 591 581 -435 -457 855 -81 -133 -259 459 -895 69 -947 -829],49
-[-433 801 303 -773 -203 -37 645 399 -429 -281 529 543 -951 413 69 973 -41 -187 -879 -239 867 -55 -473 -27 455 405 -373 119 -433 -511 -15 9 -799 -737 -217 875 -545 793 817 -515 -761 -989 -683 143 899 389 -343 -151 961],49
-[977 -299 -601 -363 -173 -77 -293 -675 -265 -449 475 303 -867 -161 231 -951 -377 997 -353 305 -35 -309 657 661],24
-[611 -705 -803 -261 143 137 -69 -549 -579 -985 989 297 493 57 -895 549],16
-[101 -119 979 -221 605 949 9 -621 -525 -545 -557 -645 -959 695 -665 171 655 183 733 523 -105 -999 217 -211 -405 -951 -647 -405 757 -615 989 -899 -559 151 837 -995 -651 853 637 455 -439],41
-[777 -389 857 -877 257 -247 255 567 -507],9
-[-27 -291 -609],3
-[-583 -303 725 255 -507 -235 711 -15 531 -231 661 559 -9 283 937 -211 47 -679 749 107 -719 831 601 487 -789 -833],26
-[361 567],2
-[985 -355 -557 -491 517 91 -971 -371 237 -909 -797 43 -241 207 459 -925 729],17
-[899 -155 -845 -257 -9 657 -143 999 585 263 -737 -7 -267 893 -375 -177 -295 205 -217 587 -719 -197 237 737 -245],25
-[-143 757 -679 -3 -271 -369 125 999 573 479 -83 131 307 813],14
-[945 871 835 275 -319 -329 -521 261 -983 -407 615 959 641 -657 -523 -517 857 -495 -29 587 591 131 501 -525 327 -867 207 -999 -601 -595 909 101 391 899 -307 337 505 -437 215],39
-[-561 -831 391 963 121 -613 3 319],8
-[-513 533 -245 -883 591 479],6
-[265 -685 777 -671 209 783 -129 17 -439 -549 555 -39 -409 741 433 275 -215 -785 701 295 569 369 -643 127 -773 -179 897 -861 -111],29
-[-75 377],2
-[-793 -463 -481 757 -141 -67 -629 -333 -411 699 -409 -365 509 -129 121 899 423 -381 -7 131 665 913 -319 149 995 475 883 175 371 -867 -591 367 167],33
-[-313 -425 -381 -317 -267 431 -269 371 635 -923 109 305 23 815 863 -17 867 -35 -271 -599 -755 703 85 425 563 -709],26
-[887 -813 341 47 -253 -55 297 -245 -379 741 41 -225 -533 187 473 263 735 -109 -415 607 935 -869 -525 319 963 423 -417 -481 537 995 451 169 -101 727 -523 443 187 -447 -137 175 791 705 657 539 -731 -415 595],47
-[131 895 913 -559 -25 -203 693 -177 -103],9
-[-375 559 917 -431 -987 -963 -843 -599 -91 -511 689 -657 271 889 615 -313 47],17
-[-353 127 287 -473 457 -147 919 -419 -65 -817 151 -479 -743 583],14
-[-347 863 349 257 547 -565 905 -483 -925 -277 -735 -897 991 935 909 -675 -331 879 409 -773 -965 -803 -263 -667 -389 -463 603 -641 253 -757 181 333],32
-[953 857 -305 883 -229 139 337 -287 137 -225 -377 751 927 -893 323 569 -249 -957 611 -273 -379 -221 -137 989 437 -771 -619 -305 153 99 883 633 -205 -65 865 129],36
-[-159 357 13 -345 925 255 23 -799 -477 345 651 955 -359 929 245 -509 591 -399 -649 -633 105 -157 -661 -661 443 667 -653 325 277 471 -97 539 -723 285 -331 689 229 -269 -503 859 -683 -549 -651 -117],44
-[69 195 -617 -479 -965 999 577 477 429 -991],10
-[947 -869 -509 641 -267 -495 -371 37 949 953 347 7 -195 -975 -965 67 -907 -685 723 -211 765 791 -609 843 -581 639 145 61 -445 -381 389 -839 -137 855 915 659 927 421 -231 231 -855 -87 533 -213 501],45
-[381 -577 -911 417 -861 89 563 791 127 -177 -919 135 -85 -891 -131 527 -51 -833 -163 -17 879 -189 225 -389 503 831 351 297 -313 773 865 519 -387 503 965 -835 957],37
-[883 311 -299 -343 -503 653 741 -81],8
-[367 -15 561 -327 569 -281 125 837 -545 539 -173 -277 -319 271 593 -95 -293 259 3 -567 -553 55 655],23
-[-287 -703 -543 119 433 -853 163 -495 -927 -237 -357 477 -613 351 595 573 -745 137 641 887 -299 573 735 481 171 711],26
-[489 149 797 165 -717 -47 -575 407 95 -653 -521 455 745 -335 -619 51 -203 -389 681 -739 673 -173 71 57 -233 191 687 -407 -669 331 -781 -267 -355 -131 -69 477 15 669],38
-[-907 891 -667 -703 643 867 65 -539 987 809 511 717 -699 981 -239 269 357 317 151 813 287 -587 409 101 -825 425 -701 317 -937 -85 -791 59 -739 -103 515 -729 333 561 -599 283 149 -553 -685],43
-[17 53 -561 501 -13 -889 193 453 -471 889 39 567 -121 -305 -559 -311 245 -801 393 249 -29 801 -165 -563 -465],25
-[-49 351 47 345 -223 833 367],7
-[-347 307 159 575 569 659 -831 701 -169 83 181 -5 953 -339 -983 -283 703 -517],18
-[431 521 -379 541 -907 -655 921 463 -11 687 147 469 329 849 657 -249 729 415],18
-[-453 -565 253 -359 -831 -25 -297 -797 -531 -275 835 -95 -861 -399 623 37 621 -455 671 229 -509 555 -263 401 177 275 -637],27
-[-523 -19],2
-[-859 327 613 -809 -499 901 -335 -885 621 139 285 -25 215 -357 -331 849 -273 -535 437 645 -907 271 533 249 447 585 -401 -875 -231 -485 899 -255],32
-[97 119 -339 821 599 -501 -567 289 -615 105 -891 -695 -981 643 685 -577 1 433 -835 -335 -275 -179 -305 583 303 649 -203 691 975 833 -839 927 -157 -937 -395 183 -25 379 365 -31 -931 -595 277],43
-[183 739 -29 643 671 -237 371 -431 -281 -231 97 801 -151 75],14
-[-173 873 -97 -95 967 -227 823 717 157 -775 73 433 -963 213 969 971 201 -807 -177 -257],20
-[-427 -27 -553 -925],4
-[833 901 -669 -427 -499 65 699 227 -439 -579 -527 -711 -481 333 -709 605 -941 -337 -433 -433 557 -659 -89 -57 -667 -399 -133 -623 -595 241 445 -265 115 243 921 -933 567 719],38
-[715 -849 -941 -613 -317 529 41 867 879 79 -895 281 -561 165 -635 707 101 -565 -793],19
-[-519 -331 -241 -763 961 -483 699 335 687 129 -597 -79 -27 33 453 -199 -731 -787 591 -59 -85 17 -619 441 -977 -331 -103 -105 37 655 51 619 -905 -837 -495 631 -457 459 687 13 575 -93 -837 -349],44
-[795 -359 -485 641 397 -867 227 417 877 251 -907 -167 539 67 -833 1 521 201 -975 -889 -253 -473 -541 855 -127],25
-[529 -649],2
-[131 751 -101 31 341 401 -29 -147 813 -181 647 -285 831 -391 -497 921],16
-[585 463 863 -663 -775],5
-[283 -741 -459 725 215 -725 597 -543 999 -951 181 579],12
-[311 185 -135 581 367 -105 477 861 -75 567 -229 39 -619 465 -89 -605 207 335 181 -517 185 477 827 -845 317 249 521 289 -889 795 583 255 -333],33
-[-25 -673 -741 513 43 275 -317 -931 599 -985 -797 961 -395 491 119 -639 313 921 -671 -593 363 -429 571 783 219 -441 -551 597 -931 -257 669 -303 -841 -291 721 431 747 233 431 -185 -701 659 -205 141 -347 831 -893 -587 209 887],50
-[185 -179 -109 605 -993 -371 -9],7
-[221 447 505 -931 -191 -173 921 -645 -961 7 -613 -437 -155 489 -455],15
-[445 -313 -289 491 837 355 -455 -125 189 189 931 -957 731 -177 497 -261 -541 -509 449 309 545 -595 945 11 939 -929 -987 -991 927 -813 -663 -597 -145 75 705 -837 -27 -573 983 -631 -563 137 759 169 -333 -795 5],47
-[733 703 387 187 -681 -859 697 -697 973 -425 -583 -931 -153 361 799 139 -343 -725 -241 -719 759 -861 413 -33 -341 291 -339 739 -943 -167 -87 299 765 -109 971 -143 229 -91 -447 729 497 635 -907 419 821 947 -975 407 667],49
-[619 -907 569 -919 -403 -615 321 361 -949 269 -517 635 -399 669 889 395 199 799 -545 43 445 -599 -411 453 21 -487 -855 621 567 405 145 421 913 -893 193 -283 -449 807 -429 -261],40
-[-201 -1 55 477 269 -783 -971 97 -817 -59 483 -339 111 53 627 359 -115 -649 -891 557 195 -733 -79 733 41 631 195 731 577],29
-[-845 555 -491 863 -205 779 147 157 -437 161 -47 -217 863 715 835 -219 369 803 -641 179 913 473 195],23
-[-645 665 563 791 -651 279 577 -823 475],9
-[663 513 247 -503 917 181 -553 95 -627 -111 837 959 871 759 -657 631 857 433 -369 -477 547 -187 143 -465 977 687 -945 -903 -265 345 -191 -569 261 681 -171 -831 429 55 -311 985 -553 81 -109 -217 771 -701 153 -435],48
-[591 915 517 -319 221 81 -577 -825 -491 277 -829 -397 -473],13
-[-921 535 27 -243 419 -235 739 -311 93 739 647 29 661 -227 359 -877 -423 -709 431 -239 163 -691 -679 591 -731 827 -457 -221 533 715 37 -843 539 -941 -601 149 507 943 439],39
-[-295 881 75 861 -99 -339 521 -385 -103 569 -423 115 -293],13
-[783 121 837 393 541 -657 -13 -259 655 -283 767 -153 379 -263 995 839 -109 -839 527 301 -205 151 -815 -811 659 793 965 -923 -189 -701 -883 487 -293 903 657 235 -969],37
-[867 261 907 -199 461 -965 165 313 789 -375 -805 -483 -473 925 -847 119 41 711 597 -811 817 -41 -321 -231 417 233 -611 931 -885 191],30
-[-565 671 445 -57 -555 925 829 -1 849 351 -305 157 -357 117 -729 -317 55 -595 269 877 -823 -695 -573 553 335 -939 139 -769 121 839 -587 -373 53 453 -507 239 709 -483 891],39
-[-383 55 -589 -15 709 423 -423 -49 -773 577 -257 -493],12
-[477 -517 -709 471 289 -565 -895 191 431 -835 -675 667 -413 -789 -917 913 -163 91 197 -197 -241 57 -733 573 -475 -577 -309 -943 119 -857 -379 -489 -405 -219 449 -421 141 -945 -587 743 -445 -479 -745 -435 -229 -133],46
-[-205 -239 -353 -489 -451 727 -493 159 -209 -449 847 435 -999 -369 -987 553 307 103 -797 937 -289 289 695 785 281 -61 963 403 191 -137 -531 -985 -217 -611 937 883 -275 -531 -567 -819 -531 -829 37 765 -287 359 133 327 -115],49
-[799 -277 567 -847 -629 997 -963 -551 473 -417 1 -637 -927],13
-[-267 859 -785 321 261 589 183 349 971 -929 643 279 -331 325 815 -137 -711],17
-[135 307 -765 947 889],5
-[459 -577 301 -849 437 729 967 -359 -49 -339],10
-[-569 135 989 -901 -291 289 -577 -159 -961 -509 63 811 -345 133 -87 -187 -839 747 371 813 -313 109 -471 817 229],25
-[881 -335 -403 -969 517 303 971 -201 -853 -65 653 -901 463 299 -801 -721 -477],17
-[875 -81 523 -545 -569 471 -965 -631 315 831 -381 617 233 -233 999 -203 523 -217 -527 159 881 707 507],23
-[463 251 -961 613 699 25 -419 -493 -327 167 385 957 -469 -429 623 525 855 -125 -447 -177 -781 643],22
-[-343 203 603 73 -633 303 -823 153 733 467],10
-[8 -366 -674 -414 -758 -766 248 222 -952 362 892 -446 -952 344 -638 -702 -818],0
-[-904 -480 810 -224 354 404 -310 4 146 -714 486 532 506 348 -416 -294 680 -236 -522 90 -314 -608 -758 374 -90 -702 418],0
-[724 68 -562 -856 634 -764 -392 -804 -444 246 -334 -292 -44 -864 566 -542 886 608 -874 -210 -62 -588 -8 504 336 408 -422 428 220 -38 970 -606 808 -400 170 526 -654 -716 -610 -218 470 842 280 -606 904],0
-[-814 746 -764 -500 -388 274 -14],0
-[56 944 264 388 -958 -152 -218 -890 320 202 82 916 -362 -114 -772 -832 404 -124 -844 -672 -86 -650 390 444 -590 644 518 656 -188 62 786 -684 -96 -642 -758 -220 -694 -300 664 -812 494 -632 642 -612 -892 484 138],0
-[-400 -996 -700 -812 -154 -94 710 858 288 330 394 -956 -168 -740 -104 960 420 -396 28 444 -668 324 -562],0
-[408 58 448 -2 818 36 688 -674 -794 658 -116 430 -944 656 636 262 754 156 808 -456 808 556 -570 516 -66 -194 -978 776 682 540 936 364 -906 820 304],0
-[-554],0
-[-242 -476 -558 -398 942 300 -462 434 -8 432 -412 172 638 806 740 836 -172 -978 -650 -536 202 54 230 586 -42 414 984 -114 676 -64 -640 -292],0
-[-358 -136 -686 966 -944 -246 534 962 468 1000 -730 612 742 604 -590 -32 290 -352 310 -198 972 840 -790 -426 -282 -370 -470 -292 -394 -150 838 -628 668 -638 176],0
-[814 62],0
-[752 766 346 -610 556 -578 -978 -180 -654 -516 266 -638 720 666 -446 800 -848 -156 522 532 -900 -596 196 -354 -130 -656 -324 50 314 396 556 704 -404 -772 -556 530 -126 394 -680 318 -50],0
-[-344 -568 816 -434 746 -740 -778 552 338 -760 70 -614 -262 -166 430 564 -376 -294 -514 274 -468 -588 -126 68 690 -276 910 -538 -886 174 -758 114 142 -692 768 318 190 204],0
-[-78 -204 -784 -948 44 120 -772 918 536 530 -18 -864 472 378 164 -624 842 696 406 280 860 -124 882 -970 848 -154 -888 -370 -248 644 462 -372 974 940 -148 748 22],0
-[588 608],0
-[700 -488 86 -854 -742 790 -2 192 -978 128 -770 916 576 334 -312 -80 -262 -80 12 -834 652 -182 378 594 536 -968 948 198 988 -478 -980 244 38 748 222 994 228 450 -986 906],0
-[984 -200 -572 -732 870 -604],0
-[388 632 -202 -906 -376 734 686 -222 -40 58 498 92 -358 -768 -138 -684 -234 -742 -154 682 774 -234 -810 -982 990 -62 -902 96 -90 186 -934 490 -940 416 478 260 976 -870],0
-[-950 -268 628 882 -448 522 -690],0
-[468 562 240 -280 640 958 -818 950 428 44 -416 594 -662 266 -874 -816 874 -608 -898 -786 -136 54 128 856 -10 442 -280 -166 -596 702 622 -410 -144 -666 906 66 -638 846 550 -412 164 -800 76 246 300 -660 800],0
-[-952 646 -570 764 974 548 -270 616 122],0
-[114 -654 -630 804 -626 -128 -562 156 -772 -506 -858 -110 792 626 210 158],0
-[616 -832 224 -944 -822 236 576 -18 -990 266 -824 -56 258 -506 206 -656 562 706 850 100 64 564 -574 -666 496 -826 606 -870],0
-[244 -518 902 -806 -108 -598 826 262 -660 -478 -792 -234 -494 -564 74 810],0
-[-310 -644 -916 -986 -938 830 762 -732 -124 560 584 -866 952 850 332 -608 -926 764 58 -536],0
-[650 -780 -1000 -858 952 198 -162 -256 -794 -574 -26 666 -8 -864 -512 420 796 72 870 654 -742 714 -980 118 420 -860 438 676 398 -118 426 -958 252 -674 -928 -556 -908 -792 -248 638],0
-[-650 -184 -800 -566 168 230 802 -920 -700 366 -734 212 -490 -62 -964 -964 -574 342 -274 298 390 776 -290 208 -824 704 894 154 604 544 992 634 208 -686 214 -684 242 -928 916 -714 480 612 -16 -126 -142 710 954 -316],0
-[100 270],0
-[934 106 770 -286 218 -254 -400 850 -694 546 -962],0
-[-774 278 -198 -278 -96 660 720 620 850 80 -134 -192 -658 126 -616 204 -384 626 910],0
-[230 282 728 168 136 -76 -644 674 -298 506 -968 -32 930 -572 704 596 308 456],0
-[772 -628 92 -890 710 306 470 -614 -910 360 808 -722 18 918 -662 564 422 -882 728 514 -544 -12 -764 -242 -712 -816 -62 24 304 -508 58 -714 710 -306 290 330 890 722 -4 28 -642 -100 -200 678 -86],0
-[66 -960 368 204 390 588 822 -6 -880 916 444 200 -296 -624 652 -128 86 -660 94 -784 -20 -740 -786 928 918 464 -326 -20 -702 -210 -864 -18],0
-[234 -6 382 46 226],0
-[586 362 -590 902],0
-[928 -602 -452 -952 -80 46 54 58 -414 762 676 -48 -790 242 -146],0
-[476 850 -504 -890 -556 -12 -948 656 -756 904 -834 220 202 0 -872 34 482 196 522 220 -670 658 -130],0
-[-560 778 362 -742 -848 452 -666 -986 -570 216 -286 -562 -300 -686 -112 182 494 82 782 594 -128 906 968 592 -654 710 -212 -674 -592 -932],0
-[752 602 576 -128 556 -940 394 202 -906 -638 -936 632 -132],0
-[710],0
-[-236 -386 334 698 -998 190 -456 58 -100 908 -408 342 -1000 836 732 -704 678 -418 966 -960 -728 26 334],0
-[-84 -1000 696 -132 224 -224 -950 -884 -290 604 944 -870 -274 -572 668 -182 -60 -548 546 616 -862 -50 -448 534 -260 116 -1000 308 618 -234 354 -946 -232 536 796 280 -806 -122 988 712 -364 -470 102 -794 -606 78],0
-[-862 734 632 -500 -146 156 124 -272 -106 982 22 848 544 200 706 184 744 760 -904 -824 860 788 736 -714 -626 870 4 -684 444 -948 752 -328 -214 -294 778 -986 -16 268 -334 508 172],0
-[-932 996 -134 -640 -354 804 480 704 -954 -910 892 -438 996 -30 686 586 -794 -938 -818 520 -416 424 -322 148 -164 -668],0
-[-304 954 290 628 -550 -464 -680 -704 112 -802 826 96 952 864 -550 674],0
-[194 -282 976 980 136 -318 410 -106 974 -888 10 -886 146 688 282 730 562 -748 -294 344 922 -140 -218 -222 -492 678 -864 -452 342 550 -154 348 460 -786 26 -820],0
-[-372 -792 -98 -848],0
-[-378 -386 -434 -828 -606 -280 -272 74],0
-[-872 786 -438 568 -162 -428 224 -252 -776 284 434 410 -642 -856 -92 -502 -162 800 -750 -790 -572 544 82 -504 668 886 -654 954 476 186 298 432 -756 534 734],0
-[-580 570 432 -190 6 -416 262 -844 428 78 -122 -994],0
-[-6 540 90 -846 -574 906 492 -192 -462 462 630 -926 218 -706 -742 -600 168 680 -628 940 -322 262 -966 996 66 -764 -288 -70 694 878 -354 -472 -612 366 -552 72 -408],0
-[178 792 780 -252 480 -728 792 -24 770 -174 -692 -36 366 -310 50 530 764 -340 114 -424 676 374 -254 776 664 -666 -860 56 -604 -842 -840 532 -486 838 348 912 -924 -154 708 752 -32 -590 568 320 332],0
-[-788 -384 -980 30 -530 -628 -880 -940 450 72 580 96 -36 -378 242 492 110 898 -22 796 -252 80 476 -758 -96 -892 382 -20 808 -546 126 -958 -652 586 -104 116 -802 746 710 686 -688 -72],0
-[-506 982 86 -754 232 156 358 -300 822 912 304 -90 42 -544 -206 972 -568 -780 -894 314 408 -944 612 782 -428 -240 108 796 752 -608 -304 236 -958 -336 -516 -676 968 888 112 826 348],0
-[-122 884 778 -56 -548 40 320 60 -664 -78 26 476 130 -808 894 598 856 -496 -242 -446 -880 -692 -852 -278 -10 -784 748 990 220 -308 -422 328 -52 664 -392 -210 508 382 438 264 -1000],0
-[-434 376 170 -860 -450 648 -710 -720 212 -140 614],0
-[704 682 326 -308 448 764 -286 -18 614 -606 -58 492 -936 240 918 -152 -98 -18 -972 -8 -758 -860 -364 974 262 -524 -246 -946 354 -612 -402 912 -110 -818 222 -606 -658 224 352 828 -206 746 476 -138 122 524 -490 -930 426 170],0
-[-760 -704 -32],0
-[-372 -508 886 -326 -124 -90 46 -490 -222 -982 -934 -764 14 -940 -704 474 124 -934 862 342 -138 -56 -176 -730 892 -442 -588 -886 86 -872 -148 530 -364 930 284 902 740 -16 -946 112 -354 696 944 612 -860],0
-[614 -574 -138 900 682 498 902 -356 -758 -254 450 744 118 618 142 -14 312],0
-[-862],0
-[-126 -138 12 44 -594 130 -656 898 -836 506 -914 836 432 -50 -798 930 430 -88 -880 832 704 -864 -272 94 -64 -116 342 -84 -768 642 -222 -478 -900 -952 -248 726 -688 -446 582 -982 796 252 -330 -180 -22 -144 380 -580 -590],0
-[-670 -396 -244 -720 662 -364 680 -640 -248 -380 812 944 -402 -112],0
-[648 194 88 -1000 -834 -680 -540 276 -562 440 922 -830 392 -16 910 -994 -866 -138 -210 -768 800 926 834 -810 148 -312 402 -652 -822 452 924 790 48 -468 968 -814 194 -452 560 -868],0
-[854 392 -100 -352 496 464 -484 -934 964 716 72 292 826 742 -604 -106 520 46 52 -76 32 -700 94 744 -526 -188 952 482 -116 548 976 -280 -778 -148 432 -878 170 -660 -946 -668 -672 254 -200 730 -818 -716 -816 178],0
-[-778 -352 962 998 -802 36 -230 552 494 530 602 784 676 396 -800 -268 826 -112 306 -208 -532 -300 -166 -626 900 -154 920 668 868 706 -950 802 904 -236 -62 -582 -496],0
-[292 560 -820 -792 -860 308 -422 994 -760 -530 -804 -262 808 -76 314 338 246 -830 156 870 -248 -508 -570 462 -308 -798 988 -626 -226 -258 134 -728 -10 -784 -978 558 936 -34 898 748 518 186 264 -930 -258 444 -494 888],0
-[472 -862 438 966 104 -186 628 -6 -786 540 722 -666 398 -318 528 306 864 -900 376 322 -366 196 804 -476 -66],0
-[540 210 296 -950 -18 890 118 -316 -644 -282 -414 -746 288 500 -230 -846 -786 -312 -882 506 452 624 -568 -808 -196 442 242 -998 708 -24 -74 662],0
-[-932 -636 -952 248 718 978 -114 526 774 110 -412 -104 -690 -512 792 -878 -320 -730 -438 -744 452 -286 -188 434],0
-[390 -726 38 700 834 -772 -648 -36 -542 -458 -508 -724 464 -436 832 450 352 104 -258 442 286 -212 302 -246 182 -604 584 580 46 414 280 928 -876 -598 -462 -144 -812 254],0
-[442 12 -420 -134 768 406 -40 -258 826 -870 -886 -278 -770 -612 734 -380 762 -466 -338 156 164 -610 -428 -860 962 -718 -806 -280 -590 724 478 468 -502 -662 420 780 894 926 114],0
-[4 530 224 -598 -564 102 988 386 -594 584 -50 -54 -806 -300 -48 810 -340 260 458 -260 432 -6 -782 726 -846 824 474 -286 378 -712 264 -530 -374 -42 108 -146 378 92 882 -248 -316 -686 -460],0
-[-90 -112 298 602 222 -814 376 -682 -976 820 -214 -482 -838 680 692 -672 10 -956 -738 -52 -912],0
-[46],0
-[828 -202 730 -318 -986 38 -32 -174 110],0
-[-918 -946 286 -312 860 446 -696 -746 710 998 822 276 -38 -882 612 162 -358 -296 -228 338 -302 -168 -386 -646 536],0
-[-604 954 -474 -294 698 -110 -658 218 918 -70 930 -926 -456 392 964 -900 940 -388 -170 -298 482 18 -830 126 432 360 832 -870 -396 -190 680 -952 -858 942 54 766 676],0
-[980 24 876 912 818 -770 -644 722 -522 768 892 466 -822 456 -424 -32 -170 -224 -86 918 -614 808 98 994 -960 -12 686],0
-[-806 176 562 666 -830 -684 724 98 -56 976 264 -122 -596 -116 -662 724 -504 -894 120 70 988 -428 324 718 -18 -668 -636 730 298 -260 80 -662 38 -176 -834 -376 8 834 -578 454 -50 -238 432 -744],0
-[-700 608 -170 592 428 328 350 666 724],0
-[-642 -962 428 -390 -80 -646 -626 732 868 312 -824 -562 -602 68 -804 200],0
-[-664 86 288 930 942 -476 212 774 -114 496 780 626 776 624 744 608 -816 -276 394 -250 -154 -528 -846 290 528 290 36 -960 -682 728 206 384 746 922 -246 -420 414 78 222 346 702 -860 -728 178 -572],0
-[-72 -910 728 -282 808 -288 -522 830 -244 -32 -732 170 -356 -422 -404 -152 820 -750 -162 -184 -56 610 -1000 966 -536 -618 524 954 -570 132 -84 -982],0
-[-634 -848 916 124 -980 104 -972 -264 -252 -798 -656 -680 -542 -462 920 -352 -602 758 302 -614 -96 -358 -996 -828 438 38 4 510 -326 -118 776 234 -890 184 76 -714 -872 28 -664 278 162 -122 306 360 420 -548 202 -992],0
-[674 72 -828 186 990 -76 -762 -108 -186 728 64],0
-[-344 -214 168 -970 16 986 -296 368 -734 396 -618 -266 -76 -902 920 744 308 484 508],0
-[-996 918 222 -102 88 -540 318 -722 692 700 384 26],0
-[-328 390 -544 142 -884 950 420 726 -606],0
-[290 86 554 -22 256 886 974 -892 284 -150 396 -814 -486 -550 906 64 750 -840 -218 828 516 -812 -980 834 336 -922 -876 572 -700 738 -468 -930 -80],0
-[952 16 -38 272 238 -46 -984 -796 794 656 666 -18 314 -570 -218 126 -512 680 -884 876 812 -266 494 -456 -26 186 282 -664 -828 74 -620 408 36 276],0
-[788 478 534 -194 -170 -750 -494 960 48 -124 -296 -654 -132 -916 310],0
-[-206 1000 730 734 556 864 842 -372 932 -874 364 812 -846 -122 400 436],0
-[-124 -350 686 -178 574 374 720 14 140 -12 12 -176 -52 476 420 -374 -776 -52 348 738 -892 -572 -320 654 732 488 -20 792],0
-[154 842 104 -324 918 -764 -298 12 -602 -606 872 -514 -192 842 -316 154 858],0
-[-592 986 790 -712 628 -610 884 14 456 -796 -38 756 178 -638 -880 370 810 -140 -710 892 832 -632 598 -630 558 -478 -576 662 312 -24 -508 -376 948 -910 -742 -630 -382 -482 -560 -768 -200 -96 -756 818 918 -100 -796 228 300],0
-[158 906 -450 -852 -270 -586 -998 -158 -26 60 260 422 -456 706 250 648 -830 -180 -186],0
-[422 742 338 192 272 792 -788 834 -44 60 954 564 -24 -154 -662 902 704 920 394 380 -264],0
-[334 -100 674 438 466 706 610 -534 -114 342 448 -340 -882 -854 292 -360 -178 728 696 564 -584 264 684 -86 -764 -746 -968 -646 726 -558 -486 506 500 728 500 -928 836 556 -472 888 -640 -78 -350 -668 -974 292 -24],0
-[408 68 -830 -788 120 -76 -722 60 -292 398 -508 284 -180 612 -88 -544 -122 978 804 -36 166 968 522 -718 300 -970 -662 574 -828],0
-[-502 -702 -134 -44 62 102 -20 -774 -460 660 495 -335 -696 -331 852 977 647 -704 -958 798 821 -292 584],6
-[795 61 -897 395 -765 539 -223 -335 11 -367 -83 -125],12
-[-217 -92 -861 631 35 692],4
-[-544 -56 -752 -308 184 383 -514 364],1
-[-274 424 910 -906 -884 986 -94 -106 988 518 -46 526 -208 384 -686 616 408 696 -612 834 -212 210 -344 -942 -906 -230 938 978 366 -32 240 -382 324 458 420 -438 -122 -210 -230 52 892 22 788 222 -380 108 928 -872 148 -858],0
-[-694 702 331 853 -979 -693 -946 -657 674 351 -407 759 646 725 88 932 659 -633],11
-[502 272 980 -866 544 922 -548 -198 -134 -234 614 -285 778 -708 -386 -426 530 -838 -582 -596 -482 260 -500 -156 -482 310 -444 852 -882],1
-[514 -444 366 -2 -704 230 944 728 -652 110],0
-[843 551 149 -549 561 73 -163 -547 -363 36 -276 249 317 -412 -885 -427 -725 -147 -881 -363 -797 -800 173 281 439 19 927 -92 595 935 -255 -769],27
-[-521 -459 867 -319 -20 857 -934 925 -380 -667 841 -194 -219 962 -971 5 627 501 175 -833 818 -917 -59 -535 -741 -847 -957 827 -761],23
-[-562 678 -254 360 658 -433 188 328 430 -51 48 849 8 -480],3
-[204 -311 404 975 -515 -547 661 571 -149 289 125 -330 525 235 387 -93 -737 961],15
-[157 848 -823 515 -401 -322 499 539 -351 735 -103 -474 763 -826 728 -355 -664 783 753 -789 901 -7 -461 461 385 469 -21 -495 35],23
-[-489 -686 -731 -957 -692 273 715 420 866 289 -169 630 928 -251 548 -457 -111 346 -336 17],11
-[-400 514 -594 684 -198 623 341 624 -288 772 -985 -562 808 946 -233 258 709 -719 -629 -667 615 173 -850 332 222 -436 -406 567],11
-[-915 -259 -29 744 226 -298 45 335 -453 -987 158 881 462 -510 -479 837 -514 191 -24 -200 -930 998 -298 -763 -341 -924 -16 113 -258 -813 -899 537 597 169 225 702],20
-[-892 242 -336 -976 -76 319 -98 88 142 -514 -588 -658 277 252 -330 969 -843 -908 -637 91 834 230 648 260 368 719],7
-[619 -752 394 -726 -466 836 -310 783 87 -63 274 508 144 -596 728 116 79 832 -391 -261 -76 -752],7
-[215 707 751 -275 -326 264 213 -367 -735 -375 -288 955 809 511 172 -331 321 57 61 879 -463 -557 -291 343 -873 421 -935 -267 -79 919 400 367 779 523 713 673 -409 -599 832 907 966 453 -923 -502 843],37
-[809 -277 -563 -542 41 251 -355 -31 727 -139 -181 -123 -411 -779 -27 773 -157 -49 -329 -931 -723 40 -889 829 113 -857 351 -921 693 -327 -269 -551 859 -511 477 -341 333 55 777 843 749 175],40
-[-46 -432 -609 -53 -51 942 512 -696 17 306 693 470 27 613 381 -903 -936 -545 959 -33 -653 -647 -883 -279 282 -288 985 -133 43 814 -499 552 775 879 529],23
-[-297 965 663 -75 -675 190 148 979 -519 -699 949 643 513 -853 679 -479 555 -661 -437 -906 -500 -602 569 445 -618 -139 -240 911 135 -997 -474 823 859 -829 452 -20 873 -709 -987 -158 306 -403 -566 -79 -172 -284 494 885 392 937],33
-[106 -144 -330 -337 643 321 -882 804 249],4
-[-227 -691 -963 -719],4
-[427 883 -691 -774 -452 759 177 -943 -361],7
-[727 -237 247 -191 723 555 -447 -701 809 173],10
-[-759 667 -683 -435 -368 35 -149 203 965 49 -947 -909 -756 -909],12
-[-533 509 -369 429 -13 253 195 577 575 -227 661 841 571 975 -547 -965 -961 -937 -759 -189 305 -943],22
-[-428 -180 100 -872 -364 -252 8 -226 800 -662 360 458 598 -650 800 194 -826 696],0
-[618 941 -142 810 -462 65 -470 513 611 -184 -237 -176 -281 383 57 -361 -110 484 -395 -924 -941 874 880 444 552 405 -475 -820 315 -103 889 -903 352 -261 -251 -302 194 757 -848 -205 -594 48 395 -863 -897 -715 331 116],26
-[-401 -867 839 738 109 582 -737 755 -879 -821 -29 688 -783 -631 -873 923],13
-[325 -196 307],2
-[-368 51 585 948 -577 521 -184 -551 553 -680 24 584 880 847 -877 877 414 706 -272 661 134 -631 866 -602],11
-[69 878 955 541 699 -773 -213 -517 747 789],9
-[905 309 221 -511 845 -143 -711 -191 528 -947 -658 -905 123 851 507 -697 607 220 -293 -78 -355 477 -517 -378 -989 -124 37 573 861 543 -323 -121 678 -357 437 -155 828 -627 363 -257],32
-[54 -720 -298 636 81 390 943 -919 41 425 -509 303 942 -137 157 -687 671 -760 -179 -681 -517 -615 224 -64 -527 631 976 959 167 812 53 -592 -398],20
-[-241 683 -223 897 403 -123 -63 498 161 545 -702 -63 -127 143 970 -437 338],13
-[-155 577 -946 7 -95 -736 773 -737 533 381 475 -409 -871 312 715 374 -288 752 -625 107 79 -911 -217 797 -809 449 -929 819 -326 944 394 -773 -518 -323 90 342 -109 -149 -717 -848 -209 654 -604 426 599 -238 -47],30
-[-199 -74 -935 -557 -309 -149 399 23 561 -977 -175 265 846 -845 793 775 263 421 913 691 925 -673 923 -989 -817 629],24
-[270 628 134 -272 936 872 786 -896 526 184 -270 369 -462 -485 49 546 -32 890 192 -892 -388 -899 -596 -899 -152 -120 98 444 583 -334 -879 -310],7
-[708 -972 -160 540 744 928 -778 -845 -570 -606 196 -316 -420 -56 -222 -554 -190 815 -216 944 -360 706 -442 170 -590 -755 -934 -868 -136 374],3
-[742 -452 468 937 -432 -671 -670 428 348 -182 622 896 676 -719 473 -170 353 -47 444 -996 586 -620 -578 -965 -378 -856 874 -187],8
-[-313 157 -832],2
-[360 -80 381 836 -855 -255 -579 -501 863 -87],7
-[-378 -940 495 -814 -982 -786 992 -667 -856 398 -86 592 -770 -702 762 -530 128 -612 -218 -902 296 85 -936 368 -72 -744 -29 548 -518 -398 -62 -850 228 -124 -858 -886 562 -996 818 -404 588 -464 800 446 -797 152 846 500],5
-[709 -378 -763 83 -215 303 644 -312 -142],5
-[-422 192 -533 -185 -404 -732 -806 -8 -406 818 474 164 700 972 167 269 -638 -324 -458 -488 -875 391 -72 154 162 -236 -166 406 576],6
-[-961 781 -985 -265 -745 -191 -512 -19 469 16 -884 97 -24 794 402 -373 -640 -729 -865 353 -169 -152 345 493 -30 -85 584 -958],17
-[690 -686 -779 44 194 -716 761 -134 -974 620 236 138 556 43 484 -740 -329 832 -616 -766 756 -887 -822 -280 810 -84 -382 -70 -484 764 -810 -449 -926 -693 -620 828 -242 -527 -102 -818 -202 454 -20 142 317 -188],9
-[-820 -280 -386 986 296 -272 245 -554 407 -296 918 950 442 -306 998 378 992 -698 -958 -2 606 -604 -130 806 -684 -295 -777 -434 856 -68 922 786 -398 -466 -148 498 -106 866 60 454 822 408 264],4
-[927 -929 757 755],4
-[-600 953 -285 -506 -208 611 741 522 734 233 -187 -472 979 624 119 148 -893 401 -490 -445 87 -8 -62 -513 268 298 -488 -511 -491 -363 783 -954 773 322 -554 -703 260 869 -924 -523 -656 -494 6 -408 775 371 227],24
-[186 -342 -220 -412 -378 -818 964 564 254 -282 194 -926 853 748 742 584 798 853 -847 -804 44 -948 856 968 -142 782 716 -6 426 833 472 384 948 -374 614 -492 -300 -174 -820 114],4
-[287 766 -487 613 617 291 17 287 58 374 33 -821],9
-[-562 -604 194 -167 -573 45 -982 917 -976 -683 -821 -202 -478 188 -442 -551 -76 -660 706 135 250 -42 -751 188 394 128 192 747 807 533 316 -783 -380 104 308 65 -680 -649 802 -155 -534 -43 371 -731 -737 -603 856 -711 975 916],23
-[-868],0
-[-717 637 -769 998 206 923 355 -293 -894 -117 728 -717 -614 -908 -228 -765 -519 653 233 -517 649 512 963 271 77 969 -331 -609 -910 392 856 -975 -990 -620 -702 507 142 -371 -442 -788 541 -261 446 364 191 -635 667 -981 -899],30
-[-791 715 -306 -457 -687 359 -643 498 49 -969 -631 83 13 -896 -33 299 -622 419 -789 -439 709],17
-[880 312 -794 671 951 849 -608 -434 -583 -67 797 -757 890 739 677 718 -578 568 279 242 174 -513 681],12
-[906 -180 196 -684 -28 -888 -972 118 -588 -694],0
-[783 392 -403 777 869],4
-[-230 978 -148 -48 -550 612 -968 -94 -496 -799 456 670 -664 -64 -216 602 -292 603 -664 -428 346 -296 -274 438 934 816 705 726 164 664 574 -896 122],3
-[-138 -741 -74 -123 803 442 817 -206 -82 -781 -148 -854 268 -247 -692 -776 -802 -671],7
-[-423 -244 914 234 253 -762 40 -320 872],2
-[-352 304 -6 242 830 -826 784 548 396 892 -82 526 -246 -796 478 -412 584 -848 36 896 100 0 518 386 -168 518 -286 110 466 -338 -714 546 -932 -232 626 -970 -146 476 -166 238 914 -358 -722 -876 -690 352 -134 -360 -608],0
-[233 -372 -854 865 322 399 -369 -787 337 664 -930 44 99 509 -21 -213 -425 935 277 -105 -897 807 -591 629 842 -628],18
-[917 -669 717 -136 -77 -487 -262 -19 873 -509 -541 75 835 -149 83 -865 173 853 -705 -989 -109 -437 -69 -112 393 -313 955 559 -905 -779 157 872 -885 453],30
-[-705 681 -903 591 590 322 725 -701 -705 -559 765 867 -57 -853 872 25 -277 124 251 645 -63 137 733 453 -239 -97 -943 -643 415 555 -771 -420 681 -561],29
-[83 300 773 580 -260 828 607 -611 -140 -357 -906 -42 789 -469 428 -324 -784 -24 578 -448 -228 -253 -70 140 -115 -757 240 704 -636 -921 510],11
-[515 627 -599 -393 705 -794 576 2 -401 -509 959 623 345 477 -79 257 33 -71 205 245 555 -275 -343 723 392 -327 45 -101 -569 641],26
-[-809 152 -475 -795 451 -401 432 299 -315 112 -389 -583 -621 939 -427 -80 -491 844 -199 -525 -263 -702 581 -85 453 22 908 -444 -93],20
-[-209 319],2
-[-442 -425 394 604 490 831 -370 175 -241 327 -159 403 320 -641 167 -936 -981 788 856 875 -82 -733 -162 27 -727 55 -5 -145 -824 38 -163 266 -813],19
-[-164 -120 832 -764 -619 -570 517 200 -648 644 934 -220 -138 842 -703 710 -754 885 432 446 -157 -962 -704 -663 -990 436 -594 -981 -594],7
-[-705 487 -737 -654 -743 924 -821 867 -860 -479 957 -784 -7 309 901],11
-[-646 -464 942 909 -386 918 -794 -872 -440 -242 764 338 -994 -232 -486 119 -131 -832 626 408 58],3
-[31 95 69 -321 -831 -811 -433 -351 285 -975 -929 149 -647 173 -359 643 171 894 413 -244 -991 177 -705 -649 801 -41 -919 421 -435 177 -445 343 -611 113 -463 817 -27 -969 251 -467 251 337 -509 77],42
-[-858 -875 939 -943 21 -23 -215 -172 -490 634 885 -841 674 823 -835 -681 856 -73 -365 -24 922 -21 995 -168 750 -567 268 -362 -636 -39 56 25 -831 -833],20
-[-196 -819 -944 -335 440 570 -345 455 631 -870 -6 -660 -911 970 510 -760 -760 140 833 -231 -905 120 848 394 242 -564 -779],10
-[559 775 705 431 87 631 943 -885 121 -639 -649 900 -569 615 461 -895 -765 137 935 933 -639 -277 -713 219 407 -747 421],26
-[88 -86 959 0 427 291 926 395 921 -60 -298 -913 484 -657 99 710 -351 -410 709 335 -233 400 -815 812],13
-[-299 -985 325 -11 621],5
-[-480 312 751 882 -223 672 -620 133 356 -371 -655 -510 -301 787 58 -13 889 -380 924 -321 -397 46 318 -881 -80 281 -196 320 -437 920 -788 -474 -341 -835 931 -379 603 465 95 850 448 824 113 -933 798 -999 -124 815 272],25
-[-190 66 -386 -2 686 263 72 -34 971 609 -654],3
-[-968 -276 -717 -539 140 866 280 988 -820 -120 -777 211 515 162 294 578 766 522 -465 456 135 986 -528 -992 898 -466 -125 770 912 794 950 326 -562 450 -157 -124 -390 938 -631],10
-[-743 756 -691 -400 642 -47 114 -636 -488 -37 502 -492 -872 -811 241 142 -70 126 352 112 -455 788 -463 -108 68 -812 940 98 -453],9
-[346 -274 656 -952 -370 34],0
-[2 -320 -1000 658 909 188 656 -76 152 -282 28 836 896 890 709 480 119 -904 -986 -710 794 -296 -768 625 970 150 240 266 919 149 -697 -566 904 284 -550 -513 -554],8
-[465 681 -815 695 -965 -269 -801 703 -775 -225 -57],11
-[-719 771 -357 -745 561 963 -261 201 -996 -965 -725 615 315 -639 -941 353 -9 777 172 -113 -97 121 -583 513 805 801 -511],25
-[-229 -868 -528 210 226 -933 448 -116 888 858 -620 158 228 351 -264 678 -919 456 508 -910 90 214 -640 866 -242 443 -792 880],5
-[-722 238 672 -412 -492 2 631 612 -786 988 348 -350 -246 -860 -676 502 419 386 285 520 -966 650 892 -188 644 -584 6 -844],3
-[305 -67 -911 575 175 -159 623 519 -835 617 713 -341 887 137 193 -562 139 -535 171 -531 -328 691 429],21
-[-158 756 332 -316 644 -236 265 314 -477 650 -572 -322 -286 424 -783 -714 172 400 816 -728 -24 949],4
-[355 912 -117 381 484 200 911 -190 -465 -642 -341 866 262 -934 571 -769 508 -361 903 -570 -169 202 808 723 578 -761 316 516 -913 697 338 -868 24],15
-[529 467 -201 801 -215 -874 -149 -343 673 -990 243 -67 560],10
-[-977 -382 150 -673 837 429 17 605 -427 823 -972 -861 -767 -323 79 986 -181 800 896 910 583 -474 -757 241 608 -967 -852 447 -432 977 875 209 -930 -386 847 421 701 -393 98 439 -286 -618 -686 368 186 175 708],27
-[-815 373 -297 877 -17 -356 -405 -593 355 -736 -695 247 627 -81 192 303 209 823 -963 -664 -761 91 -809 169],20
-[-898 -548 993 -994 -906 86 6],1
-[-345 215 609 549 -537 -463 860 207 -821 205 121 -393 213 -51 971 657 -462 773 394 -494 -852 -570 -199 -719 -211 -423 -163],21
-[0 417 -450 -567 -521 1000 -924 288 461],4
-[-610 355 12 744 -576 -310 -206 -980 835 372 503 -400 642 694 -732 288 -318 -451 721 -698 938 -728 60 698 626 636 178 -439 -452 410 606 926 78 160 -378 -521],7
-[596 140 83 900 0 882 -152 -286 816 -484 -489 -213 626 982 854 -949 424 -854 -50 394 33 528 669 -212 -698 -993 216 250 542 -392 -850 815 -918 -46 -914 -516 834 -980 871 -808 -173 -648 -770 390 741 -626 -482 -656 -217 -776],12
-[386 323 -333 642 928 -236 -732 846 1 -104 -518 -310 682 -580 767 155 117 -697 210 -308 -708 -852 560 -280 827 814 -866 -138 -976 734 618 610 115 313 516 962 -35],11
-[170 716 -818 910 901 -286 320 -852 936 -942 644 932 251 -148 -18 220 594 -260 290 -610 -806 -270],2
-[-376 202 877 654 510 440 614 128 -718 550 -140 -225 -533 932 386 586 830 -314 -728 -796],3
-[-734 -83 737 813 37 -113],5
-[-777 -437 -989 263 -941 383 166 115],7
-[665 -101],2
-[-413 -527 618 -981 437 838 -800 -265 523 -166 -93 570 -853 321 457 -145 113 -712 -884 171 -339 879 -355 692 921],17
-[835 506 650 -539 873],3
-[-335 953 -961 -35 255 327 50 374 -681 -895 -273 349 381],11
-[-195 578 447 227 283 811 -941 -651 -153 -969 945 -133 -51 297 -56 705 -711 -337 -857 -478 281 -103 -635 -349 -157 699 -818 -493 -290 -461 -529 837 -465 -757 -511 135 -291 -442],32
-[950 -987 766 118 -686 824 822 -385 -96 -482],2
-[-869 381 -416 -487 -771 643 -561 -342 -577 -994 -195 -628 441 463 651 -784 788 971 257 -254 -884 -651 920 386 -534 -700 47 -121 -180 372 771 116 -258 -263 730 -288 -222 514 -564 -384 -583 -822 -289 285 -808 229 -171 84 -865],24
-[662 336 664 68 84 137 100 423 -786],2
-[217 -915 495 -183 -111 -21 -67 725 177 112 583 829 -775 647 397 -591 -347 703 517 -859 -464 -339 -864 393 -235 761 275 215 825 -171 790 381 -945 245 845 -531 291 139 -401 -879 64 261 -217 60 524],38
-[-655 941 -921 802 806 191 -537 457 500 -892 809 685 270 -717 854 -723 -305 80 275 -240],12
-[-52 -266 980 -176 -143 -78 -934 -26 428 716 -493 -671 -3 -228 842 -623 -410 -639 -158 -254 534 180 -717 82 407 -910 680 -617 -407 -55 -685 -155 -516 -662 358 268 -978 -650],13
-[722 244 -624 -796 22 -646 -706 -216 212 938 397 -832 -804 180 558 604 -509 -246 -911 2],3
-[-528 -354 -532 42 380 24 442 -712 188 580 42 914 88 838 350 -928 -278 -627 -792 446 250 -230 -630 -110 236 332 -166 -688 -180 28 -846 -466 -963 30 -240 -412 -838 -374 -32 846 -160 -572],2
-[307 203 957 -457 684 -875 511 295 -169 735 879 945],11
-[7 466 219 302 -691 -69 -163 -417 834 534 -32 -93 987 45 -887 -603 -859 -125 150 283 647 835 -783 -403 -947 -456 653 927 -678],21
-[232 950 845 -412 84],1
-[-821 -555 400 936 55 399 -201 -465 -444 17 -681 -32 -362 -100 548 40 100],8
-[-137 -276 237 963 -771 -154 -227 109],6
-[898 -152 128 795 -935 552 807 -392 913 868 440 -87 -210 -953 -220 -792 748 200 -516 498 -940 338 -984 -822 -332 752 -187 833 -26 650 -170 -682 362 -262 774 -904 -806 650 -714 256 -796 462 470],8
-[-415 964 628 1000 -50 320 295 -599 -183 15],5
-[688 -147 -206 262 -156 14 -214 -586 272 393 -462 -46 -686 -740 -256 -22 268 380 -273 716 -459 -825 432 -394 612 438 948 260 -471 -234 110 -46 252 -287 662 -178 214 548 -569 825 -278 -656 -888 838 74 8 248 852 378],9
-[-445 -48 -150 -543 -912 -424 381 -139 364 792 -870 -512 430 825 -270 585 466 589 -204 -421 -924 -770 968 -583 -225 -608 -551 -794 240 -449],12
-[1000 114 -782 -772 951 162 -64 -922 -444 -928 -728 -437 -91 71 -178 678 -626 46 -481 282 -602 677 301 -572 696 -88 730 696 589 562 919 803 -751 -76 -438 352 -106 318 238 -76 59 -410 885 -902 87 672 335],15
-[-935 445 -637 -354 -619 681 289 -595 819 609 -17 -649 -891 -944 201 541 504 -210 51 -953 -651 -771 -278 90 773 -667 -664 22 -682 -797 -846 -146 -204 417 461],23
-[887 437 959 -23 401 396 -967 -755 -55 955 -421 -103 933 -867 43 -675 621 -672 287 -841 635 269 399 -989 -537 -471 -878 -173 265 801 716 -375 923 931 -369 701],32
-[225 683 -597 213 -993 -41 -403 -541 589 -801 699 -847 231 571 -529 777 -997 -459 939 677],20
-[240 -694 -271 -223 603 806 518 -874 -526 -806 -644 292 -406 690 -716 370 -452 -340 780 -676 -338],3
-[182 -428 573 -48 -368 -776 896 -338 996 781 601 -930 794 -826 -104 -554 95 -241 -534 142],5
-[828 -228 -408 -842 -216 716 -352 712 50 286 -524 108 48 772 336 -500 -800 810 118 394 -74 -418 -427 826 848 144 -466 330 -100 -850 -950],1
-[-492 782 126 -58 -38 944 102 876 756 800 60 -132 918 548 764 -900 286 62],0
-[846 46 -115 -545 -292 863 -18 39 899 876 977 472 817 -82 425 -844],8
-[677 -476 108 -374 267 -57 939 788 915 982 -408 3 -292 920 979 338 -391 154 -563 808 263 -370 770 -474 -773 -213 693 661 217 -246 -775 -902 906 490 -818 265 992 48 292 -622 597 591 296],19
-[301 -692 -19 -579 -519 709 -484 -338 -150 -197 25 613 -715 -667 -769 101 -259 -179 728 -167 753],16
-[258 -638 310 -772 -676 -622 226 562 -230 252 774 43],1
-[-442 867 -165 -537 -891 740 -299 883 197 -425 -202 548 -370 882 -7 -777 843 989 760 -241 790 596 219 -56 -399 635 -303 413 38 -92 542 30 710],18
-[81 -980 917 73 257 -743 -875 395 213 467 144 208 -71 -736 835 -905 -822],12
-[988 789 -223 -417 -319 -218 938 725 -374 139 -334 -564 883 213 489 -751 -63 -329 181 865 -156 534 -629 200 584 -582 -64 -309 -316 -996 -336 -246],16
-[-404 793 455 901 977 -383],5
-[-620 178 692 436],0
-[-287 433 109 721 -239 -953 119 -141 -937 -543 95 571],12
-[444 431 -125 569 -899 -344 207 309 42 -553 -176 389 539 -24 -689 18 -476 -461 -868 693 328 -768 143 -158 816 125 926 48 -340 -955],15
-[710 -511 -493 891 -303 603 320 115 -187 757 501 985 -51 -997 -25 21 -715 95 517 -195 -276 286 -423 801 145 -577 -703 -394 -365 -229 709 701 355 -68 146 279 871 -957 -269 713 -533 43 168 839 481 -837],38
-[419 528 -707 -80 143 -801 995 811 431 -144 64 855 700 -909 926 489 -281 829 833 337 179 -267 -387 -311],18
-[-762 -954 -20 450 864 60 -615],1
-[-544 -84 -288 -414 566 -232 -322 -426 -73 54 825 602 -780 400 -72 -86 -6 -449 -386 526 33 -818 -140 195 306 -665 -270 -480 -767 58 -703 928 -242 77 -146 650 -104 -146 -834 638 284 422 13 -184 -114 255 412],11
-[440 -332 232 321 -462 -316 94 830 -374 454 -548 390 208 884 444 838 862 -308 -282 718 996 738 -596 -456 200 -998 -626 342 -848 334 -268 722 784 -468 -1000 344 352 -956],1
-[353 308 372 -615 -475 -139 803 753 -634 -575 455 -189 547 -264 -323 889 -843 899 -319 273 997 845 -979 686 821],20
-[-382 362 -684 116 880 -515 -882 -134],1
-[580 -258 192 -240 448 -322 -104 -92 458 -554 -496 966 -866 -228 -828 368 -638 328 -751 -326 -640 -466 10 882 714 -494 -428 -280 -452 380 824 -458 128 -256 491],2
-[795 -903 -735 460 -386 -574 867 -95 953 235 899 401 305 899 349 -551 -610 611 310 -27 715 734 97 91 -289 -69 811 -371 -83 -575 425 -270 43 227 853 -603 826 -157 -623 -351 39 -95 327],35
-[756 86 -374 346 -302 378 -784 116 -134 877 -672 -211 -615 -493 340 -306 -611 380 348 -320 -97 -12 111 -498 -723 496 -506 -158 235 -698 -997 194 -513 -560 113 158 -865 36 -445 -681],15
-[-508 -863 60 64 -398 -140 172 890 -453 434 -542 -516 -411 950 -798 -547 -58 -806 622 -528 235 -290 -985 -606 994 -670 -422],6
-[-77 979 -539 -330 33 -334 -615 -601 -519 -467 -161 -285 -171 -671 59 955 512 -140 -685 515 -943 -179 -621 -721 815 -437 -381 -869 -565 233 -987 113 303 849 977 -121 -37 493 -763 249 -605 -221 688 825 659 451 -143 3 -671],44
-[514 -842 -454 -518 238 654 692 853 -552 14 -64 -838 894 -450 622 -90 -320 744 -470 -374 406],1
-[111 -561 895 576 -986 -351 -601 438 971 -832 -884 -627 391 -804 20 323 -195 -560 -728 -573 -962 414 -459 -942 992 -367 826],13
-[953 -816 561 658 36 345 -734 -381 374],4
-[-958 394 -794 -256 -836 -482 -140 908 -354 938 -158 -634 -440 -458 822 -628 -960 -734 -166 354 230 -908 -648 -816 686],0
-[528 564 -322 -278 -24 816 -146 641 124 968 858 366 600 -108 -286 -488 440 -162 560],1
-[-117 -520 676 -104 -378 -257 -801 -857 879],5
-[408 -2 336 -254 526 822 288 -836 -735 -886 -352 26 780 -510 -96 686 177 430 670 337 -598 822 414 -712 -428 40 -269 -392 -798 698 -1000 -648 137 -530 972 292 422 378 10 -344 392 -662 -268 -463 198],6
-[154 -168 -751 -849 -449 654 446 -853 916 420 820 -366 692 298 -484 200 -871 -621 278 -488 10 -512 804 -286 620 30 242 -934 -624 -336 -758 187 466 760 -534 17 -298],8
-[-796 961 -99 -655 -528 -675 -223 139 735 -819 755 -819 183 263 609 -77 -387 15 71 245 -79 299 587 -371 -49 571 -639 -281 -691 823 -944 330 39 -341 723 521 -545 -543 993],35
-[-885 148 -334 -184 -196 -380 -348 624 674 340 211 -768 -722 424 -910 767 -166 -455 -526 232 -832 58 -209 648 -404 102 940 150 -159 370 470 6 863],7
-[-10 -242 -880 -135 385 19 -917],4
-[-912 -550 -154 -980 -876 796 876 -8 -264 -244 866 -126 954 -372 248 105 848 -504 816 -568 970 -138 -528 414 -144 426 -406 746],1
-[-901 976 -354 -400 -997 -189 405 -520 -596 -229 -37 843 -783 -740 629 -312 -414 -800 93 600 378 762 794 317 195 344 86 276 792 815 431 419 742 -566 -147 -514 4 -91 -986 -183 444 -556 -465],19
-[352 803 -357 33 639 -549 -573 -427 -901 -723 -983 551 -783],12
-[-960 820 -612 679],1
-[-604 -24 581 678 -532 -564 486 -48 258 -253 -594 -234 614 805],3
-[-353 -444 -58 -233 133 -279 784 74 -528 -565 -123 149 901 -255 -663 -247 -349 -537 455 -149 -150 -109 197 283 -697 487 -311 -615 -823 588 -373 -131 -841 -213 -480 -371 -752 -302 -967 999 -663 833 203 216 -251 625],35
-[210 318 844 490 -866 -400 139 918 699 600 -770 942 -744 124 118 464 448 317 66 -702 748 660 -566 14 664 704 -492 830 -992],3
-[327 -648 846 400 26 989 388 -321 607 -674 -453 -467 623 -308 -83 478 -139 -160 699 -219 56 -846 -961 -292 -623 -956 317 712 318 -932 -568 -398 176 -426 -382 -918 -575 -68 887 921 -648 430 760 662 957 -382 145 246],19
-[253 -198 -680 366 33 -96 -367 -150 -407],4
-[66 430 -642 -579 281 -923 146 -725 435 658 -375 557 -316 295 677 -663 973 480 247 -951 -451 772 12 877 288 -468 724 -690 -534 -204 -497 -737 -26 154 -112 456 -240 562 -164 387 -381 300 -332 -668],19
-[941 80 69 495 -891 -658 -800 880 -576 579 -203 410 -5 826 -176 369 468 592],8
-[407 -767 729 -795 -21 -167 41 -189 189 1 -787 909 679 -753 -829 289 -281 -147 -819 -659 469 -869 419 -797 243 -551 -943 -699 515 229 -615 -483],32
-[79 565 -538 -165 -512 683 -749 -434 743 921 -310 735 -410 596 -875],9
-[864 975 -78 502 -48 -93 975 601 668 593 -701 -710 626 -391 728 385 -782 -391 226 -765 688 603 -638 23 -385 -728 -330 477 672 483 391 -348 692 792 -68 -898 -687 913 -593 21 -790 -394 553 -65 872],22
-[903 685 722 957 -638 244 86 -877 633 -522 202 -521 650 -470 -647 -494 -834 675 138 -784 -525 274 -644 47 283 -352 -557 -730 511 59 307 863],16
-[-445 231 473 -897 831 657 265 735 115 351 -261 737 404 -439 -73 -55 933 -697 -231 -177 -455 253],21
-[269 -569 147 183 386 -437 385],6
-[-10 -68 -324 -326 112 -436 -446 670 -400 -444 183 12 484 -970 474 -770 -110 348 -550 502 492 -332 496 970 286 -64 -503],2
-[-359 -944 400 -94 -798 664 691 460 -162 -498 566 209 -742 -146 399 -683],5
-[398 900 -960 854 68 -976 -852 -114 -962 -755 -966],1
-[382 430 -588 478 902 -610 -749 380 556 -500 -918 -749 622 238 284 414 424 -175 -21 -646 760 781 357 306 -134 424 -566 478 -284 -560 718 248 931 18 757],8
-[-434 -220 -414 720 21 376 963 -775 914 -605 -922 411 492 -454 -972 556 -932 -110 -222 302 967 -728 -302 -303 657 725 -449 696],10
-[-914 910 -974 406 -534 84 -900 452 -772 95 600 278 612 -80 86 635 880 -753 -369 504 620 -735 186 -849 1000 226 702 55 82 -265],8
-[854 95 -42 -672 848 190 -190 497 650 -281 570 -53 -782 86 -122 -396 -28 -709 336 -784 -255],6
-[698 919 -337 -14 995 -689 -60 -140 842 -477 245 642 53 999 -604 -458 628 653 204 711 -648 -315 -392 -850 127 28 339 159],14
-[-636 -296 507 124 -930 -304 796 369 -48 -48 -931 590 324 271 -390 192 16 -242 368 764 470 -920 878 -322 -178 -342 -462],4
-[103 748 494 -435 -167 -470 -361 732 432 712 -95 933 452 918 366 34 -253 -611 -349 -407 -979 471 37 -707 -768 970 -244 422 534 -766 -980 -433 437 -574 600 -550 -922 -496 -233 -584 294 92 -930 275 -712 -852 605 850 635 407],21
-[780],0
-[-917 529 -969 774 948 864 361 807 543 354 996 413 401 861 821 -248 417 19 -21 -935 969 -836 -763 254 838 -541 -870],17
-[-168 -338 778 -175 -701 570 -360 -902 -134 464 537 -119 551 349 -966 568 -345 -749 457 295 -518 691 -903 -937 990 -520 486 318 672 -909 740 257 -300 -252 451 711 402 -123 801 58 89 906 -112 -742 128 684 689],21
-[672 651 824 -193 -250 989 244 901 -868 -315 994 850 -993 -317 -127 626 863 615 245 375 -675 -307 -547 -296 671 -996],16
-[-295 -417 -793 -129 905],5
-[444 34 946 -190 -732 846 -348 -512 484 508 -946],0
-[-936 -753 -773 441 -715 -468 -346 479 967 912 -47 -483 -918 -595 -114 -515 -652 269 510 496 -416 790 -266 280 -811 -648 -284 -39 -881 -120 988 -402 -628 -183 116 -534 676 -771 955 -875 230 -861 -923 548 -529 -355 474 -786 -11 -543],24
-[184 436 204 -656 156 -726 854 183 -478 -459 -525 792 -787 609 -358 84 -363 -645 -96 -954 -404 752 -501 -739 114 -710 -638 -220 898 714 940 114 -810 226 -588 -272 -676 108 -48],9
-[-634 -943 37 -801 965 -457 349 -723 901 581 -48 -159 -839 399 -645 -865 537 831 557 975 450 -794 -819 -725],20
-[-266 -874 826 774 -638 -480 -372 -141 940 177 896 326],2
-[-600 -582 926 198 -936 180 696 338 -442 -704 -144 -117 24 336 -46 -484 -670 660 738 -190 311 -55 26 910 -840 -186 920],3
-[-541 606 -103 696 91 465 918 294 20 839],5
-[117 -440 867 -931 -183 670 -940 867 -776 213 -616 911 -407 -448 -778 -150 -720 -753 188 -516 192 255 600],10
-[-601 627 309 993 -252 -174 -931 871 467 742 791 -239 931 613 -385 177 215 -364 261 335 818 -822 -192 -152],16
-[-785 -83 -107 -505 -289 -761],6
-[933 85 466 -559 -963 582 301 476 217],6
-[-548 986 870 397 -348 -818 -812 234 -542 -17 230 714 -926 -328 222 -914 610 -382 -428 -524 878 557 572 938 548],3
-[374 -912 804 362 388 516 183 -938 69 749 177 375 -414 -108 -932 -711 -948 693 -676 294 -522],7
-[-635 -697 201 365 357 -977 -571 171 393 -959 -309 -373 -973 -619 -997 121 323 -801 -538 62 717],19
-[538 231 841],2
-[-628 636 -674 0 -392 -448 54 -326 -70 548 -80 548 490 868 -898 630 -380 854 250 206 220 258 -286 170 950 746 -470 -941 964 -306],1
-[-381 -121 -196],2
-[-665 -399 -333 -533 305 -795 -329 -467 -445 -821 827 603 -557 -163 -809 921 -963 827 -721 -131 301 -475 201 429 231 667 -194 98 21 509 603 977 379 841],32
-[931 -329 213 -936 517 917 985 792 -301 563 -785 809 -439 -617 767 -921 -423],15
-[-336 -516 -255 307 -298 -950 173 -36 677 -65 297 873 -865 352 -565 -779 -518 658 -344 948 361 222],11
-[-254 623 124 246 -492 170 -662 146 -120],1
-[-75],1
-[920 -262 -779 551 -517 131 -497 8 -82 662 763 811 -591 -863 792 753 911 496 -619 284 -822 389 576 903 -403 750 -503 -976 541 -472 315 959 -663 -960 -119],21
-[29 963 999 -594 663 -727 17 617 -690 -547],8
-[120 921 -421 511 -632 -318 933 695 -249 662 535 819 -699 770 -153 193 5 -381 539 789 -755 865 -325 -133 -773 857 -447 -419 589 -38 391 -87 -939 -945 239 -133 775 -55 235 -975 583],35
-[233 -721 607 699 -895 666 627 453 491 668 -87 189 -651 -971 659 211],14
-[470],0
-[-903 -969 340 494 -245 819 -223 -688 623 -355 -466 223 793 707 963 -157 -351 -403 -371 895 -279 -469 -559 375 -841 -137 -321 -975 -917 -359 419 -259 957 -57 257 -957 194 819 -421 -887 -193 -493 351],38
-[862 -949 992],1
-[-158 482 -573 -860 -492 -878 673 148 54 -100 974 -190 498 384 -915 -825 228 562],4
-[-770 771 -556 164 -858 -506 -446 612 -608 812 280 -754 782 -984 -225 176 10 997],3
-[-521 -88],1
-[99 332 816 56 897 532 -668 -972 -982 -768 -482 -289 -552 -238 157 -698 -992 309 -683 96 -798 -782 -91 -722 -139 684 -331 -324 330 632 501 -292 -398 -236 -200],10
-[600 638 230 -622 -210 762 756 392 -416 906 78 266 170 182],0
-[-824 -731 -580 -907 787 123 -511 -822 -756 -433 857 887 -997 218],9
-[192 -868 -105 -215 512 -944 -699 -223 -112 -593 13 813 -746 364 -243 -301 37 -619 683 -420],12
-[724 956 -409 -189 970 -930 324 306 767 -6 -296 276],3
-[-25 -281 -674 662 202 -56 -766 790 901 208 543 670 600 312 -192 354 -597 806 -138 457 -544 -970 -670 -213 97 -635 -668 -190 19 -958 499 -127 -790 -56 407 664 645],14
-[-554 101 -635 -993 -795 711 -467 308 101 221 601 325 -904 -305 864 551 487 -809 673 -724 -796 -477 657 -613 998 533 -775 -791 -941 527 -485 -75 -339 859 -937 -202 -561 -388 -554 624 -531 849 -689 -687 -71 -7 -621 179 -13 -587],39
-[750 280 794 -610 550 -62 -852 748 -332 860 890 -558 -154 -486 680 656 875 -884 428 868 768 788 140 396 -946 142 651 -178 -312 -780 48 800 -262 568 -256 -844 836 626 886 -580 -240],2
-[211 -295 379 558 -553 767 -185 179 -821 -971 -953 999 -843 -47 801 117 369 -931 539 -123 357 235 -815 55 383 651 -343 255 -899 -931 -621 899 -33 -751 -155 -497 79 -747 131 541],39
-[-700 261 -409 642 157 261 131 689 398 744 -277 292 -944 754 102 698 -437 920 926 -545 217 453 -115 -338 418],12
-[368 379 13 -722 -133 535 635 773 -433 -779 -253 -525 61 -957 -749 19 977 763 -63 -593 -423 751 -477 -857 37 -778 955 -867 -291 -607 332 -727 285 346 -929 407 439 651 809 431],35
-[-269 -59 342 153 -15 -680 2 795 729 -592 -767 266 754 397 331 575 215 -569 -159 941 -428 -536 -11 -237 449 778 653 919 -10 531 651 439 179 401 -343 -108 591 72 520],26
-[407 -451 -39 986 -497 365 -803 973 941 695 -295 -893 -547 -600 -675 803 -883 191 599 -523 105 689 -815 -647 495 445 -510 -565 73 -859 259 561 -19],30
-[449 -945 511 -652 869 -312 -840 -944 268 148 -326 -974 393 693 -225 486 -663 -521 -934 349 788 -118 13 703 947 65 355 906 16 -51 503 228 866 940 575 875 -279 677 -622],21
-[585 -637 -479 25 -63 467 493 -480 401 -361 -615 285 841 601 -359 -751 821 459 169 -819 545],20
-[668 751 -402 -464 920 -651 -162 514 578 914 814 207 -828 -642 -965 356 -580 630 590 850 112 889 134 256 -894 -5 -314 572],6
-[959 -445 750 -885 -855 -970 -547 -319 -71 -508 139 435 -21 -816 98 47 325 579 -775 -15 -127 -770 479 -53 -23 -646 -402 495 307 -613 373 723 317 797 983 -343 875 -317 301],31
-[-578 738 882 686 -184 22 6 -526],0
-[724 261 802 -126 357 789 -987 -50 535 244 -517 -877 687 -969 -230 -515 535 -256 615 -199 -501 -831],15
-[729 -839 -445 843 -317 403 797 -537 -627 405 -871 -700 469 -521 201 640 953],15
-[-650 563 981],2
-[-352 -898 -343 247 375 781 -74 -198 141 -324 -258 630 -323 301 482 -316 744 -95 728 -304 -636 -898 21 499 -845 -249 0 -162 -817 934 59 -239 -958 158 -62 -887 180],16
-[208 0 966 539 -131 -837 -386 111 -224 -918 874 -711 956 -491 -976],6
-[-883 417 -935 143 -804 92 -900 -874 380 -527 952 592 32 -205 -802 896 980 -344 -686 -611 -237 -772 485 999 848 -948 513 -402 -293 -289 -268 -8 953 -933 470 322 -549 -202 -804],16
-[-813 -790 -721 707 -871 -693 -517 -106 -336 -923 -987 -815 616 -171 131 706 -926 -572 -763 467 -39],14
-[-286 -436 45 -599 160 -539 -984 310 -175 -168 652 -751 508],5
-[637 -492 748 362 -698 -958 368 -330 -450],1
-[410 226 236 668 390 -172 64 -456 -614 210 915 -482],1
-[-655 904 32 140 -692 -838 -154 -118 210 -468 -576 942 170 390 334 452 -896 -694 -820 -78 186 812 86 768 860 -458 320 -20 -8 -618 -346 850 72 216],1
-[740 372 -499 -461 -928 -453 -796 142 -826 -230 604 -180 -644 -106 -364 -916 -20 274 -740 -346 -68 -266 -752 -640 -714 898 168 -432 -971 -584 390 -840 -622 -82 -640 -104 -598 -495 -568 -446 772 468 376 -692 -182],5
-[994 735 -939],2
-[142 -822 -924 956 96 -688 -960],0
-[-467 -482 -574 936 -140 -240 372 919 636],2
-[-539 298 -21 815 631 -569 822 -388 -593 -481 908 -554 -385 -25 -411 111 -849 -762 -66 -432 319 363 665 -597 35 -577 161 640 457],20
-[331 575 -67 359 813 719 511 347 -719 -498 -539 923 -303 319 -401 883 317 21 -249 918 490 449 481 -862 47 -351 833 -679 7 673 203 264 -513 -733 -455 -571 907 711 -673 -265 789 803],37
-[-207 -229 -861 73 871 -365 -231 445 -505 251 763 581 -143 -633 899 773 -263 605 -10 -28 627 232 595 -209 37 -311 509 -659 -155 -393 639 435 -249 287],31
-[232 -434 -570 -948 744 718 -956 879 278 84 -930 -224 -684 -205 -414 552 738 2 992 -852 996 -658 228 562 936],2
-[900 247 -118 510 995 525 -824 980 495 -651 -345 198 771 -9 -420 -339],9
-[611 893 -509 491 -957 -673 -603 -745 -23 -257 765 863 637 -15 636 -911 409 -891 323 495 -301 -623 -886 597 877 475 -321 73],26
-[203 732 -889 -587 15 31 53 493 -710 531 806 -367 39 661 999 819 793 229 475 503 791 -741 893 255 -533 957 -967 -285 765 78 -569],27
-[-24 542 4 -806 -822 90 -960 -602 386 -686 856],0
-[905 -129 968 -21 -866 553 -204 698 -85 -910 -290 -228 292 568 940 -147 -873 390 -349 -698 -819 -873 332 450 788 -732 290 -156 646 24 -434 677 -785 -429 496 25 -142 -796 -833 916 -402 -662 89 386 677 872 -788],17
-[-593 159 773 -945 -44 836 -797 473 -792 -693 141 -844 572 -140 813 -948 -654 89 -912 -74 -624 -344 -616 498 942 912 -946 -470 -160 994 808 504],10
-[235 5 931 854 958 -795 442 445 -480 -362 566 57 -958 702 688 -891 -999 344 748 -864 772 713 681],10
-[-215 -601 -823 -260 -528 455 -640 40 957 701 -596 -919 -111 356 -324 171 -71 609 185 -316 107 -89 -641 -43 957 -94 248 804 28 391 302 723 -303 479 822 719 -377 429 313 499 991 499 61],29
-[927 215 -633 600 -820 482 120 493 53 973 -587 -729 -933 414 433 -329 -749 166 -501 -475 417 -534 447 -821 6 -387 -636 -824 135 63 -541 711 579 53 923 -669 -599 521 -235 -257],30
-[445 547 -363 281 -259 -129 -727 -779 -933 -558 -489 -349 -88 -843 -135 988 -703 -962 306 813 -341 -940 -554 -784 351 -141 -995 119 39 -355 -925 278 171 -621],25
-[-916 -84 -136 -490 -490 426 294 305 -294 12 760 -450 -821 -874 -968 -506 -238 -20 904 558 -88 560 -74 -170 392 -10 -632 412 -921 657 390 -630 -488 -640 -693 830 -4 -715 102 -190 -134 874 -217 746 236 494 -580 -850],7
-[-837 -673 -91 237 -227 -709 907 791 -767 -261 -713 16 -249 -909 79 -825 -49 -633 547 -505 399 -351 355 695 222 -235 -289 -377 -847 127 -397 179 -365 469],32
-[-498 -162 598 -412 -234 -435 -122 -334 -236 -828 -336 998 840 556 -682 30 656 -75 340 106 274 147 788 -42 -672 -730 20 -914 259],4
-[712 -842 -276 942 122 404 105 724 670 -740 -578 -778],1
-[196 -690 -896 -752 738 574 -946 853 490 -930 834 420 -180 561 786 574 -653 608 -106 642 -812 748 -767 939 -974 -854 662 252],5
-[18 -683 188 540 -548 -793 -516 -846 -893 948 744 756 -257 688 -175 -192 649 -704 518 353 762],7
-[80 290 454 -794 -156 6 -350 -428 292 324 282 -594 70 -958 -14 740 192 662 -160 882 -980 110 -398 -574 306 68],0
-[872 -454 52 144 -673 931],2
-[46 -304 -994 952 -304 -800 -240 174 318],0
-[-125 -65 -775 734 -729 563 -101 -119 97 -300 -654 341 -940 346 661 127 -755 -845 382 111],14
-[-132 -297 408 750 78 540 720 772 142 -616 -390 -713 386 -802 834 -325 -394 -640 -82 -822 -191 734 -796 -756 -498 676 -784 -338 -140 -480 754 -647 -672 711 673],7
-[-7 7 -625 618 -280 -874 252 375 -805 -182 593 -577 817 779 -451 -622 149 493 -853 -680 -198 380 -437 505 -575 153 713 -565 490 453 801 57 -81 -71 -381 -435],26
-[-113 -635 -939 387 895 128 -437 159 459 -253 -333 -125 401 -55 373 943 -291 -281 429 699 -451 -624 911 288 -457 -77 303 603 386 83 -287 -703 -454 383 765 53 9 829 965 633 271 -475 -819 -511 101 -927],41
-[319 25 -475 -62 875 -819 -547 911 796 -594 -946 -487 -477 546 -268 -502 136 595 905 -358 -517 -193 -105 569 766 -501 -576 -141 -766],17
-[14 143 363 -210 578 592 188 44 -721 -272 641 330 -437 557 330 722 202 740 -769 -84 -776 -137 618 711 -684 384 624 503 -795 563 883 242 -410 -688 907 848 488 -217 -650 -938 930 -468 -410 575 -756 -429 416],17
-[-48 -898 254 -566 939 -182 -382 -896 674 -124 384 -776 360 262 42 -699 332 104 -970 823 -980 -257 784 642 -598 839 -618 28 -190 117 162 207 83 -628 -259 -302 -854 504 -435 78 149],11
-[-248 152 -624 654 844 714 -476 -502 -902 288 -134 -500 -326 -372 138 -628 480 -82 -870 84 840 -602 -60 -176 582 570 932 496 244 -784 938 664 -64 46 664 734 806 -280 -874 448 28 340 30 256 -544 952 -460 -614 324],0
-[218 -776 206 32 -780 -572 -932 -96 164 936 212 610 824 212 450 214 28 -606],0
-[980 -506 326 -732 986 -704 -834 130 -490 730 -524 722 -194 998 272 -144 156 716 -896 760 520 -836],0
-[-660 850 65 673 -129 -395],4
-[-807 -282 -657 -570 697 -162 -664 -369 -60 920 -23 64 -14 681 -242 -823 761 872 997 660 549 -128 -986 351 746 -122 -932 62 315 667 750 -606 825 -803 -841 -142 353 410 474 -199 76 895 -234 212 -174 973 905 824 346],21
-[-327 22 -703 -977 -835 581 -679 339 175 -427 -899 -101 -231 303 -857 109 -249 449 -431 -931 -261 161 811 393 39 909 831 609 937 665 499 513 307 75 -849 -55 -357 -724 -911],37
-[923 -683 975 507 881 -701 603 -465 -283 279 -595 -225 -681 395 -355 -9 239 446 253],18
-[622 508 -268 -264 188 -121 -810 597 -100 -508 650 -916 388 990 -986 -74 -864 700 511 -766 748 -798 -332 396 -508 198 878],3
-[-785 971 -497 -877 -727 -879 -506 75 314 -824 -623 -98 -447 67 -692 463 -436 -337 -79 -426 -268 929 932 -779 254 411 -945 -248 -388 521 -179 78 -419 -2 509 143 601 -929 -877 714 -153 601 -539 712 617 231 -850],30
-[-825 984 840 -992 -650 -38 -866 0 759 107 420 302 -864 734 861 -880 -865 484 -106 824 936 -148 902 -960 580 820 -902 194 -104 186 -948 -140 -300 -122 -512 154 514 -894 656 319 580 654 -610 -204],6
-[-345 451 960 49 -590 -579 403 -111 823 -797 -93],9
-[570 404 -235 -822 543 949 -507 -634 -4 -709 147 307 85 998 525 -888 651 -431 -793 -904 939 -813 -578 -999 883 159 541 -352 -829 -635 -721 305 -167 683 -414 -155 -415 -821 -512 441 350 -54 431 -917 910 -938 -524 -452],30
-[548 -137 -676 170 -538 985 -452 -886 336 225 -90 -90 -744 354 -264 560 166 -688 -580 566 284 -42 -776 646 554 816 -85 554],4
-[714 -179 784 -782 -74 -390 -370 288 -886 662 975 570 156 12 890 -926 968 -574 -223 -596 -23 552 628 622 126 -584 -910],4
-[958 941 579 272 -110 -209 26 -966 869 677 13 -766 -802 -74 222 66 70 958],6
-[81 -79 272 872 -821 405 -841 231 -657 -315 777 155 493 -681 -231 -470 483 883 -101 -63 33 -589 -637 -209 160 -745 537 -971 315 910 -291 462 399 -207 39],29
-[-86 -930 527 -215 -236 -820 768 68 -62 987 266 -564 278 -336 69 -580 -302 -538 154 -875 -340 -634 668 -328 551 464 226 390 673 -164 -698 -915 -870 682 561 -802],9
-[247 358 -21 -752 -411 -917 878 -363 -598 809 -298 308 598 -329 372 524 -264 594 198 -466 -782 -153 -124 -915 38 -469 -7 -812 702 583 -834 -256 -267 381 969 44 29 -573 -688 683 -365 -437 -747 -726 392 -84 955 -86 647],23
-[710 -139 -608 485 313 -819 -15 -445],6
-[610 -713 -823 425 597 -118 61 492 59],6
-[192 -276 488 633 -473 -24 -288 529 896 -197 -212 -853 398 984 37 78 -354 -302 711 -458 246 6 -242 -462 -68 148 340 -688 -248 588 97 -904 954 877 194 330 -220 -73 634 -6 252],10
-[283 -75 376 190 -751 459 -889 -623 -525 152 649 683 -319 -863 749],12
-[-691 -1 -755 -39 -591 -791 945],7
-[297 403 -743 -771 -561 319 53 -817 -893 605 695 510],11
-[462 -979 -794 -597 -446 252 -378 669 -435 -186 802 794 -188 950 -45 31 134 -305 -968 474 -898 -432 -586 600 -340],7
-[499 -381 -378 -300 947 -604 584 799 226 140 -877 994 639 -758 329 -496 -886 748 974 823 508 -432 418 805 411 -606 369 -972 226 -758 160 -609 625 637 -382 664 506 555 628 864 590 -720 146],15
-[655 9 -161 481 -575 -587 911 611 -865 843 -171 539 681 771 -451 -921 977 -331 -559 -124 533 -371 277 -309 71 279 513 427],27
-[947],1
-[204 964 486 -589 253 808 -440 834 -150 -58 -348 -278 -284 -666 284 -685 -419 73 -313 -794 526 -948 -846 724 290],6
-[-667 911 709 266 -516 -62 -231 -235 411 399 -547 -157 -67 271 417 -11 -553 873 447 -772 583 -999 -749 11 772 -383 823 -733 701 871 -245 773 -433 295 237 -321 -117 997 133 -405],35
-[-554 -23 106 551 36 -715 -909 845 -78 153 -322 -861 121 19 -981 589 -785],12
-[609 107 -927 -793 352 -321 -365 809 288 301 -47 643 -14 -274 480 -759 -893 292 170 420 -171 -968 198 101 -768 842 329 -687 789 102 129 963 193 -225 -363 616],22
-[345 436 -315 232 -996 -259 -652],3
-[-433 -9 -477 644 -149 533 329 257 -145 -9 -917 -679 935 723 295 -545 331 -892 479],17
-[490 -633 218 -254 -697 -882 -301 -547 144 843 32 -919 118 165 -607 -30 999 -489 -821 -82 -492 279 -206 -362 -112 -113 527 756 -592],14
-[-531 924 835 559 -923 -783 257 -641 305 -73 335 -441 112 417 -275 -447 -375 35 -397 715 87 -935 -911 -801 986 -913 -780 787 735 -617 664 -321 -945 -775 533 616 -469 -471 -692 -548 416 753 -309 -919 -723 42],36
-[-644 576 -90 436 -819 620 414 919 -800 -338 -325 804 87 124 390 -96 440 658 -50 58 -200 -588 143 -12 463 580 -46 78 556 948 146 434 -707 -102 388 582 239 -8 -716],8
-[511 529 717],3
-[378 -864 -337 735 -287 -882 -612 863 -586 342 -373 -454 -641 -876 788 387 -920 578 564 -477 -151 473 905 -474 426 -42 -845 -94 -854 -878 -725 -638 334 960 -459 -808 728 690 536 -208 -208 517 -505 -380 308 752 942 -112 -916 616],16
-[-931],1
-[598 -423 -883 -36 -127 884 755 -665 -861 -336 -455 253 129 299],10
-[416 119 380 -723 -18 -228 204 -3 931 664 -42 976 654],4
-[-676 -741 -323 855],3
-[-508 -498 -920 520 740 562 516 480 342 -460 888 889],1
-[979 -537 855 -464 137 518 -935 149 743 -907 476 -897 21 -935 483 -800 290 -851 825 415 -515 363 349 -612 -345 -341 601 -501 -644 -613 -144 -947 179 -673 -993 765 -397 503 -33 945 751 602 -339],34
-[18 -262 -860 896 954 -866 -428 -298 -462 844 -4 -30 40 -744 -468 324 -36 -940 904 -940 -680 -864 660 -344 966 648 678 -846 160 108 -960 574 -944 948 -857 88 -436 -880 -876 722 -923 -384 36 818 -790 644 282 730 84],2
-[-121 -801 275 -157],4
-[192 56 -797 -594 -550 373 595 210 -764 -948 800 -932 740 675 -433 620 788 42 754 -996 800 142 398],5
-[-563 188 -24 122 585 -682 209 -401 607 -611 265 230 694 -463 -252 -16 -365 163 -881 -465 -6 202 -816 -571 -86 -34 11 672 -528 625 206 -753 335 180 -264 -679 809 -576 -523 -332],20
-[572 20 442 -610 630 -446 -86 946 -722 376 -460 -766 -908 794 -476 -668 308 -102 -996 20 -874 820 178 480 224 206 -328 -728 630 676 652 -566 -460 164 -538 874 -18 -40 -428 -294 -498],0
-[-758 -602 942 -793 42 86 168 764 230 239 600 65 520 630 410 -372 -99 395 868 8 174 470 333 276 -498 735 -144 894 152 -146 -166 55 366 -464 278 -436],8
-[-809 545 987 617 641 249 -431 -407 323 -553 -457 607 427 -613 -849 703 515 353 -235 -393 581 -674 747],22
-[483 -127 30 282 460 304 -661 958],3
-[-487 -401 687 395 -787 621 -99 -856 769 -262 563 403 -695 -991 677 927 499 685 51 817 -251 -769 815 239 945 989 657 -451 -737 -467 -306 -97 -659 517 885 101 111],34
-[778 -460 332 -614 767 -953 269 916 -99 321 -312 673 -981 695 -720 481 -895 -963 607 655 497 -993 -554 -36 817 -407 594 -697 999 631 -730 47 -201 -69 770 -957 907 -792 90 150 481 672 503 -598 -819 -381 59],30
-[275 357 168 -395],3
-[-159 -630 -3 179 928 -411 219 -995 -46 -579 -28 -965],8
-[-90 -90 -648 588 -914 723 624 346 264 688 -290 409 -359 -627 126 -432 -134 -905 226 -980 -535 -807 -630 870 -316 -928 283 803 924 802],9
-[641 -602 -526 -434 -919 -430 -461 62 -555 -619 552 161 682 489 471 527 -601 -58 -99 684 788 -100 900 -452],11
-[-486 -256 -556 -212 26 -240 666 -226 514 434 838 -358 -316 194 482 -720],0
-[-539 -891 937 -294 -896 341 -238 -73 878 373 356 -230 -160 -980 -196 46 -672 91],7
-[-701 688 -949 -110 -876 794 -173 918 -642 -90 151 -677 353 11 159 -78 -176 -484 -161 610 413 -441 -555 284 294 -461 -528 -277 473 -751 210 188 40 368 258 -521 978 -433 347 978 37 717 -899 -509],23
-[904 750 -1000 178 -588 -106 -770 168 554 506 -674 -109 396 598 660 -876 58 752 -484 -492 -269 292 -640 -896 1000 -332 -613 -155 280 -450 104 848 964 -608 -30 -832],4
-[647 157 747 -831 107 -681 -765 -983 229 -799 -699 -815 879 783 -887 601 181 620 483 -835 387 -478 601 -891 -653 287],24
-[118 -220 -804 614 -636 -604 574 -522 84],0
-[-988 534 772 -38 660 -808 -416 750 -176 484 -356 620 826 908 -628 850 -524 960 -288],0
-[-322 -730 -348 -768 -141 96 428],1
-[-49 475 477 115 599 905 109 653],8
-[-368 443 383 -655 647 603 -119 -971 -544 -997 -979 -161 200 -261 -504 544 -155 -727 322 263 -772 -673 -627 867 -813 -493],19
-[-831 -464 -731 612 862 -245 -436 339 -172 584 404 -200],4
-[-714 728 94 -886 -904 -80 -958 -798 344 164 -410 -524],0
-[-459 119],2
-[-46 -974 -56 -60 -531 -944 -269 -299 -893 703 -180 879 438 714 -86 -432 -918 395 -704 -585 424 -835 -378 -936 -58 -294 -413 853 -977 4 -42 -138 122 881 -27 -818 -707 -672 137 -423 -738 -90 -407 872 -833 420 360],19
-[898 406 460 628 664 781 -392 -868 454 -260 -356 148 118 -274 -806 -876 -148 -716 994],1
-[524 964 634 387 -736 524 108 -218 -516 864 710 -688 -478 -888 521 766 -74 -516 -328 230 408 -631 -788 355 582 -447 760 311 501 -193 -477 -449 70 592 -381 -2 -545 94 300 -54 718 752 -162 294 626],12
-[-874 -440 524 280 -752 -184 -526 -843 931 -126 582 98 54],2
-[-778 708 -848 -76 -714 -640 -20 304 -816 380 334 -692 878],0
-[445 783 580 598 539 520 649 875 -770 719 430 79 -953 735 687 513 830 -972 388 -854 830 10],11
-[509 -114 314 489 -409 -270 80 15 457 -342 -770 -79 -537 -26 83 825 -242],9
-[218 -406 602 -344 -758 486 -179 -464 -508 932 -718 692 126 -878 700 -999 -482 880 -870 548 352 -750 -651 508 -30 530 -160],3
-[-136 925 734 523 -163 -937 -934 -569 -309 -237],7
-[-995 167 985 403 437 313 119 -955 -651 -949 -767 -191 717 257 675 -869 47 143 105 947 829 -205 733 713 455 985 471 -77 199 -431 691 453 739 683],34
-[-666 456 -58 694 714 -311 -251 290 -888 -674 -362 239 737 -593 442 382 -684 501],6
-[-431 -659 -809 590 682 346 -848 -731 932 -175 -956 322 398 -900 -790 614 87 888 864 498 887 -777 -787 -798 319 354 728 25 -524 -975 -264 -197 785 -994 400 -645 -251 671 -514 -706 235 -916 576 598 649 -383 -95],21
-[-2 964 -990 -150 -92 446 -299 -667 495 -895 -791 -922 -577 -3 896 951 974 577 -286 -8 -703 -288 -807 -466 -653 771 -189 727 -897 89 -160 530 984 286],17
-[-322 396 -180 -64],0
-[-155 -261 -970 -337 403 -143 669 747 -374 -608 -51 719 959 930 211 -875 829 -633 527 789 808 823 809 -802 21 559],20
-[190 496 -912 940 -865 -194 -906 -885 282 -268 -424 60 594 292 -509 662 20 -842 4 -246 564 -298 148 -692 484 -225 210 594 190 912 -138 321 -246 -20 206 -348],5
-[-962 -972 -822 -513 -544 270 26 164 668 -220 -986 12 842 226 980 -4 234 74],1
-[-372 530 -842 -586 268 -714 124 -288 216 -182 711 552 619 -775 179 -156 204 834 717 899 390 -904 -678 750 328 520 42 924 754 80 350],6
-[881 -381 -745 931 -827 821 329 -701 265 285 -48 715 -273 407 531 113 363 -353 417 -409 -737 684 131 331],22
-[740 815 -730 471 -633 770 138 -128 -438 -248 532 152 -654 -968 -600 393 -891 928 -804 -426 862],5
-[-316 -774 281 791 -828 978 624 718 -254 -738 -158 -260 -375 137 114 -844 -250 884 684 -104 33 -312 794 642 -362 -156 -692 -772 597 -914 218 493 114 -354 432 -226 -208 -212 329 174 8 884 -76 430 -612 285 448 -604 -316 304],9
-[348 -865 662 464 664 -457 90 57 427 546 957 -669 601 -751 365 -14 332 995 223 525 491 812 -204 910 747 -361 -465 -332 -937 612 574 -965 -105 -527 647 -571 -599 -65 -14 355 -796 912],25
-[520 198 -968 914 312 90 810 -514 -318 -944 -992 115 -198 160 -539 862 -383 741 -797 751 685 60 -902 71 724 904],8
-[-355 -482 811 -607 -779 96 -32 347 144 -839 189 647 -209 -829 129 317 431 -469 -229 -527 -331 101 -956 -283 775 -723 867 -13 499 -780 767 713 -847 -591 581 -939 -895 903 -715 -299],34
-[-766 -548 -672 -544 754 672 148 -34 784 374 -230 504 54 556 686 -664 -174 -138 -286 382 790 298 462 -536 802 106 214 -950 -194 -184 -960 78 233 -524 30],1
-[-152 -315 738 -980 -216 448 452],1
-[43 625 -231 255 -189 -449 -761],7
-[181 353 243 267 -214 -165 -867 49 653 184 -985 -339 -183 19 -811 -211 -421 -81 835 -494 -55 -342 -882 -178],18
-[54 108 -641 -570 588 -857 -835 967 137 703 -719 228 421 721 -299 329 827 529 -201 891 233 -203 -541 -687 743 -243 -818 369 535 449 -145 -517 871 544 67 109 -782 -531 502 375 328 331 172 -799 290 959 879 -517 -260],36
-[604 538 374 -844 607 -588 -112 193 -821 934 630 4 -973 -23 365 -536 988 -939 573 -817 35 -641 967 562 214 -735 -367 -618 -565 811 -266 -836 846 518 490 -609 -183 290 536],18
-[763 391 723 809 -221 -47 -911],7
-[-943 507 -903 855 -911 551 4 -360 -345 3 196 509 -131 -701 677 641 -239 361 291 -695 -903 553 205 -707 745 378 312 -538 -697 -293 713 380 -371 -347 -69],28
-[-479 -423 -349 893 -785 209 933 155 -239 -745 101 -623 87 -769 539 -981 439 191 659 -973 267 -247 -201 -805 -57 -641 367 601 -117 125 -151 -360 281 -455 421 471 -327 851 643 131 43 353 463 -587 827 -177],45
-[383 362],1
-[-591 -217 -341 -597 424 691 27 583 314 539 -107 331 -581 565 -331 -799 667 -272 429 -126 579 614 261 608 187 -247 343 -161 -595 -870 539 151 -691 -371],27
-[690 152 660 -903 -980 -603],2
-[705 312 -490 256 -594 699 -748 -114 50 749 628 194 -985 -356 414 -530 721 752 39 -124 -48 409 -300 -566 -956 998 -558 -59 216 -148 280 -636 336],8
-[130 -228 65 950 -452 638 -755 375 -422 40 922 -34 -722 784 970 -18 209 -510 -870 -408 707 -224 666 -358 941 -401 444 122 610 658 -335 383 -451 -784 -546 813 546 -263 569 -538],13
-[592 -276 -988 362 -628 608 -329],1
-[287 671 -510 -492 -987 212 -448 159 865 470 974 762 412 224 -948 -449 548 192 130 -800 -672 -862 -547 171 -408 42 440 -379 653 297 -773 583 -995 569 -456 -632],15
-[735 -905 -225 -353 603 404 173 -735 461 415 415 -913 -641 175 -767 921 -713 -738 191 885 -595 207 303 -659 351 -686 161 -451 -777 969 169 -277 -525 973 -525 -505 799 660 305 147 -769 -989 771 -585],40
-[300 227 -47 -619 -210 108 252 648 -460 91 -199 443 -838 -499 867 382 15 720 796 -419 601 -946 43 998 774 -813 -191 581],15
-[405 -717 -923 -623 -369 -393 487 -263 261 373 967 -433 -849 -357 967 815 241 -693 -989 -495 -879 701 -221 773 -957],25
-[845 -523 -327 895 -875 -638 -663 -995 -593 -469 -287 453 -734 -126 295 309 458 262 -91 -149 -455 345 -155 219 339 -20 -265 -145 973 -983 635 196 -357 416 363 -442 183 459 -218],29
-[-68 883 -66 -928 626 512 165 -228 -930 -361 -205 -847 779 891 -559 80],8
-[201 773 -950 594 -181 -234 705 -360 288 394 175 628 -562 -880 90 807 -126 484 -636 346 -617 -14 -806 940 821 -272 174 538 -147 386 732 660 820 -854 -82],9
-[83 418 -544 26 -331 796 378 -692 860 -304 -544 -618 -280 -488 648 -566 285 -8 -456 936 -404 -4 -677 -632 422 -728 -929 -288 -292 -169 -578 -420 948 82 21 -810 -80 110 -342 -465 256 -524 754 594 -890 520 988 -930],8
-[540 -82 -160 -870 -444 -486 -636 910 84 225 907 -903 123 -312 -377 -453 292 196 665],7
-[-348 -968 301 -48 -328 -324],1
-[770 840 661 41 305 687 -607 -239 129 -644 -19 67 -259 837 579 -160 811 -873 587 993 -951 821 837 25 377 -995 451 453 -221 -223 -775 397 -325 807 -425 -577 991],33
-[-583 -479 -299 -253 295 197 309 611 415 -524 -237 339 -693 433 -193 -547 159 629 -305 745 395 -447 -499 -669 30 339 589 847 -709 -249 977 -138 -871 -537 817 -109 -315 892 101 121 -725 689 -267 -142 -73 -3 -77 681 -145],44
-[-377 622 904 -910 -453 -69 570 278 28 -807 -875 -932 -545 494 -758 684 32 896 513 274 -286 -38 79 991 189 -715 932 -801 -305 181 450 -333 -406 -521 745 200 -923 -856 232 -163 16 120 318 526 -417 -364],20
-[-929 -693 -771 -445 -393 -799 888 666 -941 -577 -65 -893 989 -215 -25 -575 -143 -328 -965 -240 213 741 951 -537 -143 -866 -295 993 -721 -108 -527 575 -35 345 -57],29
-[341 344 496 915],2
-[-610 743 -552 -360 -4 822 -571 653 -151 187],5
-[-300 -380 256 -726 668 469 776 608 747 279 285 -432 -429 -224 747 386 147 49 984 -152 13 -951 -491 -325 -652 -501 -483 -737 253 -567 -511 364 522 -462 419 -919 -851 -753 -187 -245 -512 -628 -5 -631 -908],26
-[-2],0
-[148 -761 -499 39 609 -241 -956 908 984 563 280 889 -428 819 -370 -832 -975 -987 679 189 -713 808 825 -925 465 270 915 -946 -199 430],18
-[337 217 -777 -323 -209 -195 -941 -709 -914 702 507 699 -272 408 -897 714 -664 -721 633 -79 -42 337 -373 -817 -413 -547 -811 -657 -99 -946 43 497 -697 -108 -826 -707 -513 645 -38 -129 719],30
-[295 149 69 -221 901 483 395 369 -423 -25 467 -162 -931 577 -269 -341 -502 -923 963 813 880 -791 334 -757 -241 -379 463 277 157 173 199 861 53 -142 -178 305 -643 -211 -986 239 -111 -831 933 -19],37
-[244 -725 977],2
-[-826 395 -813 -127 821 -885],5
-[73 415 921 337 549 -23 691 -27 889 -671 173 909 -33 -985 35 -721 979 727 -51 -707 -943 135 161 -329 925 -243 127 -641 -63 -679 537 -359 -341 768 86 547 -967 363 425 889 -5 455 759],41
-[-938 -813 -491 -924 -595 993 -840 392 147 139 815 -992 -840 609],8
-[684 -704 -864 108 732 -450 66 506 426 -50 -868 320 -188 -804 236 864 -248 -783 28 16 -354 854 152 -746 886 -960 -972 -724 146 -914 276],1
-[739 467 -547 -864 60 722 -864 -604 -615 163],5
-[-420 -818 -560 734 136 -646 -986],0
-[-290 -242 428 -848 90 -930 -158 -1000 748 -127 -358 666 -551 215 -68 284 22 -501 -658 -795 755 -334 -934 -20 850 442 -844 156 516 792 426 342 -66 -940 730 -234 -420 -284 -770 700 -160 -76 920 -428 280 396],6
-[300 -834 -120 792 359 400 902 888 202 -392 218 648 -392 316 964 -400 644 -768 772 -652 -36 836 272 -334 -444 986 528 700 434 398 -914 452 296 98 -8 -184 -674 -688 316],1
-[657 -251 247 -731 -842 -460 -859 319 801 956 508 699 221 659 461 545 -6 -724 -973 -543],14
-[353 474 -159 -379 -941 -589 989 -412 -620 -645 -752 713 768 128 75 387 -599 -728 -649 -608 926 -919 -894 -964 329 -730 332 904 448 815 694 -272 540 -22 779 -68 -311],17
-[-338 610 516 -38 840 -76 562 -513 406 710 564 744 -796 58 -762 -448 -172 -240 756 110 62 710 786 670 -417 -623 622 -716 397 -327 -338 -752 206 74 -822 -68 376 476],5
-[-647 851 198 175 -121 622],4
-[868 -518 -969 895 150 -820 -508 209 -784 -861 -837 775 -993 -383 -373 -407 -659 537 -41 -176 -37 -43 669 777 856 -215 149 879 -805 -399 -307 647 -747 -923 885 745 -713 -643 397 -85 -469 971 -828 -423 -619 885],37
-[-382 698 706 -595 742 78 873 -31 -920 770 390 648 -56 -462 748 -578 -158 -334 390 140 -574 -780 249 -457 -916 864 742 430 -498 -867 636 850 -252 -758 498 -786 -990 998 -542 -150 -226 52 391 223 902 -386],8
-[234 344 766 -46 750 111 -816 956 851 -300 -254 -670 -732 -444 448 -174 40 -584 626 -701 947 -252 870 -749 -198 -988 666 514 -953 -46 969 628],7
-[-840 -40 -266 -878 -483 -964 218 1000 -540 722 -539 154 -744 915 298 -557 -230 -882 601 470 616 -581 -868],6
-[-201 920 793 -196 444 -294 786 -50 332 -651 -497 -600 -28 -202 984 742 -534 656 -388 -756 358 648 -748 -644 -910],4
-[-273 572 -247 -379 -354 110 310 306 -448 816 965 -72 906 128 -568 -500 -358 -818 647 700 -730 -235 184 -818 -754 466 168 -380],6
-[699 -598 -594 315 72 570 807 -648 -525 137 -878 -867 -343 154 409 -611 494 513 351 725 845 -749 -321 586 -161 -733 559 -137 327],20
-[534 -132 -452 808 -404 -162 -826 946 -970 -1000 870 -308 970 -956 -268 -322 -272 974 -380 -990 492 253 -473 -854 440 -216 -658 336 87 490 630],3
-[-100 358 314 510 311 -50 -850 282 50 338 632 380 -728 677 502 304 130 262 -72 428 74 -888 349 880 428 284 -720 986 -452 -872 456 966 832 732 150 -300 -676 920 -410 152 -768],3
-[536 -584 -258 -228 702 -140 -862 620 -26 -506 844 -988 202 -196 -674 684 -870 -66 658 182 -298 -108 948 253 -472 52 969 920 -194 -882 442 202 470 647 -978 -802],3
-[355 -388 321 -183 -533 549 -637 -740 -999 -759 -111 -739 955],11
-[943 91 201 -613 343 -3 943 727 12 377 -167],10
-[821 -895 180 -357 -762],3
-[-404 -568 374 -44 398 94 -41 632 -389 238 -886 446 -90 170 863 -366 -578 -434 -520 582 -638 -93 262 513 982 6 -183 393 -648 190 -236 -544 -558 888],7
-[-81 89 -671 651 -759 -89 475 615 565 -719],10
-[639 -817 692 -694 -80 -383 -284 -754 -353 -944 -152],4
-[803 -526 381 -344 179 -170 -931 -491 180 537 483 -691 -19 -518 -903 411 233 124 758 224 -24 719 -951 -67 979 13 867 897 161 600 -124 -100 652 823 -361 -226 -224 -785 -952 341 410],24
-[-677 -925 690 -798 178 -790 -171 301 -742 -851 -554 216 -63 -433 -115 127 -121],10
-[-445 291 -112 899 697 -37 43 -839 -553 573 -867 413 525 -399 857 987 -259 32 -503 991 707 -367 795 113 -809 173 -96 -415 -795 735 -773 407 -133 -15 -555 899 693 -302 717 -391 131 895 -377 -159 -989 -479 -589],43
-[872 -350 692 -498 -629 261 214 -724 584 493 -522 -482 183 341 -560 813 946],6
-[-308 678],0
-[-734 53 -571 797 550 -776 -1 166 -310 -509 687 -314 -995 420 -683 597 172 715 -513 -631 57 -661],14
-[-270 -313 420 -783 112 0 536 -901 -268 140 -828 398 330 794 770 -996 78 751 312 -846 352 440 460 692 -716 498 -866 602 -80 -766 634 996 988 49 -866 -158 -611 604 -998 37 -656 226],7
-[-584 -249 658 619 -37 224 890 36 -436 102 562 -292 -250 548],3
-[25 -196 -787 193 931 -268 268 556 -499 -326 -250 723 -214 -25 894 -110 302 271 -984 750 -785 -871 273 -718 -829 -417 -691 279 555 190 -222 526 37 909 453 -787],20
-[188 876 660 -737 948 502 84 319 -582 -923 870 -216 537 -584 660 -656 897 976 351 208 873 99 792 -689 73 971 272 -122 805 -843 -308],13
-[-581 -425 -781 693 427 797 -615 -671 -251 27 303 939 39 -123 -855 607 853 -81 -493 139 -389 493 357 607 -543 101 -739 463 -177 -731 143 929 465 543 -779 -749 -133 645],38
-[812 222 -169 677 568],2
-[995 719 -179 -79 -361 -567 -589 79 -559 399 675 759 433 622 -195 -209 -114 -523 367 457 -811 101 643 345 995 805 -697 -152 -189 -120 -59 973 -98 -661 -967 171 -597 -375],33
-[590 -716 -888 -818 648 500 -105 104 -641 -154 -384 -26 -148 -982 40 504 212 897 796 -966 696 830 342 366 -86 976 -724 -418 -53 -446 -170 692 184 -828],4
-[-471 885 -817 755 -797 325 557 -546 817 785 691 406 -838 -803 -859 -379 -353 532 783 365 -389],17
-[-202 -119 973 859 718 -489],4
-[901 -548 648 -706 -542 -744 458 -744 410 -990 -958 -140 -312 914 54 260 -234 -864 -508 -8 901 536 -234 664 286 -534 62 394 -206 -736 -202 -878 686 148 278 430 230 -507 -172 366 -494 -586 846 -250 657 990 564],4
-[345 -978 -521],2
-[-464 104 -595 126],1
-[878 26 875 -315 -128 431 230 995 -559 185 -736 -13 -383 921 -752 -264 157 -182 428 255 239 -527 -612 257 228 -997],15
-[938 968 659 318 -984 -648 968 -761 -191 -168 489 -316 937 874 -732 -144 662 406 98 10 -410 474 415],6
-[381 637 -222 827 -192 8 -410 -520 947 321 -784 296 -379 644 22 241 313 861 158 876 234 -24 -761 -533 976 -516 611 482 476 172 922 -140 359 -504 -344 260 842 194],13
-[-778 -772 -394 -880 158 -268 -254 -652 -958 -424 -206 106 680 -848 -94 90 -22 670 828 -650 458 766 -368 542 -732 110 696 -836 -948 478 282 -304 -624 -814 -352 102 -806 602 -758 146 460 -644 -714],0
-[-865 -895 647 -277 789 -844 9 621 -745 685 -547 -847 -476 -597],12
-[-220 -815 -532 -872 -546 -178 -578 746 -144 -14 -518 -298 106 938 512 -836 86 986 -166 -932 -1000 -885 -636 694 -808 861 -990 -825 -872 -916 -509 -171 -819 920 82 -467 -586 -814 878],8
-[-256 -661 482 346 588 528 592 -190 934 714 138 976 -338 -776 -150 783 -190 671 275 -806 413 654 566 802 -124 980 -632 154 946 464],5
-[-639 -669 401 -169 -9 722 435 859 421 611 -609 -471 801 914 -706 -699 -18 -629 325 -956 357 551 941 655 -657 705 977 433 983 913 123 382 753 -115 133 -641 -555 -109 -485 405 -652 491 -892 -951 491 -609 573 373 70],40
-[-870 649 -186 362 820 143 -451 818 280 638 551 226 -682 159 -516 -442 433 -134 -304 -380 697],7
-[-531 903 162 -346 -842 -924 -603 -765 -917],5
-[-501 374 -731 -656 914 -330 -798 893 78 -734 -707 -348 36 -358 -266 538 572 -158 766 -554 -928],4
-[-276 -195 -299 711 608 -560 619 616 22 -944],4
-[574 691 969 168 561 125 463 -73 -878 -861 -888 -245 583 259 -125 -435 -645 617 -159 -823 -905 197 164 -639 -443 629 -839 540 -271 -837 -630 573 -738 -293 -753 -835 468 -271 769 764 683 132 87 11 517 489 -739],36
-[-591 985 589 795 633 293 277 477 -597 -631 339 -167 -811 -19 -537 -888 -513 435 601 219 45 303 153 -503 -313 873 -553 -107 -205 -473 -139 -871 163 119 713 -157 -941],36
-[-473 779 -93 297 625 -909 -766 -589 819 -259],9
-[752 653 -165 -965 155 286 -110 -847 729 324 -782 524 82 511 -783 39 -366 340 -312 -357 699 -907 137 -411 -613 -548 874 388 -255 906 -535 170 325 -812 -464 -530 -782 826 546 396 682 -509 879 655 -559 844 255 -116 -617],24
-[69 203 -719 789 -229 585 -537 -421 -203 7 65 374 -103 551 -150 -798 -543 -49 -479 760 75 -961 -758 272 -863 -225 -950 -879 79 -94 -469 -807 -993 103 442 -371 169 917 -521 -105 -293 -245 -277 -35 -955 749 404],37
-[-526 -790 -738 -590 -387 785 -121 67 -738 592 -779 -953 -330 822],6
-[-826 -396 -718 501 542],1
-[-340 -952 -439 -374 -282 262 -872 -548 528 -34 -20 -994 288],1
-[-652 -509 -591],2
-[935 -987 250 423 -751 -988 -945 -577 -111 527],8
-[-731 -846 561 64 127 -980 -641 -308 44 665 -561 164 -736 387 -238 600 -69 787 -657 103 492 -345],12
-[392 493 552 418 527 486 -512 181 200 946 314 52 140 -754],3
-[986 348 -922 -192 -86 -136 -48 176 650 -400 728 -592 496 -526 -160 298 -552 826 -816 -396 898 10 688 -766 -918 230 304 26 -106 -876 264 -880 970 16 666 -788 758],0
-[556 240 -71 -475 -487 -787 199 -685 115 991 215 869 -97 699 807 191 699 -471 499 653 -19 -277 503 -403 135 115 335 625 -357 803 872 755 307 737 -659 55 -445 131],35
-[-583 -404 -404 -461 -792 552 368 -647 -40],3
-[694 908 648 890 -87 556 -574 -238 26 -416 -36 52],1
-[-377 -290 -226 -630 -599 -283 14 454 578 -96 529 -48 812 -501 -9 -291 496 -146 -68],7
-[204 -128 716 980 -646 -54 442 458 38 918 908 924 -162 224 296 352 380 334 -262 -726 24 -64 -20 -818 98 -408 252 432 -516 -894 402 -94 460 -262 -638 851 970],1
-[936 -619 415 -377 -792 -968 711 999 -8 144 801 -801 289 344 -990 -898 -160 -547 503 -363 -329],12
-[-3 11 -407 -606 -376 918 916 -801 -157 12 920 -449 557 630 345 -373 -314 -943 407 586 13 498 498 342 309 91],14
-[400 -134 -204 -346 -656 -1000 66 -662 382 172 -1 -772 -230 943 936 -5 775 -148 183 -330 -416 446 75],6
-[-526 496 691 438 188 932 224 -198 572 10 -545 368 -20 -500 -313 486 419 374 107 -788],5
-[-88 -439 830 916 -562 -275 -318 762 -648 415 192 418 128 138 148 650 -634 -530 132 272 -678 942 664 -500 832 -384 -42 -762 124 794 -380 577 342 -258 -80 856 832 -482 -381],5
-[-508 500],0
-[931 -659 -943 -425 -731 -168 -541 -671 -293 -819 299 -690 805 -359 -961 -971 157 -350 -997 -125 -11 -635 -5 -265],21
-[916 97 -107 917 423 505 -596 650 707 87 -351 286 674 80 -420 40 379 246 -525 -415 -571 -434 -827 -956 115 856 -831 352 778 -166 119 956 806 749 -815 -525 -375 478 188 -616 -258 574 446],20
-[683 -976 112 247 737 -808 -764 519 377 -180 -186 -315 -636 -816 787 291 812 766 -468 -791 -167 775 -129 457 -724 638 93 -107 -157 36 241 6 538 405 -671 60 -562 738 971 -429 -276],21
-[785 -540 -859 784 47 765 819 199 477 -313 -698 965 37 -831 543 -845 -379 -659 -721 971 955 -575 114 527 195 793 615 669 -822 59 553 989 -227 -711 -37 535 689 -551 -392 -817],34
-[-710 690 -906 678 -362 -602 754 -4 -410 -246 -16 -868 444 528 568 -190 924],0
-[-97 603 -825 -920 -946 415 -967 47 819 367 305 -589 -319 285 -439 -797 -856 -144 607 305 161 -89 -358 405 793],20
-[-875 -19],2
-[422 -962 128 -838 210 764 -330 -702 -241 142 360 28 388 842 223 -509 -586 -714 -756 706 766 -410 341 639 -410 372 546 448 -76 -622 -160 773 132 -846 -736 568 58 44 394 -90 346],6
-[721 -427 508 -965 -34 -625 -786 -335 -876 -775 -376 -821 -671 -401 509 711 309 721 -964 849 -483 69 826 -855 487 -233 411 -450 -718 -832 108 629 513 -68 -798 -18 128 813 -259 -297 321 -142 -811 738 886 702 860 -464],27
-[-917 369 -185 157 661 903 -139 -409 59 -15 -449 -235 -257 825 -607 -785 305 -423 -864 915 -493 433 -453 -977 167 127],25
-[655 569 -754 -504 -529 -932 572 -12 636 763 -228 38 -746 616 698 -152 -288 134 91 752 946 -500 -464 -271 234 200 -478 853 -424 732 -654 696 -544 -44 84 979 70 822 44 236 861 -546 437 -194 940 603 30 -562],11
-[768 220 -12 480 -748 -972 558 -534 366 -475 923 742 -350 812 562 268 394 -888 -268 385 -771 919 1000 -239 -123 -36 347 -1000 648 -470 -748 114 -524 678 -682 832 91 421],10
-[958 -269 -541 892 -749 277 969 -138 284 183 142 -262 -212 -862 -515 458 -507 -981 280 299 574 239 933 -921 285 696 -867 242 -64 731 817],17
-[137 -815 -493 815 -93 457 -228 359 -767 763 -431 -616 -885 963 717 373 -95 -668 751 3 -873 245 343 -959 809 449 835 531 246 -847 -913 -567 -831 -241 511 -835 -907 -231 456 4],34
-[-292 -141 403 -588 -521 -965],4
-[-561 782 291 -421 -948 277 -807 -643 645 -327 -195 243 -451 231 -725 651 165 617],16
-[-169 645 781 -951 389 631 -847 -781 -625 561 -541 161 -495 759 -627 -967 -147 -619 229 319 581 -391 877 165 449 -323 -335 -693],28
-[271 531 517 567 -71 527 665 277 -621 227 -529 197 843 -109 87 567 657 -695 227 -911 -391 541 -203 337 -677 837 -399 967 573 523 325 -687 997 -459 257],35
-[-263 -635 849 469 489 -795 -311 -737 351 783 885 -811 -744 987 -17 -499 -877 839 751 -53 -333 631 553 -309 -235 100 -45 -639 833 398 841 -521 -369 471 859 -19 147 -737 -355 -333 101 680 179 -463 55 -693],42
-[972 -394 151 -736 -268 940 -516 -632 600 -988 416 598 -872 -874 346 -914 236 -732 968 380 -610 -690 988 226 794 8 794 566 816 -892 -554 -290 -332 428 -988 316 -336 638 -446 -274 28 -506 746 702 302 358 -804 930 -660],1
-[812 -491 133 337 -905 -479 239 646 16 541 -799 -495 1 789 -983 -391 -571 305 109 -451 661 319 -799 -323 464 -214 -360 -379 677 637 -354 695 628 186 -525 -724 919 -945],28
-[464 65 -814 -969 824 329 -894 98 -612 -866 707 30 472 -920 731 -654 822 241 -331 -229 -985 -990 10 -623 -51 -580 -236 427 160 168 199 613 436 790 391 -789 115 -963 951 944 -237 547 -493],22
-[-167 660],1
-[-711 638 571 648 687 -555 805 659 723 479 53 403 -685 479 903 274 777 -415 -213 827],17
-[550 614 -941 -214 -969 -28 -848 -597 -626 505 267 -111 378 491 640 404 430 514 -61 186 421 203 497 -798 -930 168 -262 644 -516 367 216 173 -748 -4 598 524 536 774 827 802 -206 -643 -792 -796 -319 -277 -96 438 507],18
-[-699 -559 -841 -555 208 -589 668 -203 -172 502 -861 -536 990 539 245 31 -475 -43 443 257 468 417 580 557 -821 811 -789 912 563 -313 416 765 -317 418 -929 -227 801 -147 -408 -644 118 281 845 113 -151 -265 -794 -750 413 347],34
-[839 123 -86 235 255 -161 95 497 451 -661 -829 -555 889 -669 -589 -813 519 -957 -587 699 -609 439 -119 -513 -691 861 -247 491 -947 547 -757 -335 847 631 -25 789 541 -12],36
-[-289 173 504 81 -979 798 477 495 -757 -832 126 -731 79 653 -709 133 -267 -5 -417 -838 -573 -373 -796 283 55 -3 -591 -203 671 303 149 861 -357 -265 692 569 789 365 299 -519 463 955 558 404 -819 -999 -479],38
-[-491 802 -552 -993 -425 -401 139 -214 167 -158 -973 628 828 45 -436 -642 974 583 189 -733 -666 -404 2 -448 871 693 100],13
-[804 -595 -931 -6 264 192 967 755 553 -143 -897 829 -795 238 716 109 422 -371 959 -683 846 869 533 564 -584 -825 879 931 914 323 895 -123 -451 -799 414 34 -978 -809 -688 -435 -697 489 -896 -719 126 269 645 501 665 235],33
-[-214 -56 -199 298 -260 -984 -199 901 984 434 13 100 -857 -518 733 -573 801 168 671 877 -636 130 486 -100 -298 350 428 -936 -144 31 604 733 -341 916 -131 -412 168 -520 -158 -350 161 648 363 -620 128 666 -286 237 -69 -944],18
-[471 -653 -181],3
-[559],1
-[-318 142 221 -176 -156 -870 -340 319 931 -594 -11 289 -406 -576 737 -942 211 896],7
-[-385 615 521 749 81 870 -510 426 655 -603 943 605 -687 -812 539 -496 -485 -101 -523],14
-[-784 -899 338 134 333 691 797 407 835 681 69 560 -158 -100 443 606 574 538 57 -331 780 455 666 302 316 513 -606 -403 -107 225 68 83 286 -900 -426 -64 811],18
-[-617 969 570 -456 -222 -355 -151 -398 -554 -247 700 -290 -588 -498 -830 474 -615 428 -719],7
-[-178 519 940 740 271 705 619 171 -564 -17 483 71 -167 530 923 123],11
-[706 280 -348 -744 -248 54 -790 -572 -366 -142 52 708 -148 662 -588 -722 744 942 -768 -36 688 158 -934 638 -884 -250 -42 704 -418 434 -670 162 -392 -948 374 -120 217 -692 506 108 -362 386 872 100],1
-[661 -915 107 -861 -119 -51 -699 -164 -779 -77 -502 705 -156 224 987 874 216 -936 131 401 -970 925 -321 -664 269 -261 -795 845 457 -533 27 -429 -500 934 788 -859 19 -929 -929 -806 -771 -67 107 779],31
-[-565 11 -791],3
-[-25 257 459 925 -857 279 -595 -339 877 -556 -897 254 -91 941 814 877 -381 463 -264 -559 -431 411 -575 -570 -104 -296],19
-[91 -498 629 -806 -500 -17 -11 -350 -782 -588],4
-[90 748 201 -956 -740 -367 -361 -219 -146 512 901 -811 -645 -532 809 -358 554 832 593 -926 509 878 338 282 -813 401 -620 771 838 -873],14
-[-866 435 -470 126 -123 848 -387 -439 900 -898 329 -295 -93 -881 726 262 108 877 -498 -867 694 259 -789 -118 -176 254 -343 954 -754 -891 1 813 452 -16 -604 -252 -37 -808 -559 -507 -20 839 654 564 -845 346 421],22
-[-953 -314 766 -394 818 40 -456 902 537 -308 -1000 -654 -346 71 -486 -732 -368 -792 28 -900 300],3
-[-270 -290 -101 396 -21 -511 779 671 -990 15 664 671 -979 -95 -461 -605 355 568 -183 883 -399 715 -673 -240 -442 -162 7 479 173 -657 229 971 -7 267 -948 778 -955 -8 782 -275],27
-[-393 857 -275 438 -391 -981 484 886],5
-[486 210 -566 -169 657 -689 397 767 -748 793 999 810 41 -798 -963 856 624 -503 796 793 786 935 128 -181 -397 -79 631 -28 -157 737 -182 829 64 966 -883 -607 -121 743 -187 -68 289 -219 405 279 -951 -637 -599 -635 899 729],34
-[-713 628 774 682 -512 742 -173 -153 804 478 -727 -837 -175 -32 128 -193 758 622 -456 -57 199 328 633 413 411 811 -440 612 -974 -146 -371 233 -893 -178 -89],17
-[389 -143 -679 976 768 -100 -449 348 -159 -873 -199 -998 -471],8
-[834 -282 80 -878 6 -894 140 -518 426 616 -502 -846 402 -730 -548 844 -556 207 264 746 -576 501 950 52 704 -116 622 -796],2
-[977 -272 226 325 954 770 666 29 -296 -478 -62 611 -145 -446 853 -374 176 -746 550 -266 184 -613 218 -854 835 -864 318 -259 205 -514 948 605 -765 67 402 604 -492 -172 978 -984 -280 -764 254 -126 387 -136 -400 108 598],14
-[-882 311 681 -875 -559 628 844 -978 457 378 808 154 360 374 348 544 284 236 -2 -142 858 -514 -417 442 -356],6
-[371 -768 742 391 313 -261 24 -426 958 -353 -967 -740 467 523 -529 -167 773 761 -712],12
-[408 -705 -259 765 -321 -8 85 728 375 310 -210 552 -412 563 -517 791 -26 382 70 374 355 479 923 -82 -584 504 -67 801 833 -731 -869 983 -506 -97 108 708 681 941 -388 -979 745 -76 221 408 328 -524 -652 -723 -801],26
-[760 -340 -326 562 262 -172 511 -180 599 452 -697 -3 611 -772 105 936 484 -354 -546 -816 -212 118 -490 324 -822 -768 -764],6
-[860 6 -277 -766 -375 558 957 183 37 -224 424 -549 123 -326 -305 -780 20 111 -541 12 -217 -372 -364 426 128 130 960 -314],11
-[-602 -722 -95 334 -496 -71 46 681 -497 -638 -787 -263 341 759 -282],8
-[-308 -543 71 637 734 412 71 806 -588 -936 158 636 887 988 909 792 -180 -106 -441 361 -620 660 865 -112],9
-[-729 -805 92 973 990 281 18 652 5 -921 830 -484 -694 905],7
-[-709 524 884 -879 -514 352 513 -824 -114 85 516 -740 -670 585 -898 314 828 -948 468 304 -194 -32 59 914 -372 243 92 -977 -675 609 919 664 -122 766 946 489 257 -778],13
-[-7 -441],2
-[-815 -421 -709],3
-[-71 -256 -794 -88 925 544 -617 -898 803 216 556 -646 761 902 -127 -145 766 -646 -830 14 886 153 -988 757 -35 -869 706 -698 844 267 -910 -422 187 937 -963 644 -478 275 151 104 -441 384 -700 221 -126 -363 441 514 231 730],22
-[65 726 618 396 -392],1
-[-827 -533 -861],3
-[-911],1
-[250 -514 -405 722 -156 -836 516 662 -695 872 564 -823 376 -322 -289],4
-[507 697 -866 105 315 305 -691],6
-[916 -742 770 172 -676 -304 -386 658 938 541 -796 388 -190 -940 -632 526 -228 896 -270 424 -514 -718 454 106 490 400 816],1
-[-802 -996 451 534 -736 267 -595 -68 402 819 -961 906 -73 -854 -820 157 615 -864 876 -543 -224 -750 295 236 516 -998 201 564 512 -358 -278 580 296 976 58 -865 -6],12
-[-702 312 479 906 -130 563 -67 -38 56 457 -384 630 788 600 -349 210 445 -13 -775],8
-[988 522 960 184 -164 -364],0
-[151 798 865 581 455],4
-[415 255 -931 598 -696 509 539 359 411 -607 -61 117 -828 364 426 -759 745 957 267 -297 -808 -305 -691 -43 -461 981 305 -815 541 -723 203 -171 -845 -945 -751 584 -869 317],31
-[-810 441 974 555 213 809 578 87 163 -917 669 -925 672 -415 385 -579 930 -876 -95 -347 -187 105 -151 763 222 447 -957 45 354 899 -393 -343 945 79 141 -631 227 -450 -806 529 8 977 -915 -394 -164 -195 278 488 -235],34
-[-733 -979],2
-[638 -193],1
-[-803 -437 -11 -260 905 -543 625 845 263 -719 269 711 -922 -623 -100 -407 755 -383 -345 333 -511 -450 205 19 622 -815 -203 42 -291 -253 -569 187 -67 -442 941 785],29
-[-947 917 873 886 -10 697 669 303 734 978 -649 377 -326 643 -195 -423 -854 149 -546 663 506 -495 -41 60 752 539 -471 319],18
-[-299 -798 539 -639 222 -171 923 897 297 -824 943 356 -583 -14 -564 -681 827 -853 678 655 792 606 267 214 188],14
-[-980 230],0
-[19 -629 -561 -639 -551 -207 -845 -505 89 -5 -659 -123 800 681 687 -109 983 -903 555 579 877 -981 -121 487 -19 -579 -975 687 -19 251 -119 -171 -499 523 -373 203 -963 -571],37
-[-59 -595 -45 -12 -923 -348 745 -658],5
-[-76 -276 -534 676 -436 -880 -894 68 102 182 -962 -842 -538 -134 -512 -1000 -276 738 432 -952 360 88 -162 20 -534 844],0
-[737 877 515 -465 947 753 -270 -618 1000 243 -236 -893 -179 629 -882 -881 -419 -786 184 742 -324 -629 -255 -47 155 -11 693 1 -425 375 -629 88 258 -545 799 -576 -645 -148 3 -634 684 245 409 -478 -904 121],29
-[904 418 672 85 -587 834 522 -592 -26 -866 -789 -128 908 -242 4 688 -496 -738 -834 866 -170 -22 650 -318 846 -734 238 -540 381],4
-[-678 939 85 224],2
-[-723 -716],1
-[-559 291 311 -877 998 -613 467 260 -685 39 410 -339 -302 -594 -449 -228 -816 -837 -462 118 -720 -394 574 -678 198 579 331 -206 -664 -378 -988 -364 -34 -537 729 909 645 -517 344 -121 -818 899 764 54 166 122],20
-[-823 -385 695 103 307 447 780 -351 -187 -407 -617 561 27 337 -587 -223 -661 -93 413 379 -570 -249 903 30 -443 -559 437 359 315 -847 939 -649 861 -769 -689 -180 -373 151 -144 106 -989 -366],35
-[-29 293 189 403 -345 475 621 79 949 81 67 -327 841 683 999 809 529 135 409 -61 929 -337 693 479 137 179 -557],27
-[92 167 197 670 517 402 237 -64 -404 -27 992 547 -722 408 166 233 970 -640 294 -603 524 -428 548 -579 401 -550 -182 -382 -151],11
-[-656 652 -449 -800 -124 -544 920 -748 326 874],1
-[-365 595 -367 497],4
-[-761 -449 -78 -288 -558 788],2
-[-285 -899 899 426 113 -173 -45 -422 445 408 -826 -551 29 323 -432 -990 889 421 168 -308 954 -673 -176 -397 -408 63],15
-[171 946 925 -88 -204 -870 -230 191 495 495 282],5
-[122 -480 886 520 -393 129 -274],2
-[-23 -685 207 -341 677 -137 -781 415 493 -637 -258 -501 -962 879 -107 -865 -841 -447 -707 915 -931 367 -805 -401 -853 -499 -705 761 960 89 785 519 -397 951 971 -113 -969 -721 -165 109 -569],38
-[-431 -127 521 -327 -33 333 -57 659 145 685 401 819 601 -57 891 921 -641 375 571],19
-[552 -842 166],0
-[-957 451 857 -71 -741 -235 -473 367 93 93 -157 -468 31 539 77 943],15
-[-170 817 476 -325 -57 344 -265 -509 650 97 7 694 619 -676 224 -689 -433 -908 84 -444 673 238 536 350 194 -798 -728 529 -712 642 575 -747 -644 -344 -507 12 752 -658 2 -617 -354 -312],16
-[-548 74 -590 -826 -792 -56],0
-[-110 -499 -438 828 -443 -191 880 435 718 744 336 -565 749 -64 975 -73 762 -496 -839 176 791 911 -748 -403 427 334 -12 452 -566 495 -178 645 473 621 310 -375 -543 -990 -526 967 -237 -589 140 -834 374],22
-[-953 574 881 -963 -677 809 -197 339 879 723 67 -393 47 903 923 709 191 699 127 -888 929 585 83 -807 -557 -972],23
-[741 -529 159 -629 -465 -624 977 -239 -935 133 409 -351 -497 112 -635 451 -701 763 -267 535 509 105 635 -559 106 -361 -343 83],25
-[-476 -12 373 506 -430 454 -132 -230 604 -450 502 -180 684 884 520 -406 -306 274 32 -778 -958 27 656 -538 482],2
-[901 13 -185 401 -791 -249 -489 -429 -745 435 -109 937 -871 901 -429 29 -863 197 763 -745 -941 -957 -139 -617 -481 695 677 -29 -855 -391 531 17 757 583 -997 633 685 -29 -229 -573 59 749 -427 -775 539 3 -743],47
-[-962 172 -416 554 668 692 112 -711 934],1
-[638 -512 -174 -200 -731 -704],1
-[434 231 -94 -985 172 -141 -822 -279 216 505 -970 -119 -470 -600 884 -692 -72 91 -571 -147 -716 459 981 -49 -645 323 347 265 673],17
-[189 917 513 -89 500 399 -463 846 363 -169 -109 581 -913 777 -963 -657 586 -641 -212 221 -15 -331 -405 132 190 334 36 -235 450 581 67 -443 287 -715 -863 -127 -977 589 -447 492 -402],30
-[340 724 482 758 -327 -710 454 -892 888 -654 -336 722 -956 -348 1000 344 913 -557 192 16 -154 -397 526 -424 118 -769 -542 592 764 414 60 -536 -366 -594 914 761 -426 -77 338 202 398 -600],7
-[-59 882 -583 -501 -27 -679 -331 689 -625 647 -413 343],11
-[920 759 634],1
-[383 -600 528 343 44 34 94 -396 -457 -584 -940 696 448 -85 685 -21 934 40 -237 -284 100 58 902 667 -496 -800 756 -226],8
-[17 670 -67 238 -601 290 -583 780 -147 254 34 265 -538 -11 983 -328 215 633 724 85 -340 98 319 65 -71 -454 622 812 14 657 -446 91],16
-[420 -500 282 606 934 -900 882 340 256 -864 -584 10 -714 24 330 -796 -862 493 -933 -422 218 884 -164 425 804 -984 674 72 260 406 -322 292 -386 526 230 774 -996 684 -954 458 -370],3
-[-983 631 -31 93 519 -916 -301 -610 241 187 764 -452 507 -312 -533 -287 -658 -711 865 537 -195 -355 -721 206 -871 301 -103 -873 -395 -309 -609 197 -583 405],27
-[353 591 500 -31],3
-[187 614 781 -183 -519 -790 -860 592 247 31 60 -753 -296 116 -99],8
-[523 607 517 -275 683 235 -207 -969 -519 375 191 543 -841 -581 -579 -303 -669 597 -973 513 549 789 281 -837 -845 67 -911 -663 -119 849 673 -183 -222 551 -973 692 -199],35
-[919 437 255 979 301 683 163 601 934 573 436 992 -157 511 67 988 823 -991 -812 127 -509 -632 -67 -621 887 -697 -845 590],21
-[367 -828 -976 732 -138 885 133 -959 144 342],4
-[-388 465 811 -528 631 800 648 -894 436],3
-[-44 924 -121 970 -48 926 34 588 -618 -272 -444 754 360 502 78 -734 -172 -704 -676 746 -554 746],1
-[282 -656 190 -718 -412 735 675 -71 938 -530 -579 -463 -510 -513 822 822 520 -303 -896 -708 291 830 -811 502 -892 -340 -156 -498 142 -838 78 -756 953 711 349 622],12
-[-355 811 253 -876 147 856 -513 -179 -464 119 327 -863 -975 566 -754 -841 -937 327 -736 -747 888 -181 -628 122 -633 191],17
-[-291 508 -978 -79 630 -312 -74 -830 566 236 -526],2
-[-595 331 595 907 -235 547 155 -427 443 586 131 -411 425],12
-[875 -817 175 669 -430 901 -948 -855 763 -401 42 -885 -983 531 395 423 -173 857 -863 -317 -519],18
-[-767 271 219 966 841 -641 97 -121 23 -945 213 -749 -499 823 705 915 521 -131 481 848],18
-[923 655 40 183],3
-[-733 -724 847 -49 -240 -342 380 -756 107 -970],4
-[540 -780 -836 778 -508 -228 -322 586 156 382 -460 560 450 564 -372 -596 -148 778 -402 -792 -256 634 376 -460 -747 874 -458 -440 145 -930],2
-[97 -151 891 491 -521 -898 -419 -289 -233 -511 237 -999 -387 951 -596 852 814 -773 785 674 827 49 45 993 781 -435 -437 61 -889 -281 -607 -252 11 329 -119 653 -981 276 104 297 977],33
-[746],0
-[803 -186 121 542 -991 -572 -597 -463 992 -882 261 121 733 719 -638 -458 552 480 841 674],10
-[979 -231 -825 185 913 979 241],7
-[978 -459 640 -983 -282 -795 54 -714 -150 916 698 815 -680 -619 288 -873 -564 388 -226 -677 521 154 -354 -143 701],10
-[45 0 -121 522 715 188 -395 59 -398 772 392 -218 339 270 -294 650 152 -453 766 707 -913 101 193 -213 308 -461],13
-[-348 962],0
-[928 -256 840 -434 606 -680 308 114 -4 -604 -234 -228 569 191 -576 -450 716 796 -262 -22],2
-[-71 827 -513 627 -131 875 -295 406 289 747 -821 81 -71 -221 -435 579 545 -47 629 677 -783 -821 -723 -685],23
-[281 207 335 -326 -65 711 -542 705 120 -997 -961 7 501 181 -9 -897 396 -239 -291 121 -541 -133 -46 809],19
-[-869 -285 257],3
-[267 -797 -351 -328 -309 -418 787 829 757 785 -531 -862 460 -312 -267 689 -323 -691 585 -134 -423],15
-[-734 383 626 -990 264],1
-[-327 -273 241 -641 -332 -628 -451 -954 275 90 -447 -697 -381 142 -322 499 -595 -414 973 -426 173 -208 -773 54 -839 539 -62 467 813 868 -663 645 -408 -66 -6 -788 -422 -520 745 -760 32 -25 -211 691 873 -699 -673],27
-[966 -881 -852 197 571 -849 553 988 706 47 -895 869 801 -927 995 -450 822 -63 -594 259 23 385 319 -970 605 759 278 -616 -465 309 -523 -143 -766 -109 -997 960],24
-[699 -403 -303 133 -965 368 -629 -353 83 -505 435 445 -919 -649 -947 -273 869 407 53 -134 -643 393 63 252 999 273],23
-[-51 -279 -285 -428 -527 151 815 327 -639 -169 942 -783 -797 1000 -768 277 -281 397 748 -526 -31 -329 377 355 518 207 475 287 -69 -523 716 483 -845 574 -363],26
-[185 269 -971 11 -220 -188 733 75 992 445 -267 328 164 -231 508 -65 629 493 -130 299 493 -155 -263 -95 974 903 -705 805 -178 -721 -743 660 -516 851 427 -110 45 -831 929 851 -251 -390 925 -953],31
-[-182 -559 -681 -349 -477 -809 231 685 -409 843 895 537 -509 500 -263 310 413 346 647 -229 579 -283 671 299 253 567 993 -555 -411 321 -649 607 499 -521 -591 -301 128 874],32
-[-50 -626 706 909 -864 646 -954 258 284 658 -454 -10 53 748 -600 848 276 522 -404 -370 834 -605 566 189 -774 -463 -197 -692 792 856 -274 -274 46 -898 -150 -804 498 100 -506 -79],7
-[-934 24 32 110 572 -100 306 -300 -562 -123 -50 -361 -487 -135 95 946 -57 938 -559 -990],7
-[-22 772 -76 954 -926 -542 806 -662 -50 855 -736 -48 951 110 -44 -752 832 -89 -956 200 -852 383 588 575 863 133 -722 -862 -274 359 -748 569 -871 974 370 -966 -877 -410 582 -186 -41 -340 654 -944 -385 -502 -230 752 -772 -581],14
-[-203 54 -184 658 -853 144 -814 110 -246 -593 673 -460 558 -334 -16 784 -930 164 -201 -575 -998 -560 843 -470 808],7
-[-619 116 988 -30 727 775 -699 549 -521 143 348 567 -544 -146 766 -264 807 571 -142 -612 215 -963 -651 514 -734],13
-[219 -807 -677 821 697 -557],6
-[-372 -905 376 867 -10 -700 965 -914 -982 409 23 -185 742 967 894 767 -97 295 -341 28 492 -34 -638 -425 160 -713 38 -788 -337 572 -658 -491 -794 240 232 -700 259 -845],17
-[-663 978 822 -917 -74 -660 869 293 -632 525 -896 -582 -504 68 888 -445 54 748 -370 -118 -259 -36 376 -444 541 46 483],9
-[-715 40 -986 -663 501 -445 -123 219 -140 693 -150 -513 -3 -209 265 -865 693 -723 907 -230 -849 781 41 989 926 868 721 981 -123 -968 847 -354 395 547 115 -965 127 119 -694 239 -189 243 135],33
-[-237 -679 -501 -429 -187 -681 -700 781 -107],8
-[-113 -734 -477 234 591 594 940 -202 14 -803 794 728 906 -742 303 -57 -913 804 -404 -511 440],8
-[-981],1
-[771 777 -161 -27 -215 739 -499 35 -201 241 895 -507 319 -252 133 -431 299 -779 -545 -601 755 -549 317 747 399 -799 -471 -377 -651 666 -321 -99 615 -366 -707 835 351 -805 -849 233 -581 -177 139],40
-[-215 -359 251 -284 171 218],4
-[-461 -731 519 -223],4
-[-155 -232 867 633 294 793 327 309 -127 -535 -347 -509],10
-[-158 448 466 -20 -90 -968 -962 53 -692 -573 -662 -755 -708 -778 664],3
-[-515 3 639 13 -47 -93 -283 203 827 -85 -330 567 723 849 -447 -191 539 625 695 -281 -455 -121 987 598 789 481 -527 871 237 -753 -923 -241 -223 779 47 409 719 -894],35
-[875 661 499 -122 -781 879 -505 -171 192 291 -543 -65 -19 -187 -857 -179],14
-[49 625 102 803 312 236 -403 937 978 -767],6
-[-824 703 -316 -385 -434 314 375 781 502 -862 -977 782 -566 557 904 -681 -642 952 596 816 480 443 -313 -902 -588 -867 -150 -278 315 -226 557 -520 660 56 474 274 719 107 -594 -64 -196 918 -2],14
-[-995 -299 -155 -640 819 -714 -305 -568 898 104 -115 241 -785 -497 411 160 -794 805 384],11
-[802 -970 -456 684],0
-[777 881 681 -697 -53 -648 895 325 -61 -677 853 -877 -121 -439 -265],14
-[-549 -37 -127 -705 421 -168 151 -423 -835 933 857 -55 967 -528 445 -309 221 -506 -73 -7 669 -983 181 -175 -869 385 237 727 897 347 565 -602 963 -183 -767 -177 -224 427 707 -875 173 434 205 499],38
-[289 -325 883 854 136 316 -586 201 685 -901 948 -550 828 382 -582 458 826 132 136 -290 -856 68 128 196 86 494 696 -856 918 -732 -254 -360 124 743 563 -460 -234 -548 316 695 507 820 647 -808 -458 -314],11
-[-686 100 -58 823 -72 -475 -423 -120 -746 -116 749 190 306 -166 787 -587 -28 -968 -240 966 -714 613 475 -291 -494 765 619 830 -954 -402 595 -52 -804],12
-[-804 415 -16 680 -78 766 842 -514 766 103 547 -626 838 -416 793 -469 -600 520 -292 987 -580 -496 -82],6
-[-489 -243 909 14 736 295 997 -451 783 -916 -544 -817 -890 50 -239 624 619],10
-[437 13 -553 309 -521 -228 -731 -61 665 813 -113 -935 89 -7 513 359 125],16
-[-782 356 -531 720],1
-[-767 809 -59 201 80 -607 -549 627 -55 -55 295 -727 -621 607 -251 -785 -517 685 563 753 449 -517 -605 351 453 -247 143 371 497 628 370],28
-[-775 -313 665 469 -408 -787 -940 717 -65 275 959 -156 -991 955 -579 -385 897 -438 -635 -68 423 889 -257 -327 255 -901 -754],21
-[-963 333 451 -173 843 -255 -11 -338 -930 -735 -687 -321 -880 -190 366 -706 -441 -672 -909 -227 230 -860 -86],13
-[678 -114 -620 -247 -446 -942 688 -22],1
-[840 364 750],0
-[-440 -941 -232 758 -496 260 -2 950 -756 -672 464 -416 374 -812 594 -456 -30 -544 52 -838 98 -222 336 254 516 628 130],1
-[-842 439 -510 426 149 967 886 556 487 693 -152 527 203 852 -828 244 648 -700 -284 -551 -693 -863 349 283 -398 149 649 -697 342],15
-[867 268 -441 921 649 -642 -492 827 -769 -158 -773 275 -867 -75 476 871 -327 -900 -175 -335 904 871 807 -669 -772 -297 -860 653 905 -205 -723 499 -418 -999 709 252 -239 850 259 -862],27
-[-767 -546 294 294 -492 167 778 -997 -330 279 -858 -385 -195 322 592 -121 857 232 -847 -979 19 -725 911 -965 806 280 -887 4 34 660 740 833],16
-[-16 871 -496 691 557 732 -143 -537 897 -777 -766 849 201 -970 615 542 644 0 -865 31 209 232 902 -999 111 917 570 927 272 734 -449 -748 295 -270 -803 -821 -714 711 -447],23
-[55 945 954 -812 -735 813 809 -37 993 -361 677 447 209 856 -763 -285 -5 -21 765 -188 239 -119 -149 681 -431 -318 559 -207 -763 141 -953 -887 -865 289 -775 -669 -89 -803 309 -419 -741 -935 489 251 -649 908 741],41
-[-473 -895 -648 -963 925 -843 397 557 -799 911 -101 -735 359 121 250 -343 -235 813 401 593 691 -207 -733 -349 213 -121 545 509 -647 597 840 177 683 -559 1 453 735 655 -113 -45 301 1 903 -527 490 947 -49 34],43
-[-131 -417 -138 -14 -351 75 626 -565 -519 426 -343 -209 945 695 773 798 -191 -772 -43 -839 -448 -635 -93 -476 -401 -803 516 -295 -783 -4 -945 -616 -677],22
-[-223 705],2
-[917 -456 -788 533 979],3
-[286 -687 866 -915 850 42 529 569 -982 110 400 -322 136 -894 -925 348 189 920 565 -795 -281 -884 -24 115 -198 -813 8 133 -863 262 -362 -167 699 763 -668 -948 -447 20 131 946 -164],18
-[-348 572 -331 -360 258 -178 -833 531 -846 772],3
-[372 -16 930 -186 535 -414 526 -832 598 -740 107 63 -251 724 280 515 90 -336 172 624],5
-[-757 265 393 389 243 -667 -116 771 -866 895 465 769 -241 -207 -307 423 560 -21 301 743 -527 -933 -824 522 73 885 405 -917 -163 17 433 -373 587 -499 -175 -975 -515],32
-[902 -324 -694 -814 -342 -354 -535 -548 220 585 -256 8 537 223 705 714 -195 289 -120 -261 13 290 -986 50 -546 -816 -457 990 -377 -863 -236],12
-[-565],1
-[-828 -288 -96 -52 -826 996 552 824 -870 626 -452 -144 -470 440 242 -864 -782 586 -170 -380 522 180 -838 -278 644 40 760 98 -948 -972 -630 -268 668],0
-[473 459 729 859 -107 123 -833 -923 -697 909 -227 623 -3 643 -861 813 -539 683 -51 -81 561 545 939 -269 -3 201],26
-[-817 996 465 -19 550 397 -482 -718 -386 400 -184 439 -365 -23 357 736 799 758 639 173 331 757 -511 952 3],15
-[750 856 -544 445 964 -972 758 550 -545 738 -21 306 695 -2 192 248 904 -925 -622 600 260 -32 -418 -488 -691 886 40 -440 584 -316 -532 538 -566],6
-[-388 254 -64 -76 894 101 379 298 308 956 750 -746 532 -796 4 560 982 -226 896 -724 790 486 556 -688 -806 158 196 -438 -807 -970 408 802 134 -612 888 -526 -2 832 -611 -990 -468 -98],4
-[-531 -561 -181 -293 383 -369 -331 -405 -971 953 -411 31 537 539 799 859 -835 795 449 821 571 -845 859 -647 141 -67 381 347 205 985],30
-[590 -60 872 -763 -71 582 -906 442 -419],3
-[-789 338 128 846 -556 -802],1
-[696 -407 811 -203 676 577 63 985 687 -231 605 449 -639 -633 289 999 -957 615 -217 601 -125 251 183 587 -737 143 989 87 -685 -139 -781 391 999 167 -199 -891 391],35
-[-845 174 -444 -123 -955 -123 790 -450 -141 -924 822 272 869 487 -95 82 -32],8
-[924 -194 -85 -905 546 -160 894 -325 -979 -623],5
-[-3 -792 445 610 -985 847 -245 -556 -804 -4 537 -991 -563 629 -329 763 265 111 635 708 471 717 999 992 -786 127 822 -685 930 -866 194 -439 -608 816],20
-[-15 -138 360 -328 -829 488 566 -74 -554 -696 723],3
-[-718 -580 -87 456 -37 -326 85 -952 -394 -214 -116 613 98 848 4 19 415 -827 192 -437 526 126 -191 -302 229 -879 531 942 -432],12
-[529 -239 315 197 -395 -685 -503 -307 303 -223 -477 -273 409 -975 771 874 308 -325 709 549 -599 -351 229 378 585 -229 -943 -437 -71 467 127 -75 -73 441 -813 -605 -183 -977 -333 -729 73],38
-[-109 629 -309 457 951 321 577 719 87 461 -109 -495 773 791 313 753 -755 955 -198 -729 -757 417 170],21
-[-376 -141 -255 31 -435 -881 -441 411 417 941 -214 -397 785 305 975 -717 315 -189 -387 273 65 847 427 263 -927 -386 180 -185 59 -207 167 -88 193 431],29
-[861],1
-[55 673 -712 -349 431 639 41 774 -726 -385 435 203 -861 194 666 259 103 117 535 852 557 -171 241 916 -756 -846 627 967 -353 -665 -895 583 -222 -335],24
-[-671 -605 -655 -589 -131 59 -391 -395 -53 -607 -469 -603 -639 -315 321 869 85 -801 -323 -87 147 -269 -893 -159 235 -661 -925 -767 -11 -687],30
-[-933 -93 192 -685 439 573 -523 74 -132 640 -999 -928 -940 766 -368 -688 541 -286 938 -33 983 -483 746 851 -340 -635 795 -754 174 426 867 964 275 -818 623 -344 -369 -89 830 582 591 -12 -49 159 287],23
-[-694 -837 725 920 891 295 856 -496 -886 -842 902 94 774 -403 393 -559 -622 940 631 -441 -130 -298 128 -1 78 850 -930 831 300 362 -714 -296 713 11 -136 -516 -26 -882 -387 -523 423 -58 968 765],17
-[-327 720 -739 -296 -462 -815 -308 690 -824 538 -608 298 -500 462 592 -510 -547 74 888 118 -482 106 -624 -769 -559 320 -892 232 849 -514 -498 124 862 -631 978 -839 -521 -486 666 270 976 -250 -66 994],10
-[666 -510 385 -532 460 -511 283 -308 -291 -854 666 -317 -184 -594 673 690 -258 -977 -486 478 454 630],7
-[461 671 384 127 37 -778 -716 27 -804 -1 -338 708 579 -200 -390 713 -755 -742 427 -823 888 -725 -683 -889 614 189 -701 -631],17
-[196 658 277 -572 264 997 735 -470 -696 -450 275 -532 913 840 -171 200 -992 230 496 609 702],7
-[-76 474 -68 454 620 802 -504 -862 -742 -280 364 -782 -830 106 108 344 -844 -604 86 74 -928 632 -810 720 210 54 -238 310 2 -214 60 560 424 46 -394 202 -808],0
-[406 -612 798 954 -944 996 924 442 -194 568 800 -706 -688 -698 -784 -268 -172 979 -56 480 -578 504 322 -447 -10 226 465 -686 -900 -658 258 -722 230 334 174 338 -826 -776],3
-[-775 371 158 843 15 -345 -102 -99 -919 741 -987 -243 -375 299 -955 363 399 45 -836 229 -668 -589 633 -356 -569 277 543 283 23 867 667 735 17 -839 765 -239 -775 -891 -493 -953 399 -143 -685 313],39
-[826 -55 -130 -178 543],2
-[-897 -76 -13 -785 136 -73 164 627 -34 -280 938 -222 760 458],5
-[598 -101 -643 885 -33 512 138 -35 227 597 230 -8 -805 176 -714 323 -315 919 -371 -356 759 43 941 61 453 -36 102 -185 734 -306 -233 736],19
-[895 175 915 -485 829 689 437 461 -39 867 -13 -221 -557 129 189 -887 403 -143 923 685 -621 -845 -545 879 607],25
-[-563 -598 -847 -377 -722 337 -77 123 -718 -198 -949 164 -192 -485 -913 40 377 585 359 -589 -375 -313 200 775 420 628 -127 -225 271 652 78 -923 -385 -6 -585 755 226 -186],23
-[885 -499 17 713 -577 -907 -429 -197 -945 775 -349 45 -897 -995 405 -1 -709 239 585 125 702 -219 -667 533 649],24
-[860 -329 6 -641 165 -926 -969 -740 -288 -481 -531 603 -339 -162 -466 935 907 -105 -853 78 -722 -211 227 859 17 429 864 -1000 -847 -227 295 -787 928 -981 414 297 -159 780 -133 837 544 -955 -885 619 -941 -359],31
-[-172 336 449 961 669 979 718 -361 63 -301 857 -65 -219 -962 299 -631 839 -217 137 -372 -219 -23 249 -658 131],19
-[570 181 -177 -455 176 -123 -165 -891 -141 -345 -311 803 -656 -641 -717 -711 395 712 -225 -11 -509 -964 -847 809 -517 437 -97 549 -840 929],24
-[834 -342 515 -360 667 928 -138 -230 517],3
-[-153 -576 594 -790 208 780 -970 452 351 428 -934 751 -127 -147 212 -249],6
-[-115 -257 350 707 238 -980 -850 -198 758 -735 246 837 485 -715 345 -518 -493 813 -328 269 73 -383 486 956 -58 389 -25 94 514 734 -994 -755 -535 -387 265 -969 552 379 -485],22
-[166 -202 954 -832 212 -855 610 346 929 8 637 -242 -578 334 120 -408 476 803 -733],5
-[614 -98 -865 712 -169 -615 636 552 439 566 -150 256 302 -591 905 28 -845 -260 766 -922 16 -119 166 968 566 40 -481 604 533 -206 -854 -964 -937 82 285 585 -317 -734 331 470 925],16
-[-927 71 -677 397 -653 173 666 81 645 640 -299 475 775 93 -685 937 -639 -427 -355 -271 517 217 -487 674 259 -845 -239 691 537 577 -539 403 655 -981 -155 266 -705 188 807 247 7],36
-[186 686 -142 -366 248 -636 -22 688 -262 -736 530 -796 438 870 668 -807 724 -908 -534 920 -680 364 555 -304 -758 172 214 98 -488 -288 948 198 360 670 10 150 32 462],2
-[-341 982 -664 596 -18 -266 -844 58 482 784 500 -339 -370 598 743 842 -884 626 180 324 -824 416 174 244 148 -120 14 -249 206 -916 -222 -380],4
-[412 -224 22 624 538 112 634 -186 -16 470 -268 642 -779 -928 -454 -866 -684 -892 -500 1000 -862 914 56 -204 702 -620 466 142 -326 -498 212 736 890 124 -632 356 26 734 90 778 -884 -956 -874 210 146 -560],1
-[509 -975 -511 213 -766 -307 -638 259 92 361 -695 566 15 -829 -33 540 184],11
-[-984 -287 -84 -929 -793 -514 487 999 741 -55 -840 -292 -625 -437 479 -892 -123 711 -173 -441 -989 -625 -807 -135 512 987 821 -166 -387 -386 -181 -776 -741 219 499 -679 44 691 391 569 -477 987],31
-[-687 -518 -683 -305 -830 174 332 -129 -564 -762 -799 -28 -261 600 954 -547 -487 552 -272 368 797 -469 -799 680 -320 443 -444 696 812 -820 743 198 705 -400 -865 -740 -347 288 33 -66 854 -475],18
-[-855 -966 262 624 916 294 91 -870 424 -690 264 -181 -812 236 849 -228 -747 -304],5
-[246 -560 -395 365 611 159 993 -849 -757 54 -702 -331 -757 676 877 -955 -275 -796 543 644 615],14
-[-570 -558 -746 -916 382 -94 -276 554 558 -220],0
-[-258 -468 -876 -322 -616 156 202 1000 766 -142 838 278 -382 -898 -950 78 -808 366 -68 230 760],0
-[50 -599 -260 -902 949 968 -519 -892 -740 117 223 -660 530 -200 -967 447 36 443 -892 -930 -255 -948 -171 511 733 -894 52 -239 54 -305 824 -909 808 620 692],15
-[113 783 -357 567 -299 407 -677 -349 -404 -687 7 -909 -360 -445 -443 -17 395 -819 901 777 55 -573 655 593 -781 -23 749 327 332 969 167],28
-[-14 519 417 264 862 590 63 992 -713 -553 946 -569 375 -725 -533 601 990 -513 -348 -214 -39 501 -194 -88 993 -778 -867 -40 959 252 591 -263 -249 712 339 -784 -81 -661 -24 670 -711 303 -51 -364 -369 -373 -743],28
-[604 -378 -943 -920 706 -705 -540 496 -787 311 -54 -826 -650 636],4
-[-788 -544 -920 701 -915 739 -884 -4 78 566 -578],3
-[-440 -252 806 448 -374 -182 -832 -720 -144 -462 956 -112 128 310 -398 900 747 110 -998 140 426 -586 -980 990 908 -716 466 254 820 -44 -82 -680 700 -248 -40 564 264 -674],1
-[-749 -651 275 -622 -149 -23 -509 151 807 505 -857 -205 339 -215 295 258 -483 -829 -636 -141 836 692 -551 -519 309 -317 471 507 -71 959 -86 -815 -119 -6 487 -944 453 -208 625 -268 -736 -459 -975 903],33
-[696 28 500 -304 -222 -280 -134 -522 -872 -600 -802 -50 -582 242 -82 -876 -714 -382 -352 424 -420 -670 -8 -476 422 -216 -460 79 656 -686 -618 -642 -502 -448 608 -591 -792 832 -472 -732 -172 670 940],2
-[-539 45 -80 -365 -525 -2 67 -375 622 -39 816 642 648 518 959 186 608 545 334 -128 831 -130 663 -600],11
-[361 -637 925 -397 -345 221 -791 -84 413 -177 -908 967 915 455 -463 678 -734 -581 89 487 13 -495 -128 -159 -73 -821 -159 -35 -393 754 -711 271],26
-[-438 880 -145 -617 -583 139 195 -452 871 613 -85 519 -895 269 145 -227 -963 339 -255 311 327 827 695 -501 -673 744 -601 395 608 -187 465 -259 0 -361 934 757 -793 447 293 203 277 -667 -23 -240 -439],37
-[695 -910 373 -606 -376 800 -910 -61 -509 -107 -326 531 -425 -654 -299 -25 846 622 -980],9
-[-374 -743 -97 959 -375 363 -685 -66 -855 -695 144 -640 555 -349 537 -605 -29 -242 396 118 509 510 732 -489 944 344],15
-[532 174 -776 -772 577 -654 -524 128 -671 -457 917 494 -552 476 578 314 -927 -164 -173 -730 84 -652 31 -854 174 520 862 -127 -250 -9],9
-[-532 -778],0
-[-970 -427 840 356 648 324 561 578 -408 -988],2
-[-224 404 356 268 -953 -370 -152 -749 865 -375],4
-[394 589 774 771 10 876 898 543 -345 -460 201 164 -725 -495 617 378 556 291 670 808 -610 364 438 -978 -636 -120 -92 -197 137 975 280 375 -672 833 -525 -10 -895 250 590 215 424 987 -269 255 -988 366 994],20
-[-494 -514 33 -708 -768 -586 884 288 -192 938 455 -217 -605 -712 470],4
-[1 -907 919 -355 -113 973 -277 865 -609 95 899],11
-[-27 -604 814 400 810 22],1
-[-97 -693 -687 95 535 -141 -301 -215 -519 409 448 651 -410 -496 -865 497],13
-[-802 -232 -738 775 382 232 239 676 254 794 -336 210 -936 816 88 762 532 626 -710 55 574 754 20 457 470 -560 -98 648 116 679 105 -412 1000 238 64 -558 840],6
-[-993 -830 -161 554 -427 -445 80 -843 -115 545 -173 137 64 -356 241 -213 190 831 146 -477 532 -719 -277 -123 681 -117 -367 947 -653 40 435 -91 571 648 -256],24
-[-649 -554 -835 -252 -782 578 -970 -525 220 -275 911 920 -674 472 260 330 -856 350 -498 -124 -606 494 -724 -416 778 -853 -670 -934 781 323 888 -888 -812 -538 338 166 -577 368 -525 -108],10
-[-748 229 -86 -906 571 -274 518 543 -629 -854 -523 475 17 -259 967 476 989 -729 68 266 267 -465 -697 320 -315 959 84 -225 -537 -794 777 -844 29 -856 -141 231 -498 -203 481 722 -754 358 871 350 -733 943 -772],27
-[572 650],0
-[-450 340 588 614 443 -435 152 262 728 -694 486 556 -921 44 427 -227 272 -434 -245 73 68 665 78 -630],8
-[375 -925 657 123 751 -627 563 61 -444 -911 663 -149 -179 -883 381 -452 -305 -497 295 -383 -983 461 -459 939 -389 -283 -685 -192 -773 261 869],28
-[-407 703 -817 157 113 231 473 -607 -285 655 979 971 591 565 121 705 -973 -677 863 -671 -951 391 -537 513 -69 -501 -943 251 -647 167 401],31
-[253 623 417 -657 607 -905 -491 -511 67 997 -685 -829 -743 -780 -123 -387 535 133 930 -947 81 -93 857 753 -519 263 65 225 253 -986 84 29 -220 -759 -769 -291 -483 -653],33
-[133 -675 891 -609 569 67 269 11 6 17 -107 -469 -79 -347 919 -413 657 253 -147 -297 543 413 -71 -579 -191 753 -557 725 -389 711 613 -297 -121 665 -295 -963 -169 -665 -305 -219 491 861],41
-[846 148 118 732 486 -626 460 630 452 244 458 712 872 400 764 856 -578 -64 -458 372 596 -10 300 -766 -288 868 -596 -154 398 496 -722 -834 212 -610 -456],0
-[575 116 -25 -710 -496 400 -603 279 417 -178 -532 -703 -948 478 957 -967 16 399 -473 426 -72 -304 -647],11
-[-106 -384 -464 612 -576 700 -927 484 904 584 -450 792 -150 738 448 -371 -124 -272 474 452 878 718 -249 443 -716 678 -356 598 540 630 820 -940 480 -444 -986 -436 858 -924 145 82 140 -104],5
-[568 -652 -724 306 424 722 726 -328 -510 -256 -546 -828 886 440 216 -858 -348 138 392 -718 -294 184 -304 126 548 -412 -178 -422 422 404 260 -586 422],0
-[558 -476 -200 782 -190 953 -778 -676 198 645 204 272 868 632 -132 14 -430 -764 -367 696 -482 240 -319 860 596 -545 636 562 -904 460],5
-[5 225 925 -146 -873 -16 -51 229 438 -402 -967 955 -411 -985 -617 21 -389 829 -473 -323 -693 -543 397 -277 -939 -961 -499 -797 435 641 125],27
-[-950 -988 567 -485 323 -283 330 58 -887 322 144 -511 346 42 190 794 -911 988 681 -245 -82 -748 -953 -48 771 -307],12
-[849 -641 776 624 -763 255 192 -147 -101 -25 -579 316 123 600 119 -881 -716 -229 453 -677 -359 43 -963 339 226 -56 -247 -190 185 974 987 205 -257 -884 803 -129 -271 -449 26 -296 -317 217 -125 573 -543 -219 459 899 675 800],36
-[456 279 -561 136 -932 17 615 31 648 -922 -229 -802 687 965 388 -735 -50 712 322],9
-[648 -216 -290 -552 550 646 -505 721 -47 946 -587 708 277 210 -792 -679 -468 -247 832 -560 686 -640 602 -798 40 960 -966],7
-[-405 403 -931 -728 223 -375 -361 653 -627 523 695 17 -349 -839 -6 -893 -459 -283 -501 -21 437 -205 -399 -865 -275],23
-[-78 892 554 -756 114 448 20 -688 -822 428 -108 44 228 528 -850 -796 -944 962 628 -292 -593 206],1
-[-93 -639 -478 160],2
-[-281 -552 -672 820 802 -122 576 -687 -570 978],2
-[39 388 -50 -410 -20 28 902 -78 -816 -960 -112 126 -620 164 727 264 440 692 -780 0 -908 -48 -240 976 696],2
-[605 587 -234 921 221],4
-[522 -965 -325 -237],3
-[-127 798 -449 -115 163 -791 103 -859 489 289 495 233 697 -563 -7 -425 -473 -885 -329 211 183 723 -673 361 865 421 405 233 -289 937 371 -681],31
-[320 -924 834 -436 676 290 464 416 666 612 760 -176 -116 -866 -552 372 726 -672 362 -20 342 408 -232 -40],0
-[581 529 43 -895 -239 -854 869 -812 -963 981 -879 -329],10
-[938 885 -999 -336 -243 -19 880 465 -872 -639 632 -281 739 135 297 1000 -315 -817 -385 661 -451 293 -931 -349 -63 -277 304],20
-[-418 818 740 964 624 892 408 -416 358 -948 461 -637 -980 -144 74 -516 166 310 -794 531 -966 226 881 760 -210 -288 92 -124 -270 980],4
-[-900 718 392 988 -16 670 928 952 764 -840 586 -764 877 -114 -720 328 -734 -838 -602 186 374 -176 -209 984 -518 664 98 856 862 778 -652 443 794 -926 -513 234 -322 398 -204 652 -738],4
-[912 -516 566 222 446 -84 258 -922 -74],0
-[2 84 -1 344 -694 -460 193 631 -91 750 -483 529 761 443 -83 -381 -125 -971 -799 580 311 520 -195 -961 989 661 -463 -439 695 -87],22
-[757 -153 729 -337 -437 -565 -875 311 3 -906 491 -837 327 -155 345 25 859 409 649 335 -815 -927 -695 -663 -939 641 -905 801 -913 66 -569 259 -924 281 173],32
-[207 455 -115 -252 -599 797 -473 -209 659 -778 -916 -533 -164 -231 -511 -623 -563 950 639 -375 -799 -897 323 -48 -434 -395 710 630 -51 -747 -31 970 516 336 -455 901 740],24
-[556 704 -654 33 117 -994 -124 560 242 -872 -351 -831 -326 646 -292 20 -206 178 -356 -944 -32 175 -872],5
-[-481 -941 -597 -17 -143 -165 -841 968 294 681 -465 134 483 991 411 937 -637 259 -129 -279 -777 -223 656 149 -355 517 705],23
-[-351 721 -406 578 484 424 -454 493],3
-[754 -975 17 848 879 992 -674 -194 431 615 -170 -492 -124],5
-[-581 -555 491 -859 669 907 -10 -63 881 -377 367 -619 -259 -441 287 -121 113 -416 -597 805 183 -69 893 -921 829 371 396 -873 821 -343 181 323 61 541 889 -527 397 771 -115],36
-[742 702 -730 530 -100 -824 164 951 346 -624 -852 526 278 -176 72 664 496 112 -78 -66 816 -448 884 974 346 -556 -80],1
-[-434 -833 -114 -642 938 274 533 988 -393 -148 456 -430 -952 475 -590 -420 484 348 -247 663 -976 -340 -98 745 926 723 -503 780 -967 -480 -158 920 -103 -906],11
-[920 828],0
-[-842 92 -304 741 648 -785 -130 42 -246 78 -189 -748 249 -380 -682 260],4
-[-648 -790 112 740 -204 -653 -509 60 -372 437 671 -93 -21 -620 295 218 284 -156 -572 900 280 -220 372 -930 491 970 -861 -382 -640 -518 -803 503 878 367 83 -890],13
-[422 -150 -860 736 466 -538 502 -164 492 140 -822 -50 948 -56 474 -956 558 -902 142],0
-[-594 268 245 465 594 458 -703 698 966 980 -188 935 -383 -13 -621 355 -292 740 -558 -76 -643 469 401 639 93 872 -229 -885 -712 978 -289 -909],17
-[-407 751 599 89 245 -241 897 -275 661 -75 -935 -316 371],12
-[307 -949 255 -787 427 17 -635 -856 -351 -603 -339 -287 -920 875 -349 -65 -297 659 -53 393 251 579 61 827 651 355 -777 903 -127 -441 -386 -145 627 -871 -619 -853 431 -81 -23],36
-[-170 -887 685 845 -527 -997 -581 -779 697 -129 764 -519 -777 -384 -505 77 103 949 269 -452 -553 121 -741 199 -432 -815 71 -85 775 43 -35 -863 -778 -142 -17 139 677 443 -540 587 458 -289 -637 -953 -783 754 -7 507 61],39
-[-593 92 447 -666 692 809 723 -631 -133 165 -39 33 -921 -493],11
-[-84 -199 543 -567 -632 369 -583 493 701 25 347 -79 -2 -961 930 12 292 12 517 757 -175 594],14
-[-991 -944 -935 689 589 550 -118 392 -266 118 933 578 -571 350 -640 -670 49],7
-[706 -636 442 -330 -353 494 -776 -742 -338 482 -562 217 20 -70 436 872 940 68 868 198 -147 -504 -22 611 -854 206 760 586 42 -668 512 -998 770 -902 990],4
-[785 346 -366 -476 574 776 -907 -111 -69 -782 172 -144 -316 721 -852 380 -574 -188 832 699 -784 -82 -423 -90 933 66 -734 84 807 -590 -391 350 205 -400 -720 -327 172 890 726 890 -114 -114 646 -479 953],14
-[-487 -287 -661 9 -917 52 -977 729 207 -911 -305 -825 -382 -13 939 379 -141 -75 -965 -221 -371 -77 843 -343 825 -599 -72],24
-[-953 386 -699 458 57 410 667],4
-[36 -210 978 580 -817 299 54 177 136 -254 -258 -288 230 724 307 696 -203 -962],5
-[-158 386 -134 -866 642 -342 -60 -184 -858],0
-[817 945 -308 991 -5 -473 -465 -17 523 -795 33 -927 -485 893 137 -757 -165 -51 469 -444 -791 963 -745 986 -169 299 841 505 441 -992 -917 -35 507 37 759 -687 525 547 13 666 -135 643 -125 833 -429 -478 -32 -904],40
-[-310 80 461 -78 -929 395 182 -735 5 -228 -620 450 -839 311 642 834 -606 490 478 696 132 -148 96 717 894 843 989 327 829 -660 -337 -1 -796 -339 -654 827 463 357],18
-[-627 -315 -345 -128 783 -879 551 -563 -463 -969 882 -850 -153 25 -435 209 -593 -407 -447 125 -273 243 -538 -804 -457 713 393 738 -813],23
-[642 134],0
-[-864 -660 750 580 -126 -688 -722 -786 5 174 727 876 532 730 460 -816 -432 -242 426 229 358 -492 -640 546 -128 522 576 -409 -516 516 990 169 -260 -508 933 198 992 -682],6
-[-362 -894 -730],0
-[-758 -315 -150 216 -16 602 382 406 936 -22 178 -716],1
-[-41 -866 -909 653 -564 -151 -992 107 -185 140 -409 491 -581 -362 154 366],9
-[-139 -147 -362 -854 41 -871 295 -676 -477 -445 606 977 -368 656 -875 181 -582 -483 143 485 163 -965 -666 359 -226 513 -123 -136 -759 -604 -213 -538 855 996 957 -502 -319 284 -673 946 423 -632 332 -349 -642],26
-[-291 -236 381 -399 -653 -41 -421 130 155 -599 -430],8
-[-340 -30 -806 -57 -441 396 664 -199 -690 599 275 127 -682 -381 78 59 11 -966 -438 -539 935 -23 -333 85 -909 454 -347 -903 -711 2 959 588 -635 345 337 -150 751 874 51 -73 62],25
-[-507 -867 280 -495 895 -855 -631 188 927 -854 -546 280 288 707 766 83 484 -901 -255 300 135 171 937 -522 -369 -541 -383 -965 729 816 -95 421 -49 616 294],22
-[657 186 773 757 681],4
-[169 -396 116],1
-[273 -592 924 -52 701 -362 -216 499 -454 -19 753 62 -446 514 -61 61 -572 -351 38 -914 362 850 403 783 732 739 543 -32 -432 -507 860],13
-[-92 -479 -856 125 -190 482 -864 -880 10 769 830 -720 404 -182 356 627 125 230 -723 -874 88 -502 -484 452 -193 -440 214 234 169 -359 -778 -210 -630 988 -906 -130 312 118 -783 524 445 -897 -366],12
-[-364 384 -684 -78 -834 60 434 14 864],0
-[-318 -765 -390 -762 -615 -404 -577 -459 -853 -373 23 942 -427 -527 869 847 -426 759 -233],13
-[499 -631 -425 307 -605 963 245 959 205 -859 -655 -389 179 -984 911 -711 509 791 -519 -284 889 817 959 467 44 -173 791 719 -417 365 983 701 637 -495 919 435 625 971 -337 -1],37
-[477 -711 -311 641 600 481 10 93 286 -273 -371 -960 -415 -791 -419 59 -121 563 -511 499 604 217 -227 723 515 479],21
-[-775 -73 306 -775 -728 808 772 -338 -183 -690 65 116 504 -496 -87 -542 -59 874 -716 414 -550 -770 639 886 841 -924 933 231 -7 336 -156 -964 49],13
-[73 -974 -902 -150 44 -351 762 116 773 240 -30 -270 122 154 514 -8 -104 112 378 479 294 -842 -22 -259 -586 37 0 622 -142 998 996 90 -350 -68 -536],6
-[609 717 -501 187 -939],5
-[741 -523 -649 256 -505],4
-[-724 -366 -854 -952 706 965 252 -400 -928 298 -120 -552 708 272 8 -818 301 530 -261 554 -956 -404 -572 906 148],3
-[687 739 299 -603 631 95 943 -629 105 -421 131 775 -815 -187 -935 521 -883 37 -335 -685 803 -747 161 973 -719 -723 -731 53 843 -839 -465 861 -545 -59 -411],35
-[-50 -996 62 -780 42 -936 -110 737 284 -732 -734 618 844 198 -180 -726],1
-[136 -206 34 -552 264 698 -548 285 -870 -482 -114 -638 791 204 -354 289 -10 -925 -396 835 444 314 986 402 -144 -233 -264 841 -115 -442 581 151 148 389 579 -192 -4 346],12
-[164 46 -599 -825 314 399 561 -201 953 462 284 789 -606],7
-[-651 29 681 47 584 -113 -891 136 -276 663 239 -511 775 -227 -733 -607 981 493 -95 -768 -717 763 -409 325 645 991 -961 -59 835 375 111 407 -609 703 -968 -335 -521 503 -627],34
-[493 -758 1 473 -411 847 393 95 -95 -470 -319 143 665 877 639 545 226 330 859 -93 639 641 -756 -387 -405 -375 -9 635 825 75 455 -405 965 -333 -988 97],30
-[-557 -735 -488 299 -562 -287 -808 -648 626 894 -104 -54 1 -590 -486 702 802 -184 -276 -906 -712],5
-[-765 -997 -319 -629 -17 -285 -753 -607 -833],9
-[929 529 -856 -560 -941 -439 -377 203 -431 -313 586 -232 -887 -895 707 39 -417 192 -417 -905 -27 501 -107 5 -623 305 -448 -287 137 -705 -74 237 -595 801 -839 -601 321 -206 157 935 255 611 -319 413 -629 912],37
-[-557 -489 -393 -149 489 -25 575 -203 225 -331 -815 -502 983 -567 -267 905 359 533 -359 201 -213 -131 -403 783 -191 -401 309 -169 259 688 909 -727],30
-[376 -216 -446 -672 902 962 -848 388 324 -18 -200 476],0
-[524 844 -279 829 977 542 128 235 795],5
-[975 -347 -889 -867 698 269 635 213 693 -931 615 369],11
-[123 -215 949 158 -729 483 -505 411 -293 463 377 969 349 -978 60 209 663 -478 131 -892 457 -678 185 -179 -723 -926 757 674 347 903 -693 98 765 -779 291 -140 -123 -959 903],29
-[752 -300 475 58 910 -959 -102 450 -624 24 962 52 -811 -926 645 -305 194 -642 870 128 -281 -265 -709 127 760 292],9
-[-551 -378 -382 83 -906],2
-[-510 42 -912 768 -894 -572 332 -767 908 -377 -302 708 834 -793 -249 -910 -952 -768 -570 406 284 594 -902 568 416 841 -396 -596 -174],5
-[-811 299 683 149 371 -457 6 -89 172 378 -311 889 967 515 811 -169 -87 569 327 -709 583 -715 -969 453 -867 307 225 173 137 -65 95 -119 -751 -937 -463 157 -977 827 -809 353 -713 -915 -597 681],41
-[-429 955 -883 -17 -447 -47 -561 151 743 -21 449 -557 -537 -133 731 11 201 -585 837 -252 -207 -215 709 -111 -557 185 805 -303 93 -37 280 727 -707 -199 147 -623 3 165 -705 619 215 -631 -63 723],42
-[-191 105 162 423 203 -714 588 -142 890 130 148 -223 212 -983 844 -662 924 164 -810 643 406 -49 936 -592 910 732],8
-[315 973 -737 -461 915 -549 -211 -729 495 -513 3 871],12
-[452 523 -837 564 591 710 -525 314 390 -55 -389 62 931 880 -665 -962 -423],9
-[-71 -34 -387 -159 207 -305 888 334 -13 -935 -944 -731 837 677 -246],10
-[-572 170 -42 -796 -126 947 106 -409 334 992 220 940 -380 -760 -208 -306 885 -738 -598 492 156 462 572 -576 840 -160 -463 -552 -268 -88 576 377 1000 370 272 602 808 -876 -932 -850 -140 -48 -828 -663],6
-[-392 -212 -71 -246 -567 835 209 -918 309 38 -601 509 -292 607 -134 -416 -634 31 -894 59 329],11
-[-370 499 360 -180 595 -990 138 -278 786 -536 258 -326 -30 520 -784 -690 -232 -152 740 802 202 -356 84 176 598 -372 850 612 -21 -866 -878 -632 532 -629 383 314 236 822 -54 -172 -972 -762 -528],5
-[-623 983],2
-[-674 -784 266 -32 -640 732],0
-[864 910 348 802 -285 618 516 -640 619 -242 928 791 12 -159 -883 99 347 883 222 -706 365 144 268 973 -230 -546 -800 723 -558 -937 855 675 405 -319 254 566 646 -240 -748 910 43],17
-[830 -175 843 -515 811 752 -771 -572 -935 393],7
-[-748 -611 202 -261 623 200 -271 -416 679 527 827 724 494 718 852],7
-[-331 -963 929 -959 -861 -547 -159 823 -878 53 -751],10
-[845 -218 120 686 -472 894 -270 484 -230 -826 257 986 200 22 -371 246 478 1000 -362 -34 502 898 -894 694 -432 -803 906 464 -239 686 978 -326 -509 -500 -162 -219 -346 -672 798 -882 34 620 -114 423 -908 970 690],8
-[-591 791 632 675 89 801 726 -355 501 342 -666 388 -805 -416 500 -375 735 877 -895 773 -38 -344 -765 19 -929 -491 933 -154 765 874 -580 -547 789 612],21
-[455 33 -517 -959 959],5
-[377 275 643 -219 217 705 773 -389 -767 257 417 -982 857 -217 -913 35 525 523 221 -535 -895 -633 -449 -283 853 906 959 739 -615 181 -965 -311 -925 -293 -719 53 -799 -773 -333 843 -213 -651],40
-[-939 -996 551 897 -7 449 547 682 872 383 -37 939 711 11],11
-[775 -203 856 -641 -119 940 711 -742 -287 -285 748 -967 949 -245 389 -685 -587 -458 329 -684],14
-[557 601 290 -210 686 374 -612 667 769],4
-[734 -514 -127 858 -697 -200 772 238 -62 512 988 794 860 839 -922 930 368 -8 -188 244 496 608 821 630 -522 39 -168 24 -232 -962 914 -552 -776 -396 120 828 102 598 -976 312 616 -674 -842 -864 -306],5
-[922 386 -566 -462 5 -242 -318 690 346 -473 -476 -308 -172 406 -466 -621 696 188 -30 -328],3
-[274 549 -873 117 912 -159 939 -49 279 49 -839 -929 167 -121 599 -507 -135 609 -882 371 623 -463 343 -705 -311 791 461 -733 175 628 655 171 321 105],30
-[-923 444 1000 168 502 -415 -429 978 804 -133 -633 727 -943 603 -705 -286 -41 265 -215 -557 556 -363 -623 121 903 -122 193 373],19
-[569 -643 963 -179 -976 -920 -313 735 300 -930 279 311 501 516 -585 181 159 247 -923 641 945 -813 330 -123 -135 -138 815 -995 937 763 313 -97 -559 -103 845 -153 -915 552 -279 451 -751 -813 -131 531 61],37
-[-525 645 45 542 -599 87 160 -409 -407 973 -961 709 -743 335 707 -885 -765 -309 -901 -319 -749 247 -627 471 -491 -188 341 -141 977 -745 -531 -423 337 473 -787 -297],33
-[399 -763 -339 -443 553 996 223 -657 -461 902 -500 889 -489 5 849 -103 134 -187 210 256 -713 333 41 -195 9 -679 -320 -791 541 -457 801 -869 39 -895 -723 -719],29
-[-82 -8 -316 480 -484 -900 816 -182 -416 -92 988 86 -515 -216 464 -344 -328 688 484 145 374 900 830 -628 -908 -986 -758 596 -978 980 -350 -994 864 678 172 144 -968 -280 222 901 50 572],3
-[858 136 27 -299 -951 777 351 569 358 -767 53 -473 -935 -907 297 -360 -217 828 -647 708 -177 955 624 -897 660 -593 894 -916 -848 691 -581 703 -867 191 519 -607 -815 208 67],27
-[37 -389 471],3
-[-523 571 -629 -209 -845 -173 -667 279 -281 629 -762 993 -391 821 -305 -235 25 131 327 -551 63 -727 -767 595 -839 -13 827 656 -271 611 707 123 507 -85 136 617 251 915 941 -157 -149],38
-[613 261 225 197 -249 -885 277 -777 -444 -579 745 627 -877 -474 823 965],14
-[-135 -895 449 -123 669 793 -885 866 -853 -507 -113 -731 -585 -749 -578 813 -875 891 -473 575 751 -303 -373 131 113 -120 983 200 -751 -923 955 -343 -384 -767 701 33 812 -413 711 703 534 -945 -593 730],36
-[-427 47 837 535 447 -923 125 -887 -521 -45 3 381],12
-[-116 726 582 -494 -740 -28 -966 -924 656 132 -696 588 468 -782 -750 468 458 266 880 -490 -688 -488 -92 -28 -946 856 494 -628 -839 804 -462 160 32 -730 498],1
-[968 -421 71 -85 355 -657 289 -991 327 -213 235 -397 173 25 691 813 -497 774 -779 757 -929 -107 -385 -577 -845 575 499 -601 -781 -913 813],29
-[-352 320 860 -585 -248 926 -264 531 -524 309 -386 950 -820 57 160 -8 -49 338 -816 614 -100 -714],5
-[-799 557 -98 -334 563 -87 -699 -353 -107 -362 -879 -235 -417 -61 -709 479 499 124 -207 161 -7 -401 -749 461 -63 -586 321 769 357 963 137 -81 -819 324 -537 907 441 -177],32
-[797 -951 598 425 916 -673 -31 850 -936 928 353 617 247 423 -867 -112 214 -701 572],11
-[283 373 765 841 -737 -404 647 -263 -97 -930 653],9
-[928 -949 -116 -44 878 812 -2 -192 69 418 237 -830 268 750 830 -573 -41 984 -421 -736 -876 382 808 431 622 -225 841 -32 -839 820 -152 521 414 218 233 -538],12
-[657 625 -972 4 273 571 650 981 -506 -223 779 466 933 663 651 150 -949 -519 325 526 -537 564 353 503 -361 -107 -324 61 -468 468 956 -427 46 225 576 -171 706 12 849 -613 -828 503 794 831 -4 -996 -549],27
-[-159 363 -637 -955],4
-[-462],0
-[59 -50 -739 873 578 708 -183 -644 394 -690 658 -417 284 582 858 -989 -620 -958 89 -820 829 80 878 -717 -700 626 -577 620 166 -674 578 746 -893 286 317 -320 -348 644 -320 336 -704 -813 638 188 -131],14
-[957 352 29 -219 -369 -110 626 237 13 -179 777 -147 -305 -489 219 933 -281 -207 -847 -431 -769 703 -757 -280 327 -447],22
-[511 269],2
-[199 -875 -831 -519 267 -413 273 313 -769 525 617 -561 29 641 593 -467 185 753 -419 515 -781 721 953 691 29 295 775 437 965 -245 -695 947 -165 591 -403 -216 -331 -289 903 481],39
-[-41 -219],2
-[618 465 -782 -16 331 -633 -137 85 -124 -474 890 525 -213 499 -283 -234 -920 -734 -98 -687 76 447 45 -197 -587 111 -72 395],16
-[661 -201 509 -121 878 11 663 -771 655 -239 -49 71 578 421 -235 -993 -945 659 -727 -927 -515],19
-[475 595 -883 -635 717 657 760 818 -394 79 445 -756 -260 317 335 -365 -85 771 367 495 258 379 -945 665 -493 317 -653 -865 -178 -87 563 163 -711 406 -593 895 617 -477 -499 -887 -925 -845 713 -827 960 -490 -572 -513],37
-[-162 -975 171 147 -751 367 -934 -732 47 -553 -483 624 554 468 -988 851 -454 -67 -936 -948 513 299 865 595 -620 -831 -184 -204 896 366 -123 765 547],18
-[651 -639 922 -665 -95 719 -163 161 553 885 -539 179 -873 -257 67 979 759 849 965 -485 -425 37 376 395 360 -125 -977 -477 -97 -119 365 -647 299 469 93 607 -121 127 -881 299 -569],38
-[-485 -659 -943 425 -549 -66 -969 557 677 -711 -845 -881 -397 563 961 243 -335 137 -223 -371 -117 -417 31 55 536 -559 -291 323 253 123],28
-[291 270 333 -653 -91 983 221 391 611 683 107 394 763 -606 -837 -128 555 -787 -257 -378 -175 -758 885 769 977 -945],20
-[-570 194 -270 -14 -458 -643 -711 1000 -954 810],2
-[80 -912 874 125 -790 276 -78 -158 -862 -700 864 50 510 454 852 -972 -718 218],1
-[-271 699 48 -609 447 -957 -203 -669 -317 543 -405 75 83 -556 827 769 165 -275],16
-[-8 -803 -954 398 698 761 471 116 -103 -574 978 -980 12 -331 342 428 -808 58 -774 -226 -854 -206 -168 -424],5
-[-6 -652 289 438 587 -981 -662 -707 443 -736],5
-[-327 -857 -731 553 877 -891 -797 -825 341 385 -665 265 -79 433 711 -55 -425 -971 -213 27 417 -951 -977 279 75 725 367 515 470 271 947 -187 789 495 -562 889 735 907 -721 929 -151 -304 -759 -565 -565 -445 405],44
-[-650 -996 -719 810],1
-[919 -826 823 -730 -85 301 961 -561 597 -155 139 -100 -421 -431 213 -938],12
-[-584 114 701 629 547 806 382 970 569 644 -350 563 -673 -470 -518 -553 -855 -988 474 756 282 587 800 82 -805 -519 914 462],11
-[337 725 881 704 744 247 141 -734 549 -583 -172 429 839 -264 -431],10
-[310 882 495 882 291 -986 -576 339 952 180 -394 698 468 324 140 914 340 -122 -577 -948 716 362 -680 163 -500 -994 -824 508 -195],6
-[-962 -522 802 -780 548 670 -6 -2 360 -70 -828 -888 702 212],0
-[622 -352 392 -546 -261],1
-[-938 772 -510 -822 -297 -765 378 -858 -109 438 -60 642 -868 22 -993 908 -676 -120],4
-[644 -754 474 -327 829 623 874],3
-[-599 582 760 -464 78 -340 -515 -748 -772],2
-[-962 224 410 734 798 -858 53 -443 989 668 921 379 -465 612 107 109 -994 319 -780 689 446 766 572],10
-[320 -926 -541 -214 700 -620 -395 -496 322 921 -375 -148 -230 34 874 73 -922 -168 -853 -451 -510 -764 702 584 -923 -96 -658 -90 455 208 -278 128 483 -1000 43 -932 488 -631 651 -14 -422 840 212 -30 809 -474 -358 574 926],14
-[-674 858 94 -61 953],2
-[-680 480 584 -751 688 24 414 -596 968 -66 -671 -278 -18 -662 -852 -674 792 388 -558 -254 -959 -148 830 -888],3
-[915 -467 -311 383 815 180 -118 453 -625 -649 861 -3 10 -842 290 -904 941 -595 -111 -430 -518 639 277 -55 -261 -597 -674 -102 -485 260],19
-[-853 404 -467 99 -211 -288 799 -812 658 -995 133 102 967 -752 -432 148 210 597 471 -365 -376 -784 -625 -610 -196 -192 -545 -347 -318 374 -611 -992 687 166 -126 -455 310 413],18
-[-561 -777 -59 -845 550 -671 -469 -757 -69 -667 -489 202 -323 697 335 729 921 -651 569 -657 -837 -435 450 -927 -751 -917 493 -109 -923],26
-[-840 244 375 -425 -417 -69 471 -349 -284 713 -999 -720 -170 -602 650 -32 565],9
-[-654 877 681 81 -468 -925 -160 -609 -524 -13 547 -37 -17 -719],10
-[-693 921 -406 716 -384 376 280 756 252 236 -102 -832 -885 170],3
-[-181 -265 -115],3
-[-51 33 918 866 93 585 -817 851 -339 -845 -865 757 -338 -813],11
-[285 -984 220 -403 190 86 -442 -978 568 473 -18 -682 524 -466 308 -416 -598 -223 -794 318 676 832 -604 -150 -623 936 -254 884 -530 -320 -772 -468 738 396 -226 677 979 398 786 -104],7
-[-647 266 -598 -73 -18 473 -157 -676 -615 790 -901 -196 204 -579 992],7
-[-960 -727 -120 -957 864 -856 285 -811],4
-[917 606 291 815 -960 403 -391 297 -950 106 360 -765 -233 36 564 -687 313 518 -385 211 405 1 -5 -831 -375 619 -930 -46 846 -366 396 275 218 361 83 -636 -264 -381 -2],22
-[489 -207 -97 -765 847 -613 795 -227 -487 424 -33 -325 285 643 197 -190 393 -401 901 221 185 -197 831 -545 -181 -141 25 132 -651 565 -461 905 292 541 563 59 71 -917 957 -583 205],37
-[947 -969 490 931 61 207 -222 -486 553 -499 835 -111 -185 871 -551 -887 575 -4 -513 -861 -715 -759 -667 968 -963 113 505 -365 -703 473 -995 -623 -410 290 41 -117 -307 711 336 16 -833],32
-[-493 761 -101 -177 -776 -828 -202 -647 6 762 -198 -530 -660 921 917 902 94 -965 -604 -633 276 968 986 -931 746 641 -980 -994 924 -291 -264 -699 687],14
-[-587 -255 -793 933 75 887 719 -373 197 753 992 -375 337 -487 846 893 345 -165 -266 -105 51 -105 163 221 703 916 -225 -137 735 -259 79 201 795 -683 -905 -643 -449 -643 739 135 39 566 987 667 704 -197 384],40
-[-707 -360 485 -785 -763 -235 -163 -729 -582 608 275 -3 -375 -9 847 -367 -411 403 -492 529 -29 -685],18
-[-641 -911 247 579 165 -979 -355 489 -505 579 -75 325 219 -783 194 -409 -873 -565 -735 -126 -135 -555 -339 193 -565 882 -143 -227 -649 543 -960 -611],28
-[-450 -244 -578 876 -471 -570 342 454 -506 -663 140 182 362 -238 -743 628 386 -420 -584 586 -850 -566 -820 398 910 978 680 729 -84 -479 358 281 343 -581 -38 341 744 -176 145 115 54 576 841 13 -950 246 729 384 -112 827],15
-[4 -285 345 663 -483 -958 711 819],6
-[148 395 -530 938 398 -732 627 557 -356 -432 -888 -201 759 -130 -993 900 406 193 175 -547 -289 -145 467 -84 18 607 -405 902 -21 624 -541],16
-[17 12 96 927 -457 705 789 -323 854 -729 372 -223 463 941 -966 -708 -421 -607 -763 199 -666 828 785 842 -540 961 -461 -47 597 -130 -85 -975 971 -41 789 730 -785 687 963 -531 -182 -437 -345 -323 415 -55 -541 -331 -98],35
-[-226 -972],0
-[-39 -649 -163 897 899 -489 521 -221 227 -77 207],11
-[-295 404 536 -850 979 396 -25 -31 -458 708 -417 -415 -698 -298 455 800 -235 -97 -529 170 303 -604 -850 63 -413 289 999 -403 517 624 993 -793 -172 -268 -506 871 848 546 -332 344 -827 -74 867 -39 621 -103 142],25
-[878 739 454 598 -396 342 -381 -944 790 26 15 -21 -319 150 -364 857 -925 661 -546 688 775 581 409 485 924 110 -689 174 -142 734 -24 346 -344 -776 893 627 -887],16
-[-474 -512 -748 348 750 -792 594 532 932 -486 -392 358 992 580 -198],0
-[-801 15 27 -97 -227 -281 -489 -657 -169 -103 453 -689 431 671 907 777 -531 543 -641 61 869 -569 631 129 -595 185 -17 -659 549 -875 -967 396 175 543 -215 -457 -31 -391 -783 -913 773 -461 -295 71 -729 465 289],46
-[842 762 -167 236 307 750 -495 -514 -780 -87 802 -824 142 -48 -164 344 -866 -611 784 32 -907 501 -680 -6 612 610 -367 -793 -430 -280 246 890 957 -288 -476 748 -860 -714 949 -988 327 -894 -762 -226],12
-[-670 592 356 362 -705 308 656 -288 -786 110 -774 434 -8 -894 528 880 -944 -896 700 730 484 -590 968 526 -495 -24 -386 544 -638 -182 912 220 43 884 402 94 -710 -328 -508 568 578 572 -790 -614 914 562 -68],3
-[67 377 -163 118 871 567 403 -681 -13 841 -671 189 501 113 -717 -847],15
-[-426 254 -622 926 35 200 472 -140 561],2
-[982 -746 -554],0
-[910 207 -386 36 721 -692 356 853 796 -752 553 -772],4
-[-186 0 -166 432 -122 370 -856 -176 -876 -840 -612 860 222 -902 300 -362 -432 -236 308 -194 104 -72 -616 782 914 48 -328 756 -384 94 -308 302 548 -240 254 -310 -422 -326 -584 -416 -748 -658],0
-[-684 -519 -731 -78 -782 987 -820 -313 -702 -275 842 452 868 409 226 601 -943 658 -116 795],9
-[-466 330 14 980 -736 362 -376 826 -626 -510 -352],0
-[623 -233 34 -210 870 251 -388 -642 102 -971 658 205 782 445 -750 -690 -598 967 -413 720 -853 -84 -258 339 -23 763 -863 -372 -905 763 950 307 -714 674 422 -928 -695],17
-[-942 602 934 686 -125 238 -312 662 562 236 267 -673 307 -794 -329 546 -30 -762 950 911 918 -473 737 37 549 -998 407 -459 -750 746 -944 -829 962 -498 612 -455 804 531 -190 353 965],17
-[-852 768 882 -728 -284],0
-[753 -335 491 169 353 667 751 -609 607 761 -935 705 223 571 231 -849 -775 269 25 173 317 -791 349 911 -179 221 -125 917],28
-[-373 -950 -738 618 658 776 -158 262 593 610 -16 -16 -672 794 -454 158 75 -338 -623 311 -870 149 -467 213 -147 184 623 -340 713 -471 82 -94 -225 969 -819 90 -298 184 242],15
-[-511 463 367 -415 -397 -709 251 -668 758 -114 -273 770 -728 999 -415 -945 997 999 -325 -945 -101 -709 -797 -683 871 -813 549 179 493 -608 169 -853 193 271 149 903 107 -880 -681 235 -953 -181 -335 809 -81 950],38
-[954 834 -278 825 935 -394 694 -292 -570 528 -390 542],2
-[-956 444 924 -603 -437 870 -650 -894 141 545 -133 270 710 781 -552 157 871 717 998 -730 -953 612 -13 803 -581 -999 -457 415 671 -732],17
-[536 268 -646 351 575 439 994 580 884 -948 -632 813 710 -134 538 -744 -512 893 526 -910 459 -860 642 -446 278 -644 536 384 496 580 944 954 -544 -731 358 -64 -372 282 380 -778 -958 -249 958 -388],8
-[-125 -187 901 -895 -661 -49 213 -673 415 -399 -411 -771 -83 167 -879 -743 -43 -551 -303 153 -254 -169 -221 169 -943 -921 -831 -229 577 -51 935 -853 711 -773 11 -719 936 -215 -11 -581 -928 -201 287 -439 -67 -543 451 -87],45
-[-511 975 -363 841 681 -963 957 -591 -13 209 271 66 483 353 -643 497 29 -563 -847 -969 518],19
-[297 -213 191 -941 953 991 -569 -571 851 983 -463 901 -803 243 -481 757 829 -31 -515 -729 403 71 497 937 -445 -613 241 -59 -297 357 -101 741 787 -903 -81 -501 105 -833 -77 769 971 -731 -977],43
-[409 -969 255 487 -877 267 -373 253 625 -943 -305 167 389 -469 -799 -759 -3],17
-[-175 599 -803 40 686 -995 891 -765 585 639 -803 151],10
-[-956 -724 -498 -472 822 -864 -540 652 154 -628 -172 668 -864 486 -20 -972 848 -152 218 32 -780 -52 70 878 -164 -816 -76 708 -378 -946 -18 686 -542 788 998 -904 -786 556 376 870 530 182 -636 -758],0
-[-979 -628 54 407 631 -725 480 -680 729 -845 -732],6
-[422 361 -642 -998 690 28 490 -678 -659 -641 -218 -154 -99 720 -711 140 609 40 -104 408 -850 -914 -292 -882 -23 492 -198 85 459 -360 469 -715],11
-[-414 12 -648 -914 -8 169 726 352 -550 -970 -524 122 632 234 994 886 886 828 -496],1
-[601 629 233],3
-[-718 235 263 941 1 738 97 574 895 823 -823 -735 -705 927 -846 -606 -901 -43 139 -55 369 -431 -657 -793 -947 170 669 445 743 -473 672],24
-[639 955 869 770 551 -239 -463 -479 961 149 439 -973 985 -205 -480 -643 453 -995 -637 765 -919 -533 599 -493 35 -207 -729 -881 75 101 -689 877 -397 -223 -252 281 -574 69 -195 265],36
-[-689 697 -147 -153 -881 -207],6
-[-896 -336 108 -640],0
-[906 547 751 135 34 -90 254 703 -491 333 827 -907 629],9
-[252 -53 993 -373 -664 94 -689 867 -474 -98 642 -30 -94 882 619 172 552 -503 -69 -442 839 -64 184 -743 -678 560 92 -466 -456 -464 -289 403 -782 -684 -34 -544 624 -687 898 255 535 -632 494 280 486 510],15
-[-181 -485 207 -459 -237 77 412 -478 627 351 245 -365 -185 -785 -91 905 -593 387 -365 -453 -465 -379 771 -371 -971 25 707 401 -67 -701 659 38 689 517 -881 755 149 831 841 -291 35 819 375 -49 419 291 -479],44
-[-433 251 -171 -171 848 -941 -646 985 -947 915 845 109 -533 -833 -953 -858 630 992 319 756 -835 -250 -529 -733 -559 953 222 -659 158 -402 989 823 -933 792 675 -583 79 -193 -387 718 686 904 -308 215 733],30
-[-841 183 740 479 672 64 -699 -516 -150 394 -379 -970 306 196 339 -644 29 -611 11 -543 853 223 -735 -289 -619 233 -653 878 460 329 453 828 470 -192 -105 -402 52 -780 -342 438 878 693 112 451 203 471 -530 -104 418 76],24
-[-368 -153 228 -871 -204 -140 221 65 385 -768 745 -49 -72 -158 133 580 450 828 960 116],8
-[-562 -378 -746 -236 -80 -68 496 109 -204 -374 692 172 -468 -290],1
-[458 -276 -298 716 124 182 323 590 -63 -157 830 -960 560 -512 393 126 886 -842 152 -12 124 793 -161 232 -283 494 -870 -86 616 -593 -711 202 -440 -457 -250 -712 378],10
-[-101 998 54 491 630 659 939 -444 802 942 463 77 462 671 799 -750 777 -408 934 835 232 -98 912 -455 -696 -554 336 33 -639 -973 -978],14
-[-948 -685 -75 -150 -937 212 -495 -190 613 236 -232 621 -606 -697 663 51 -219 417],11
-[-483 686 -274 -842 879 636 -276 371 -590 -764 -106 -567 997 132 -591 440 -120 -162 647 -131 53 -150 954 487 901 147 997 619 -305 -50 -605 -766 86 -752 858 -820 985 -780 -164 857 96 -792 111 -621 187 -654 599 -464],22
-[-377 -358 -25 -750 -471 169 673 973 -357 -205],8
-[139 -807 -69 -631 -711 -761 -297 -141 -383 -344 -661 605 229 703 -498 -961 251 474 445 -931 197 329 281 279 -27 -327 823 661 -433 453 506 234 575 769 335 13 29 929 -107 343 -113 -493 871 -798 -79 -479 -575],41
-[-92 645 -188 -719 105 -145 -905 -556 174 -573 155 -103 -463 519 309 733 49 -869 -279 7 -783 313 735 503 686 511 -685 -677 -409 -110 960 802 511 -861 239 329 -55 897 939 665 -823],33
-[63 -843 459 -197 -318 943 139 -735 -625 -790 -599 -521 845 535 -176 843 923 629 883 733 914 -194 -734 425 -809 -375 937 979 -924 -758],22
-[-684 -455 229 741 -892 -508 455 -754 -900 153 -799 -586 286 -137 705 -46 -861 -889 816 -726 261 550 -448 191 749 -863 -33 5 65],17
-[344 -781 745 99 822 -57 -884 -121 91 677 -111 209 -481 637 568 -10 -590 651 -709 -956 478],13
-[-92 -147 459 879 -613 965 943 -367 -303 747 825 986 -53 92 272 -453 -342 -614 115 133 -965 388 -587 -490 811 127],18
-[534 -976 450 458 -992 -126 -378 -268 210 -154 890 -758 426 -996 -534 266 -540 144 -815 -138 106 -174 -646 -668 -72 -562 476 -124 -698 60 -602 -948 720 -316 104 -366 90 -458 -459 -386 616 -135 152 -48 -842 970],3
-[640 868],0
-[154 -136 -927 -663 -233 -337 -812 281 984 532 -149 -240],6
-[-48 168 -868 -870 -50 -472 48 -240 622 196 762 -226 -543 66 -880 72 868 548 880 492 -274 -274],1
-[-424 -797 433 -528 -481 -774 -286 372 526 -232 829 571 784 -911 544 -483 67 976 -28 316 -98 36 986 27 -554 -956 70 -485 -409 458 552 928 694 683 413],13
-[-337 -825 -489 -841 667 -429 627 147 -525 -81 -887 -119 31 25 63 691 -335 315],18
-[-193 -764 -148 42 -370 -622 -123 -328 -907 427 -984 412 -153 -981 -546 -79 681 231 -541 957 788 257 625 181],14
-[12 85 286 348 385 53 -765 376 819 631 985 -539 -390 973 -480 -923 797 -750 965 302 701 -863 598 -974 -753 -370 39 497 849 -732 927],19
-[402 -449 10 476 210 -956 641 562 -99 252 -582 725 465 328 871 597 -251 -117 -239 202 -693 -119 475 771 699 -965 723 981 541],19
-[-916 41 -679 -653 -977 719 795 -181 657 -163 -839 -681 -303 -413 167 -531 -613 -19 971 979 523 -203 303 807 -455 -638 -893 -799 -305 563 -787 713 -743 -9 491 757],34
-[-510 -491 279 652 -508 -694 -91 -815 -558 573 -402 -866 823 -184 87 -136 -281 288 821 870 631 975 -85 -164 451 -766 800 -218 947 -755],15
-[-228 -738 610 -659 -918 -354 380 -448 324 262 857 641 518 -436 -918 -170 -182 -620 -714],3
-[273 -717 -729 -50 -803 157 963 -395 177 784 -533 -643 -617 -761 -403 -137 159 -389 -647 -79 -775 -607 709 -171 -80 -264 799 290 -555 -373 293 -929 841],28
-[131 -941 -593 -439 -901 975 216 -419 683 511 591 -499],11
-[806 -726 -39 462 576 734 376 316 -698 -404 798 -412 510 -702 -892 164 664 561 -594 -978 -319 -954 668 90 990],3
-[-796 530 -752 -670 -576 -18],0
-[794 -220 -244],0
-[551 817 919 -519 -989 -541 79 657 939 -913 461 931 31 511 325 883 981 -477 809 689 477 -229 -801 88 -341 131 941 853 -95 767 -169 -311 -787 -116 -147 345 531 391 -225 -471 -583 547 21 773 -620 -715 -988],43
-[-937 -477 -575 -213 521 621 403 -981 -161 -650 -571 -613 -79 -891 -335 954 -316 197 165],16
-[22 61 167 -652 -1 -479 -248 549 -110 -448 151 -370 6 357 21 -148 907 -405 -279 -291 -914 71 917 -163 966 784 459 393 -357 -751 -34 43 842 380 315 -889 -4 -397 -701 45 525 221 -131 222 -939],29
-[-128 291 -568 -675 452 305 -267 -469 901 -930 577 147 653],9
-[547 -527 310 -403 833 857 373 -277 -623 529 809 -804 677 -657 -649 733 191 -949 -903 836 9],18
-[-406 61 251 -96 60 -882 -106 -23 -374 924 -226 -926 -289 -271 -285 415 580 787 -341 892 564 232 -807 -862 205 -575 535 18],13
-[684 997 838 740 620 -124 996 -666 176 -887],2
-[314 -125 -374 115 -636 170 906 188 -565 544 -657 -497 -532 -643 -318 -505 -934 -235 -539 729 74 -258 39 -168 21 -412 -780 935 320 -609 37 -224 -177 -701 919 501 -903 -842 467 85 951 -916 897 -529 -775 458 -112 106 541],27
-[346 -848 779 -95 215 -249 -675 36 573 475 880 956 284 -597 799 -455 -155 -586 550 193 821 -715 -601 983 -935 475 403 -141 -753 622 658 246 223 -22 807 341 -247 -377 677 397 -705 -731 367 448 -46 -316 -111 -787],33
-[945 538 -844 226 -122 768 340 900 -42 -412 530 -385 659 13 -141 754 274 -156 -352 222 -722 -450 796 -110 764 858 617 -516 316 -884 -754 -636 -965 -450 -42 -242],7
-[-885 -139 -824 968 -851 181 531 166 -139 -312 -993 -825 -209 509 923 638 -332 685 205 336 -430 401 27 819 977 208 -938],17
-[-288 -901 155 -197 -1 -755 -639 334 -547 -302 -987 -91 -614 -898 272 -337 -165 -319 -821 436 386 241 -647],15
-[-306 333 -773 299 593 845 302 511 620 455 -888 -611 103 612 -167 292 -55 853 895 -997],14
-[-710 34 -726 161 201 802 -854 -723 -691 -908 -868 84 -155 -332 151 18 -58 -612 -316 636 -877 321 183 -595 -498 -830 608 -710 202 -726 -431 679 224 -720 553 -248 -82 -995 814 -310 -170 -221 -932 -453],16
-[-850 -165 -103 38 -721 992 -879 -665 -691 355 -364 369 320 -905 438 -732 262 763 -766 -691 694 750 351 -840 611 -766 108 -312 296 965 478 -556 -857 -302 207 603 557 728 -15 994 503 55 -381 91 743 746 844 219 -786 469],26
-[374 851 -894 -470 273 -244 275 713 -878 -802 728 -561 -929 -270 -571 127 769 -596 -389 -913 -966 -924 294],11
-[-591],1
-[-979 13 599 805 519 -947 -321 173 876 793 -243],10
-[-676 -824 -746 634 880 -477 369 442 -712 308 -938 -798 637 710 509 -598 -706 186 790 670 92 -559 -300 -548 -907 273 674 256 -452 -880 -696 -14 376 758 750 -419 -728 554 297 338 110 832 -321 -270 -276 -283 878],11
-[679 901 584 169 -846 947 -94 845 763 782 -837 595 365 -515 853 -721 891 -377 -783 505 -575 389 -402 743 -755 251 887 684 36],22
-[-623 598 -49 -265 312 924 -762 697 872 -478],4
-[-485 899 -787 -344 655 900 -448 -601 227 -91 879 56 771 -961 -423 -135 102 -882 -345 -63 553 -957 191 -11 210 -641 -155 691 445 -250 -961 -325 -877 733 -627 455 292 3 -121 -1 846 67 89 261 297 799 -675],37
-[-928 830 551 882 584 -599 248 -732 -824 -312 -427 -291 -411 -964 377 805 -738 209 -471 -504 -374 -934 -124 619 -840 660 -722 -469 -862 858 -85 883 -962 885 -929 130 743 60 -790],16
-[-563 -162 877 412 -423 631 -278 362 -659 -560 -195 519 663 179 210 -722 87],10
-[583 -570 705 -111],3
-[658 35 -712 313 -668 246 12 -424 846 357 -882 -280 427 -706 274 -490 -317 -720 -359 444 -527 -123 380 682 -82 -229 -954 962 -206 -362 -271 960 206],10
-[956],0
-[303 321 685 229 551 -701 -561 97 545 -261 399 941 -999 567 -371 -799 -483 813 -935 -645 -707 -207 517 -191 -537 -661 -451 371 303 -753 -894 177 141 -709 -667 797 457 385 -615],38
-[984 408 -698 440 -348 750 -967 339 -934 818 -854 -454 408 -159 -460 243 -414 -4 560 -912 -692 60 602 414 -276],4
-[-702 731 786 35 447 714 -678 77 947 91 935 602 775 62 -311 -177 -429 -508 137 -352 873 -594 -274 -133 -41 -300 -359 664 -859 -914 -602 -554 697 830 -240 -655 -903 489 933 811 360 -445],24
-[942 -559 712 729 -345 -665 -163 393 -110 -803 475 961 575 -283 345 859 855 978 103 679 725 277 -765 890 -441 543 354 -23 -624 485 -831 655 407 -533 -615 139 -549 -847 698 -331 -227 704 -417 210 -149 -963 -751 -913 691 465],40
-[521 -869 627 347 -843 171 -663 127 879 -189 -869 861],12
-[-391 -655 870 983 -368 182 -519 551 -797 -201 -979 723 41 -55 -255 -900 247 -891 -413 -781 -721 137 555 -885 597 -655],22
-[-255 -728 513 72 -994 335 -729 -483 -744 -541 -792 384 837 228 -530 -492 666 702 174 -348 -179 555 872],9
-[361 -357 -609 -629 -41 -453 571 -944 -860 -593 320 115 -411 12 793 -962 -935 135 779 -423 -570 -529 -188 431 -651 313 -279],20
-[-103 119 464 661 -814 -361 -241 629 -363 -410 -751 826 -199 491 -718 907 684 -43 -67 978 259 55 998 755 487 -571 65],19
-[-438 102 621 822 -76 122 -790 -590],1
-[-185 636 -162 2 494 458 796 -130 368 141 -58 -804 981 -336 -75 -762 -935 -642 280 418 -877 -258 196 90 681 -346 -986 -956],7
-[317 -580 -961 -714 -636 -833 -82 -173 -802 627 458 77 -959 -19 -251 443 720 -174 340 82 328 78 -135 -429 150 184 366 516 -234 -663 651],14
-[718 748 -228 -400 -393 612 -854 -566 298 476 922 1000 156 -953 -621 -98 -606 904 -48 738 -994 571 118 -659 -776 -782 -832 -42 -818 -478 511],6
-[551 698 -49 -843 299 731 -845 -539 -77 9 -141 721 945 -103 -121 -145 351 -325 611 -64 -861 -153 -97 -199 327 87 -685 323 -561 345 684 561 584 717 -17 49 129 244 27 -201 -929 -830 807 -219 529 -436 -535 -212 610],40
-[-958 635 -799 296 -670 447 820 184 208 -84 -752 84 571 -216 423 552 662 589 -642 1000 -872 383 533 427 677],10
-[417 36 -106 -781 -101 482 900 162 -634 -839 -423 -738 -101 144 -233 -790 867 417 -703 -729 414 379 230 -161 -561 -693 596 405 -463 -825 -642 -947 -76 257 377 83 797 841 775 136 -238 484 10 41 -970 -644 -867],27
-[997 -703 -758 595 -271 14 356],4
-[535 -512 792 352 -992 388],1
-[353 603 -70 -793 74 -638 -956 120 -558 893 122 835 -5 927 30 -38 654 -114 962 194 -184 192 -328 298 846 30 -296 -102 -424 -44 -899 -905 25 978 -941 -811 -920 954 322 710 4 -481 426 299 -262 240 -996 -60],14
-[860 -634 296 528 -941 504 -290 -662 -258],1
-[-881 -791 666 936 12 -769 378 707 663 818 287 -203 793 975 -518 629 -897 967],12
-[-908 236 986 333 63 95 102 -290 51 556 749 -364 1000 -332 229 868 -392 -619 -839 -408 250 -583 503 -100 976 -648 -52 804 -561 650 566 934 -360 525 -348 -938 217 -538 908 -19],14
-[-291 482 5 167 -729 -518 891 177 -719 -465 547 -701 513 -860 -555 831 335 -75 -951 -869 -401 -853 -281 101 -137 -643],23
-[-603 216 402 -869 -600 -519 314 -108 74 -346 -407 534 -959 -575 866 -494 830 -695 233 -581 -789 -861 818 978 -219 553 558 140],13
-[-814 272 -496 26 925 -558 548],1
-[972 -298 212 -656 906 96 -280 386 -70 -206 -184 -40 980 379 -925 450 458 -170 -211],3
-[-872 -486 493 996 117 637 80 -514 23 -792 374 -383 -732 -884 -44 594 -716 910 -775 -620 -323 560 -575 146 906 -998 421 228 -48 988 661],10
-[-402 133 402 -827],2
-[-15 -91 373 91 561 -398 -402 177 46 -818 -723 222 238 641 58 -441 38 863 463 149 461 601 657 -903 -139 668 -913 -493 -946 1 -821 518 959 649 507 739 187 -513],27
-[117 922 -572 -286],1
-[725 365 -951 805 665 -834 827 823 27 -841 -301 373 -845 -111 -71 641 499 767 861 -967 669 -205 -359 -141 -149 -757 773 925 -12 532 -239 -99 17 533 -307],32
-[400 -779 -48 303 -53 -153 441 673 -515 -959 606 -247 -271 -361 451 873 515 -761 -613 824],16
-[30 -154 -461 429 29 -487 215 996 -751 846 -602 997 570 602 -43 73 372 -803 471 585 239 -416 846 -590 982 464 905 292 13 -714 512 834 247 141],17
-[44 -972 -585 214 -492 778 -226 -459 310 9 856 -335 299 559 -404],6
-[380 387 -358 -111 962 987 -194 666 -275 -64 880 540 13 -964 309 -442 614 -840 160 -22 -304 -826 278 -15 528 89 378 -451 -265 165 -958 -304 -37 -916 -720 466 912 -693 -102 -400 -346],13
-[797 -957 36 -778],2
-[516 684 -650 -840 -868 598 260 -28 -394 300 810 -952 -76 624 12 -262 572 -712 -674 -384 -490 64 82 348 -454 -148 -472 -882 940 748 808 -436 -700 696 722 676 -866 -746 240 924 -334 -892 -244 288 822 996],0
-[-234 285 -32 -727 209 555 790 729 -118 44 -636 174 -275 75 -142 650 -474 -251 766 18 396 -836 640 415 -301 -748 -344 485 996 438 406 -962 531 -620 918 134 -527 -186 326 100 756 827 -158 -226 389 -985 642],16
-[985 645 916 -675 999 845 -557 828 -23 469 413 243 642 -170 851 -891 335 563 191 -875 783 962 94 391],18
-[-751 700 135 996 340 -85 -439 -590 -716 217 -124 -274 842 895 -77 41 829 670 -433 808 -316 376 -60 872 80 -176 -508 -414 486 548 94 398 312 892 -749 697 326 -535 -62 -7 -374 -470 519 -110 -865 214 -623],17
-[645 -152 -575 -195 -541 767 -844 -529 -810 851 789 305 -359 -525 -634],11
-[-247 -664 132 -682 -584 -552 218 578 642 -346 968 288],1
-[985 -871 -98 254 -773 -718 -372 373],4
-[61 165 -895 241 -449 -141 857 956 389 -421 -883 580 605 -903 829 903 -813 -929],16
-[493 -45 -611 865 -201 -603 -943 229],8
-[542 126 36 -69 -932],1
-[463 -868 150 -696 726 124 -525 -278 238 956 802 266 -16 970 124 -602 -603 -693 -550 -425 -887 478 765 454 252 521 53 -776],9
-[-695 797 40 943],3
-[-750 -338 -364 -113 -549 579 248 -962 723 -287 -944 501 -483 411 -563 -432],9
-[314 -266 427 -183 -471 -975 -573 147 -93 -132 405 -190 977 151 -773 -978 -235 721 -48 770],13
-[958 25 159 -695 31 -906 -130 260 -355 -74 38 358 -752 -303 241 -886 252 676 785 294 626 -811 597 166 1 147 -174 -666 -687 -874 680 -859 -151 -333 656 643 -798 -47 188 -232 -298 -42 -836 -282 -808 999 -609],20
-[222 -921 167 309 263 -945 438 524 226 414 -115 -826 391 -269 700 461 571 908 -161 167 937 -652 -695 527 -770 -629 -166 -396 -238 46 -505 567 436 -938],18
-[251 -585 701 -249 -787 -986 -667 -321 534],7
-[-307 -183 -393 -363 -477 5 525 773 843 901 979 633 -899 -157 -174 -325 489 451 -863 -717 -115 247 305 -409 -104 97 647 -343 911 -995 -128 847 -200 -351 -803],31
-[-295 -435 669 669 -623 -889 255 -675 333 777 -909 -963 -208 669 785 -187 263 657 539 317 -74 175 -315 -618 691 -498 181 -477 -633 977 -795 95 789 895 721 -9 -889 487 541 -193],36
-[513 388 990 -749 -86 -591 426 756 -669 37 -415 -911 167 369 266 -584 611 -491 -846 646 -702 -647 966 661 -738 526 -211],14
-[571 949 -73 217 609 389 755 -91 -858 -462 45 -143 -861 -811 -163 303 177 -221 -113 -675 -503 -437 -817],21
-[841 -879 672 78 -121 831 -349 -335 -289 15 -611 582 454 929 790 -475 -497 -19 33 851 523 243 69 441 -378 -255 963 913 -323 15 -119 -539 160 -676 -360 3 427 -822 752 533 -999 -844 295],31
-[-880 -318 96 -226 -974 116 -606 538 -714 -876 -60 68 494 870 752 -298 986 -843 -228 -799 49 -862 -588 -882 680 -724 888 694 -144 572 -318 -956 380 66 748],3
-[-260 -798 -228 -650 -716 -192 950 944 -280 -724 852 -882 40 -542 910 -262 -242 -470 -634 694 500 -20 460 530 -210 -170 -582 942 -385 128 -696 -110 -904 474 510],1
-[171 593 123 877 -981 -979 -451 417 835 -33 -529 833],12
-[207 -2 136 -820 52 700 948 -501 -804 -172 715 -860 -855 -292 122 -48 -588 -292 872 -40 -10 -228 -728 919 362 -822 588 654 164 606 -938 -118 -818 550 -390 777 174 338 172 -322 260],6
-[-687 675 815 385 -280 -628 281 -219 967 291 -985 297 419 869 504 -315 -966 935 -183 -143 -263 -319 -45 -973 993 629 -451 -162 25 -403 -10],25
-[477 -445 -521 -959 -574 225 67],6
-[298 -764 468],0
-[459 -627 -204 -677 -322 -370 301 -336 711 328 -559 -366 252 -77 -643 222 -715 -509 161 -803 678 733 -912 -849 -157 -101 547 772 207 -907 -331 337 -665 150 -981 -717 -127 399 -770],26
-[240 -402 -828 970 656 -739 876],1
-[174],0
-[-875 191 -755 -265 -800 124 -93 297 682 453 416 -715 421 228],9
-[316 117 884 572 -432 -52 16 -290 -272 -348 278 190 -374 808 -212 -8 -158 482 -130 -734 490 62 -350 -586 -586 458 -486 -430 -874 654 2 -149 986 478 -888 -580 684 472 -698 364 -94 638 -728 238],2
-[348 939 186 694 -959 -931 266 592 -907 -412 167 -737 547 529 740 -133 -480 684 784],9
-[976 992 -490 -295 360 -422 -941 -808 -496 896 -638 285 -308 696 932 -270 482 754],3
-[507 -345 924 -886 -855 108 -483 -281 790 123 -575 -337 -475 -959 108 767 -627 -589 -983 596 342 -53 -175 867 -925 255 -765 324 -171 1000 -721 -914 -103 455 852 -667 -9 991 792 -573 829 -619 -906 766 -278 932 -186 117 349],32
-[138 171 -828 133 579 -635 107 341 917 31 631 -109 925 505 -111 833 521 -369 913 981 -329 -402 -262 -555 569 995 -623 996 917 695 -191 883 -932 266 229 -558 -931 831 -865 -819 -972 417 -681 -122 58 -476 -374 377 -371],36
-[-466 -812 500 558 44 76 630 -488 537 90 368 -290 898 -222 -866 -128 -454 -716 -672 328 -70 82 -712 172 -50 -840 -568 -948 -88 200 700 506 692 -960 -690],1
-[-803 -7 89 -635 -989 -199 950 185 363 389 531 587 255 201 -9 991 -247 997 -139 -219 531 705 23 279 -163 -323 -659 675 375 -986 -307 -371],30
-[798 -574 139 903 -995 811 382 -404 349 -603 220 -759 614 935 2 -691 675 498 -105],11
-[311 -421 -703 9 919 -908 -409 -815 915 5 -233 829 949 677 517 -337 791 -565 551 -231 -89 979 -259 -167 539 -97 115 -147],27
-[159 359 120 673 -83],4
-[894 28 977 359 754 524 658 954 699 146 374 -610 -92 -515 -510 174 -618 730 440 17 -718 -500 85 -452 776 -694 -638],6
-[-988 929 147 -691 -204 528 774 -336 386 66 459 195 -562 198 -292 615 -332 -249 239 -74 825 356 52 -498 -74 -933 936 297 -673 447 -634 360 307 -75 807 753 -466 844 522 -184],17
-[-594 775 228 710 844 -564 29 -338 -986 -928 688 360 853 -690 438 -979 548 -918 -400],4
-[647 389 -149 213 520 801 428 938 -139 -594 489 -895 -516 -110 866 728 968 -790 807 302 758 -172 -699 415 529 -194 -424 258 378 553 654 -659 950 -515],15
-[58 -860 928 -46 -360 562 228 -872 -714 200 170 -830 -266 -694 498 412 -158 614 -800 -886 684 -164 1000 -206 412 424 970 -144 -646 -534 484],0
-[654 583 -666 -233 957 405 -185],5
-[332 185 288 707 -946 106 986 970 -29 747 410 -236 886 108 883 -26 148 526 -998 -786 446 237 -510 -419 -728],7
-[-974 199 809],2
-[-570 998 -967 143 57 210 -103 485 45 683 167 521],9
-[522 -14 -700 -164],0
-[408 552 -28 -304 764 736 -424 -788 -804 -780 -662 666 -454],0
-[-690],0
-[99 621 -337 -264 -199 866 -325 -50 -833 -712 -993 817 -464 670 -179 172 -413 -908 214 943 -323 371 610],13
-[-8 -93 902],1
-[-214 -140 976 -518 -362 -868 80 34 56 888 36 -272 406 -972 952 578 -978 902 -638 514 134 -560 -834 582 -138 -582 -262 486 246 -548 682 748 -658 842 178 126 -490 -702 -320 188 136 482 52 -404 -970 -628],0
-[972 -4 746 548 -796 568 191 -408],1
-[-230 -271 262 414 -444 -97 -330 -181 -696 -106 -488 936 -245 892 482],4
-[-541 251 654 984 -287 -114 990 10 -726 622 340 350 57 304 -713 -126 -453 685 379 282 494 866 98 630 585 320 167 425 -770 740 -23 810],12
-[-209 -573 -177 993 262 -207],5
-[818 -461 -729 -242 198 -317 409 777 -132 -82 -105 -421 -756 460 -17 421 -95 824 32 360 -523 -749 15],13
-[346 -122 761 550 -906 -32 237 -688 -660 -102 -346 -542 -230 -127 84 -594 -222 -558 -30 54 22 -902 550 -834 -494 -476 470 -220],3
-[307 -394 98 -217 427 732 11 37 -591 57 -411 8 477 823 155 119 417 389 752 603 43 119 249 69 419 -927 923 -345 -407 -25 -189 -387 83 -183 -617 -49 19 -141 45 -69 -2 -150 -267 193 283 -399 657 -751 -385],42
-[-244 934 650 580 407 280 300 509 -168 662 -76 -958 -298 -468 132 234 674 201 264 -830 24 -236 -346 -366 -204 -90 -808 384 -596 328 736 10 738 -394 -976 -412 -828 -484 -568 473 827 1000 -308 116 -868 860 -588],5
-[-436 -119 -410 738 -362 -82 62 492 930 212 -70 596 450 172 -284 -607 -744 791 629 -288 685 -405 596 -678 768 -791 668 538 819 -386 276 624 -589 994 -260 685 194 -940 448 -704 938 78 -798 934 966 -28 328],10
-[450 117 804 -313 64 -380 -748 -699 -812 -696 809 -336 -616 -802 877 -121 70 -268 690 -256 -884],6
-[65 973],2
-[-150 215 779 -54 -535 370 -465 -43 695 -634 -939 209 -30 -842 966 314 936],8
-[-340 171 420 614 -484 170 836 -551 -140 908 -640 46 -256 -918 -777 -377 4 -4 683 943 -868 -506 60 309 -358 554 588 95 -234 -686 -532 106 -26 927 957 -308 -424 56 716 326 698 -19 609 -510 302 -470 806 -734],12
-[-988 -298 -647 44 -541 149 431 824 -205 158 -14 610 -136 719 -542 956 -988 812 -575 475 -775 -40 -224 180 419 637 -776 -88 137 -224 -535 -609 228 892 382 -973 936],15
-[-293 954 -263 349 -836 243 -94 -698 -499 985 513 583 -917 -374 -183 512 810 964 -619 -301 -675 163 428 -544 -249 460 333 787 282 217 -205 -111 163 -377 -601 233 -872 941 -451],26
-[-449 874 -390 908 904],1
-[-854 280 560],0
-[651 -796 663 103 -880 227 238 -629 -13 0 -939],7
-[326 -698 875 -719 -950 -59 -761 -491 321 912 -578 103 734 72 -595 -627 107 645 -907 -166 118 957 -472 -329],14
-[-77 -183 -389 979 327 779 531 -681 -473 -225 -217],11
-[917 921 545 -207 -731 779 379 621 -977 -569 587 987 875 747 355 -509 -653 951 -249 287 185 -35 -921 -251 675 53 905 -509 687 -733 -145 -419 -717 491 -181 985 -505 21 -729 843 525],41
-[-98 -116 507 78 317 -555 208 271 918 303 476 -722 409 860 -122 361 -515 -450 -488 -126 -834 -967 167 -553 939 -223 -756 793 -628 -559 937 -956 600 256 -665 -502 592 -487 562],18
-[822 812 -4 -48 -114 -978 -913 913 871 -717 -17 -986 -306 536 -167 -875 120 -248 -535 -707 -982 758 -823 366 -962 -920 -758 -575 586 -160 866 476 -72 952 274 -822 88 -702 -157],12
-[211 -743 -48 211 23 -426 -488 894 -426 875 349 -135 682 397 -80 465 149 848 50 703 -795 -892 -183 -868 -512 -47 -481 -41 -69 -339 -883 -501 848 -905 -211 -799],23
-[-563 -110 -110 -572 246 502 -795 52 982 341 -441 134 -822 576 541 178 -424 -280 532 -100 -691],6
-[-519 911 687],3
-[-328 727 -422 -285 -343 -153 889 -244 -315 -255 -513 670 572 -902 -657 -426 772 -495 -598 -333 -65 437 -170 594 345 796 -139 -758 -723 708 19 -117 936 568 -579 -619 484 213 533 74 919 131 713],25
-[861 709 -71 -628 -865 207 -497],6
-[769 -995 -344 -920 -935 901 413 760 -286 408 -280 -161 33 795 -318],8
-[107 255 23 -607 -301 -419 -207 887 -261 141 -823 -19 369 -311 37 757 313 415 473 143 -81 177 -271 -923 517 -539 449 345 -267 -293 -215 827 -365],33
-[827 -159 1 3 -961 -593 983 -81 -313 -611 -237 279 -801 923 351 -547 985 -401 -351 279 -151 959],22
-[139 -469 954 -858 381 196 191 490 332 725 -970 7 303 76 370 381 561 -149 265 -211 -577 944 920 -69 -406 -179],15
-[-982 710 162 912 -508 8 226 94 -264 524 -379 -536 396 908 486 220],1
-[649 385 741 -125 571 -4 411 2 736 -139 -545 503 -633 -915 75 -945 -703 -657 315 -639 -994 907 -629 611 397 -938 -385 -839 273 867 678],25
-[360 -429 -143 -975 -235 682 695 -224 -875 573 816 -454 -255 -895 -345 -292 -174 -225 29 233 -981 198 679 357 -213 199 -773 -727 345 378 498 166 -27],22
-[-35 433 584 480 -992 -448 -848 267 738 -489 500 -906 18 -989 -124 264 496 125 -926 179 170 945 811 -400 459 226 -182 342 -699 -694 -570],11
-[339 -489 -965 787 515 -771 457 -521 -337 77 -39 736 -247 -529 -641 -275 -33 965 807 -809 357 -751 689 -965 -107 -274 460 761 -351 -190 951 -827],28
-[463 -567 -3 789 499 131 -761 -359 -639 -519 -718 -389 843 167 61 433 249 -575 179],18
-[891 919 969 691 -981 -883 811 -701 723 972 -653 -773 221 245 523 580 737 779 -957 -604 -725],18
-[645 960 -693 726 -162 116 547 466 68 965 -560 -621 387 -16 133 -162 -880 -618 626 -638 89 198 -10 94 970 -607 60 336 -267 -140 -706 744 515 145 -176 -978 242 313 -142 14 -720],13
-[995 737 124 578 810 268 -964 215 -629 736 -899 350 -619 -136 210 -38 724 459 64 674 -678 507 100 950 762 566 413 782 842 -894 -653 -27 10 -260 -464 216 -511 -466 510 838],12
-[111 -526 -845 648 911 457 575 549 -493 -137 -395 767 138 -621 -608],11
-[-27 -615 101 -443 885 -761 -791 -441 585 -417 130 499 -273 -623 -939 -663 571 353 791 911 -561 719 -117 879 377 -329 -279 675 657 -187],29
-[735 517 -929 -385 -337 941 -307 949],8
-[856 123 -849 759 43 -495 413 5 -491 834 -896],8
-[-186 624 800 534 442 -506 -390 234 335 -448 454 36 562 388 224 -430 -796 644 -482 -439 880 502 23 -482 -276 -48 -6 160 8 12 -520 652 -828 -556 70 78 -962 -428 678 -84 28 618],3
-[-821 969 107 444 910 -11 618 933 154 816 -53 281 901 -240 643 405 819 948 677 571 643 -113 323 459 635 -531 -461 -943 755 -169 -189 753 -33 397 -111 -595 -137 -605 688 185 793 446 721 -255 -271 429 -477 807 -34 17],40
-[403 -672 842 896 -377 387 -946 522 -368 976 239 -350 236 -146 -662 972 -789 -813 282 -858 -30 -448 -700],6
-[65 141 915 -813 -169 743 49 -283 -323 823 -997 123 -423 350 -777 797 -359 796 -777 -799 -25 -431 -831 581 519 171 -328 916 1 -16 836 -81 775 805 131 -837 397 -909],32
-[-760 598 874 -664 44 746 -622 826 -128 -618 -736 186 97 230 -122 595 726 -686 -763 457 -712 504 -552 -134 -226 757 -750 -891 -214 545 990 -522 394 37 -18 681],9
-[55 647 -593 237 428 477 291 -753 -75 -487 157 -508 -654 -259 -263 -137 -775 -65 -997 385 201],18
-[-653 -605 -869 374 865 -111 817 -120 -984 -625 757 -563 817 -472 219 312 71 975 163 633 -270 -788 487 731 -891 -662 446 -522],18
-[-336 -395 -536 586 -80 14 -998 279 -324 -562 835 -198 225 -836 624 -347 -416 -696 560 -855 443 -880 430 -666 946 -292],7
-[-384 937 -317 -832 -684 58 711 684 -979 482 -973 -224 -996 381 -345 111 -662 -660 394 410 646 -254 -573 -584 -783 -709 -956 -402 722 686 -373 -687],13
-[-935 -876 955 -405 -655 -367 -632 -610 65 575 687 -21 -581 -513 -69 -997 413 165 839 -613 -413 221 939 969 535 738 -775 -681 -663 -307 57 -697 -717 347 -933 -391 813 993 -480 1 -641 113 -213 875],39
-[-191 916 290 -492 -333 -36 -800 -820 786 506 960 -660 -74 -35],3
-[241 -957 -857 -537 -824 -793 -355 -156 -446 139 928 443 -704 497 104 631 311],11
-[37 415 947 114 -531 109 651 946 -823 947 195 -799 -351 277 619 263 -671 507 -621 -59 -723 232 55],20
-[385 -225 -205 -442 701 521 240 47 771 -883 -306 931 -523 619 935 -473 973 357 -15 563 528 142 95 -258 431 251 -110 118 -705 83 679 895 952 -312 -581 941 -155 -122 124],27
-[36 -726 -874 76 578 -158 158 -710 927 946 552 -542 70 562 -761],2
-[809 271 395 -577 -21 -724 -888 -997 277 136 681 279 933 -147 -601 417 -306 -387 753 516 -926 -595 430 995 -522 584 91 925],19
-[-834 699 737 318 -676 -305 -501 -325 -904 -49 305 666 797 -185 -312 967 -584 -413 855 -773 -913 -749 405 -787 397 -130],18
-[-336 382 -920 816 -826 -282 256 644],0
-[264 648 316 -22 122 -393],1
-[1 -133 -21 495 -637 23 303 -841 713 927 569 291 -93],13
-[-461 -933 -245 -520 -27 577 -613 -754 785 231 700],8
-[905 626 -356 -6 -823 544 944 -760 828 416 880 -616 692 -809 562 -18 -588 85 288 -693 -473 -938 -418 943 -705 -492 370 981 224 664 351 974 -383 -104 -264 -572 776 802 464 -488 -436 -380 -155 -908],12
-[-286 159 898 279 320 780 148 -454 -794 -192 -447 476 -547 888 -891 -804 -524 -686 -971 360 942 188 178 -674 -377],7
-[426 -21 942 -246 -385 74 -420 514 -522 -382 4 -248 76 -19 650 -660 -942 151 -228 -621 157 -557 621 -158 141],9
-[-468 -618 -998 -92],0
-[452 449 -392 -940 -542 397 -768 -458 -488 -776 -510 652 -478 355 128 -239 623 474 842 -255 30 128 472 671 -80 586 4 238 -22 -392 -887 -451 188 -18 644 -149 226 662 -221 364 146 76 240 -120 -20 196 710 -244],11
-[-257 111 285 604],3
-[450 302 -807 -266 900 -714 171 -656 -904 -558 -597 -332 192 -187 -68 -984 -758 -492 888 -669 890 -136 -674 864 -852 -24 -952 314 520 -755 905 -278 -713 -460 -600 868],8
-[-523 -972 646 662 -561 -662 154 728 -622 -802 329 200 832 871 -84 -528 914 -326 502 129 -86 358 156 -464],5
-[-645 -332 672 689 888 -597 -881 451 -693 -5 -147 529 -677 952 926 223 605 -851 -166 395 -297 -417 -718 -987 653 -924 -123 580 -871 708 -522 401 675 253 251 855 107 122 -688],26
-[645 -76 242 895 974 -544 276 331 -972 -732 -177 176 473 -291 -824 503 -356 -975 -353 787 -873 -506 -229 -121 -329 -249 627 -184 330 831 659 624 523 715 -833],21
-[-156 994 -636 -785 -413 -441 -50 -854 643 -421 -166 -86 -546 -647 338 994 742 -538 -407 828 -400 307 978 -526 368 774 208 -453 754 984],9
-[-951 -661 -71 -531 -463 -91 45 -840 185 -788 -125 226 697 779 -27 609 -387 -531 789 -490 -337 889 -121 623],20
-[-357 -333 623 441 485 939 -699 -89 745 247 -639 871 929 951 149 773 959 427 -149 682 -55 -99 -839 -1 85 -623 -691 531 -299 -865 -829 497 -257 -915 -461 -33 637 -927 367 79 779 375 405 -611 781],44
-[-391 -365 161 432 -182 553 135 25 976 -558 -666 868 645 -148 719 303 -114 295 -179 459 927],13
-[512 919 -259 -645 78 98 -738 88 147 -979 -750 130 -389 500 227 -140],7
-[254 561 -547 -885 910 193 -863 -17 879 -137 755 750 997 -128 312 37 789],12
-[51 782],1
-[-373 691 -16 526 918 -772 240 606 520 16 608 774 314 -615 -134 984 952 -184 306 678],3
-[93 328 -644 -374 -337 -734 -40 -62 -154 -366 340],2
-[140 -632 440 -865 -508 -394 420 234 720 750 -694 -456 119 420 -836 -940 542 422 -572 -904 -952 866 524 -736 -526 -730 -440 -622 -342 -606],2
-[-322 433 -389 727 319 -589 -691 531 775 -291 -651 -780 272 -741 -311 -914 -76 276 -915 205 -649 930 87 730 393 -387 25 -752 -409 -565 -549 663 -599 435 -233 -88 -641 783 457 -958 -483 -162],30
-[639 -439 -371 -383 499 135 99 913 677 -317 -441 -659 208 808 411 8 695 -913 -339 -447 77 -450 -571 419 -83 -493 -533 260 531],24
-[-993 -86 622 -613 919 501 -915 -790 698 563 199 -448 -925 -867 16],9
-[-167 -183 -269 0 981 -365],5
-[-795 -67 -537 357 -423 -977 715 -417 -35 223 401 891 649 207 -207 -211 -455 233 428 -791 249 375 -237 587 -141 287 777 421 -293 629 151 197 -249 3 -209 713 931 -587 863 -635 949 -557 -695 -125 -211 351 -677 923 -881],48
-[-334 -388 450 -811 -882 -668 -836 -830 -562 800 -604 523 -998 -586 305 -814 932 -158 696 718 -115 -816 643 -639 -598 183 797 175 -280 1 -533 242 -199 -571 -860 523 93 548 -369 -414 -912 174 345],17
-[-274 901 -629 75 106 268 -138 -107 -830 -60 -402 512 -172 -476],4
-[-710 944 990 -320 945 12 299 -379 -979 498 833 -25 801 -992 -419 -713 285 718 -397],11
-[-616 570 766 914 444 126 -350 896 314 -94 -902 736 558 -924 -554 -522 -842 -694 4 138 -362 -582 230 -262 924 828 -480 596 292 -200 -766 -604 762 -230 600 -656 -844 -940 -974 234 814 -925 166],1
-[434 666 396 -742 -971],1
-[-254 159 -713 -942 213],3
-[-689 -647 -737 -733 -613 -896 267 85 -291],8
-[485 548 -302 -866 66 -649 -889 -926 646 799 -447 14 -610 948 -410 -891 -778 -562 -657 -24 466 -434 94 135 -457 -656 -224 324 647 242 -977 803 938 -734 -961],13
-[-953 -498 11 -517 -132 999 228 -352 807 -609 -994 225 -44 -202 -843 -763 -981 -791 22 -782 -833 481 -635 -111 973 143 -777 -608 -105 264 461 534 -327 -442 523 806 15 -787 773 -306 -236 473 -685 -894 -98 -862 -175 -883 -214],29
-[-266 106 -192 -896 -950 -633 -682 -436 -24 90 2 150 -398 -690 -200 578 703 -110 824 -992 808 -858 495 122],3
-[512 115 -658 473 892],2
-[707 -274 812 -872 -852 813 864 -854 408 -469 -632 -682 -290 922 -202 843],4
-[956 -508 -394 -516 710 -704 -20 -386 132 -782 586 -774 -664 -740 -726],0
-[624 370 -571 280 -134 -375 849 -113 612 539 -749 233 840 803 426 497 707 179 976 601 204 -140 -605 811 301 663 -724 68 -353 -830 17 295 532],19
-[584 -548 911 -329 248 575 -770 817 508 287 -211 584 -431 -303 -166 803 -474 334 915 -168 -52 85 -416 -769 -556 480 591 233 -954 270 -1 -196 -711 -667 375 343 661 269 213 679 291 -643 -481 275 925],28
-[488 -157 -745 559 583 -659 288 169 -911 -125 -745 -693],10
-[-961 -993 422 162 799 261 902 -640 -830 594 277 -918 -854 746 329 -140 738 746 -776 -633 377 645 -791 171 534 -509 -959 -533 333 -828 259 301 -602 598 181 821 -954 -540 471 -116 418],20
-[158 86 -46 934 350 -170 928 -614 -308],0
-[604 -374 324 198 200 -388 -362 748 392],0
-[820 411 -98 -694],1
-[101 92 -186 684 -992 -744 8 76 864 -144 763 -314 575 -258 -512 -150 -48 322 950 -162 906],3
-[724 196 -508 -902 68 498 -632 794 70 -692 -196 -655 986 518 -318 94 -914 656 -388 -908 -780 -706 -292 174 918 716 -36 -432 -862 8 -142 -860 868 588 -940 582 364 -420 -758 136 230 98 -632 398 584 248],1
-[237 661 720 -613 851 -947 459 268 -261 428 -416 -1000 -865 -360 -466 -736 551 -90 393 -749 48 -71 342 -715 276 908 503 -334 -41 -520 616 483 744 -552 -436 -651 -85 -672 -695 -937 -1 -103 183 -843 -701],25
-[-539 -825 -503 499 -485 -403 883 59 -523 663 773 981 413 -143 135 733 -961 119 390 -971 597 423 -565 707 773 913 -279 625 453 229 349 -131 755 -466 -301 -409],34
-[-342 660 -110 -630 922 570],0
-[-525 777 -725 -201 -72 -889 -672 -3 -141 -988 866 -249 393 584 -955 -287 -253 -762 535 -739 760 -725 806],15
-[373 -237 556 672 -738 -890 -340 59 784],3
-[649 -559 772 -702 -90 -502 -151 832 392 206 342 174 695 -582 -662 155 -103 -168 -912 855 9 314 -262 14 -873 -187 185 -574 -617 532 58 744 -126 -140 972 570 879 -107 924],14
-[280 697 -296 288 219 218 -651 -462 -279 821 -355 612 -20 569 159 44 -359 909 884 453 -657 392 756 -62 -791 -285 -786 -747 983 565 -421 -802 -984 565 -275 899 295 597 331 134 -911 63 -465 -838 488 279],28
-[757 -241 789 247 783 173 975 161 -471 280 -659 -701 463 -285 -840 201 -320 749 -625 -165 547 325 279 -577 165 665 -275 -729 87 603 661 -393 469 787 -938 663 569],33
-[-321 686 342 260 629],2
-[-882 680 -93 814 52 -626 -132 -951 -874],2
-[512 740 962 392 -486 -260 390 706 222 269 -954 726 874 -817 -617 307 -915 182 -548 -930 885 792 552 -494 494 -638 -940 -371 -98 754 294 365 247 481 -293 -795 378],12
-[-609 616 953 588 561 408 -361 109 -509 77],7
-[46 335 -590 307 697 755 480 765 -881 -261 487 815 -465 393 -517 634 -49 90 96 -69 201 526 650 -319 5],17
-[-488 -974 754 -157 -610 -709 -42 -88 367 -453 259 256 -430 -412 29 -612 -858 132 356 523 840 -540 -370 670 -254 -699 886 227 -882 68 288 -908 -932 -226 -566 -972 -570 -306],9
-[122],0
-[-495 -947 322 -27 -206 -511 129 486 -251 771 -550 632 -755 635 724 -629 530 267 -663 671 -299 -405 472 -201 -855 -694 419 -921 315 235 -79 -973 127 447 -420 679 -215 469 608 496 -23 296 599 -872 -933 -764],31
-[976 390 -489 -635 -766 -431 -229 -411 816 598 -8 577 796 -192 590 -527 -325 283 248],9
-[-239 797 593 -17 -739 707 33 -387 -109 -738 525 -114 376 -385 -188 -225 -251 230 -79 -556 165 -966 -106 -720 -254 -194 716 -199 990 497 -132 -462 -168 741],18
-[1000 740 150 456 322 456 481 689 -48 -818 160],2
-[545 -807 885 -191 411 -285 623 -77 -905 -336 627 729 -767 -451 -171 955 797],16
-[-11 687 661 137 -699 -599 -761 795 841 9 79 -52 -115 247 819 -61 891 997 -595 999 -977 709 -579 591 147 145 833 -585 209 -911 285 -303 -679 115 -543 405 -81 547 -839 -255 137],40
-[195 -275 -505 247 907 827 49 116 281 167 105 903 657 -645 -807 -29 -847 278 -35 855 659 -402 -809 543 707 -599 -33 -979 -762 -815 328 283 245 -819 808 -237 17 -828 -193 42 878 -660 -196 85 -101 -298],34
-[790 954 580 566 218 -662 -734 162 166 -462 -532 468 2 -980 876 858 -34 -702 250 -214 182 272 666 -578 108 204 -756 442],0
-[-383 361 307 -794 -884 377 243 631],6
-[-290 -731 964 457 994 -754 -259 -62 -837 -692 -490 621 334 -300 225 -419 434 102 717 75 -866 704 362 232 302 950],9
-[915 -262 175 17 -541 801 -61 -865 941 -465 -177 419 427 -60 -252 929 -141 -71 -195 -717 -592 603 -734 506 559 -943 -222],20
-[516 9 840 872 -667 -205 -999 -309 -93 367 156 313 968 -428 232 -842 -581 -250 126 -274 -474 -827 -159 195 -59 -909 -589 49 -59],17
-[-40 964 735 747 913 -120 830 -894 -94 644 -44 -354 810 -653 -248 804 -446],4
-[782 452 -355 -706 -862 -616 438 615 178 -290],2
-[180 710 -638 6 454 -208 -642 812 282 -144 428 632 -674 938 188 -4 766 194 310 257 -148 796 -332 666 -818 736 912 -754 -748 64 -662 496 86 416 974 -871 556 246 148 -112 -370 -10],2
-[-342 916 -599 940 572 134 267 148 -980 82 -280 -375],3
-[986 102 930 -802 -819 -558 220 -177 196 -424 -86 506 -980 748 -974 836 -630 -526 518 716 964],2
-[222 610 -962 678 474 -749 164 442 -414 -986 -476 926 -445 708],2
-[-375 771 170 5 -858 417 -46 619 -226 622 -543 -971 -912 561 320 208 88 -56 886 -325 890 -513 -880 -809 -372 -540 452 -892 -743 125 -926 740 -193 -740 -946 -876 -579 384 44 161 -683 -296 555 -354 852 672 -596 967],19
-[4 301 -448 918 313 -517 -659 410 89 97 926 -44],6
-[-918 486 -986 -534 -954 -574 342 354 -948 -78 460 -674 -506],0
-[256 -447 -38 -553 -769 609 -897 236 -616 350 663 940 980 -971 538 -228 -774 -444 -361 -616 323 411 -965],11
-[714 -632 -846 -916 361 675 -10 -472 -19 632 -583 455 -935],6
-[-675 -338 -374 -476 -324 378 -931 -896 -460 -718 -571 -158 -462 27 502 -57 583 -156 842 -686 -182 25 270 -986 -478 -127],8
-[-422 72 536 -236 -196 -408 722 -836 -545 834 -9 -539 -332 -404 44 -994 744 -72 -556 865 815 -704 -724 284 -179 740 128 -10 -583 548 -964 426 158 -492 102 950 -278 998 -289 906],8
-[170 -728 136 -186 770 -400 365 538 44 788 698 -680 -399 224 -444],2
-[722 249 439 991 943 -599 -350 729 -135 388 -438 196 -348 -273 -453 -961 -879 10 184 437 953 -233 -669 889 -340 -951 -435 315 -735 208 997 749 167 313 608 689],25
-[-855 -879 478 591 866 -403 -188 -262 295 -385 126 -162 709 599 202 -904 335 -430 128 -919 -162 -548 159 -252 26 -539 -794 -661 -1000 -713 -57 -215 968 -722 -657 -293 -206 687 784 -566 28 721 483 -705 867 -779 860],24
-[-571 96 -246 153 -369 165 609 -434 223 -179 688 -8 -722 -6 -7 -711 579 341 -615 -649 -208 897 806 841 -737 -617 -480 -442 -97 539 765 -729 452 95 -600 744 -178 -810 761 565 -514 217],25
-[441 954 -764 -929 549 -799 -874 234 59 -284 948 -701 -142 994 -854 -835],7
-[34 497 282 -397 -130 981 711 311 969 -729 -560 204 -707 -896 -444 513 -576 -255 -508 -59 759 -298 374 32 -553 851 -569 753 964 649 -227 227 819 659 -815 207 557 -199],25
-[-732 -425 -819 64 -609 861 -795 -213 -197 -740 -518 -21 51 959 337 -633 983 -185 -369 -38 327 968 -559 -19 -353 237 915 -978 -292 -677 -721 644 593 -73],25
-[-455 -195 201 -665 874 -696 853 428 -328 -251 641],7
-[-755 161 647 -129 280 172 605 -815 999 -943 -635 -193 -267 -151 -417 979 180 -958 -235 -973 281 225 -423 347 970 302 777 222 -891 -989 -416 -886 23 -445 892 -229 -195 -617],28
-[742 528 154 995 -378 -331 908 175 298 -540 427 -39 -596],5
-[101 -304 601 -904 142 -977 -330 -583 -520 -671 927 395 325 -760 -456],8
-[-77 -77 -301 917 666 335 -764 -462 820 -650 -915 731 -491 855 -694 815 -209 -782 -983],12
-[437 881 -663 -573 613 209 825 323 -704 -963 -413 -745 -751 921 340 -501 -840 -733 -834 874 91 -963 582 -7 -461 -117 404 -194 -807 783 435 6 -657 80 -220 744 -885 -887 -925 -502 661 -991 -753 -593],31
-[775 61 457 511 -633 291 -189 -538 503 -937 815 955 -451 -397 -817 -793 287 927 559 -549 -27 -979 -143 299 773 389 -627 677 -494 -651 -900 -11 661 -445 185 354 927 483 48 771 193 -19 -731 137 -717],40
-[382 -114 -608 678 -832 730 295 -516 -82 -310 -628 -846 920 -790 -512 686 -310 624 -816 768 -672 584 -136 294 502 276 408 686 -204 952 -808 512 404 144 -138 -128 112 340 4 256 -689 -786 -188 -637 -486 -812 -398 628 -118 -60],3
-[713 -289 -666],2
-[663 -923 -595 811 439 -979 205 701 -768 -571 125 -173 415 295 393 739 -695 -235 -695 -255 941 710 -637],21
-[410 -122 -960 284 664 -736 -520 292 724 938 124 -200 -774 -698 947 -376 90 -550 -672 -428 484 290 240],1
-[-623 660 -632 238 -822 132 -178 969 -754 -18 -534 -808 624 -430 -930 904 -424 -262 -582 -674 568 -12 -812 360 -950 968],2
-[376 -304 876 -134 204 -64 966 -156 -728 720 600 -768 -458 154 -522 -830 2],0
-[791 212 -467 955 -349 59 -605 688 -211 -731 810 -60 -134 100 938 550 -192 -957 -260 -527 161 -9 -944 548 -197 -795 611 -874 32 526 278 -984 -505 -780 615 -998 696 -569 -454 941 -596 191 -844 -407 740 922 682],21
-[-705 361 -638 600 -743],3
-[-398 775 666 -871 797 303 -679 927 771 -955 166 -487 673 -209 366 819 320 -831 999 -827],15
-[-106 776 -72 -162 450 -474 -50 748 -366 780 -612 334 644 530 534 -442 -356 -624],0
-[652 861 476 -336 92 -759 -559 288 311 612 664 688 -511 398 -972 352 -298 420 928 -620 -114 -543 246 447 -719 -88 -284 -488 -109 878 -28 777 446 536 95 737 584 793 -787 237 741],16
-[740 -160 372 -874 -88 388 522 -240 314 702 484 -994 982 -46 -386 -156 -520 -318 -140 766 -710 156 -600 -770 -812 -344 -86 584 288 -886 614 -362 -568 914 542],0
-[668 -102 -799 -110 572 885 -892 306 564 78 492 772 -830 558 365],3
-[-677 -675 -493 -61 451 -831 361],7
-[-947 -228 -10 30 -674 -500 266 548 296 604 -712 278 796 318 678],1
-[911],1
-[-59 -874 -568 -36 -550 -932 899 -471 -120 899 -746 776 485 -316 136 -372 340 -719 788 -9 470 762 -45 635 199 173 -484 -280 -583 -613 -9 906 -465 935 -882 416 -920 -949 947 -947 -138 222 541 274 575 82 509 327 515],24
-[-842 406 766 -56 -35 -320 323 -259 260 885 880 -250 680 -102 -149 -941 885 879 -485 -168 887 277 832 816 -194 804 833 34 105 -434 -155 -846 -601 998 64 318 -824 609 -356 -970 635 -968 -39 -580 -532 -354 720 669 662],19
-[205 179 421 -281],4
-[-749 -485 901],3
-[-984 111 -809 -195 -15 -301 348 159 641 -9 -23 -663 -619 9 -131 805 886 -758 -626 553 -52 905 297 437 -150 -555 168 621 -276 95 -813 -953 49 -381 -241 147 -663 893 -231 -431 895 -699 927],34
-[-140 -82 376 851 -830 -588 673 -213 -454 142 -726 849 -873 -56 352 984 -454 -950 151 987 -344 241 -154 319 -444 -867 969 -212 -28 -904 -972 -654 -176 302 -293 500 774 644 875 56 -209 555 -397 638 -291],17
-[-456 -430 657 790 -854 -784 -90 204 646 10 -764 -748 838 372 464 932],1
-[883 392 67 -955 -261 -383 833 187 -595 11 385 -447 -889 142 531 921 413 291 151 -591 -230 -773 -779 -643 73 -100 -281 10 -25 -457 -11 494 -562 758 -458 742 449],27
-[-559 -313 763 -642 601 -727 -603 -709],7
-[887 295 529 -767 805 69 383 525 489 69 -509 415 99 797 897 -707],16
-[-569 541 37 -27 -229 289 365 -889 229 -607 189 367 -976 -253 927 -342 347 39 421 63 -843 797 -565 -459 -162 -681 -4 -765 -335 59 699 709 609 -208 -181 459 -351 61 477 -939],35
-[284 997 298 -372 418 -752 -371 -706 -968 -501 231 58 -636 411 -727 -71 376 -416],7
-[-226 -963 -954 -181 -618 -870 -691 123 320 772 809 -642 -989 2 551 -768 222 6 -828 10 245 544 -438 293 -420 197 490 -798 -1 -812 -79 965 -755 -176 -631 407],16
-[-41 -987 -693 814 -54 -407 18 -965 -858],5
-[353 -257 -819 -217 107 -369 -741 137 -63 207 -609 -519 331 -781 -963 469 967 535 -971 873 -813 489 13 395 -313 993 728 407 359 315],29
-[-28 306 16 -128 46 -322 672 -416 170 870 174 208 572 -502 -380 272 -228 -374 -380 350 -132 404 50 -850 -74 458 -992 734 -678 42 -418 -760 314 -956 766 372 150 180 504 -58 156 -468 -504 444 276 752 812 -678 242 486],0
-[502],0
-[-299 118 828 541 -532 211 -243 318 662 -446 -658 -990 383 -980 430 -291 -268 -613 -150 -356 82 -497 449 -29 -628 -546 623 -527 200 -881 -614 -882 973 -523 801 836 276 322 -588 -778 523 -504],17
-[414 66 -948 -840 -820 920 708 -172 730 -354 -48 -934 -200 -550 356],0
-[-477 -957 237 -810 283 -749 -279 -926 133 177 66 253 949 -225 -195 -305 375 -761 829 -417 -628 152 725 -588 -861 235 112 117 45 518 -88 470 -992 -64],22
-[-212 322 -561 -246 366 -998 118 -834 654 -327 513 -492 91 -256 -610 398 -748 -84 -970 152 447 67 -256 -464 -964 415 -575 756 -600 696 422 950],8
-[265 -999 745 333 -637 -335 -291 3 631 -233 -615 -292 53 -981 599],14
-[422 -494 186 982 -34 536 26 554 -836 -130 40 38 620 724 -308 -974 566 -522 -372 658 645 772 -538 38 940 -442 -168 568],1
-[992],0
-[282 815 -748 -528 209 -379 -511 686 -353 946 878 935 805 -653 -7 527 -466 -674 306 490 659 872],11
-[993 13 -823 753 141 159 627 -545 -219 79 20 585 892 214],11
-[-161 -961 507 -59 -83 719 -71 523 611 758 -99 827 -383 673 616 985 -961 -217 581 -227 -859 13 -307 742 -297 389 -576 175 835 709 -709 -449 -951 -71 23 425 -71 -921 -550 833 769 -258 -76],36
-[-600 -379 -776 -227 -584 564 -830 509 458 -551 -110 -376],4
-[436 920 -764 836 534 414 974 -672 945 -908 828 -388 -824 -648 -900 238 706 464 -430 318 -342 -186 508 -380 176 -382 100 472 -940 962 738 817 306 38 732 862 286],2
-[316 -556 -880 -692 272 990 -195 370 578 -176],1
-[277 -756 400 -84 311 -55 -925 -803 -723 899 394 96 -31 -893 177 860 388 420 -612 -317 -957 -267 187 -787 100 416 -414 -674 410 -574 -449 479],17
-[865 107 -551 -804 -525 -703 463 185],7
-[-394 -576 954 -908 76 860 -670 -419 -166 -734 538 394 -962 560 577 50 -270 -133 -16 -703 571 -688 737 -750 -661],7
-[743 -373 171 -509 -493 9 -963 435 891 -377 -273 179 -647 -845 -425 505 -831 -239 -173 277 267 53 -807 -131],24
-[-604 994 407 254 580 854 -203 -496 233 456 -362 -456 911 483 340 991 704 -582 -356 -341 -220 905],8
-[-454 424 -940 -934 804 4 890 -476 814 950 -666 486],0
-[-602 -560 906 -498 -941 -334 -510 254 148 968 624 -128 138 -300],1
-[-646 290 -633 -865 18 -388 -817 -514 985 903 -889 -286 -460 -956 -363 -513 256 -286 -454 -385 455 -924 767 211 -50 -744 167 -842 -864 840 -431 272 -810 -98 -104 333 862 -232 -320],15
-[-32 176 -932 404 991 186 -988 196 -15 202 -908 931 -860 628 -132 864 290 921 378 712 536 -279 836 176 499 800 383 -818 -252 450 931 437 -522 858 -752 -203 -600 -736 310 -688],10
-[965 -62 212 -282 -220 -722 991 184 -911 656 908 -54 -696 46 -106 428 274 -74 -626 -106 136 816 446 -982 928 78 420 568 480 650 -932 16 -54 112 108 604 -782 540 -732 -110 754 -926 -118],3
-[-459 767 797 804 64 947 455 872 708 -529 495 97 685 -535 189 -635 -477 -779 269 -985 -7 -371 -429 -473 476 -794 565 250 315 -697 449 -667 -485 739 -25 383 791 -163 348 -804 300 -245 -661 553 -203 210 -567 47 -895 973],39
-[-463 -131 929 821 -573 89 -280 -513 -393 575 533 369 -783 173 519],14
-[-579 -673 -479 -775 -721 557 767 746 -597 -733 189 -357 -491 -73 -335 209 -842 -489 299 -101 -269 273 -577 -596 959 663 529 -205 647],26
-[241 70 -169 -567 -233 207 -570 474 -190 -856 -76 158 -217 43 431 -917 362 -302 400 -465 568 -544 -549 -491 529 116 -880 -261 65 890 964 -957 -130 168 -350 446 -610 -309 -498 -523 -146],18
-[-679 843 -381 289 684 -89 477 263 173 -90 -461 963 471 -929 307 867 13 892 72 829 521 -688 832 519 749 -843 -805 839 732 -291 857 -215 -345 195 -857 -13],29
-[113 -842 -704 -690 -400 -687 834 -640 103 506 -583 -538 681 186 -740 456 626],5
-[-846 -391 789 345 638 727 -911 986 -881 -323 932 955],8
-[-489 275 150 897 697 749 -889 166 467 755 283 -608 -305 -221 189 -451 -965 716 633 763 -513 25 507 -959 -263 -187 -743 283 -283 -765 -167 -443 945 -468 -213],30
-[552 188 89 596 -109 253 913 655 -9 892],6
-[-214 -943 688 482 316 -364 190 1000 -882 -241 406 -795 -938 -458 -972 460 -738 -910 898 -162 132 611 -356 -86 558 506],4
-[201 840 -299 -237 -529 341 511 91 353 -797 879 -155 -461 537 -619 -29 -960 548 5 588 -19 443 691 149],20
-[433 7 -963 -516 -621 -427],5
-[-549 -776 15 902 -786 -109 742 -628 -290 -578 596 810 -384 -346 -488 -885 -108 391 -458 -486 -107 718 873 698 -221 154 96 -38 283 -233 930 318 -616 -250 -872 -600 -733 -96 790 903 -342 -724 -343 -659 -804 -422 218 -644],14
-[653],1
-[473 595 843 -621 4 116 -589 -687 243 983 -532 30 -789 -165 924 -195 891 -887 -305 -921 547 -225 682 207 691 170 411 -567 567 767 659 623 -88 -813],26
-[980 460 544 770 -954 552 448 940 -664 834],0
-[746 -561],1
-[-524 -373 -756 -544 -660 280 722 128 332 -188 631 930 810 398 -224 605 658 460 -667 -250 -436 484 -392 560 362 -990 198 -534 161 -672],5
-[-467 207 33 995 -261 -884 -543 323 527 57 -966 -965 -55 -779 779 771 847 -299 937 507 -659 25 907 254 665 -537 -145 -658 41 -789 875 -196 473 481 -425 -23 537 -717 -513 915 453 -867 -147 -646 -455 378],39
-[880 -1000 -512 -546 -873 -518 667 273 15 93 927 -480 434 -947 130 -828 -296 694 217 122 912 -212 -806 -242 186 -347 330 -658 275 65 -735 783 -88 -545 -87 600 478 251 -7 -923 -221 775 -531 398 -542 -633 -253 -74 60],23
-[-78 -496 -428 -254 388 -732 -173 -50 776 -4 242 676 -834 -872 -110 553 746 326 -16 -48 634 -412],2
-[63 -295 -680 -60 47 545 563 -755 343 -998 537 699 597 641 669 803 -347 813 -555 -347 -528 755 -147 -439 -51 191 497 576 -903 953 -760 -224 -98 -288 597 249 43 -287 551 437 -616 153 233 177 95 229 285 -676 -125],38
-[-590 -56 86 -504 -560 494 -948 634 -818 410 356 602 -18 622 -322 156 -488 942 364 624 -674 352 -484 -620 236 612 738 946 -586 486 -164 -356 934 152 -468 -270 -618 -542 148 186 -316 -964 330 90 270 -530 378 368],0
-[-881 -315 -811 189 596 731 153 -259 629 863 19 -172 -187 585 675 601 800],14
-[761 843 30 246 -219 369 573 -712 342 -200 -699 -192 -289 504],7
-[-768 329 -415 -323 494 -350 646 309 867 854 934 -228 -972 186 -965 992 -43 478 -947 -353 250 -845 359 229 274 770 -505 216 -606 27 -672 621 -461 945 -152],17
-[-826 726 -848 -106 674 930 490 -20 986 965 380 706 948 -776 334 734 890 681 894 -750 -398 -865 718 80 -566 948 -658 168 -536 544 -418 800 600 396 130 174],3
-[-652 -218 24 -356 322 -748 382 659 -884 440 938 -194 982 -614 -280 -110 -150 620],1
-[234 -949 473 179 132 424 -629 436 -22 -195 -206 436 -670 987 -992 18 -676 -490 -657 -166 -312 -744],7
-[281 392 958 -410 696 459 718 888 832 -146 -596 -697 -950 466 956 746 -700 -102 -518 -860 -998 612 -324 184 -918 68 785 -881 463 308 509],7
-[757 -535 -385 -373 43 -720 -255 -903 607 -551 642 601 947 751 199 997 -506 -311 115 -436 37 260 533 748 487 815 986 -34 -679 947 627 909 785 -321 839 935 -25 -582],29
-[-764 73],1
-[-407 -748 -664 176 -694 462 118 -442 560 778 -850 134 74 640 -988 331 254 -478 -152],2
-[-486 399 919 -449 -380 784 -744 676 -962 256 849 -99 -292 -740],5
-[-664 620 -34 -728 628 -460 -152 840 -818 -958 556 -520 496 336 82 248 224 -324 386 -184 -126 378 -304 -208 -432 38 50 -358 -346 528 252 608 -684 -228 434 582 626 -680],0
-[-327 -577],2
-[969 742 -190 -856 -959 61 -462 -372 -56 61 -553 -811 -854 -668 -350 774 620 706 -682 -459 378 506 -703 -98 231 -29 682 392 89],11
-[-63 -906 291 -612 -21 -929 769 -528 -293],6
-[-694 141 783 -350 -726 -828 -581 -726 822 -394 -88],3
-[-461],1
-[651 976 703 -780 298 -523 55 -652 460 -986 566 996 328 713 -876 -969 -777 -124 848 -976 -440 602 -454 -764 890 -716 -220 114 982 -168 691 -145 640 -376 -816 -227 480],10
-[471 663 497 348 -781 151 -199 275 872 744 682 520 320 -639 -305 -284 -771 -77 -864 -122 -239 -933 -61 913 -442 558 632 -454 -350 -15],16
-[2 -866 590 -230 -634 756 210],0
-[137 847 235 143 -279 -697 -411 -327 754 -631 -149 -37 415 51 999 277 271 287 975 343 179 -857 507 -767 145 -131 877 -579 -295 -395 883 -227 995 191 -713 487 -677 -317 -933 -911 559 -591 -424 -967],42
-[-482 -759],1
-[-471 -325 -453 485 261 857 1],7
-[499 -845 -973 631 -923 915 -548 269],7
-[917 -841 -999],3
-[283 -584 -852 42 250 918 0 -544 397],2
-[-447 139 -469 583 203 -295 935 -179 851 -639 320 83 229 -935],13
-[-196 924 -405 -428 295 -419 246],3
-[-536 -604 -920 -976 870 -589 862 -116 790 -777 -196 -234 -924 204 146 52 810 574 -462 312 -570 -30 814 540 4 28 128 436 -824 -516 -724 142],2
-[-524 324 -156 42 166 75 123 -358 677 996 439 71 -562 -203 851 179 -308 389 655 153 -389 -128 -770 -864 -804 -658 -694 -865 614 -748 442 470 555 98 -68 916 939],15
-[-745 635 870 -105 -927 -165 -682 143 881 333 261 -634 445 321 862 707 357 -641 208 398 -513 663 -959 -309 -587 -210 -579 -66 -405 -759 141 -969 -40 11 -575 -847 -943],28
-[-128 -80 610 381 -311 376],2
-[-672 684 -488 -945 98 -752 699 -682 -116 -437 648 -639 494 -696 17 -968 12 338 -241 377 303 -772 -874 938 -142 -252 -182 759 -999 -855 -639 -669 -102 711 631 48],15
-[668 -217 148],1
-[-803 585],2
-[955 -392 -312 265 -940 -630 -760 -815 144 70 -508 -821 266 866 657 -526 140 29 707 -980 -776 268 948 -162 230 968 -974 -2 -94 465 -743 171 -466 -206 698 106 202 688],10
-[100 4 -366 -198 -214 -156 -19 -991 647 312 735 -231 451 150 -201 664 228 925 312 -405 -201 633 410 93 836 200 -709 301 -369 -158 208 -151 -311 809 279 -61 211 -7 -565 209 75 264 405 -850 668 -97 -832 80 -642 -833],28
-[629 -858 -775 -741 -337 -960 -827 367 -920 -645 756 -991 -817 -674 -341 -236 967 642 708],11
-[-389 1],2
-[-683 552 762 -342 -900 -406 842 404 -196 -327 256 -390 -622 794 220 946 -438 -182 -16 200 9 175 -338 996 818 150 270 924 -544 -934 52 -308 -200 -946 -470 636 -372 -212 794 844 964 -364 892 -632],4
-[882 38 503 -586 806 -666 -762 -945 -740 309 -813 -705 480 482 -908 199 -5 -135 -759 274 -815 -347 239 -206 -807 -846 24 -8 974 -552 -688 -796 -86 -388 -90],13
-[-516 -925 -305 -931 163 323 345 371 555 707 405 -677 -669 910 961 437 887 547 -433 115 471 -209 827 -199 791 698 387 -669 239 769],27
-[-728 -439 362 338 121 -852 940 55 -251 -293 -990 597 43 451 89 162 -537 562 78 448 -43 -473 266 -734 -897 487 -730],14
-[-260 -110 177 211 -781 456 -929 229 -659 -153 856 -203 260 959 -199 -844 524 446 -18 -678 383 800 338 388 374 386 698 270],11
-[-302 -313 638 -179 -839 138 -839 625 -37 -523 353 63 -951 776 -423 -795 -973 -93 -621 -457 127 407 711 -863 -45 -251 -326 -183 785 759 -341 -133 373 -261 -753 197 704 -161 -793 23 803 963 459 -149 695 249],40
-[-285],1
-[804],0
-[-177 -499 -335 -356 418 -69 954 -526 -195 -834 550 -724 897 435 -546 582 392 938 797 -681 -458 -895 93 -167 -566 608 394 -891 191 -105 -824],15
-[266 -461 -430 -50 532 56 -808 -238 462 90 -430 -408 784 -132 -670 -370 -516 -346 516 534 -306 -874 909 952 -474 -14 -838 652 -912 584 -683],3
-[737 -277 -329 -67 -857 -630 473 -780 -787 -945 -993 189 -372 473 -955 -151 803 -386 235 699 276 985 603 -865 -713 -362 176 -929 129 -491 -202 55 -394 509 291 327 -258],27
-[-605 977 -375 483 -634 -629 -673 847 76 659 -769 -121 -830 -561 -491],12
-[340 -548 -306 -500 -938 -835 -473 -380 278 605 41 -737 -326 -1000 -296 226 -18 -975 395 -401 -326 -208 959 -105 -389 -60 -542 -501 661 451 253 -434 200],15
-[-334 -38 -588 450 600 -608 626 -770 488 296 428 -713 552 -536 -354 -686 358 464 -963 -660 326 374 12 376 -36 424 -496 506 574 -460 694 854 -670 -678 824 938 -864 354 630 -452 -252 340 -763 -584 -462 -986 852 -702 -258],3
-[429 -850 291 -175 524 792 -81 847 875 -339 -689 780 -330 254 -143 -188 -134 549 -150 390 -822 -22 -379 -445 624 -142 -640 300 812 3 463 36 108 -804 -762 972 -780 -743 289 422 -500 226 393 -748 666 -441 -908],18
-[-403 705 548 996 -65 459 -7 -643 893 221 19 -577 -657 -475],12
-[695 -517 418 -754 69 -91 -470 -13 231 923 461 -952 -728],8
-[-203 59 761 -146 707 95 -885 -313 51 -423 -1 1 -161 121 -940 733 165 -457 -255 -171 644],18
-[554 776 -975 305 583 -570 287 -766 899 974 111 119 -925 44 453 684 895 833 324 -898 228 559 -537 -939 493 706 -710 10 224],15
-[-866 474 -830 72 -592 -158 590 -322 -463 437 863 -644 604 -126 -436 592 541 -906 960 -887 704 -456 330 836 -421 624 614],6
-[564 -124 -48 -81 472 608 333 -216 -856 -916 -999 604 752 -92 222 -906 -958 181 -854 716 453 833 846 -522 946 283 -440 -812 -622 519 712 -244 228 -398 316 598 26 276 -738 173 -534 557 336 -522 -460 620 582],10
-[-43 -11 -283 -502 -891 -601 -458 266 -408 115 -37 -387 -773 207 -14 755 41 -53 -607 -499 -818],15
-[532 -793 -324 -497 892 -106 161 781 -535 -698 671 916 -164 -683 -208 -619 126 -306 870 589 -430 812 -856 251 666 -162 -877 902 -700 -445 399 306 -340 -942 -830 980 586 -959 999 38 -318 777 108 711],17
-[86 618 448 -546],0
-[16 232 425 -316 -296 915 -372 306 -198 984 -218 93 390 -268 -770 193 -185 -982 556 816 951 -771 583 130 -66 970 -415 773 -581],11
-[-520 -820 456 944 68 -296 196 -608 -306 -734 -200 -692 210 828 -416 928 -190 -656 532 194],0
-[-451 -73 -263 -412 -933 30 -395 306 -434 -347 917 358 770 440 486 671 -324 440 898 -773 -752 2 564 672 -990 925 395 26 -86 470 14 903 -281 -714 -739 -614 311 -319 -318 -797 790 -401],18
-[196 291 237 881],3
-[-612 938 286 672 638 -132 -686 730 -712 602 -890 722 758 -891 -652],1
-[506 216 -10 768 974 559 -480 38 -293 694 474 -428 460 -909 -592 -622 -38 884 420 -824 -775 138 854 -288 -192],4
-[-800 414 -290 -444 -8 954 -772 -528 -744 762 691 -34 -878 -504 90 408 -998 -232 44 -668 -648 -78 -184 -904 836 532 -776 -276 -43 338 408 -113 996 -238],3
-[633 -127 -680 872 439 731 -427 707 967 -229 -501 289],10
-[391 989 -763 763 -104 -867 -707 -162 310 -980 398 787 770 -563 -856 138 -443 -500 330 74 239 -781 -720 856],11
-[-508 -4 576 142 920 374 172 -682],0
-[-913 -497 -295 -795 589 -153 359 -191 -295 93 -327 -217 125],13
-[-822 -625 206 439 139 405 121 698 327 -925 681 -47 -671 -649 -572 733 293 705 878 654 666 261 865 80 272 -277 760 -25 -743 -106 194 -181 705 841 92 -439 451 -858 -877 76 453 -361 -126],27
-[-85 626 520 409 59 377 898],4
-[213 391 239 173 426 367 -537 -935 781 565 421 -992 653 -754 -242 180 555 -881 -987 -566 -12 -651 -830 987 837 434 697 411 -474 -606 286],19
-[-933 -205 -575 -175 -403 -711 193 -85 -488 327 -419 -537 -203 59 7 -300 93 921 515 -775 809 -783 -221 325 805 5 735 399 -185 957 146 865 -364 177 -595 153 173 -975 878 821 -37 -143 -374],37
-[110 754 -934 -172 608 -255 888 -451 -626 -280 -672 -632 -484 -662 -887 -954 922 -356 123 -446 748 386 -773 -894 502 936 356 -234 26 -990 974 -692 99 -74 733 -363 582 544 -98 -934 -262 -392],8
-[175 -211 527 449 -751 -35 603 -797 237 -355 -399 6 457 -885 291 -151 -175 505 -229 -789 -221 745 -833 251 -259 441 999 843 -713 399 -867 713 -433 915 -621 573 -63 555 635 -748 -129],39
-[32 930 -193 743 -914 -650 483 -822 795],4
-[-25 -663 -271 -655 -408 -527 -105 -155 -883 663 827 107 937 929 -331 55 751 381 915 701 451 169 71 -921 -821 -791 839 925 -307 184 -941 -805 -123 77 -893 -201 -725 -423 -155 407 -907 -671 531 925 713 47 -183 902],45
-[594 656 318 -550 60 392 -204 674 992 14 -416 870 44 786 -974 -342 40 608 -882 -286 524 382 802 662 -316 406 -974 -876 194 -112 -680 -420 24 -46 -688 -58 -844 -926 184 166 -972 34 296 546 -332],0
-[-193 965 78 494 718 897 -483 -522 -18 -512 790 -908 775 -832 -272 422 610 -914 155 -849 -996 -6 -530 490 228 -897 -28 934 369 -238 -896 276 -558 300 428 -810 -407 -802 -88],10
-[-172 -317 52 180 -223 911 945 -899 123 -911 -713 337 -193 -185 -271 14 801 991 505 311 -325 551 605 -241 357 273 80 -213 783 -100 87 -410 -991 799 422 -920],27
-[-291 444 258 774 339 146 958 342 788 -222 750 862 674 886 -460 816 -206 -410 -972 436 -799 82 782 720 -556 -516 -370],3
-[856 122 856 -456 -535 74 952 940 -488 115 828 -450 -596 -972 338 422 18 738 596 -422 14 -910 350 -386 412 -704 546 -492 -964 -300 4 -798 732 216 -649 46 424 -832 993 -566],4
-[-550 173 -118 153 -28 952 -36 850 -791 -166 192 773 101 335 52 -766 -74 277 668 -40 -228 239 534 -984 -285 -120 -682 101 -456 559 152 -622 311 -562 918 708 -696 -899 -990 309 381 -351],16
-[-383 -145 -285 -531 -512 343 925 -207 453 -215 -613 -423 251 -771 -103 469 496 -689 370 369 -125 -613 -989 33 -85 901 679 391 -585 -147 259 561 -197 -765 -809 -679 937 -105 319 -449 873],38
-[626 -474 54 874 -614 -750 848 914 -586 288 134 -494 -556 -470 -746 -680 -466 706 566 408 314 -316 56 412 -104 -660 -822 866 -638 -360 -614 484 -584 -474 674 -90 -242 -98],0
-[738 920 -242 476 88 624 -770 86 168 -184 -33 -986 604 -480 -636 498 -522 -81 -880 496 674 -132 -564 -714 -552 580 76 -607 114 -716 933 -474 418 54],4
-[-199 -869],2
-[-726 339 207 -721 873 -549 23 275 -291 -21 594 -319 785 -291 -171 -921 -605 315 244 -160 429 442 -550 624 264 430 809 720 -982 718 -263 -241 509 -538 283 -625 613 -415 487 -25 -977 519 501 -173 620 821 -931],33
-[28 -680 -520 -848 -848 -780 -230 580 -634 -376 -635 132 940 -98 216 -582 304 -610 -625 -638 -328 -444 -492 -903 -920 -295 -106 936 756],4
-[-695 -986 -87 403 229 110 968 -669 -192 454 300 -446 166 115],6
-[29 637 -13 -669 133 786 -405 130 -235 -769 -339 -861 493 427 7 -703 603 687 -310 -851 403 -415 -19 -97 318 467 847 970 867 99 -99 871 -35 549 -525 823 -69 -683 473 345 353 325],37
-[-430 183 510 208 483 -972 804 -790 856 -221 719 300],4
-[396 -798 798 842 810 -758 326 -982 210 -962 947 744 524 871 -145 -961 776 644 -806 -181 118 20 734 -667 418 -558 -374 -662 -268 756 -228 692 202 552 32 -304 -808 716 -622 902 -398 -953 470 -709 -226 -772 176 513 -956 -774],9
-[263 -537 -273 687 -687 -707 397 -837 549 -965 712 -631 -641 -183 443 -549 -843 321 -521 -911 583 -105 -173 395 -741 -331 -507],26
-[-118 -762 -751 500 -708 -279 525 -793 -690 772 189 -226 406 -285 175 242 750 40 546 -905 996 400 -38 -136 -895 659 740 162 -595 -444],11
-[779 293 -375 -887 -30 307 597 392 -601 -543 -789 397 245 -37 -21 113 -667 845 929 86 -279],18
-[573 -745 805 -785 853 595 98 477 793 -313 -953 -313 -199 413 -917 -235],15
-[-200 -332 -816 267 -412 756 774 -844 246 -574 736 512 -145 669 604],3
-[-458 174 -770 374 -886 -4 -716 902 520 80 -178 -126 648 -154 128 -470 -492 754 -459 -400 942 779 -14],2
-[921 -297 709 46 514 -743 -438 635 -584 887 393 -959 381 669 -162 -92 -74 -468 -237 -419 745 699 -651 748 -651 625 -651 -996 -785 310 -319 524],20
-[434 200 -798 -44 -822 120 594 -102 132 887 8 -400 -184 -735 -578],2
-[868 310 -758 132 -472 -698 -388 -666 934 826 734 36 -860 -576 192 954 576 -870 -10 -610 -514 516 -296 266 662 928 292 -734 -506 -162 -368 280 760 476 -388 854 -222 -932 596 -158 -106],0
-[-260 -449 567 -826 -343 745 361 283 -453 669 -717 227 629 947 -732 -905 -393 -961 -849 835 -595 929 975 741 13 257 -461 709 275 537 -774 407 -33 -619 -699 -715 -867 -613 -929 -683 199 5],38
-[627 -827 -409 535 697 -259 -378 985 33 -649 -390 637 -1 899],12
-[810 294 -394 -894 -68 998 622 128 864 -363 666 756 -878 914 -406 -412 550 846 644 -260 420 338 976],1
-[-858 -780 -298 -683 -156 -78 -914 658 -504 -672 -768 253 310 -338 -462 38 728 840 -768 -317 -606 159 -664 -116 -441 686],5
-[651 -699 573 365 177 -171 248 381 825 629 -656 -893 -587 -283 -755 -833 835 219 -575 -226 -346 607 959 -963 505 67],22
-[287 570 -657 -555 689 -147 -23],6
-[-570 89 -775 762 -329 673 -206 225 -705 -596 -467 -592 675 685],9
-[327 -133 446 -793 -169 345 401 991 133 47 443 -975 298 257 605 -432 -380 -647 831 730 396 139 85 -80 471 -599 -649 102 670 87 -750 -500 -99 353 -413 -583 -903 844 995 -386 636 -686 -38 -500 -311 576 -411 230 56],29
-[301 -850 932 -255 687 809 -119 -985 -814 231 343 -541 -166 459 528 -335 -170 159 -535 470 -763 22 501 990 146 -163 -237 -449 -755 164 -399 968 439 -12 589 529 -457 -647 -3 -141 745 -395 45 -894 -433 -443 590 -553 -108],33
-[778 -740 -714 516 -976 -514 402 746 -94 428 -748 -108 312],0
-[786 -182 543 -413 -724 -517 -117 483 21 -176 455 371 -105 517 -86 768 -266 -478 970 19 221 153 897 -455 -784 89 883 -387 -839 -797],20
-[231],1
-[-743 -901 -433 383 533 866 353 -739 212 -967 -633 974 23 -901 -679 21 -129 535 -161 -141 369 -959 -940 -57 877 -553 -853 751 -518 533 853 511],27
-[523 -179 -161 929 585 723 -821 -70 541 629 143 754 541 -875 -243 -993 -233 71 475 46 -793 691 347 -391 393 845 899 392 145 -359 499 829 615 229 -163 887 361 819 755],35
-[-693 182],1
-[604 495 -537 941 553 429],5
-[834 -397 925 971 -196 456 -620 -302 44 -788 466 960 -497 -808 450 -336 394 -922 -378 -41 -912 -12],5
-[-690 -980 -612 571 -45 656 -236 -822 -294 -627 -469 -772 -230 370 203 -313 379 -422 909 176 862 152 322 -141 -61 652 -449 546 873 558 -975 -588 -903 485 -918 748 498 -707 111 -770 211 414 889 -27],20
-[-650 -774 -77 265 936 164 -737 394 -932 -734 442 -674],3
-[-703 903 -298 887 -352 287 -456 775 -309 -898 939],7
-[178 828 82 342 -760 55 640 -739 256 168 756 36 -991 -515 -977 -750 -696 -992 -638 117 909 570 776 865 700 -86 -781 -36 -367 147 439 197 -630 601 -263 666 -74 720 -29 852 -929 212 970 668],17
-[920 58 496 864 138 956 -64],0
-[666 -771 -801 656 -248 372 -164 -988 673 238 -166 -900 -385 262 180 695 -14 -930 983 994 24 -192 -225 673 -167 -320],9
-[-371 -206 -314 916 558 340 130 -727 -82 -668 141 -11 -37 -892 -410 -676 -841 -147 -839 995 874 501 -91 156 160 955 -135 -58 -398 -889],14
-[-861 -843 -554 -359 845 217 -628 986 -39 -789 -977 521 501 497 937 -191 673 -677 523 -831 -475 -403],19
-[80 -100 783 651 -4 -38 -138 -722 804 -503 -152 126 -527 438 1000 790 -296 -808 401 219 -480 380 325 462 843 410 -658 618 -444],8
-[-651 -474 -92 -148 412 -680 484 -699 -842],2
-[563 -9 969 -956 -848 -623 -529 23 115 3 212 -796 347 -303 -63 -427 -497 362 747 -424 733 669 107 1 -709 273 171 796 491 75 -385 585 -457 675 -717 669 289 27 -236 -373],32
-[-530 315 -157 -678 642 603 -169 485 -400 -948 -541 913 675 -905 -669 -107 423 -363 984 -612 -958 -901 264 471 -658 487 -917 87 596 459 -263 -214],20
-[848],0
-[-611 -553 -134 -461 -468 768 996 -239 -495 572 -993 -757 497 148 665 354 -485 355 -746 336],11
-[-204 -217 -331 -318 -140 -416 778 174 364 -640 175 -290 80 -399 -524 333 662 799 254 -866 894 -606 -96 -406 348 376 -174 680 -96 88 -734],6
-[939],1
-[-240 -458 -138 -854 -186 -760 -398 347 -718 -360 13 46],2
-[189 951 -568 -182 397 -435 137 849 -471 -354 -633 -740 59 -22 406 -809 295 -209 -107 -44 -247 -734 -782 676 -748 -103 -811 678 -304 -235 -210 -44 688],17
-[-824 215 124 -464 923 431 -402 935],4
-[-324 390 -955 -225 18 -123 -828 -810 -590 -316 95 -138 -760 -450 688 251 584 562 -17 71 841 898 -773 -343 136 -678 52 594 -350 -329 -113 -167 -858 558 838 -138 -232 -21],14
-[-38 531 -340 -316 400 64 -316 326 206 -800 -258 -492 -984 514 358 207 288 962 -719 882 61 -299 -14 -564 -268],5
-[-872 712 -282 -551 -216 675 778 -177 18 -535 558 -244 -365 -677 96 -16 -619 943 -225 550 127 23 -564 699 -387 545 -426 54 -506 -271 -387 862 -627],17
-[898 848 475 65 -897 -903 -383 941 127 -469 -521 -324 870 62 -268 -398 742 -949 847 -904 990 -256 385 20 -889 167 676 570 61 412 843 -569 -579 -71 24 -937 -603 514 -647 167 939 911 493 -208 -625 -51 -183],29
-[-820 -531 -295 830 -534 995 -42 867 -597 -235 246 760 565 948],7
-[84 345 -747 -297 57 923 300 -134 -497 799 -57 -162 -598 -275 303 744 404 -859 239 -585 125 291 791 187 -145 -601 -498 294 -617 630 483 253 75 497 -938 535 49 679 -773 749 432 -264 -856 -514],29
-[38 -429 -316 -409 -104 702 -49 863 -843 -791 511 763 246 592 676 -286 -659 -172 794 809 923 313 724 969 268 222 875 -706 -116 -865 -941 285 -845],18
-[988 -308 890 -873 -204 937 -134 -458 -536 496 -52 -940 -572 834 108 -654 536 -828 476 194 154 -716 292 -630 134 200 940 -910 -432 -888 162 76 278 -964 294 416 836 -896 492 -890 -146 695 390 -708 -794],3
-[-408 -805],1
-[801 381 -348 320 648 257 988 -168 848 -845 801 -615 500 -899 -368 -258 -330 813 -365 525 143 -27 369 -763 919 -886 799 722 -701 -797 14 561 794 -173 285],21
-[268 468 156 722 -824 914 278 808 -26 420 910 -640 -557 472 -444 460 746 778 140 -13 -906 6 304 -953 956 -68 783 644 722 -787 -476 819 462 -158 -967 -585 -253 821 -401 -278 874 793 6 539 682 988 984 674 -385],14
-[-177 663 949 -245 477 787 929 25 -761 -797 -647 737 -277 564],13
-[119 -475],2
-[215 -672 -663 35 445 -203 449 41 -171 -818 875 783 -718 -725 -954 745 209 694],13
-[78 526 948 786 792 -234 -664 -554 334 -856 886 414 95 482 -289 -694],2
-[701 -409 625 583 435 493 -861 -571 39 349 -165 -94 -98 821 311 723 867 977 853 -747 659 -833 -835 -286 717 -15 -617 -418 -288 801 209 -237 -365 629 293 845 -61 97],33
-[944 398 814 -394 942 -760 -638 -282 292 -798 -700 -676 -152 -642 978 500 660 -862 -772 -598 -822 -140 -824 374 -786 -512 216 -214 -394 764 452 -196 644 674 546 252],0
-[-771 -66 -947 -711 -754 -373 221],5
-[-478 219 -104 -920 88 -376 -626 291 221 554 -940],3
-[-438 236 -454 -264 188 877 -584 -918 142 474 542 74 118 268 -243 -206 134 -614 290 -784 290 -972 90 221 341 -296 514 -710 440 -702 800 -144 688 -16 -870 24 680 598 668 222 -350 230 842 -568 324],4
-[436 788 570 872 900 410 943 -930 394 378 194 176 -746 294 638 -840 54 958 -694 -626 -442 -536 192 482 -330 -866 322 -782 852 -176 432 -338 -80 758 234 778 -168 908 824 -286 636 -10 978],1
-[285 -705 -917 79 -681 611 857 879 549 717 979 889 -931 -373 -121 -983 779 863 -565 291 -247 271 -708 567 527 895 609 299 -735 107 -57 463 -553 311 283 -541 -873 331 -399 863],39
-[-739 -170 706 -866 894 865 -475 84 222 740 -478 -182 -973 347 -106 563 424 701 -767 834 93 605 -624 813 345 234 561 404 -808 -43 437 -52 488 570 235 -373 869 880 -773 83 731 344 660 -816 -758 -333 745 -85 -188],24
-[33 -929 -145 -453 881 405 -609 905],8
-[-794 698 -906 455 249 -544 165 -224 224 767 683 -925 19 129 659 -729 60 236 139],11
-[-205 -838],1
-[709 -903 87 -521 37 507 333 552 -976 776 773 81 -890 917 -7 -51 889 -577 -995 942 -937 834 877 477 -755 305 -521 -773 -979],23
-[-971 -629 -683 145 383 283 31 988 509 -229 114 715 513 315 961 577 -889 -681 -321 -431 -203 701 -320 -862 -848 585 753 489 511 -486 175 -352 -824 901 105 -611 -659 -142 407 201 297 733],33
-[-538 122 351 -104 -984 -824 -786 436 83 -223 724 598 -60 636 -106 11 52 688 784 992 -304 -348 666 -135 -682 -181 787 551 -194 -347 -8 655 -11 -174 -306 751 -766 -88 388],12
-[334 487 923 403 867 -937 -208 -678 -453 21],7
-[348 -70 636 -368 190 -714 -450 -978 -294 738 858 -1000 -36 -82 828 -32 -470 -974 72 768 -384 426 -698 696 554 -276 -376 -888 762 -696 -198 -854 762],0
-[-355 443 264 493 371 -525 -7 -721 37 -271 -49 779 840 -471 -515 -265],14
-[-399 343 -303 405 508 625 452 550 647 -320 -631 765 -883 -351 959 369 -511 -405 -709 -483 734 -261 579 -361 -39 -231 -251 551 -737 -137 67 -589 853 91 -288 283 -219 -899 -945 -7 -223 651 91 339 -329 250 -57 -399 -113],42
-[-41 -105 756 -299 380 -3 772 -408 795 626 619 -481 -205 -647],9
-[-793 -232 -884 454 -620 830 -513 109 -568 800 -454 -944 630 -250 -94 538 649 -602 -894 -764 386 206 667 930 948 -172 -944 158 -466],5
-[58 426 931 618 -29 -830 227 418 360 -692 -964 -261],4
-[-584 898 -633 -530 33 756 21 204 -152 742 512 -992 205 -560 -329 -700 -243 854 670 -522 -106 -731 -500 629 -617 -611 -476 -2 -263 -948 631 475 142 -951 47 507 -716 42 -202 -348],16
-[-614 -656 137 -978 577 365 -893 496 -225 189 18 -943 -132 -44 -921 487 739 -439 137 -450 -408 437],13
-[209 481 -609 251 -369 876 711 -857 -417 12 -289 -555 155 -699 -371 459 -239 690 -909 -521 517 -845 301 535 -263 -565 792 729 -183 -569 708 -670 29 -397 -357 -81 841 49 886 -77 519 656 755 493 434 -657],37
-[-977 -706 680 534 956 -810 -67 280 -474 -230 0 306 -228 136 -320 224 -404],2
-[-778 -928 -704 -614 296 -788 -740 -964 594 -318 -918 -324 704 -719 960 296 -65 946 159 -72 -114 -740 37 618 796 -458 -735 916 -918 14 70],5
-[-868 -564 -596 -666 -488 952 420 -326 -336 -948],0
-[223 -680 648 -538 511 381 -989 -497 899 351 169 486 374 657 449 347 -66 -754 475 -456 -402 551 181 -473 -781 94 -669 -267 453 -688 -870 -202 325 -724 -56],20
-[-248 489 673 903 -602 14 -702 -145 534 19 -260 -584 -924 428 265 -441 155 249 -327 -21 -149 849 169 952 564 -68 131 -64 -728 943],16
-[-251 981 -295 -71 -209 -561 687 -686 109 317 -15 6 354 459 -906 807 -79 593 -350 -671 -352 -807 -18 -275 -473 479 61 -871 -559 -269 -239 -985 787 -861 997 -61 767 -865 -225 373 -841 -221],35
-[-153 500 28 -117 -37 761 78 -953 -951 177 -361 72 -937 583 5 -529 796 -245 505 207 -301 -785 317 551],19
-[-408 604 78 -152 624 -472 -834 922],0
-[549 303 319 -898 -637 -694 -681 -338 -35 594 -780 133 -959 935 286 -990 373 -792 795 74 422 36 -86 -393 918 -436 -158 868 -616 -150 246 -258 344],12
-[873 -576 514 -860 163 -185 -95 -444 -489 -629 -149 36 -368 690 456 -731 -22 461 -150 -368 -754 -545 849 171 823 882 630 -686 412 -744 -158 517 338 -930 199 -337 -318],16
-[-380 642 -947 689 130 294 -18 -101 834 186],3
-[943 -521 -635 411 207 -451 166 -759 -165 -263 30 -951 -809 -275 921 97 811 -564 -883 146],16
-[153 402 350 -355 566 650 -46 -289 402 947 115 -659 40 -695 198 -968 -987 -956 -707 227 -763 934 -347 -671 158 849 -513 977 987 -773 967 -897 -597 641 -493 887 738 505 45 549 -533 393 773 -429 257 -423 -205 -697],35
-[781 -151 808 -13 -287 -335 -135 274 -359 501 374 -581 -568 601 499 -931 -261 880 -327 624 -136 -289],15
-[105 247],2
-[-934 -995 445],2
-[-14 806 572 -980 -691],1
-[-653 21 887 599 805 -599 -85 -559 -647 929 53 -201 -431 171 155 -721 -607 130 55 -147 -793],20
-[571 223 685 -383 879 -271 -499 -560 527 149 -41 -585 259 467 220 -589 109 -263 84 -409 331 159 841 489 451 -985 391 -349 722 941 97 500 -835 -325 819 291 625 695 -296 -602 227 825 565 -509 -587 503 623 84 -135],41
-[622 771 78 -657 -705 -379],4
-[-964 -508 55 622 580 491 269 164 -165 5 -342 654 -961 424 -160 -710 625 -969 495 -960 -563 -496 -284 930 329 -299 538 49 -12 -969 820 22 -644 752 -520 -725 327],16
-[749 -214 -599 520 -66 -239 -269 751 -861 -347 -463 385],9
-[907 -350 861 -707 512 494 751 733 -861 869 409 -907 949 -192 120 -582 37 -543 -729 -212 868 379 -556 250 -34 -821 -938 -538 83 -411 -561 758 -38 414 252 547 -639 -568 929 73 793 891 -431 -985 -270],26
-[2 692 -647 382 -928 6 -788 336 22 412 -786 444 -532 370 762 290 834 -622 -130 647 67 -578 664 226 -978 -979 123 214 261 -342],6
-[-465 -567 -403 -593 -845 -313 -575 898],7
-[536 761 491 -781 -918 519 607 -717 -893 873 -29 -426 -72 819 177 28 -865 -595 824 748 251 -869 606 178 -147 -355 880 909 480 -704 439 825 6 45 645 -508 -473 -853],24
-[733 -960 502 752 -46 591 -396 985 791 -728 581 -154 934 -140 555 -320 833 674 574 179 -150 614 -621 709 461 -434 -752 -658 336 256 135 -359 -581 577 -470 -209 -3 902 -465 834 -746 -95 -791 -992 -556 -79 -372 354 -402],21
-[-100 -48 206 434 -276 964 -364 -968 -748 -308 812 74 -52 -400 640 -283 -934 -746 870 -574 -550 -654 -280 -555 979 -436 549 979 -980 -318 118 -842 460 614 -298 322 -143 -224 -992 668 663 -532],7
-[418 283 575 411 78 -884 -671 29 -838 821 477 -730 202 -206 -392 -206 247 907 569 733 -235 718 295 680 298 -290 532 943 85 547 -666 345 -542 785 -54 118 203 33 -359 864 491 -885 -366 -564 -590 -638 278 208],23
-[-154 -288 -822 942 -822 -144 902 640 -436 840 -374 138 -54 600 -894 -256 342 52 110 272 960 510 718 -918 502 832],0
-[-135 -955 916],2
-[-229 39 411 775 -303 511 -937 537 -259 380 -948 -477 761 -407 475 807 965 17 -343 501],18
-[987 537 -889 665 355 -607 -32 -15 -553 587 615 -453 445 -809 945 763 353 -115 479 923 -769 -197 457 -719],23
-[910 663 -781 171 -979 951 -631 -253 -447 701 681 661 -997 405 -830],13
-[702 -289 621 537 -412 -373 373 511 -225 960 -429 -125 349 -663 -810 501 -707 -109 255 -379 341],17
-[890 -864 806 -470 765 -680 989 161 -536 75 874 -798 731 -24 -928 -184 -585 -575 -568 205 -867 607 -144 456 -407 -21 335 -734 860 -230 40 -56 -607 790 -234 315 -294 -179 508],16
-[158 -209 -386 -120 557 -149 133 436 -667 -723 575 67 -545 -673 402 289 -537 -167 -840 -192 -471 635],15
-[710 -983 -838 392 -283 745 -379 792 -500 387 -201 29 194 -869 117 173 158 -490 -400 -582 -115 -45 6 -366 -348 338 601 -199 121 263 272 312 -439 126 -178 -61 225 -833 145 -638 -681 711 -946],23
-[492 36 -237 445 -659 527 955 471 -185 578 -39 -476 134 -221 -27 -982 -781 944 -987 -365 -978 615],14
-[89 85 459 -387 -81 -347 -263 59 -43 -721 -160 -51 -362 -987 299 -3 -381 37 -593 664 565 -145 351 -26 650 111 517 -69 465 -217 93 40 319 267 211 -556 -634 -589 -123 -779 589 748 745 -931 513],36
-[-157 -327 -279 847 714 -338 -896 883 -337 862 -238 -908 -892 545 782 598 831 -69 -949 617 963 -333 807 -119 -431 437 -481 715 -558 857 -188 137 403 361 -735 -239],25
-[-717 -478 -37 445 -833 958 -594 294 -374 -448 159 568 595 309 44 548 -965 -652 -193 356 -114 -187 326 180 164 -448 565 -621 764 300 95 -521 -20 935 936 778 -864 588 962 -595 211 113],18
-[-461 -863 -780 771 225 675 -701 -371 -613 -345 -263 -443 47 -647 -373 -523 -281],16
-[69 -703 109 639 -921 -27 493 69 -789 -879 735 -229 -437 332 -781 17 705 -366 719],17
-[447 790 377 -888 -324 590 -52 -197 -962],3
-[-469 912 -381 163 -280 -720 -178 4 -882 208 -995 806 -799 -744 -327 -323 -1 78 -539 -584 54 -593 -344 -795 -25 514 -498 -634 274 -290 306 -172 -107 817 -941 729 452 471 -610 915],18
-[190 -380 -36 -684 164 -506 488 162 -956 634 729 956 444 302 -862 -448 548 -132 -482 -254 90 -306 -890 -54 573 20 -836 416 -628 -934 -665 352 -710 184 268 -268 -74 540 412 711 944 -257 -808 558 -523 838 -165 197 -799 658],9
-[700 838 -438 -117 956 -597 50 -202 -125 -901 644 -622 720 -226 -894 -974 28 537 -745 486 74 66 656 839 -602],7
-[-649 -195 -774 -183 51 503 187 453 876 -715 -661 407 -897 -910 954 -115 -133 -923 -999 -965 -569 -887 97 330 865 224 468 911 -970 -868 34 -777 784 918 -939 -841],24
-[-781 99 -743 887 -61 -401 149 791 -747 -65 633 -31 -657 219 -607 641 -161 -985 -19 -649 795 81 -907 -437 253 -807 405 -20 -611 -753 853 -113 -170 -465 993 603 705 -509 -337 806 -179 399 41 917 -715 -367],43
-[-501 79 516 -460 694 -882 -28 -130 -920 184 158 -478 -326 -49 542 478 -847 464 846 -651 -40 304 779 447 -339 -164 690 816 322 278 -922 -736 813 578 614 -634 570 -191 476 742 -10 693 723 -752 -975],13
-[92 711 121 -523 147 -83 -777 327 -493 -996 -592 775 -374 920 115 -169 -803 575 -554 225 -996 -494 57 -642 251 -712 -915 -666 485 477 592 -357 0 -211 72 846 -126 -384 -319 129 156 135 891 328 236 756],25
-[-399 -399 -723 -661 677 -216 -163 -709 -31 -339 -654 -17 965 -189 -153 -243 789 25 705 181 -694 339 -929 -383 359 -929 -767 757 -824],25
-[166 -496 244 -674 -952 984 362 770 -84 -342 -432 4 516 215 -618 -788 748 316 -956 -944 -519 -56 -238 -212 146 -978 -148 274 800 -991 226 -560 838 -744 -676 -340 -506 386 778 -658],3
-[-785 -170 923 5 479 284 -919 575 397 105 521 49 63 -711 225 979 280 129 933],16
-[-540 590 118],0
-[93 -664 423 -326 -696 -654 -352 508 -444 730 438 -647 764 -302 -460 -513 350 37 -838 48 -376],5
-[-424 -435 509 -157 992 -718 753 -259 152 -987 -670 169 778 -489 378 -17 76 -32 74 476 851 620 53],11
-[-345 101 401 -271 -661 777 -133 199 -513 347 713 -461 -697 831 819 -895 139 539 647 -703 -631 469 543 -437 -877 793 -463 735 -837 -647 885 -79 -655 -263 -979 -267 -151 937 -561 -909 483 565 -427 -999 -315 -245 -887 -439 683 -995],50
-[895 769 776 659 -663 -321 -673 -867 -332 -900],7
-[53 913 -119 261 -794 -39],5
-[-343 -505 -271 827 -780 935 575 -175 -299 -537 -97 42 -881 224 327 -131 -991 -747 934 -343 103 -371 423 -965 425 -759 44 -184 -257 212 -398 919 941 -773 -852 717 1 105 -650 197 -799 983 953 -851 -324],34
-[-894 773 -3 -783 314 -720 -697 -553 -744 38 -181 589 -107 -909 546 -226 -527 728 -65 307 -263 140 -688 -191 766 -491 -199 995 689 -730],18
-[-85 -636 -112 979 347 -502 555 -281 19 -583 858 -790 213 -887 -475 783 309 -121 196 -664 -505 -394 -838 -511 -951 323 -369 290 975 863 -187 778 -154 -486 763 -517 -910 46 -299 -239 13],26
-[-199 86 -789 -579 -164 -632 514 -516 385 -275 -800 -369 -58 -731],7
-[-212 -235 -62 -217 -458 -564 670 974 -1000 -103 188 782 288 38 524 -905 936 -384],4
-[537 -419 -777 -834 750 -727 763 617 -736 -801 -659 -77 -283 693 -301 393 703 651],15
-[-587 873 -361 -699 703 477 341 -51 719 79 -913 537 -873 851 189 329 903 -869 871 -339 689 939 769 113 729 11 -407 -625 801 963 711 -229 881 -369 -847 -683 -531 -455 -325 333 -221],41
-[535 -178 -738 645 -762 -689 769 447 374 671 522 992 -119 -941 90 574 670 929 -124 -345 532 -409 -216 218 172 -751 -134 -924 320 -974 -258 242 384 -396 -766 837 -448 -512],13
-[728 -262 -524 330 514 372 519 -815 -280 990 -928 -644 776 -773 -242 716 530 644 892 533 -144 -972 -128 -378],4
-[-724 428 594 -583 916 -290 -568],1
-[-116 -380 596 -498 366 -750 280 -208 444 102 900 532 -751 588 -697 778 -924 813 703 -624 -162 -982 -152 -142 922 554 -751 34 -876 311 -744 -202 -58 666 833 -235 -28 -216 838 -788 160 652 -123 748 162 -959 -366 -652 586],10
-[-251 615 -191 -137 40 -547 -663 961 -469 -729 -201 837 673 -759 953 143 -792 843 451 -32 -17 -539 517 -410 -127],21
-[-485 -688 -751 -96 240 637 -405 203 986 2 -965 110 -648 505 357 269 -377 -689 -982 428 -826 973 653 -845 -585 -55 890 573 566 122 199 480 -324 653 119 546 -736 -244],20
-[911 169 401 966 -159 348 564 226 443 879 -63 -757 -907 257 -904 -985 -220 -461 -105 630 691 -595 -629 -196 -748 -69 939 87 -5 862 111 733 6 -945 -449 117 481 -777 179 -505 -857 -840 543 -835 -551 449 688 -1],35
-[-145 -490 634 26 545 -858 -713 -539 -157 -502 594 -882 533 656 -423 -843 815 651 863 867 241 787 -648 889 -771 947 271 325 96 -182 957 -843 755 -795 259 -227 -870 478],25
-[698 -474 -824 649 614 439 912 368 889 -846 -929 32 927 976 855 -407 983 563 83 360 291 739 889 630 -929 165 952 511 -159 551 -969 962 742 -338 969 886 329 -316 -166 591 -652 302 -620 631 -49 -448 -714 970],24
-[358 363 -676 -823 -747 793 -298 760 -227 227],6
-[-454 -665 -328 -772 909 -853 -453 802 686 380 -918 800 -631 -390 -456 -628 -344 100 -684 248 -88 -735 -609 410 -351 376 -608 502 396 -572 998 -713 226 38 602 438 -244 858 791 -301],11
-[567 849 891 216 -529 231 -591 937 172 596 883 715 80],9
-[825 579 -431 -236 -531 -111 -950],5
-[-310 -238 82 -490 394 -290 722 -384 589 -603 -540 -988 362 -602 246 944 -64 622 -528 -366 288 504 522 14 384 714 -876 662],2
-[668 80 734 -234 -942 450 986 -532 -384 -784 628 808 -402 26 80 -560 742 906 742 -794 -82 396 524 582 196 -318 -470 -186 244 -918 816 74 -580 -278 -306 -620 208 300 -642 -474 934 -216],0
-[836 -559 -676 543 -268 -533 844 483 830 -930 -957 -2 -821 900 763 985 -713 363 865 -60 399 -490],12
-[565 -239 987 527 939 865 302 -685 953 -343 791 -51 -441 -231 759 -969 -341 -863 321 -65 679 -991 -545 187 361 815 593 763 -25 379 287 -145 -691 -817 -607 381 759 -389 291 -709 285 941 -511],42
-[-949 421 635 -813 189 667 599 -531 -721 441 -769 -839 -217 -913 -185 -329 331],17
-[376 -596 396 322 -738 774 172 -844 -630 -274 -834 -461 -972 238 482 -950 -706 -246 -504 498 46 519 634 649 584 784 472 988],3
-[-894 -164 277 77 -689 -829 -589 807 797 305 487 -75 -88 -967 -411 -299 -524 782 934 764 406 -184 -455 -589 -47],16
-[78 9 -908 443 970 837 415 -762 692 247 174 959 -208 322 894 113 164 -959 241 -280 162 783 809 549 806 9 368 142 436 -50 -158 946 -466 -107 831 -540 403 -721 315 -533 951 541 476 967 153],23
-[181 -585 -303 -620 -673 -211 630 -616 671 173 553 -672 850 -23 -117 -132 861 -905 -427 208 -196],13
-[448 -60 -42 -418 -25 583 -121 494 287 -864 -981 299 -98 295 -615 -804 845 482 -482 130 642 28 60 519 -777 -111 570 947 -122 -290 198 896 -617 978 925 340 994 -540 800 -410 152 956 -888 254 -808],15
-[393 357 -53 491 -89 -591 774 -961 -483 -339 338 -895 -749 448 -79 759 -991 775 -57 360 -605 -233 947 565 -615 -157 875 -782 1 -385 495 -985 646 -219 -453 105 -183 -865 93 860 -95 161 218 -253 -605 365 -89],39
-[-772 -206 -300 30 929 647 914 379 1 542 815 167 817 838 -121 -515 -376 197 -875 685 -218 199 -953 641 -624 -387 951 -576 -938 409 877 11 -283 -218 -247 138 46],22
-[-498 325 -210 819 894 -292 143 -339 -962 -46 -969],5
-[92 -944 -637 -56 -851 85],3
-[763 983 435 351 398 -853 545 408 253 175 -299 -987 841 -907 -133 -488 348 239 -561],15
-[-20 -862],0
-[-883 -469 288 210 -37 -378 -106 -408 837 -609 401 -913 -186 194 -264 -866 -179 260 -807 882 -84 859 257 -667 547 -799 -437 622 -791 -856],16
-[429 -370 -79 -329 556 -686 -641 -109 -385 599 -831 682 648 835 -755 861 161 -5 298 179 972 699 -371 931 -453 -263 -475 904 981 787],22
-[-624 912 -186 394 618 -158 -974 802 165 -808 -300 682 -624 -768 -716 728 115 -948 -634 -544 626 147 -370 -104 852 -734 -738 -682 -970 326 715 -124 -204 76 974 -694 -683 96 -324 -498 -735 875 -370 -729 760],8
-[288 -412 -830 30 1 86 -276 -316 -998 -331 -359 812 918 -28 -5 654 -618 169 769 356 -862 576 777 25 709 -825 525 -742 962 42 897 712 -274 -122 -436 -254 -645 626 562 299 91],15
-[-531 -745 -164 -882 -759 -981 -11 -857 -886 -59 532],7
-[-401 831 89 665 -443 -252 -623 -284 271 537 681 71 961 162 -136 785 318 561 958 638 647 877 226 360 917 -109 -87 27 468 -611 -542 -95 414 -565 -733 -952 271 -661 85 -637 407 902 -515 36 133 859 964 473 921 960],33
-[683 445 983 -73 -481 197 -481 -805 383 -23 893 -541 585 -139 147 521 -919 433 -641 307 349 557 -423 505 211 721],26
-[-351 836 85 -254 -461 185 -583 -115 -337 -527 849 476 -31 809 799 -863 67 -446 532 -703 387 -128 615 -462 680 -531 428 895 796 -271 76 -150 -847 319],22
-[760 978 -648 373 -231 208 -58 563 -433 -546 236 12 -70 890 -374 288 160 505 -176 645 -284 -750 972 -524 631 -724 -810 -688 -36 -942 -374 -187 672 74 -886 -587 976 860 -754 576 240 898 84 656 -440 352 -880 -430 316],9
-[-771 -650 353 -552 960 128 178 -418 -1000 -602 136 578 812 414 287 -31 533 403 -578 151 -5 840 747 -16 484 -859 32],10
-[-188 -477 94 -754 -222 966 -792 -274 -18 -822 178 -441 -594 209 -832 -422 -166 86 -30 -292 -938 -617 174 182 875 -344 436 140 712 873 296 -656 -790 116 498 30 -924 524 -826 -949 -167 -502 -226 -463 -774 874 745],10
-[744 -369],1
-[581 -499 800],2
-[10 -114 -542 -968 -33 -490 -902 776 23 214 -996 -720 618 -214 833 542 656 -889 -852 658 788 -587 335 -643],7
-[421 -356 -558 903 -966 -64 564 -64 176 -355 722 -427 -110 -154 -127 447 356 -502 436 940 416 -892 -208 -16 -690 484 -762 968 956 881 895 -70 -688 770 -905],9
-[-631 -409 -195 -437 463 -285 -297 489 -315 -531 -63 371 -763 941 -282 -15 -877 411 -499 -949 483 953 48 585 -698 -419 -235 -657 433 -65 -255 359 -693 -381 -619 621 541 599 -373 451 -230 177 -459 -211 -805 513 -795],43
-[-491 -979 219 -713 600 95 771 40 -19 839 683 560 -745 -283 889 -847 853 -565 -334 -399 -785 -225 -118 -21 879 -161 -861 853 505 681],25
-[663 -522 346 281 -336 -386 903 518 -855 827 862 16 206 -156 -766 962 -380 -66 -834 -216 -492 638 -142 138 -54 -765 534 918 337 -871 386 348 -674 206 884 95 -132 -975 -764 -978 839 -714],11
-[-12 588 -264 907 -322 -176 -950 874 -794 -888 772 -930 -268 -270 -684 438 198 -24 304 12 -850 678 -549 12 988 79 -840 -96 -416 382 -340 -540 -318 436 -974 688 198 788],3
-[-935 793 101 953 -219 933 -773 941 -587 -791 43 -131 179 -895 -629 -351 186 -971 185 -609 -365 -121 429 -831],23
-[-826 -138 510 -792 -534 -238 594 -324 708 -728 566 242 -548 -512 256 902 -433 642 -812 602 838 264 -850 -620 -472 942 -548 174],1
-[-876 697 785 755 -909 -112 -757 -93 249 294 -687 -421 426 474 -551 -930],10
-[769 862 135 -332 -52 421 216 936 124 -510 304 -363 -208 737 187 587 -774 866 -955 -302 107 50 379 239 571 213 -626 102 819 535 -952 876 61 531 -982 36 -841 744 -497 607 591 -281],22
-[-48 576 124 478 686 72 459 608 -868 370 -670 738 -890 -28 756 -208 735 -362 -626],2
-[682 -528 69 381 996 428 -890 482 -963 -44 505 -808 -294 638 -186 -502 430 -638 355 -126 708 -205 -437 118 43 -546 -784 -214 518 344 -722 302 83 350 -806 -978 648 -164 -30 970 -706],9
-[-242 604 577 463 -157 -458 129 402 -666 508 161 518 474 158 721 193 10 -192 -719 582 619 -217 -253 505 -571 746 -571 -321 203 297 -279 352 995 754 -142 54 -874 -969 -685 -397],22
-[-340 966 -178 66 320 958 -174 -152 -248 936 758 571 -860 -93 -810],2
-[748 288 982 138 352 -10 873 -628 -334 656 511 -223 719 -520 -191 -387 -236 -407 -46 -488 -380 -6 -381 17],9
-[-94 699 137 66 217 386 -651 -996 -45 285 -168 898 -194 -614 -244 -615 -598 -438 -991 -768 162 22 730 -482],8
-[391 585 737 -457 -972 -625 433 -46 -137 -14 -324 973 663 -511 283 -453 -722 73 -661 529 -685 -688 295 105 351],19
-[642 213 319 -374 -65 84 -635 673 964 495 824 131 22 -52 975 475 890 680 -796 -141 592],10
-[785 898 -564 -226 216 457 15 -828 200 -928 -446 -196 564 -251 176 -240 -398 927 -166 660 532 354 618 -784 -2 976 -703 -268 718 578 -490 881 173 -692 -621 -230 111 922 892],10
-[411 -862 -663 -619 -235 -563],5
-[-427 120 606 -808 -292 656 -129 498 530 -66 -974 354 492 -978 66 -266 218 -204 -876 246 -326],2
-[456 -372 -581 481 237 -38 500 -744 -372 390 78 531 -148 -698 204 -460 -722 570 822 256 -125 -298 -362 551 -450 233 -836 -994 592 -244 -641 733 -589 866 896 310 836 -576 -198 414],10
-[-420 939 455 54 10 -735 -283 497 -975 -574 -760 437 -577 -239 83 957 -167 109 -629 -371 -804 -622 -533 -838 555 -905 -524 -113 229 -438 -577 -189],22
-[901 474 40 -504 -320 960],1
-[864 -410 528 -224],0
-[-813],1
-[-727 -374 -160 -122 82 -355 146 224 -322 80 -940 321 -339 -776 44 -365 -312 -470 311 -182 443 -994 -501],8
-[396 0 -383 -559 760 277 605 367 825 113 144 -15 -705 -119 -312 790 443 961 175 502 5 -664 184 700 416 594 834 -151 651 -101 -460 821 -92 225 788 -548 326 349],20
-[-464 -190 -343 -150 668 -17 -415 -810 960 -148 132 -583 905 557 667 788 436 863 605 713 560 -743 752 215],12
-[-885 -471 -991 -641 -737 270 -512 -233 -140 -447 412 -531 -181 -481 485 -848],11
-[-697 437 531 -104 117 -39 587 -554 -172 -300 -739 252 93 674 -742 813 178 228 -228 994 469 -818 432 -689 812 -340 133 -112 681 -288 867 797 -913 -994 -675 -794 479 -690 -272 468 340 -286 -70],18
-[-802 -843 -341 -742 488 -504 -416 -705 -566 -986 -404 573 -834 693 526 -860 601 746 51 74 630 -82 33 -375 -297 251 -944 58 52 583 -136 -417 -476 -329 -781 868 450 158 801 683 -202 669 -415 -332],19
-[-766 442 -26 -668],0
-[681 69 -769 673 -166 -107 193 -225 234 -727 367 232 -468 825 -33 163 683 659 -429 868 917 92 -981 867 -541 951 827 729 -119 -733],24
-[-355 436 792 -888 676 -530 336 -107 130 930 549 246 527 -488 602 330 650 -896 459 874 432 -730 -536 250 -486 58 -479 7 654 -228 516 -926 623 -532 924 -675 -369 822],10
-[429 -699 -759 -757 -901 -821 -579 -773 547 467 447 953 -583 -843 -323 -227 -943 -525 -297 -943 469 49 -231 -559 -981 693 405 -599 -787 -247 -683 -613 81 -311 -125 529 939],37
-[-305 -63 761 -185 -951],5
-[570 -532 422 -21 -238 -678 -312 -774 -469 696 -394 820 352 534 -882 969 -148 -242 -794 -933 686 -278 -242 982 980 897 -473],6
-[571 -43 -875 -185 623 75 979 -649 -461],9
-[320 -262 564 -670 168 116 -626 220 -662 468 996 40 -144 840 -84 438 -870 -438 -398 -28 -144 -654 -240 690 670 -714 987 984 134 -52 806 -646 -610 816 -924 512],1
-[524 -522 -307 760 810 -296 151 928 442 -990 276 -511 399 -20 -190 510 -810 -345 -942 -323 -341 236 -118 472 757 547 975 -454 244 527 -888 809 831 -579 -843 -32 142 157 104 211 -494 -53 -883 549],20
-[661 998 -225 -801 -813 -851 -983 -257 -239 955 -805 135 255 -959 367 -599 134 785 -311 -575 67 -265 -197 -581 -419 399 529 893 -963 -45 691 191 419 -707 157 497 231 507 -985 551 -213 -321 459],41
-[-186 -967 -11 935 -479 -208],4
-[-131 -530 -780 648 787 -590 924 -681 215 -629 -437 768 -854 -356 -773 -806 360 -691 616],8
-[454 168 -116 1000 148 -351 -42 953 554 12 -892 48 464 106 -126 622 480],2
-[-134 -42 -894 -502 -321 830 -714 -42 700 -583 319 333 -776 -301 219 -54 -963 -138 644 950 -988],7
-[445 -85 5 963 -199 -911 -247 -827 -192 -417 389 363],11
-[-774 160 54 675 28 -296 286 -494 926 316 336 850 42 94 826 386 -504 -982 -272 314 -302 -692 -212 456 -140 -510 -574 -698 594 116 576 -992 802 200 -668 -684 758 -722],1
-[839 -283 -587 -317 341 985 967 -437 -733 519 317 75 -303 29 -633 595 -417 -23 839 -997 377 231 -153 -421 745 847 -265 -379 -709 -901 -463 -449],32
-[-145 -636 496 234 -891 -247 971 704 -169 -730 -935 -151 -495 -399 -354 -999 165 891 -713 403],14
-[304 -452 375 -676 -246 -116 -874 -377 -458 -968 683 -886 557],4
-[103 879 927 439 -576 197 -932 655],6
-[-361 -785 183],3
-[-506 -221 -975 302 442 581 891 111 915 -989 -43 -431 610 -312 59 -139 -809 437 -70 9 829 743 633 170],17
-[210 -816 749 167 -405 -141 -967 -349 108 -968 858 193 639 392 423 478 -516 936 500 -595 483 588 472 700 885 -729 129 727 8 -125 -627 270 30 -613 -679 -1000 955 -301 -19 677 882 811 -702],24
-[348 -921 -407 -544 -441 623 -971 -7 910 -483 630 -13 -793 497 983 -301 -269 -834],13
-[-962 893 323 -79 982 846 -613 -82],4
-[361 -517 765 113 -359 -487 568 349 -499 -513 825 -901 205 -565 -841 -732 815 -227 -687 -163 761 -371 180 505 -48 51 -723],23
-[-195 723 -989 731 -333 295 17 899 87 579 -491 225 -238 646 299 -115 385 71 89],17
-[345 815 859 -869 221 -83 574 747 315 726 610 877 -49 -297 -674 109 697 905 28 867 65 -883 -815 631 -185 -559 -331 736 -627 279 -979 99 955 -11 665 709 409 181 -59 621 -65 590 -737 119 -555 795 -217 -765 469],42
-[29 -147 -468 -995 885 -972 -328 529 -126 295 123 -395 -778 422 -835 -63 -651 -342 466 376 947 -507 611 231 -283 866 378 718 -919 586 -709 -697 -436 -884 -299 829 -917 366 603 619 -814],24
-[836 -852 925 -266 -282 -756 370 520 420 -532 898 606 908 -687 -404 -484 -680 -790 -198 866 662 138 532 375 132 34 516 -728 556 334 -762 954 -258 -613 -992 -625 -58 -845 -215 648 790 649 -739 126 -861 96 242],10
-[-604 -45 920],1
-[-929 121 962 695 -491 445 -393 -47 985 -639 587 249 -115 -543 251 -923 -491 171 959 293 -878 769 644 -837 930],21
-[945],1
Index: anches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Data/NumberIO.csv
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Data/NumberIO.csv	(revision 14874)
+++ 	(revision )
@@ -1,1025 +1,0 @@
--3.438429559021344,33,29.561570440978656
--95.2231134418704,53,-42.223113441870396
-88.13649699446617,-62,26.13649699446617
--53.22324223942201,96,42.77675776057799
--16.300675376934848,9,-7.300675376934848
-35.847624472706855,-68,-32.152375527293145
--39.166552678350456,14,-25.166552678350456
-9.17422320949575,-47,-37.82577679050425
-84.04656728984412,25,109.04656728984412
--68.00895091373306,-83,-151.00895091373306
-48.053941109851706,68,116.0539411098517
-63.18245470939857,47,110.18245470939857
-31.819491116167313,18,49.81949111616731
--6.565776842101442,-34,-40.56577684210144
--4.215466871092133,94,89.78453312890787
-89.25926490229978,3,92.25926490229978
--0.12821921457594954,-8,-8.12821921457595
-9.335565170371666,44,53.335565170371666
-46.67138497641733,24,70.67138497641733
--46.35255629512913,-64,-110.35255629512913
-28.50130299957678,43,71.50130299957678
--20.974068122086848,-43,-63.97406812208685
--34.589843495595346,-6,-40.589843495595346
--4.879124934443581,89,84.12087506555642
--73.56729974733061,-51,-124.56729974733061
--40.905712771308615,45,4.094287228691385
-5.102003850372313,28,33.10200385037231
-98.8175962707281,-42,56.8175962707281
--75.84490234964383,31,-44.84490234964383
--62.629738980833416,-9,-71.62973898083342
-95.80189914890883,-100,-4.198100851091169
--61.24109032706328,8,-53.24109032706328
-13.667458546801626,7,20.667458546801626
--60.144671596971364,77,16.855328403028636
-98.43400208528834,-31,67.43400208528834
--94.03051618296425,-78,-172.03051618296425
-1.6080621848395964,63,64.6080621848396
-37.257001630743645,33,70.25700163074364
-30.845111025585567,-4,26.845111025585567
-60.20783344362874,-14,46.20783344362874
-59.132402985303884,-78,-18.867597014696116
-52.93123374492265,-98,-45.06876625507735
-67.11310053101127,-53,14.11310053101127
--82.42727881915238,-63,-145.42727881915238
--31.954455765550293,51,19.045544234449707
--87.94209347171717,-56,-143.94209347171716
-62.29917874847618,-7,55.29917874847618
--84.57342893953457,-82,-166.57342893953455
--43.246121446358664,90,46.753878553641336
-0.45775860235168864,-72,-71.54224139764831
-35.48232365215057,17,52.48232365215057
--33.69515507056724,-62,-95.69515507056724
-81.61668016599825,67,148.61668016599825
--82.32318672431064,35,-47.323186724310645
-23.868089926299206,3,26.868089926299206
--55.7318345721955,62,6.268165427804497
--48.8358360548214,21,-27.8358360548214
--30.738038058849952,56,25.261961941150048
--83.37655138757505,74,-9.376551387575049
--54.615325634241984,-93,-147.61532563424197
--3.8056065678825775,-13,-16.805606567882577
--86.65152730221853,71,-15.651527302218526
-2.331213558304597,77,79.3312135583046
-67.96167958816864,31,98.96167958816864
-63.63104519818427,8,71.63104519818427
-81.97281512684626,-58,23.972815126846257
--21.066655691122165,84,62.933344308877835
-91.4104035599864,-19,72.4104035599864
--66.2437405032485,66,-0.24374050324850316
-72.48214256055041,17,89.48214256055041
--63.031473861580814,100,36.968526138419186
--46.766028406725546,-27,-73.76602840672555
-28.442144836539768,-88,-59.55785516346023
-42.98074880284935,-97,-54.01925119715065
--60.09223476620142,-80,-140.09223476620141
-73.95912203330636,-100,-26.040877966693643
-63.57937823993481,-80,-16.42062176006519
-51.25377288889422,-94,-42.74622711110578
-90.42841020066012,-71,19.428410200660124
--63.35560482343614,-75,-138.35560482343612
-95.20668855349504,93,188.20668855349504
-11.734944327680694,79,90.7349443276807
-36.39392107012077,-74,-37.60607892987923
--47.975449678271076,74,26.024550321728924
--19.081067058526102,25,5.918932941473898
-81.90844840236545,38,119.90844840236545
-79.85036380942825,95,174.85036380942825
--72.09931651436378,-31,-103.09931651436378
--87.11118790627077,76,-11.111187906270771
-59.50032812244683,59,118.50032812244683
-98.11248931938252,-21,77.11248931938252
--8.059741453664941,-71,-79.05974145366494
--64.93334285677093,-87,-151.93334285677093
-15.742620034167103,5,20.742620034167103
-56.468836272200264,13,69.46883627220026
-4.869681597039403,-20,-15.130318402960597
-15.488294727563229,44,59.48829472756323
-8.078886591737572,-85,-76.92111340826243
--77.46142170543581,-44,-121.46142170543581
-44.75592122684063,17,61.75592122684063
--42.3379575404335,96,53.6620424595665
-17.49336370271108,29,46.49336370271108
--84.91135549634284,58,-26.911355496342836
-75.69185140507784,-60,15.691851405077841
--22.864010367023056,29,6.135989632976944
-10.132688023524366,7,17.132688023524366
-14.27035767154348,-65,-50.72964232845652
-53.10440784958013,-12,41.10440784958013
-86.85562591151904,-7,79.85562591151904
--91.63020088430844,31,-60.63020088430844
--98.26360879004558,3,-95.26360879004558
--85.14623845519829,0,-85.14623845519829
-95.97284635604117,60,155.97284635604117
--89.37104348730263,-90,-179.37104348730264
-10.803051475615334,-79,-68.19694852438467
-98.41787707163354,6,104.41787707163354
-71.40028235689005,-22,49.400282356890045
-69.21961022245173,70,139.21961022245173
-68.45641464193255,42,110.45641464193255
-80.268193624818,64,144.268193624818
--98.46696999149151,-11,-109.46696999149151
-27.560232532852737,-6,21.560232532852737
-69.16508853114883,18,87.16508853114883
-8.92135111566752,-97,-88.07864888433248
-70.97305945153914,98,168.97305945153914
--51.668662048093175,-30,-81.66866204809318
-98.63375504359954,-95,3.6337550435995354
-87.35666571851516,78,165.35666571851516
-59.453098891935895,39,98.4530988919359
--92.52449852496952,93,0.4755014750304838
--65.83771502814969,-38,-103.83771502814969
--72.8474534509216,-64,-136.8474534509216
--54.99348229007821,81,26.006517709921788
--29.86893987658452,-9,-38.86893987658452
-94.39089597387675,86,180.39089597387675
--46.17539856779649,48,1.824601432203508
--29.819129600831147,-67,-96.81912960083115
-47.49102626870223,20,67.49102626870223
--50.98509701069758,6,-44.98509701069758
--17.17295983285672,20,2.8270401671432808
--57.964692883054546,74,16.035307116945454
-11.539773941004498,-84,-72.4602260589955
--20.48113949452528,100,79.51886050547472
-35.26464666348642,-19,16.264646663486417
--75.04090011365867,-45,-120.04090011365867
--69.66764803080967,80,10.332351969190327
--97.03832894182078,-47,-144.0383289418208
--67.31181906480876,51,-16.31181906480876
--34.959959422717276,14,-20.959959422717276
-2.015658588830945,-92,-89.98434141116905
-27.06747717220115,48,75.06747717220115
--53.08110354618063,-49,-102.08110354618063
-92.71069887357154,12,104.71069887357154
--7.408143039901404,100,92.5918569600986
--62.05634587747269,-19,-81.0563458774727
--86.44850295255225,-67,-153.44850295255225
-95.49730734211306,-59,36.49730734211306
-11.313213501686022,55,66.31321350168602
-70.13364961599794,-20,50.13364961599794
--89.1237711196969,-39,-128.1237711196969
-65.55372476446428,47,112.55372476446428
--61.23105342885915,-36,-97.23105342885916
--42.22975608205868,98,55.77024391794132
--91.92645192097098,73,-18.926451920970976
--90.17895486026588,30,-60.178954860265875
-15.749035928245434,71,86.74903592824543
--2.4495838108279173,-64,-66.44958381082792
-80.67608978730806,-88,-7.323910212691942
--11.473977308050976,-3,-14.473977308050976
--75.20712788162378,79,3.7928721183762235
-98.20828082436839,-11,87.20828082436839
--55.15433490398536,11,-44.15433490398536
--83.39282072820622,-32,-115.39282072820622
--20.728104729651406,76,55.271895270348594
--26.90610849163218,15,-11.906108491632182
-76.73558697962457,-79,-2.2644130203754287
-40.70092287998537,73,113.70092287998537
--35.389071486765005,-73,-108.389071486765
-25.22461744700655,-34,-8.775382552993449
-45.23313589435227,-89,-43.76686410564773
--18.43000959402525,-67,-85.43000959402525
--50.107522614840015,-95,-145.10752261484
-47.488938124461015,-97,-49.511061875538985
--83.78815149582991,42,-41.78815149582991
-20.22685664213195,13,33.22685664213195
-62.057585670458195,79,141.0575856704582
--68.84860356135418,19,-49.84860356135418
-88.95089120099897,-42,46.95089120099897
-89.28509913951422,-75,14.285099139514216
--44.96395961559407,-82,-126.96395961559406
-56.90876151545231,83,139.9087615154523
--60.14292148066907,-16,-76.14292148066906
-14.925544209555781,77,91.92554420955578
-37.60297575573102,10,47.60297575573102
-94.83237303951475,-72,22.83237303951475
-98.68689457281968,61,159.68689457281968
-16.830725502652854,64,80.83072550265285
--18.860943298640635,28,9.139056701359365
--80.17251437577697,52,-28.17251437577697
-26.118989081700718,-30,-3.881010918299282
-12.934768033537566,-60,-47.065231966462434
-5.711916997899053,52,57.71191699789905
--38.15229914487397,82,43.84770085512603
--58.845128359959745,-70,-128.84512835995974
-64.14528612170929,80,144.1452861217093
-43.31867557884448,-63,-19.681324421155523
-55.99894785193405,-36,19.998947851934048
--60.81540500747844,-48,-108.81540500747843
-24.48334361292379,-85,-60.51665638707621
--36.57248603553269,79,42.42751396446731
-84.70367877574759,81,165.7036787757476
--92.2217137733425,-72,-164.22171377334251
-99.39599701209289,70,169.3959970120929
-90.20165679046949,1,91.20165679046949
-56.99890341816351,-94,-37.00109658183649
-82.86067799635984,0,82.86067799635984
-46.237602144838974,-82,-35.762397855161026
--25.573898595512617,41,15.426101404487383
--59.587028961455225,-12,-71.58702896145522
-72.77774565291352,81,153.77774565291352
-34.87977710826465,49,83.87977710826465
-47.007306303037694,95,142.0073063030377
--62.81792914876616,77,14.182070851233838
-26.12955909268591,66,92.12955909268591
-3.7600315303755423,-25,-21.239968469624458
--24.826763273359575,-24,-48.826763273359575
-14.17988939513259,51,65.17988939513259
--70.24560050712596,22,-48.24560050712596
-49.954176123247635,72,121.95417612324763
-76.73664930204899,65,141.736649302049
-87.06924993944392,-1,86.06924993944392
--71.08587821617235,23,-48.08587821617235
-55.472530871879655,72,127.47253087187966
-90.94315680818588,-6,84.94315680818588
-2.944454252315623,64,66.94445425231562
--20.06785319526753,72,51.93214680473247
-22.222777863559813,-68,-45.77722213644019
--65.17197723309347,-87,-152.17197723309346
-38.09411701528836,-30,8.094117015288361
-28.031280898369488,-99,-70.96871910163051
--66.88193211923618,16,-50.88193211923618
--70.65301742757386,-21,-91.65301742757386
--48.67213175826146,15,-33.67213175826146
-86.04183373196958,48,134.04183373196958
--83.32407808307667,-35,-118.32407808307667
--93.1030659229936,25,-68.1030659229936
--71.69695107337523,70,-1.6969510733752315
-43.50853259628772,-42,1.508532596287722
--70.93372927675226,93,22.06627072324774
-17.647702466838865,53,70.64770246683887
--14.938695791082623,-62,-76.93869579108262
--84.59911116702345,-99,-183.59911116702347
--85.28568378771428,59,-26.285683787714277
-52.185950396119296,98,150.1859503961193
--66.9843286534127,83,16.015671346587297
--65.61659277365791,-12,-77.61659277365791
--80.0900407466669,78,-2.090040746666901
--32.47709643479857,78,45.52290356520143
-53.26875225305582,-81,-27.731247746944177
-74.06216846774058,-51,23.062168467740577
-40.959527653705806,58,98.9595276537058
--72.89181968889342,-96,-168.8918196888934
-92.6176784228451,91,183.6176784228451
-70.80102192208676,34,104.80102192208676
-38.65115910367331,-54,-15.348840896326692
-87.06885178632766,51,138.06885178632766
--68.98610218066105,20,-48.98610218066105
--19.02387863101893,15,-4.023878631018931
--34.51801378575583,71,36.48198621424417
-33.775655917625755,-86,-52.224344082374245
--68.42833636840837,81,12.571663631591633
--4.329747208486296,-81,-85.3297472084863
-74.3768112909105,20,94.3768112909105
-14.722536122868135,26,40.722536122868135
-67.30999505673657,-27,40.30999505673657
--53.069305611078455,-98,-151.06930561107845
--77.44628146030101,40,-37.44628146030101
--72.33812046972523,-27,-99.33812046972523
-18.395687719695133,-54,-35.60431228030487
--75.6657095452997,62,-13.665709545299705
--11.324149903955743,60,48.67585009604426
--76.58907713346079,5,-71.58907713346079
-91.33074280903256,-92,-0.6692571909674427
--92.3963752234192,20,-72.3963752234192
-94.25948661066133,28,122.25948661066133
-26.55536542092156,-84,-57.44463457907844
--34.22657444401696,-87,-121.22657444401696
--25.34325108727893,35,9.65674891272107
-92.1508859268585,-39,53.15088592685851
--64.38039994544067,92,27.619600054559328
--89.1506786707637,36,-53.150678670763696
-13.382246891238722,92,105.38224689123872
--41.723338750451376,59,17.276661249548624
-89.71914905200998,-75,14.719149052009982
--86.87623500704488,-46,-132.8762350070449
-32.619765286036966,4,36.619765286036966
-22.229427460681592,-89,-66.77057253931841
-1.2057558890545437,16,17.205755889054544
--48.02829192549043,1,-47.02829192549043
-0.6760541665721718,94,94.67605416657217
--6.139261964125595,35,28.860738035874405
-81.67869651342195,-11,70.67869651342195
-70.87177581098194,78,148.87177581098194
--60.02425375143412,-37,-97.02425375143412
--94.9190890969895,-48,-142.9190890969895
-19.663248233938305,-56,-36.336751766061695
--1.9805352660641233,77,75.01946473393588
--39.73221877228512,21,-18.732218772285123
--21.45015509661357,-96,-117.45015509661357
-99.31882004069368,-87,12.31882004069368
-36.32711190498608,-16,20.327111904986083
--59.31000570351801,86,26.68999429648199
--30.20238589371742,-74,-104.20238589371742
-37.18034672925111,34,71.18034672925111
-87.95639880673858,4,91.95639880673858
--22.18115495694741,-10,-32.18115495694741
-90.32830760889732,70,160.32830760889732
-23.97763425547008,-87,-63.02236574452992
--84.51013698404064,-52,-136.51013698404063
-41.856405812311834,-73,-31.143594187688166
-12.098886760636447,76,88.09888676063645
--83.78646522115771,24,-59.78646522115771
-31.04231216187233,-83,-51.95768783812767
--50.034450382690764,-41,-91.03445038269076
--44.0342497606403,-37,-81.03424976064031
--38.01624073808172,66,27.98375926191828
-3.2679970947781385,-23,-19.73200290522186
--67.53596018620408,91,23.46403981379592
-77.6698533994306,-25,52.66985339943059
--38.56643049455144,-70,-108.56643049455144
-84.43634418048703,72,156.43634418048703
-76.51255636763074,-51,25.512556367630737
-55.97492092837689,22,77.97492092837689
--42.40944418862882,-40,-82.40944418862881
-86.50460133575339,56,142.5046013357534
--40.162482431965984,44,3.8375175680340163
--48.152835936365705,-53,-101.1528359363657
--9.217174351402917,-91,-100.21717435140292
-24.26133702346975,-91,-66.73866297653025
-95.0505536524029,92,187.0505536524029
--89.89213017916617,72,-17.892130179166173
--98.48096238022408,21,-77.48096238022408
--60.1228162643195,-44,-104.12281626431951
--11.230424384975478,90,78.76957561502452
--97.28393773351375,-62,-159.28393773351377
-64.01572575999802,66,130.01572575999802
-18.17978238286291,41,59.17978238286291
-58.895373928379,94,152.895373928379
-24.536746872077074,-68,-43.463253127922926
-16.32902009093327,-31,-14.67097990906673
-84.14531983943837,65,149.14531983943837
--37.690633881914295,-90,-127.6906338819143
-28.78451071402023,-34,-5.215489285979771
--76.52307600089685,12,-64.52307600089685
--21.17905121525196,-82,-103.17905121525196
--37.43396152210212,15,-22.433961522102123
-82.84199154958446,-51,31.841991549584463
--23.404261879960416,47,23.595738120039584
--30.612938803652284,3,-27.612938803652284
-45.865496398761536,13,58.865496398761536
--89.748286264415,-83,-172.74828626441501
--36.99532638656493,48,11.004673613435067
-42.43781359821017,36,78.43781359821017
--8.910427848735509,-3,-11.910427848735509
--92.3426917599069,11,-81.3426917599069
-17.37705728244741,79,96.37705728244741
-32.77851859348655,-4,28.778518593486552
--32.27201274557483,-28,-60.27201274557483
-54.489934668332154,19,73.48993466833215
-20.7296505982965,59,79.7296505982965
-75.96161020396121,-90,-14.038389796038786
-10.240819801613782,54,64.24081980161378
--91.7026365416366,-32,-123.7026365416366
-98.71420260769156,40,138.71420260769156
--38.86484636681522,-33,-71.86484636681521
--30.691224905641292,-16,-46.69122490564129
-61.71008016499434,-66,-4.289919835005662
-90.17230289880297,-84,6.172302898802968
-68.16064462785357,-78,-9.839355372146429
--75.60440087359954,-82,-157.60440087359956
-61.92065446910101,56,117.92065446910101
--73.08325541295355,-83,-156.08325541295355
--37.152657894742426,-55,-92.15265789474242
-47.345558563505676,-81,-33.654441436494324
--84.11697487161226,76,-8.116974871612257
--38.57536772942449,6,-32.57536772942449
--93.1006043442566,77,-16.100604344256595
--93.00388068833341,35,-58.00388068833341
--48.24338817898075,16,-32.24338817898075
--14.859631639299621,-48,-62.85963163929962
--77.9931987228457,-46,-123.9931987228457
--91.99071674189103,5,-86.99071674189103
--71.15965900084468,68,-3.159659000844684
-40.33507832482715,-74,-33.66492167517285
--15.467341491056757,-46,-61.46734149105676
-55.69763216068637,82,137.69763216068637
-5.652627105102596,81,86.6526271051026
-96.27380454549092,-15,81.27380454549092
--30.56535328152185,-88,-118.56535328152185
-59.300614375310204,74,133.3006143753102
-32.07950747955394,87,119.07950747955394
--51.50195089639038,-52,-103.50195089639038
--92.74120419488531,-28,-120.74120419488531
--59.914236364492645,-54,-113.91423636449264
-41.673035023905584,31,72.67303502390558
-30.40905498326191,-83,-52.59094501673809
-60.985754298454395,-66,-5.014245701545605
--56.683631962473925,-63,-119.68363196247392
--78.8496688356345,-4,-82.8496688356345
--19.5175877953003,-90,-109.5175877953003
--88.20488523271845,-27,-115.20488523271845
--5.575703058614323,54,48.42429694138568
--65.29104888048104,42,-23.291048880481043
-77.17696011325705,89,166.17696011325705
-2.918318770246529,-51,-48.08168122975347
--46.08810767877245,13,-33.08810767877245
-11.600868927283798,49,60.6008689272838
-87.11608295530843,-14,73.11608295530843
-14.02745840970141,-78,-63.97254159029859
--38.78665655984965,-86,-124.78665655984966
-69.03414374664177,-58,11.034143746641774
--70.01216967133601,-14,-84.01216967133601
-7.281425838098116,54,61.281425838098116
--2.0190886154404666,45,42.98091138455953
-63.31265629716927,26,89.31265629716927
--35.22335308631624,99,63.77664691368376
-29.32517343524742,50,79.32517343524742
-13.40830374489299,-63,-49.59169625510701
-36.468868017151834,92,128.46886801715183
-74.72481416741385,26,100.72481416741385
-97.18763517460613,85,182.18763517460613
--59.98044903481639,-1,-60.98044903481639
-71.65667112892405,92,163.65667112892405
-60.52082544494792,-94,-33.47917455505208
-13.001704785194775,48,61.001704785194775
--26.029733215576954,89,62.970266784423046
--21.709898811602784,17,-4.709898811602784
--60.304658773035705,-14,-74.3046587730357
--87.498457400213,-1,-88.498457400213
-19.836618805267904,1,20.836618805267904
-9.252943466832747,-15,-5.747056533167253
-51.51832069544463,48,99.51832069544463
--28.05995600064786,-39,-67.05995600064786
-10.988769771162183,-59,-48.01123022883782
-51.25309597492961,88,139.2530959749296
--53.34599898779035,-59,-112.34599898779035
-90.88940519860901,67,157.889405198609
--47.78251320343014,-64,-111.78251320343014
-31.218399320968558,53,84.21839932096856
-24.638410317973353,4,28.638410317973353
-94.69147445949872,-94,0.6914744594987212
--85.06170710804533,-10,-95.06170710804533
--75.93410038490653,83,7.065899615093471
--95.53226076224293,36,-59.53226076224293
-17.3389708835483,29,46.3389708835483
--94.95568749937797,-64,-158.95568749937797
-29.63896103554913,55,84.63896103554913
--31.82943298422404,14,-17.82943298422404
-37.39493303703222,-61,-23.605066962967783
--38.30004429392666,-10,-48.30004429392666
--19.615135747604185,-96,-115.61513574760419
--92.4976298837257,37,-55.49762988372569
--52.82733427559614,-78,-130.82733427559614
--91.17947567794664,7,-84.17947567794664
--60.39641804206561,-22,-82.39641804206562
-92.54305237255437,-69,23.54305237255437
--13.346484801150481,52,38.65351519884952
-30.80042234120691,-92,-61.19957765879309
-17.875919513114937,38,55.87591951311494
-40.06700822706381,-54,-13.932991772936191
--86.75854503558797,55,-31.75854503558797
-75.74295681445105,-35,40.74295681445105
--40.51059835027393,-71,-111.51059835027394
--79.46368934718559,11,-68.46368934718559
-98.04364684150983,36,134.04364684150983
-82.89018708232575,-7,75.89018708232575
-90.11275197856091,43,133.1127519785609
--53.739099525474664,93,39.260900474525336
-27.40064045106341,-26,1.4006404510634098
--99.58979692553748,35,-64.58979692553748
-52.28885601944947,-97,-44.71114398055053
-29.870863635655894,16,45.870863635655894
-80.2215260656541,-58,22.221526065654103
--96.19622098490434,-51,-147.19622098490436
--60.94024618147817,-53,-113.94024618147817
--98.67503147011254,-41,-139.67503147011254
--20.466994535537395,-97,-117.4669945355374
-76.9511595507644,-32,44.9511595507644
--57.379022930617715,-41,-98.37902293061771
--7.81793547118798,9,1.1820645288120204
--40.36950253764768,-41,-81.36950253764769
--5.385289107122986,67,61.614710892877014
-10.614100907816493,21,31.614100907816493
-16.108175863142066,85,101.10817586314207
--75.70125721973393,12,-63.70125721973393
-98.80296358803866,91,189.80296358803866
--84.32913749654296,-45,-129.32913749654296
-32.27707384240395,-76,-43.72292615759605
-19.602057280284953,-22,-2.397942719715047
-27.918355336158783,-89,-61.08164466384122
--65.8421146071727,-34,-99.8421146071727
-20.516622936433578,3,23.516622936433578
--73.54431196741417,-86,-159.54431196741416
-7.562944131688383,36,43.56294413168838
-59.65272164701676,-56,3.6527216470167616
-30.202042626623438,51,81.20204262662344
--39.817665812109084,39,-0.8176658121090838
-0.1461969327542363,-39,-38.853803067245764
--20.70225433942167,-34,-54.70225433942167
--95.17889105011706,51,-44.17889105011706
--89.99263586801449,73,-16.99263586801449
-26.28440102395153,65,91.28440102395153
--27.506425753564372,-34,-61.50642575356437
--93.96953220801866,82,-11.969532208018663
-71.30484027390762,21,92.30484027390762
-88.0352486792384,-35,53.03524867923841
--21.053859552531804,65,43.946140447468196
--50.543295799843115,28,-22.543295799843115
-24.60059319361349,34,58.60059319361349
-50.281460162328074,74,124.28146016232807
--23.713884089924647,-57,-80.71388408992465
--36.58362935576487,-2,-38.58362935576487
-51.96941893258716,-34,17.96941893258716
-64.4467013784832,44,108.4467013784832
--72.37520323131406,58,-14.37520323131406
--55.544304645721354,-92,-147.54430464572135
--95.49180087790343,95,-0.4918008779034295
-74.95341680757502,-29,45.953416807575024
--50.33905792134383,-27,-77.33905792134382
-22.83880819486359,83,105.83880819486359
-41.87638299701675,-91,-49.12361700298325
--55.451746962948015,-58,-113.45174696294802
--72.65246559976283,-89,-161.65246559976282
-88.91306993412749,-38,50.91306993412749
-51.196721289909675,-61,-9.803278710090325
-15.33448250808948,-100,-84.66551749191052
--1.4201399968479507,-89,-90.42013999684795
--50.90287983869226,66,15.097120161307743
-59.50386771772739,35,94.50386771772739
--82.05521729054851,33,-49.05521729054851
--39.333745686103505,69,29.666254313896495
--31.108483087586094,87,55.891516912413906
--80.10715214206492,-58,-138.10715214206493
-16.019962293395068,-4,12.019962293395068
--59.84651321265086,52,-7.846513212650862
-69.99892098406377,-86,-16.001079015936227
--38.094509540287525,-71,-109.09450954028753
--24.337546797869877,-32,-56.33754679786988
--78.55968783360001,25,-53.55968783360001
--61.06923563926077,98,36.93076436073923
-33.726496321874805,76,109.7264963218748
-62.815367940889246,18,80.81536794088925
--28.061961915847135,-54,-82.06196191584714
--5.6840743806844785,94,88.31592561931552
-56.54448846724313,93,149.54448846724313
--37.038455732915885,-47,-84.03845573291588
-28.616197910313304,-61,-32.3838020896867
--22.1661994271946,-15,-37.1661994271946
--14.057527884305856,30,15.942472115694144
-88.90016160567893,-52,36.90016160567893
--59.232320317564955,91,31.767679682435045
-66.96527279995647,19,85.96527279995647
-4.269555999205224,92,96.26955599920522
-79.77366318875394,-63,16.773663188753943
--13.219053110738074,-34,-47.21905311073807
-53.66048069810617,-33,20.66048069810617
--78.66328437389834,-93,-171.66328437389834
-18.493252404561062,56,74.49325240456106
--89.469623229311,-22,-111.469623229311
--51.99305285784202,-29,-80.99305285784202
-55.076682172740846,-24,31.076682172740846
--89.87063342816215,-78,-167.87063342816214
-39.479251842932115,48,87.47925184293211
-15.86669406355972,60,75.86669406355972
-12.48720840279141,-83,-70.51279159720859
--90.04746103678411,-39,-129.0474610367841
-57.396821194078825,90,147.39682119407883
--30.569257046675588,48,17.430742953324412
--45.409700358141556,4,-41.409700358141556
-90.26237851011152,86,176.26237851011152
--12.739170922550926,16,3.260829077449074
-34.28514679062155,87,121.28514679062155
--35.48635527268853,-54,-89.48635527268853
--52.06373922610157,-13,-65.06373922610157
-93.86343260824273,12,105.86343260824273
-9.838880384298633,53,62.83888038429863
-49.236206357100485,-43,6.236206357100485
--77.85293951947546,30,-47.852939519475456
--87.8488290490737,30,-57.8488290490737
-25.151625852079434,-5,20.151625852079434
-94.01413404059929,34,128.0141340405993
-90.69910932405239,-93,-2.3008906759476133
-39.572175360102136,-3,36.572175360102136
-32.01335550120487,-65,-32.98664449879513
-1.8677170988705711,55,56.86771709887057
-5.046046781403007,74,79.046046781403
--36.28463007946683,-20,-56.28463007946683
--56.361574118445915,56,-0.36157411844591536
-33.491050891758704,45,78.4910508917587
--96.20857873944001,72,-24.208578739440014
-17.221344601147635,-20,-2.778655398852365
--48.01016843239776,47,-1.0101684323977622
--92.85446505404815,77,-15.854465054048148
-92.21518195222879,-16,76.21518195222879
--80.88879714551445,57,-23.888797145514445
-80.36438222529537,85,165.36438222529537
-11.992526523575918,26,37.99252652357592
--94.6249170094938,-42,-136.6249170094938
-55.9830890040233,-99,-43.0169109959767
--49.35730390807957,-63,-112.35730390807957
-67.26103646231124,-20,47.26103646231124
-83.23339927980425,-23,60.233399279804246
--69.49566133288258,-18,-87.49566133288258
--23.891152315424875,70,46.108847684575125
--44.14016147536686,23,-21.14016147536686
-11.065081672250273,3,14.065081672250273
-32.695038931990496,43,75.6950389319905
-99.91876634450654,42,141.91876634450654
-53.631546421162795,47,100.6315464211628
--65.50471430107075,-37,-102.50471430107075
--82.05498004023428,-20,-102.05498004023428
-64.46471387739635,0,64.46471387739635
--59.61485476503676,11,-48.61485476503676
--2.349064440198717,82,79.65093555980128
-72.69489965535931,76,148.6948996553593
-55.73984626909717,-58,-2.260153730902829
--61.0146298553083,41,-20.0146298553083
--88.7754429650651,-96,-184.7754429650651
-54.28209972248263,-59,-4.717900277517373
-66.4233452608143,-46,20.4233452608143
-3.848173816463458,-1,2.848173816463458
--94.75241326637156,31,-63.75241326637156
--32.4814974610331,24,-8.4814974610331
--31.7727074658293,33,1.2272925341707008
--63.20664665819782,18,-45.20664665819782
-13.93685997920528,28,41.93685997920528
--79.08299947959742,29,-50.08299947959742
-93.89224639406646,-100,-6.107753605933539
-9.814289186135113,-92,-82.18571081386489
--33.62940464927556,-70,-103.62940464927556
-45.78330885889508,-54,-8.216691141104917
-77.28443025095265,-3,74.28443025095265
--68.7071602427261,-72,-140.7071602427261
--9.399284824497926,34,24.600715175502074
--10.823429159972449,78,67.17657084002755
--29.09607671084966,-53,-82.09607671084966
--88.25930229394253,-25,-113.25930229394253
--11.87410702404847,-59,-70.87410702404847
-56.430963502966335,-78,-21.569036497033665
-97.70550474074633,35,132.70550474074633
--78.61107684967419,51,-27.61107684967419
-92.81567361753861,93,185.8156736175386
--98.18946850925947,-39,-137.18946850925948
-51.782362478936506,80,131.7823624789365
-35.85140307312932,-96,-60.14859692687068
--79.85051967986402,-20,-99.85051967986402
--9.895961664400772,-20,-29.895961664400772
-52.862724593829626,14,66.86272459382963
-35.506949387149774,-13,22.506949387149774
-50.14710271448766,44,94.14710271448766
--7.404391703262235,-100,-107.40439170326223
-4.791237706682324,35,39.791237706682324
-53.90569221324208,-84,-30.094307786757923
-16.127983221917148,-6,10.127983221917148
--25.216308228533777,-59,-84.21630822853378
-89.65569113354843,59,148.65569113354843
--97.99064449648822,-27,-124.99064449648822
-21.327305819797942,8,29.327305819797942
--10.744835396705966,-85,-95.74483539670597
-37.79588246532478,-15,22.79588246532478
--33.10101915290198,46,12.898980847098017
--59.32384402875539,12,-47.32384402875539
-35.916479914562984,-31,4.916479914562984
--0.20962043734158442,16,15.790379562658416
--18.92110592878771,92,73.07889407121229
--65.64698595202971,21,-44.64698595202971
-95.87958827285323,91,186.87958827285323
-69.22879591581156,-36,33.22879591581156
-63.89889010602079,96,159.8988901060208
--13.957280080190543,75,61.04271991980946
-9.110191115785085,-17,-7.889808884214915
-83.58759314536888,31,114.58759314536888
--20.990553325615792,-49,-69.99055332561579
-49.57959731799659,-94,-44.42040268200341
-45.75931479686977,-77,-31.240685203130226
--6.843733906729966,-18,-24.843733906729966
-57.13347799744969,94,151.1334779974497
-44.5613686192213,-89,-44.4386313807787
-35.080086663183096,43,78.0800866631831
-22.403677285350042,40,62.40367728535004
-74.63461916018412,60,134.63461916018412
--29.267371278540494,86,56.732628721459506
-54.018927578871455,-9,45.018927578871455
-51.501585847085124,-76,-24.498414152914876
-25.112696097864017,21,46.11269609786402
--67.04105280065141,88,20.958947199348586
-51.87849435865891,20,71.87849435865891
--25.620962259779944,-44,-69.62096225977994
--9.83658628476762,58,48.16341371523238
-88.32778894456308,57,145.32778894456308
-81.66728921449996,45,126.66728921449996
-9.48805629668712,16,25.48805629668712
-19.97802793801648,-84,-64.02197206198352
-83.57817038176498,-45,38.57817038176498
--71.45770190864759,-84,-155.4577019086476
--24.3870723321332,-99,-123.3870723321332
--65.01864835650335,98,32.98135164349665
--31.68961555360559,-60,-91.68961555360559
-48.65529953901114,-34,14.65529953901114
--67.87718821820738,-38,-105.87718821820738
-13.439576594976074,-44,-30.560423405023926
--94.73238647631727,21,-73.73238647631727
--42.85561805747786,-60,-102.85561805747787
--85.00440424615255,-98,-183.00440424615255
--58.98558958191984,-56,-114.98558958191984
-95.79606679770487,-66,29.796066797704867
-3.2593701702853224,-20,-16.740629829714678
-80.05038185796357,23,103.05038185796357
-67.5736751851367,61,128.5736751851367
-73.13692155263416,-67,6.136921552634163
--63.16330231695295,53,-10.16330231695295
-55.81188691383764,-70,-14.18811308616236
-92.04232227063812,-54,38.042322270638124
-49.61466313405188,-25,24.61466313405188
--31.414713315842107,-55,-86.4147133158421
--17.637438385254868,-34,-51.63743838525487
-22.418345956118245,-3,19.418345956118245
-31.57058622912342,29,60.57058622912342
-43.82416584000006,31,74.82416584000006
--99.13688572949444,-33,-132.13688572949445
-26.88667647027465,-53,-26.11332352972535
-17.92931437077594,-53,-35.07068562922406
-44.21372987348573,-53,-8.786270126514268
--98.04080651877175,73,-25.040806518771745
--8.28208375236241,-33,-41.28208375236241
-88.83889715656963,-89,-0.1611028434303705
-85.3101553979383,-40,45.3101553979383
--59.763186963490234,62,2.2368130365097656
-67.68851725893578,84,151.68851725893578
--31.476503185011822,-70,-101.47650318501182
--58.01478138716438,-48,-106.01478138716439
-85.8120700501822,84,169.8120700501822
--48.667874343658355,-34,-82.66787434365835
-44.339987941591744,10,54.339987941591744
--16.694088968941756,-77,-93.69408896894176
-81.98683465386455,-41,40.98683465386455
--10.470972162529392,90,79.52902783747061
--40.58126730729976,95,54.41873269270024
-79.6488898781439,-80,-0.35111012185609525
--12.00794836827346,10,-2.0079483682734605
-91.7392594274919,-52,39.7392594274919
--79.04773006742253,-9,-88.04773006742253
-25.79778303652091,-93,-67.20221696347909
--54.13094636228335,-2,-56.13094636228335
-6.436084546076003,97,103.436084546076
-16.306120266484285,9,25.306120266484285
-44.57597690636047,-91,-46.42402309363953
-67.57743668390691,27,94.57743668390691
--13.273291212442643,-40,-53.27329121244264
-75.17175745381516,65,140.17175745381516
--41.8822351394782,52,10.117764860521802
-98.91079369381367,35,133.91079369381367
-1.3584239734352366,29,30.358423973435237
--87.15477727032344,3,-84.15477727032344
-71.96553433901855,-19,52.96553433901855
--3.430848876654636,-96,-99.43084887665464
-4.776589980785516,5,9.776589980785516
--73.34579898565401,52,-21.345798985654014
--33.535668568252134,43,9.464331431747866
--71.02522412869425,14,-57.02522412869425
--26.02172340930491,92,65.97827659069509
-68.20402208182213,-65,3.2040220818221314
--42.05354265780756,84,41.94645734219244
--35.30355292668254,50,14.696447073317458
--42.18192500514053,60,17.818074994859472
--13.522804983215323,66,52.47719501678468
-28.372151761469155,-31,-2.627848238530845
--11.388621070545696,-50,-61.388621070545696
--79.72758027327006,5,-74.72758027327006
-23.28409721790159,30,53.28409721790159
--52.2936531712548,-46,-98.2936531712548
-38.504387390678176,-89,-50.495612609321824
--56.06797051397257,-9,-65.06797051397257
--30.117229678369696,-74,-104.1172296783697
--28.469129228291962,47,18.530870771708038
-96.37568767210635,0,96.37568767210635
-91.52056809038893,77,168.52056809038893
--27.104656644395675,-5,-32.104656644395675
-2.254499603847975,-52,-49.745500396152025
-21.372291673442234,28,49.372291673442234
-96.25783447512799,52,148.257834475128
--45.54374427572743,48,2.456255724272573
-92.7046064762254,-14,78.7046064762254
-56.41864471296424,34,90.41864471296424
-7.9991794291650535,60,67.99917942916505
-15.715053430439838,73,88.71505343043984
-54.652675326652684,48,102.65267532665268
--30.879813319424116,-82,-112.87981331942412
-99.76612206303926,-40,59.76612206303926
--11.357428191305985,-13,-24.357428191305985
--57.394511185418025,18,-39.394511185418025
--50.45553701410721,-22,-72.45553701410721
--76.11222749405376,25,-51.112227494053755
--62.81370788977867,-28,-90.81370788977867
-17.523994102897845,-3,14.523994102897845
-42.61795144005242,53,95.61795144005242
-80.72532676531748,24,104.72532676531748
-68.19633753287619,-98,-29.803662467123814
-80.42601071104036,-36,44.42601071104036
--39.9407443957212,-20,-59.9407443957212
-54.9538684866647,-59,-4.046131513335297
-62.58100534041563,-43,19.58100534041563
--1.6232050280666073,-28,-29.623205028066607
--75.68013215332931,99,23.31986784667069
-10.604040759803851,43,53.60404075980385
--20.39238233320981,41,20.60761766679019
-43.33669779868376,-50,-6.663302201316242
-32.61861726341152,-87,-54.38138273658848
--10.628125262692407,63,52.37187473730759
-8.273391345240725,-11,-2.726608654759275
-17.75693587827844,59,76.75693587827844
--10.09505784005313,53,42.90494215994687
-96.81510377312685,-41,55.81510377312685
--40.259724557676904,-17,-57.259724557676904
-61.606903538164005,-40,21.606903538164005
--98.08524246141424,-14,-112.08524246141424
--95.42989855244653,-88,-183.42989855244653
-18.83964260866253,23,41.83964260866253
--92.5315534682751,95,2.4684465317248936
-9.211235630077368,90,99.21123563007737
--42.878426265179705,-33,-75.87842626517971
-39.86539003781701,30,69.86539003781701
--20.89160641269929,70,49.10839358730071
-5.426586187062625,-55,-49.573413812937375
--90.71067215586719,78,-12.710672155867186
-5.920233305170413,6,11.920233305170413
--7.920830538888083,-67,-74.92083053888808
--47.58974961552349,-38,-85.58974961552349
-92.68862559546812,-33,59.688625595468125
--70.0326326453422,-23,-93.0326326453422
-11.812724358720388,51,62.81272435872039
-75.58891073624409,6,81.58891073624409
-20.075293161341364,-12,8.075293161341364
-1.8513789329988697,-50,-48.14862106700113
-26.654457429704763,-47,-20.345542570295237
-97.8752431452165,-19,78.8752431452165
-86.67965656803486,-30,56.67965656803486
--44.35424860864534,66,21.645751391354658
--6.504949599441417,67,60.49505040055858
-12.619785185742401,-38,-25.3802148142576
--34.783407748759856,-94,-128.78340774875986
--93.10741384042313,34,-59.107413840423135
-77.13858125921783,-39,38.13858125921783
-77.45511279326763,83,160.45511279326763
-60.95880171988205,58,118.95880171988205
-85.13109396321326,-92,-6.86890603678674
-18.20866321044072,-63,-44.79133678955928
--37.12213622672109,67,29.87786377327891
--13.321439289420226,88,74.67856071057977
--56.55250688772888,-69,-125.55250688772888
--12.96981859971595,-42,-54.96981859971595
--47.12661975940382,1,-46.12661975940382
-22.87617605522432,16,38.87617605522432
-77.8784403635106,58,135.8784403635106
-93.1958978164763,-21,72.1958978164763
--29.995667329019838,-63,-92.99566732901984
-81.87263105912879,-23,58.87263105912879
--66.00448473980245,22,-44.00448473980245
--25.025541982462258,73,47.97445801753774
-93.7294912357211,-57,36.7294912357211
-27.276255328149972,-26,1.276255328149972
-48.8973835219615,-28,20.8973835219615
--36.24711664365869,-72,-108.2471166436587
--72.7630718859634,-93,-165.7630718859634
-92.13999739689066,29,121.13999739689066
--8.477804602208124,-18,-26.477804602208124
--47.37847959936572,75,27.62152040063428
--76.91237305638612,71,-5.912373056386116
--34.216183710750286,-62,-96.21618371075029
-74.42298490918523,-57,17.42298490918523
-63.16689005330787,-83,-19.833109946692133
-39.16627564463667,25,64.16627564463667
--96.38287947166147,89,-7.382879471661468
-52.056318975428695,81,133.0563189754287
--59.42317099658343,61,1.5768290034165702
--89.10410919310183,64,-25.104109193101834
-76.08594776759864,-60,16.08594776759864
-64.7270465932435,-13,51.7270465932435
--23.80311816450977,-96,-119.80311816450977
--0.16235241246727128,-52,-52.16235241246727
--21.309966481032475,100,78.69003351896752
-88.49236735101772,97,185.49236735101772
-92.49620673110462,100,192.49620673110462
--71.51337581113421,-60,-131.5133758111342
--61.65730228496935,-74,-135.65730228496935
--1.1853313308984923,14,12.814668669101508
-83.6691471601101,20,103.6691471601101
-11.48399912118154,40,51.48399912118154
-82.53315939331617,-61,21.53315939331617
-23.19700534182067,-79,-55.80299465817933
--86.64554466133455,-99,-185.64554466133455
-29.166371715254257,-94,-64.83362828474574
--5.97700230402036,50,44.02299769597964
--46.55375496448224,-75,-121.55375496448224
--21.388272420025515,22,0.6117275799744846
-4.308998104999873,-65,-60.69100189500013
-9.267653069585947,64,73.26765306958595
--96.0312728483971,-94,-190.0312728483971
-77.64322671543721,-23,54.64322671543721
-90.41190252914134,89,179.41190252914134
-84.37654270875561,77,161.3765427087556
--34.62959822527931,12,-22.62959822527931
-10.952673657285743,67,77.95267365728574
--27.37841500087295,-39,-66.37841500087295
--53.93681607952232,39,-14.936816079522323
-23.740081220756252,70,93.74008122075625
-16.730294558162925,78,94.73029455816292
--57.553593230820674,-50,-107.55359323082067
--38.58360992005123,5,-33.58360992005123
-40.84869930528208,100,140.84869930528208
--71.84106765160121,61,-10.841067651601207
-16.256359946103345,-70,-53.743640053896655
-41.04620642139639,31,72.04620642139639
--51.017835895674104,-36,-87.0178358956741
--48.160994223190535,-23,-71.16099422319053
-15.977870202423034,38,53.977870202423034
--26.298886102170016,84,57.701113897829984
--29.501803932619495,-37,-66.5018039326195
-33.294065546478436,45,78.29406554647844
-68.59691358334416,-81,-12.403086416655839
--37.83314402514104,51,13.166855974858962
-75.09139957145322,-6,69.09139957145322
--99.91685893017781,-88,-187.9168589301778
--31.360569230542183,0,-31.360569230542183
--27.630648561501587,55,27.369351438498413
-20.173356773776476,86,106.17335677377648
--20.17531635078531,-3,-23.17531635078531
-3.6521321840025394,-70,-66.34786781599746
--50.784440183669346,-15,-65.78444018366935
--50.89098633946516,2,-48.89098633946516
--24.28082483365037,-71,-95.28082483365037
--4.820683682550126,-58,-62.820683682550126
--80.20627417269763,-22,-102.20627417269763
-50.053990156533416,53,103.05399015653342
-64.10697397866716,-19,45.106973978667156
-44.518164614362234,-100,-55.481835385637766
-69.9696712431791,48,117.9696712431791
--9.056230526759009,81,71.94376947324099
-47.2542065206878,51,98.2542065206878
--9.294241033418558,28,18.705758966581442
--86.11486431479969,87,0.8851356852003107
--35.698672049365584,36,0.3013279506344162
-61.8362381175786,99,160.8362381175786
--55.80835799246087,7,-48.80835799246087
-93.98935004060093,21,114.98935004060093
-3.8390003113309064,100,103.8390003113309
-93.27467876095358,15,108.27467876095358
-19.30018268522842,9,28.30018268522842
--34.50750874734776,55,20.492491252652243
-12.58960028934348,-18,-5.41039971065652
-83.84407673297108,-45,38.844076732971075
-77.08258700229999,-27,50.08258700229999
--6.128940651942557,-92,-98.12894065194256
--6.854831614430992,75,68.14516838556901
-25.837392898054105,-51,-25.162607101945895
-42.06963593340825,-9,33.06963593340825
-84.50697758910212,21,105.50697758910212
--47.48421797734888,-22,-69.48421797734888
--0.520847635026314,37,36.479152364973686
--34.291857485192594,-30,-64.2918574851926
--26.193898508599503,21,-5.193898508599503
--90.47040268360598,46,-44.47040268360598
--80.00909839374933,-4,-84.00909839374933
--20.782632490369025,-95,-115.78263249036902
-42.194145878047095,75,117.1941458780471
-38.3355290454744,-58,-19.664470954525598
-92.40930940373505,44,136.40930940373505
-71.93118071048383,52,123.93118071048383
--90.91932915285592,-2,-92.91932915285592
--1.4247819346715005,-2,-3.4247819346715005
--98.52798209997948,65,-33.52798209997948
--80.03178728849286,7,-73.03178728849286
--17.05906116337448,-97,-114.05906116337448
-26.668607109720682,-59,-32.33139289027932
--25.965818942267887,33,7.034181057732113
--94.2593633269931,-78,-172.25936332699308
--42.30708409724411,13,-29.307084097244108
-73.29058874019887,40,113.29058874019887
-1.8486486570037215,99,100.84864865700372
-52.193277211561906,30,82.1932772115619
-58.01912921122923,63,121.01912921122923
-83.7624033589789,-43,40.7624033589789
--16.200917883566774,-35,-51.200917883566774
-46.95311677303408,-41,5.953116773034083
-76.55168096643402,-75,1.55168096643402
-29.373720416577925,33,62.373720416577925
-91.35672603286588,11,102.35672603286588
-60.336155467152935,-9,51.336155467152935
-47.13042308581905,-33,14.130423085819046
-41.59753707692292,85,126.59753707692292
--46.44746734526197,69,22.55253265473803
--63.651674510819014,91,27.348325489180986
-39.76052024884612,29,68.76052024884612
-95.14251868453229,-43,52.14251868453229
--55.59431331677065,10,-45.59431331677065
--64.24907910773058,16,-48.24907910773058
--79.58726891853016,-46,-125.58726891853016
-81.5647336479868,-86,-4.435266352013201
--95.30872907713648,15,-80.30872907713648
-72.63357316414599,-9,63.633573164145986
--84.72022921114618,34,-50.720229211146176
-48.86500856956951,53,101.86500856956951
--18.79668036231692,41,22.20331963768308
--42.18036565852103,-36,-78.18036565852103
-74.25111628775159,83,157.25111628775159
-24.637548814696288,-84,-59.36245118530371
--17.811736613384085,56,38.188263386615915
--49.73468175103846,-82,-131.73468175103847
-8.798420345141778,41,49.79842034514178
--54.207152538269284,-60,-114.20715253826928
-61.177580936776366,78,139.17758093677637
-37.22526520040071,83,120.22526520040071
--51.34902595883028,-56,-107.34902595883028
--24.089149509279295,16,-8.089149509279295
--91.29930967533878,40,-51.299309675338776
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/DataTypes.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/DataTypes.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/DataTypes.cs	(revision 14875)
@@ -13,9 +13,8 @@
     Code = 0x80,
     Exec = 0x100,
-    IntegerVector = 0x200,
-    FloatVector = 0x400,
-    StringVector = 0x800,
-    Print = 0x1000,
-    FileInput = 0x2000,
+    Print = 0x200,
+    IntegerVector = 0x400,
+    FloatVector = 0x700,
+    StringVector = 0x1000,
   }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Example.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Example.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Example.cs	(revision 14875)
@@ -11,18 +11,30 @@
     private static readonly char[] emptyChars = new char[0];
     private static readonly string[] emptyStrings = new string[0];
+    private static readonly long[][] emptyIntegerVectors = new long[0][];
+    private static readonly double[][] emptyFloatVectors = new double[0][];
+    private static readonly bool[][] emptyBooleanVectors = new bool[0][];
+    private static readonly string[][] emptyStringVectors = new string[0][];
 
 
     public Example() {
-      InputInt = emptyIntegers;
+      this.InputInteger = emptyIntegers;
       InputFloat = emptyFloats;
       InputBoolean = emptyBooleans;
       InputChar = emptyChars;
       InputString = emptyStrings;
+      InputIntegerVector = emptyIntegerVectors;
+      InputFloatVector = emptyFloatVectors;
+      InputBooleanVector = emptyBooleanVectors;
+      InputStringVector = emptyStringVectors;
 
-      OutputInt = emptyIntegers;
+      this.OutputInteger = emptyIntegers;
       OutputFloat = emptyFloats;
       OutputBoolean = emptyBooleans;
       OutputChar = emptyChars;
       OutputString = emptyStrings;
+      OutputIntegerVector = emptyIntegerVectors;
+      OutputFloatVector = emptyFloatVectors;
+      OutputBooleanVector = emptyBooleanVectors;
+      OutputStringVector = emptyStringVectors;
     }
 
@@ -32,14 +44,22 @@
 
       InputBoolean = (bool[])origin.InputBoolean.Clone();
-      InputInt = (long[])origin.InputInt.Clone();
+      InputInteger = (long[])origin.InputInteger.Clone();
       InputFloat = (double[])origin.InputFloat.Clone();
       InputChar = (char[])origin.InputChar.Clone();
       InputString = (string[])origin.InputString.Clone();
+      InputIntegerVector = (long[][])origin.InputIntegerVector.Clone();
+      InputFloatVector = (double[][])origin.InputFloatVector.Clone();
+      InputBooleanVector = (bool[][])origin.InputBooleanVector.Clone();
+      InputStringVector = (string[][])origin.InputStringVector.Clone();
 
       OutputBoolean = (bool[])origin.OutputBoolean.Clone();
-      OutputInt = (long[])origin.OutputInt.Clone();
+      this.OutputInteger = (long[])origin.OutputInteger.Clone();
       OutputFloat = (double[])origin.OutputFloat.Clone();
       OutputChar = (char[])origin.OutputChar.Clone();
       OutputString = (string[])origin.OutputString.Clone();
+      OutputIntegerVector = (long[][])origin.OutputIntegerVector.Clone();
+      OutputFloatVector = (double[][])origin.OutputFloatVector.Clone();
+      OutputBooleanVector = (bool[][])origin.OutputBooleanVector.Clone();
+      OutputStringVector = (string[][])origin.OutputStringVector.Clone();
     }
 
@@ -53,5 +73,5 @@
 
     [Storable]
-    public long[] InputInt { get; set; }
+    public long[] InputInteger { get; set; }
     [Storable]
     public double[] InputFloat { get; set; }
@@ -62,7 +82,15 @@
     [Storable]
     public string[] InputString { get; set; }
+    [Storable]
+    public long[][] InputIntegerVector { get; set; }
+    [Storable]
+    public double[][] InputFloatVector { get; set; }
+    [Storable]
+    public bool[][] InputBooleanVector { get; set; }
+    [Storable]
+    public string[][] InputStringVector { get; set; }
 
     [Storable]
-    public long[] OutputInt { get; set; }
+    public long[] OutputInteger { get; set; }
     [Storable]
     public double[] OutputFloat { get; set; }
@@ -73,4 +101,12 @@
     [Storable]
     public string[] OutputString { get; set; }
+    [Storable]
+    public long[][] OutputIntegerVector { get; set; }
+    [Storable]
+    public double[][] OutputFloatVector { get; set; }
+    [Storable]
+    public bool[][] OutputBooleanVector { get; set; }
+    [Storable]
+    public string[][] OutputStringVector { get; set; }
 
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/ExampleArgumentConverter.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/ExampleArgumentConverter.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/ExampleArgumentConverter.cs	(revision 14875)
@@ -7,6 +7,11 @@
 
   public static class ExampleArgumentConverter {
-    private static readonly char[] ArrayValueSeparator = { ' ', ',', ';' };
+    private static readonly char[] ArrayValueSeparator = { ' ', ';' };
     private static readonly char[] ArraySymbolTrim = { '[', ']', '(', ')' };
+
+    public static double[] ConvertDoubles(string[] input) {
+      return input.Select(ConvertDouble).ToArray();
+    }
+
     public static double[] ConvertDoubles(string input) {
       return ConvertMultiple(input, str => double.Parse(str, CultureInfo.InvariantCulture));
@@ -15,4 +20,8 @@
     public static double ConvertDouble(string input) {
       return double.Parse(input, CultureInfo.InvariantCulture);
+    }
+
+    public static long[] ConvertIntegers(string[] input) {
+      return input.Select(ConvertInteger).ToArray();
     }
 
@@ -24,4 +33,8 @@
 
       return string.IsNullOrEmpty(input) ? default(long) : long.Parse(input);
+    }
+
+    public static string[] ConvertStringVector(string input) {
+      return ConvertMultiple(input, s => s);
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/ExampleArgumentType.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/ExampleArgumentType.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/ExampleArgumentType.cs	(revision 14875)
@@ -2,10 +2,10 @@
   public enum ExampleArgumentType {
     Integer,
-    IntegerCollection,
+    IntegerVector,
     Float,
-    FloatCollection,
-    Bool,
+    FloatVector,
+    Boolean,
     String,
-    StringCollection,
+    StringVector,
     Char,
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/HeuristicLab.BenchmarkSuite.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/HeuristicLab.BenchmarkSuite.csproj	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/HeuristicLab.BenchmarkSuite.csproj	(revision 14875)
@@ -102,8 +102,10 @@
     <Compile Include="BenchmarkSuiteInstanceProvider.cs" />
     <Compile Include="DataTypes.cs" />
+    <Compile Include="Problems\ScrabbleScore.cs" />
     <Compile Include="ExampleArgumentConverter.cs" />
     <Compile Include="IBenchmarkSuiteDataDescriptor.cs" />
     <Compile Include="Plugin.cs" />
-    <Compile Include="Problems\Data.cs" />
+    <Compile Include="Problems\CompareStringLengths.cs" />
+    <Compile Include="Problems\ProblemData.cs" />
     <Compile Include="Example.cs" />
     <Compile Include="ExampleArgumentType.cs" />
@@ -123,4 +125,16 @@
     <Compile Include="Problems\Digits.cs" />
     <Compile Include="Problems\CountOdds.cs" />
+    <Compile Include="Problems\Smallest.cs" />
+    <Compile Include="Problems\SmallOrLarge.cs" />
+    <Compile Include="Problems\StringDifferences.cs" />
+    <Compile Include="Problems\StringLengthsBackwards.cs" />
+    <Compile Include="Problems\SumOfSquares.cs" />
+    <Compile Include="Problems\SuperAnagrams.cs" />
+    <Compile Include="Problems\Syllables.cs" />
+    <Compile Include="Problems\VectorAverage.cs" />
+    <Compile Include="Problems\VectorSummed.cs" />
+    <Compile Include="Problems\WallisPi.cs" />
+    <Compile Include="Problems\WordStats.cs" />
+    <Compile Include="Problems\XWordLines.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Views\ViewHelper.cs" />
@@ -137,4 +151,10 @@
       <DependentUpon>DataEditorView.cs</DependentUpon>
     </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis.Base\HeuristicLab.Problems.ProgramSynthesis.Base.csproj">
+      <Project>{0a60b6ba-8ace-478e-98f3-57441b53b5f9}</Project>
+      <Name>HeuristicLab.Problems.ProgramSynthesis.Base</Name>
+    </ProjectReference>
   </ItemGroup>
   <Choose>
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/IBenchmarkSuiteDataDescriptor.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/IBenchmarkSuiteDataDescriptor.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/IBenchmarkSuiteDataDescriptor.cs	(revision 14875)
@@ -4,5 +4,5 @@
 
   public interface IBenchmarkSuiteDataDescriptor : IDataDescriptor {
-    Data CreateProblemData();
+    ProblemData CreateProblemData();
   }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs	(revision 14875)
@@ -1,31 +1,54 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System;
-//  using System.Text;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class Checksum : BenchmarkSuiteDataDescriptor {
+    private const string name = "Checksum";
+    private const string fileName = "Checksum.csv";
+    private const string description = "Given a string, convert each character in the string into its integer ASCII value, sum them, take the sum modulo 64, add the integer value of the space character, and then convert that integer back into its corresponding character(the checksum character). The program must print Check sum is X, where X is replaced by the correct checksum character.";
 
-//  public class Checksum : BenchmarkSuiteDataDescriptor {
-//    private const string name = "Checksum";
-//    private const string fileName = "Checksum.csv";
-//    private const string description = "";
-//    private readonly ExampleArgumentType[] inputArgumentTypes = { ExampleArgumentType.IntegerCollection };
-//    private readonly ExampleArgumentType[] outputArgumentTypes = { ExampleArgumentType.IntegerCollection };
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string Name { get { return name; } }
-//    protected override string FileName { get { return fileName; } }
-//    public override string Description { get { return description; } }
-//    public override ExampleArgumentType[] InputArgumentTypes { get { return inputArgumentTypes; } }
-//    public override ExampleArgumentType[] OutputArgumentTypes { get { return outputArgumentTypes; } }
-//    public override int OriginalTrainingCount { get { return 228; } }
-//    public override int OriginalTestCount { get { return 1254; } }
-//    public override int BestResult { get { return 0; } }
-//    public override int WorstResult { get { return byte.MaxValue; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = char.MaxValue,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Char },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 800,
+        EvalLimit = 1500,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { 64 },
+            Start = -128,
+            End = 128
+          },
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { ' ' },
+            Start = 0x20,
+            End = 0x7e
+          }
+        }
+      };
+    }
 
-//    public override Example ParseExample(string[] input, string[] output) {
-//      return new Example {
-//        InputArgs = input,
-//        OutputArgs = output,
-//        InputInt = Array.ConvertAll(Encoding.ASCII.GetBytes(input[0]), c => (long)c),
-//        OutputInt = Array.ConvertAll(Encoding.ASCII.GetBytes(output[0]), c => (long)c)
-//      };
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputChar = output[0].ToCharArray(),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs	(revision 14875)
@@ -1,30 +1,50 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
 
-//  public class CollatzNumbers : BenchmarkSuiteDataDescriptor<long[], long[]> {
-//    private const string displayMame = "Collatz Numbers";
-//    private const string description = "";
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+  public class CollatzNumbers : BenchmarkSuiteDataDescriptor {
+    private const string name = "Collatz Numbers";
+    private const string fileName = "CollatzNumbers.csv";
+    private const string description = "Given an integer, find the number of terms in the Collatz(hailstone) sequence starting from that integer.";
 
-//    public override long[] ConvertInput(string[] input) {
-//      return Array.ConvertAll(input, ConvertInteger);
-//    }
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override long[] ConvertOutput(string[] output) {
-//      return Array.ConvertAll(output, ConvertInteger);
-//    }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 300,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 200,
+        TestCount = 2000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Float | DataTypes.Boolean,
+        MaxSize = 600,
+        EvalLimit = 15000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { 0, 1 },
+            Start = -100,
+            End = 100
+          }
+        }
+      };
+    }
 
-//    public override Data CreateData() {
-//      var input = this.GetInput();
-//      var output = this.GetOutput();
-
-//      return new Data(0, double.MaxValue, 0, 0,
-//        inputInt: input,
-//        outputInt: output);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs	(revision 14875)
@@ -0,0 +1,49 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+
+  public class CompareStringLengths : BenchmarkSuiteDataDescriptor {
+    private const string name = "Compare String Lengths";
+    private const string fileName = "CompareStringLengths.csv";
+    private const string description = " Given three strings n1, n2, and n3, return true if length(n1) < length(n2) < length(n3), and false otherwise";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 3; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1,
+        InputArgumentTypes = new[] { ExampleArgumentType.String, ExampleArgumentType.String, ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Boolean },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String,
+        MaxSize = 400,
+        EvalLimit = 600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          BooleanErcOptions = {
+            IsEnabled = true,
+            AllowTrue = true,
+            AllowFalse = true
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputBoolean = ExampleArgumentConverter.ConvertBooleans(output[0])
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 14875)
@@ -1,8 +1,9 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
 
   public class CountOdds : BenchmarkSuiteDataDescriptor {
     private const string name = "Count Odds";
     private const string fileName = "CountOdds.csv";
-    private const string description = "";
+    private const string description = "Given a vector of integers, return the number of integers that are odd, without use of a specific even or odd instruction(but allowing instructions such as mod and quotient)";
 
     protected override string FileName { get { return fileName; } }
@@ -12,6 +13,6 @@
     protected override int OutputArgumentCount { get { return 1; } }
 
-    public override Data CreateProblemData() {
-      return new Data {
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
         Name = Name,
         Description = Description,
@@ -19,11 +20,20 @@
         BestResult = 0,
         WorstResult = 50,
-        InputArgumentTypes = new[] { ExampleArgumentType.IntegerCollection },
+        InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
-        OriginalTestCount = 2000,
-        OriginalTrainingCount = 200,
+        TestCount = 2000,
+        TrainingCount = 200,
         EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        MaxSize = 500,
         EvalLimit = 1500,
-        MaxSize = 500,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { 0, 1, 2},
+            Start = -1000,
+            End = 1000
+          }
+        }
       };
     }
@@ -33,6 +43,6 @@
         InputArgs = input,
         OutputArgs = output,
-        InputInt = ExampleArgumentConverter.ConvertIntegers(input[0]),
-        OutputInt = ExampleArgumentConverter.ConvertIntegers(output[0])
+        InputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(input[0]) },
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0])
       };
     }
Index: anches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs	(revision 14874)
+++ 	(revision )
@@ -1,66 +1,0 @@
-﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using System.Linq;
-
-  using HeuristicLab.Common;
-  using HeuristicLab.Core;
-  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-  [StorableClass]
-  public class Data : NamedItem {
-
-    public Data() { }
-
-    [StorableConstructor]
-    protected Data(bool deserializing) : base(deserializing) { }
-
-    public Data(Data origin, Cloner cloner) : base(origin, cloner) {
-      OriginalTrainingCount = origin.OriginalTrainingCount;
-      OriginalTestCount = origin.OriginalTestCount;
-      BestResult = origin.BestResult;
-      WorstResult = origin.WorstResult;
-      InputArgumentTypes = origin.InputArgumentTypes;
-      OutputArgumentTypes = origin.OutputArgumentTypes;
-
-      if (origin.Examples != null)
-        Examples = origin.Examples.Select(e => (Example)e.Clone(cloner)).ToArray();
-
-      EnabledDataTypes = origin.EnabledDataTypes;
-    }
-
-    [Storable]
-    public int OriginalTrainingCount { get; set; }
-    [Storable]
-    public int OriginalTestCount { get; set; }
-    [Storable]
-    public double BestResult { get; set; }
-    [Storable]
-    public double WorstResult { get; set; }
-    [Storable]
-    public ExampleArgumentType[] InputArgumentTypes { get; set; }
-    [Storable]
-    public ExampleArgumentType[] OutputArgumentTypes { get; set; }
-    public int TotalArgumentCount { get { return InputArgumentTypes.Length + OutputArgumentTypes.Length; } }
-    [Storable]
-    public Example[] Examples { get; set; }
-    [Storable]
-    public DataTypes EnabledDataTypes { get; set; }
-
-    /// <summary>
-    /// Max Size” gives the maximum number of instructions that can appear in an individual’s genome
-    /// </summary>
-    [Storable]
-    public int MaxSize { get; set; }
-
-    /// <summary>
-    /// “Eval Limit” is the number of steps of the Push interpreter that are executed before stopping a
-    /// program’s execution; programs halted in this way may still achieve good results if they print or
-    /// return results before they are stopped
-    /// </summary>
-    [Storable]
-    public int EvalLimit { get; set; }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Data(this, cloner);
-    }
-  }
-}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs	(revision 14875)
@@ -1,26 +1,51 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class Digits : BenchmarkSuiteDataDescriptor {
+    private const string name = "Digits";
+    private const string fileName = "Digits.csv";
+    private const string description = "Given an integer, print that integer’s digits each on their own line starting with the least significant digit.A negative integer should have the negative sign printed before the most significant digit.";
 
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//  public class Digits : BenchmarkSuiteDataDescriptor<long, long[]> {
-//    private const string displayMame = "Digits";
-//    private const string description = "";
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 20,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 300,
+        EvalLimit = 600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -10,
+            End = 10
+          },
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { '\r' },
+          }
+        }
+      };
+    }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
-
-//    public override long ConvertInput(string[] input) {
-//      return ConvertInteger(input[0]);
-//    }
-
-//    public override long[] ConvertOutput(string[] output) {
-//      return SplitByNewLine(output[0])
-//        .Select(ConvertInteger)
-//        .ToArray();
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs	(revision 14875)
@@ -1,25 +1,48 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
 
-//  public class DoubleLetters : BenchmarkSuiteDataDescriptor<string, string> {
-//    private const string displayMame = "Double Letters";
-//    private const string description = "";
+  public class DoubleLetters : BenchmarkSuiteDataDescriptor {
+    private const string name = "Double Letters";
+    private const string fileName = "DoubleLetters.csv";
+    private const string description = "Given a string, print the string, doubling every letter character, and tripling every exclamation point.All other non-alphabetic and non-exclamation characters should be printed a single time each";
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string ConvertInput(string[] input) {
-//      return input[0];
-//    }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.Char,
+        MaxSize = 800,
+        EvalLimit = 1600,
+        ErcOptions = {
+          ErcProbability = 0.02,
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { '!' }
+          }
+        }
+      };
+    }
 
-//    public override string ConvertOutput(string[] output) {
-//      return output[0];
-//    }
-
-//    public override IPushData CreatePushData(Example<string, string>[] training, Example<string, string>[] test) {
-//      return new DoubleLettersPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs	(revision 14875)
@@ -1,30 +1,39 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class EvenSquares : BenchmarkSuiteDataDescriptor {
+    private const string name = "Even Sqaures";
+    private const string fileName = "EvenSquares.csv";
+    private const string description = " Given an integer n, print all of the positive even perfect squares less than n on separate lines.";
 
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//  public class EvenSquares : BenchmarkSuiteDataDescriptor<long, long[]> {
-//    private const string displayMame = "Even Squares";
-//    private const string description = "";
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 400,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean,
+        MaxSize = 400,
+        EvalLimit = 2000,
+      };
+    }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
-
-//    public override long ConvertInput(string[] input) {
-//      return ConvertInteger(input[0]);
-//    }
-
-//    public override long[] ConvertOutput(string[] output) {
-//      return SplitByNewLine(output[0])
-//        .Select(ConvertInteger)
-//        .ToArray();
-//    }
-
-//    public override IPushData CreatePushData(Example<long, long[]>[] training, Example<long, long[]>[] test) {
-//      return new EvenSquaresPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs	(revision 14875)
@@ -1,30 +1,43 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class ForLoopIndex : BenchmarkSuiteDataDescriptor {
+    private const string name = "For Loop Index";
+    private const string fileName = "ForLoopIndex.csv";
+    private const string description = "Given 3 integer inputs start,end, and step, print the integers in the sequence n|0 = start, n|i = n|i−1 + step for each n|i < end, each on their own line.";
 
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+    protected override string FileName { get { return fileName; } }
 
-//  public class ForLoopIndex : BenchmarkSuiteDataDescriptor<long[], long[]> {
-//    private const string displayMame = "For Loop Index";
-//    private const string description = "";
+    public override string Name { get { return name; } }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
+    public override string Description { get { return description; } }
 
-//    protected override int InputArgumentCount { get { return 3; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+    protected override int InputArgumentCount { get { return 3; } }
 
-//    public override long[] ConvertInput(string[] input) {
-//      return input.Select(ConvertInteger).ToArray();
-//    }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override long[] ConvertOutput(string[] output) {
-//      return SplitByNewLine(output[0])
-//        .Select(ConvertInteger)
-//        .ToArray();
-//    }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1000,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        MaxSize = 300,
+        EvalLimit = 600,
+      };
+    }
 
-//    public override IPushData CreatePushData(Example<long[], long[]>[] training, Example<long[], long[]>[] test) {
-//      return new ForLoopIndexPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(output[0]) }
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs	(revision 14875)
@@ -1,26 +1,51 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class Grades : BenchmarkSuiteDataDescriptor {
+    private const string name = "Grades";
+    private const string fileName = "Grades.csv";
+    private const string description = "Given 5 integers, the first four represent the lower numeric thresholds for achieving an A, B, C, and D, and will be distinct and in descending order.The fifth represents the student’s numeric grade.The program must print Student has a X grade., where X is A, B, C, D, or F depending on the thresholds and the numeric grade.";
 
-//  public class Grades : BenchmarkSuiteDataDescriptor<long[], string> {
-//    private const string displayMame = "Checksum";
-//    private const string description = "";
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 5; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-//    protected override int InputArgumentCount { get { return 5; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 25,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 200,
+        TestCount = 2000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String,
+        MaxSize = 400,
+        EvalLimit = 800,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = 0,
+            End = 100
+          },
+          StringErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { "Student has a ", " grade", "A", "B", "C", "D", "F" },
+          }
+        }
+      };
+    }
 
-//    public override long[] ConvertInput(string[] input) {
-//      return input.Select(ConvertInteger).ToArray();
-//    }
-
-//    public override string ConvertOutput(string[] output) {
-//      return output[0];
-//    }
-
-//    public override IPushData CreatePushData(Example<long[], string>[] training, Example<long[], string>[] test) {
-//      return new GradePushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs	(revision 14875)
@@ -1,26 +1,50 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
 
-//  public class LastIndexOfZero : BenchmarkSuiteDataDescriptor<long[], long> {
-//    private const string displayMame = "Last Index of Zero";
-//    private const string description = "";
+  public class LastIndexOfZero : BenchmarkSuiteDataDescriptor {
+    private const string name = "Last Index of Zero";
+    private const string fileName = "LastIndexOfZero.csv";
+    private const string description = "Given a vector of integers, at least one of which is 0, return the index of the last occurrence of 0 in the vector.";
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 50,
+        InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 150,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        MaxSize = 300,
+        EvalLimit = 600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { 0 },
+            Start = -50,
+            End = 50
+          }
+        }
+      };
+    }
 
-//    public override long[] ConvertInput(string[] input) {
-//      return ConvertIntegers(input[0]);
-//    }
-
-//    public override long ConvertOutput(string[] output) {
-//      return ConvertInteger(output[0]);
-//    }
-
-//    public override IPushData CreatePushData(Example<long[], long>[] training, Example<long[], long>[] test) {
-//      return new LastIndexOfZeroPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(input[0]) },
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs	(revision 14875)
@@ -1,28 +1,47 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class Median : BenchmarkSuiteDataDescriptor {
+    private const string name = "Median";
+    private const string fileName = "Median.csv";
+    private const string description = "Given 3 integers, print their median.";
 
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 3; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//  public class Median : BenchmarkSuiteDataDescriptor<long[], long> {
-//    private const string displayMame = "Median";
-//    private const string description = "";
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean,
+        MaxSize = 200,
+        EvalLimit = 200,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -100,
+            End = 100
+          }
+        }
+      };
+    }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-
-//    protected override int InputArgumentCount { get { return 3; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
-
-//    public override long[] ConvertInput(string[] input) {
-//      return input.Select(ConvertInteger).ToArray();
-//    }
-
-//    public override long ConvertOutput(string[] output) {
-//      return ConvertInteger(output[0]);
-//    }
-
-//    public override IPushData CreatePushData(Example<long[], long>[] training, Example<long[], long>[] test) {
-//      return new MedianPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 14875)
@@ -1,28 +1,51 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
 
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+  public class MirrorImage : BenchmarkSuiteDataDescriptor {
+    private const string name = "Mirror Image";
+    private const string fileName = "MirrorImage.csv";
+    private const string description = "Given two vectors of integers, return true if one vector is the reverse of the other, and false otherwise.";
 
-//  public class MirrorImage : BenchmarkSuiteDataDescriptor<long[][], bool> {
-//    private const string displayMame = "Mirror Image";
-//    private const string description = "Given two vectors of integers, return true if one vector is the reverse of the other, and false otherwise";
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 2; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1,
+        InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector, ExampleArgumentType.IntegerVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Boolean },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        MaxSize = 300,
+        EvalLimit = 600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          BooleanErcOptions = {
+            IsEnabled = true,
+            AllowFalse = true,
+            AllowTrue = true
+          }
+        }
+      };
+    }
 
-//    protected override int InputArgumentCount { get { return 2; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
-
-//    public override long[][] ConvertInput(string[] input) {
-//      return input.Select(ConvertIntegers).ToArray();
-//    }
-
-//    public override bool ConvertOutput(string[] output) {
-//      return ConvertBool(output[0]);
-//    }
-
-//    public override IPushData CreatePushData(Example<long[][], bool>[] training, Example<long[][], bool>[] test) {
-//      return new MirrorImagePushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputIntegerVector = new[] {
+          ExampleArgumentConverter.ConvertIntegers(input[0]),
+          ExampleArgumentConverter.ConvertIntegers(input[1])
+        },
+        OutputBoolean = ExampleArgumentConverter.ConvertBooleans(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs	(revision 14875)
@@ -1,26 +1,50 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class NegativeToZero : BenchmarkSuiteDataDescriptor {
+    private const string name = "Negative to Zero";
+    private const string fileName = "NegativeToZero.csv";
+    private const string description = "Given a vector of integers, return the vector where all negative integers have been replaced by 0.";
 
-//  public class NegativeToZero : BenchmarkSuiteDataDescriptor<long[], long[]> {
-//    private const string displayMame = "Negative To Zero";
-//    private const string description = "Given a vector of integers, return the vector where all negative integers have been replaced by 0.";
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 50000,
+        InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
+        TrainingCount = 200,
+        TestCount = 2000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        MaxSize = 500,
+        EvalLimit = 1500,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { 0 }
+          },
+          IntegerVectorErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { new int[0] }
+          }
+        }
+      };
+    }
 
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
-
-//    public override long[] ConvertInput(string[] input) {
-//      return ConvertIntegers(input[0]);
-//    }
-
-//    public override long[] ConvertOutput(string[] output) {
-//      return ConvertIntegers(output[0]);
-//    }
-
-//    public override IPushData CreatePushData(Example<long[], long[]>[] training, Example<long[], long[]>[] test) {
-//      return new NegativeToZeroPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(input[0]) },
+        OutputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(output[0]) },
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 14875)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+
   public class NumberIO : BenchmarkSuiteDataDescriptor {
     private const string name = "NumberIO";
@@ -11,6 +13,6 @@
     protected override int OutputArgumentCount { get { return 1; } }
 
-    public override Data CreateProblemData() {
-      return new Data {
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
         Name = Name,
         Description = Description,
@@ -20,9 +22,22 @@
         InputArgumentTypes = new[] { ExampleArgumentType.Float, ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Float },
-        OriginalTrainingCount = 25,
-        OriginalTestCount = 1000,
+        TrainingCount = 25,
+        TestCount = 1000,
         EnabledDataTypes = DataTypes.Integer | DataTypes.Float,
         EvalLimit = 200,
         MaxSize = 200,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -100,
+            End = 100
+          },
+          FloatErcOptions = {
+            IsEnabled = true,
+            Start = -100.0,
+            End = 100.0
+          }
+        }
       };
     }
@@ -33,5 +48,5 @@
         OutputArgs = output,
         InputFloat = ExampleArgumentConverter.ConvertDoubles(input[0]),
-        InputInt = ExampleArgumentConverter.ConvertIntegers(input[1]),
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[1]),
         OutputFloat = ExampleArgumentConverter.ConvertDoubles(output[0])
       };
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 14875)
@@ -1,25 +1,56 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class PigLatin : BenchmarkSuiteDataDescriptor {
+    private const string name = "Pig Latin";
+    private const string fileName = "PigLatin.csv";
+    private const string description = "Given a string containing lowercase words separated by single spaces, print the string with each word translated to pig Latin.Specifically, if a word starts with a vowel, it should have“ay”added to its end; otherwise, the first letter is moved to the end of the word, followed by “ay”.";
 
-//  public class PigLatin : BenchmarkSuiteDataDescriptor<string, string> {
-//    private const string displayMame = "Pig Latin";
-//    private const string description = "Given a string containing lowercase words separated by single spaces, print the string with each word translated to pig Latin.Specifically, if a word starts with a vowel, it should have“ay”added to its end; otherwise, the first letter is moved to the end of the word, followed by “ay”";
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 200,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 1000,
+        EvalLimit = 2000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { ' ', 'a', 'e', 'i', 'o', 'u' },
+            Start = 0x20,
+            End = 0x7e
+          },
+          StringErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { "ay", "aeiou" },
+            AllowLowercaseLetters = true,
+            AllowUppercaseLetters = false,
+            AllowSpace = true,
+            SpaceProbability = 0.2,
+          }
+        }
+      };
+    }
 
-//    public override string ConvertInput(string[] input) {
-//      return input[0];
-//    }
-
-//    public override string ConvertOutput(string[] output) {
-//      return output[0];
-//    }
-
-//    public override IPushData CreatePushData(Example<string, string>[] training, Example<string, string>[] test) {
-//      return new PigLatinPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ProblemData.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ProblemData.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ProblemData.cs	(revision 14875)
@@ -0,0 +1,75 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using System.Linq;
+  using Common;
+  using Core;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using Persistence.Default.CompositeSerializers.Storable;
+
+  [StorableClass]
+  public class ProblemData : NamedItem {
+
+    public ProblemData() {
+      ErcOptions = new ErcOptions(); // default does nothing
+    }
+
+    [StorableConstructor]
+    protected ProblemData(bool deserializing) : base(deserializing) { }
+
+    public ProblemData(ProblemData origin, Cloner cloner) : base(origin, cloner) {
+      TrainingCount = origin.TrainingCount;
+      TestCount = origin.TestCount;
+      BestResult = origin.BestResult;
+      WorstResult = origin.WorstResult;
+      InputArgumentTypes = origin.InputArgumentTypes;
+      OutputArgumentTypes = origin.OutputArgumentTypes;
+
+      if (origin.Examples != null)
+        Examples = origin.Examples.Select(cloner.Clone).ToArray();
+
+      EnabledDataTypes = origin.EnabledDataTypes;
+      ErcOptions = cloner.Clone(origin.ErcOptions);
+    }
+
+    [Storable]
+    public int TrainingCount { get; set; }
+    [Storable]
+    public int TestCount { get; set; }
+    [Storable]
+    public double BestResult { get; set; }
+    [Storable]
+    public double WorstResult { get; set; }
+    [Storable]
+    public ExampleArgumentType[] InputArgumentTypes { get; set; }
+    [Storable]
+    public ExampleArgumentType[] OutputArgumentTypes { get; set; }
+    public int TotalArgumentCount { get { return InputArgumentTypes.Length + OutputArgumentTypes.Length; } }
+    [Storable]
+    public Example[] Examples { get; set; }
+    [Storable]
+    public DataTypes EnabledDataTypes { get; set; }
+
+    /// <summary>
+    /// Max Size” gives the maximum number of instructions that can appear in an individual’s genome
+    /// </summary>
+    [Storable]
+    public int MaxSize { get; set; }
+
+    /// <summary>
+    /// “Eval Limit” is the number of steps of the Push interpreter that are executed before stopping a
+    /// program’s execution; programs halted in this way may still achieve good results if they print or
+    /// return results before they are stopped
+    /// </summary>
+    [Storable]
+    public int EvalLimit { get; set; }
+
+    /// <summary>
+    /// Specifies constant values and value ranges required to solve a certain problem
+    /// </summary>
+    [Storable]
+    public ErcOptions ErcOptions { get; set; }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ProblemData(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs	(revision 14875)
@@ -1,25 +1,58 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
 
-//  public class ReplaceSpaceWithNewline : BenchmarkSuiteDataDescriptor<string, string[]> {
-//    private const string displayMame = "Replace Space with Newline";
-//    private const string description = "Given a string input, print the string, replacing spaces with newlines.Also, return the integer count of the non- whitespace characters. The input string will not have tabs or newlines.";
+  public class ReplaceSpaceWithNewline : BenchmarkSuiteDataDescriptor {
+    private const string name = "Replace Space with Newline";
+    private const string fileName = "ReplaceSpaceWithNewline.csv";
+    private const string description = " Given a string input, print the string, replacing spaces with newlines.Also, return the integer count of the non- whitespace characters. The input string will not have tabs or newlines.";
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 2; } }
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 2; } }
 
-//    public override string ConvertInput(string[] input) {
-//      return input[0];
-//    }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 20,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String, ExampleArgumentType.Integer },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 800,
+        EvalLimit = 1600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { ' ', '\r' },
+            Start = 0x20,
+            End = 0x7e
+          },
+          StringErcOptions = {
+            IsEnabled = true,
+            AllowLowercaseLetters = true,
+            AllowUppercaseLetters = false,
+            AllowSpace = true,
+            SpaceProbability = 0.2
+          }
+        }
+      };
+    }
 
-//    public override string[] ConvertOutput(string[] output) {
-//      return output;
-//    }
-
-//    public override IPushData CreatePushData(Example<string, string[]>[] training, Example<string, string[]>[] test) {
-//      return new ReplaceSpaceWithNewlinePushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputString = new[] { output[0] },
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[1]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs	(revision 14875)
@@ -0,0 +1,81 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+
+  public class ScrabbleScore : BenchmarkSuiteDataDescriptor {
+    private const string name = "Scrabble Score";
+    private const string fileName = "ScrabbleScore.csv";
+    private const string description = "Given a string of visible ASCII characters, return the Scrabble score for that string. Each letter has a corresponding value according to normal Scrabble rules, and non-letter characters are worth zero.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    //vector containing Scrabble values (indexed by ASCII values)
+    private static readonly int[] ScrabbleValues = {
+      1, // A
+      3, // B
+      3, // C
+      2, // D
+      1, // E
+      4, // F
+      2, // G
+      4, // H
+      1, // I
+      8, // J
+      5, // K
+      1, // L
+      3, // M
+      1, // N
+      1, // O
+      3, // P
+     10, // Q
+      1, // R
+      1, // S
+      1, // T
+      1, // U
+      4, // V
+      4, // W
+      8, // X
+      4, // Y
+     10, // Z
+    };
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 500,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 200,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.IntegerVector,
+        MaxSize = 1000,
+        EvalLimit = 2000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Constants = ScrabbleValues
+          },
+          IntegerVectorErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { ScrabbleValues }
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(output[0]) }
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs	(revision 14875)
@@ -0,0 +1,52 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class SmallOrLarge : BenchmarkSuiteDataDescriptor {
+    private const string name = "Small or Large";
+    private const string fileName = "SmallOrLarge.csv";
+    private const string description =
+      "Given an integer n, print “small” if n < 1000 and “large” if n ≥ 2000 (and nothing if 1000 ≤ n < 2000).";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 5,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String,
+        MaxSize = 200,
+        EvalLimit = 300,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -10000,
+            End = 10000
+          },
+          StringErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { "small", "large" }
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
+        OutputString = output
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs	(revision 14875)
@@ -0,0 +1,47 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class Smallest : BenchmarkSuiteDataDescriptor {
+    private const string name = "Smallest";
+    private const string fileName = "Smallest.csv";
+    private const string description = "Given 4 integers, print the smallest of them.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 4; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean,
+        MaxSize = 200,
+        EvalLimit = 200,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -100,
+            End = 100
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs	(revision 14875)
@@ -0,0 +1,53 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+
+  public class StringDifferences : BenchmarkSuiteDataDescriptor {
+    private const string name = "String Differences";
+    private const string fileName = "StringDifferences.csv";
+    private const string description = "Given 2 strings (without whitespace) as input, find the indices at which the strings have different characters, stopping at the end of the shorter one.For each such index, print a line containing the index as well as the character in each string. For example, if the strings are “dealer” and “dollars”, the program should print: 1 e o, 2 a l, 4 e a";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 2; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.String, ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 200,
+        TestCount = 2000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 1000,
+        EvalLimit = 2000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { ' ', '\r' },
+          },
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -10,
+            End = 10
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs	(revision 14875)
@@ -0,0 +1,49 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+
+  public class StringLengthsBackwards : BenchmarkSuiteDataDescriptor {
+    private const string name = "String Length Backwards";
+    private const string fileName = "StringLengthBackwards.csv";
+    private const string description = "Given a vector of strings, print the length of each string in the vector starting with the last and ending with the first.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 200,
+        InputArgumentTypes = new[] { ExampleArgumentType.StringVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.StringVector,
+        MaxSize = 300,
+        EvalLimit = 600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -100,
+            End = 100
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputStringVector = new[] { ExampleArgumentConverter.ConvertStringVector(input[0]) },
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs	(revision 14875)
@@ -0,0 +1,47 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class SumOfSquares : BenchmarkSuiteDataDescriptor {
+    private const string name = "Sum of Squares";
+    private const string fileName = "SumOfSquares.csv";
+    private const string description = "Given integer n, return the sum of squaring each integer in the range[1, n].";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 338350,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 50,
+        TestCount = 100,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean,
+        MaxSize = 400,
+        EvalLimit = 4000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -100,
+            End = 100
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs	(revision 14875)
@@ -0,0 +1,57 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class SuperAnagrams : BenchmarkSuiteDataDescriptor {
+    private const string name = "Super Anagrams";
+    private const string fileName = "SuperAnagrams.csv";
+    private const string description = "Given strings x and y of lowercase letters, return true if y is a super anagram of x, which is the case if every character in x is in y.To be true, y may contain extra characters, but must have at least as many copies of each character as x does.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 2; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1,
+        InputArgumentTypes = new[] { ExampleArgumentType.String, ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Boolean },
+        TrainingCount = 200,
+        TestCount = 2000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 800,
+        EvalLimit = 1600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          BooleanErcOptions = {
+            IsEnabled = true,
+            AllowFalse = true,
+            AllowTrue = true
+          },
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -1000,
+            End = 1000
+          },
+          CharErcOptions = {
+            IsEnabled = true,
+            Start = 0x20,
+            End = 0x7e
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputBoolean = ExampleArgumentConverter.ConvertBooleans(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs	(revision 14875)
@@ -0,0 +1,59 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class Syllables : BenchmarkSuiteDataDescriptor {
+    private const string name = "Syllables";
+    private const string fileName = "Syllables.csv";
+    private const string description = "Given a string containing symbols, spaces, digits, and lowercase letters, count the number of occurrences of vowels(a, e, i, o, u, y) in the string and print that number as X in The number of syllables is X.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 800,
+        EvalLimit = 1600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          StringErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { "The number of syllables is ", "aeiouy" },
+            AllowLowercaseLetters = true,
+            AllowUppercaseLetters = false,
+            AllowDigits = true,
+            AllowSymbols = true,
+            AllowSpace = true,
+            SpaceProbability = 0.2,
+            VowelProbability = 0.2
+          },
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { 'a', 'e', 'i', 'o', 'u' },
+            Start = 0x20,
+            End = 0x7e
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs	(revision 14875)
@@ -0,0 +1,39 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class VectorAverage : BenchmarkSuiteDataDescriptor {
+    private const string name = "Vector Average";
+    private const string fileName = "VectorAverage.csv";
+    private const string description = "Given a vector of floats, return the average of those floats. Results are rounded to 4 decimal places.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1000,
+        InputArgumentTypes = new[] { ExampleArgumentType.FloatVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Float },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Float | DataTypes.FloatVector,
+        MaxSize = 400,
+        EvalLimit = 800,
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputFloatVector = new[] { ExampleArgumentConverter.ConvertDoubles(input[0]) },
+        OutputFloat = ExampleArgumentConverter.ConvertDoubles(output[0]),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs	(revision 14875)
@@ -0,0 +1,54 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class VectorSummed : BenchmarkSuiteDataDescriptor {
+    private const string name = "Vector Summed";
+    private const string fileName = "VectorSummed.csv";
+    private const string description = "Given two equal-sized vectors of integers, return a vector of integers that contains the sum of the input vectors at each index.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 2; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100000,
+        InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector, ExampleArgumentType.IntegerVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
+        TrainingCount = 150,
+        TestCount = 1500,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.IntegerVector,
+        MaxSize = 400,
+        EvalLimit = 4000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerVectorErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { new int[0] }
+          },
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -1000,
+            End = 1000
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputIntegerVector = new[] {
+          ExampleArgumentConverter.ConvertIntegers(input[0]),
+          ExampleArgumentConverter.ConvertIntegers(input[1]),
+        },
+        OutputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(output[0]) },
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs	(revision 14875)
@@ -0,0 +1,52 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class WallisPi : BenchmarkSuiteDataDescriptor {
+    private const string name = "Wallis Pi";
+    private const string fileName = "WallisPi.csv";
+    private const string description = " John Wallis gave a infinite product that converges to π/4. Given an integer input n, compute an approximation of this product out to n terms.Results are rounded to 5 decimal place";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Float },
+        TrainingCount = 150,
+        TestCount = 50,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Float | DataTypes.Boolean,
+        MaxSize = 600,
+        EvalLimit = 8000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          FloatErcOptions = {
+            IsEnabled = true,
+            Start = -500,
+            End = 500,
+          },
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = -500,
+            End = 500
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputFloat = ExampleArgumentConverter.ConvertDoubles(output),
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs	(revision 14875)
@@ -0,0 +1,59 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class WordStats : BenchmarkSuiteDataDescriptor {
+    private const string name = "Word Stats";
+    private const string fileName = "WordStats.csv";
+    private const string description = "Given a string, print the number of words containing n characters for n from 1 to the length of the longest word. At the end of the output, print a line that gives the number of sentences and line that gives the average sentence length. A word is any string of consecutive non-whitespace characters(including sentence terminators). Every string will contain at least one sentence terminator(period, exclamation point, or question mark). The average sentence length is the number of words in the file divided by the number of sentence terminator characters.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 1000,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 100,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Float | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.IntegerVector | DataTypes.FloatVector | DataTypes.StringVector,
+        MaxSize = 1000,
+        EvalLimit = 6000,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          IntegerErcOptions = {
+            IsEnabled = true,
+            Start = 100,
+            End = 100
+          },
+          IntegerVectorErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { new int[0] }
+          },
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { '.', '?', '!', ' ', '\t', '\r', ':' }
+          },
+          StringErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { "words of length ", ": ", "number of sentences: ", "average sentence length: " }
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs	(revision 14875)
@@ -0,0 +1,47 @@
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class XWordLines : BenchmarkSuiteDataDescriptor {
+    private const string name = "X-Word Lines";
+    private const string fileName = "XWordLines.csv";
+    private const string description = "Given an integer X and a string that can contain spaces and newlines, print the string with exactly X words per line.The last line may have fewer than X words.";
+
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 2; } }
+    protected override int OutputArgumentCount { get { return 1; } }
+
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 150,
+        TestCount = 2000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        MaxSize = 800,
+        EvalLimit = 1600,
+        ErcOptions = {
+          ErcProbability = 0.05,
+          CharErcOptions = {
+            IsEnabled = true,
+            Constants = new [] { ' ', '\r' }
+          }
+        }
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
+        InputString = new[] { input[1] },
+        OutputString = output,
+      };
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Views/DataEditorView.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Views/DataEditorView.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Views/DataEditorView.cs	(revision 14875)
@@ -8,5 +8,5 @@
 
   [View("Push Expression Selection Editor")]
-  [Content(typeof(Data), true)]
+  [Content(typeof(ProblemData), true)]
   public partial class DataEditorView : NamedItemView {
     private const string ValueSeparator = ", ";
@@ -58,15 +58,15 @@
 
         switch (type) {
-          case ExampleArgumentType.Bool:
+          case ExampleArgumentType.Boolean:
             example.InputBoolean = new[] { ExampleArgumentConverter.ConvertBoolean(arg) };
             example.InputArgs[i] = arg;
             break;
           case ExampleArgumentType.Integer:
-            example.InputInt = new[] { ExampleArgumentConverter.ConvertInteger(arg) };
+            example.InputInteger = new[] { ExampleArgumentConverter.ConvertInteger(arg) };
             example.InputArgs[i] = arg;
             break;
-          case ExampleArgumentType.IntegerCollection:
-            example.InputInt = ExampleArgumentConverter.ConvertIntegers(arg);
-            example.InputArgs[i] = string.Join(ValueSeparator, example.InputInt);
+          case ExampleArgumentType.IntegerVector:
+            example.InputInteger = ExampleArgumentConverter.ConvertIntegers(arg);
+            example.InputArgs[i] = string.Join(ValueSeparator, example.InputInteger);
             break;
           case ExampleArgumentType.Float:
@@ -74,5 +74,5 @@
             example.InputArgs[i] = arg;
             break;
-          case ExampleArgumentType.FloatCollection:
+          case ExampleArgumentType.FloatVector:
             example.InputFloat = ExampleArgumentConverter.ConvertDoubles(arg);
             example.InputArgs[i] = string.Join(ValueSeparator, example.InputFloat);
@@ -87,15 +87,15 @@
 
         switch (type) {
-          case ExampleArgumentType.Bool:
+          case ExampleArgumentType.Boolean:
             example.OutputBoolean = new[] { ExampleArgumentConverter.ConvertBoolean(arg) };
             example.OutputArgs[i] = arg;
             break;
           case ExampleArgumentType.Integer:
-            example.OutputInt = new[] { ExampleArgumentConverter.ConvertInteger(arg) };
+            example.OutputInteger = new[] { ExampleArgumentConverter.ConvertInteger(arg) };
             example.OutputArgs[i] = arg;
             break;
-          case ExampleArgumentType.IntegerCollection:
-            example.OutputInt = ExampleArgumentConverter.ConvertIntegers(arg);
-            example.OutputArgs[i] = string.Join(ValueSeparator, example.OutputInt);
+          case ExampleArgumentType.IntegerVector:
+            example.OutputInteger = ExampleArgumentConverter.ConvertIntegers(arg);
+            example.OutputArgs[i] = string.Join(ValueSeparator, example.OutputInteger);
             break;
           case ExampleArgumentType.Float:
@@ -103,5 +103,5 @@
             example.OutputArgs[i] = arg;
             break;
-          case ExampleArgumentType.FloatCollection:
+          case ExampleArgumentType.FloatVector:
             example.OutputFloat = ExampleArgumentConverter.ConvertDoubles(arg);
             example.OutputArgs[i] = string.Join(ValueSeparator, example.OutputFloat);
@@ -113,7 +113,7 @@
     }
 
-    public new Data Content
+    public new ProblemData Content
     {
-      get { return (Data)base.Content; }
+      get { return (ProblemData)base.Content; }
       set
       {
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Views/ViewHelper.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Views/ViewHelper.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Views/ViewHelper.cs	(revision 14875)
@@ -4,14 +4,14 @@
       switch (type) {
         case ExampleArgumentType.Integer:
-        case ExampleArgumentType.IntegerCollection: return string.Join(valueSeparator, example.InputInt);
+        case ExampleArgumentType.IntegerVector: return string.Join(valueSeparator, example.InputInteger);
 
         case ExampleArgumentType.Float:
-        case ExampleArgumentType.FloatCollection: return string.Join(valueSeparator, example.InputFloat);
+        case ExampleArgumentType.FloatVector: return string.Join(valueSeparator, example.InputFloat);
 
-        case ExampleArgumentType.Bool: return string.Join(valueSeparator, example.InputBoolean);
+        case ExampleArgumentType.Boolean: return string.Join(valueSeparator, example.InputBoolean);
         case ExampleArgumentType.Char: return string.Join(valueSeparator, example.InputChar);
 
         case ExampleArgumentType.String:
-        case ExampleArgumentType.StringCollection: return string.Join(valueSeparator, example.InputString);
+        case ExampleArgumentType.StringVector: return string.Join(valueSeparator, example.InputString);
         default: return string.Empty;
       }
@@ -21,14 +21,14 @@
       switch (type) {
         case ExampleArgumentType.Integer:
-        case ExampleArgumentType.IntegerCollection: return string.Join(valueSeparator, example.OutputInt);
+        case ExampleArgumentType.IntegerVector: return string.Join(valueSeparator, example.OutputInteger);
 
         case ExampleArgumentType.Float:
-        case ExampleArgumentType.FloatCollection: return string.Join(valueSeparator, example.OutputFloat);
+        case ExampleArgumentType.FloatVector: return string.Join(valueSeparator, example.OutputFloat);
 
-        case ExampleArgumentType.Bool: return string.Join(valueSeparator, example.OutputBoolean);
+        case ExampleArgumentType.Boolean: return string.Join(valueSeparator, example.OutputBoolean);
         case ExampleArgumentType.Char: return string.Join(valueSeparator, example.OutputChar);
 
         case ExampleArgumentType.String:
-        case ExampleArgumentType.StringCollection: return string.Join(valueSeparator, example.OutputString);
+        case ExampleArgumentType.StringVector: return string.Join(valueSeparator, example.OutputString);
         default: return string.Empty;
       }
@@ -47,10 +47,10 @@
         case ExampleArgumentType.Integer: return IntegerColumnHeader;
         case ExampleArgumentType.Float: return DoubleColumnHeader;
-        case ExampleArgumentType.Bool: return BooleanColumnHeader;
+        case ExampleArgumentType.Boolean: return BooleanColumnHeader;
         case ExampleArgumentType.Char: return CharColumnHeader;
         case ExampleArgumentType.String: return StringColumnHeader;
-        case ExampleArgumentType.IntegerCollection: return IntegersColumnHeader;
-        case ExampleArgumentType.FloatCollection: return DoublesColumnHeader;
-        case ExampleArgumentType.StringCollection: return StringsColumnHeader;
+        case ExampleArgumentType.IntegerVector: return IntegersColumnHeader;
+        case ExampleArgumentType.FloatVector: return DoublesColumnHeader;
+        case ExampleArgumentType.StringVector: return StringsColumnHeader;
         default: return string.Empty;
       }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/BooleanErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/BooleanErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/BooleanErcOptions.cs	(revision 14875)
@@ -0,0 +1,73 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System;
+
+  using HeuristicLab.Common;
+  using HeuristicLab.Core;
+  using HeuristicLab.Data;
+  using HeuristicLab.Parameters;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class BooleanErcOptions : ErcOption, IReadOnlyBooleanErcOptions {
+    private const string AllowTrueParameterName = "Allow true";
+    private const string AllowFalseParameterName = "Allow false";
+
+    public BooleanErcOptions()
+      : this(true, true) {
+      IsEnabled = false;
+    }
+
+    public BooleanErcOptions(bool allowTrue, bool allowFalse) {
+      if (!allowTrue && allowFalse) {
+        throw new InvalidOperationException("true and false values are disabled");
+      }
+
+      IsEnabled = true;
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowTrueParameterName, new BoolValue(allowTrue)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowFalseParameterName, new BoolValue(allowFalse)));
+    }
+
+    [StorableConstructor]
+    public BooleanErcOptions(bool deserializing) : base(deserializing) { }
+
+    public BooleanErcOptions(BooleanErcOptions origin, Cloner cloner) : base(origin, cloner) {
+      this.AllowFalse = origin.AllowFalse;
+      this.AllowTrue = origin.AllowTrue;
+    }
+
+    public IValueParameter<BoolValue> AllowFalseParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowFalseParameterName]; }
+    }
+
+    public bool AllowFalse
+    {
+      get { return AllowFalseParameter.Value.Value; }
+      set { AllowFalseParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<BoolValue> AllowTrueParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowTrueParameterName]; }
+    }
+
+    public bool AllowTrue
+    {
+      get { return AllowTrueParameter.Value.Value; }
+      set { AllowTrueParameter.Value.Value = value; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BooleanErcOptions(this, cloner);
+    }
+
+    public bool GetRandom(IRandom random) {
+      if (!this.AllowTrue && !this.AllowFalse) throw new InvalidOperationException();
+      if (!this.AllowFalse) return true;
+      if (!this.AllowTrue) return false;
+
+      return random.NextDouble() >= 0.5;
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/CharErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/CharErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/CharErcOptions.cs	(revision 14875)
@@ -0,0 +1,74 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System;
+  using System.Collections.Generic;
+  using System.Linq;
+  using Base.Erc.Interfaces;
+  using Common;
+  using Core;
+  using Data;
+  using Parameters;
+  using Persistence.Default.CompositeSerializers.Storable;
+
+  [StorableClass]
+  public class CharErcOptions : ErcOption, IReadOnlyCharErcOptions {
+    private const string ConstantsParameterName = "Constants";
+    private const string RangeParameterName = "Range";
+
+    public CharErcOptions() : this('A', 'z') {
+      IsEnabled = false;
+    }
+
+    public CharErcOptions(int start, int end) : this(start, end, new char[0]) {
+    }
+
+    public CharErcOptions(char[] constants) : this(default(int), default(int), constants) {
+    }
+
+    public CharErcOptions(int start, int end, char[] constants) {
+      if (start > end) {
+        throw new InvalidOperationException("start > end");
+      }
+
+      IsEnabled = true;
+      Parameters.Add(new ValueParameter<StringValue>(ConstantsParameterName, new StringValue(new string(constants))));
+      Parameters.Add(new FixedValueParameter<IntRange>(RangeParameterName, new IntRange(start, end)));
+    }
+
+    [StorableConstructor]
+    private CharErcOptions(bool deserializing) : base(deserializing) { }
+
+    public CharErcOptions(CharErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CharErcOptions(this, cloner);
+    }
+
+    public IValueParameter<StringValue> ConstantsParameter
+    {
+      get { return (IValueParameter<StringValue>)Parameters[ConstantsParameterName]; }
+    }
+
+    public IReadOnlyList<char> Constants
+    {
+      get { return ConstantsParameter.Value.Value.ToCharArray(); }
+      set { ConstantsParameter.Value.Value = new string(value.ToArray()); }
+    }
+
+    public IValueParameter<IntRange> RangeParameter
+    {
+      get { return (IValueParameter<IntRange>)Parameters[RangeParameterName]; }
+    }
+
+    public int Start
+    {
+      get { return RangeParameter.Value.Start; }
+      set { RangeParameter.Value.Start = value; }
+    }
+
+    public int End
+    {
+      get { return RangeParameter.Value.End; }
+      set { RangeParameter.Value.End = value; }
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/ErcOption.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/ErcOption.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/ErcOption.cs	(revision 14875)
@@ -0,0 +1,33 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using Base.Erc.Interfaces;
+  using Common;
+  using Core;
+  using Data;
+  using Parameters;
+  using Persistence.Default.CompositeSerializers.Storable;
+
+  [StorableClass]
+  public abstract class ErcOption : ParameterizedNamedItem, IReadOnlyErcOption {
+    private const string IsEnabledParameterName = "IsEnabled";
+
+    protected ErcOption() {
+      Parameters.Add(new FixedValueParameter<BoolValue>(IsEnabledParameterName));
+    }
+
+    [StorableConstructor]
+    protected ErcOption(bool deserializing) : base(deserializing) { }
+
+    protected ErcOption(ErcOption origin, Cloner cloner) : base(origin, cloner) { }
+
+    public IValueParameter<BoolValue> IsEnabledParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[IsEnabledParameterName]; }
+    }
+
+    public bool IsEnabled
+    {
+      get { return IsEnabledParameter.Value.Value; }
+      set { IsEnabledParameter.Value.Value = value; }
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/ErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/ErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/ErcOptions.cs	(revision 14875)
@@ -0,0 +1,204 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using HeuristicLab.Common;
+  using HeuristicLab.Core;
+  using HeuristicLab.Data;
+  using HeuristicLab.Parameters;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class ErcOptions : ParameterizedNamedItem, IReadOnlyErcOptions {
+    public const string ProbabilityParameterName = "Probability";
+    public const string IntegerParameterName = "Integer";
+    public const string FloatParameterName = "Float";
+    public const string CharParameterName = "Char";
+    public const string BooleanParameterName = "Boolean";
+    public const string StringParameterName = "String";
+    public const string NameParameterName = "Name";
+    public const string IntegerVectorParameterName = "IntegerVector";
+    public const string FloatVectorParameterName = "FloatVector";
+    public const string StringVectorParameterName = "StringVector";
+
+    public ErcOptions() {
+      Name = "ERC Options";
+
+      Parameters.Add(new FixedValueParameter<PercentValue>(ProbabilityParameterName));
+      Parameters.Add(new FixedValueParameter<IntegerErcOptions>(IntegerParameterName));
+      Parameters.Add(new FixedValueParameter<FloatErcOptions>(FloatParameterName));
+      Parameters.Add(new FixedValueParameter<CharErcOptions>(CharParameterName));
+      Parameters.Add(new FixedValueParameter<BooleanErcOptions>(BooleanParameterName));
+      Parameters.Add(new FixedValueParameter<StringErcOptions>(StringParameterName));
+      Parameters.Add(new FixedValueParameter<NameErcOptions>(NameParameterName));
+      Parameters.Add(new FixedValueParameter<IntegerVectorErcOptions>(IntegerVectorParameterName));
+      Parameters.Add(new FixedValueParameter<FloatVectorErcOptions>(FloatVectorParameterName));
+      Parameters.Add(new FixedValueParameter<StringVectorErcOptions>(StringVectorParameterName));
+    }
+
+    [StorableConstructor]
+    public ErcOptions(bool deserializing) : base(deserializing) { }
+
+    public ErcOptions(ErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public IValueParameter<PercentValue> ErcProbabilityParameter
+    {
+      get { return (IValueParameter<PercentValue>)Parameters[ProbabilityParameterName]; }
+    }
+
+    public double ErcProbability
+    {
+      get { return ErcProbabilityParameter.Value.Value; }
+      set { ErcProbabilityParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<IntegerErcOptions> IntegerErcOptionsParameter
+    {
+      get { return (IValueParameter<IntegerErcOptions>)Parameters[IntegerParameterName]; }
+    }
+
+    public IntegerErcOptions IntegerErcOptions
+    {
+      get { return this.IntegerErcOptionsParameter.Value; }
+      set { this.IntegerErcOptionsParameter.Value = value; }
+    }
+
+    IReadOnlyIntegerErcOptions IReadOnlyErcOptions.IntegerErcOptions
+    {
+      get { return IntegerErcOptions; }
+    }
+
+    public IValueParameter<FloatErcOptions> FloatErcOptionsParameter
+    {
+      get { return (IValueParameter<FloatErcOptions>)Parameters[FloatParameterName]; }
+    }
+
+    public FloatErcOptions FloatErcOptions
+    {
+      get { return this.FloatErcOptionsParameter.Value; }
+      set { this.FloatErcOptionsParameter.Value = value; }
+    }
+
+    IReadOnlyFloatErcOptions IReadOnlyErcOptions.FloatErcOptions
+    {
+      get { return FloatErcOptions; }
+    }
+
+    /// <summary>
+    /// Integer represents ASCII value
+    /// </summary>
+    public IValueParameter<CharErcOptions> CharErcOptionsParameter
+    {
+      get { return (IValueParameter<CharErcOptions>)Parameters[CharParameterName]; }
+    }
+
+    public CharErcOptions CharErcOptions
+    {
+      get { return CharErcOptionsParameter.Value; }
+      set { CharErcOptionsParameter.Value = value; }
+    }
+
+    IReadOnlyCharErcOptions IReadOnlyErcOptions.CharErcOptions
+    {
+      get { return CharErcOptions; }
+    }
+
+    public IValueParameter<BooleanErcOptions> BooleanErcOptionsParameter
+    {
+      get { return (IValueParameter<BooleanErcOptions>)Parameters[BooleanParameterName]; }
+    }
+
+    public BooleanErcOptions BooleanErcOptions
+    {
+      get { return BooleanErcOptionsParameter.Value; }
+      set { BooleanErcOptionsParameter.Value = value; }
+    }
+
+    IReadOnlyBooleanErcOptions IReadOnlyErcOptions.BooleanErcOptions
+    {
+      get { return BooleanErcOptions; }
+    }
+
+    public IValueParameter<StringErcOptions> StringErcOptionsParameter
+    {
+      get { return (IValueParameter<StringErcOptions>)Parameters[StringParameterName]; }
+    }
+
+    public StringErcOptions StringErcOptions
+    {
+      get { return StringErcOptionsParameter.Value; }
+      set { StringErcOptionsParameter.Value = value; }
+    }
+
+    IReadOnlyStringErcOptions IReadOnlyErcOptions.StringErcOptions
+    {
+      get { return StringErcOptions; }
+    }
+
+    public IValueParameter<NameErcOptions> NameParameter
+    {
+      get { return (IValueParameter<NameErcOptions>)Parameters[NameParameterName]; }
+    }
+
+    public NameErcOptions NameErcOptions
+    {
+      get { return NameParameter.Value; }
+      set { NameParameter.Value = value; }
+    }
+
+    IReadOnlyNameErcOptions IReadOnlyErcOptions.NameErcOptions
+    {
+      get { return NameErcOptions; }
+    }
+
+    public IValueParameter<IntegerVectorErcOptions> IntegerVectorParameter
+    {
+      get { return (IValueParameter<IntegerVectorErcOptions>)Parameters[IntegerVectorParameterName]; }
+    }
+
+    public IntegerVectorErcOptions IntegerVectorErcOptions
+    {
+      get { return IntegerVectorParameter.Value; }
+      set { IntegerVectorParameter.Value = value; }
+    }
+
+    IReadOnlyVectorErcOptions<int> IReadOnlyErcOptions.IntegerVectorErcOptions
+    {
+      get { return IntegerVectorErcOptions; }
+    }
+
+    public IValueParameter<StringVectorErcOptions> StringVectorParameter
+    {
+      get { return (IValueParameter<StringVectorErcOptions>)Parameters[StringVectorParameterName]; }
+    }
+
+    public StringVectorErcOptions StringVectorErcOptions
+    {
+      get { return StringVectorParameter.Value; }
+      set { StringVectorParameter.Value = value; }
+    }
+
+    IReadOnlyVectorErcOptions<string> IReadOnlyErcOptions.StringVectorErcOptions
+    {
+      get { return StringVectorErcOptions; }
+    }
+
+    public IValueParameter<FloatVectorErcOptions> FloatVectorParameter
+    {
+      get { return (IValueParameter<FloatVectorErcOptions>)Parameters[FloatVectorParameterName]; }
+    }
+
+    public FloatVectorErcOptions FloatVectorErcOptions
+    {
+      get { return FloatVectorParameter.Value; }
+      set { FloatVectorParameter.Value = value; }
+    }
+
+    IReadOnlyVectorErcOptions<double> IReadOnlyErcOptions.FloatVectorErcOptions
+    {
+      get { return FloatVectorErcOptions; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ErcOptions(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatErcOptions.cs	(revision 14875)
@@ -0,0 +1,81 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System;
+  using System.Collections.Generic;
+  using System.Linq;
+
+  using HeuristicLab.Common;
+  using HeuristicLab.Core;
+  using HeuristicLab.Data;
+  using HeuristicLab.Parameters;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class FloatErcOptions : ErcOption, IReadOnlyFloatErcOptions {
+    private const string ConstantsParameterName = "Constants";
+    private const string RangeParameterName = "Range";
+
+    public FloatErcOptions() : this(default(double), default(double)) {
+      IsEnabled = false;
+    }
+
+    public FloatErcOptions(double start, double end) : this(start, end, new double[0]) {
+    }
+
+    public FloatErcOptions(double[] constants) : this(default(double), default(double), constants) {
+    }
+
+    public FloatErcOptions(double start, double end, double[] constants) {
+      if (start > end) {
+        throw new InvalidOperationException("start >= end");
+      }
+
+      IsEnabled = true;
+      Parameters.Add(new ValueParameter<DoubleArray>(ConstantsParameterName, new DoubleArray(constants) { Resizable = true }));
+      Parameters.Add(new FixedValueParameter<DoubleRange>(RangeParameterName, new DoubleRange(start, end)));
+    }
+
+    [StorableConstructor]
+    private FloatErcOptions(bool deserializing) : base(deserializing) { }
+
+    public FloatErcOptions(FloatErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new FloatErcOptions(this, cloner);
+    }
+
+    public IValueParameter<DoubleArray> ConstantsParameter
+    {
+      get { return (IValueParameter<DoubleArray>)Parameters[ConstantsParameterName]; }
+    }
+
+    public IReadOnlyList<double> Constants
+    {
+      get { return ConstantsParameter.Value.Data; }
+      set { ConstantsParameter.Value = new DoubleArray(value.ToArray()); }
+    }
+
+    public IValueParameter<DoubleRange> RangeParameter
+    {
+      get { return (IValueParameter<DoubleRange>)Parameters[RangeParameterName]; }
+    }
+
+    /// <summary>
+    /// The minimum FLOAT that will be produced as an ephemeral random FLOAT constant or from a call to FLOAT.RAND.
+    /// </summary>
+    public double Start
+    {
+      get { return RangeParameter.Value.Start; }
+      set { RangeParameter.Value.Start = value; }
+    }
+
+    /// <summary>
+    /// The maximum FLOAT that will be produced as an ephemeral random FLOAT constant or from a call to FLOAT.RAND.
+    /// </summary>
+    public double End
+    {
+      get { return RangeParameter.Value.End; }
+      set { RangeParameter.Value.End = value; }
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatVectorErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatVectorErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatVectorErcOptions.cs	(revision 14875)
@@ -0,0 +1,51 @@
+﻿using System.Linq;
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System.Collections.Generic;
+
+  using Common;
+  using Core;
+  using Data;
+
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+  using Parameters;
+  using Persistence.Default.CompositeSerializers.Storable;
+
+  [StorableClass]
+  public class FloatVectorErcOptions : ErcOption, IReadOnlyVectorErcOptions<double> {
+    private const string ConstantsParameterName = "Constants";
+
+    public FloatVectorErcOptions() : this(new double[0][]) {
+    }
+
+    public FloatVectorErcOptions(double[][] constants) {
+      IsEnabled = true;
+      var mappedConstants = constants.Select(c => new DoubleArray(c));
+      Parameters.Add(new ValueParameter<ItemArray<DoubleArray>>(ConstantsParameterName, new ItemArray<DoubleArray>(mappedConstants)));
+    }
+
+    [StorableConstructor]
+    private FloatVectorErcOptions(bool deserializing) : base(deserializing) { }
+
+    public FloatVectorErcOptions(FloatVectorErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public IValueParameter<ItemArray<DoubleArray>> ConstantsParameter
+    {
+      get { return (IValueParameter<ItemArray<DoubleArray>>)Parameters[ConstantsParameterName]; }
+    }
+
+    public IEnumerable<IReadOnlyList<double>> Constants
+    {
+      get { return ConstantsParameter.Value.Select(v => v.Data); }
+      set
+      {
+        var mappedConstants = value.Select(c => new DoubleArray(c.ToArray()));
+        ConstantsParameter.Value = new ItemArray<DoubleArray>(mappedConstants);
+      }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new FloatVectorErcOptions(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/IntegerErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/IntegerErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/IntegerErcOptions.cs	(revision 14875)
@@ -0,0 +1,81 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System;
+  using System.Collections.Generic;
+  using System.Linq;
+
+  using HeuristicLab.Common;
+  using HeuristicLab.Core;
+  using HeuristicLab.Data;
+  using HeuristicLab.Parameters;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class IntegerErcOptions : ErcOption, IReadOnlyIntegerErcOptions {
+    private const string ConstantsParameterName = "Constants";
+    private const string RangeParameterName = "Range";
+
+    public IntegerErcOptions() : this(default(int), default(int)) {
+      IsEnabled = false;
+    }
+
+    public IntegerErcOptions(int start, int end) : this(start, end, new int[0]) {
+    }
+
+    public IntegerErcOptions(int[] constants) : this(default(int), default(int), constants) {
+    }
+
+    public IntegerErcOptions(int start, int end, int[] constants) {
+      if (start > end) {
+        throw new InvalidOperationException("start >= end");
+      }
+
+      IsEnabled = true;
+      Parameters.Add(new ValueParameter<IntArray>(ConstantsParameterName, new IntArray(constants)));
+      Parameters.Add(new FixedValueParameter<IntRange>(RangeParameterName, new IntRange(start, end)));
+    }
+
+    [StorableConstructor]
+    private IntegerErcOptions(bool deserializing) : base(deserializing) { }
+
+    public IntegerErcOptions(IntegerErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new IntegerErcOptions(this, cloner);
+    }
+
+    public IValueParameter<IntArray> ConstantsParameter
+    {
+      get { return (IValueParameter<IntArray>)Parameters[ConstantsParameterName]; }
+    }
+
+    public IReadOnlyList<int> Constants
+    {
+      get { return ConstantsParameter.Value.Data; }
+      set { ConstantsParameter.Value = new IntArray(value.ToArray()); }
+    }
+
+    public IValueParameter<IntRange> RangeParameter
+    {
+      get { return (IValueParameter<IntRange>)Parameters[RangeParameterName]; }
+    }
+
+    /// <summary>
+    ///     The minimum INTEGER that will be produced as an ephemeral random INTEGER constant or from a call to INTEGER.RAND.
+    /// </summary>
+    public int Start
+    {
+      get { return RangeParameter.Value.Start; }
+      set { RangeParameter.Value.Start = value; }
+    }
+
+    /// <summary>
+    ///     The maximum INTEGER that will be produced as an ephemeral random INTEGER constant or from a call to INTEGER.RAND.
+    /// </summary>
+    public int End
+    {
+      get { return RangeParameter.Value.End; }
+      set { RangeParameter.Value.End = value; }
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/IntegerVectorErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/IntegerVectorErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/IntegerVectorErcOptions.cs	(revision 14875)
@@ -0,0 +1,50 @@
+﻿using System.Linq;
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System.Collections.Generic;
+
+  using Common;
+  using Core;
+  using Data;
+  using Parameters;
+  using Persistence.Default.CompositeSerializers.Storable;
+  using Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class IntegerVectorErcOptions : ErcOption, IReadOnlyVectorErcOptions<int> {
+    private const string ConstantsParameterName = "Constants";
+
+    public IntegerVectorErcOptions() : this(new int[0][]) {
+    }
+
+    public IntegerVectorErcOptions(int[][] constants) {
+      IsEnabled = true;
+      var mappedConstants = constants.Select(c => new IntArray(c));
+      Parameters.Add(new ValueParameter<ItemArray<IntArray>>(ConstantsParameterName, new ItemArray<IntArray>(mappedConstants)));
+    }
+
+    [StorableConstructor]
+    private IntegerVectorErcOptions(bool deserializing) : base(deserializing) { }
+
+    public IntegerVectorErcOptions(IntegerVectorErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public IValueParameter<ItemArray<IntArray>> ConstantsParameter
+    {
+      get { return (IValueParameter<ItemArray<IntArray>>)Parameters[ConstantsParameterName]; }
+    }
+
+    public IEnumerable<IReadOnlyList<int>> Constants
+    {
+      get { return ConstantsParameter.Value.Select(v => v.Data); }
+      set
+      {
+        var mappedConstants = value.Select(c => new IntArray(c.ToArray()));
+        ConstantsParameter.Value = new ItemArray<IntArray>(mappedConstants);
+      }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new IntegerVectorErcOptions(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyBooleanErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyBooleanErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyBooleanErcOptions.cs	(revision 14875)
@@ -0,0 +1,10 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  using HeuristicLab.Core;
+
+  public interface IReadOnlyBooleanErcOptions : IReadOnlyErcOption {
+    bool AllowFalse { get; }
+    bool AllowTrue { get; }
+
+    bool GetRandom(IRandom random);
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyCharErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyCharErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyCharErcOptions.cs	(revision 14875)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces
+{
+    public interface IReadOnlyCharErcOptions : IReadOnlyErcOptionConstants<char>, IReadOnlyErcOptionRange<int>
+    {
+
+    }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOption.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOption.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOption.cs	(revision 14875)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces
+{
+    public interface IReadOnlyErcOption
+    {
+        bool IsEnabled { get; set; }
+    }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptionConstants.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptionConstants.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptionConstants.cs	(revision 14875)
@@ -0,0 +1,7 @@
+﻿using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  public interface IReadOnlyErcOptionConstants<out T> : IReadOnlyErcOption {
+    IReadOnlyList<T> Constants { get; }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptionRange.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptionRange.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptionRange.cs	(revision 14875)
@@ -0,0 +1,8 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  using HeuristicLab.Core;
+
+  public interface IReadOnlyErcOptionRange<out T> : IReadOnlyErcOption {
+    T Start { get; }
+    T End { get; }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyErcOptions.cs	(revision 14875)
@@ -0,0 +1,14 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  public interface IReadOnlyErcOptions {
+    double ErcProbability { get; }
+    IReadOnlyIntegerErcOptions IntegerErcOptions { get; }
+    IReadOnlyFloatErcOptions FloatErcOptions { get; }
+    IReadOnlyBooleanErcOptions BooleanErcOptions { get; }
+    IReadOnlyCharErcOptions CharErcOptions { get; }
+    IReadOnlyStringErcOptions StringErcOptions { get; }
+    IReadOnlyNameErcOptions NameErcOptions { get; }
+    IReadOnlyVectorErcOptions<int> IntegerVectorErcOptions { get; }
+    IReadOnlyVectorErcOptions<double> FloatVectorErcOptions { get; }
+    IReadOnlyVectorErcOptions<string> StringVectorErcOptions { get; }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyFloatErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyFloatErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyFloatErcOptions.cs	(revision 14875)
@@ -0,0 +1,4 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  public interface IReadOnlyFloatErcOptions : IReadOnlyErcOptionConstants<double>, IReadOnlyErcOptionRange<double> {
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyIntegerErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyIntegerErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyIntegerErcOptions.cs	(revision 14875)
@@ -0,0 +1,5 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  public interface IReadOnlyIntegerErcOptions : IReadOnlyErcOptionConstants<int>, IReadOnlyErcOptionRange<int> {
+
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyNameErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyNameErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyNameErcOptions.cs	(revision 14875)
@@ -0,0 +1,5 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  public interface IReadOnlyNameErcOptions : IReadOnlyStringErcOptions {
+    double NewNameProbability { get; }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyStringErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyStringErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyStringErcOptions.cs	(revision 14875)
@@ -0,0 +1,11 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  using HeuristicLab.Data;
+
+  public interface IReadOnlyStringErcOptions : IReadOnlyErcOptionConstants<string>  {
+    bool AllowLowercaseLetters { get; }
+    bool AllowUppercaseLetters { get; }
+    bool AllowSpace { get; }
+    double SpaceProbability { get; }
+    int StringLength { get; }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyVectorErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyVectorErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/Interfaces/IReadOnlyVectorErcOptions.cs	(revision 14875)
@@ -0,0 +1,7 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces {
+  using System.Collections.Generic;
+
+  public interface IReadOnlyVectorErcOptions<T> {
+    IEnumerable<IReadOnlyList<T>> Constants { get; }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/NameErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/NameErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/NameErcOptions.cs	(revision 14875)
@@ -0,0 +1,47 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+
+  using HeuristicLab.Common;
+  using HeuristicLab.Core;
+  using HeuristicLab.Data;
+  using HeuristicLab.Parameters;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class NameErcOptions : StringErcOptions, IReadOnlyNameErcOptions {
+    private const string NewNameProbabilityParameterName = "New name probability";
+
+    public NameErcOptions() : this(false) {
+    }
+
+    public NameErcOptions(params string[] constants)
+      : base(constants) {
+      Parameters.Add(new FixedValueParameter<PercentValue>(NewNameProbabilityParameterName));
+    }
+
+    [StorableConstructor]
+    public NameErcOptions(bool deserializing) : base(deserializing) { }
+
+    public NameErcOptions(NameErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    /// <summary>
+    ///     The probability that the selection of the ephemeral
+    ///     random NAME constant for inclusion in randomly generated code will produce a new name
+    ///     (rather than a name that was previously generated).
+    /// </summary>
+    public IValueParameter<PercentValue> NewNameProbabilityParameter
+    {
+      get { return (IValueParameter<PercentValue>)Parameters[NewNameProbabilityParameterName]; }
+    }
+
+    public double NewNameProbability
+    {
+      get { return NewNameProbabilityParameter.Value.Value; }
+      set { NewNameProbabilityParameter.Value.Value = value; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new NameErcOptions(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringErcOptions.cs	(revision 14875)
@@ -0,0 +1,156 @@
+﻿namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System.Collections.Generic;
+  using System.Linq;
+
+  using HeuristicLab.Common;
+  using HeuristicLab.Core;
+  using HeuristicLab.Data;
+  using HeuristicLab.Parameters;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+
+  [StorableClass]
+  public class StringErcOptions : ErcOption, IReadOnlyStringErcOptions {
+    public const int DefaultStringLength = 10;
+
+    private const string AllowLowercaseLettersParameterName = "Allow lowercase letters";
+    private const string AllowUppercaseLettersParameterName = "Allow uppercase letters";
+    private const string AllowSpaceParameterName = "Allow space";
+    private const string SpaceProbabilityParameterName = "Space probability";
+    private const string StringLengthParameterName = "String length";
+    private const string ConstantsParameterName = "Constants";
+    private const string AllowDigitsParameterName = "Allow digits";
+    private const string AllowSymbolsParameterName = "Allow symbols";
+    private const string VowelProbabilityParameterName = "Vowel probability";
+
+    public StringErcOptions() : this(new string[0]) {
+      IsEnabled = false;
+    }
+
+    public StringErcOptions(string[] constants) {
+      IsEnabled = true;
+      Parameters.Add(new ValueParameter<StringArray>(ConstantsParameterName, new StringArray(constants)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowLowercaseLettersParameterName, new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowUppercaseLettersParameterName, new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowDigitsParameterName, new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowSymbolsParameterName, new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(AllowSpaceParameterName, new BoolValue(false)));
+      Parameters.Add(new FixedValueParameter<IntValue>(StringLengthParameterName, new IntValue(DefaultStringLength)));
+      Parameters.Add(new FixedValueParameter<PercentValue>(SpaceProbabilityParameterName));
+      Parameters.Add(new FixedValueParameter<PercentValue>(VowelProbabilityParameterName));
+    }
+
+    [StorableConstructor]
+    public StringErcOptions(bool deserializing) : base(deserializing) { }
+
+    public StringErcOptions(StringErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public IValueParameter<BoolValue> AllowLowercaseLettersParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowLowercaseLettersParameterName]; }
+    }
+
+    public bool AllowLowercaseLetters
+    {
+      get { return AllowLowercaseLettersParameter.Value.Value; }
+      set { AllowLowercaseLettersParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<BoolValue> AllowUppercaseLettersParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowUppercaseLettersParameterName]; }
+    }
+
+    public bool AllowUppercaseLetters
+    {
+      get { return AllowUppercaseLettersParameter.Value.Value; }
+      set { AllowUppercaseLettersParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<BoolValue> AllowDigitsParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowDigitsParameterName]; }
+    }
+
+    public bool AllowDigits
+    {
+      get { return AllowDigitsParameter.Value.Value; }
+      set { AllowDigitsParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<BoolValue> AllowSymbolsParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowSymbolsParameterName]; }
+    }
+
+    public bool AllowSymbols
+    {
+      get { return AllowSymbolsParameter.Value.Value; }
+      set { AllowSymbolsParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<BoolValue> AllowSpaceParameter
+    {
+      get { return (IValueParameter<BoolValue>)Parameters[AllowSpaceParameterName]; }
+    }
+
+    public bool AllowSpace
+    {
+      get { return AllowSpaceParameter.Value.Value; }
+      set { AllowSpaceParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<PercentValue> SpaceProbabilityParameter
+    {
+      get { return (IValueParameter<PercentValue>)Parameters[SpaceProbabilityParameterName]; }
+    }
+
+    public double SpaceProbability
+    {
+      get { return SpaceProbabilityParameter.Value.Value; }
+      set { SpaceProbabilityParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<PercentValue> VowelProbabilityParameter
+    {
+      get { return (IValueParameter<PercentValue>)Parameters[VowelProbabilityParameterName]; }
+    }
+
+    public double VowelProbability
+    {
+      get { return VowelProbabilityParameter.Value.Value; }
+      set { VowelProbabilityParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<IntValue> StringLengthParameter
+    {
+      get { return (IValueParameter<IntValue>)Parameters[StringLengthParameterName]; }
+    }
+
+    public int StringLength
+    {
+      get { return StringLengthParameter.Value.Value; }
+      set { StringLengthParameter.Value.Value = value; }
+    }
+
+    public IValueParameter<StringArray> ConstantsParameter
+    {
+      get { return (IValueParameter<StringArray>)Parameters[ConstantsParameterName]; }
+    }
+
+    public string[] Constants
+    {
+      get { return ConstantsParameter.Value.ToArray(); }
+      set { ConstantsParameter.Value = new StringArray(value); }
+    }
+
+    IReadOnlyList<string> IReadOnlyErcOptionConstants<string>.Constants
+    {
+      get { return Constants; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new StringErcOptions(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringVectorErcOptions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringVectorErcOptions.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringVectorErcOptions.cs	(revision 14875)
@@ -0,0 +1,51 @@
+﻿using System.Linq;
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
+  using System.Collections.Generic;
+
+  using Common;
+  using Core;
+  using Data;
+
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
+  using Parameters;
+  using Persistence.Default.CompositeSerializers.Storable;
+
+  [StorableClass]
+  public class StringVectorErcOptions : ErcOption, IReadOnlyVectorErcOptions<string> {
+    private const string ConstantsParameterName = "Constants";
+
+    public StringVectorErcOptions() : this(new string[0][]) {
+    }
+
+    public StringVectorErcOptions(string[][] constants) {
+      IsEnabled = true;
+      var mappedConstants = constants.Select(c => new StringArray(c));
+      Parameters.Add(new ValueParameter<ItemArray<StringArray>>(ConstantsParameterName, new ItemArray<StringArray>(mappedConstants)));
+    }
+
+    [StorableConstructor]
+    private StringVectorErcOptions(bool deserializing) : base(deserializing) { }
+
+    public StringVectorErcOptions(StringVectorErcOptions origin, Cloner cloner) : base(origin, cloner) { }
+
+    public IValueParameter<ItemArray<StringArray>> ConstantsParameter
+    {
+      get { return (IValueParameter<ItemArray<StringArray>>)Parameters[ConstantsParameterName]; }
+    }
+
+    public IEnumerable<IReadOnlyList<string>> Constants
+    {
+      get { return ConstantsParameter.Value.Select(v => v.ToArray()); }
+      set
+      {
+        var mappedConstants = value.Select(c => new StringArray(c.ToArray()));
+        ConstantsParameter.Value = new ItemArray<StringArray>(mappedConstants);
+      }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new StringVectorErcOptions(this, cloner);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/HeuristicLab.Problems.ProgramSynthesis.Base.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/HeuristicLab.Problems.ProgramSynthesis.Base.csproj	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/HeuristicLab.Problems.ProgramSynthesis.Base.csproj	(revision 14875)
@@ -0,0 +1,97 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.ProgramSynthesis.Base</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.ProgramSynthesis.Base</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <LangVersion>5</LangVersion>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Erc\BooleanErcOptions.cs" />
+    <Compile Include="Erc\CharErcOptions.cs" />
+    <Compile Include="Erc\ErcOption.cs" />
+    <Compile Include="Erc\ErcOptions.cs" />
+    <Compile Include="Erc\FloatErcOptions.cs" />
+    <Compile Include="Erc\StringVectorErcOptions.cs" />
+    <Compile Include="Erc\IntegerErcOptions.cs" />
+    <Compile Include="Erc\FloatVectorErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyBooleanErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyCharErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyErcOption.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyErcOptionConstants.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyErcOptionRange.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyFloatErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyIntegerErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyNameErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyStringErcOptions.cs" />
+    <Compile Include="Erc\Interfaces\IReadOnlyVectorErcOptions.cs" />
+    <Compile Include="Erc\NameErcOptions.cs" />
+    <Compile Include="Erc\StringErcOptions.cs" />
+    <Compile Include="Erc\IntegerVectorErcOptions.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Properties/AssemblyInfo.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Properties/AssemblyInfo.cs	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Properties/AssemblyInfo.cs	(revision 14875)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.ProgramSynthesis.Base")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab.Problems.ProgramSynthesis.Base")]
+[assembly: AssemblyCopyright("Copyright ©  2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0a60b6ba-8ace-478e-98f3-57441b53b5f9")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/HeuristicLab.Problems.ProgramSynthesis.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/HeuristicLab.Problems.ProgramSynthesis.csproj	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/HeuristicLab.Problems.ProgramSynthesis.csproj	(revision 14875)
@@ -121,5 +121,4 @@
     <Compile Include="Push\Attributes\PushStackAttribute.cs" />
     <Compile Include="Push\Configuration\IEnabledExpressionsConfiguration.cs" />
-    <Compile Include="Push\Creator\PointsBasedPushProgramCreator.cs" />
     <Compile Include="Push\Data\List\SkipList.cs" />
     <Compile Include="Push\Data\Pool\IPooledObject.cs" />
@@ -130,22 +129,4 @@
     <Compile Include="Push\Data\Tree\TreeExtensions.cs" />
     <Compile Include="Push\Data\Tree\TreeNode.cs" />
-    <Compile Include="Push\Erc\BooleanErcOptions.cs" />
-    <Compile Include="Push\Erc\CharErcOptions.cs" />
-    <Compile Include="Push\Erc\ErcOption.cs" />
-    <Compile Include="Push\Erc\FloatErcOptions.cs" />
-    <Compile Include="Push\Erc\IntegerErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyBooleanErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyCharErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyErcOption.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyErcOptionConstants.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyErcOptionRange.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyFloatErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyIntegerErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyNameErcOptions.cs" />
-    <Compile Include="Push\Erc\Interfaces\IReadOnlyStringErcOptions.cs" />
-    <Compile Include="Push\Erc\ErcOptions.cs" />
-    <Compile Include="Push\Erc\NameErcOptions.cs" />
-    <Compile Include="Push\Erc\StringErcOptions.cs" />
     <Compile Include="Push\Exporter\Exporter.cs" />
     <Compile Include="Push\Expressions\BooleanExpressions.cs" />
@@ -170,5 +151,4 @@
     <Compile Include="Push\Expressions\PushExpressions.cs" />
     <Compile Include="Push\Expressions\PushProgram.cs" />
-    <Compile Include="Push\Expressions\PushResultExpression.cs" />
     <Compile Include="Push\Expressions\RandExpressions.cs" />
     <Compile Include="Push\Expressions\RotateExpressions.cs" />
@@ -219,5 +199,4 @@
     <Compile Include="Push\Interpreter\PushInterpreterPool.cs" />
     <Compile Include="Push\Parser\PushParser.cs" />
-    <Compile Include="Push\Creator\IPushProgramCreator.cs" />
     <Compile Include="Push\Problem\DataBounds.cs" />
     <Compile Include="Push\Problem\EvaluationResult.cs" />
@@ -265,4 +244,8 @@
       <Name>HeuristicLab.BenchmarkSuite</Name>
     </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis.Base\HeuristicLab.Problems.ProgramSynthesis.Base.csproj">
+      <Project>{0a60b6ba-8ace-478e-98f3-57441b53b5f9}</Project>
+      <Name>HeuristicLab.Problems.ProgramSynthesis.Base</Name>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/IReadonlyPushConfiguration.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/IReadonlyPushConfiguration.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/IReadonlyPushConfiguration.cs	(revision 14875)
@@ -3,5 +3,5 @@
 
   using HeuristicLab.Common;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Erc.Interfaces;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/PushConfiguration.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/PushConfiguration.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/PushConfiguration.cs	(revision 14875)
@@ -4,8 +4,8 @@
   using System.Linq;
   using Attributes;
+  using Base.Erc;
+  using Base.Erc.Interfaces;
   using Common;
   using Core;
-  using Erc;
-  using Erc.Interfaces;
   using Expressions;
   using Persistence.Default.CompositeSerializers.Storable;
@@ -21,5 +21,5 @@
 
       enabledExpressions = ExpressionTable.ExpressionNames.ToList();
-      EnabledStacks = new Dictionary<StackTypes, bool>();
+      enabledStacks = new Dictionary<StackTypes, bool>();
 
       ErcOptions = new ErcOptions();
@@ -38,6 +38,6 @@
     private void InitEnabledStacks(bool state = true) {
       foreach (StackTypes type in Enum.GetValues(typeof(StackTypes))) {
-        if (!EnabledStacks.ContainsKey(type))
-          EnabledStacks.Add(type, state);
+        if (!enabledStacks.ContainsKey(type))
+          enabledStacks.Add(type, state);
       }
     }
@@ -50,5 +50,5 @@
     public PushConfiguration(PushConfiguration origin, Cloner cloner) : base(origin, cloner) {
       enabledExpressions = origin.EnabledExpressions.ToList();
-      EnabledStacks = origin.EnabledStacks.ToDictionary(x => x.Key, x => x.Value);
+      enabledStacks = origin.EnabledStacks.ToDictionary(x => x.Key, x => x.Value);
 
       ErcOptions = cloner.Clone(origin.ErcOptions);
@@ -70,8 +70,9 @@
     }
 
-    [Storable]
-    public IDictionary<StackTypes, bool> EnabledStacks { get; set; }
-
-    IReadOnlyDictionary<StackTypes, bool> IReadOnlyPushConfiguration.EnabledStacks { get { return EnabledStacks as IReadOnlyDictionary<StackTypes, bool>; } }
+
+    [Storable]
+    private Dictionary<StackTypes, bool> enabledStacks;
+
+    public IReadOnlyDictionary<StackTypes, bool> EnabledStacks { get { return enabledStacks; } }
 
     public event EventHandler<EnabledExpressionsChangedEventArgs> EnabledExpressionsChanged;
@@ -95,5 +96,5 @@
     }
 
-    IReadOnlyList<string> IReadOnlyPushConfiguration.EnabledExpressions { get { return EnabledExpressions as IReadOnlyList<string>; } }
+    IReadOnlyList<string> IReadOnlyPushConfiguration.EnabledExpressions { get { return enabledExpressions; } }
 
     [Storable]
@@ -189,5 +190,5 @@
         var type = ExpressionTable.TypeToNameTable.Single(x => x.Value == name).Key;
         var attribute = ExpressionTable.TypeToAttributeTable[type];
-        EnabledStacks[attribute.StackType] = true;
+        enabledStacks[attribute.StackType] = true;
       }
 
@@ -207,5 +208,5 @@
         var type = ExpressionTable.TypeToNameTable.Single(x => x.Value == name).Key;
         var attribute = ExpressionTable.TypeToAttributeTable[type];
-        EnabledStacks[attribute.StackType] = false;
+        enabledStacks[attribute.StackType] = false;
       }
 
@@ -238,5 +239,5 @@
 
     public void EnableStack(StackTypes type, bool enableExpressions = false) {
-      EnabledStacks[type] = true;
+      enabledStacks[type] = true;
 
       if (enableExpressions)
@@ -245,5 +246,5 @@
 
     public void DisableStack(StackTypes type, bool disableExpressions = false) {
-      EnabledStacks[type] = false;
+      enabledStacks[type] = false;
 
       if (disableExpressions)
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Data/List/SkipList.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Data/List/SkipList.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Data/List/SkipList.cs	(revision 14875)
@@ -439,5 +439,5 @@
       }
 
-      //Count going back up to the top
+      //ExpressionCount going back up to the top
       while (currentNode != null) {
         height++;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Data/Pool/ManagedPoolProvider.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Data/Pool/ManagedPoolProvider.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Data/Pool/ManagedPoolProvider.cs	(revision 14875)
@@ -40,5 +40,5 @@
       var temp = new T[PartitionSize];
 
-      for (var i = 0; i < PartitionSize; i++) {
+      for (var i = 0u; i < PartitionSize; i++) {
         temp[i] = factory();
       }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/BooleanExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/BooleanExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/BooleanExpressions.cs	(revision 14875)
@@ -10,7 +10,15 @@
   /// </summary>
   [PushExpression(StackTypes.Boolean, "BOOLEAN.AND")]
-  public class BooleanAndExpression : PushResultExpression<bool> {
+  public class BooleanAndExpression : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.BooleanStack, 2, values => values[0] && values[1]);
+      if (interpreter.BooleanStack.Count < 2)
+        return false;
+
+      var first = interpreter.BooleanStack.Pop();
+      var second = interpreter.BooleanStack.Top;
+      var result = second && first;
+
+      interpreter.BooleanStack.SetTop(result);
+      return true;
     }
   }
@@ -20,7 +28,15 @@
   /// </summary>
   [PushExpression(StackTypes.Boolean, "BOOLEAN.OR")]
-  public class BooleanOrExpression : PushResultExpression<bool> {
+  public class BooleanOrExpression : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.BooleanStack, 2, values => values[0] || values[1]);
+      if (interpreter.BooleanStack.Count < 2)
+        return false;
+
+      var first = interpreter.BooleanStack.Pop();
+      var second = interpreter.BooleanStack.Top;
+      var result = second || first;
+
+      interpreter.BooleanStack.SetTop(result);
+      return true;
     }
   }
@@ -30,7 +46,11 @@
   /// </summary>
   [PushExpression(StackTypes.Boolean, "BOOLEAN.NOT")]
-  public class BooleanNotExpression : PushResultExpression<bool> {
+  public class BooleanNotExpression : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.BooleanStack, 1, values => !values[0]);
+      if (interpreter.BooleanStack.IsEmpty)
+        return false;
+
+      interpreter.BooleanStack.SetTop(!interpreter.BooleanStack.Top);
+      return true;
     }
   }
@@ -70,7 +90,15 @@
   /// </summary>
   [PushExpression(StackTypes.Boolean, "BOOLEAN.INVERT_FIRST_THEN_AND")]
-  public class BooleanInvertFirstThenAnd : PushResultExpression<bool> {
+  public class BooleanInvertFirstThenAnd : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.BooleanStack, 2, values => !values[0] && values[1]);
+      if (interpreter.BooleanStack.Count < 2)
+        return false;
+
+      var first = interpreter.BooleanStack.Pop();
+      var second = interpreter.BooleanStack.Top;
+      var result = second && !first;
+
+      interpreter.BooleanStack.SetTop(result);
+      return true;
     }
   }
@@ -80,7 +108,15 @@
   /// </summary>
   [PushExpression(StackTypes.Boolean, "BOOLEAN.INVERT_SECOND_THEN_AND")]
-  public class BooleanInvertSecondThenAnd : PushResultExpression<bool> {
+  public class BooleanInvertSecondThenAnd : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.BooleanStack, 2, values => values[0] && !values[1]);
+      if (interpreter.BooleanStack.Count < 2)
+        return false;
+
+      var first = interpreter.BooleanStack.Pop();
+      var second = interpreter.BooleanStack.Top;
+      var result = !second && first;
+
+      interpreter.BooleanStack.SetTop(result);
+      return true;
     }
   }
@@ -88,10 +124,18 @@
 
   /// <summary>
-  ///     Pushes the logical AND of the top two BOOLEANs, whereby the second value is inverted first.
+  ///     Pushes the xor of the top tow BOOLEANs
   /// </summary>
   [PushExpression(StackTypes.Boolean, "BOOLEAN.XOR")]
-  public class BooleanXorExpression : PushResultExpression<bool> {
+  public class BooleanXorExpression : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.BooleanStack, 2, values => values[0] ^ values[1]);
+      if (interpreter.BooleanStack.Count < 2)
+        return false;
+
+      var first = interpreter.BooleanStack.Pop();
+      var second = interpreter.BooleanStack.Top;
+      var result = second ^ first;
+
+      interpreter.BooleanStack.SetTop(result);
+      return true;
     }
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CodeExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CodeExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CodeExpressions.cs	(revision 14875)
@@ -83,10 +83,14 @@
     public override bool Eval(IInternalPushInterpreter interpreter) {
       // not enough arguments on stack
-      if ((interpreter.BooleanStack.Count == 0) || (interpreter.CodeStack.Count < 2)) return false;
+      if (interpreter.BooleanStack.Count == 0 ||
+          interpreter.CodeStack.Count < 2)
+        return false;
 
       var condition = interpreter.BooleanStack.Pop();
-      var items = interpreter.CodeStack.Pop(2);
-
-      interpreter.ExecStack.Push(condition ? items[0] : items[1]);
+      var first = interpreter.CodeStack[1];
+      var second = interpreter.CodeStack.Top;
+
+      interpreter.CodeStack.Remove(2);
+      interpreter.ExecStack.Push(condition ? first : second);
 
       return true;
@@ -104,5 +108,6 @@
 
       var first = interpreter.CodeStack.Top;
-      var second = interpreter.CodeStack.ReverseElementAt(1);
+      var second = interpreter.CodeStack[1];
+
       PushProgram firstProgram = null;
       PushProgram secondProgram = null;
@@ -130,7 +135,4 @@
 
       interpreter.CodeStack.Pop();
-
-      //var first = interpreter.CodeStack.Pop();
-      //var second = interpreter.CodeStack.Top;
 
       PushProgram result;
@@ -269,5 +271,5 @@
     public override bool Eval(IInternalPushInterpreter interpreter) {
       if ((interpreter.CodeStack.Count < 2) ||
-          (interpreter.CodeStack[interpreter.CodeStack.Count - 2].GetType() !=
+          (interpreter.CodeStack[1].GetType() !=
            typeof(PushProgram))) return false;
 
@@ -308,13 +310,13 @@
     public override bool Eval(IInternalPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2 ||
-         !interpreter.CodeStack[interpreter.CodeStack.Count - 2].IsProgram)
+         !interpreter.CodeStack[1].IsProgram)
         return false;
 
-      var values = interpreter.CodeStack.Pop(2);
-      var second = (PushProgram)values[0];
-      var contains = second.Expressions.Contains(values[1]);
-
+      var second = (PushProgram)interpreter.CodeStack[1];
+      var first = interpreter.CodeStack.Top;
+      interpreter.CodeStack.Remove(2);
+
+      var contains = second.Expressions.Contains(first);
       interpreter.BooleanStack.Push(contains);
-
       return true;
     }
@@ -371,13 +373,15 @@
       if (interpreter.CodeStack.Count < 2) return false;
 
-      var expressions = interpreter.CodeStack.Pop(2);
+      var second = interpreter.CodeStack[1];
+      var first = interpreter.CodeStack.Top;
+      interpreter.CodeStack.Remove(2);
+
       var firstItems = new Dictionary<int, int>();
       var secondItems = new Dictionary<int, int>();
 
-      DetermineUniqueItems(expressions[0], secondItems);
-      DetermineUniqueItems(expressions[1], firstItems);
+      DetermineUniqueItems(second, secondItems);
+      DetermineUniqueItems(first, firstItems);
 
       var discrepancy = GetDiscrepancy(firstItems, secondItems);
-
       interpreter.IntegerStack.Push(discrepancy);
 
@@ -522,5 +526,5 @@
         return false;
 
-      var source = interpreter.CodeStack[interpreter.CodeStack.Count - 2];
+      var source = interpreter.CodeStack[1];
       var target = (PushProgram)interpreter.CodeStack.Pop();
       var index = (int)interpreter.IntegerStack.Pop();
@@ -577,5 +581,5 @@
       if (interpreter.CodeStack.Count < 2 ||
          (interpreter.CodeStack.Top.IsProgram && ((PushProgram)interpreter.CodeStack.Top).Depth == interpreter.Configuration.MaxDepth) ||
-         (interpreter.CodeStack.ReverseElementAt(1).IsProgram && ((PushProgram)interpreter.CodeStack.ReverseElementAt(1)).Depth == interpreter.Configuration.MaxDepth))
+         (interpreter.CodeStack[1].IsProgram && ((PushProgram)interpreter.CodeStack[1]).Depth == interpreter.Configuration.MaxDepth))
         return false;
 
@@ -604,9 +608,11 @@
       if (interpreter.CodeStack.Count < 2) return false;
 
-      var expressions = interpreter.CodeStack.Pop(2);
-
-      var contains = expressions[1].IsProgram
-          ? ((PushProgram)expressions[1]).Expressions.Contains(expressions[0])
-          : expressions[1].Equals(expressions[0]);
+      var first = interpreter.CodeStack[1];
+      var second = interpreter.CodeStack.Top;
+      interpreter.CodeStack.Remove(2);
+
+      var contains = second.IsProgram
+          ? ((PushProgram)second).Expressions.Contains(first)
+          : second.Equals(first);
 
       interpreter.BooleanStack.Push(contains);
@@ -714,7 +720,7 @@
       if (interpreter.CodeStack.Count < 2) return false;
 
-      var expressions = interpreter.CodeStack.Pop(2);
-      var first = expressions[1];
-      var second = expressions[0];
+      var second = interpreter.CodeStack[1];
+      var first = interpreter.CodeStack.Top;
+      interpreter.CodeStack.Remove(2);
 
       var position = -1;
@@ -765,8 +771,9 @@
         return false;
 
-      var expressions = interpreter.CodeStack.Pop(2);
-      var third = interpreter.CodeStack.Top;
-      var second = expressions[0];
-      var first = expressions[1] as PushProgram;
+      var third = interpreter.CodeStack[2];
+      var second = interpreter.CodeStack[1];
+      var first = interpreter.CodeStack.Top as PushProgram;
+      interpreter.CodeStack.Remove(2);
+
       var firstExpressions = first.Expressions;
       var newExpressions = interpreter.PoolContainer.ExpressionListPool.Get();
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DefineExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DefineExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DefineExpressions.cs	(revision 14875)
@@ -132,3 +132,36 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].DEFINE", StackTypes.Name)]
+  public class FloatVectorDefineExpression : DefineExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(
+        interpreter.FloatVectorStack,
+        interpreter.NameStack,
+        interpreter.CustomExpressions,
+        v => new FloatVectorPushExpression(v));
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].DEFINE", StackTypes.Name)]
+  public class BooleanVectorDefineExpression : DefineExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(
+        interpreter.BooleanVectorStack,
+        interpreter.NameStack,
+        interpreter.CustomExpressions,
+        v => new BooleanVectorPushExpression(v));
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].DEFINE", StackTypes.Name)]
+  public class StringVectorDefineExpression : DefineExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(
+        interpreter.StringVectorStack,
+        interpreter.NameStack,
+        interpreter.CustomExpressions,
+        v => new StringVectorPushExpression(v));
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoRangeExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoRangeExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoRangeExpressions.cs	(revision 14875)
@@ -13,5 +13,5 @@
       return interpreter.IntegerStack.Count < 2 ||
              sourceStack.Count == 0 ||
-             interpreter.IntegerStack.Top == interpreter.IntegerStack.ReverseElementAt(1);
+             interpreter.IntegerStack.Top == interpreter.IntegerStack[1];
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs	(revision 14875)
@@ -69,3 +69,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].DUP")]
+  public class FloatVectorDuplicateExpression : DuplicateExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return this.Eval(interpreter.FloatVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].DUP")]
+  public class BooleanVectorDuplicateExpression : DuplicateExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return this.Eval(interpreter.BooleanVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].DUP")]
+  public class StringVectorDuplicateExpression : DuplicateExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return this.Eval(interpreter.StringVectorStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EmptyExpresssion.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EmptyExpresssion.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EmptyExpresssion.cs	(revision 14875)
@@ -73,3 +73,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].EMPTY", StackTypes.Boolean)]
+  public class FloatVectorEmptyExpression : EmptyExpresssion<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack, interpreter.BooleanStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].EMPTY", StackTypes.Boolean)]
+  public class BooleanVectorEmptyExpression : EmptyExpresssion<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack, interpreter.BooleanStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].EMPTY", StackTypes.Boolean)]
+  public class StringVectorEmptyExpression : EmptyExpresssion<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack, interpreter.BooleanStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EqualsExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EqualsExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EqualsExpressions.cs	(revision 14875)
@@ -15,7 +15,9 @@
       if (stack.Count < 2) return false;
 
-      var items = stack.Pop(2);
+      var first = stack[1];
+      var second = stack.Top;
+      stack.Remove(2);
 
-      booleanStack.Push(items[0].Equals(items[1]));
+      booleanStack.Push(first.Equals(second));
 
       return true;
@@ -35,6 +37,9 @@
       if (interpreter.FloatStack.Count < 2) return false;
 
-      var items = interpreter.FloatStack.Pop(2);
-      interpreter.BooleanStack.Push(items[0].IsAlmost(items[1]));
+      var first = interpreter.FloatStack[1];
+      var second = interpreter.FloatStack.Top;
+      interpreter.FloatStack.Remove(2);
+
+      interpreter.BooleanStack.Push(first.IsAlmost(second));
       return true;
     }
@@ -89,3 +94,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].=", StackTypes.Boolean)]
+  public class FloatVectorEqualsExpression : EqualsExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack, interpreter.BooleanStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].=", StackTypes.Boolean)]
+  public class BooleanVectorEqualsExpression : EqualsExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack, interpreter.BooleanStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].=", StackTypes.Boolean)]
+  public class StringVectorEqualsExpression : EqualsExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack, interpreter.BooleanStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs	(revision 14875)
@@ -86,11 +86,11 @@
       // check max depth
       if ((interpreter.ExecStack.Top is PushProgram && ((PushProgram)interpreter.ExecStack.Top).Depth == interpreter.Configuration.MaxDepth) ||
-          (interpreter.ExecStack.ReverseElementAt(1) is PushProgram && ((PushProgram)interpreter.ExecStack.ReverseElementAt(1)).Depth == interpreter.Configuration.MaxDepth))
+          (interpreter.ExecStack[1] is PushProgram && ((PushProgram)interpreter.ExecStack[1]).Depth == interpreter.Configuration.MaxDepth))
         return false;
 
-      var expression = interpreter.ExecStack.Pop(2);
-      var a = expression[1];
-      var b = expression[0];
-      var c = interpreter.ExecStack.Top;
+      var a = interpreter.ExecStack.Top;
+      var b = interpreter.ExecStack[1];
+      var c = interpreter.ExecStack[2];
+      interpreter.ExecStack.Remove(2);
 
       var expressions = interpreter.PoolContainer.ExpressionListPool.Get();
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExpressionTable.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExpressionTable.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExpressionTable.cs	(revision 14875)
@@ -4,22 +4,23 @@
   using System.Linq;
 
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Data.Pool;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
+  using Attributes;
+  using Data.Pool;
+  using Stack;
 
   public static class ExpressionTable {
-    public static readonly IDictionary<string, Expression> StatelessExpressionTable;
-    public static readonly IDictionary<string, Func<Expression>> StatefulExpressionFactory;
-    public static readonly IDictionary<StackTypes, IList<string>> StackTypeToNamesTable = new Dictionary<StackTypes, IList<string>>();
-    public static readonly IDictionary<int, string> IndexToNameTable = new Dictionary<int, string>();
-    public static readonly IDictionary<Type, string> TypeToNameTable = new Dictionary<Type, string>();
-    public static readonly IDictionary<Type, PushExpressionAttribute> TypeToAttributeTable = new Dictionary<Type, PushExpressionAttribute>();
-    public static readonly IDictionary<StackTypes, IList<string>> StackDependencyToNamesTable = new Dictionary<StackTypes, IList<string>>();
-    public static readonly string[] ExpressionNames;
-
-    public static readonly Type[] StatelessExpressionTypes;
-    public static readonly Type[] StatefulExpressionTypes;
-
-    public static readonly int Count;
+    public static readonly IReadOnlyDictionary<string, Expression> StatelessExpressionTable;
+    public static readonly IReadOnlyDictionary<string, Func<Expression>> StatefulExpressionFactory;
+    public static readonly IReadOnlyList<string> ExpressionNames;
+    public static readonly int ExpressionCount;
+
+    private static readonly Dictionary<int, string> indexToNameTable = new Dictionary<int, string>();
+    private static readonly Dictionary<Type, string> typeToNameTable = new Dictionary<Type, string>();
+    private static readonly Dictionary<string, Type> nameToTypeTable = new Dictionary<string, Type>();
+    private static readonly Dictionary<StackTypes, IList<string>> stackTypeToNamesTable = new Dictionary<StackTypes, IList<string>>();
+    private static readonly Dictionary<StackTypes, IList<string>> stackDependencyToNamesTable = new Dictionary<StackTypes, IList<string>>();
+    private static readonly Dictionary<Type, PushExpressionAttribute> typeToAttributeTable = new Dictionary<Type, PushExpressionAttribute>();
+
+    public static readonly IReadOnlyList<Type> StatelessExpressionTypes;
+    public static readonly IReadOnlyList<Type> StatefulExpressionTypes;
 
     static ExpressionTable() {
@@ -31,22 +32,13 @@
       ExpressionNames = StatelessExpressionTable.Keys.Concat(StatefulExpressionFactory.Keys).ToArray();
 
-      Count = StatelessExpressionTable.Count + StatefulExpressionFactory.Count;
-    }
-
-    public static int StatelessCount
-    {
-      get
-      {
-        return StatelessExpressionTable.Count;
-      }
-    }
-
-    public static int StatefullCount
-    {
-      get
-      {
-        return StatefulExpressionFactory.Count;
-      }
-    }
+      ExpressionCount = StatelessExpressionTable.Count + StatefulExpressionFactory.Count;
+    }
+
+    public static IReadOnlyDictionary<int, string> IndexToNameTable { get { return indexToNameTable; } }
+    public static IReadOnlyDictionary<Type, string> TypeToNameTable { get { return typeToNameTable; } }
+    public static IReadOnlyDictionary<string, Type> NameToTypeTable { get { return nameToTypeTable; } }
+    public static IReadOnlyDictionary<StackTypes, IList<string>> StackTypeToNamesTable { get { return stackTypeToNamesTable; } }
+    public static IReadOnlyDictionary<StackTypes, IList<string>> StackDependencyToNamesTable { get { return stackDependencyToNamesTable; } }
+    public static IReadOnlyDictionary<Type, PushExpressionAttribute> TypeToAttributeTable { get { return typeToAttributeTable; } }
 
     private static Dictionary<string, Expression> GetStatelessExpressionTable() {
@@ -57,21 +49,22 @@
         var attribute = (PushExpressionAttribute)Attribute.GetCustomAttribute(type, typeof(PushExpressionAttribute));
 
-        TypeToAttributeTable.Add(type, attribute);
+        typeToAttributeTable.Add(type, attribute);
         dictionary.Add(attribute.ExpressionName, expression);
-        IndexToNameTable.Add(IndexToNameTable.Keys.Count, attribute.ExpressionName);
-        TypeToNameTable.Add(type, attribute.ExpressionName);
-
-        if (!StackTypeToNamesTable.ContainsKey(attribute.StackType)) {
-          StackTypeToNamesTable.Add(attribute.StackType, new List<string>());
-        }
-
-        StackTypeToNamesTable[attribute.StackType].Add(attribute.ExpressionName);
+        indexToNameTable.Add(indexToNameTable.Keys.Count, attribute.ExpressionName);
+        typeToNameTable.Add(type, attribute.ExpressionName);
+        nameToTypeTable.Add(attribute.ExpressionName, type);
+
+        if (!stackTypeToNamesTable.ContainsKey(attribute.StackType)) {
+          stackTypeToNamesTable.Add(attribute.StackType, new List<string>());
+        }
+
+        stackTypeToNamesTable[attribute.StackType].Add(attribute.ExpressionName);
 
         var dependencies = attribute.StackType | attribute.AdditionalStackDependencies;
-        if (!StackDependencyToNamesTable.ContainsKey(dependencies)) {
-          StackDependencyToNamesTable.Add(dependencies, new List<string>());
-        }
-
-        StackDependencyToNamesTable[dependencies].Add(attribute.ExpressionName);
+        if (!stackDependencyToNamesTable.ContainsKey(dependencies)) {
+          stackDependencyToNamesTable.Add(dependencies, new List<string>());
+        }
+
+        stackDependencyToNamesTable[dependencies].Add(attribute.ExpressionName);
       }
 
@@ -90,21 +83,22 @@
         var attribute = (PushExpressionAttribute)Attribute.GetCustomAttribute(type, typeof(PushExpressionAttribute));
 
-        TypeToAttributeTable.Add(type, attribute);
+        typeToAttributeTable.Add(type, attribute);
         dictionary.Add(attribute.ExpressionName, creator);
-        IndexToNameTable.Add(IndexToNameTable.Keys.Count, attribute.ExpressionName);
-        TypeToNameTable.Add(type, attribute.ExpressionName);
-
-        if (!StackTypeToNamesTable.ContainsKey(attribute.StackType)) {
-          StackTypeToNamesTable.Add(attribute.StackType, new List<string>());
-        }
-
-        StackTypeToNamesTable[attribute.StackType].Add(attribute.ExpressionName);
+        indexToNameTable.Add(indexToNameTable.Keys.Count, attribute.ExpressionName);
+        typeToNameTable.Add(type, attribute.ExpressionName);
+        nameToTypeTable.Add(attribute.ExpressionName, type);
+
+        if (!stackTypeToNamesTable.ContainsKey(attribute.StackType)) {
+          stackTypeToNamesTable.Add(attribute.StackType, new List<string>());
+        }
+
+        stackTypeToNamesTable[attribute.StackType].Add(attribute.ExpressionName);
 
         var dependencies = attribute.StackType | attribute.AdditionalStackDependencies;
-        if (!StackDependencyToNamesTable.ContainsKey(dependencies)) {
-          StackDependencyToNamesTable.Add(dependencies, new List<string>());
-        }
-
-        StackDependencyToNamesTable[dependencies].Add(attribute.ExpressionName);
+        if (!stackDependencyToNamesTable.ContainsKey(dependencies)) {
+          stackDependencyToNamesTable.Add(dependencies, new List<string>());
+        }
+
+        stackDependencyToNamesTable[dependencies].Add(attribute.ExpressionName);
       }
 
@@ -146,5 +140,5 @@
 
     public static IReadOnlyList<string> GetExpressionsByStackTypes(StackTypes allowedTypes) {
-      return StackDependencyToNamesTable
+      return stackDependencyToNamesTable
           .Where(entry => (entry.Key & ~allowedTypes) == StackTypes.None)
           .SelectMany(entry => entry.Value)
@@ -163,5 +157,10 @@
 
     public static Expression GetExpression(int index) {
-      return GetExpression(IndexToNameTable[index]);
+      return GetExpression(indexToNameTable[index]);
+    }
+
+    public static Expression GetExpression(Type type) {
+      var name = TypeToNameTable[type];
+      return GetExpression(name);
     }
 
@@ -177,5 +176,5 @@
 
     public static Expression GetStatelessExpression<T>() where T : StatelessExpression {
-      return GetStatelessExpression(TypeToNameTable[typeof(T)]);
+      return GetStatelessExpression(typeToNameTable[typeof(T)]);
     }
 
@@ -198,5 +197,5 @@
 
     public static Expression GetStatefulExpression<T>() {
-      return GetStatefulExpression(TypeToNameTable[typeof(T)]);
+      return GetStatefulExpression(typeToNameTable[typeof(T)]);
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FloatExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FloatExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FloatExpressions.cs	(revision 14875)
@@ -10,15 +10,18 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.+")]
-  public class FloatAddExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2,
-        values => {
-          var result = values[0] + values[1];
-
-          if (double.IsPositiveInfinity(result)) return double.MaxValue;
-          if (double.IsNegativeInfinity(result)) return double.MinValue;
-
-          return result;
-        });
+  public class FloatAddExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = second + first;
+
+      if (double.IsPositiveInfinity(result)) result = double.MaxValue;
+      if (double.IsNegativeInfinity(result)) result = double.MinValue;
+
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -28,15 +31,18 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.-")]
-  public class FloatSubtractExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2,
-        values => {
-          var result = values[0] - values[1];
-
-          if (double.IsPositiveInfinity(result)) return double.MaxValue;
-          if (double.IsNegativeInfinity(result)) return double.MinValue;
-
-          return result;
-        });
+  public class FloatSubtractExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = second - first;
+
+      if (double.IsPositiveInfinity(result)) result = double.MaxValue;
+      if (double.IsNegativeInfinity(result)) result = double.MinValue;
+
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -46,15 +52,18 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.*")]
-  public class FloatMultiplyExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2,
-        values => {
-          var result = values[0] * values[1];
-
-          if (double.IsPositiveInfinity(result)) return double.MaxValue;
-          if (double.IsNegativeInfinity(result)) return double.MinValue;
-
-          return result;
-        });
+  public class FloatMultiplyExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = second * first;
+
+      if (double.IsPositiveInfinity(result)) result = double.MaxValue;
+      if (double.IsNegativeInfinity(result)) result = double.MinValue;
+
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -65,14 +74,19 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT./")]
-  public class FloatDivideExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2, values => {
-        var result = values[0] / values[1];
-
-        if (double.IsPositiveInfinity(result)) return double.MaxValue;
-        if (double.IsNegativeInfinity(result)) return double.MinValue;
-
-        return result;
-      }, 0);
+  public class FloatDivideExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2 ||
+          interpreter.FloatStack.Top.IsAlmost(0))
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = second / first;
+
+      if (double.IsPositiveInfinity(result)) result = double.MaxValue;
+      if (double.IsNegativeInfinity(result)) result = double.MinValue;
+
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -86,7 +100,16 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.%")]
-  public class FloatModuloExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2, values => values[0] % values[1], 0);
+  public class FloatModuloExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2 ||
+          interpreter.FloatStack.Top.IsAlmost(0))
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = second % first;
+
+      interpreter.FloatStack.SetTop(result);
+      return true; ;
     }
   }
@@ -96,7 +119,15 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.MIN")]
-  public class FloatMinExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2, values => Math.Min(values[0], values[1]));
+  public class FloatMinExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = Math.Min(second, first);
+
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -106,7 +137,15 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.MAX")]
-  public class FloatMaxExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 2, values => Math.Max(values[0], values[1]));
+  public class FloatMaxExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Pop();
+      var second = interpreter.FloatStack.Top;
+      var result = Math.Max(second, first);
+
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -116,7 +155,16 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.<", StackTypes.Boolean)]
-  public class FloatSmallerThanExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, interpreter.BooleanStack, 2, values => values[0] < values[1]);
+  public class FloatSmallerThanExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Top;
+      var second = interpreter.FloatStack[1];
+      interpreter.FloatStack.Remove(2);
+
+      var result = second < first;
+      interpreter.BooleanStack.Push(result);
+      return true;
     }
   }
@@ -126,7 +174,16 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.<=", StackTypes.Boolean)]
-  public class FloatSmallerThanOrEqualExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, interpreter.BooleanStack, 2, values => values[0] < values[1] || values[0].IsAlmost(values[1]));
+  public class FloatSmallerThanOrEqualExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Top;
+      var second = interpreter.FloatStack[1];
+      interpreter.FloatStack.Remove(2);
+
+      var result = second < first || second.IsAlmost(first);
+      interpreter.BooleanStack.Push(result);
+      return true;
     }
   }
@@ -136,7 +193,16 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.>", StackTypes.Boolean)]
-  public class FloatGreaterThanExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, interpreter.BooleanStack, 2, values => values[0] > values[1]);
+  public class FloatGreaterThanExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Top;
+      var second = interpreter.FloatStack[1];
+      interpreter.FloatStack.Remove(2);
+
+      var result = second > first;
+      interpreter.BooleanStack.Push(result);
+      return true;
     }
   }
@@ -146,7 +212,16 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.>=", StackTypes.Boolean)]
-  public class FloatGreaterThanOrEqualExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, interpreter.BooleanStack, 2, values => values[0] > values[1] || values[0].IsAlmost(values[1]));
+  public class FloatGreaterThanOrEqualExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.Count < 2)
+        return false;
+
+      var first = interpreter.FloatStack.Top;
+      var second = interpreter.FloatStack[1];
+      interpreter.FloatStack.Remove(2);
+
+      var result = second > first || second.IsAlmost(first);
+      interpreter.BooleanStack.Push(result);
+      return true;
     }
   }
@@ -156,7 +231,12 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.SIN")]
-  public class FloatSineExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 1, values => Math.Sin(values[0]));
+  public class FloatSineExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.IsEmpty)
+        return false;
+
+      var result = Math.Sin(interpreter.FloatStack.Top);
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
@@ -166,7 +246,12 @@
   /// </summary>
   [PushExpression(StackTypes.Float, "FLOAT.COS")]
-  public class FloatCosineExpression : PushResultExpression<double> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.FloatStack, 1, values => Math.Cos(values[0]));
+  public class FloatCosineExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.FloatStack.IsEmpty)
+        return false;
+
+      var result = Math.Cos(interpreter.FloatStack.Top);
+      interpreter.FloatStack.SetTop(result);
+      return true;
     }
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FlushExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FlushExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FlushExpressions.cs	(revision 14875)
@@ -80,3 +80,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].FLUSH")]
+  public class FloatVectorFlushExpression : FlushExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].FLUSH")]
+  public class BooleanVectorFlushExpression : FlushExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].FLUSH")]
+  public class StringVectorFlushExpression : FlushExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.cs	(revision 14875)
@@ -11,7 +11,15 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.+")]
-  public class IntegerAddExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => values[0] + values[1]);
+  public class IntegerAddExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = second + first;
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -21,7 +29,15 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.-")]
-  public class IntegerSubtractExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => values[0] - values[1]);
+  public class IntegerSubtractExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = second - first;
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -31,7 +47,15 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.*")]
-  public class IntegerMultiplyExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => values[0] * values[1]);
+  public class IntegerMultiplyExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = second * first;
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -42,7 +66,16 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER./")]
-  public class IntegerDivideExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => values[0] / values[1], 0);
+  public class IntegerDivideExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2 ||
+          interpreter.IntegerStack.Top == 0)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = second / first;
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -50,14 +83,21 @@
   /// <summary>
   ///     Pushes the second stack item modulo the top stack item. If the top item is zero this acts as a NOOP. The modulus is
-  ///     computed as the
-  ///     remainder of the quotient, where the quotient has first been truncated toward negative infinity. (This is taken
-  ///     from the definition
-  ///     for the generic MOD function in Common Lisp, which is described for example at
+  ///     computed as the remainder of the quotient, where the quotient has first been truncated toward negative infinity. (This is taken
+  ///     from the definition for the generic MOD function in Common Lisp, which is described for example at
   ///     http://www.lispworks.com/reference/HyperSpec/Body/f_mod_r.htm.)
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.%")]
-  public class IntegerModuloExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => values[0] % values[1], 0);
+  public class IntegerModuloExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2 ||
+          interpreter.IntegerStack.Top == 0)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = second % first;
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -67,7 +107,15 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.MIN")]
-  public class IntegerMinExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => Math.Min(values[0], values[1]));
+  public class IntegerMinExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = Math.Min(second, first);
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -77,7 +125,15 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.MAX")]
-  public class IntegerMaxExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, 2, values => Math.Max(values[0], values[1]));
+  public class IntegerMaxExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Pop();
+      var second = interpreter.IntegerStack.Top;
+      var result = Math.Max(second, first);
+
+      interpreter.IntegerStack.SetTop(result);
+      return true;
     }
   }
@@ -87,7 +143,16 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.<", StackTypes.Boolean)]
-  public class IntegerSmallerThanExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, interpreter.BooleanStack, 2, values => values[0] < values[1]);
+  public class IntegerSmallerThanExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Top;
+      var second = interpreter.IntegerStack[1];
+      interpreter.IntegerStack.Remove(2);
+
+      var result = second < first;
+      interpreter.BooleanStack.Push(result);
+      return true;
     }
   }
@@ -97,7 +162,16 @@
   /// </summary>
   [PushExpression(StackTypes.Integer, "INTEGER.>", StackTypes.Boolean)]
-  public class IntegerGreaterThanExpression : PushResultExpression<long> {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, interpreter.BooleanStack, 2, values => values[0] > values[1]);
+  public class IntegerGreaterThanExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.IntegerStack.Count < 2)
+        return false;
+
+      var first = interpreter.IntegerStack.Top;
+      var second = interpreter.IntegerStack[1];
+      interpreter.IntegerStack.Remove(2);
+
+      var result = second > first;
+      interpreter.BooleanStack.Push(result);
+      return true;
     }
   }
@@ -109,11 +183,10 @@
   public class IntegerFromBooleanExpression : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      if (interpreter.BooleanStack.Count == 0) return false;
+      if (interpreter.BooleanStack.Count == 0)
+        return false;
 
       var condition = interpreter.BooleanStack.Pop();
       var value = condition ? 1 : 0;
-
       interpreter.IntegerStack.Push(value);
-
       return true;
     }
@@ -126,10 +199,9 @@
   public class IntegerFromFloatExpression : StatelessExpression {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      if (interpreter.FloatStack.Count == 0) return false;
+      if (interpreter.FloatStack.Count == 0)
+        return false;
 
       var value = (int)interpreter.FloatStack.Pop();
-
       interpreter.IntegerStack.Push(value);
-
       return true;
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.cs	(revision 14875)
@@ -78,3 +78,27 @@
     }
   }
+
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].POP")]
+  public class FloatVectorPopExpression : PopExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack);
+    }
+  }
+
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].POP")]
+  public class BooleanVectorPopExpression : PopExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack);
+    }
+  }
+
+
+  [PushExpression(StackTypes.StringVector, "STRING[].POP")]
+  public class StringVectorPopExpression : PopExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushExpressions.cs	(revision 14875)
@@ -96,3 +96,33 @@
     }
   }
+
+  public class FloatVectorPushExpression : PushExpression<List<double>> {
+    public FloatVectorPushExpression(List<double> state)
+      : base(state) {
+    }
+
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack);
+    }
+  }
+
+  public class BooleanVectorPushExpression : PushExpression<List<bool>> {
+    public BooleanVectorPushExpression(List<bool> state)
+      : base(state) {
+    }
+
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack);
+    }
+  }
+
+  public class StringVectorPushExpression : PushExpression<List<string>> {
+    public StringVectorPushExpression(List<string> state)
+      : base(state) {
+    }
+
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushProgram.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushProgram.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushProgram.cs	(revision 14875)
@@ -280,5 +280,5 @@
 
     private int HashExpressions() {
-      var hash = 19 * 31 + this.GetType().FullName.GetHashCode();
+      var hash = 19 * 31 + typeof(PushProgram).GetHashCode();
 
       for (var i = 0; i < Count; i++) {
@@ -296,5 +296,5 @@
       visited.Add(current);
       if (level <= 0) {
-        // hirarchy depth > level
+        // hierarchy depth > level
         Debugger.Break();
         return;
Index: anches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushResultExpression.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushResultExpression.cs	(revision 14874)
+++ 	(revision )
@@ -1,31 +1,0 @@
-﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
-  using System;
-
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
-
-  public abstract class PushResultExpression<T> : StatelessExpression {
-    protected bool Eval(IPushStack<T> stack, int count, Func<T[], T> templateFunc) {
-      if (stack.Count < count) return false;
-
-      stack.PushResult(count, templateFunc);
-      return true;
-    }
-
-    protected bool Eval(IPushStack<T> stack, int count, Func<T[], T> templateFunc, T ignoreValue) {
-      if ((stack.Count < count) || stack.Top.Equals(ignoreValue)) return false;
-
-      stack.PushResult(count, templateFunc);
-      return true;
-    }
-
-    protected bool Eval<R>(IPushStack<T> stack, IPushStack<R> resultStack, int count, Func<T[], R> templateFunc) {
-      if (stack.Count < count) return false;
-
-      var items = stack.Pop(count);
-      var result = templateFunc(items);
-
-      resultStack.Push(result);
-      return true;
-    }
-  }
-}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RotateExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RotateExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RotateExpressions.cs	(revision 14875)
@@ -79,3 +79,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].ROT")]
+  public class FloatVectorRotateExpression : RotateExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].ROT")]
+  public class BooleanVectorRotateExpression : RotateExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].ROT")]
+  public class StringVectorRotateExpression : RotateExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ShoveExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ShoveExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ShoveExpressions.cs	(revision 14875)
@@ -1,21 +1,18 @@
 ﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
+  using System;
   using System.Collections.Generic;
 
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
-
+  using Attributes;
   using Interpreter;
   using Stack;
 
   public abstract class ShoveExpression<T> : StatelessExpression {
-    protected bool Eval(IPushStack<T> stack, IPushStack<long> integerStack, int count = 1) {
-      if (integerStack.Count == 0 ||
-          integerStack.Top > stack.Count - count ||
-          integerStack.Top < 0 ||
-          stack.Count < 2)
+    protected bool Eval(IPushStack<T> stack, IPushStack<long> integerStack) {
+      if ((stack == integerStack && integerStack.Count < 3) ||
+          (stack != integerStack && (integerStack.IsEmpty || stack.Count < 2)))
         return false;
 
-      var index = (int)integerStack.Pop();
+      var index = (int)Math.Abs(integerStack.Pop() % stack.Count);
       var item = stack.Pop();
-
       stack.Insert(index, item);
       return true;
@@ -26,5 +23,5 @@
   public class IntegerShoveExpression : ShoveExpression<long> {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return Eval(interpreter.IntegerStack, interpreter.IntegerStack, 2);
+      return Eval(interpreter.IntegerStack, interpreter.IntegerStack);
     }
   }
@@ -85,3 +82,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].SHOVE", StackTypes.Integer)]
+  public class FloatVectorShoveExpression : ShoveExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].SHOVE", StackTypes.Integer)]
+  public class BooleanVectorShoveExpression : ShoveExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].SHOVE", StackTypes.Integer)]
+  public class StringVectorShoveExpression : ShoveExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack, interpreter.IntegerStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs	(revision 14875)
@@ -85,3 +85,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].STACKDEPTH", StackTypes.Integer)]
+  public class FloatVectorStackdepthExpression : StackdepthExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].STACKDEPTH", StackTypes.Integer)]
+  public class BooleanVectorStackdepthExpression : StackdepthExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].STACKDEPTH", StackTypes.Integer)]
+  public class StringVectorStackdepthExpression : StackdepthExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack, interpreter.IntegerStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatelessExpression.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatelessExpression.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatelessExpression.cs	(revision 14875)
@@ -1,15 +1,17 @@
 ﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
   public abstract class StatelessExpression : Expression {
-    private readonly int hashCode;
+    private int hashCode;
+
     protected StatelessExpression() {
-      this.hashCode = this.GetType().GetHashCode();
+      hashCode = GetType().GetHashCode();
     }
 
     public override int GetHashCode() {
-      return this.hashCode;
+      return hashCode;
     }
 
     public override bool Equals(object obj) {
-      return ReferenceEquals(this, obj);
+      return ReferenceEquals(this, obj) ||
+             hashCode == obj.GetHashCode();
     }
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StringExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StringExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StringExpressions.cs	(revision 14875)
@@ -59,5 +59,5 @@
     public override bool Eval(IInternalPushInterpreter interpreter) {
       if (interpreter.StringStack.Count < 2 ||
-        interpreter.StringStack.Top.Length + interpreter.StringStack.ReverseElementAt(1).Length >= interpreter.Configuration.MaxStringLength)
+        interpreter.StringStack.Top.Length + interpreter.StringStack[1].Length >= interpreter.Configuration.MaxStringLength)
         return false;
 
@@ -117,7 +117,10 @@
 
       var str = interpreter.StringStack.Top;
-      var values = interpreter.IntegerStack.Pop(2);
-      var first = Math.Min(str.Length - 1, Math.Max(values[0], 0));
-      var second = Math.Min(str.Length - 1, Math.Max(values[1], first));
+      var firstValue = interpreter.IntegerStack[1];
+      var secondValue = interpreter.IntegerStack.Top;
+      interpreter.IntegerStack.Remove(2);
+
+      var first = Math.Min(str.Length - 1, Math.Max(firstValue, 0));
+      var second = Math.Min(str.Length - 1, Math.Max(secondValue, first));
       var length = second - first;
 
@@ -293,6 +296,9 @@
         return false;
 
-      var strings = interpreter.StringStack.Pop(2);
-      interpreter.BooleanStack.Push(strings[0].IndexOf(strings[1], StringComparison.Ordinal) >= 0);
+      var first = interpreter.StringStack[1];
+      var second = interpreter.StringStack.Top;
+      interpreter.StringStack.Remove(2);
+
+      interpreter.BooleanStack.Push(first.IndexOf(second, StringComparison.Ordinal) >= 0);
       return true;
     }
@@ -366,10 +372,12 @@
         return false;
 
-      var strings = interpreter.StringStack.Pop(2);
-
-      if (strings[0].Length == 0 || strings[1].Length == 0)
-        interpreter.StringStack.SetTop(strings[0]);
+      var first = interpreter.StringStack[1];
+      var second = interpreter.StringStack.Top;
+      interpreter.StringStack.Remove(2);
+
+      if (first.Length == 0 || second.Length == 0)
+        interpreter.StringStack.SetTop(first);
       else {
-        var result = strings[0].Replace(strings[1], interpreter.StringStack.Top);
+        var result = first.Replace(second, interpreter.StringStack.Top);
         interpreter.StringStack.SetTop(result);
       }
@@ -388,57 +396,67 @@
         return false;
 
-      var strings = interpreter.StringStack.Pop(2);
-
-      var pos = strings[0].IndexOf(strings[1], StringComparison.Ordinal);
+      var first = interpreter.StringStack[0];
+      var second = interpreter.StringStack[1];
+      var third = interpreter.StringStack[2];
+      interpreter.StringStack.Remove(2);
+
+      var result = ReplaceFirst(third, second, first);
+      interpreter.StringStack.SetTop(result);
+      return true;
+    }
+
+    private static string ReplaceFirst(string text, string search, string replace) {
+      int pos = text.IndexOf(search);
+      if (pos < 0) {
+        return text;
+      }
+      return text.Substring(0, pos) + replace + text.Substring(pos + search.Length);
+    }
+  }
+
+  /// <summary>
+  /// In top string on stack, replaces all occurences of second char with first char
+  /// </summary>
+  [PushExpression(StackTypes.String, "STRING.REPLACECHAR", StackTypes.Char)]
+  public class StringReplaceCharExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.StringStack.IsEmpty ||
+          interpreter.CharStack.Count < 2)
+        return false;
+
+      var first = interpreter.CharStack[1];
+      var second = interpreter.CharStack.Top;
+      interpreter.CharStack.Remove(2);
+
+      var result = interpreter.StringStack.Top.Replace(first, second);
+      interpreter.StringStack.SetTop(result);
+      return true;
+    }
+  }
+
+  /// <summary>
+  /// In top string on stack, replaces first occurence of second char with first char
+  /// </summary>
+  [PushExpression(StackTypes.String, "STRING.REPLACEFIRSTCHAR", StackTypes.Char)]
+  public class StringReplaceLastCharExpression : StatelessExpression {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      if (interpreter.StringStack.IsEmpty ||
+          interpreter.CharStack.Count < 2)
+        return false;
+
+      var str = interpreter.StringStack.Top;
+      var first = interpreter.CharStack[1];
+      var second = interpreter.CharStack.Top;
+      interpreter.CharStack.Remove(2);
+
+      var pos = str.IndexOf(first);
 
       if (pos < 0)
         return true;
 
-      var result = strings[0].Substring(0, pos) +
-                   interpreter.StringStack.Top +
-                   strings[0].Substring(pos + strings[1].Length);
-
-      interpreter.StringStack.SetTop(result);
-      return true;
-    }
-  }
-
-  /// <summary>
-  /// In top string on stack, replaces all occurences of second char with first char
-  /// </summary>
-  [PushExpression(StackTypes.String, "STRING.REPLACECHAR", StackTypes.Char)]
-  public class StringReplaceCharExpression : StatelessExpression {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      if (interpreter.StringStack.IsEmpty ||
-          interpreter.CharStack.Count < 2)
-        return false;
-
-      var chars = interpreter.CharStack.Pop(2);
-      var result = interpreter.StringStack.Top.Replace(chars[0], chars[1]);
-      interpreter.StringStack.SetTop(result);
-      return true;
-    }
-  }
-
-  /// <summary>
-  /// In top string on stack, replaces first occurence of second char with first char
-  /// </summary>
-  [PushExpression(StackTypes.String, "STRING.REPLACEFIRSTCHAR", StackTypes.Char)]
-  public class StringReplaceLastCharExpression : StatelessExpression {
-    public override bool Eval(IInternalPushInterpreter interpreter) {
-      if (interpreter.StringStack.IsEmpty ||
-          interpreter.CharStack.Count < 2)
-        return false;
-
-      var str = interpreter.StringStack.Top;
-      var chars = interpreter.CharStack.Pop(2);
-      var pos = interpreter.StringStack.Top.IndexOf(chars[0]);
-
-      if (pos < 0)
-        return true;
-
       var result = str.Substring(0, pos) +
-                   chars[1] +
+                   second +
                    str.Substring(Math.Min(pos + 2, str.Length - 1));
+
       interpreter.StringStack.SetTop(result);
       return true;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/SwapExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/SwapExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/SwapExpressions.cs	(revision 14875)
@@ -83,3 +83,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].SWAP")]
+  public class FloatVectorSwapExpression : SwapExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].SWAP")]
+  public class BooleanVectorSwapExpression : SwapExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].SWAP")]
+  public class StringVectorSwapExpression : SwapExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorConcatExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorConcatExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorConcatExpressions.cs	(revision 14875)
@@ -12,5 +12,5 @@
     protected bool Eval(IInternalPushInterpreter interpter, IPushStack<List<T>> stack) {
       if (stack.Count < 2 ||
-          stack.Top.Count + stack.ReverseElementAt(1).Count > interpter.Configuration.MaxVectorLength)
+          stack.Top.Count + stack[1].Count > interpter.Configuration.MaxVectorLength)
         return false;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceExpressions.cs	(revision 14875)
@@ -18,5 +18,5 @@
       var vector = vectorStack.Top;
       var first = literalStack.Top;
-      var second = literalStack.ReverseElementAt(1);
+      var second = literalStack[1];
       literalStack.Remove(2);
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceFirstExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceFirstExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceFirstExpressions.cs	(revision 14875)
@@ -18,5 +18,5 @@
       var vector = vectorStack.Top;
       var first = literalStack.Top;
-      var second = literalStack.ReverseElementAt(1);
+      var second = literalStack[1];
       var index = vector.IndexOf(second);
       literalStack.Remove(2);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorSetExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorSetExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorSetExpressions.cs	(revision 14875)
@@ -27,5 +27,5 @@
       if (isLiteralTypeInteger) {
         literal = literalStack.Top;
-        index = (int)interpreter.IntegerStack.ReverseElementAt(1);
+        index = (int)interpreter.IntegerStack[1];
         interpreter.IntegerStack.Remove(2);
       } else {
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorSubExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorSubExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorSubExpressions.cs	(revision 14875)
@@ -16,5 +16,5 @@
       if (vectorStack.IsEmpty || interpreter.IntegerStack.Count < 2) return false;
 
-      var first = (int)Math.Min(vectorStack.Count, Math.Max(0, interpreter.IntegerStack.ReverseElementAt(1)));
+      var first = (int)Math.Min(vectorStack.Count, Math.Max(0, interpreter.IntegerStack[1]));
       var second = (int)Math.Min(vectorStack.Count, Math.Max(first, interpreter.IntegerStack.Top));
       interpreter.IntegerStack.Remove(2);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs	(revision 14875)
@@ -1,8 +1,8 @@
 ﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
+  using System;
   using System.Collections.Generic;
-
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
+  using Attributes;
+  using Interpreter;
+  using Stack;
 
   /// <summary>
@@ -13,44 +13,10 @@
   public abstract class YankDuplicateExpression<T> : StatelessExpression {
     public bool Eval(IPushStack<T> stack, IPushStack<long> integerStack) {
-      T item;
-      if (!this.TryGetItem(stack, integerStack, out item))
+      if ((stack == integerStack && integerStack.Count < 2) ||
+          (stack != integerStack && (integerStack.IsEmpty || stack.IsEmpty)))
         return false;
 
-      stack.Push(item);
-      return true;
-    }
-
-    public bool Eval(IPushStack<Expression> stack, IPushStack<long> integerStack) {
-      Expression item;
-      if (!this.TryGetItem(stack, integerStack, out item))
-        return false;
-
-      stack.Push(item);
-      return true;
-    }
-
-    public bool Eval(IPushStack<long> integerStack) {
-      if ((integerStack.Count < 2) || (integerStack.Top > integerStack.Count - 2) ||
-          (integerStack.Top < 0)) return false;
-
-      var index = (int)integerStack.Pop();
-      var item = integerStack.ReverseElementAt(index);
-
-      integerStack.Push(item);
-      return true;
-    }
-
-    private bool TryGetItem<E>(IPushStack<E> stack, IPushStack<long> integerStack, out E item) {
-      if ((integerStack.Count == 0) ||
-          (integerStack.Top >= stack.Count) ||
-          (integerStack.Top < 0) ||
-          (stack.Count < 2)) {
-        item = default(E);
-        return false;
-      }
-
-      var index = (int)integerStack.Pop();
-      item = stack.ReverseElementAt(index);
-
+      var index = (int)Math.Abs(integerStack.Pop() % stack.Count);
+      stack.Push(stack[index]);
       return true;
     }
@@ -60,5 +26,5 @@
   public class IntegerYankDuplicateExpression : YankDuplicateExpression<long> {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return this.Eval(interpreter.IntegerStack);
+      return this.Eval(interpreter.IntegerStack, interpreter.IntegerStack);
     }
   }
@@ -119,3 +85,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].YANKDUP", StackTypes.Integer)]
+  public class FloatVectorYankDuplicateExpression : YankDuplicateExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].YANKDUP", StackTypes.Integer)]
+  public class BooleanVectorYankDuplicateExpression : YankDuplicateExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].YANKDUP", StackTypes.Integer)]
+  public class StringVectorYankDuplicateExpression : YankDuplicateExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack, interpreter.IntegerStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankExpressions.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankExpressions.cs	(revision 14875)
@@ -1,3 +1,4 @@
 ﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
+  using System;
   using System.Collections.Generic;
 
@@ -12,14 +13,11 @@
   /// <typeparam name="T">Stacktype</typeparam>
   public abstract class YankExpression<T> : StatelessExpression {
-    public bool Eval(IPushStack<T> stack, IPushStack<long> integerStack, int count = 1) {
-      if (integerStack.Count == 0) return false;
+    public bool Eval(IPushStack<T> stack, IPushStack<long> integerStack) {
+      if ((stack == integerStack && integerStack.Count < 2) ||
+          (stack != integerStack && (integerStack.IsEmpty || stack.IsEmpty)))
+        return false;
 
-      var index = integerStack.Top;
-
-      if ((index > stack.Count - count) || (index < 0) || (stack.Count < 2)) return false;
-
-      integerStack.Pop();
-      stack.Yank((int)index);
-
+      var index = (int)Math.Abs(integerStack.Pop() % stack.Count);
+      stack.Yank(index);
       return true;
     }
@@ -29,5 +27,5 @@
   public class IntegerYankExpression : YankExpression<long> {
     public override bool Eval(IInternalPushInterpreter interpreter) {
-      return this.Eval(interpreter.IntegerStack, interpreter.IntegerStack, 2);
+      return this.Eval(interpreter.IntegerStack, interpreter.IntegerStack);
     }
   }
@@ -88,3 +86,24 @@
     }
   }
+
+  [PushExpression(StackTypes.FloatVector, "FLOAT[].YANK", StackTypes.Integer)]
+  public class FloatVectorYankExpression : YankExpression<List<double>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.FloatVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].YANK", StackTypes.Integer)]
+  public class BooleanVectorYankExpression : YankExpression<List<bool>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.BooleanVectorStack, interpreter.IntegerStack);
+    }
+  }
+
+  [PushExpression(StackTypes.StringVector, "STRING[].YANK", StackTypes.Integer)]
+  public class StringVectorYankExpression : YankExpression<List<string>> {
+    public override bool Eval(IInternalPushInterpreter interpreter) {
+      return Eval(interpreter.StringVectorStack, interpreter.IntegerStack);
+    }
+  }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/CodeGenerator/CodeGeneratorUtils.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/CodeGenerator/CodeGeneratorUtils.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/CodeGenerator/CodeGeneratorUtils.cs	(revision 14875)
@@ -3,22 +3,11 @@
 
 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Generators.CodeGenerator {
+
   using HeuristicLab.Core;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Erc.Interfaces;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
 
   internal static class CodeGeneratorUtils {
-    internal static Expression CreateExpression(IRandom random, IReadOnlyList<string> enabledExpressions, IDictionary<string, Expression> customExpressions = null) {
-      var customCount = customExpressions == null ? 0 : customExpressions.Count;
-      var index = random.Next(0, enabledExpressions.Count + customCount);
-
-      if ((index >= 0) && (index < enabledExpressions.Count)) {
-        var name = enabledExpressions[index];
-        return ExpressionTable.GetExpression(name);
-      }
-
-      return customExpressions.ElementAt(index - (enabledExpressions.Count - 1)).Value;
-    }
-
     internal static Expression CreateExpressionOrErc(
       IRandom random,
@@ -26,6 +15,10 @@
       IReadOnlyErcOptions ercOptions,
       IDictionary<string, Expression> customExpressions = null) {
-      var expression = CreateExpression(random, enabledExpressions, customExpressions);
-      return CreateExpressionOrErc(expression, random, ercOptions);
+      var customCount = customExpressions == null ? 0 : customExpressions.Count;
+      var index = random.Next(enabledExpressions.Count + customCount);
+
+      return index >= enabledExpressions.Count
+        ? customExpressions.ElementAt(index - (enabledExpressions.Count - 1)).Value
+        : CreateExpressionOrErc(index, random, enabledExpressions, ercOptions);
     }
 
@@ -36,24 +29,25 @@
       IReadOnlyErcOptions ercOptions) {
       var name = enabledExpressions[index];
-      var expression = ExpressionTable.GetExpression(name);
 
-      return CreateExpressionOrErc(expression, random, ercOptions);
+      return CreateExpressionOrErc(name, random, ercOptions);
     }
 
     private static Expression CreateExpressionOrErc(
-      Expression expression,
+      string expressionName,
       IRandom random,
       IReadOnlyErcOptions ercOptions) {
       var x = random.NextDouble();
+      Expression expression = null;
 
       if (x < ercOptions.ErcProbability) {
-        var tmp = CreateRandomErcExpression(
-            ExpressionTable.TypeToAttributeTable[expression.GetType()].StackType,
+        var expressionType = ExpressionTable.NameToTypeTable[expressionName];
+        expression = CreateRandomErcExpression(
+            ExpressionTable.TypeToAttributeTable[expressionType].StackType,
             random,
             ercOptions);
+      }
 
-        if (!(tmp is ExecNoopExpression)) {
-          expression = tmp;
-        }
+      if (expression == null || expression is ExecNoopExpression) {
+        expression = ExpressionTable.GetExpression(expressionName);
       }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/ErcUtils.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/ErcUtils.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/ErcUtils.cs	(revision 14875)
@@ -1,5 +1,5 @@
 ﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Generators {
   using HeuristicLab.Core;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Erc.Interfaces;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
 
   internal static class ErcUtils {
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/StringGenerator.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/StringGenerator.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/StringGenerator.cs	(revision 14875)
@@ -4,5 +4,5 @@
 
   using HeuristicLab.Core;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Erc.Interfaces;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
   using HeuristicLab.Random;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/InterpreterPoolContainer.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/InterpreterPoolContainer.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/InterpreterPoolContainer.cs	(revision 14875)
@@ -67,5 +67,5 @@
 
     private void InitStatefulExpressionPools(int partitionSize, int maxPartitionCount) {
-      for (var i = 0; i < ExpressionTable.StatefulExpressionTypes.Length; i++) {
+      for (var i = 0; i < ExpressionTable.StatefulExpressionTypes.Count; i++) {
         var type = ExpressionTable.StatefulExpressionTypes[i];
         var name = ExpressionTable.TypeToNameTable[type];
@@ -104,5 +104,5 @@
       }
 
-      for (var i = 0; i < ExpressionTable.StatefulExpressionTypes.Length; i++) {
+      for (var i = 0; i < ExpressionTable.StatefulExpressionTypes.Count; i++) {
         var type = ExpressionTable.StatefulExpressionTypes[i];
         var pool = statefulExpressionPools[type];
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/PushInterpreter.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/PushInterpreter.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/PushInterpreter.cs	(revision 14875)
@@ -21,5 +21,4 @@
     private Task currentTask;
 
-
     public PushInterpreter(IReadOnlyPushConfiguration config = null, IRandom random = null, InterpreterPoolContainer poolContainer = null) {
       Random = random ?? new FastRandom();
@@ -28,7 +27,7 @@
 
       // setting the capacity of the stacks to max points ensures that there will be enough memory at runtime
-      ExecStack = new PushStack<Expression>(Configuration.EvalPushLimit);
-
-      CodeStack = new PushStack<Expression>(Configuration.EvalPushLimit) {
+      ExecStack = new PushStack<Expression>(Configuration.MaxPointsInProgram);
+
+      CodeStack = new PushStack<Expression> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.Code]
       };
@@ -37,28 +36,37 @@
         IsEnabled = Configuration.EnabledStacks[StackTypes.Code]
       };
+
       BooleanStack = new PushStack<bool> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.Boolean]
       };
+
       IntegerStack = new PushStack<long> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.Integer]
       };
+
       FloatStack = new PushStack<double> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.Float]
       };
+
       CharStack = new PushStack<char> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.Char]
       };
+
       StringStack = new PushStack<string> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.String]
       };
+
       IntegerVectorStack = new PushStack<List<long>> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.IntegerVector]
       };
+
       FloatVectorStack = new PushStack<List<double>> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.FloatVector]
       };
+
       BooleanVectorStack = new PushStack<List<bool>> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.BooleanVector]
       };
+
       StringVectorStack = new PushStack<List<string>> {
         IsEnabled = Configuration.EnabledStacks[StackTypes.StringVector]
@@ -66,5 +74,4 @@
 
       CustomExpressions = new Dictionary<string, Expression>();
-
       PoolContainer = poolContainer ?? new InterpreterPoolContainer();
     }
@@ -76,5 +83,5 @@
     public IRandom Random { get; set; }
 
-    public int ExecCounter { get; private set; }
+    public long ExecCounter { get; private set; }
 
     public bool IsPaused { get; private set; }
@@ -159,5 +166,5 @@
     }
     public async Task RunAsync(Expression expression, CancellationToken token = default(CancellationToken)) {
-      await Task.Run(() => Run(expression, false), token);
+      await Task.Run(() => Run(expression), token);
     }
 
@@ -176,5 +183,5 @@
       ExecStack.Push(expression);
 
-      if (Configuration.TopLevelPushCode) CodeStack.Insert(0, expression);
+      if (Configuration.TopLevelPushCode) CodeStack.Push(expression);
 
       // expand if program
@@ -183,4 +190,11 @@
 
       Run();
+    }
+
+    public bool CanRun(int count) {
+      return ExecStack.Count >= count &&
+             !IsPaused &&
+             !IsAborted &&
+             ExecCounter + count < Configuration.EvalPushLimit;
     }
 
@@ -237,9 +251,9 @@
     [MethodImpl(MethodImplOptions.AggressiveInlining)]
     public void Step(int count) {
-      for (var i = 0; i < count; i++) Step();
+      for (var i = 0u; i < count; i++) Step();
     }
 
     /// <summary>
-    /// Clears stacks
+    /// Reset while interpreter
     /// </summary>
     public void Reset() {
@@ -269,4 +283,11 @@
     [MethodImpl(MethodImplOptions.AggressiveInlining)]
     private void Run() {
+      // if no stack which is modifies the exec stack is enabled, unroll loop due to performance reasons
+      if (!Configuration.EnabledStacks[StackTypes.Exec] &&
+          !Configuration.EnabledStacks[StackTypes.Code]) {
+        while (CanRun(10))
+          DoTenSteps();
+      }
+
       while (IsRunning)
         DoStep();
@@ -314,4 +335,21 @@
 #endif
 
+    [MethodImpl(MethodImplOptions.AggressiveInlining)]
+    private void DoTenSteps() {
+      ExecStack[0].Eval(this);
+      ExecStack[1].Eval(this);
+      ExecStack[2].Eval(this);
+      ExecStack[3].Eval(this);
+      ExecStack[4].Eval(this);
+      ExecStack[5].Eval(this);
+      ExecStack[6].Eval(this);
+      ExecStack[7].Eval(this);
+      ExecStack[8].Eval(this);
+      ExecStack[9].Eval(this);
+
+      ExecStack.Remove(10);
+      ExecCounter += 10;
+    }
+
     private Task InterpretAsync() {
       currentTask = Task.Run(() => this.Run());
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/IndividualMapper.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/IndividualMapper.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/IndividualMapper.cs	(revision 14875)
@@ -44,8 +44,9 @@
     private static PushProgram ToPushProgram(this IntegerVector vector, IReadOnlyPushConfiguration config, IRandom random) {
       var expressions = new Expression[vector.Length];
+      var enabledExpressions = config.EnabledExpressions;
+      var ercOptions = config.ErcOptions;
 
-      for (var i = 0; i < vector.Length; i++) {
-        expressions[i] = CodeGeneratorUtils.CreateExpressionOrErc(vector[i], random, config.EnabledExpressions, config.ErcOptions);
-      }
+      for (var i = 0; i < vector.Length; i++)
+        expressions[i] = CodeGeneratorUtils.CreateExpressionOrErc(vector[i], random, enabledExpressions, ercOptions);
 
       return new PushProgram(expressions);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushEvaluator.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushEvaluator.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushEvaluator.cs	(revision 14875)
@@ -3,6 +3,8 @@
 
 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Problem {
+
   using HeuristicLab.BenchmarkSuite;
   using HeuristicLab.BenchmarkSuite.Problems;
+  using HeuristicLab.Common;
   using HeuristicLab.Core;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
@@ -13,17 +15,22 @@
     public static double Evaluate(IPushInterpreter interpreter, PushProgram program, Example example, double worstResult) {
       interpreter.BooleanStack.Push(example.InputBoolean);
-      interpreter.IntegerStack.Push(example.InputInt);
+      interpreter.IntegerStack.Push(example.InputInteger);
       interpreter.FloatStack.Push(example.InputFloat);
 
       interpreter.Run(program);
 
-      var result = GetDiff(example.OutputInt, interpreter.IntegerStack, worstResult, LongDiffer)
-                 + GetDiff(example.OutputFloat, interpreter.FloatStack, worstResult, DoubleDiffer)
-                 + GetDiff(example.OutputBoolean, interpreter.BooleanStack, worstResult, BooleanDiffer);
+      var result = GetDiff(example.OutputInteger, interpreter.IntegerStack, worstResult, IntegerDiffer)
+                 + GetDiff(example.OutputFloat, interpreter.FloatStack, worstResult, FloatDiffer)
+                 + GetDiff(example.OutputBoolean, interpreter.BooleanStack, worstResult, BooleanDiffer)
+                 + GetDiff(example.OutputString, interpreter.StringStack, worstResult, StringDiffer)
+                 + GetDiff(example.OutputChar, interpreter.CharStack, worstResult, CharDiffer)
+                 + GetVectorDiff(example.OutputIntegerVector, interpreter.IntegerVectorStack, worstResult, (a, b) => VectorDiffer(a, b, IntegerDiffer))
+                 + GetVectorDiff(example.OutputFloatVector, interpreter.FloatVectorStack, worstResult, (a, b) => VectorDiffer(a, b, FloatDiffer))
+                 + GetVectorDiff(example.OutputStringVector, interpreter.StringVectorStack, worstResult, (a, b) => VectorDiffer(a, b, StringDiffer));
 
       return result;
     }
 
-    public static EvaluationResult Evaluate(PushProgram program, PushInterpreterPool pool, IRandom random, Data data, int startIndex, int endIndex) {
+    public static EvaluationResult Evaluate(PushProgram program, PushInterpreterPool pool, IRandom random, ProblemData data, int startIndex, int endIndex) {
       var length = endIndex - startIndex;
       if (length <= 0) return null;
@@ -45,16 +52,11 @@
     }
 
-    //public static EvaluationResult Evaluate(Individual individual, PushInterpreterPool pool, IRandom random, Data data, int startIndex, int endIndex) {
-    //  var program = individual.ToPushProgram(pool.PushGpConfiguration);
-    //  return Evaluate(program, pool, random, data, startIndex, endIndex);
-    //}
-
-    private static double DoubleDiffer(double a, double b) {
+    private static double FloatDiffer(double a, double b) {
       var result = a - b;
 
-      if (result == double.MinValue || double.IsPositiveInfinity(result) || double.IsNaN(result))
+      if (result.IsAlmost(double.MinValue) || double.IsPositiveInfinity(result) || double.IsNaN(result))
         return double.MaxValue;
 
-      if (result == double.MaxValue || double.IsNegativeInfinity(result))
+      if (result.IsAlmost(double.MaxValue) || double.IsNegativeInfinity(result))
         return double.MinValue;
 
@@ -62,5 +64,5 @@
     }
 
-    private static double LongDiffer(long a, long b) {
+    private static double IntegerDiffer(long a, long b) {
       var result = a - b;
 
@@ -70,4 +72,54 @@
     private static double BooleanDiffer(bool a, bool b) {
       return a && b ? 0 : a || b ? 1 : 2;
+    }
+
+    private static double StringDiffer(string a, string b) {
+      return LevenshteinDistance(a, b);
+    }
+
+    private static double CharDiffer(char a, char b) {
+      return IntegerDiffer(a, b);
+    }
+
+    private static double VectorDiffer<T>(IReadOnlyList<T> a, IReadOnlyList<T> b, Func<T, T, double> differ) {
+      var length = Math.Min(a.Count, b.Count);
+      var result = 0d;
+
+      for (var i = 0; i < length; i++) {
+        result += differ(a[i], b[i]);
+      }
+
+      if (a.Count > b.Count) {
+        var remainingLength = a.Count - length;
+        for (var i = 0; i < remainingLength; i++)
+          result += differ(a[i], default(T));
+      }
+
+      return result;
+    }
+
+    private static double GetVectorDiff<T>(IReadOnlyList<IReadOnlyList<T>> estimated, IPushStack<List<T>> resultStack, double worstResult, Func<IReadOnlyList<T>, IReadOnlyList<T>, double> differ)
+      where T : IComparable {
+      if (estimated.Count == 0) return 0d;
+
+      var diff = 0d;
+      var comparableLength = 0;
+
+      if (!resultStack.IsEmpty) {
+        var count = Math.Min(estimated.Count, resultStack.Count);
+        var result = resultStack.Peek(count);
+        comparableLength = Math.Min(estimated.Count, result.Length);
+
+        for (var i = 0; i < comparableLength; i++) {
+          diff += Math.Min(differ(estimated[i], result[i]), worstResult);
+        }
+      }
+
+      var emptyTArray = new T[0];
+      for (var i = comparableLength; i < estimated.Count - comparableLength; i++) {
+        diff += differ(estimated[i], emptyTArray);
+      }
+
+      return diff;
     }
 
@@ -95,4 +147,52 @@
       return diff;
     }
+
+    /// <summary>
+    /// https://www.dotnetperls.com/levenshtein
+    /// </summary>
+    /// <param name="s"></param>
+    /// <param name="t"></param>
+    /// <returns></returns>
+    private static int LevenshteinDistance(string s, string t) {
+      if (s == null && t == null) return 0;
+      if (s == null) return t.Length;
+      if (t == null) return s.Length;
+
+      int n = s.Length;
+      int m = t.Length;
+      int[,] d = new int[n + 1, m + 1];
+
+      // Step 1
+      if (n == 0) {
+        return m;
+      }
+
+      if (m == 0) {
+        return n;
+      }
+
+      // Step 2
+      for (int i = 0; i <= n; d[i, 0] = i++) {
+      }
+
+      for (int j = 0; j <= m; d[0, j] = j++) {
+      }
+
+      // Step 3
+      for (int i = 1; i <= n; i++) {
+        //Step 4
+        for (int j = 1; j <= m; j++) {
+          // Step 5
+          int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
+
+          // Step 6
+          d[i, j] = Math.Min(
+              Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1),
+              d[i - 1, j - 1] + cost);
+        }
+      }
+      // Step 7
+      return d[n, m];
+    }
   }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushProblem.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushProblem.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushProblem.cs	(revision 14875)
@@ -12,5 +12,5 @@
   using Expressions;
   using HeuristicLab.Data;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
 
   using Instances;
@@ -25,5 +25,5 @@
   [Creatable(CreatableAttribute.Categories.GeneticProgrammingProblems, Priority = 180)]
   [Item("Push Problem", "")]
-  public class PushProblem : SingleObjectiveBasicProblem<IntegerVectorEncoding>, IProblemInstanceConsumer<Data> {
+  public class PushProblem : SingleObjectiveBasicProblem<IntegerVectorEncoding>, IProblemInstanceConsumer<ProblemData> {
     [Storable]
     private readonly PushConfiguration config;
@@ -32,4 +32,6 @@
 
     public const string CaseQualitiesScopeParameterName = "CaseQualities";
+    private const string BestTrainingSolutionResultName = "Best Solution";
+    private const string TestQualityResultName = "Test Quality";
 
     public PushProblem() {
@@ -63,8 +65,4 @@
     private void InitData() {
       pool = new PushInterpreterPool(Environment.ProcessorCount * 2, 4096, 1024, config);
-
-      //var solutionCreator = new PointsBasedPushProgramCreator(config.ErcOptions);
-      //SolutionCreator = solutionCreator;
-      //Encoding.SolutionCreator = solutionCreator;
     }
 
@@ -93,14 +91,4 @@
     private const string TopLevelPopCodeParameterName = "TopLevelPopCode";
     private const string TopLevelPopCodeParameterDescription = "When TRUE, the CODE stack will be popped at the end of top level calls to the interpreter. The default is FALSE.";
-    private const string MinRandomIntegerParameterName = "MinRandomInteger";
-    private const string MinRandomIntegerParameterDescription = "The minimum INTEGER that will be produced as an ephemeral random INTEGER constant or from a call to INTEGER.RAND.";
-    private const string MaxRandomIntegerParameterName = "MaxRandomInteger";
-    private const string MaxRandomIntegerParameterDescription = "The maximum INTEGER that will be produced as an ephemeral random INTEGER constant or from a call to INTEGER.RAND.";
-    private const string MinRandomFloatParameterName = "MinRandomFloat";
-    private const string MinRandomFloatParameterDescription = "The minimum FLOAT that will be produced as an ephemeral random FLOAT constant or from a call to FLOAT.RAND.";
-    private const string MaxRandomFloatParameterName = "MaxRandomFloat";
-    private const string MaxRandomFloatParameterDescription = "The maximum FLOAT that will be produced as an ephemeral random FLOAT constant or from a call to FLOAT.RAND.";
-    private const string NewErcNameProbabilityParameterName = "NewErcNameProbability";
-    private const string NewErcNameProbabilityParameterDescription = "The probability that the selection of the ephemeral random NAME constant for inclusion in randomly generated code will produce a new name.";
     private const string MaxPointsInRandomInstructionParameterName = "MaxPointsInRandomInstruction";
     private const string MaxPointsInRandomInstructionParameterDescription = "MaxPointsInRandomInstruction";
@@ -117,9 +105,9 @@
         config));
 
-      Parameters.Add(new ValueParameter<Data>(
+      Parameters.Add(new ValueParameter<ProblemData>(
         DataParameterName,
         DataParameterDescription));
 
-      Parameters.Add(new FixedValueParameter<ErcOptions>(ErcOptionsParameterName, config.ErcOptions));
+      Parameters.Add(new ValueParameter<ErcOptions>(ErcOptionsParameterName, config.ErcOptions));
 
       Parameters.Add(new FixedValueParameter<IntValue>(
@@ -188,10 +176,10 @@
     }
 
-    public IValueParameter<Data> DataParameter
-    {
-      get { return (IValueParameter<Data>)Parameters[DataParameterName]; }
-    }
-
-    public Data Data
+    public IValueParameter<ProblemData> DataParameter
+    {
+      get { return (IValueParameter<ProblemData>)Parameters[DataParameterName]; }
+    }
+
+    public ProblemData Data
     {
       get { return DataParameter.Value; }
@@ -356,20 +344,43 @@
 
     public override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {
-      const string bestSolutionResultName = "Best Solution";
       var bestQuality = Maximization ? qualities.Max() : qualities.Min();
       var bestIdx = Array.IndexOf(qualities, bestQuality);
-      var bestIndividual = individuals[bestIdx];
-      var solution = new PushSolution(bestIndividual.IntegerVector(), bestQuality, Data, random, config, DataBounds.TrainingRange.Start, DataBounds.TrainingRange.End);
-
-      if (!results.ContainsKey(bestSolutionResultName)) {
-        results.Add(new Result(bestSolutionResultName, solution));
+      var bestIndividual = individuals[bestIdx].IntegerVector();
+
+      var isIndividualBetter = AnalyzeBestTrainingSolution(bestIndividual, bestQuality, results, random);
+
+      if (isIndividualBetter) {
+        AnalyzeBestTestSolution(bestIndividual, results, random);
+      }
+    }
+
+    private void AnalyzeBestTestSolution(IntegerVector bestIndividual, ResultCollection results, IRandom random) {
+      var program = bestIndividual.ToPushProgram(config, randomPool);
+      var trainingResult = PushEvaluator.Evaluate(program, pool, random, Data, DataBounds.TestRange.Start, DataBounds.TestRange.End);
+
+      if (!results.ContainsKey(TestQualityResultName)) {
+        results.Add(new Result(TestQualityResultName, new DoubleValue(trainingResult.TotalQuality)));
       } else {
-        var currentBestQuality = ((PushSolution)results[bestSolutionResultName].Value).Quality;
-
-        if (Maximization && currentBestQuality < bestQuality ||
-           !Maximization && currentBestQuality > bestQuality) {
-          results[bestSolutionResultName].Value = solution;
-        }
-      }
+        ((DoubleValue)results[TestQualityResultName].Value).Value = trainingResult.TotalQuality;
+      }
+    }
+
+    private bool AnalyzeBestTrainingSolution(IntegerVector bestIndividual, double bestQuality, ResultCollection results, IRandom random) {
+      var solution = new PushSolution(bestIndividual, bestQuality, Data, random, config, DataBounds.TrainingRange.Start, DataBounds.TrainingRange.End);
+
+      if (!results.ContainsKey(BestTrainingSolutionResultName)) {
+        results.Add(new Result(BestTrainingSolutionResultName, solution));
+        return true;
+      }
+
+      var currentBestQuality = ((PushSolution)results[BestTrainingSolutionResultName].Value).Quality;
+
+      if (Maximization && currentBestQuality < bestQuality ||
+         !Maximization && currentBestQuality > bestQuality) {
+        results[BestTrainingSolutionResultName].Value = solution;
+        return true;
+      }
+
+      return false;
     }
 
@@ -389,9 +400,10 @@
     }
 
-    public void Load(Data data) {
+    public void Load(ProblemData data) {
       Data = data;
       BestKnownQuality = data.BestResult;
       MaxPointsInProgram = data.MaxSize;
       EvalPushLimit = data.EvalLimit;
+      ErcOptions = data.ErcOptions;
 
       config.EnabledExpressions = (IList<string>)ExpressionTable.GetExpressionsByStackTypes((StackTypes)data.EnabledDataTypes);
@@ -408,7 +420,7 @@
 
       DataBounds.TrainingRange.Start = 0;
-      DataBounds.TrainingRange.End = Data.OriginalTrainingCount;
-      DataBounds.TestRange.Start = Data.OriginalTrainingCount;
-      DataBounds.TestRange.End = Data.OriginalTrainingCount + Data.OriginalTestCount;
+      DataBounds.TrainingRange.End = Data.TrainingCount;
+      DataBounds.TestRange.Start = Data.TrainingCount;
+      DataBounds.TestRange.End = Data.TrainingCount + Data.TestCount;
     }
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs	(revision 14875)
@@ -14,5 +14,5 @@
     public readonly IntegerVector IntegerVector;
     [Storable]
-    public readonly Data Data;
+    public readonly ProblemData Data;
     [Storable]
     public readonly IRandom Random;
@@ -23,9 +23,8 @@
     [Storable]
     public readonly int DataEnd;
-
     [Storable]
     public readonly bool Simplify;
 
-    public PushSolution(IntegerVector integerVector, double quality, Data data, IRandom random, IReadOnlyPushConfiguration config, int dataStart, int dataEnd, bool simplify = false)
+    public PushSolution(IntegerVector integerVector, double quality, ProblemData data, IRandom random, IReadOnlyPushConfiguration config, int dataStart, int dataEnd, bool simplify = false)
       : base("Solution", "A push solution.") {
       IntegerVector = integerVector;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Selector/LexicaseSelector.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Selector/LexicaseSelector.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Selector/LexicaseSelector.cs	(revision 14875)
@@ -70,10 +70,12 @@
       var repeats = Math.Ceiling(count / (double)population.Count);
       var caseCount = caseQualities[0].Length;
-      var source = population.Select((x, i) => Tuple.Create(i, x));
+      var source = Enumerable.Range(0, population.Count).ToList();
 
       for (var k = 0; k < repeats; k++) {
         // The fitness cases are shuffled.
         var fitnessCaseIndexes = Enumerable.Range(0, caseCount).Shuffle(random).ToArray();
-        var pool = source.ToList();
+
+        // copy list if required
+        var pool = k == repeats - 1 ? source : new List<int>(source);
         var countLimit = Math.Min(count - k * population.Count, population.Count);
 
@@ -86,8 +88,10 @@
           /*  If only one individual remains, it is the chosen parent. If no more fitness cases are left, a parent is
               chosen randomly from the remaining individuals */
-          var currentSelected = bestIndividuals.Count == 1 ? bestIndividuals[0] : bestIndividuals.Random(random);
-          selected[k * population.Count + i] = copy ? (IScope)currentSelected.Item2.Clone() : currentSelected.Item2;
+          var bestIndividualIndex = bestIndividuals.Count == 1 ? bestIndividuals[0] : bestIndividuals.Random(random);
+          var bestIndividual = population[bestIndividualIndex];
 
-          pool.Remove(currentSelected);
+          selected[k * population.Count + i] = copy ? (IScope)bestIndividual.Clone() : bestIndividual;
+
+          pool.Remove(bestIndividualIndex);
         }
       }
@@ -96,13 +100,13 @@
     }
 
-    private static List<Tuple<int, IScope>> GetBestIndividuals(bool maximization, ItemArray<DoubleArray> caseQualities, List<Tuple<int, IScope>> bestIndividuals, int index) {
+    private static List<int> GetBestIndividuals(bool maximization, ItemArray<DoubleArray> caseQualities, List<int> bestIndividuals, int index) {
       var bestFitness = maximization ? double.NegativeInfinity : double.PositiveInfinity;
-      var result = new List<Tuple<int, IScope>>();
+      var result = new List<int>();
 
       for (var l = 0; l < bestIndividuals.Count; l++) {
         var individual = bestIndividuals[l];
-        var caseQuality = caseQualities[individual.Item1][index];
+        var caseQuality = caseQualities[individual][index];
 
-        if (bestFitness == caseQuality) {
+        if (bestFitness.IsAlmost(caseQuality)) {
           result.Add(individual);
         } else if (maximization && bestFitness < caseQuality ||
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/IPushStack.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/IPushStack.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/IPushStack.cs	(revision 14875)
@@ -9,11 +9,10 @@
     T BottomOrDefault { get; }
     T this[int key] { get; set; }
-
     void Push(T item);
     void Push(T item1, T item2);
     void Push(T item1, T item2, T item3);
     void Push(T item1, T item2, T item3, T item4);
-
     void Push(IReadOnlyList<T> items, int startIndex = 0);
+    void Push(IReadOnlyList<T> items);
     T Peek();
     T[] Peek(int count);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/PushStack.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/PushStack.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/PushStack.cs	(revision 14875)
@@ -118,5 +118,5 @@
 
     public T ReverseElementAt(int offset) {
-      return data[data.Count - 1 - offset];
+      return data[offset];
     }
 
@@ -125,14 +125,8 @@
     }
 
-    public T this[int key]
-    {
-      get
-      {
-        return data[key];
-      }
-      set
-      {
-        data[key] = value;
-      }
+    public T this[int index]
+    {
+      get { return data[Count - 1 - index]; }
+      set { data[Count - 1 - index] = value; }
     }
 
@@ -141,5 +135,6 @@
       var bottomIndex = Count - count;
 
-      for (var i = Count - 1; i > bottomIndex; i--) data[i] = data[i - 1];
+      for (var i = Count - 1; i > bottomIndex; i--)
+        data[i] = data[i - 1];
 
       data[bottomIndex] = top;
@@ -149,5 +144,5 @@
       if (index == Count - 1) return;
 
-      var item = ElementAt(index);
+      var item = ReverseElementAt(index);
       data.RemoveAt(index);
       data.Add(item);
@@ -155,8 +150,8 @@
 
     public T Pop() {
-      var value = data[Count - 1];
+      var top = Top;
       data.RemoveAt(Count - 1);
 
-      return value;
+      return top;
     }
 
@@ -223,5 +218,5 @@
     }
 
-    public void Push(IReadOnlyList<T> items, int startIndex = 0) {
+    public void Push(IReadOnlyList<T> items, int startIndex) {
       if (!IsEnabled) return;
 
@@ -229,8 +224,14 @@
     }
 
+    public void Push(IReadOnlyList<T> items) {
+      if (!IsEnabled) return;
+
+      data.AddRange(items);
+    }
+
     public void Insert(int index, T item) {
       if (!IsEnabled) return;
 
-      data.Insert(index, item);
+      data.Insert(Count - index, item);
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/StackTypes.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/StackTypes.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/StackTypes.cs	(revision 14875)
@@ -2,4 +2,5 @@
   using System;
 
+  // Be aware that it is assumed that this values are equal to HeuristicLab.BenchmarkSuite.DataTypes
   [Flags]
   public enum StackTypes : ushort {
@@ -13,8 +14,9 @@
     Code = 0x80,
     Exec = 0x100,
-    IntegerVector = 0x200,
-    FloatVector = 0x400,
-    BooleanVector = 0x800,
-    StringVector = 0x1000
+    Return = 0x200,
+    IntegerVector = 0x400,
+    FloatVector = 0x800,
+    StringVector = 0x1000,
+    BooleanVector = 0x2000
   }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.cs	(revision 14875)
@@ -68,5 +68,5 @@
                          (IntegerVector)Content.IntegerVector.Clone(),
                          Content.Quality,
-                         (Data)Content.Data.Clone(),
+                         (ProblemData)Content.Data.Clone(),
                          (IRandom)Content.Random.Clone(),
                          Content.Config,
@@ -85,5 +85,5 @@
 
       UpdateExecList();
-      UpdateValueLists();
+      this.UpdateDebugLists();
       CheckIfButtonsCanBeEnabled();
     }
@@ -120,5 +120,5 @@
 
       UpdateExecList();
-      UpdateValueLists();
+      this.UpdateDebugLists();
       CheckIfButtonsCanBeEnabled();
     }
@@ -180,9 +180,9 @@
 
       interpreter.BooleanStack.Push(example.InputBoolean);
-      interpreter.IntegerStack.Push(example.InputInt);
+      interpreter.IntegerStack.Push(example.InputInteger);
       interpreter.FloatStack.Push(example.InputFloat);
 
       interpreter2.BooleanStack.Push(example.InputBoolean);
-      interpreter2.IntegerStack.Push(example.InputInt);
+      interpreter2.IntegerStack.Push(example.InputInteger);
       interpreter2.FloatStack.Push(example.InputFloat);
 
@@ -192,5 +192,5 @@
       stepWidthBox.Maximum = interpreter.ExecStack.Count;
 
-      UpdateValueLists();
+      this.UpdateDebugLists();
       UpdateExecList();
       CheckIfButtonsCanBeEnabled();
@@ -227,7 +227,7 @@
       InitDebugLists(Content.Config);
       InitResultGrid();
-      ClearLists();
+      this.ClearDebugLists();
       UpdateExecList();
-      UpdateValueLists();
+      this.UpdateDebugLists();
     }
 
@@ -320,14 +320,14 @@
       switch (type) {
         case ExampleArgumentType.Integer:
-        case ExampleArgumentType.IntegerCollection: return interpreter.IntegerStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.IntegerStack.Peek(GetCount(interpreter.IntegerStack, example.OutputInt)));
+        case ExampleArgumentType.IntegerVector: return interpreter.IntegerStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.IntegerStack.Peek(GetCount(interpreter.IntegerStack, example.OutputInteger)));
 
         case ExampleArgumentType.Float:
-        case ExampleArgumentType.FloatCollection: return interpreter.FloatStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.FloatStack.Peek(GetCount(interpreter.FloatStack, example.OutputFloat)).Select(d => d.ToString(CultureInfo.CurrentUICulture)));
-
-        case ExampleArgumentType.Bool: return interpreter.BooleanStack.IsEmpty ? EmptySign : interpreter.BooleanStack.Top.ToString();
+        case ExampleArgumentType.FloatVector: return interpreter.FloatStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.FloatStack.Peek(GetCount(interpreter.FloatStack, example.OutputFloat)).Select(d => d.ToString(CultureInfo.CurrentUICulture)));
+
+        case ExampleArgumentType.Boolean: return interpreter.BooleanStack.IsEmpty ? EmptySign : interpreter.BooleanStack.Top.ToString();
         case ExampleArgumentType.Char: return interpreter.CharStack.IsEmpty ? EmptySign : interpreter.CharStack.Top.ToString();
 
         case ExampleArgumentType.String:
-        case ExampleArgumentType.StringCollection: return interpreter.StringStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.StringStack.Peek(GetCount(interpreter.StringStack, example.OutputString)));
+        case ExampleArgumentType.StringVector: return interpreter.StringStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.StringStack.Peek(GetCount(interpreter.StringStack, example.OutputString)));
         default: return string.Empty;
       }
@@ -338,5 +338,5 @@
     }
 
-    private void ClearLists() {
+    private void ClearDebugLists() {
       foreach (var list in debugControlDict.Values) {
         list.Items.Clear();
@@ -346,5 +346,5 @@
     private void UpdateExecList() {
       execList.Items.Clear();
-      var expressions = interpreter.ExecStack
+      var expressions = interpreter.ExecStack.AsEnumerable()
         .Reverse()
         .Select(e => e.StringRepresentation)
@@ -367,5 +367,5 @@
         if (stackType != StackTypes.Exec &&
             ExpressionTable.GetExpressionsByStackTypes(stackType).Intersect(config.EnabledExpressions).Any()) {
-          var list = GetDebugList(stackType);
+          var list = this.CreateDebugList(stackType);
           debugControlDict.Add(stackType, list);
         }
@@ -373,5 +373,5 @@
     }
 
-    private ListBox GetDebugList(StackTypes type) {
+    private ListBox CreateDebugList(StackTypes type) {
       var groupBox = new GroupBox {
         Anchor = AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Top,
@@ -421,6 +421,6 @@
 
 
-    private void UpdateValueLists() {
-      ClearLists();
+    private void UpdateDebugLists() {
+      this.ClearDebugLists();
 
       if (Content == null || interpreter == null)
@@ -436,5 +436,5 @@
     }
 
-    private void UpdateExamples(Data data) {
+    private void UpdateExamples(ProblemData data) {
       exampleComboBox.Items.Clear();
       if (data == null) return;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs	(revision 14875)
@@ -10,5 +10,4 @@
   using HeuristicLab.Problems.ProgramSynthesis.Push.Configuration;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
-  using HeuristicLab.Problems.ProgramSynthesis.Push.Generators;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Generators.CodeGenerator;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
@@ -136,5 +135,5 @@
       var iterations = 100;
       var best = double.MaxValue;
-      var globalExecCounter = 0;
+      var globalExecCounter = 0L;
       var lockObj = new object();
       var lockCount = new object();
@@ -148,7 +147,7 @@
       var data = instance.LoadData(descriptor);
 
-      Parallel.For(0, iterations, i => {
-        var execCounter = 0;
-        var results = new double[data.OriginalTrainingCount];
+      Parallel.For(0u, iterations, i => {
+        var execCounter = 0L;
+        var results = new double[data.TrainingCount];
         PushProgram program;
 
@@ -156,14 +155,14 @@
           program = RecursiveCodeGenerator.RandomProgram(maxProgramSizeLimit, random);
 
-          for (var j = 0; j < data.OriginalTrainingCount; j++) {
+          for (var j = 0; j < data.TrainingCount; j++) {
             var example = data.Examples[i];
 
             interpreter.BooleanStack.Push(example.InputBoolean);
-            interpreter.IntegerStack.Push(example.InputInt);
+            interpreter.IntegerStack.Push(example.InputInteger);
             interpreter.FloatStack.Push(example.InputFloat);
 
             interpreter.Run(program);
 
-            var diff = GetDiff(example.OutputInt, interpreter.IntegerStack)
+            var diff = GetDiff(example.OutputInteger, interpreter.IntegerStack)
                        + GetDiff(example.OutputFloat, interpreter.FloatStack)
                        + GetDiff(example.OutputBoolean, interpreter.BooleanStack);
@@ -192,16 +191,16 @@
       });
 
-      var resultsTest = new double[data.OriginalTestCount];
-      Parallel.For(data.OriginalTestCount, data.OriginalTestCount, i => {
+      var resultsTest = new double[data.TestCount];
+      Parallel.For(data.TestCount, data.TestCount, i => {
         using (var interpreter = pool.Create()) {
           var example = data.Examples[i];
 
           interpreter.BooleanStack.Push(example.InputBoolean);
-          interpreter.IntegerStack.Push(example.InputInt);
+          interpreter.IntegerStack.Push(example.InputInteger);
           interpreter.FloatStack.Push(example.InputFloat);
 
           interpreter.Run(bestProgram);
 
-          var diff = GetDiff(example.OutputInt, interpreter.IntegerStack) +
+          var diff = GetDiff(example.OutputInteger, interpreter.IntegerStack) +
                      GetDiff(example.OutputFloat, interpreter.FloatStack) +
                      GetDiff(example.OutputBoolean, interpreter.BooleanStack);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/HeuristicLab.Tests.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 14875)
@@ -89,4 +89,8 @@
       <Name>HeuristicLab.BenchmarkSuite</Name>
     </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis.Base\HeuristicLab.Problems.ProgramSynthesis.Base.csproj">
+      <Project>{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}</Project>
+      <Name>HeuristicLab.Problems.ProgramSynthesis.Base</Name>
+    </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis\HeuristicLab.Problems.ProgramSynthesis.csproj">
       <Project>{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}</Project>
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/HeuristicLab.Tests.csproj.user
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/HeuristicLab.Tests.csproj.user	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/HeuristicLab.Tests.csproj.user	(revision 14875)
@@ -2,5 +2,5 @@
 <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <ProjectView>ShowAllFiles</ProjectView>
+    <ProjectView>ProjectFiles</ProjectView>
   </PropertyGroup>
 </Project>
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/CommonTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/CommonTests.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/CommonTests.cs	(revision 14875)
@@ -108,7 +108,7 @@
       this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".SWAP"));
 
-      Assert.AreEqual(values[0], this.Stack[0]);
+      Assert.AreEqual(values[0], this.Stack[2]);
+      Assert.AreEqual(values[1], this.Stack[0]);
       Assert.AreEqual(values[2], this.Stack[1]);
-      Assert.AreEqual(values[1], this.Stack[2]);
 
       this.CheckOtherStacksAreEmpty();
@@ -128,13 +128,13 @@
     [TestCategory("CommonExpressionTest")]
     public virtual void TestRotate() {
-      var values = this.GetValues(4);
-      this.Stack.Push(values);
-
-      this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".ROT"));
-
-      Assert.AreEqual(values[0], this.Stack[0]);
-      Assert.AreEqual(values[3], this.Stack[1]);
-      Assert.AreEqual(values[1], this.Stack[2]);
-      Assert.AreEqual(values[2], this.Stack[3]);
+      var values = GetValues(4);
+      Stack.Push(values);
+
+      Test(ExpressionTable.GetStatelessExpression(TypeName + ".ROT"));
+
+      Assert.AreEqual(values[0], Stack[3]);
+      Assert.AreEqual(values[3], Stack[2]);
+      Assert.AreEqual(values[1], Stack[1]);
+      Assert.AreEqual(values[2], Stack[0]);
 
       this.CheckOtherStacksAreEmpty();
@@ -160,7 +160,7 @@
       this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".SHOVE"));
 
-      Assert.AreEqual(values[0], this.Stack[0]);
-      Assert.AreEqual(values[2], this.Stack[1]);
-      Assert.AreEqual(values[1], this.Stack[2]);
+      Assert.AreEqual(values[0], Stack[2]);
+      Assert.AreEqual(values[1], Stack[0]);
+      Assert.AreEqual(values[2], Stack[1]);
 
       this.CheckOtherStacksAreEmpty();
@@ -180,5 +180,15 @@
     [TestCategory("CommonExpressionTest")]
     public virtual void TestShoveWithNegativeIndex() {
-      this.TestWithNegativeIndex("SHOVE");
+      var values = this.GetValues(3);
+      this.Stack.Push(values);
+
+      this.interpreter.IntegerStack.Push(-1);
+      this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".SHOVE"));
+
+      Assert.AreEqual(values[0], Stack[2]);
+      Assert.AreEqual(values[1], Stack[0]);
+      Assert.AreEqual(values[2], Stack[1]);
+
+      this.CheckOtherStacksAreEmpty();
     }
 
@@ -194,7 +204,7 @@
       this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".YANK"));
 
-      Assert.AreEqual(values[0], this.Stack[0]);
-      Assert.AreEqual(values[2], this.Stack[1]);
-      Assert.AreEqual(values[1], this.Stack[2]);
+      Assert.AreEqual(values[0], Stack[2]);
+      Assert.AreEqual(values[1], Stack[0]);
+      Assert.AreEqual(values[2], Stack[1]);
 
       this.CheckOtherStacksAreEmpty();
@@ -214,5 +224,15 @@
     [TestCategory("CommonExpressionTest")]
     public virtual void TestYankWithNegativeIndex() {
-      this.TestWithNegativeIndex("YANK");
+      var values = this.GetValues(3);
+      this.Stack.Push(values);
+
+      this.interpreter.IntegerStack.Push(-1);
+      this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".YANK"));
+
+      Assert.AreEqual(values[0], Stack[2]);
+      Assert.AreEqual(values[1], Stack[0]);
+      Assert.AreEqual(values[2], Stack[1]);
+
+      this.CheckOtherStacksAreEmpty();
     }
 
@@ -228,8 +248,8 @@
       this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".YANKDUP"));
 
-      Assert.AreEqual(values[0], this.Stack[0]);
-      Assert.AreEqual(values[1], this.Stack[1]);
-      Assert.AreEqual(values[2], this.Stack[2]);
-      Assert.AreEqual(values[1], this.Stack[3]);
+      Assert.AreEqual(values[0], this.Stack[3]);
+      Assert.AreEqual(values[1], this.Stack[2]);
+      Assert.AreEqual(values[2], this.Stack[1]);
+      Assert.AreEqual(values[1], this.Stack[0]);
 
       this.CheckOtherStacksAreEmpty();
@@ -249,5 +269,16 @@
     [TestCategory("CommonExpressionTest")]
     public virtual void TestYankDuplicateWithNegativeIndex() {
-      this.TestWithNegativeIndex("YANKDUP");
+      var values = this.GetValues(3);
+      this.Stack.Push(values);
+
+      this.interpreter.IntegerStack.Push(-1);
+      this.Test(ExpressionTable.GetStatelessExpression(this.TypeName + ".YANKDUP"));
+
+      Assert.AreEqual(values[0], this.Stack[3]);
+      Assert.AreEqual(values[1], this.Stack[2]);
+      Assert.AreEqual(values[2], this.Stack[1]);
+      Assert.AreEqual(values[1], this.Stack[0]);
+
+      this.CheckOtherStacksAreEmpty();
     }
 
@@ -277,8 +308,8 @@
         this.Stack.Push(values);
 
-        var fullInstructionname = string.Format(FullInstructionNameFormat, this.TypeName, instructionName);
-        this.Test(ExpressionTable.GetStatelessExpression(fullInstructionname));
-
-        for (var j = 0; j < i; j++) Assert.AreEqual(values[j], this.Stack[j]);
+        var fullInstructionName = string.Format(FullInstructionNameFormat, this.TypeName, instructionName);
+        this.Test(ExpressionTable.GetStatelessExpression(fullInstructionName));
+
+        for (var j = 0; j < i; j++) Assert.AreEqual(values[j], this.Stack.ReverseElementAt(j));
 
         this.CheckOtherStacksAreEmpty();
@@ -288,5 +319,5 @@
 
     protected void TestWithNegativeIndex(string instructionName) {
-      var values = this.GetValues(1);
+      var values = this.GetValues(3);
       this.Stack.Push(values);
 
@@ -296,5 +327,7 @@
       this.Test(ExpressionTable.GetStatelessExpression(fullInstructionname));
 
-      Assert.AreEqual(values[0], this.Stack[0]);
+      Assert.AreEqual(values[0], Stack[2]);
+      Assert.AreEqual(values[1], Stack[0]);
+      Assert.AreEqual(values[2], Stack[1]);
     }
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExecExpressionTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExecExpressionTests.cs	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExecExpressionTests.cs	(revision 14875)
@@ -83,6 +83,6 @@
       this.Test(new ExecSExpression());
 
-      Assert.AreEqual(result, this.interpreter.ExecStack.ReverseElementAt(2));
-      Assert.AreEqual(third, this.interpreter.ExecStack.ReverseElementAt(1));
+      Assert.AreEqual(result, this.interpreter.ExecStack[2]);
+      Assert.AreEqual(third, this.interpreter.ExecStack[1]);
       Assert.AreEqual(first, this.interpreter.ExecStack.Top);
       this.TestStackCounts(3);
@@ -101,5 +101,5 @@
 
       Assert.AreEqual(first, this.interpreter.ExecStack.Top);
-      Assert.AreEqual(result, this.interpreter.ExecStack.ReverseElementAt(1));
+      Assert.AreEqual(result, this.interpreter.ExecStack[1]);
       this.TestStackCounts(2);
     }
Index: anches/PushGP/HeuristicLab.PushGP/PushGP.Cli/HeuristicLab.Algorithms.PushGP.Cli.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/HeuristicLab.Algorithms.PushGP.Cli.csproj	(revision 14874)
+++ 	(revision )
@@ -1,80 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{293FD718-99E9-4F6A-A0EC-343C92D0B03E}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Algorithms.PushGP.Cli</RootNamespace>
-    <AssemblyName>HeuristicLab.Algorithms.PushGP.Cli</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <LangVersion>5</LangVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis\HeuristicLab.Problems.ProgramSynthesis.csproj">
-      <Project>{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}</Project>
-      <Name>HeuristicLab.Problems.ProgramSynthesis</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
Index: /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/Push.Cli.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/Push.Cli.csproj	(revision 14875)
+++ /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/Push.Cli.csproj	(revision 14875)
@@ -0,0 +1,80 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{293FD718-99E9-4F6A-A0EC-343C92D0B03E}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Algorithms.PushGP.Cli</RootNamespace>
+    <AssemblyName>HeuristicLab.Algorithms.PushGP.Cli</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <LangVersion>5</LangVersion>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Problems.ProgramSynthesis\HeuristicLab.Problems.ProgramSynthesis.csproj">
+      <Project>{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}</Project>
+      <Name>HeuristicLab.Problems.ProgramSynthesis</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/PushGP/HeuristicLab.PushGP/PushGp.sln
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/PushGp.sln	(revision 14874)
+++ /branches/PushGP/HeuristicLab.PushGP/PushGp.sln	(revision 14875)
@@ -4,5 +4,5 @@
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.PushGP.Cli", "PushGP.Cli\HeuristicLab.Algorithms.PushGP.Cli.csproj", "{293FD718-99E9-4F6A-A0EC-343C92D0B03E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Push.Cli", "PushGP.Cli\Push.Cli.csproj", "{293FD718-99E9-4F6A-A0EC-343C92D0B03E}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Tests", "HeuristicLab.Tests\HeuristicLab.Tests.csproj", "{117B7D68-ED7D-4350-996B-9CA15259E107}"
@@ -13,4 +13,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeatureTests", "FeatureTests\FeatureTests.csproj", "{B184A849-1403-4F5F-96F8-952C6599A7C0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ProgramSynthesis.Base", "HeuristicLab.Problems.ProgramSynthesis.Base\HeuristicLab.Problems.ProgramSynthesis.Base.csproj", "{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}"
 EndProject
 Global
@@ -40,4 +42,8 @@
 		{B184A849-1403-4F5F-96F8-952C6599A7C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B184A849-1403-4F5F-96F8-952C6599A7C0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
