static OpenList
merge(OpenList L, OpenList M)
{
if( L.isEmpty() )
return M;
if( M.isEmpty() )
return L;
long firstL = ((Long)L.first()).longValue();
long firstM = ((Long)M.first()).longValue();
if( firstL <= firstM )
return merge(L.rest(), M).cons(L.first());
else
return merge(L, M.rest()).cons(M.first());
}