anchor.diff:      moveGrid.simulateMoveDown();
       if(moveGrid.compareGrid(testGrid) != 0)
       {
  -      decrecimientos.add(this.maxDecrecimientos(moveGrid,0,0));
  +      decrecimientos.add(this.maxDecrecimientosList(moveGrid,punto[0],punto[1])[1]);
         moveList.add(Move.down);
         count++;
       }
  
positive.code:     moveGrid.simulateMoveLeft();
      if(moveGrid.compareGrid(testGrid) != 0)
      {
        decrecimientos.add(this.maxDecrecimientos(moveGrid,0,0));
        moveList.add(Move.left);
        count++;
      }
  
negative.code:     return 0;
    }
    
    
    List<int> maxDecrecimientosList(Grid grid, int x, int y)
    {
      List<int> count = new List<int>();
      List<int> addedcount = new List<int>();
      int max = 300000;
      int aux = grid.getElement(x, y);
      int elements = 0;
      List<int> returnList = new List<int>();
      List<int> auxList;
      
      if(aux == 0)
      {
        returnList.add(-1);
        returnList.add(0);
        return returnList;
      }
      
      if(this.outOfBounds(x+1,y) == false && grid.getElement(x, y) >= grid.getElement(x+1, y))
      {
        grid.setElement(x, y, max);
        auxList = this.maxDecrecimientosList(grid,x+1,y);
        count.add(auxList[0]+1);
        addedcount.add(auxList[1]+aux);
        grid.setElement(x, y, aux);
        elements++;
      }
      if(this.outOfBounds(x-1,y) == false && grid.getElement(x, y) >= grid.getElement(x-1, y))
      {
        grid.setElement(x, y, max);
        auxList = this.maxDecrecimientosList(grid,x-1,y);
        count.add(auxList[0]+1);
        addedcount.add(auxList[1]+aux);
        grid.setElement(x, y, aux);
        elements++;
      }
      if(this.outOfBounds(x,y+1) == false && grid.getElement(x, y) >= grid.getElement(x, y+1))
      {
        grid.setElement(x, y, max);
        auxList = this.maxDecrecimientosList(grid,x,y+1);
        count.add(auxList[0]+1);
        addedcount.add(auxList[1]+aux);
        grid.setElement(x, y, aux);
        elements++;
      }
      if(this.outOfBounds(x,y-1) == false && grid.getElement(x, y) >= grid.getElement(x, y-1))
      {
        grid.setElement(x, y, max);
        auxList = this.maxDecrecimientosList(grid,x,y-1);
        count.add(auxList[0]+1);
        addedcount.add(auxList[1]+aux);
        grid.setElement(x, y, aux);
        elements++;
      }
      if(elements != 0)
      {
        int maxcount = 0;
        for(int i=1; i<elements; i++)
        {
          if(addedcount[i] > addedcount[maxcount])
          {
            maxcount = i;
          }
        }
        returnList.add(count[maxcount]);
        returnList.add(addedcount[maxcount]);
        return returnList;
      }
      returnList.add(-1);
      returnList.add(0);
      return returnList;
    }
    
    bool outOfBounds(int x, int y)
    {
      if(x>=0 && x<4 && y>=0 && y<4)
  