template<class T>
std::vector<std::pair<T, int>> run_length_encode(std::vector<T> v) {
std::vector<std::pair<T, int>> encoded;
int n = v.size(), left = 0;
while (left < n) {
int right = left + 1;
while (right < n and v[left] == v[right]) right++;
encoded.emplace_back(v[left], right - left);
left = right;
}
return encoded;
}