std::accumulate is sequential and guarantes in order traversal. std::reduce is parallel version of it