Score getHighest(Idx& i, Idx& j) // could be const if we had const Iters
 {
     const bool trace = false;
     Iter iter = begin();
     Score bestScore = *iter;
     Idx bestRow = iter.row();
     Idx bestCol = iter.col();
     if (trace)
         cout << iter.row() << " " << iter.col() << " " << *iter << endl;
     ++iter;
     for (Iter iterEnd = end(); iter != iterEnd; ++iter)
     {
         if (trace)
             cout << iter.row() << " " << iter.col() << " " << *iter << endl;
         if (scoreGreater(*iter, bestScore))
         // if (ScoreComparer::_scoreGreater(*iter, bestScore, scoreComparer_TOLERANCE))
         {
             if (false && gTraceInfo.iteration == 2441) {
                 cout << iter.row() << " " << iter.col() << " ";
                 printf("%20.20g", *iter);
                 cout << endl;
             }
             bestScore = *iter;
             bestRow = iter.row();
             bestCol = iter.col();
         }
     }
     i = bestRow;
     j = bestCol;
     return bestScore;
 }