    #include <iostream>
    #include <vector>
    #include <map>
    #include <list>

    template<typename T>
    typename T::value_type most_frequent_element(T const& v)
    {
        std::map<typename T::value_type, int> frequencyMap;
        int maxFrequency = 0;
        typename T::value_type mostFrequentElement{};
        for (auto&& x : v)
        {
            int f = ++frequencyMap[x];
            if (f > maxFrequency)
            {
                maxFrequency = f;
                mostFrequentElement = x;
            }
        }
    
        return mostFrequentElement;
    }

    #include <iostream>

    int main()
    {
        std::vector<int> v { 1, 3, 5, 6, 6, 2, 3, 4, 3, 5 };
        std::cout << most_frequent_element(v) << std::endl;
        
        std::list<int> l { 6, 3, 5, 6, 6, 2, 3, 4, 3, 6 };
        std::cout << most_frequent_element(l) << std::endl;
    }
