     }
     
     public struct Result<n: SizeType, m: SizeType, R: Ring> {
-        public let pivots: [(Int, Int)]
+        public let pivots: [MatrixComponent<R>]
         public let rowPermutation: Permutation<n>
         public let colPermutation: Permutation<m>
         public var numberOfPivots: Int { pivots.count }

                queue.append(j)
            } else if a.isInvertible {
                candidates.insert(j)
            }
        }
        

        return w1 < w2 || w1 == w2 && rowWeight(i1) < rowWeight(i2)
    }
    
    private func row(_ i: Int) -> Row {
        data.row(i)
    }
    
