function ff(){
  if (sikun) {
	alert("Cлишком много проверок");
	return;
  }	
  if (ma.length==0) 
  {
	alert ("Сначала нужно попытаться решить задачу самостоятельно");
	return ;
  }
  else {
      if (kuzmich){
		Paste(ma[0],mb[0]);
		A=ma[0];
		kuzmich=false;
      } 
      else A=Read();
  }
  flag-=1;
  if (flag>=1){
      STR+=Write(A,lb);
      for (var v=0; v<n+mp+2*mm+1; v++){
         for (var u=mp; u<mp+mm; u++)
              A[v][mp+mm+d-1]+=A[v][u];
         eval("document.st.a"+(mp+mm+d)+"a"+(v+1)+".value="+A[v][mp+mm+d-1]);
      }
      ff();
  }
  else{
      var tp=Infinity;
      STR+=Write(A,lb);
      var a=A[0][mp+mm+d-1],ltp=[],vr=[]; 
      if (d==1)
         plombir=n+mp+mm; 
      for (var s=1; s<plombir; s++)
         a=Math.max(a,A[s][mp+mm+d-1]);
      if (a<=0){
         d-=1;
         if (d==0){ 
             d=(mm==0) ? 1:2;
             A=[['a']];lb=llb;	
             flag=d;
             kuzmich=true;
	     sikun = true;
             Paste(ma[ma.length-1],mb[mb.length-1]);
             win=window.open("","Департамент сельских дел");
	//win.document.open();
             win.document.write(STR);
	     STR=" ";
             return;
         } 
         else 
             ff(); 
      } 
      else{
         for (var j=0; j<n+mp+2*mm; j++){
            if (A[j][mp+mm+d-1]==a){
               for (var i=0; i<mp+mm; i++){
                  if (A[j][i]>0){
                     tp=Math.min(tp,A[n+mp+2*mm][i]/A[j][i]);
                     ltp.push(tp);
                  }
                  else
                     ltp.push(Infinity);
               }
               for (var i=0; i<mp+mm; i++)
                  if (ltp[i]==tp) break;
               break;
            }
         }
         lb[i]=j+1;
         var ed=1/A[j][i];
         for (var k=0; k<n+mp+2*mm+1; k++)
            A[k][i]*=ed;
         for (var p=0; p<mp+mm+d; p++){
            if (p!=i){
               for (var s=0; s<n+mp+2*mm+1; s++)
                  vr[s]=A[s][i]*A[j][p];
               for (var l=0; l<n+mp+2*mm+1; l++){
                  A[l][p]-=vr[l];}
            }
         }

         for (var v=1; v<=n+mp+2*mm+1; v++){
            for (var u=1; u<=mp+mm+d; u++)
               eval("document.st.a"+u+"a"+v+".value="+A[v-1][u-1]);
         }
         for (var r=1; r<mp+mm+1; r++)
            eval("document.st.x"+r+".value="+" 'x'+lb[r-1]"); 
		 
         ff();
     }
  }
}

