diff --git a/dune/matrix-vector/algorithm.hh b/dune/matrix-vector/algorithm.hh
index 526b542e19fc370db1f0d146a248039f35696fef..5a1c710734b166904e29ae3842954041fcd89134 100644
--- a/dune/matrix-vector/algorithm.hh
+++ b/dune/matrix-vector/algorithm.hh
@@ -36,7 +36,17 @@ void sparseRangeFor(Range&& range, F&& f)
     f(*it, it.index());
 }
 
-
+//! \brief Hybrid access to first sparse range element (static/tuple-like candiate)
+template <class Range, class F, std::enable_if_t<isTupleOrDerived<Range>(), int> = 0>
+void sparseRangeFirst(Range&& range, F&& f) {
+  f(range[Indices::_0]);
+}
+//! \brief Hybrid access to first sparse range element (dynamic/sparse candiate)
+template<class Range, class F, std::enable_if_t<not isTupleOrDerived<Range>(), int> = 0>
+void sparseRangeFirst(Range&& range, F&& f)
+{
+  f(*range.begin());
+}
 
 } // namespace MatrixVector
 } // namespace Dune