diff --git a/build/targets/NGenOrCrossGen.targets b/build/targets/NGenOrCrossGen.targets
index 33dcaa3a63a..3dba4fc5b2d 100644
--- a/build/targets/NGenOrCrossGen.targets
+++ b/build/targets/NGenOrCrossGen.targets
@@ -16,9 +16,9 @@
NGen for both 32 and 64 bit product.
If compiling use the app config file, if present.
-->
-
+
-
+
diff --git a/src/absil/ilwrite.fs b/src/absil/ilwrite.fs
index ccc40c69d74..cac9ccbcefe 100644
--- a/src/absil/ilwrite.fs
+++ b/src/absil/ilwrite.fs
@@ -2857,9 +2857,8 @@ and newGuid (modul: ILModuleDef) =
and deterministicGuid (modul: ILModuleDef) =
let n = 16909060
- let m = hash n
- let m2 = hash modul.Name
- [| b0 m; b1 m; b2 m; b3 m; b0 m2; b1 m2; b2 m2; b3 m2; 0xa7uy; 0x45uy; 0x03uy; 0x83uy; b0 n; b1 n; b2 n; b3 n |]
+ let m2 = Seq.sum (Seq.mapi (fun i x -> i + int x) modul.Name) // use a stable hash
+ [| b0 n; b1 n; b2 n; b3 n; b0 m2; b1 m2; b2 m2; b3 m2; 0xa7uy; 0x45uy; 0x03uy; 0x83uy; b0 n; b1 n; b2 n; b3 n |]
and GetModuleAsRow (cenv:cenv) (modul: ILModuleDef) =
// Store the generated MVID in the environment (needed for generating debug information)
diff --git a/src/fsharp/DetupleArgs.fs b/src/fsharp/DetupleArgs.fs
index 9973e452761..160c0e66526 100644
--- a/src/fsharp/DetupleArgs.fs
+++ b/src/fsharp/DetupleArgs.fs
@@ -256,14 +256,16 @@ module GlobalUsageAnalysis =
let foldLocalVal f z (vref: ValRef) =
if valRefInThisAssembly g.compilingFslib vref then f z vref.Deref
else z
- let exprUsageIntercept exprF z expr =
+
+ let exprUsageIntercept exprF noInterceptF z origExpr =
+
let rec recognise context expr =
- match expr with
- | Expr.Val (v, _, _) ->
+ match expr with
+ | Expr.Val (v, _, _) ->
// YES: count free occurrence
- let z = foldLocalVal (fun z v -> logUse v (context, [], []) z) z v
- Some z
- | TyappAndApp(f, _, tys, args, _) ->
+ foldLocalVal (fun z v -> logUse v (context, [], []) z) z v
+
+ | TyappAndApp(f, _, tys, args, _) ->
match f with
| Expr.Val (fOrig, _, _) ->
// app where function is val
@@ -271,27 +273,27 @@ module GlobalUsageAnalysis =
// collect from args (have intercepted this node)
let collect z f = logUse f (context, tys, args) z
let z = foldLocalVal collect z fOrig
- let z = List.fold exprF z args
- Some z
+ List.fold exprF z args
| _ ->
// NO: app but function is not val
- None
+ noInterceptF z origExpr
+
| Expr.Op(TOp.TupleFieldGet (tupInfo, n), ts, [x], _) when not (evalTupInfoIsStruct tupInfo) ->
let context = TupleGet (n, ts) :: context
recognise context x
// lambdas end top-level status
| Expr.Lambda(_id, _ctorThisValOpt, _baseValOpt, _vs, body, _, _) ->
- let z = foldUnderLambda exprF z body
- Some z
+ foldUnderLambda exprF z body
+
| Expr.TyLambda(_id, _tps, body, _, _) ->
- let z = foldUnderLambda exprF z body
- Some z
+ foldUnderLambda exprF z body
+
| _ ->
- None // NO: no intercept
+ noInterceptF z origExpr
let context = []
- recognise context expr
+ recognise context origExpr
let targetIntercept exprF z = function TTarget(_argvs, body, _) -> Some (foldUnderLambda exprF z body)
let tmethodIntercept exprF z = function TObjExprMethod(_, _, _, _, e, _m) -> Some (foldUnderLambda exprF z e)
diff --git a/src/fsharp/FindUnsolved.fs b/src/fsharp/FindUnsolved.fs
index 386545c7e2a..0bfd0b5de81 100644
--- a/src/fsharp/FindUnsolved.fs
+++ b/src/fsharp/FindUnsolved.fs
@@ -38,46 +38,65 @@ let rec accExpr (cenv:cenv) (env:env) expr =
| Expr.Sequential (e1,e2,_,_,_) ->
accExpr cenv env e1
accExpr cenv env e2
+
| Expr.Let (bind,body,_,_) ->
accBind cenv env bind
accExpr cenv env body
+
| Expr.Const (_,_,ty) ->
accTy cenv env ty
| Expr.Val (_v,_vFlags,_m) -> ()
+
| Expr.Quote(ast,_,_,_m,ty) ->
accExpr cenv env ast
accTy cenv env ty
+
| Expr.Obj (_,ty,basev,basecall,overrides,iimpls,_m) ->
accTy cenv env ty
accExpr cenv env basecall
accMethods cenv env basev overrides
accIntfImpls cenv env basev iimpls
+
+ | LinearOpExpr (_op, tyargs, argsHead, argLast, _m) ->
+ // Note, LinearOpExpr doesn't include any of the "special" cases for accOp
+ accTypeInst cenv env tyargs
+ accExprs cenv env argsHead
+ // tailcall
+ accExpr cenv env argLast
+
| Expr.Op (c,tyargs,args,m) ->
accOp cenv env (c,tyargs,args,m)
+
| Expr.App(f,fty,tyargs,argsl,_m) ->
accTy cenv env fty
accTypeInst cenv env tyargs
accExpr cenv env f
accExprs cenv env argsl
+
| Expr.Lambda(_,_ctorThisValOpt,_baseValOpt,argvs,_body,m,rty) ->
let topValInfo = ValReprInfo ([],[argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)],ValReprInfo.unnamedRetVal)
let ty = mkMultiLambdaTy m argvs rty
accLambdas cenv env topValInfo expr ty
+
| Expr.TyLambda(_,tps,_body,_m,rty) ->
let topValInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps,[],ValReprInfo.unnamedRetVal)
accTy cenv env rty
let ty = mkForallTyIfNeeded tps rty
accLambdas cenv env topValInfo expr ty
+
| Expr.TyChoose(_tps,e1,_m) ->
accExpr cenv env e1
+
| Expr.Match(_,_exprm,dtree,targets,m,ty) ->
accTy cenv env ty
accDTree cenv env dtree
accTargets cenv env m ty targets
+
| Expr.LetRec (binds,e,_m,_) ->
accBinds cenv env binds
accExpr cenv env e
+
| Expr.StaticOptimization (constraints,e2,e3,_m) ->
accExpr cenv env e2
accExpr cenv env e3
@@ -87,14 +106,19 @@ let rec accExpr (cenv:cenv) (env:env) expr =
accTy cenv env ty2
| TTyconIsStruct(ty1) ->
accTy cenv env ty1)
+
| Expr.Link _eref -> failwith "Unexpected reclink"
-and accMethods cenv env baseValOpt l = List.iter (accMethod cenv env baseValOpt) l
+and accMethods cenv env baseValOpt l =
+ List.iter (accMethod cenv env baseValOpt) l
+
and accMethod cenv env _baseValOpt (TObjExprMethod(_slotsig,_attribs,_tps,vs,e,_m)) =
vs |> List.iterSquared (accVal cenv env)
accExpr cenv env e
-and accIntfImpls cenv env baseValOpt l = List.iter (accIntfImpl cenv env baseValOpt) l
+and accIntfImpls cenv env baseValOpt l =
+ List.iter (accIntfImpl cenv env baseValOpt) l
+
and accIntfImpl cenv env baseValOpt (ty,overrides) =
accTy cenv env ty
accMethods cenv env baseValOpt overrides
@@ -132,11 +156,14 @@ and accLambdas cenv env topValInfo e ety =
| _ ->
accExpr cenv env e
-and accExprs cenv env exprs = exprs |> List.iter (accExpr cenv env)
+and accExprs cenv env exprs =
+ exprs |> List.iter (accExpr cenv env)
-and accTargets cenv env m ty targets = Array.iter (accTarget cenv env m ty) targets
+and accTargets cenv env m ty targets =
+ Array.iter (accTarget cenv env m ty) targets
-and accTarget cenv env _m _ty (TTarget(_vs,e,_)) = accExpr cenv env e
+and accTarget cenv env _m _ty (TTarget(_vs,e,_)) =
+ accExpr cenv env e
and accDTree cenv env x =
match x with
@@ -169,7 +196,8 @@ and accAttrib cenv env (Attrib(_,_k,args,props,_,_,_m)) =
accExpr cenv env expr2
accTy cenv env ty)
-and accAttribs cenv env attribs = List.iter (accAttrib cenv env) attribs
+and accAttribs cenv env attribs =
+ List.iter (accAttrib cenv env) attribs
and accValReprInfo cenv env (ValReprInfo(_,args,ret)) =
args |> List.iterSquared (accArgReprInfo cenv env)
@@ -188,7 +216,8 @@ and accBind cenv env (bind:Binding) =
let topValInfo = match bind.Var.ValReprInfo with Some info -> info | _ -> ValReprInfo.emptyValData
accLambdas cenv env topValInfo bind.Expr bind.Var.Type
-and accBinds cenv env xs = xs |> List.iter (accBind cenv env)
+and accBinds cenv env xs =
+ xs |> List.iter (accBind cenv env)
let accTyconRecdField cenv env _tycon (rfield:RecdField) =
accAttribs cenv env rfield.PropertyAttribs
@@ -203,13 +232,15 @@ let accTycon cenv env (tycon:Tycon) =
accAttribs cenv env uc.Attribs
uc.RecdFieldsArray |> Array.iter (accTyconRecdField cenv env tycon))
-let accTycons cenv env tycons = List.iter (accTycon cenv env) tycons
+let accTycons cenv env tycons =
+ List.iter (accTycon cenv env) tycons
let rec accModuleOrNamespaceExpr cenv env x =
match x with
| ModuleOrNamespaceExprWithSig(_mty, def, _m) -> accModuleOrNamespaceDef cenv env def
-and accModuleOrNamespaceDefs cenv env x = List.iter (accModuleOrNamespaceDef cenv env) x
+and accModuleOrNamespaceDefs cenv env x =
+ List.iter (accModuleOrNamespaceDef cenv env) x
and accModuleOrNamespaceDef cenv env x =
match x with
@@ -221,12 +252,16 @@ and accModuleOrNamespaceDef cenv env x =
| TMAbstract(def) -> accModuleOrNamespaceExpr cenv env def
| TMDefs(defs) -> accModuleOrNamespaceDefs cenv env defs
-and accModuleOrNamespaceBinds cenv env xs = List.iter (accModuleOrNamespaceBind cenv env) xs
+and accModuleOrNamespaceBinds cenv env xs =
+ List.iter (accModuleOrNamespaceBind cenv env) xs
and accModuleOrNamespaceBind cenv env x =
match x with
- | ModuleOrNamespaceBinding.Binding bind -> accBind cenv env bind
- | ModuleOrNamespaceBinding.Module(mspec, rhs) -> accTycon cenv env mspec; accModuleOrNamespaceDef cenv env rhs
+ | ModuleOrNamespaceBinding.Binding bind ->
+ accBind cenv env bind
+ | ModuleOrNamespaceBinding.Module(mspec, rhs) ->
+ accTycon cenv env mspec
+ accModuleOrNamespaceDef cenv env rhs
let UnsolvedTyparsOfModuleDef g amap denv (mdef, extraAttribs) =
let cenv =
diff --git a/src/fsharp/IlxGen.fs b/src/fsharp/IlxGen.fs
index 9703dd76b9c..dccd66810ca 100644
--- a/src/fsharp/IlxGen.fs
+++ b/src/fsharp/IlxGen.fs
@@ -141,6 +141,8 @@ type IlxGenIntraAssemblyInfo =
/// that come from both the signature and the implementation.
StaticFieldInfo : Dictionary }
+type FakeUnit = | Fake
+
//--------------------------------------------------------------------------
/// Indicates how the generated IL code is ultimately emitted
@@ -2044,6 +2046,13 @@ let rec GenExpr (cenv:cenv) (cgbuf:CodeGenBuffer) eenv sp expr sequel =
GenApp cenv cgbuf eenv (f,fty,tyargs,args,m) sequel
| Expr.Val(v,_,m) ->
GenGetVal cenv cgbuf eenv (v,m) sequel
+
+ // Most generation of linear expressions is implemented routinely using tailcalls and the correct sequels.
+ // This is because the element of expansion happens to be the final thing generated in most cases. However
+ // for large lists we have to process the linearity separately
+ | LinearOpExpr _ ->
+ GenLinearExpr cenv cgbuf eenv expr sequel id |> ignore
+
| Expr.Op(op,tyargs,args,m) ->
match op,args,tyargs with
| TOp.ExnConstr(c),_,_ ->
@@ -2346,12 +2355,27 @@ and GenAllocExn cenv cgbuf eenv (c,args,m) sequel =
(mkNormalNewobj mspec)
GenSequel cenv eenv.cloc cgbuf sequel
+and GenAllocUnionCaseCore cenv cgbuf eenv (c,tyargs,n,m) =
+ let cuspec,idx = GenUnionCaseSpec cenv.amap m eenv.tyenv c tyargs
+ CG.EmitInstrs cgbuf (pop n) (Push [cuspec.DeclaringType]) (EraseUnions.mkNewData cenv.g.ilg (cuspec, idx))
+
and GenAllocUnionCase cenv cgbuf eenv (c,tyargs,args,m) sequel =
GenExprs cenv cgbuf eenv args
- let cuspec,idx = GenUnionCaseSpec cenv.amap m eenv.tyenv c tyargs
- CG.EmitInstrs cgbuf (pop args.Length) (Push [cuspec.DeclaringType]) (EraseUnions.mkNewData cenv.g.ilg (cuspec, idx))
+ GenAllocUnionCaseCore cenv cgbuf eenv (c,tyargs,args.Length,m)
GenSequel cenv eenv.cloc cgbuf sequel
+and GenLinearExpr cenv cgbuf eenv expr sequel (contf: FakeUnit -> FakeUnit) =
+ match expr with
+ | LinearOpExpr (TOp.UnionCase c, tyargs, argsFront, argLast, m) ->
+ GenExprs cenv cgbuf eenv argsFront
+ GenLinearExpr cenv cgbuf eenv argLast Continue (contf << (fun (Fake) ->
+ GenAllocUnionCaseCore cenv cgbuf eenv (c, tyargs, argsFront.Length + 1, m)
+ GenSequel cenv eenv.cloc cgbuf sequel
+ Fake))
+ | _ ->
+ GenExpr cenv cgbuf eenv SPSuppress expr sequel
+ contf Fake
+
and GenAllocRecd cenv cgbuf eenv ctorInfo (tcref,argtys,args,m) sequel =
let ty = GenNamedTyApp cenv.amap m eenv.tyenv tcref argtys
diff --git a/src/fsharp/InnerLambdasToTopLevelFuncs.fs b/src/fsharp/InnerLambdasToTopLevelFuncs.fs
index c03ac2ace3c..c88e3448b0f 100644
--- a/src/fsharp/InnerLambdasToTopLevelFuncs.fs
+++ b/src/fsharp/InnerLambdasToTopLevelFuncs.fs
@@ -480,9 +480,10 @@ module Pass2_DetermineReqdItems =
/// "val v" - free occurrence
/// "app (f,tps,args)" - occurrence
///
- /// On intercepted nodes, must exprF fold to collect from subexpressions.
- let ExprEnvIntercept (tlrS,arityM) exprF z expr =
- let accInstance z (fvref:ValRef,tps,args) (* f known local *) =
+ /// On intercepted nodes, must recurseF fold to collect from subexpressions.
+ let ExprEnvIntercept (tlrS,arityM) recurseF noInterceptF z expr =
+
+ let accInstance z (fvref:ValRef,tps,args) =
let f = fvref.Deref
match Zmap.tryFind f arityM with
@@ -508,48 +509,51 @@ module Pass2_DetermineReqdItems =
let fclass = BindingGroupSharingSameReqdItems tlrBs
// what determines env?
let frees = FreeInBindings tlrBs
- let reqdTypars0 = frees.FreeTyvars.FreeTypars |> Zset.elements (* put in env *)
+ // put in env
+ let reqdTypars0 = frees.FreeTyvars.FreeTypars |> Zset.elements
// occurrences contribute to env
let reqdVals0 = frees.FreeLocals |> Zset.elements
// tlrBs are not reqdVals0 for themselves
let reqdVals0 = reqdVals0 |> List.filter (fun gv -> not (fclass.Contains gv))
let reqdVals0 = reqdVals0 |> Zset.ofList valOrder
// collect into env over bodies
- let z = PushFrame fclass (reqdTypars0,reqdVals0,m) z
- let z = (z,tlrBs) ||> List.fold (foldOn (fun b -> b.Expr) exprF)
- let z = SaveFrame fclass z
- (* for bindings not marked TRL, collect *)
- let z = (z,nonTlrBs) ||> List.fold (foldOn (fun b -> b.Expr) exprF)
+ let z = PushFrame fclass (reqdTypars0,reqdVals0,m) z
+ let z = (z,tlrBs) ||> List.fold (foldOn (fun b -> b.Expr) recurseF)
+ let z = SaveFrame fclass z
+ // for bindings not marked TRL, collect
+ let z = (z,nonTlrBs) ||> List.fold (foldOn (fun b -> b.Expr) recurseF)
z
match expr with
| Expr.Val (v,_,_) ->
- let z = accInstance z (v,[],[])
- Some z
+ accInstance z (v,[],[])
+
| Expr.Op (TOp.LValueOp (_,v),_tys,args,_) ->
let z = accInstance z (v,[],[])
- let z = List.fold exprF z args
- Some z
+ List.fold recurseF z args
+
| Expr.App (f,fty,tys,args,m) ->
let f,_fty,tys,args,_m = destApp (f,fty,tys,args,m)
match f with
| Expr.Val (f,_,_) ->
- // // YES: APP vspec tps args - log
+ // YES: APP vspec tps args - log
let z = accInstance z (f,tys,args)
- let z = List.fold exprF z args
- Some z
+ List.fold recurseF z args
| _ ->
- (* NO: app, but function is not val - no log *)
- None
- | Expr.LetRec (binds,body,m,_) ->
+ // NO: app, but function is not val - no log
+ noInterceptF z expr
+
+ | Expr.LetRec (binds, body, m, _) ->
let z = accBinds m z binds
- let z = exprF z body
- Some z
- | Expr.Let (bind,body,m,_) ->
+ recurseF z body
+
+ | Expr.Let (bind,body,m,_) ->
let z = accBinds m z [bind]
- let z = exprF z body
- Some z
- | _ -> None (* NO: no intercept *)
+ // tailcall for linear sequences
+ recurseF z body
+
+ | _ ->
+ noInterceptF z expr
/// Initially, reqdTypars(fclass) = freetps(bodies).
@@ -1073,9 +1077,14 @@ module Pass4_RewriteAssembly =
/// At free vals, fixup 0-call if it is an arity-met constant.
/// Other cases rewrite structurally.
let rec TransExpr (penv: RewriteContext) (z:RewriteState) expr : Expr * RewriteState =
+
match expr with
- // Use TransLinearExpr with a rebuild-continuation for some forms to avoid stack overflows on large terms *)
- | Expr.LetRec _ | Expr.Let _ | Expr.Sequential _ ->
+ // Use TransLinearExpr with a rebuild-continuation for some forms to avoid stack overflows on large terms
+ | LinearOpExpr _
+ | LinearMatchExpr _
+ | Expr.LetRec _ // note, Expr.LetRec not normally considered linear, but keeping it here as it's always been here
+ | Expr.Let _
+ | Expr.Sequential _ ->
TransLinearExpr penv z expr (fun res -> res)
// app - call sites may require z.
@@ -1138,19 +1147,25 @@ module Pass4_RewriteAssembly =
MakePreDecs m pds (mkAndSimplifyMatch spBind exprm m ty dtree targets),z
// all others - below - rewrite structurally - so boiler plate code after this point...
- | Expr.Const _ -> expr,z (* constant wrt Val *)
+ | Expr.Const _ ->
+ expr,z
+
| Expr.Quote (a,{contents=Some(typeDefs,argTypes,argExprs,data)},isFromQueryExpression,m,ty) ->
let argExprs,z = List.mapFold (TransExpr penv) z argExprs
Expr.Quote(a,{contents=Some(typeDefs,argTypes,argExprs,data)},isFromQueryExpression,m,ty),z
+
| Expr.Quote (a,{contents=None},isFromQueryExpression,m,ty) ->
Expr.Quote(a,{contents=None},isFromQueryExpression,m,ty),z
+
| Expr.Op (c,tyargs,args,m) ->
let args,z = List.mapFold (TransExpr penv) z args
Expr.Op(c,tyargs,args,m),z
+
| Expr.StaticOptimization (constraints,e2,e3,m) ->
let e2,z = TransExpr penv z e2
let e3,z = TransExpr penv z e3
Expr.StaticOptimization(constraints,e2,e3,m),z
+
| Expr.TyChoose (_,_,m) ->
error(Error(FSComp.SR.tlrUnexpectedTExpr(),m))
@@ -1203,9 +1218,16 @@ module Pass4_RewriteAssembly =
let tg1,z = TransDecisionTreeTarget penv z tg1
// tailcall
TransLinearExpr penv z e2 (contf << (fun (e2,z) ->
- rebuildLinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty),z))
+ rebuildLinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty), z))
+
+ | LinearOpExpr (op, tyargs, argsHead, argLast, m) ->
+ let argsHead,z = List.mapFold (TransExpr penv) z argsHead
+ // tailcall
+ TransLinearExpr penv z argLast (contf << (fun (argLast, z) ->
+ rebuildLinearOpExpr (op, tyargs, argsHead, argLast, m), z))
| _ ->
+ // not a linear expression
contf (TransExpr penv z expr)
and TransMethod penv (z:RewriteState) (TObjExprMethod(slotsig,attribs,tps,vs,e,m)) =
diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs
index 4225ec74223..db410861520 100644
--- a/src/fsharp/Optimizer.fs
+++ b/src/fsharp/Optimizer.fs
@@ -293,25 +293,37 @@ type OptimizationSettings =
}
member x.jitOpt() = match x.jitOptUser with Some f -> f | None -> jitOptDefault
+
member x.localOpt () = match x.localOptUser with Some f -> f | None -> localOptDefault
+
member x.crossModuleOpt () = x.localOpt () && (match x.crossModuleOptUser with Some f -> f | None -> crossModuleOptDefault)
member x.KeepOptimizationValues() = x.crossModuleOpt ()
+
/// inline calls *
member x.InlineLambdas () = x.localOpt ()
+
/// eliminate unused bindings with no effect
member x.EliminateUnusedBindings () = x.localOpt ()
+
/// eliminate try around expr with no effect
member x.EliminateTryCatchAndTryFinally () = false // deemed too risky, given tiny overhead of including try/catch. See https://github.com/Microsoft/visualfsharp/pull/376
+
/// eliminate first part of seq if no effect
member x.EliminateSequential () = x.localOpt ()
+
/// determine branches in pattern matching
member x.EliminateSwitch () = x.localOpt ()
+
member x.EliminateRecdFieldGet () = x.localOpt ()
+
member x.EliminateTupleFieldGet () = x.localOpt ()
+
member x.EliminatUnionCaseFieldGet () = x.localOpt ()
+
/// eliminate non-compiler generated immediate bindings
member x.EliminateImmediatelyConsumedLocals() = x.localOpt ()
+
/// expand "let x = (exp1, exp2, ...)" bind fields as prior tmps
member x.ExpandStructrualValues() = x.localOpt ()
@@ -1274,9 +1286,13 @@ let rec ExprHasEffect g expr =
| Expr.Let(bind, body, _, _) -> BindingHasEffect g bind || ExprHasEffect g body
// REVIEW: could add Expr.Obj on an interface type - these are similar to records of lambda expressions
| _ -> true
+
and ExprsHaveEffect g exprs = List.exists (ExprHasEffect g) exprs
+
and BindingsHaveEffect g binds = List.exists (BindingHasEffect g) binds
+
and BindingHasEffect g bind = bind.Expr |> ExprHasEffect g
+
and OpHasEffect g m op =
match op with
| TOp.Tuple _ -> false
@@ -1788,10 +1804,18 @@ let rec OptimizeExpr cenv (env:IncrementalOptimizationEnv) expr =
match expr with
// treat the common linear cases to avoid stack overflows, using an explicit continuation
- | Expr.Sequential _ | Expr.Let _ -> OptimizeLinearExpr cenv env expr (fun x -> x)
+ | LinearOpExpr _
+ | LinearMatchExpr _
+ | Expr.Sequential _
+ | Expr.Let _ ->
+ OptimizeLinearExpr cenv env expr (fun x -> x)
+
+ | Expr.Const (c, m, ty) ->
+ OptimizeConst cenv env expr (c, m, ty)
+
+ | Expr.Val (v, _vFlags, m) ->
+ OptimizeVal cenv env expr (v, m)
- | Expr.Const (c, m, ty) -> OptimizeConst cenv env expr (c, m, ty)
- | Expr.Val (v, _vFlags, m) -> OptimizeVal cenv env expr (v, m)
| Expr.Quote(ast, splices, isFromQueryExpression, m, ty) ->
let splices = ref (splices.Value |> Option.map (map3Of4 (List.map (OptimizeExpr cenv env >> fst))))
Expr.Quote(ast, splices, isFromQueryExpression, m, ty),
@@ -1800,34 +1824,48 @@ let rec OptimizeExpr cenv (env:IncrementalOptimizationEnv) expr =
HasEffect = false
MightMakeCriticalTailcall=false
Info=UnknownValue }
- | Expr.Obj (_, ty, basev, expr, overrides, iimpls, m) -> OptimizeObjectExpr cenv env (ty, basev, expr, overrides, iimpls, m)
- | Expr.Op (c, tyargs, args, m) -> OptimizeExprOp cenv env (c, tyargs, args, m)
+
+ | Expr.Obj (_, ty, basev, createExpr, overrides, iimpls, m) ->
+ OptimizeObjectExpr cenv env (ty, basev, createExpr, overrides, iimpls, m)
+
+ | Expr.Op (op, tyargs, args, m) ->
+ OptimizeExprOp cenv env (op, tyargs, args, m)
+
| Expr.App(f, fty, tyargs, argsl, m) ->
// eliminate uses of query
match TryDetectQueryQuoteAndRun cenv expr with
| Some newExpr -> OptimizeExpr cenv env newExpr
| None -> OptimizeApplication cenv env (f, fty, tyargs, argsl, m)
- (* REVIEW: fold the next two cases together *)
+
| Expr.Lambda(_lambdaId, _, _, argvs, _body, m, rty) ->
let topValInfo = ValReprInfo ([], [argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)], ValReprInfo.unnamedRetVal)
let ty = mkMultiLambdaTy m argvs rty
OptimizeLambdas None cenv env topValInfo expr ty
+
| Expr.TyLambda(_lambdaId, tps, _body, _m, rty) ->
let topValInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal)
let ty = mkForallTyIfNeeded tps rty
OptimizeLambdas None cenv env topValInfo expr ty
- | Expr.TyChoose _ -> OptimizeExpr cenv env (TypeRelations.ChooseTyparSolutionsForFreeChoiceTypars cenv.g cenv.amap expr)
- | Expr.Match(spMatch, exprm, dtree, targets, m, ty) -> OptimizeMatch cenv env (spMatch, exprm, dtree, targets, m, ty)
- | Expr.LetRec (binds, e, m, _) -> OptimizeLetRec cenv env (binds, e, m)
- | Expr.StaticOptimization (constraints, e2, e3, m) ->
- let e2', e2info = OptimizeExpr cenv env e2
- let e3', e3info = OptimizeExpr cenv env e3
- Expr.StaticOptimization(constraints, e2', e3', m),
+
+ | Expr.TyChoose _ ->
+ OptimizeExpr cenv env (TypeRelations.ChooseTyparSolutionsForFreeChoiceTypars cenv.g cenv.amap expr)
+
+ | Expr.Match(spMatch, exprm, dtree, targets, m, ty) ->
+ OptimizeMatch cenv env (spMatch, exprm, dtree, targets, m, ty)
+
+ | Expr.LetRec (binds, bodyExpr, m, _) ->
+ OptimizeLetRec cenv env (binds, bodyExpr, m)
+
+ | Expr.StaticOptimization (constraints, expr2, expr3, m) ->
+ let expr2R, e2info = OptimizeExpr cenv env expr2
+ let expr3R, e3info = OptimizeExpr cenv env expr3
+ Expr.StaticOptimization(constraints, expr2R, expr3R, m),
{ TotalSize = min e2info.TotalSize e3info.TotalSize
FunctionSize = min e2info.FunctionSize e3info.FunctionSize
HasEffect = e2info.HasEffect || e3info.HasEffect
MightMakeCriticalTailcall=e2info.MightMakeCriticalTailcall || e3info.MightMakeCriticalTailcall // seems conservative
Info= UnknownValue }
+
| Expr.Link _eref ->
assert ("unexpected reclink" = "")
failwith "Unexpected reclink"
@@ -1851,7 +1889,9 @@ and OptimizeObjectExpr cenv env (ty, baseValOpt, basecall, overrides, iimpls, m)
// Optimize/analyze the methods that make up an object expression
//-------------------------------------------------------------------------
-and OptimizeMethods cenv env baseValOpt l = OptimizeList (OptimizeMethod cenv env baseValOpt) l
+and OptimizeMethods cenv env baseValOpt methods =
+ OptimizeList (OptimizeMethod cenv env baseValOpt) methods
+
and OptimizeMethod cenv env baseValOpt (TObjExprMethod(slotsig, attribs, tps, vs, e, m) as tmethod) =
let env = {env with latestBoundId=Some tmethod.Id; functionVal = None}
let env = BindTypeVarsToUnknown tps env
@@ -1866,11 +1906,11 @@ and OptimizeMethod cenv env baseValOpt (TObjExprMethod(slotsig, attribs, tps, vs
MightMakeCriticalTailcall=false
Info=UnknownValue}
-//-------------------------------------------------------------------------
-// Optimize/analyze the interface implementations that form part of an object expression
-//-------------------------------------------------------------------------
+/// Optimize/analyze the interface implementations that form part of an object expression
+and OptimizeInterfaceImpls cenv env baseValOpt iimpls =
+ OptimizeList (OptimizeInterfaceImpl cenv env baseValOpt) iimpls
-and OptimizeInterfaceImpls cenv env baseValOpt l = OptimizeList (OptimizeInterfaceImpl cenv env baseValOpt) l
+/// Optimize/analyze the interface implementations that form part of an object expression
and OptimizeInterfaceImpl cenv env baseValOpt (ty, overrides) =
let overrides', overridesinfos = OptimizeMethods cenv env baseValOpt overrides
(ty, overrides'),
@@ -1880,13 +1920,10 @@ and OptimizeInterfaceImpl cenv env baseValOpt (ty, overrides) =
MightMakeCriticalTailcall=false
Info=UnknownValue}
-//-------------------------------------------------------------------------
-// Make and optimize String.Concat calls
-//-------------------------------------------------------------------------
-
+/// Make and optimize String.Concat calls
and MakeOptimizedSystemStringConcatCall cenv env m args =
- let rec optimizeArg e accArgs =
- match e, accArgs with
+ let rec optimizeArg argExpr accArgs =
+ match argExpr, accArgs with
| Expr.Op(TOp.ILCall(_, _, _, _, _, _, _, methRef, _, _, _), _, [ Expr.Op(TOp.Array, _, args, _) ], _), _ when IsSystemStringConcatArray methRef ->
optimizeArgs args accArgs
@@ -1905,7 +1942,7 @@ and MakeOptimizedSystemStringConcatCall cenv env m args =
let args = optimizeArgs args []
- let e =
+ let expr =
match args with
| [ arg ] ->
arg
@@ -1919,11 +1956,11 @@ and MakeOptimizedSystemStringConcatCall cenv env m args =
let arg = mkArray (cenv.g.string_ty, args, m)
mkStaticCall_String_Concat_Array cenv.g m arg
- match e with
+ match expr with
| Expr.Op(TOp.ILCall(_, _, _, _, _, _, _, methRef, _, _, _) as op, tyargs, args, m) when IsSystemStringConcatOverload methRef || IsSystemStringConcatArray methRef ->
OptimizeExprOpReductions cenv env (op, tyargs, args, m)
| _ ->
- OptimizeExpr cenv env e
+ OptimizeExpr cenv env expr
//-------------------------------------------------------------------------
// Optimize/analyze an application of an intrinsic operator to arguments
@@ -1933,11 +1970,11 @@ and OptimizeExprOp cenv env (op, tyargs, args, m) =
// Special cases
match op, tyargs, args with
- | TOp.Coerce, [toty;fromty], [e] ->
- let e', einfo = OptimizeExpr cenv env e
- if typeEquiv cenv.g toty fromty then e', einfo
+ | TOp.Coerce, [toty;fromty], [arg] ->
+ let argR, einfo = OptimizeExpr cenv env arg
+ if typeEquiv cenv.g toty fromty then argR, einfo
else
- mkCoerceExpr(e', toty, m, fromty),
+ mkCoerceExpr(argR, toty, m, fromty),
{ TotalSize=einfo.TotalSize + 1
FunctionSize=einfo.FunctionSize + 1
HasEffect = true
@@ -2004,6 +2041,9 @@ and OptimizeExprOp cenv env (op, tyargs, args, m) =
and OptimizeExprOpReductions cenv env (op, tyargs, args, m) =
let args', arginfos = OptimizeExprsThenConsiderSplits cenv env args
+ OptimizeExprOpReductionsAfter cenv env (op, tyargs, args', arginfos, m)
+
+and OptimizeExprOpReductionsAfter cenv env (op, tyargs, args', arginfos, m) =
let knownValue =
match op, arginfos with
| TOp.ValFieldGet (rf), [e1info] -> TryOptimizeRecordFieldGet cenv env (e1info, rf, tyargs, m)
@@ -2210,15 +2250,15 @@ and OptimizeLetRec cenv env (binds, bodyExpr, m) =
let info = CombineValueInfos (einfo :: bindinfos) evalue'
bodyExpr', info
-//-------------------------------------------------------------------------
-// Optimize/analyze a linear sequence of sequentioanl execution or 'let' bindings.
-//-------------------------------------------------------------------------
-
+/// Optimize/analyze a linear sequence of sequential execution or 'let' bindings.
and OptimizeLinearExpr cenv env expr contf =
+ // Eliminate subsumption coercions for functions. This must be done post-typechecking because we need
+ // complete inference types.
let expr = DetectAndOptimizeForExpression cenv.g OptimizeAllForExpressions expr
-
let expr = if cenv.settings.ExpandStructrualValues() then ExpandStructuralBinding cenv expr else expr
+ let expr = stripExpr expr
+
match expr with
| Expr.Sequential (e1, e2, flag, spSeq, m) ->
let e1', e1info = OptimizeExpr cenv env e1
@@ -2252,24 +2292,31 @@ and OptimizeLinearExpr cenv env expr contf =
MightMakeCriticalTailcall = bodyInfo.MightMakeCriticalTailcall // discard tailcall info from binding - not in tailcall position
Info = UnknownValue }
else
- (* On the way back up: Trim out any optimization info that involves escaping values on the way back up *)
+ // On the way back up: Trim out any optimization info that involves escaping values on the way back up
let evalue' = AbstractExprInfoByVars ([bind'.Var], []) bodyInfo.Info
body',
- { TotalSize = bindingInfo.TotalSize + bodyInfo.TotalSize - localVarSize (* eliminated a local var *)
+ { TotalSize = bindingInfo.TotalSize + bodyInfo.TotalSize - localVarSize // eliminated a local var
FunctionSize = bindingInfo.FunctionSize + bodyInfo.FunctionSize - localVarSize (* eliminated a local var *)
HasEffect=bindingInfo.HasEffect || bodyInfo.HasEffect
MightMakeCriticalTailcall = bodyInfo.MightMakeCriticalTailcall // discard tailcall info from binding - not in tailcall position
Info = evalue' } ))
| LinearMatchExpr (spMatch, exprm, dtree, tg1, e2, spTarget2, m, ty) ->
- let dtree, dinfo = OptimizeDecisionTree cenv env m dtree
+ let dtree', dinfo = OptimizeDecisionTree cenv env m dtree
let tg1, tg1info = OptimizeDecisionTreeTarget cenv env m tg1
// tailcall
OptimizeLinearExpr cenv env e2 (contf << (fun (e2, e2info) ->
+ // This ConsiderSplitToMethod is performed because it is present in OptimizeDecisionTreeTarget
let e2, e2info = ConsiderSplitToMethod cenv.settings.abstractBigTargets cenv.settings.bigTargetSize cenv env (e2, e2info)
let tinfos = [tg1info; e2info]
- let tgs = [tg1; TTarget([], e2, spTarget2)]
- RebuildOptimizedMatch (spMatch, exprm, m, ty, dtree, tgs, dinfo, tinfos)))
+ let targets' = [tg1; TTarget([], e2, spTarget2)]
+ OptimizeMatchPart2 cenv (spMatch, exprm, dtree', targets', dinfo, tinfos, m, ty)))
+
+ | LinearOpExpr (op, tyargs, argsHead, argLast, m) ->
+ let argsHead', argsHeadInfos' = OptimizeList (OptimizeExprThenConsiderSplit cenv env) argsHead
+ // tailcall
+ OptimizeLinearExpr cenv env argLast (contf << (fun (argLast', argLastInfo) ->
+ OptimizeExprOpReductionsAfter cenv env (op, tyargs, argsHead' @ [argLast'], argsHeadInfos' @ [argLastInfo], m)))
| _ -> contf (OptimizeExpr cenv env expr)
@@ -2916,7 +2963,6 @@ and OptimizeExprsThenConsiderSplits cenv env exprs =
| [] -> NoExprs
| _ -> OptimizeList (OptimizeExprThenConsiderSplit cenv env) exprs
-
and OptimizeExprThenReshapeAndConsiderSplit cenv env (shape, e) =
OptimizeExprThenConsiderSplit cenv env (ReshapeExpr cenv (shape, e))
@@ -2994,6 +3040,9 @@ and OptimizeMatch cenv env (spMatch, exprm, dtree, targets, m, ty) =
// REVIEW: consider collecting, merging and using information flowing through each line of the decision tree to each target
let dtree', dinfo = OptimizeDecisionTree cenv env m dtree
let targets', tinfos = OptimizeDecisionTreeTargets cenv env m targets
+ OptimizeMatchPart2 cenv (spMatch, exprm, dtree', targets', dinfo, tinfos, m, ty)
+
+and OptimizeMatchPart2 cenv (spMatch, exprm, dtree', targets', dinfo, tinfos, m, ty) =
let newExpr, newInfo = RebuildOptimizedMatch (spMatch, exprm, m, ty, dtree', targets', dinfo, tinfos)
let newExpr2 = if not (cenv.settings.localOpt()) then newExpr else CombineBoolLogic newExpr
newExpr2, newInfo
@@ -3011,27 +3060,20 @@ and RebuildOptimizedMatch (spMatch, exprm, m, ty, dtree, tgs, dinfo, tinfos) =
let einfo = CombineMatchInfos dinfo tinfo
expr, einfo
-//-------------------------------------------------------------------------
-// Optimize/analyze a target of a decision tree
-//-------------------------------------------------------------------------
-
-and OptimizeDecisionTreeTarget cenv env _m (TTarget(vs, e, spTarget)) =
- (* REVIEW: this is where we should be using information collected for each target *)
+/// Optimize/analyze a target of a decision tree
+and OptimizeDecisionTreeTarget cenv env _m (TTarget(vs, expr, spTarget)) =
let env = BindInternalValsToUnknown cenv vs env
- let e', einfo = OptimizeExpr cenv env e
- let e', einfo = ConsiderSplitToMethod cenv.settings.abstractBigTargets cenv.settings.bigTargetSize cenv env (e', einfo)
+ let expr', einfo = OptimizeExpr cenv env expr
+ let expr', einfo = ConsiderSplitToMethod cenv.settings.abstractBigTargets cenv.settings.bigTargetSize cenv env (expr', einfo)
let evalue' = AbstractExprInfoByVars (vs, []) einfo.Info
- TTarget(vs, e', spTarget),
+ TTarget(vs, expr', spTarget),
{ TotalSize=einfo.TotalSize
FunctionSize=einfo.FunctionSize
HasEffect=einfo.HasEffect
MightMakeCriticalTailcall = einfo.MightMakeCriticalTailcall
Info=evalue' }
-//-------------------------------------------------------------------------
-// Optimize/analyze a decision tree
-//-------------------------------------------------------------------------
-
+/// Optimize/analyze a decision tree
and OptimizeDecisionTree cenv env m x =
match x with
| TDSuccess (es, n) ->
diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs
index f2c8f370da2..e13715a5630 100644
--- a/src/fsharp/PostInferenceChecks.fs
+++ b/src/fsharp/PostInferenceChecks.fs
@@ -879,27 +879,12 @@ and CheckCallWithReceiver cenv env m returnTy args contexts context =
limitArgs
CheckCallLimitArgs cenv env m returnTy limitArgs context
-/// Check an expression, given information about the position of the expression
-and CheckExpr (cenv:cenv) (env:env) origExpr (context:PermitByRefExpr) : Limit =
- let g = cenv.g
-
- let origExpr = stripExpr origExpr
-
- // CheckForOverAppliedExceptionRaisingPrimitive is more easily checked prior to NormalizeAndAdjustPossibleSubsumptionExprs
- CheckForOverAppliedExceptionRaisingPrimitive cenv origExpr
- let expr = NormalizeAndAdjustPossibleSubsumptionExprs g origExpr
- let expr = stripExpr expr
-
+and CheckExprLinear (cenv:cenv) (env:env) expr (context:PermitByRefExpr) (contf : Limit -> Limit) =
match expr with
- | Expr.Sequential (e1,e2,dir,_,_) ->
+ | Expr.Sequential (e1,e2,NormalSeq,_,_) ->
CheckExprNoByrefs cenv env e1
-
- match dir with
- | NormalSeq ->
- CheckExpr cenv env e2 context // carry context into _;RHS (normal sequencing only)
- | ThenDoSeq ->
- CheckExprNoByrefs cenv {env with ctorLimitedZone=false} e2
- NoLimit
+ // tailcall
+ CheckExprLinear cenv env e2 context contf
| Expr.Let ((TBind(v,_bindRhs,_) as bind),body,_,_) ->
let isByRef = isByrefTy cenv.g v.Type
@@ -913,7 +898,48 @@ and CheckExpr (cenv:cenv) (env:env) origExpr (context:PermitByRefExpr) : Limit =
let limit = CheckBinding cenv { env with returnScope = env.returnScope + 1 } false bindingContext bind
BindVal cenv env v
LimitVal cenv v { limit with scope = if isByRef then limit.scope else env.returnScope }
- CheckExpr cenv env body context
+ // tailcall
+ CheckExprLinear cenv env body context contf
+
+ | LinearOpExpr (_op, tyargs, argsHead, argLast, m) ->
+ CheckTypeInstNoByrefs cenv env m tyargs
+ argsHead |> List.iter (CheckExprNoByrefs cenv env)
+ // tailcall
+ CheckExprLinear cenv env argLast PermitByRefExpr.No (fun _ -> contf NoLimit)
+
+ | LinearMatchExpr (_spMatch, _exprm, dtree, tg1, e2, _spTarget2, m, ty) ->
+ CheckTypeNoInnerByrefs cenv env m ty
+ CheckDecisionTree cenv env dtree
+ let lim1 = CheckDecisionTreeTarget cenv env context tg1
+ // tailcall
+ CheckExprLinear cenv env e2 context (fun lim2 -> contf (CombineLimits [ lim1; lim2 ]))
+
+ | _ ->
+ // not a linear expression
+ contf (CheckExpr cenv env expr context)
+
+/// Check an expression, given information about the position of the expression
+and CheckExpr (cenv:cenv) (env:env) origExpr (context:PermitByRefExpr) : Limit =
+ let g = cenv.g
+
+ let origExpr = stripExpr origExpr
+
+ // CheckForOverAppliedExceptionRaisingPrimitive is more easily checked prior to NormalizeAndAdjustPossibleSubsumptionExprs
+ CheckForOverAppliedExceptionRaisingPrimitive cenv origExpr
+ let expr = NormalizeAndAdjustPossibleSubsumptionExprs g origExpr
+ let expr = stripExpr expr
+
+ match expr with
+ | LinearOpExpr _
+ | LinearMatchExpr _
+ | Expr.Let _
+ | Expr.Sequential (_, _, NormalSeq, _, _) ->
+ CheckExprLinear cenv env expr context id
+
+ | Expr.Sequential (e1,e2,ThenDoSeq,_,_) ->
+ CheckExprNoByrefs cenv env e1
+ CheckExprNoByrefs cenv {env with ctorLimitedZone=false} e2
+ NoLimit
| Expr.Const (_,m,ty) ->
CheckTypeNoInnerByrefs cenv env m ty
diff --git a/src/fsharp/TastOps.fs b/src/fsharp/TastOps.fs
index 50eaca76414..755aa2e202b 100644
--- a/src/fsharp/TastOps.fs
+++ b/src/fsharp/TastOps.fs
@@ -142,10 +142,10 @@ let instMeasureTyparRef tpinst unt (tp:Typar) =
loop tpinst
| _ -> failwith "instMeasureTyparRef: kind=Type"
-let remapTyconRef (tcmap: TyconRefMap<_>) tcr =
- match tcmap.TryFind tcr with
- | Some tcr -> tcr
- | None -> tcr
+let remapTyconRef (tcmap: TyconRefMap<_>) tcref =
+ match tcmap.TryFind tcref with
+ | Some tcref -> tcref
+ | None -> tcref
let remapUnionCaseRef tcmap (UCRef(tcref, nm)) = UCRef(remapTyconRef tcmap tcref, nm)
let remapRecdFieldRef tcmap (RFRef(tcref, nm)) = RFRef(remapTyconRef tcmap tcref, nm)
@@ -164,9 +164,9 @@ let rec remapTypeAux (tyenv : Remap) (ty:TType) =
let ty = stripTyparEqns ty
match ty with
| TType_var tp as ty -> instTyparRef tyenv.tpinst ty tp
- | TType_app (tcr, tinst) as ty ->
- match tyenv.tyconRefRemap.TryFind tcr with
- | Some tcr' -> TType_app (tcr', remapTypesAux tyenv tinst)
+ | TType_app (tcref, tinst) as ty ->
+ match tyenv.tyconRefRemap.TryFind tcref with
+ | Some tcref' -> TType_app (tcref', remapTypesAux tyenv tinst)
| None ->
match tinst with
| [] -> ty // optimization to avoid re-allocation of TType_app node in the common case
@@ -174,12 +174,12 @@ let rec remapTypeAux (tyenv : Remap) (ty:TType) =
// avoid reallocation on idempotent
let tinst' = remapTypesAux tyenv tinst
if tinst === tinst' then ty else
- TType_app (tcr, tinst')
+ TType_app (tcref, tinst')
- | TType_ucase (UCRef(tcr, n), tinst) ->
- match tyenv.tyconRefRemap.TryFind tcr with
- | Some tcr' -> TType_ucase (UCRef(tcr', n), remapTypesAux tyenv tinst)
- | None -> TType_ucase (UCRef(tcr, n), remapTypesAux tyenv tinst)
+ | TType_ucase (UCRef(tcref, n), tinst) ->
+ match tyenv.tyconRefRemap.TryFind tcref with
+ | Some tcref' -> TType_ucase (UCRef(tcref', n), remapTypesAux tyenv tinst)
+ | None -> TType_ucase (UCRef(tcref, n), remapTypesAux tyenv tinst)
| TType_anon (anonInfo, l) as ty ->
let tupInfo' = remapTupInfoAux tyenv anonInfo.TupInfo
@@ -210,9 +210,9 @@ let rec remapTypeAux (tyenv : Remap) (ty:TType) =
and remapMeasureAux tyenv unt =
match unt with
| Measure.One -> unt
- | Measure.Con tcr ->
- match tyenv.tyconRefRemap.TryFind tcr with
- | Some tcr -> Measure.Con tcr
+ | Measure.Con tcref ->
+ match tyenv.tyconRefRemap.TryFind tcref with
+ | Some tcref -> Measure.Con tcref
| None -> unt
| Measure.Prod(u1, u2) -> Measure.Prod(remapMeasureAux tyenv u1, remapMeasureAux tyenv u2)
| Measure.RationalPower(u, q) -> Measure.RationalPower(remapMeasureAux tyenv u, q)
@@ -796,12 +796,12 @@ let isRefTupleTy g ty = ty |> stripTyEqns g |> (function TType_tuple (tupIn
let isStructTupleTy g ty = ty |> stripTyEqns g |> (function TType_tuple (tupInfo, _) -> evalTupInfoIsStruct tupInfo | _ -> false)
let isAnonRecdTy g ty = ty |> stripTyEqns g |> (function TType_anon _ -> true | _ -> false)
let isStructAnonRecdTy g ty = ty |> stripTyEqns g |> (function TType_anon (anonInfo, _) -> evalAnonInfoIsStruct anonInfo | _ -> false)
-let isUnionTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr, _) -> tcr.IsUnionTycon | _ -> false)
-let isReprHiddenTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr, _) -> tcr.IsHiddenReprTycon | _ -> false)
-let isFSharpObjModelTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr, _) -> tcr.IsFSharpObjectModelTycon | _ -> false)
-let isRecdTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr, _) -> tcr.IsRecordTycon | _ -> false)
-let isFSharpStructOrEnumTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr, _) -> tcr.IsFSharpStructOrEnumTycon | _ -> false)
-let isFSharpEnumTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr, _) -> tcr.IsFSharpEnumTycon | _ -> false)
+let isUnionTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.IsUnionTycon | _ -> false)
+let isReprHiddenTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.IsHiddenReprTycon | _ -> false)
+let isFSharpObjModelTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.IsFSharpObjectModelTycon | _ -> false)
+let isRecdTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.IsRecordTycon | _ -> false)
+let isFSharpStructOrEnumTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.IsFSharpStructOrEnumTycon | _ -> false)
+let isFSharpEnumTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.IsFSharpEnumTycon | _ -> false)
let isTyparTy g ty = ty |> stripTyEqns g |> (function TType_var _ -> true | _ -> false)
let isAnyParTy g ty = ty |> stripTyEqns g |> (function TType_var _ -> true | TType_measure unt -> isUnitParMeasure g unt | _ -> false)
let isMeasureTy g ty = ty |> stripTyEqns g |> (function TType_measure _ -> true | _ -> false)
@@ -843,12 +843,12 @@ let tryNiceEntityRefOfTyOption ty =
let (|NullableTy|_|) g ty =
match tryAppTy g ty with
- | ValueSome (tcr, [tyarg]) when tyconRefEq g tcr g.system_Nullable_tcref -> Some tyarg
+ | ValueSome (tcref, [tyarg]) when tyconRefEq g tcref g.system_Nullable_tcref -> Some tyarg
| _ -> None
let (|StripNullableTy|) g ty =
match tryAppTy g ty with
- | ValueSome (tcr, [tyarg]) when tyconRefEq g tcr g.system_Nullable_tcref -> tyarg
+ | ValueSome (tcref, [tyarg]) when tyconRefEq g tcref g.system_Nullable_tcref -> tyarg
| _ -> ty
let mkInstForAppTy g ty =
@@ -1584,12 +1584,12 @@ let IsCompiledAsStaticPropertyWithField g (v:Val) =
// Multi-dimensional array types...
//-------------------------------------------------------------------------
-let isArrayTyconRef (g:TcGlobals) tcr =
+let isArrayTyconRef (g:TcGlobals) tcref =
g.il_arr_tcr_map
- |> Array.exists (tyconRefEq g tcr)
+ |> Array.exists (tyconRefEq g tcref)
-let rankOfArrayTyconRef (g:TcGlobals) tcr =
- match g.il_arr_tcr_map |> Array.tryFindIndex (tyconRefEq g tcr) with
+let rankOfArrayTyconRef (g:TcGlobals) tcref =
+ match g.il_arr_tcr_map |> Array.tryFindIndex (tyconRefEq g tcref) with
| Some idx ->
idx + 1
| None ->
@@ -1698,8 +1698,8 @@ let rankOfArrayTy g ty = rankOfArrayTyconRef g (tcrefOfAppTy g ty)
let isFSharpObjModelRefTy g ty =
isFSharpObjModelTy g ty &&
- let tcr = tcrefOfAppTy g ty
- match tcr.FSharpObjectModelTypeInfo.fsobjmodel_kind with
+ let tcref = tcrefOfAppTy g ty
+ match tcref.FSharpObjectModelTypeInfo.fsobjmodel_kind with
| TTyconClass | TTyconInterface | TTyconDelegate _ -> true
| TTyconStruct | TTyconEnum -> false
@@ -1998,9 +1998,9 @@ let accFreeLocalTycon opts x acc =
if Zset.contains x acc.FreeTycons then acc else
{ acc with FreeTycons = Zset.add x acc.FreeTycons }
-let accFreeTycon opts (tcr:TyconRef) acc =
+let accFreeTycon opts (tcref:TyconRef) acc =
if not opts.includeLocalTycons then acc
- elif tcr.IsLocalRef then accFreeLocalTycon opts tcr.PrivateTarget acc
+ elif tcref.IsLocalRef then accFreeLocalTycon opts tcref.PrivateTarget acc
else acc
let rec boundTypars opts tps acc =
@@ -3620,12 +3620,12 @@ module DebugPrint = begin
| VSlotDirectCall -> xL ^^ rightL(tagText "")
| NormalValUse -> xL
xL
- | Expr.Sequential (x0, x1, flag, _, _) ->
+ | Expr.Sequential (expr1, expr2, flag, _, _) ->
let flag =
match flag with
| NormalSeq -> "; (*Seq*)"
| ThenDoSeq -> "; (*ThenDo*)"
- ((exprL x0 ^^ rightL (tagText flag)) @@ exprL x1) |> wrap
+ ((exprL expr1 ^^ rightL (tagText flag)) @@ exprL expr2) |> wrap
| Expr.Lambda(_, _, baseValOpt, argvs, body, _, _) ->
let formalsL = spaceListL (List.map valAtBindL argvs) in
let bindingL =
@@ -4148,7 +4148,7 @@ let allEntitiesOfModuleOrNamespaceTy m = foldModuleOrNamespaceTy (fun ft acc ->
let isPublicVal (lv:Val) = (lv.Accessibility = taccessPublic)
let isPublicUnionCase (ucr:UnionCaseRef) = (ucr.UnionCase.Accessibility = taccessPublic)
let isPublicRecdField (rfr:RecdFieldRef) = (rfr.RecdField.Accessibility = taccessPublic)
-let isPublicTycon (tcr:Tycon) = (tcr.Accessibility = taccessPublic)
+let isPublicTycon (tcref:Tycon) = (tcref.Accessibility = taccessPublic)
let freeVarsAllPublic fvs =
// Are any non-public items used in the expr (which corresponded to the fvs)?
@@ -4171,9 +4171,10 @@ let freeTyvarsAllPublic tyvars =
Zset.forall isPublicTycon tyvars.FreeTycons
-// Detect the subset of match expressions we treat in a linear way
-// -- if then else
-// -- match e with pat[vs] -> e1[vs] | _ -> e2
+/// Detect the subset of match expressions we process in a linear way (i.e. using tailcalls, rather than
+/// unbounded stack)
+/// -- if then else
+/// -- match e with pat[vs] -> e1[vs] | _ -> e2
let (|LinearMatchExpr|_|) expr =
match expr with
@@ -4183,6 +4184,17 @@ let (|LinearMatchExpr|_|) expr =
let rebuildLinearMatchExpr (sp, m, dtree, tg1, e2, sp2, m2, ty) =
primMkMatch (sp, m, dtree, [|tg1;(TTarget([], e2, sp2))|], m2, ty)
+/// Detect a subset of 'Expr.Op' expressions we process in a linear way (i.e. using tailcalls, rather than
+/// unbounded stack). Only covers Cons(args,Cons(args,Cons(args,Cons(args,...._)))).
+let (|LinearOpExpr|_|) expr =
+ match expr with
+ | Expr.Op ((TOp.UnionCase _ as op), tinst, args, m) when not args.IsEmpty ->
+ let argsFront, argLast = List.frontAndBack args
+ Some (op, tinst, argsFront, argLast, m)
+ | _ -> None
+
+let rebuildLinearOpExpr (op, tinst, argsFront, argLast, m) =
+ Expr.Op (op, tinst, argsFront@[argLast], m)
//---------------------------------------------------------------------------
// Free variables in terms. All binders are distinct.
@@ -4304,13 +4316,13 @@ and accUsedRecdOrUnionTyconRepr opts (tc:Tycon) fvs =
then accLocalTyconRepr opts tc fvs
else fvs
-and accFreeUnionCaseRef opts cr fvs =
+and accFreeUnionCaseRef opts ucref fvs =
if not opts.includeUnionCases then fvs else
- if Zset.contains cr fvs.FreeUnionCases then fvs
+ if Zset.contains ucref fvs.FreeUnionCases then fvs
else
- let fvs = fvs |> accUsedRecdOrUnionTyconRepr opts cr.Tycon
- let fvs = fvs |> accFreevarsInTycon opts cr.TyconRef
- { fvs with FreeUnionCases = Zset.add cr fvs.FreeUnionCases }
+ let fvs = fvs |> accUsedRecdOrUnionTyconRepr opts ucref.Tycon
+ let fvs = fvs |> accFreevarsInTycon opts ucref.TyconRef
+ { fvs with FreeUnionCases = Zset.add ucref fvs.FreeUnionCases }
and accFreeRecdFieldRef opts rfref fvs =
if not opts.includeRecdFields then fvs else
@@ -4355,23 +4367,29 @@ and accFreeInExprLinear (opts:FreeVarOptions) x acc contf =
and accFreeInExprNonLinear opts x acc =
match x with
+
// BINDING CONSTRUCTS
- | Expr.Lambda (_, ctorThisValOpt, baseValOpt, vs, b, _, rty) ->
+ | Expr.Lambda (_, ctorThisValOpt, baseValOpt, vs, bodyExpr, _, rty) ->
unionFreeVars
(Option.foldBack (boundLocalVal opts) ctorThisValOpt
(Option.foldBack (boundLocalVal opts) baseValOpt
(boundLocalVals opts vs
(accFreeVarsInTy opts rty
- (freeInExpr opts b)))))
+ (freeInExpr opts bodyExpr)))))
acc
- | Expr.TyLambda (_, vs, b, _, rty) ->
- unionFreeVars (accFreeTyvars opts boundTypars vs (accFreeVarsInTy opts rty (freeInExpr opts b))) acc
- | Expr.TyChoose (vs, b, _) ->
- unionFreeVars (accFreeTyvars opts boundTypars vs (freeInExpr opts b)) acc
- | Expr.LetRec (binds, e, _, cache) ->
- unionFreeVars (freeVarsCacheCompute opts cache (fun () -> List.foldBack (bindLhs opts) binds (List.foldBack (accBindRhs opts) binds (freeInExpr opts e)))) acc
+
+ | Expr.TyLambda (_, vs, bodyExpr, _, rty) ->
+ unionFreeVars (accFreeTyvars opts boundTypars vs (accFreeVarsInTy opts rty (freeInExpr opts bodyExpr))) acc
+
+ | Expr.TyChoose (vs, bodyExpr, _) ->
+ unionFreeVars (accFreeTyvars opts boundTypars vs (freeInExpr opts bodyExpr)) acc
+
+ | Expr.LetRec (binds, bodyExpr, _, cache) ->
+ unionFreeVars (freeVarsCacheCompute opts cache (fun () -> List.foldBack (bindLhs opts) binds (List.foldBack (accBindRhs opts) binds (freeInExpr opts bodyExpr)))) acc
+
| Expr.Let _ ->
failwith "unreachable - linear expr"
+
| Expr.Obj (_, ty, basev, basecall, overrides, iimpls, _) ->
unionFreeVars
(boundProtect
@@ -4381,47 +4399,55 @@ and accFreeInExprNonLinear opts x acc =
(accFreeInMethods opts overrides
(List.foldBack (accFreeInInterfaceImpl opts) iimpls emptyFreeVars))))))
acc
+
// NON-BINDING CONSTRUCTS
| Expr.Const _ -> acc
+
| Expr.Val (lvr, flags, _) ->
accFreeInValFlags opts flags (accFreeValRef opts lvr acc)
+
| Expr.Quote (ast, {contents=Some(_, argTypes, argExprs, _data)}, _, _, ty) ->
accFreeInExpr opts ast
(accFreeInExprs opts argExprs
(accFreeVarsInTys opts argTypes
(accFreeVarsInTy opts ty acc)))
+
| Expr.Quote (ast, {contents=None}, _, _, ty) ->
accFreeInExpr opts ast (accFreeVarsInTy opts ty acc)
+
| Expr.App(f0, f0ty, tyargs, args, _) ->
accFreeVarsInTy opts f0ty
(accFreeInExpr opts f0
(accFreeVarsInTys opts tyargs
(accFreeInExprs opts args acc)))
+
| Expr.Link(eref) -> accFreeInExpr opts !eref acc
- | Expr.Sequential (e1, e2, _, _, _) ->
- let acc = accFreeInExpr opts e1 acc
- // tail-call - this is required because we should be able to handle (((e1; e2); e3); e4; .... ))
- accFreeInExpr opts e2 acc
- | Expr.StaticOptimization (_, e2, e3, _) -> accFreeInExpr opts e2 (accFreeInExpr opts e3 acc)
+ | Expr.Sequential (expr1, expr2, _, _, _) ->
+ let acc = accFreeInExpr opts expr1 acc
+ // tail-call - linear expression
+ accFreeInExpr opts expr2 acc
+
+ | Expr.StaticOptimization (_, expr2, expr3, _) ->
+ accFreeInExpr opts expr2 (accFreeInExpr opts expr3 acc)
+
| Expr.Match (_, _, dtree, targets, _, _) ->
match x with
// Handle if-then-else
- | LinearMatchExpr(_, _, dtree, tg1, e2, _, _, _) ->
+ | LinearMatchExpr(_, _, dtree, target, bodyExpr, _, _, _) ->
let acc = accFreeInDecisionTree opts dtree acc
- let acc = accFreeInTarget opts tg1 acc
- accFreeInExpr opts e2 acc // tailcall
+ let acc = accFreeInTarget opts target acc
+ accFreeInExpr opts bodyExpr acc // tailcall
| _ ->
let acc = accFreeInDecisionTree opts dtree acc
accFreeInTargets opts targets acc
- //| Expr.Op (TOp.TryCatch, tinst, [Expr.Lambda(_, _, [_], e1, _, _, _); Expr.Lambda(_, _, [_], e2, _, _, _); Expr.Lambda(_, _, [_], e3, _, _, _)], _) ->
- | Expr.Op (TOp.TryCatch _, tinst, [e1;e2;e3], _) ->
+ | Expr.Op (TOp.TryCatch _, tinst, [expr1; expr2; expr3], _) ->
unionFreeVars
(accFreeVarsInTys opts tinst
- (accFreeInExprs opts [e1;e2] acc))
- (bound_rethrow (accFreeInExpr opts e3 emptyFreeVars))
+ (accFreeInExprs opts [expr1; expr2] acc))
+ (bound_rethrow (accFreeInExpr opts expr3 emptyFreeVars))
| Expr.Op (op, tinst, args, _) ->
let acc = accFreeInOp opts op acc
@@ -4444,34 +4470,44 @@ and accFreeInOp opts op acc =
| TOp.Goto _ | TOp.Label _ | TOp.Return
| TOp.TupleFieldGet _ -> acc
- | TOp.Tuple tupInfo -> accFreeTyvars opts accFreeInTupInfo tupInfo acc
+ | TOp.Tuple tupInfo ->
+ accFreeTyvars opts accFreeInTupInfo tupInfo acc
+
| TOp.AnonRecd anonInfo
- | TOp.AnonRecdGet (anonInfo, _) -> accFreeTyvars opts accFreeInTupInfo anonInfo.TupInfo acc
+ | TOp.AnonRecdGet (anonInfo, _) ->
+ accFreeTyvars opts accFreeInTupInfo anonInfo.TupInfo acc
- | TOp.UnionCaseTagGet tr -> accUsedRecdOrUnionTyconRepr opts tr.Deref acc
+ | TOp.UnionCaseTagGet tcref ->
+ accUsedRecdOrUnionTyconRepr opts tcref.Deref acc
// Things containing just a union case reference
- | TOp.UnionCaseProof cr
- | TOp.UnionCase cr
- | TOp.UnionCaseFieldGetAddr (cr, _, _)
- | TOp.UnionCaseFieldGet (cr, _)
- | TOp.UnionCaseFieldSet (cr, _) -> accFreeUnionCaseRef opts cr acc
+ | TOp.UnionCaseProof ucref
+ | TOp.UnionCase ucref
+ | TOp.UnionCaseFieldGetAddr (ucref, _, _)
+ | TOp.UnionCaseFieldGet (ucref, _)
+ | TOp.UnionCaseFieldSet (ucref, _) ->
+ accFreeUnionCaseRef opts ucref acc
// Things containing just an exception reference
- | TOp.ExnConstr ecr
- | TOp.ExnFieldGet (ecr, _)
- | TOp.ExnFieldSet (ecr, _) -> accFreeExnRef ecr acc
+ | TOp.ExnConstr ecref
+ | TOp.ExnFieldGet (ecref, _)
+ | TOp.ExnFieldSet (ecref, _) ->
+ accFreeExnRef ecref acc
- | TOp.ValFieldGet fr
- | TOp.ValFieldGetAddr (fr, _)
- | TOp.ValFieldSet fr -> accFreeRecdFieldRef opts fr acc
+ | TOp.ValFieldGet fref
+ | TOp.ValFieldGetAddr (fref, _)
+ | TOp.ValFieldSet fref ->
+ accFreeRecdFieldRef opts fref acc
- | TOp.Recd (kind, tcr) ->
+ | TOp.Recd (kind, tcref) ->
let acc = accUsesFunctionLocalConstructs (kind = RecdExprIsObjInit) acc
- (accUsedRecdOrUnionTyconRepr opts tcr.Deref (accFreeTyvars opts accFreeTycon tcr acc))
+ (accUsedRecdOrUnionTyconRepr opts tcref.Deref (accFreeTyvars opts accFreeTycon tcref acc))
- | TOp.ILAsm (_, tys) -> accFreeVarsInTys opts tys acc
- | TOp.Reraise -> accUsesRethrow true acc
+ | TOp.ILAsm (_, tys) ->
+ accFreeVarsInTys opts tys acc
+
+ | TOp.Reraise ->
+ accUsesRethrow true acc
| TOp.TraitCall(TTrait(tys, _, _, argtys, rty, sln)) ->
Option.foldBack (accFreeVarsInTraitSln opts) sln.Value
@@ -4479,8 +4515,8 @@ and accFreeInOp opts op acc =
(accFreeVarsInTys opts argtys
(Option.foldBack (accFreeVarsInTy opts) rty acc)))
- | TOp.LValueOp (_, lvr) ->
- accFreeValRef opts lvr acc
+ | TOp.LValueOp (_, vref) ->
+ accFreeValRef opts vref acc
| TOp.ILCall (_, isProtectedCall, _, _, valUseFlags, _, _, _, enclTypeArgs, methTypeArgs, tys) ->
accFreeVarsInTys opts enclTypeArgs
@@ -4492,77 +4528,86 @@ and accFreeInOp opts op acc =
and accFreeInTargets opts targets acc =
Array.foldBack (accFreeInTarget opts) targets acc
-and accFreeInTarget opts (TTarget(vs, e, _)) acc =
- List.foldBack (boundLocalVal opts) vs (accFreeInExpr opts e acc)
+and accFreeInTarget opts (TTarget(vs, expr, _)) acc =
+ List.foldBack (boundLocalVal opts) vs (accFreeInExpr opts expr acc)
-and accFreeInFlatExprs opts (es:Exprs) acc = List.foldBack (accFreeInExpr opts) es acc
+and accFreeInFlatExprs opts (exprs:Exprs) acc = List.foldBack (accFreeInExpr opts) exprs acc
-and accFreeInExprs opts (es: Exprs) acc =
- match es with
+and accFreeInExprs opts (exprs: Exprs) acc =
+ match exprs with
| [] -> acc
+ | [h]->
+ // tailcall - e.g. Cons(x, Cons(x2, .......Cons(x1000000, Nil))) and [| x1; .... ; x1000000 |]
+ accFreeInExpr opts h acc
| h::t ->
let acc = accFreeInExpr opts h acc
- // tailcall - e.g. Cons(x, Cons(x2, .......Cons(x1000000, Nil))) and [| x1; .... ; x1000000 |]
accFreeInExprs opts t acc
-and accFreeInSlotSig opts (TSlotSig(_, ty, _, _, _, _)) acc = accFreeVarsInTy opts ty acc
+and accFreeInSlotSig opts (TSlotSig(_, ty, _, _, _, _)) acc =
+ accFreeVarsInTy opts ty acc
-and freeInDecisionTree opts e = accFreeInDecisionTree opts e emptyFreeVars
-and freeInExpr opts e = accFreeInExpr opts e emptyFreeVars
+and freeInDecisionTree opts dtree =
+ accFreeInDecisionTree opts dtree emptyFreeVars
+
+and freeInExpr opts expr =
+ accFreeInExpr opts expr emptyFreeVars
// Note: these are only an approximation - they are currently used only by the optimizer
-let rec accFreeInModuleOrNamespace opts x acc =
- match x with
+let rec accFreeInModuleOrNamespace opts mexpr acc =
+ match mexpr with
| TMDefRec(_, _, mbinds, _) -> List.foldBack (accFreeInModuleOrNamespaceBind opts) mbinds acc
| TMDefLet(bind, _) -> accBindRhs opts bind acc
| TMDefDo(e, _) -> accFreeInExpr opts e acc
| TMDefs defs -> accFreeInModuleOrNamespaces opts defs acc
| TMAbstract(ModuleOrNamespaceExprWithSig(_, mdef, _)) -> accFreeInModuleOrNamespace opts mdef acc // not really right, but sufficient for how this is used in optimization
-and accFreeInModuleOrNamespaceBind opts x acc =
- match x with
+
+and accFreeInModuleOrNamespaceBind opts mbind acc =
+ match mbind with
| ModuleOrNamespaceBinding.Binding bind -> accBindRhs opts bind acc
| ModuleOrNamespaceBinding.Module (_, def) -> accFreeInModuleOrNamespace opts def acc
-and accFreeInModuleOrNamespaces opts x acc =
- List.foldBack (accFreeInModuleOrNamespace opts) x acc
-// NOTE: we don't yet need to ask for free variables in module expressions
+and accFreeInModuleOrNamespaces opts mexprs acc =
+ List.foldBack (accFreeInModuleOrNamespace opts) mexprs acc
+
+let freeInBindingRhs opts bind =
+ accBindRhs opts bind emptyFreeVars
-let freeInBindingRhs opts bind = accBindRhs opts bind emptyFreeVars
-let freeInModuleOrNamespace opts mdef = accFreeInModuleOrNamespace opts mdef emptyFreeVars
+let freeInModuleOrNamespace opts mdef =
+ accFreeInModuleOrNamespace opts mdef emptyFreeVars
//---------------------------------------------------------------------------
// Destruct - rarely needed
//---------------------------------------------------------------------------
-let rec stripLambda (e, ty) =
- match e with
- | Expr.Lambda (_, ctorThisValOpt, baseValOpt, v, b, _, rty) ->
- if Option.isSome ctorThisValOpt then errorR(InternalError("skipping ctorThisValOpt", e.Range));
- if Option.isSome baseValOpt then errorR(InternalError("skipping baseValOpt", e.Range));
- let (vs', b', rty') = stripLambda (b, rty)
- (v :: vs', b', rty')
- | _ -> ([], e, ty)
-
-let rec stripLambdaN n e =
+let rec stripLambda (expr, ty) =
+ match expr with
+ | Expr.Lambda (_, ctorThisValOpt, baseValOpt, v, bodyExpr, _, rty) ->
+ if Option.isSome ctorThisValOpt then errorR(InternalError("skipping ctorThisValOpt", expr.Range));
+ if Option.isSome baseValOpt then errorR(InternalError("skipping baseValOpt", expr.Range));
+ let (vs', bodyExpr', rty') = stripLambda (bodyExpr, rty)
+ (v :: vs', bodyExpr', rty')
+ | _ -> ([], expr, ty)
+
+let rec stripLambdaN n expr =
assert (n >= 0)
- match e with
- | Expr.Lambda (_, ctorThisValOpt, baseValOpt, v, body, _, _) when n > 0 ->
- if Option.isSome ctorThisValOpt then errorR(InternalError("skipping ctorThisValOpt", e.Range));
- if Option.isSome baseValOpt then errorR(InternalError("skipping baseValOpt", e.Range));
- let (vs, body', remaining) = stripLambdaN (n-1) body
- (v :: vs, body', remaining)
- | _ -> ([], e, n)
-
-let tryStripLambdaN n e =
- match e with
+ match expr with
+ | Expr.Lambda (_, ctorThisValOpt, baseValOpt, v, bodyExpr, _, _) when n > 0 ->
+ if Option.isSome ctorThisValOpt then errorR(InternalError("skipping ctorThisValOpt", expr.Range));
+ if Option.isSome baseValOpt then errorR(InternalError("skipping baseValOpt", expr.Range));
+ let (vs, bodyExpr', remaining) = stripLambdaN (n-1) bodyExpr
+ (v :: vs, bodyExpr', remaining)
+ | _ -> ([], expr, n)
+
+let tryStripLambdaN n expr =
+ match expr with
| Expr.Lambda(_, None, None, _, _, _, _) ->
- let argvsl, body, remaining = stripLambdaN n e
- if remaining = 0 then Some (argvsl, body)
+ let argvsl, bodyExpr, remaining = stripLambdaN n expr
+ if remaining = 0 then Some (argvsl, bodyExpr)
else None
| _ -> None
-let stripTopLambda (e, ty) =
- let tps, taue, tauty = match e with Expr.TyLambda (_, tps, b, _, rty) -> tps, b, rty | _ -> [], e, ty
+let stripTopLambda (expr, ty) =
+ let tps, taue, tauty = match expr with Expr.TyLambda (_, tps, b, _, rty) -> tps, b, rty | _ -> [], expr, ty
let vs, body, rty = stripLambda (taue, tauty)
tps, vs, body, rty
@@ -4571,7 +4616,7 @@ type AllowTypeDirectedDetupling = Yes | No
// This is used to infer arities of expressions
// i.e. base the chosen arity on the syntactic expression shape and type of arguments
-let InferArityOfExpr g allowTypeDirectedDetupling ty partialArgAttribsL retAttribs e =
+let InferArityOfExpr g allowTypeDirectedDetupling ty partialArgAttribsL retAttribs expr =
let rec stripLambda_notypes e =
match e with
| Expr.Lambda (_, _, _, vs, b, _, _) ->
@@ -4585,7 +4630,7 @@ let InferArityOfExpr g allowTypeDirectedDetupling ty partialArgAttribsL retAttri
let vs, body = stripLambda_notypes taue
tps, vs, body
- let tps, vsl, _ = stripTopLambdaNoTypes e
+ let tps, vsl, _ = stripTopLambdaNoTypes expr
let fun_arity = vsl.Length
let dtys, _ = stripFunTyN g fun_arity (snd (tryDestForallTy g ty))
let partialArgAttribsL = Array.ofList partialArgAttribsL
@@ -4610,10 +4655,10 @@ let InferArityOfExpr g allowTypeDirectedDetupling ty partialArgAttribsL retAttri
let retInfo : ArgReprInfo = { Attribs = retAttribs; Name = None }
ValReprInfo (ValReprInfo.InferTyparInfo tps, curriedArgInfos, retInfo)
-let InferArityOfExprBinding g allowTypeDirectedDetupling (v:Val) e =
+let InferArityOfExprBinding g allowTypeDirectedDetupling (v:Val) expr =
match v.ValReprInfo with
| Some info -> info
- | None -> InferArityOfExpr g allowTypeDirectedDetupling v.Type [] [] e
+ | None -> InferArityOfExpr g allowTypeDirectedDetupling v.Type [] [] expr
//-------------------------------------------------------------------------
// Check if constraints are satisfied that allow us to use more optimized
@@ -4840,8 +4885,16 @@ and copyAndRemapAndBindVal g compgen tmenv v =
fixupValData g compgen tmenvinner v2
v2, tmenvinner
-and remapExpr (g: TcGlobals) (compgen:ValCopyFlag) (tmenv:Remap) x =
- match x with
+and remapExpr (g: TcGlobals) (compgen:ValCopyFlag) (tmenv:Remap) expr =
+ match expr with
+
+ // Handle the linear cases for arbitrary-sized inputs
+ | LinearOpExpr _
+ | LinearMatchExpr _
+ | Expr.Sequential _
+ | Expr.Let _ ->
+ remapLinearExpr g compgen tmenv expr (fun x -> x)
+
// Binding constructs - see also dtrees below
| Expr.Lambda (_, ctorThisValOpt, baseValOpt, vs, b, m, rty) ->
let ctorThisValOpt, tmenv = Option.mapFold (copyAndRemapAndBindVal g compgen) tmenv ctorThisValOpt
@@ -4850,33 +4903,38 @@ and remapExpr (g: TcGlobals) (compgen:ValCopyFlag) (tmenv:Remap) x =
let b = remapExpr g compgen tmenv b
let rty = remapType tmenv rty
Expr.Lambda (newUnique(), ctorThisValOpt, baseValOpt, vs, b, m, rty)
+
| Expr.TyLambda (_, tps, b, m, rty) ->
let tps', tmenvinner = tmenvCopyRemapAndBindTypars (remapAttribs g tmenv) tmenv tps
mkTypeLambda m tps' (remapExpr g compgen tmenvinner b, remapType tmenvinner rty)
+
| Expr.TyChoose (tps, b, m) ->
let tps', tmenvinner = tmenvCopyRemapAndBindTypars (remapAttribs g tmenv) tmenv tps
Expr.TyChoose(tps', remapExpr g compgen tmenvinner b, m)
+
| Expr.LetRec (binds, e, m, _) ->
let binds', tmenvinner = copyAndRemapAndBindBindings g compgen tmenv binds
Expr.LetRec (binds', remapExpr g compgen tmenvinner e, m, NewFreeVarsCache())
- | Expr.Sequential _
- | Expr.Let _ -> remapLinearExpr g compgen tmenv x (fun x -> x)
+
| Expr.Match (spBind, exprm, pt, targets, m, ty) ->
primMkMatch (spBind, exprm, remapDecisionTree g compgen tmenv pt,
targets |> Array.map (remapTarget g compgen tmenv),
m, remapType tmenv ty)
- // Other constructs
+
| Expr.Val (vr, vf, m) ->
let vr' = remapValRef tmenv vr
let vf' = remapValFlags tmenv vf
- if vr === vr' && vf === vf' then x
+ if vr === vr' && vf === vf' then expr
else Expr.Val (vr', vf', m)
+
| Expr.Quote (a, {contents=Some(typeDefs, argTypes, argExprs, data)}, isFromQueryExpression, m, ty) ->
// fix value of compgen for both original expression and pickled AST
let compgen = fixValCopyFlagForQuotations compgen
Expr.Quote (remapExpr g compgen tmenv a, {contents=Some(typeDefs, remapTypesAux tmenv argTypes, remapExprs g compgen tmenv argExprs, data)}, isFromQueryExpression, m, remapType tmenv ty)
+
| Expr.Quote (a, {contents=None}, isFromQueryExpression, m, ty) ->
Expr.Quote (remapExpr g (fixValCopyFlagForQuotations compgen) tmenv a, {contents=None}, isFromQueryExpression, m, remapType tmenv ty)
+
| Expr.Obj (_, ty, basev, basecall, overrides, iimpls, m) ->
let basev', tmenvinner = Option.mapFold (copyAndRemapAndBindVal g compgen) tmenv basev
mkObjExpr(remapType tmenv ty, basev',
@@ -4911,7 +4969,7 @@ and remapExpr (g: TcGlobals) (compgen:ValCopyFlag) (tmenv:Remap) x =
let op' = remapOp tmenv op
let tinst' = remapTypes tmenv tinst
let args' = remapExprs g compgen tmenv args
- if op === op' && tinst === tinst' && args === args' then x
+ if op === op' && tinst === tinst' && args === args' then expr
else Expr.Op (op', tinst', args', m)
| Expr.App(e1, e1ty, tyargs, args, m) ->
@@ -4919,45 +4977,59 @@ and remapExpr (g: TcGlobals) (compgen:ValCopyFlag) (tmenv:Remap) x =
let e1ty' = remapPossibleForallTy g tmenv e1ty
let tyargs' = remapTypes tmenv tyargs
let args' = remapExprs g compgen tmenv args
- if e1 === e1' && e1ty === e1ty' && tyargs === tyargs' && args === args' then x
+ if e1 === e1' && e1ty === e1ty' && tyargs === tyargs' && args === args' then expr
else Expr.App(e1', e1ty', tyargs', args', m)
+
| Expr.Link(eref) ->
remapExpr g compgen tmenv !eref
+
| Expr.StaticOptimization (cs, e2, e3, m) ->
// note that type instantiation typically resolve the static constraints here
mkStaticOptimizationExpr g (List.map (remapConstraint tmenv) cs, remapExpr g compgen tmenv e2, remapExpr g compgen tmenv e3, m)
| Expr.Const (c, m, ty) ->
let ty' = remapType tmenv ty
- if ty === ty' then x else Expr.Const (c, m, ty')
+ if ty === ty' then expr else Expr.Const (c, m, ty')
and remapTarget g compgen tmenv (TTarget(vs, e, spTarget)) =
let vs', tmenvinner = copyAndRemapAndBindVals g compgen tmenv vs
TTarget(vs', remapExpr g compgen tmenvinner e, spTarget)
-and remapLinearExpr g compgen tmenv e contf =
- match e with
- | Expr.Let (bind, e, m, _) ->
- let bind', tmenvinner = copyAndRemapAndBindBinding g compgen tmenv bind
- // tailcall
- remapLinearExpr g compgen tmenvinner e (contf << mkLetBind m bind')
+and remapLinearExpr g compgen tmenv expr contf =
- | Expr.Sequential (e1, e2, dir, spSeq, m) ->
- let e1' = remapExpr g compgen tmenv e1
- // tailcall
- remapLinearExpr g compgen tmenv e2 (contf << (fun e2' ->
- if e1 === e1' && e2 === e2' then e
- else Expr.Sequential (e1', e2', dir, spSeq, m)))
+ match expr with
- | LinearMatchExpr (spBind, exprm, dtree, tg1, e2, sp2, m2, ty) ->
- let dtree = remapDecisionTree g compgen tmenv dtree
- let tg1 = remapTarget g compgen tmenv tg1
- let ty = remapType tmenv ty
- // tailcall
- remapLinearExpr g compgen tmenv e2 (contf << (fun e2 ->
- rebuildLinearMatchExpr (spBind, exprm, dtree, tg1, e2, sp2, m2, ty)))
+ | Expr.Let (bind, bodyExpr, m, _) ->
+ let bind', tmenvinner = copyAndRemapAndBindBinding g compgen tmenv bind
+ // tailcall for the linear position
+ remapLinearExpr g compgen tmenvinner bodyExpr (contf << mkLetBind m bind')
+
+ | Expr.Sequential (expr1, expr2, dir, spSeq, m) ->
+ let expr1' = remapExpr g compgen tmenv expr1
+ // tailcall for the linear position
+ remapLinearExpr g compgen tmenv expr2 (contf << (fun expr2' ->
+ if expr1 === expr1' && expr2 === expr2' then expr
+ else Expr.Sequential (expr1', expr2', dir, spSeq, m)))
+
+ | LinearMatchExpr (spBind, exprm, dtree, tg1, expr2, sp2, m2, ty) ->
+ let dtree' = remapDecisionTree g compgen tmenv dtree
+ let tg1' = remapTarget g compgen tmenv tg1
+ let ty' = remapType tmenv ty
+ // tailcall for the linear position
+ remapLinearExpr g compgen tmenv expr2 (contf << (fun expr2' ->
+ rebuildLinearMatchExpr (spBind, exprm, dtree', tg1', expr2', sp2, m2, ty')))
+
+ | LinearOpExpr (op, tyargs, argsFront, argLast, m) ->
+ let op' = remapOp tmenv op
+ let tinst' = remapTypes tmenv tyargs
+ let argsFront' = remapExprs g compgen tmenv argsFront
+ // tailcall for the linear position
+ remapLinearExpr g compgen tmenv argLast (contf << (fun argLast' ->
+ if op === op' && tyargs === tinst' && argsFront === argsFront' && argLast === argLast' then expr
+ else rebuildLinearOpExpr (op', tinst', argsFront', argLast', m)))
- | _ -> contf (remapExpr g compgen tmenv e)
+ | _ ->
+ contf (remapExpr g compgen tmenv expr)
and remapConstraint tyenv c =
match c with
@@ -4966,8 +5038,8 @@ and remapConstraint tyenv c =
and remapOp tmenv op =
match op with
- | TOp.Recd (ctor, tcr) -> TOp.Recd(ctor, remapTyconRef tmenv.tyconRefRemap tcr)
- | TOp.UnionCaseTagGet tcr -> TOp.UnionCaseTagGet(remapTyconRef tmenv.tyconRefRemap tcr)
+ | TOp.Recd (ctor, tcref) -> TOp.Recd(ctor, remapTyconRef tmenv.tyconRefRemap tcref)
+ | TOp.UnionCaseTagGet tcref -> TOp.UnionCaseTagGet(remapTyconRef tmenv.tyconRefRemap tcref)
| TOp.UnionCase(ucref) -> TOp.UnionCase(remapUnionCaseRef tmenv.tyconRefRemap ucref)
| TOp.UnionCaseProof(ucref) -> TOp.UnionCaseProof(remapUnionCaseRef tmenv.tyconRefRemap ucref)
| TOp.ExnConstr ec -> TOp.ExnConstr(remapTyconRef tmenv.tyconRefRemap ec)
@@ -6044,20 +6116,20 @@ let JoinTyparStaticReq r1 r2 =
// ExprFolder - fold steps
//-------------------------------------------------------------------------
-type ExprFolder<'T> =
- { exprIntercept : ('T -> Expr -> 'T) -> 'T -> Expr -> 'T option;
+type ExprFolder<'State> =
+ { exprIntercept : (* recurseF *) ('State -> Expr -> 'State) -> (* noInterceptF *) ('State -> Expr -> 'State) -> 'State -> Expr -> 'State
// the bool is 'bound in dtree'
- valBindingSiteIntercept : 'T -> bool * Val -> 'T;
+ valBindingSiteIntercept : 'State -> bool * Val -> 'State
// these values are always bound to these expressions. bool indicates 'recursively'
- nonRecBindingsIntercept : 'T -> Binding -> 'T;
- recBindingsIntercept : 'T -> Bindings -> 'T;
- dtreeIntercept : 'T -> DecisionTree -> 'T;
- targetIntercept : ('T -> Expr -> 'T) -> 'T -> DecisionTreeTarget -> 'T option;
- tmethodIntercept : ('T -> Expr -> 'T) -> 'T -> ObjExprMethod -> 'T option;
+ nonRecBindingsIntercept : 'State -> Binding -> 'State
+ recBindingsIntercept : 'State -> Bindings -> 'State
+ dtreeIntercept : 'State -> DecisionTree -> 'State
+ targetIntercept : (* recurseF *) ('State -> Expr -> 'State) -> 'State -> DecisionTreeTarget -> 'State option
+ tmethodIntercept : (* recurseF *) ('State -> Expr -> 'State) -> 'State -> ObjExprMethod -> 'State option
}
let ExprFolder0 =
- { exprIntercept = (fun _exprF _z _x -> None);
+ { exprIntercept = (fun _recurseF noInterceptF z x -> noInterceptF z x);
valBindingSiteIntercept = (fun z _b -> z);
nonRecBindingsIntercept = (fun z _bs -> z);
recBindingsIntercept = (fun z _bs -> z);
@@ -6073,54 +6145,78 @@ let ExprFolder0 =
/// Adapted from usage info folding.
/// Collecting from exprs at moment.
/// To collect ids etc some additional folding needed, over formals etc.
-type ExprFolders<'State> (folders : _ ExprFolder) =
- let mutable exprFClosure = Unchecked.defaultof<_> // prevent reallocation of closure
- let rec exprsF z xs = List.fold exprFClosure z xs
- and exprF (z: 'State) x =
- match folders.exprIntercept exprFClosure z x with // fold this node, then recurse
- | Some z -> z // intercepted
- | None -> // structurally recurse
- match x with
- | Expr.Const _ -> z
- | Expr.Val _ -> z
- | Expr.Op (_c, _tyargs, args, _) -> exprsF z args
- | Expr.Sequential (x0, x1, _dir, _, _) -> exprsF z [x0;x1]
- | Expr.Lambda(_lambdaId , _ctorThisValOpt, _baseValOpt, _argvs, body, _m, _rty) -> exprF z body
- | Expr.TyLambda(_lambdaId, _argtyvs, body, _m, _rty) -> exprF z body
- | Expr.TyChoose(_, body, _) -> exprF z body
-
- | Expr.App (f, _fty, _tys, argtys, _) ->
- let z = exprF z f
- let z = exprsF z argtys
- z
- | Expr.LetRec (binds, body, _, _) ->
- let z = valBindsF false z binds
- let z = exprF z body
- z
- | Expr.Let (bind, body, _, _) ->
- let z = valBindF false z bind
- let z = exprF z body
- z
- | Expr.Link rX -> exprF z (!rX)
-
- | Expr.Match (_spBind, _exprm, dtree, targets, _m, _ty) ->
- let z = dtreeF z dtree
- let z = Array.fold targetF z targets
- z
- | Expr.Quote(e, {contents=Some(_typeDefs, _argTypes, argExprs, _)}, _, _, _) ->
- let z = exprF z e
- exprsF z argExprs
-
- | Expr.Quote(e, {contents=None}, _, _m, _) ->
- exprF z e
-
- | Expr.Obj (_n, _typ, _basev, basecall, overrides, iimpls, _m) ->
- let z = exprF z basecall
- let z = List.fold tmethodF z overrides
- let z = List.fold (foldOn snd (List.fold tmethodF)) z iimpls
- z
-
- | Expr.StaticOptimization (_tcs, csx, x, _) -> exprsF z [csx;x]
+type ExprFolders<'State> (folders : ExprFolder<'State>) =
+ let mutable exprFClosure = Unchecked.defaultof<'State -> Expr -> 'State> // prevent reallocation of closure
+ let mutable exprNoInterceptFClosure = Unchecked.defaultof<'State -> Expr -> 'State> // prevent reallocation of closure
+
+ let rec exprsF z xs =
+ List.fold exprFClosure z xs
+
+ and exprF (z: 'State) (x: Expr) =
+ folders.exprIntercept exprFClosure exprNoInterceptFClosure z x
+
+ and exprNoInterceptF (z: 'State) (x: Expr) =
+ match x with
+
+ | Expr.Const _ -> z
+
+ | Expr.Val _ -> z
+
+ | LinearOpExpr (_op, _tyargs, argsHead, argLast, _m) ->
+ let z = exprsF z argsHead
+ // tailcall
+ exprF z argLast
+
+ | Expr.Op (_c, _tyargs, args, _) ->
+ exprsF z args
+
+ | Expr.Sequential (x0, x1, _dir, _, _) ->
+ let z = exprF z x0
+ exprF z x1
+
+ | Expr.Lambda(_lambdaId , _ctorThisValOpt, _baseValOpt, _argvs, body, _m, _rty) ->
+ exprF z body
+
+ | Expr.TyLambda(_lambdaId, _argtyvs, body, _m, _rty) ->
+ exprF z body
+
+ | Expr.TyChoose(_, body, _) ->
+ exprF z body
+
+ | Expr.App (f, _fty, _tys, argtys, _) ->
+ let z = exprF z f
+ exprsF z argtys
+
+ | Expr.LetRec (binds, body, _, _) ->
+ let z = valBindsF false z binds
+ exprF z body
+
+ | Expr.Let (bind, body, _, _) ->
+ let z = valBindF false z bind
+ exprF z body
+
+ | Expr.Link rX -> exprF z (!rX)
+
+ | Expr.Match (_spBind, _exprm, dtree, targets, _m, _ty) ->
+ let z = dtreeF z dtree
+ let z = Array.fold targetF z targets.[0..targets.Length - 2]
+ // tailcall
+ targetF z targets.[targets.Length - 1]
+
+ | Expr.Quote(e, {contents=Some(_typeDefs, _argTypes, argExprs, _)}, _, _, _) ->
+ let z = exprF z e
+ exprsF z argExprs
+
+ | Expr.Quote(e, {contents=None}, _, _m, _) ->
+ exprF z e
+
+ | Expr.Obj (_n, _typ, _basev, basecall, overrides, iimpls, _m) ->
+ let z = exprF z basecall
+ let z = List.fold tmethodF z overrides
+ List.fold (foldOn snd (List.fold tmethodF)) z iimpls
+
+ | Expr.StaticOptimization (_tcs, csx, x, _) ->
+ exprsF z [csx;x]
and valBindF dtree z bind =
let z = folders.nonRecBindingsIntercept z bind
@@ -6187,6 +6283,7 @@ type ExprFolders<'State> (folders : _ ExprFolder) =
and implF z x = foldTImplFile mexprF z x
do exprFClosure <- exprF // allocate one instance of this closure
+ do exprNoInterceptFClosure <- exprNoInterceptF // allocate one instance of this closure
member x.FoldExpr = exprF
member x.FoldImplFile = implF
@@ -6200,7 +6297,7 @@ let FoldImplFile folders state implFile = ExprFolders(folders).FoldImplFile stat
let ExprStats x =
let count = ref 0
- let folders = {ExprFolder0 with exprIntercept = (fun _ _ _ -> (count := !count + 1; None))}
+ let folders = {ExprFolder0 with exprIntercept = (fun _ noInterceptF z x -> (count := !count + 1; noInterceptF z x))}
let () = FoldExpr folders () x
string !count + " TExpr nodes"
#endif
@@ -7728,10 +7825,10 @@ let isSealedTy g ty =
true
let isComInteropTy g ty =
- let tcr = tcrefOfAppTy g ty
+ let tcref = tcrefOfAppTy g ty
match g.attrib_ComImportAttribute with
| None -> false
- | Some attr -> TryFindFSharpBoolAttribute g attr tcr.Attribs = Some(true)
+ | Some attr -> TryFindFSharpBoolAttribute g attr tcref.Attribs = Some(true)
let ValSpecIsCompiledAsInstance g (v:Val) =
match v.MemberInfo with
@@ -7865,6 +7962,8 @@ and rewriteBinds env binds = List.map (rewriteBind env) binds
and RewriteExpr env expr =
match expr with
+ | LinearOpExpr _
+ | LinearMatchExpr _
| Expr.Let _
| Expr.Sequential _ ->
rewriteLinearExpr env expr (fun e -> e)
@@ -7947,29 +8046,41 @@ and rewriteLinearExpr env expr contf =
// schedule a rewrite on the way back up by adding to the continuation
let contf = contf << postRewriteExpr env
match preRewriteExpr env expr with
- | Some expr -> contf expr (* done - intercepted! *)
+ | Some expr -> contf expr
| None ->
match expr with
- | Expr.Let (bind, body, m, _) ->
+ | Expr.Let (bind, bodyExpr, m, _) ->
let bind = rewriteBind env bind
- rewriteLinearExpr env body (contf << (fun body' ->
- mkLetBind m bind body'))
- | Expr.Sequential (e1, e2, dir, spSeq, m) ->
- let e1' = RewriteExpr env e1
- rewriteLinearExpr env e2 (contf << (fun e2' ->
- if e1 === e1' && e2 === e2' then expr
- else Expr.Sequential(e1', e2', dir, spSeq, m)))
- | LinearMatchExpr (spBind, exprm, dtree, tg1, e2, sp2, m2, ty) ->
+ // tailcall
+ rewriteLinearExpr env bodyExpr (contf << (fun bodyExpr' ->
+ mkLetBind m bind bodyExpr'))
+
+ | Expr.Sequential (expr1, expr2, dir, spSeq, m) ->
+ let expr1' = RewriteExpr env expr1
+ // tailcall
+ rewriteLinearExpr env expr2 (contf << (fun expr2' ->
+ if expr1 === expr1' && expr2 === expr2' then expr
+ else Expr.Sequential(expr1', expr2', dir, spSeq, m)))
+
+ | LinearOpExpr (op, tyargs, argsFront, argLast, m) ->
+ let argsFront' = rewriteExprs env argsFront
+ // tailcall
+ rewriteLinearExpr env argLast (contf << (fun argLast' ->
+ if argsFront === argsFront' && argLast === argLast' then expr
+ else rebuildLinearOpExpr (op, tyargs, argsFront', argLast', m)))
+
+ | LinearMatchExpr (spBind, exprm, dtree, tg1, expr2, sp2, m2, ty) ->
let dtree = rewriteDecisionTree env dtree
- let tg1 = rewriteTarget env tg1
+ let tg1' = rewriteTarget env tg1
// tailcall
- rewriteLinearExpr env e2 (contf << (fun e2 ->
- rebuildLinearMatchExpr (spBind, exprm, dtree, tg1, e2, sp2, m2, ty)))
+ rewriteLinearExpr env expr2 (contf << (fun expr2' ->
+ rebuildLinearMatchExpr (spBind, exprm, dtree, tg1', expr2', sp2, m2, ty)))
| _ ->
- (* no longer linear *)
+ // no longer linear, no tailcall
contf (RewriteExpr env expr)
and rewriteExprs env exprs = List.mapq (RewriteExpr env) exprs
+
and rewriteFlatExprs env exprs = List.mapq (RewriteExpr env) exprs
and rewriteDecisionTree env x =
diff --git a/src/fsharp/TastOps.fsi b/src/fsharp/TastOps.fsi
index c719406d5ae..6098625122f 100755
--- a/src/fsharp/TastOps.fsi
+++ b/src/fsharp/TastOps.fsi
@@ -1357,7 +1357,7 @@ module DebugPrint =
/// A set of function parameters (visitor) for folding over expressions
type ExprFolder<'State> =
- { exprIntercept : ('State -> Expr -> 'State) -> 'State -> Expr -> 'State option
+ { exprIntercept : (* recurseF *) ('State -> Expr -> 'State) -> (* noInterceptF *) ('State -> Expr -> 'State) -> 'State -> Expr -> 'State
valBindingSiteIntercept : 'State -> bool * Val -> 'State
nonRecBindingsIntercept : 'State -> Binding -> 'State
recBindingsIntercept : 'State -> Bindings -> 'State
@@ -2261,6 +2261,10 @@ val (|LinearMatchExpr|_|) : Expr -> (SequencePointInfoForBinding * range * Decis
val rebuildLinearMatchExpr : (SequencePointInfoForBinding * range * DecisionTree * DecisionTreeTarget * Expr * SequencePointInfoForTarget * range * TType) -> Expr
+val (|LinearOpExpr|_|) : Expr -> (TOp * TypeInst * Expr list * Expr * range) option
+
+val rebuildLinearOpExpr : (TOp * TypeInst * Expr list * Expr * range) -> Expr
+
val mkCoerceIfNeeded : TcGlobals -> tgtTy: TType -> srcTy: TType -> Expr -> Expr
val (|InnerExprPat|) : Expr -> Expr
diff --git a/src/fsharp/TypeChecker.fs b/src/fsharp/TypeChecker.fs
index fc39c0e6c7d..c5a6f4f9870 100755
--- a/src/fsharp/TypeChecker.fs
+++ b/src/fsharp/TypeChecker.fs
@@ -6048,32 +6048,8 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) =
UnifyTypes cenv env m overallTy cenv.g.unit_ty
TcStmtThatCantBeCtorBody cenv env tpenv synInnerExpr
- | SynExpr.IfThenElse (synBoolExpr, synThenExpr, synElseExprOpt, spIfToThen, isRecovery, mIfToThen, m) ->
- let boolExpr, tpenv = TcExprThatCantBeCtorBody cenv cenv.g.bool_ty env tpenv synBoolExpr
- let thenExpr, tpenv =
- let env =
- match env.eContextInfo with
- | ContextInfo.ElseBranchResult _ -> { env with eContextInfo = ContextInfo.ElseBranchResult synThenExpr.Range }
- | _ ->
- match synElseExprOpt with
- | None -> { env with eContextInfo = ContextInfo.OmittedElseBranch synThenExpr.Range }
- | _ -> { env with eContextInfo = ContextInfo.IfExpression synThenExpr.Range }
-
- if not isRecovery && Option.isNone synElseExprOpt then
- UnifyTypes cenv env m cenv.g.unit_ty overallTy
-
- TcExprThatCanBeCtorBody cenv overallTy env tpenv synThenExpr
-
- let elseExpr, spElse, tpenv =
- match synElseExprOpt with
- | None ->
- mkUnit cenv.g mIfToThen, SuppressSequencePointAtTarget, tpenv // the fake 'unit' value gets exactly the same range as spIfToThen
- | Some synElseExpr ->
- let env = { env with eContextInfo = ContextInfo.ElseBranchResult synElseExpr.Range }
- let elseExpr, tpenv = TcExprThatCanBeCtorBody cenv overallTy env tpenv synElseExpr
- elseExpr, SequencePointAtTarget, tpenv
-
- primMkCond spIfToThen SequencePointAtTarget spElse m overallTy boolExpr thenExpr elseExpr, tpenv
+ | SynExpr.IfThenElse _ ->
+ TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr (fun x -> x)
// This is for internal use in the libraries only
| SynExpr.LibraryOnlyStaticOptimization (constraints, e2, e3, m) ->
@@ -10440,6 +10416,7 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr expr cont =
let e1', _ = TcStmtThatCantBeCtorBody cenv env tpenv e1
// tailcall
let env = ShrinkContext env m e2.Range
+ // tailcall
TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr e2 (fun (e2', tpenv) ->
cont (Expr.Sequential(e1', e2', NormalSeq, sp, m), tpenv))
@@ -10457,8 +10434,40 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr expr cont =
// TcLinearExprs processes multiple 'let' bindings in a tail recursive way
let mkf, envinner, tpenv = TcLetBinding cenv isUse env ExprContainerInfo ExpressionBinding tpenv (binds, m, body.Range)
let envinner = ShrinkContext envinner m body.Range
+ // tailcall
TcLinearExprs bodyChecker cenv envinner overallTy tpenv isCompExpr body (fun (x, tpenv) ->
cont (fst (mkf (x, overallTy)), tpenv))
+
+ | SynExpr.IfThenElse (synBoolExpr, synThenExpr, synElseExprOpt, spIfToThen, isRecovery, mIfToThen, m) when not isCompExpr ->
+ let boolExpr, tpenv = TcExprThatCantBeCtorBody cenv cenv.g.bool_ty env tpenv synBoolExpr
+ let thenExpr, tpenv =
+ let env =
+ match env.eContextInfo with
+ | ContextInfo.ElseBranchResult _ -> { env with eContextInfo = ContextInfo.ElseBranchResult synThenExpr.Range }
+ | _ ->
+ match synElseExprOpt with
+ | None -> { env with eContextInfo = ContextInfo.OmittedElseBranch synThenExpr.Range }
+ | _ -> { env with eContextInfo = ContextInfo.IfExpression synThenExpr.Range }
+
+ if not isRecovery && Option.isNone synElseExprOpt then
+ UnifyTypes cenv env m cenv.g.unit_ty overallTy
+
+ TcExprThatCanBeCtorBody cenv overallTy env tpenv synThenExpr
+
+ match synElseExprOpt with
+ | None ->
+ let elseExpr = mkUnit cenv.g mIfToThen
+ let spElse = SuppressSequencePointAtTarget // the fake 'unit' value gets exactly the same range as spIfToThen
+ let overallExpr = primMkCond spIfToThen SequencePointAtTarget spElse m overallTy boolExpr thenExpr elseExpr
+ cont (overallExpr, tpenv)
+
+ | Some synElseExpr ->
+ let env = { env with eContextInfo = ContextInfo.ElseBranchResult synElseExpr.Range }
+ // tailcall
+ TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr synElseExpr (fun (elseExpr, tpenv) ->
+ let resExpr = primMkCond spIfToThen SequencePointAtTarget SequencePointAtTarget m overallTy boolExpr thenExpr elseExpr
+ cont (resExpr, tpenv))
+
| _ ->
cont (bodyChecker overallTy env tpenv expr)
diff --git a/src/fsharp/autobox.fs b/src/fsharp/autobox.fs
index 22e9409a69d..dd76156619a 100644
--- a/src/fsharp/autobox.fs
+++ b/src/fsharp/autobox.fs
@@ -44,41 +44,39 @@ let DecideLambda exprF cenv topValInfo expr ety z =
| _ -> z
///Special cases where representation uses Lambda.
-let DecideExprOp exprF z (op, tyargs, args) =
- (* Special cases *)
+/// Handle these as special cases since mutables are allowed inside their bodies
+let DecideExprOp exprF noInterceptF (z: Zset) (expr: Expr) (op, tyargs, args) =
+
match op, tyargs, args with
- // Handle these as special cases since mutables are allowed inside their bodies
| TOp.While _, _, [Expr.Lambda(_, _, _, [_], e1, _, _);Expr.Lambda(_, _, _, [_], e2, _, _)] ->
- Some (exprF (exprF z e1) e2)
+ exprF (exprF z e1) e2
| TOp.TryFinally _, [_], [Expr.Lambda(_, _, _, [_], e1, _, _); Expr.Lambda(_, _, _, [_], e2, _, _)] ->
- Some (exprF (exprF z e1) e2)
+ exprF (exprF z e1) e2
| TOp.For(_), _, [Expr.Lambda(_, _, _, [_], e1, _, _);Expr.Lambda(_, _, _, [_], e2, _, _);Expr.Lambda(_, _, _, [_], e3, _, _)] ->
- Some (exprF (exprF (exprF z e1) e2) e3)
+ exprF (exprF (exprF z e1) e2) e3
| TOp.TryCatch _, [_], [Expr.Lambda(_, _, _, [_], e1, _, _); Expr.Lambda(_, _, _, [_], _e2, _, _); Expr.Lambda(_, _, _, [_], e3, _, _)] ->
- Some (exprF (exprF (exprF z e1) _e2) e3)
+ exprF (exprF (exprF z e1) _e2) e3
// In Check code it said
// e2; -- don't check filter body - duplicates logic in 'catch' body
// Is that true for this code too?
- | _ -> None
-
+ | _ ->
+ noInterceptF z expr
/// Find all the mutable locals that escape a lambda expression or object expression
-let DecideExpr cenv exprF z expr =
+let DecideExpr cenv exprF noInterceptF z expr =
match expr with
| Expr.Lambda(_, _ctorThisValOpt, _baseValOpt, argvs, _, m, rty) ->
let topValInfo = ValReprInfo ([], [argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)], ValReprInfo.unnamedRetVal)
let ty = mkMultiLambdaTy m argvs rty
- let z = DecideLambda (Some exprF) cenv topValInfo expr ty z
- Some z
+ DecideLambda (Some exprF) cenv topValInfo expr ty z
| Expr.TyLambda(_, tps, _, _m, rty) ->
let topValInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal)
let ty = mkForallTyIfNeeded tps rty
- let z = DecideLambda (Some exprF) cenv topValInfo expr ty z
- Some z
+ DecideLambda (Some exprF) cenv topValInfo expr ty z
| Expr.Obj (_, _, baseValOpt, superInitCall, overrides, iimpls, _m) ->
let CheckMethod z (TObjExprMethod(_, _attribs, _tps, vs, body, _m)) =
@@ -94,12 +92,13 @@ let DecideExpr cenv exprF z expr =
let z = exprF z superInitCall
let z = CheckMethods z overrides
let z = (z, iimpls) ||> List.fold CheckInterfaceImpl
- Some z
+ z
| Expr.Op (c, tyargs, args, _m) ->
- DecideExprOp exprF z (c, tyargs, args)
+ DecideExprOp exprF noInterceptF z expr (c, tyargs, args)
- | _ -> None
+ | _ ->
+ noInterceptF z expr
/// Find all the mutable locals that escape a binding
let DecideBinding cenv z (TBind(v, expr, _m) as bind) =
diff --git a/src/fsharp/fsc/fsc.fsproj b/src/fsharp/fsc/fsc.fsproj
index 40f56a0627e..a2e5127b61a 100644
--- a/src/fsharp/fsc/fsc.fsproj
+++ b/src/fsharp/fsc/fsc.fsproj
@@ -15,6 +15,10 @@
true
+
+ x86
+
+
fscmain.fs
diff --git a/src/fsharp/fsi/fsi.fsproj b/src/fsharp/fsi/fsi.fsproj
index 5dbcac7557e..b8b6a9a020f 100644
--- a/src/fsharp/fsi/fsi.fsproj
+++ b/src/fsharp/fsi/fsi.fsproj
@@ -17,6 +17,7 @@
+ x86$(DefineConstants);FSI_SHADOW_COPY_REFERENCES;FSI_SERVER
diff --git a/tests/fsharp/core/large/conditionals/LargeConditionals-200.fs b/tests/fsharp/core/large/conditionals/LargeConditionals-200.fs
new file mode 100644
index 00000000000..d1910edcce4
--- /dev/null
+++ b/tests/fsharp/core/large/conditionals/LargeConditionals-200.fs
@@ -0,0 +1,210 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let x = 1
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ 4
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/conditionals/LargeConditionals-maxtested.fs b/tests/fsharp/core/large/conditionals/LargeConditionals-maxtested.fs
new file mode 100644
index 00000000000..40840fbdb13
--- /dev/null
+++ b/tests/fsharp/core/large/conditionals/LargeConditionals-maxtested.fs
@@ -0,0 +1,424 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let x = 1
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ if rnd.Next(3) = 1 then 1 else
+ 4
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/lets/LargeLets-500.fs b/tests/fsharp/core/large/lets/LargeLets-500.fs
new file mode 100644
index 00000000000..5a1aa0697bb
--- /dev/null
+++ b/tests/fsharp/core/large/lets/LargeLets-500.fs
@@ -0,0 +1,509 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let x = 1
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ x
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
diff --git a/tests/fsharp/core/large/lets/LargeLets-maxtested.fs b/tests/fsharp/core/large/lets/LargeLets-maxtested.fs
new file mode 100644
index 00000000000..9f220268b6e
--- /dev/null
+++ b/tests/fsharp/core/large/lets/LargeLets-maxtested.fs
@@ -0,0 +1,795 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let x = 1
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ let x = x + rnd.Next(3)
+ x
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
diff --git a/tests/fsharp/core/large/lists/LargeList-500.fs b/tests/fsharp/core/large/lists/LargeList-500.fs
new file mode 100644
index 00000000000..b46244887a7
--- /dev/null
+++ b/tests/fsharp/core/large/lists/LargeList-500.fs
@@ -0,0 +1,507 @@
+module TestData
+
+let expectedValues =
+ [
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ ]
+printfn "length = %d" expectedValues.Length
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/matches/LargeMatches-200.fs b/tests/fsharp/core/large/matches/LargeMatches-200.fs
new file mode 100644
index 00000000000..4dac865609a
--- /dev/null
+++ b/tests/fsharp/core/large/matches/LargeMatches-200.fs
@@ -0,0 +1,309 @@
+module TestData
+
+let rnd = new System.Random()
+let r() = if rnd.Next(3) > 1 then Some 4 else None
+let expectedValues() =
+ let x = 1
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ 4
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/matches/LargeMatches-maxtested.fs b/tests/fsharp/core/large/matches/LargeMatches-maxtested.fs
new file mode 100644
index 00000000000..a220824334d
--- /dev/null
+++ b/tests/fsharp/core/large/matches/LargeMatches-maxtested.fs
@@ -0,0 +1,465 @@
+module TestData
+
+let rnd = new System.Random()
+let r() = if rnd.Next(3) > 1 then Some 4 else None
+let expectedValues() =
+ let x = 1
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ match r() with
+ | Some x -> x
+ | None ->
+ 4
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/mixed/LargeSequentialLet-500.fs b/tests/fsharp/core/large/mixed/LargeSequentialLet-500.fs
new file mode 100644
index 00000000000..404817e2a4f
--- /dev/null
+++ b/tests/fsharp/core/large/mixed/LargeSequentialLet-500.fs
@@ -0,0 +1,1011 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let mutable x = 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/mixed/LargeSequentialLet-maxtested.fs b/tests/fsharp/core/large/mixed/LargeSequentialLet-maxtested.fs
new file mode 100644
index 00000000000..404817e2a4f
--- /dev/null
+++ b/tests/fsharp/core/large/mixed/LargeSequentialLet-maxtested.fs
@@ -0,0 +1,1011 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let mutable x = 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x <- x + rnd.Next(3)
+ let mutable x = x + 1
+ x
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/sequential/LargeSequential-500.fs b/tests/fsharp/core/large/sequential/LargeSequential-500.fs
new file mode 100644
index 00000000000..adfd85723c8
--- /dev/null
+++ b/tests/fsharp/core/large/sequential/LargeSequential-500.fs
@@ -0,0 +1,509 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let mutable x = 1
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/core/large/sequential/LargeSequential-maxtested.fs b/tests/fsharp/core/large/sequential/LargeSequential-maxtested.fs
new file mode 100644
index 00000000000..e28abe4c379
--- /dev/null
+++ b/tests/fsharp/core/large/sequential/LargeSequential-maxtested.fs
@@ -0,0 +1,6715 @@
+module TestData
+
+let rnd = new System.Random()
+
+let expectedValues() =
+ let mutable x = 1
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x <- x + rnd.Next(3)
+ x
+printfn "expectedValues() = %A" (expectedValues())
+System.IO.File.WriteAllLines("test.ok", ["ok"])
\ No newline at end of file
diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs
index 7f5804ea1f2..dbd5dbc0170 100644
--- a/tests/fsharp/tests.fs
+++ b/tests/fsharp/tests.fs
@@ -273,6 +273,94 @@ module CoreTests =
testOkFile.CheckExists()
+ []
+ let ``lots-of-conditionals``() =
+ let cfg = testConfig "core/large/conditionals"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeConditionals-200.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-conditionals-maxtested``() =
+ let cfg = testConfig "core/large/conditionals"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeConditionals-maxtested.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-lets``() =
+ let cfg = testConfig "core/large/lets"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeLets-500.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-lets-maxtested``() =
+ let cfg = testConfig "core/large/lets"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeLets-maxtested.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-lists``() =
+ let cfg = testConfig "core/large/lists"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test-500.exe " cfg.fsc_flags ["LargeList-500.fs"]
+ exec cfg ("." ++ "test-500.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-matches``() =
+ let cfg = testConfig "core/large/matches"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeMatches-200.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-matches-maxtested``() =
+ let cfg = testConfig "core/large/matches"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeMatches-maxtested.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-sequential-and-let``() =
+ let cfg = testConfig "core/large/mixed"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeSequentialLet-500.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-sequential-and-let-maxtested``() =
+ let cfg = testConfig "core/large/mixed"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeSequentialLet-maxtested.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-sequential``() =
+ let cfg = testConfig "core/large/sequential"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeSequential-500.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
+ []
+ let ``lots-of-sequential-maxtested``() =
+ let cfg = testConfig "core/large/sequential"
+ use testOkFile = fileguard cfg "test.ok"
+ fsc cfg "%s -o:test.exe " cfg.fsc_flags ["LargeSequential-maxtested.fs"]
+ exec cfg ("." ++ "test.exe") ""
+ testOkFile.CheckExists()
+
#endif
[]
diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/determinism/binaryCompare.fsx b/tests/fsharpqa/Source/CompilerOptions/fsc/determinism/binaryCompare.fsx
index 2147b88cb83..c70512bb866 100644
--- a/tests/fsharpqa/Source/CompilerOptions/fsc/determinism/binaryCompare.fsx
+++ b/tests/fsharpqa/Source/CompilerOptions/fsc/determinism/binaryCompare.fsx
@@ -13,8 +13,10 @@ let filePairsToCheck =
|> Seq.map (fun f -> f, f.Replace("dummy","dummy2"))
let compareFiles pair =
- let correct = areSame pair = shouldBeSame
- if not correct then
+ let correct = (areSame pair = shouldBeSame)
+ if correct then
+ printfn "Good, %s and %s were %s" (fst pair) (snd pair) (if shouldBeSame then "same" else "different")
+ else
printfn "Expected %s and %s to be %s" (fst pair) (snd pair) (if shouldBeSame then "same" else "different")
correct
diff --git a/tests/fsharpqa/Source/run.pl b/tests/fsharpqa/Source/run.pl
index d9c3de8c3de..e9363e6aea6 100644
--- a/tests/fsharpqa/Source/run.pl
+++ b/tests/fsharpqa/Source/run.pl
@@ -424,7 +424,9 @@ sub RunCompilerCommand {
@CommandOutput = <$remote>;
print "--------------------------------------------------------\n";
- print "Error from hosted compiler\n";
+ print "Results from hosted compiler\n";
+ print "msg: $msg\n";
+ print "cmd: $cmd\n";
print "Exit code: $ExitCode\n";
print "Error: $Type\n";
print @CommandOutput;
diff --git a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
index 994b9060c14..915c0c9e106 100644
--- a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
+++ b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
@@ -8,6 +8,8 @@
truefalse$(RepoRoot)tests\fsharpqa\testenv\bin
+ AnyCPU
+ true
diff --git a/vsintegration/src/FSharp.VS.FSI/sessions.fs b/vsintegration/src/FSharp.VS.FSI/sessions.fs
index fb662d38d98..5e07e4672ea 100644
--- a/vsintegration/src/FSharp.VS.FSI/sessions.fs
+++ b/vsintegration/src/FSharp.VS.FSI/sessions.fs
@@ -66,7 +66,7 @@ let timeoutApp descr timeoutMS (f : 'a -> 'b) (arg:'a) =
!r
module SessionsProperties =
- let mutable useAnyCpuVersion = false
+ let mutable useAnyCpuVersion = true // 64-bit by default
let mutable fsiArgs = "--optimize"
let mutable fsiShadowCopy = true
let mutable fsiDebugMode = false