public ActionResult ExecuteES(int? id)
        {
            if (!id.HasValue)
            {
                if (NodeStore.Ctx.QueStack == null) NodeStore.Ctx.InitStack();

                if (NodeStore.Ctx.QueStack.Count == 0) RedirectToAction("DisplaySubject");

                NodeStore.Ctx.FirstLevelQuestions.Pop();
                id = NodeStore.Ctx.QueStack.Pop().Id;
                return RedirectToAction("ExecuteES", new { id });
            }
            var que = NodeStore.Ctx.GetQuestions().First(x => x.Id == id);
            var answers = NodeStore.Ctx.GetAnswers(id.Value);

            var model = new QuestionDisplayModel(que, answers.ToList());
            return View(model);
        }
        public ActionResult ExecuteES(QuestionDisplayModel model)
        {
            var id = int.Parse(model.SelectedAnswerId);

            INode nexNode;

            if (id == 0)
            {
                NodeStore.UnknowAnswer++;
                LoadQuestions(model.Question.Id);

                if (NodeStore.Ctx.QueStack.Count == 0)
                {
                    if (NodeStore.Ctx.FirstLevelQuestions.Count != 0)
                    {
                        NodeStore.Ctx.QueStack.Push(NodeStore.Ctx.FirstLevelQuestions.Pop());
                    }
                    else
                    {
                        if (NodeStore.Ctx.QueStack.Count == 0) return RedirectToAction("DisplaySubject");
                    }
                }

                nexNode = SetNexNode();

                if (nexNode.Id == 1) return RedirectToAction("DisplaySubject");
                if (NodeStore.UnknowAnswer == 7) return RedirectToAction("DisplaySubject");
            }
            else
            {
                NodeStore.UnknowAnswer = 0;
                NodeStore.Ctx.QueStack.Clear();
                var answer = NodeStore.Ctx.GetAnswers(model.Question.Id).First(x => x.Id == id);
                nexNode = NodeStore.Ctx.GetNode(answer.NextNodeId);
                if (NodeStore.Ctx.QuestionAsked.Contains(nexNode.Id)) return RedirectToAction("DisplaySubject");
            }
            NodeStore.Ctx.QuestionAsked.Add(nexNode.Id);
            return RedirectToAction(nexNode.IsLeaf ? "DisplaySubject" : "ExecuteES", new { id = nexNode.Id });
        }